java模拟多ip请求【搬代码】
java模拟多ip请求
package url_demo;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.URL;
import java.net.URLConnection;
import java.util.Random;public class HttpUtilTest {private int index = 0;public String sendPost(String url, String param) {PrintWriter out = null;BufferedReader in = null;String result = "";try {URL realUrl = new URL(url);URLConnection conn = realUrl.openConnection();// 随机生成ipString ip = randIP();conn.setRequestProperty("X-Forwarded-For", ip);conn.setRequestProperty("HTTP_X_FORWARDED_FOR", ip);conn.setRequestProperty("HTTP_CLIENT_IP", ip);conn.setRequestProperty("REMOTE_ADDR", ip);conn.setRequestProperty("Host", "");conn.setRequestProperty("Connection", "keep-alive");conn.setRequestProperty("Content-Length", "17");conn.setRequestProperty("Accept", "application/json");conn.setRequestProperty("Origin", "ORIGIN");conn.setRequestProperty("User-Agent","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36");conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");conn.setRequestProperty("Referer", "REFERER");conn.setRequestProperty("Accept-Encoding", "gzip, deflate");conn.setRequestProperty("Accept-Language", "zh-CN,zh;q=0.8,en;q=0.6,ja;q=0.4,pt;q=0.2");conn.setDoOutput(true);conn.setDoInput(true);out = new PrintWriter(conn.getOutputStream());out.print(param);out.flush();in = new BufferedReader(new InputStreamReader(conn.getInputStream()));String line;while ((line = in.readLine()) != null) {result += line;}synchronized (this) {DemoUtl.index = DemoUtl.index + 1;}System.out.println("第" + DemoUtl.index + "次访问; --> || 当前线程:" + param + " || 请求成功! || 模拟ip: " + ip+ " || 返回结果: " + result.toString().hashCode());} catch (Exception e) {// System.out.println("发送 POST 请求出现异常!" + e);// e.printStackTrace();} finally {try {if (out != null) {out.close();}if (in != null) {in.close();}} catch (IOException ex) {ex.printStackTrace();}}return result;}public static String randIP() {Random random = new Random(System.currentTimeMillis());return (random.nextInt(255) + 1) + "." + (random.nextInt(255) + 1) + "." + (random.nextInt(255) + 1) + "."+ (random.nextInt(255) + 1);}
}
package url_demo;import java.util.Random;public class DemoUtl {public static int index = 0;public static void main(String[] args) throws InterruptedException {try {for (int i = 0; i < 100000; i++) {Thread.sleep((new Random()).nextInt(200) + 100);new Thread(new Runnable() {@Overridepublic void run() {for (int j = 0; j < 100000; j++) {try {Thread.sleep((new Random()).nextInt(3200) + 1500);HttpUtilTest tt = new HttpUtilTest();tt.sendPost("https://www.baidu.com",Thread.currentThread().getName());} catch (InterruptedException e) {e.printStackTrace();}}}}).start();}} catch (Exception e) {e.printStackTrace();}}
}
java模拟多ip发送post请求
要使用 Java 模拟多 IP 发送 POST 请求,可以使用代理 IP 来实现。以下是一个示例代码,演示了如何设置代理 IP 发送 HTTP POST 请求:
首先,确保你已经导入了相关的网络请求库,如java.net.HttpURLConnection或其他 HTTP 客户端库(如 Apache HttpComponents 等)。
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;public class ProxyPostRequestExample {public static void main(String[] args) {String targetUrl = "http://example.com/api"; // 替换为实际的目标 URLString proxyHost = "proxy-host"; // 替换为代理服务器的主机或 IP 地址int proxyPort = 8080; // 替换为代理服务器的端口for (int i = 0; i < 5; i++) { // 模拟发送 5 次请求sendPostRequestWithProxy(targetUrl, proxyHost, proxyPort);}}public static void sendPostRequestWithProxy(String targetUrl, String proxyHost, int proxyPort) {try {URL url = new URL(targetUrl);HttpURLConnection connection = (HttpURLConnection) url.openConnection(new java.net.Proxy(java.net.Proxy.Type.HTTP, new java.net.InetSocketAddress(proxyHost, proxyPort)));connection.setRequestMethod("POST");connection.setDoOutput(true);String postData = "param1=value1¶m2=value2"; // 替换为实际的 POST 数据OutputStreamWriter writer = new OutputStreamWriter(connection.getOutputStream());writer.write(postData);writer.flush();int responseCode = connection.getResponseCode();if (responseCode == HttpURLConnection.HTTP_OK) {BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));String line;StringBuilder response = new StringBuilder();while ((line = reader.readLine())!= null) {response.append(line);}reader.close();System.out.println("Response: " + response.toString());} else {System.out.println("Request failed with response code: " + responseCode);}} catch (IOException e) {e.printStackTrace();}}
}
在上述示例中,定义了一个sendPostRequestWithProxy方法,它接受目标 URL、代理服务器的主机和端口作为参数。
在方法内部,通过创建java.net.Proxy对象并设置到URLConnection中,来指定使用的代理服务器。然后设置请求方法为POST,并设置doOutput为true以发送 POST 数据。
接下来,构造要发送的 POST 数据,并使用OutputStreamWriter将数据写入连接的输出流中。
最后,获取服务器的响应码,并根据响应码读取响应内容或输出错误信息。
请注意,上述代码中的代理服务器的主机(proxyHost)和端口(proxyPort)需要替换为实际可用的代理服务器信息。此外,还需要根据实际情况设置请求头、处理请求参数等。
另外,使用代理 IP 时需要注意以下几点:
确保你有合法使用代理服务器的权限。
代理服务器的稳定性和性能可能会影响请求的结果。
一些网站可能会检测和限制使用代理的访问,或者对来自特定 IP 范围的请求有特定的规则和限制。
如果需要更复杂的请求设置或处理,可能需要使用更强大的 HTTP 客户端库,如 Apache HttpComponents 或其他类似的库,它们提供了更丰富的功能和更灵活的配置选项来满足各种需求。
同时,随机生成大量不同的 IP 地址来模拟请求可能违反网站的使用条款和服务协议,并且在某些情况下可能被视为不合法或不道德的行为。请确保你的使用方式是合规和道德的,并尊重目标网站的规定和限制。此外,某些网站可能会采取措施来检测和防范此类行为,例如限制频繁的请求或使用 IP 封锁等技术。在进行任何网络请求活动时,建议遵循良好的网络行为准则,并根据实际需求和合法目的进行操作。如果你的目的是合法的测试或数据收集,最好与目标网站的所有者或管理员进行沟通,以确保你的行为得到适当的授权和认可。
要在 Java 中模拟多 IP 发送 POST 请求并添加请求头,可以使用HttpURLConnection类来实现。以下是一个示例代码,演示了如何设置请求头并发送 POST 请求:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;public class MultiIPPostRequestWithHeaders {public static void main(String[] args) throws IOException {String url = "http://example.com/api"; // 替换为实际的目标 URL// 模拟多个 IP(这里仅设置了一个示例 IP)String[] ips = {"192.168.0.100"}; for (String ip : ips) {sendPostRequestWithHeaders(url, ip);}}public static void sendPostRequestWithHeaders(String url, String ip) throws IOException {URL obj = new URL(url);HttpURLConnection connection = (HttpURLConnection) obj.openConnection();// 设置请求方法为 POSTconnection.setRequestMethod("POST");// 设置请求头connection.setRequestProperty("Content-Type", "application/json"); connection.setRequestProperty("Authorization", "Bearer yourAccessToken"); // 添加其他需要的请求头// 设置特定的 IP(仅为示例,实际中可能需要更复杂的方式来设置多个 IP)connection.setRequestProperty("X-Forwarded-For", ip); // 设置允许输出connection.setDoOutput(true);String requestBody = "{\"key1\":\"value1\",\"key2\":\"value2\"}"; // 替换为实际的请求体 JSON 数据try (OutputStream outputStream = connection.getOutputStream()) {outputStream.write(requestBody.getBytes());outputStream.flush();}int responseCode = connection.getResponseCode();if (responseCode == HttpURLConnection.HTTP_OK) {BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));String inputLine;StringBuilder response = new StringBuilder();while ((inputLine = in.readLine())!= null) {response.append(inputLine);}in.close();System.out.println("Response from " + ip + ": " + response.toString());} else {System.out.println("POST request to " + url + " failed with response code: " + responseCode);}}
}
在上述示例中,首先设置了要请求的目标 URL。然后,在sendPostRequestWithHeaders方法中进行了以下操作:
创建HttpURLConnection对象并设置请求方法为POST。
设置了常见的请求头,如Content-Type和Authorization,你可以根据实际需求添加其他请求头。
通过setRequestProperty(“X-Forwarded-For”, ip)设置了X-Forwarded-For请求头来模拟不同的 IP 地址。请注意,这只是一种简单的模拟方式,实际中设置多个 IP 可能需要更复杂的网络配置或使用代理等方式。
设置允许输出,并将请求体数据写入输出流。
获取响应码并根据响应码读取响应内容或输出错误信息。
请将"http://example.com/api"替换为你实际要发送 POST 请求的目标网址,并根据需要修改请求头和请求体的数据。
另外,模拟多个 IP 发送请求的具体实现方式可能会受到网络环境和应用场景的限制。在某些情况下,可能需要使用代理服务器或者特定的网络设置来实现更真实的多 IP 请求。同时,还需注意遵守相关的法律规定和网站的使用条款,确保你的请求行为是合法和合规的。
相关文章:
java模拟多ip请求【搬代码】
java模拟多ip请求 package url_demo;import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.URL; import java.net.URLConnection; import java.util.Random;public class HttpUtilTest…...

微软史诗级的蓝屏
本周经历了微软的蓝屏,一直到周末还在加班处理公司的问题。 个人终端受到的影响较大,服务器上也受到了影响。因为蓝屏的事情导致不少麻烦,据同事说因为蓝屏的问题,MGH 的手术安排也受到了影响。 目前我们也在着手处理有部署 Wind…...
HALCON数据结构
一、HALCON数据结构简介 1、HALCON中有两类参数:图形参数和控制参数。 2、HALCON算子参数中,图形输入参数、图形输出参数、控制输入参数和控制输出参数。 3、图形参数有:图像(image)、区域(region)和轮廓(XLD) 4、控制参数有:…...

数据库系统概论:事务与并发一致性问题
随着网络应用的普及,数据库并发问题变得越来越重要。数据库并发指的是多个用户或进程同时访问和操作数据库的能力。它是数据库系统性能优化的重要方面,旨在提高系统的吞吐量和响应时间,以满足多用户同时访问数据库的需求。然而,这…...
Python编程基础:元组类型、字典类型、集合类型
目录 元组类型创建/删除元组访问/操作元组元组生成式字典类型创建/删除字典访问/操作字典字典相关函数集合类型创建/删除集合集合相关操作符访问/操作集合元组类型 元组是Python中内置的不可变序列,这是它跟列表的不同之处,它没有一系列增删改等操作,只可以使用索引和for循环…...

day2 单机并发缓存
文章目录 1 sync.Mutex2 支持并发读写3 主体结构 Group3.1 回调 Getter3.2 Group 的定义3.3 Group 的 Get 方法 4 测试 本文代码地址: https://gitee.com/lymgoforIT/gee-cache/tree/master/day2-single-node 本文是7天用Go从零实现分布式缓存GeeCache的第二篇。 …...

ECMP等价多路由机制,大模型训练负载均衡流量极化冲突原因,万卡(大规模)集群语言模型(LLM)训练流量拥塞特点
大规模集群,大语言模型(LLM)训练流量特点,ECMP(Equal-Cost Multi-Path Routing)流量极化拥塞原因。 视频分享在这: 2.1 ECMP等价多路由,大模型训练流量特点,拥塞冲突极化产生原因_哔哩哔哩_bi…...

Linux 注意事项
Linux 与 Windows 是两个相互独立的操作系统,两者有较大差距: 1.1 Linux 严格区分大小写(Windows不严格区分大小写); 1.2 Linux 中所有内容,硬件设备都以文件形式保存在 /dev 目录下(万物皆文件…...

力扣SQL50 指定日期的产品价格 双重子查询 coalesce
Problem: 1164. 指定日期的产品价格 coalesce 的使用 简洁版 👨🏫 参考题解 select distinct p1.product_id,coalesce((select p2.new_pricefrom Products p2where p2.product_id p1.product_id and p2.change_date < 2019-08-16order by p2.…...
MySQL8的备份方案——全量(完全)备份(CentOS)
MySQL8的全量备份 一、安装备份工具二、备份数据三、恢复备份 点击跳转增量备份 点击跳转差异备份 点击跳转压缩备份 一、安装备份工具 官网 下载地址 备份所用工具为percona-xtrabackup 如果下方安装工具的教程失效,请点击上方下载地址转到官方文档查看 下载该工…...

JVM监控及诊断工具-命令行篇--jcmd命令介绍
JVM监控及诊断工具-命令行篇5-jcmd:多功能命令行 一 基本情况二 基本语法jcmd -ljcmd pid helpjcmd pid 具体命令 一 基本情况 在JDK 1.7以后,新增了一个命令行工具jcmd。它是一个多功能的工具,可以用来实现前面除了jstat之外所有命令的功能…...

c++信号和槽机制的轻量级实现,sigslot 库介绍及使用
Qt中的信号与槽机制很好用,然而只在Qt环境中。在现代 C 编程中,对象间的通信是一个核心问题。为了解决这个问题,许多库提供了信号和槽(Signals and Slots)机制。今天推荐分享一个轻量级的实现:sigslot 库。…...
云原生项目纪事系列 - 项目管理的鲜活事例
大规模云原生系统的新颖性、建设性和挑战性,吸引着许多有数学思想、哲学意识和美学观念的系统架构师,老模也是其中一员。 老模即是文史家庭出身,又有理工学业背景,他基于平时记录的翔实细节,秉持客观原则,使…...

【Vite】快速入门及其配置
概述 Vite是前端构建工具。vite 相较于webpack,vite采用了不同的运行方式: 开发时,并不对代码打包,而是直接采用ESM的方式来运行项目在项目打包部署时,使用 rollup 对项目进行打包除了速度外,vite使用起来也更加方便…...

Armv8/Armv9架构的学习大纲-学习方法-自学路线-付费学习路线
本文给大家列出了Arm架构的学习大纲、学习方法、自学路线、付费学习路线。有兴趣的可以关注,希望对您有帮助。 如果大家有需要的,欢迎关注我的CSDN课程:https://edu.csdn.net/lecturer/6964 ARM 64位架构介绍 ARM 64位架构介绍 ARM架构概况…...
vue 中 ui 组件二次封装后 ref 怎么穿透到子组件里
情景:element-ui 二次封装了 el-table 组件,使用封装组件时,想要调用 el-table 组件内置的一些方法。只在封装组件上定义 ref 是拿不到 el-table 内置方法的。解决方法如下。 1. vue2 封装组件 <template><el-table ref"inn…...

sourcetree中常用功能使用方法及gitlab冲突解决
添加至缓存:等于git add 提交:等于git commit 拉取/获取:等于git pull ,在每次要新增代码或者提交代码前需要先拉取一遍服务器中最新的代码,防止服务器有其他人更新了代码,但我们自己本地的代码在我们更新前跟服务器不…...
SQL Server分布式查询:跨数据库的无缝数据探索
SQL Server分布式查询:跨数据库的无缝数据探索 在当今的企业环境中,数据往往分散在不同的数据库和服务器上。SQL Server的分布式查询功能提供了一种强大的手段,允许用户编写单一的查询来访问和操作分散在不同SQL Server实例中的数据。本文将…...

【字少图多剖析微服务】深入理解Eureka核心原理
深入理解Eureka核心原理 Eureka整体设计Eureka服务端启动Eureka三级缓存Eureka客户端启动 Eureka整体设计 Eureka是一个经典的注册中心,通过http接收客户端的服务发现和服务注册请求,使用内存注册表保存客户端注册上来的实例信息。 Eureka服务端接收的…...
如何在 Linux 中解压 ZIP 文件
ZIP 是一种常用的压缩文件格式,用于存储和传输多个文件。在 Linux 系统中,解压 ZIP 文件非常简单。 使用 unzip 命令 unzip 是一个专用于解压 ZIP 文件的命令行工具。要使用它,请打开终端并输入以下命令: 例如,要解…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...

OPENCV形态学基础之二腐蚀
一.腐蚀的原理 (图1) 数学表达式:dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一,腐蚀跟膨胀属于反向操作,膨胀是把图像图像变大,而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...

2025季度云服务器排行榜
在全球云服务器市场,各厂商的排名和地位并非一成不变,而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势,对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析: 一、全球“三巨头”…...

Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习)
Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习) 一、Aspose.PDF 简介二、说明(⚠️仅供学习与研究使用)三、技术流程总览四、准备工作1. 下载 Jar 包2. Maven 项目依赖配置 五、字节码修改实现代码&#…...
《C++ 模板》
目录 函数模板 类模板 非类型模板参数 模板特化 函数模板特化 类模板的特化 模板,就像一个模具,里面可以将不同类型的材料做成一个形状,其分为函数模板和类模板。 函数模板 函数模板可以简化函数重载的代码。格式:templa…...

渗透实战PortSwigger靶场:lab13存储型DOM XSS详解
进来是需要留言的,先用做简单的 html 标签测试 发现面的</h1>不见了 数据包中找到了一个loadCommentsWithVulnerableEscapeHtml.js 他是把用户输入的<>进行 html 编码,输入的<>当成字符串处理回显到页面中,看来只是把用户输…...

FFmpeg avformat_open_input函数分析
函数内部的总体流程如下: avformat_open_input 精简后的代码如下: int avformat_open_input(AVFormatContext **ps, const char *filename,ff_const59 AVInputFormat *fmt, AVDictionary **options) {AVFormatContext *s *ps;int i, ret 0;AVDictio…...
DiscuzX3.5发帖json api
参考文章:PHP实现独立Discuz站外发帖(直连操作数据库)_discuz 发帖api-CSDN博客 简单改造了一下,适配我自己的需求 有一个站点存在多个采集站,我想通过主站拿标题,采集站拿内容 使用到的sql如下 CREATE TABLE pre_forum_post_…...
基于Java项目的Karate API测试
Karate 实现了可以只编写Feature 文件进行测试,但是对于熟悉Java语言的开发或是测试人员,可以通过编程方式集成 Karate 丰富的自动化和数据断言功能。 本篇快速介绍在Java Maven项目中编写和运行测试的示例。 创建Maven项目 最简单的创建项目的方式就是创建一个目录,里面…...