Java语言HttpClient使用代理IP
在访问一个网站时,有时我们不想让对方获取到我们的真实IP,这种情况下,就可以使用代理IP进行访问。
1、maven依赖
<dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpcore</artifactId><version>4.4.10</version>
</dependency>
<dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5.6</version>
</dependency>
<dependency><groupId>org.apache.commons</groupId><artifactId>commons-io</artifactId><version>1.3.2</version>
</dependency>
2、使用代理IP实例
import org.apache.http.HttpEntity;
import org.apache.http.HttpHost;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;public class HttpProxy {public static void main(String[] args) throws Exception {// 创建HttpClient实例CloseableHttpClient httpClient = HttpClients.createDefault(); //创建Httpget实例 ,http://2018.ip138.com/ic.asp为该网址返回对应的ip//以下为要访问的网址HttpGet httpGet = new HttpGet("http://budwuv.v.vote8.cn"); //代理IP设置,代理 ip查询地址:https://www.xicidaili.com/HttpHost httpHost = new HttpHost("112.87.68.95",9999);RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(10000)//设置连接超时时间,单位毫秒.setSocketTimeout(10000)//设置读取超时时间,单位毫秒.setProxy(httpHost)//设置代理.build();httpGet.setConfig(requestConfig);//设置Http报文头信息httpGet.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:50.0) Gecko/20100101 Firefox/50.0");CloseableHttpResponse response = httpClient.execute(httpGet); // 执行http get请求if (response != null){HttpEntity entity = response.getEntity(); //获取返回实体if (entity != null){System.out.println("网页内容为:");System.out.println(EntityUtils.toString(entity,"gbk"));}}if (response != null){response.close();}if (httpClient != null){httpClient.close();}}
}
3、代理IP获取方式
访问 http://www.xicidaili.com/,可在该网站上爬取最新的高匿代理IP,保存到本地;当一个IP被屏蔽或获取连接超时时,取出下一个IP,当本地IP数不足时再重新爬取,以此类推。
4、验证举例
以网上在线投票系统为例,在PC端访问“投票吧”创建投票活动,设置为“相同IP不允许不能在30分钟内重复投票”,发布投票活动http://budwuv.v.vote8.cn。
正常访问投票网站,核心代码如下:
HttpGet httpGet = new HttpGet("http://budwuv.v.vote8.cn");RequestConfig requestConfig = RequestConfig.custom()
.setConnectTimeout(10000)//设置连接超时时间,单位毫秒
.setSocketTimeout(10000)//设置读取超时时间,单位毫秒
.build();httpGet.setConfig(requestConfig);
//设置Http报文头信息
httpGet.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:50.0) Gecko/20100101 Firefox/50.0");
CloseableHttpResponse response = httpClient.execute(httpGet); // 执行http get请求
页面截图如下:
用设置代理的方式重新访问该网站,核心代码如下:
HttpGet httpGet = new HttpGet("http://budwuv.v.vote8.cn");//代理IP设置
HttpHost httpHost = new HttpHost("112.87.68.95",9999);RequestConfig requestConfig = RequestConfig.custom()
.setConnectTimeout(10000)//设置连接超时时间,单位毫秒
.setSocketTimeout(10000)//设置读取超时时间,单位毫秒
.setProxy(httpHost)//设置代理
.build();httpGet.setConfig(requestConfig);
//设置Http报文头信息
httpGet.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:50.0) Gecko/20100101 Firefox/50.0");CloseableHttpResponse response = httpClient.execute(httpGet); // 执行http get请求
该页面可以正常投票,截图如下:
Java语言HttpClient使用代理IP相关推荐
- python爬取国内代理ip_Python语言爬取代理IP
本文主要向大家介绍了Python语言爬取代理IP,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助. #!/usr/bin/env python #-*-coding=utf-8 -* ...
- httpclient动态代理ip
在爬取网页的时候,有的目标站点有反爬虫机制,对于频繁访问站点以及规则性访问站点的行为,会采集屏蔽IP措施. 这时候,代理IP就派上用场了. 关于代理IP的话 也分几种 透明代理.匿名代理.混淆代理.高 ...
- HttpURLConnection和httpclient添加代理IP和端口
/*代理设置*/ HttpClient httpclient = new DefaultHttpClient(); HttpHost proxy = new HttpHost(System.getPr ...
- 熬夜学Java语言-设计模式之代理模式
- python设置电脑ip代理_设置代理IP在Python中使用
在Pyhton中要怎么使用代理IP?我们经常说代理IP能够让Python更好的发挥爬虫效果,首先我们要懂得如何在python语言中设置代理IP来利用. 1.urllib模块设置代理 如果我们频繁用一个 ...
- JAVA之HttpClient+Jsoup实现代理IP爬虫
文章目录: HttpClient(请求数据): Jsoup解析筛选数据: 通过httpclient+jsoup爬取代理ip网址上面的ip和端口,并存入数据库: 筛选数据库中的有效代理IP,并实现代理I ...
- Java HttpClient 如何使用代理IP请求接口
实际场景中,可能会遇到需要使用代理IP请求接口的需求,所以这里给大家分享一下如何通过代理IP请求接口. proxyServer 代理IP proxyPort 代理端口 HttpClient httpC ...
- java爬虫框架代理ip的配置与调试
我们在平时调试爬虫的时候,新手都会遇到关于ip的错误,好好的程序突然报错了,这种情况要怎么解决,关于ip访问的错误其实很好解决,但是怎么知道解决好了呢?怎么确定是代理ip的问题呢?由于笔者主修语言是J ...
- Java爬爬之网页去重和代理ip
Java爬爬之网页去重和代理ip 网页去重 去重方案介绍 SimHash 流程介绍 签名距离计算 导入simhash的工程 测试simhash 代理的使用 代理服务器 使用代理 网页去重 之前我们对下 ...
- java使用代理ip爬取网站内容
在一些有反爬虫技术的网站中,检测到同一ip在短时间内多次访问的时候,可能就会禁掉这个ip. 上有政策,下有对策,为了应对这种情况,可以使用多个代理ip去爬取这个网站. java使用代理ip有两种方法: ...
最新文章
- 收藏功能_微信强大的收藏功能,你们用了吗?
- python 100例(10)
- Ubuntu任务栏Tint2安装与使用
- 大数据量txt文本数据分块去重
- 第 15 章 Framework Design
- linux之shell编程基本语法
- android 录像机,android 录像机
- supervisor 重启_supervisor_twiddler的使用
- jeecg 服务器 + linux + nginx 安装
- Go VSCode配置编译task
- ip地址怎么设置才有效_如果想减肥,怎么拆解目标才是有效的?
- 【兼容封装】addEventListener()和attachEvent()跨浏览器的兼容性处理
- 习惯养成android软件,7款好用的习惯养成与打卡APP推荐
- java中的date_Java中Date类型详解
- 微信小程序商城项目实战(第八篇:我的界面)
- redis-----简单介绍---基本的配置---持久化----学习笔记
- PWR-低功耗模式-STM32F4
- 用Python制作二维码
- 【基础逻辑】对位乘法与升多项式子项根号——柯西不等式
- 使用Calibre转换任意格式为支持KF8的mobi文件