在访问一个网站时,有时我们不想让对方获取到我们的真实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相关推荐

  1. python爬取国内代理ip_Python语言爬取代理IP

    本文主要向大家介绍了Python语言爬取代理IP,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助. #!/usr/bin/env python #-*-coding=utf-8 -* ...

  2. httpclient动态代理ip

    在爬取网页的时候,有的目标站点有反爬虫机制,对于频繁访问站点以及规则性访问站点的行为,会采集屏蔽IP措施. 这时候,代理IP就派上用场了. 关于代理IP的话 也分几种 透明代理.匿名代理.混淆代理.高 ...

  3. HttpURLConnection和httpclient添加代理IP和端口

    /*代理设置*/ HttpClient httpclient = new DefaultHttpClient(); HttpHost proxy = new HttpHost(System.getPr ...

  4. 熬夜学Java语言-设计模式之代理模式

  5. python设置电脑ip代理_设置代理IP在Python中使用

    在Pyhton中要怎么使用代理IP?我们经常说代理IP能够让Python更好的发挥爬虫效果,首先我们要懂得如何在python语言中设置代理IP来利用. 1.urllib模块设置代理 如果我们频繁用一个 ...

  6. JAVA之HttpClient+Jsoup实现代理IP爬虫

    文章目录: HttpClient(请求数据): Jsoup解析筛选数据: 通过httpclient+jsoup爬取代理ip网址上面的ip和端口,并存入数据库: 筛选数据库中的有效代理IP,并实现代理I ...

  7. Java HttpClient 如何使用代理IP请求接口

    实际场景中,可能会遇到需要使用代理IP请求接口的需求,所以这里给大家分享一下如何通过代理IP请求接口. proxyServer 代理IP proxyPort 代理端口 HttpClient httpC ...

  8. java爬虫框架代理ip的配置与调试

    我们在平时调试爬虫的时候,新手都会遇到关于ip的错误,好好的程序突然报错了,这种情况要怎么解决,关于ip访问的错误其实很好解决,但是怎么知道解决好了呢?怎么确定是代理ip的问题呢?由于笔者主修语言是J ...

  9. Java爬爬之网页去重和代理ip

    Java爬爬之网页去重和代理ip 网页去重 去重方案介绍 SimHash 流程介绍 签名距离计算 导入simhash的工程 测试simhash 代理的使用 代理服务器 使用代理 网页去重 之前我们对下 ...

  10. java使用代理ip爬取网站内容

    在一些有反爬虫技术的网站中,检测到同一ip在短时间内多次访问的时候,可能就会禁掉这个ip. 上有政策,下有对策,为了应对这种情况,可以使用多个代理ip去爬取这个网站. java使用代理ip有两种方法: ...

最新文章

  1. 收藏功能_微信强大的收藏功能,你们用了吗?
  2. python 100例(10)
  3. Ubuntu任务栏Tint2安装与使用
  4. 大数据量txt文本数据分块去重
  5. 第 15 章 Framework Design
  6. linux之shell编程基本语法
  7. android 录像机,android 录像机
  8. supervisor 重启_supervisor_twiddler的使用
  9. jeecg 服务器 + linux + nginx 安装
  10. Go VSCode配置编译task
  11. ip地址怎么设置才有效_如果想减肥,怎么拆解目标才是有效的?
  12. 【兼容封装】addEventListener()和attachEvent()跨浏览器的兼容性处理
  13. 习惯养成android软件,7款好用的习惯养成与打卡APP推荐
  14. java中的date_Java中Date类型详解
  15. 微信小程序商城项目实战(第八篇:我的界面)
  16. redis-----简单介绍---基本的配置---持久化----学习笔记
  17. PWR-低功耗模式-STM32F4
  18. 用Python制作二维码
  19. 【基础逻辑】对位乘法与升多项式子项根号——柯西不等式
  20. 使用Calibre转换任意格式为支持KF8的mobi文件

热门文章

  1. 关于微信双开后,王者荣耀默认只能打开微信主应用问题
  2. python基础教程第三版pdf 脚本之家-一篇不错的Python入门教程
  3. 服务器大线程有什么作用,全面剖析超线程技术优点与缺点
  4. 树莓派查看cpu温度的命令
  5. win10系统如何设置局域网服务器,win10系统如何设置局域网共享
  6. 如何打开.DAT格式的测风数据?
  7. arccos用计算机,arccos0(arccos在线计算器)
  8. 洛谷 P1194 买礼物 题解
  9. word安全模式解除
  10. CentOS官网下载所需版本的CentOS版本方法