在爬取网页的时候,有的网站会有反爬虫措施,导致服务器请求拒接,可以使用代理IP来访问,解决请求拒绝的问题

代理IP分 透明代理、匿名代理、混淆代理、高匿代理

  1、透明代理(Transparent Proxy):透明代理虽然可以“隐藏”IP地址,但是还是可以从HTTP_X_FORWARDED_FOR来查到IP
    REMOTE_ADDR = Proxy IP
    HTTP_VIA = Proxy IP
    HTTP_X_FORWARDED_FOR = Your IP
  2、匿名代理(Anonymous Proxy):匿名代理比透明代理进步了一点:别人只能知道你用了代理,无法知道你是谁
    REMOTE_ADDR = proxy IP
    HTTP_VIA = proxy IP
    HTTP_X_FORWARDED_FOR = proxy IP
  3、混淆代理(Distorting Proxies):如果使用了混淆代理,别人还是能知道你在用代理,但是会得到一个假的IP地址,伪装的更逼真
    REMOTE_ADDR = Proxy IP
    HTTP_VIA = Proxy IP
    HTTP_X_FORWARDED_FOR = Random IP address
  4、高匿代理(Elite proxy或High Anonymity Proxy):高匿代理让别人根本无法发现你是在用代理
    REMOTE_ADDR = Proxy IP
    HTTP_VIA = not determined
    HTTP_X_FORWARDED_FOR = not determined

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;
import org.junit.Test;
/**
* @author test
* @Title: JunitHttpClient
* @ProjectName JunitHttpClient
* @Description: TODO
* @date 2018/12/1216:07
*/
public class JunitHttpClient { @Test
public void test()throws Exception{
// 创建httpget实例
HttpGet httpGet=new HttpGet("https://www.****.com");
CloseableHttpClient client = setProxy(httpGet, "192.168.1.1", 8888);
//设置请求头消息
httpGet.setHeader("User-Agent","Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36");
// 执行http get请求 也可以使用psot
CloseableHttpResponse response=client.execute(httpGet);
// 获取返回实体
if (response != null){
HttpEntity entity = response.getEntity();
if (entity != null){
System.out.println("网页内容为:"+ EntityUtils.toString(entity,"utf-8"));
}
}
//关闭response
response.close();
//关闭httpClient
client.close(); }
/**
* 设置代理
* @param httpGet
* @param proxyIp
* @param proxyPort
* @return
*/
public CloseableHttpClient setProxy(HttpGet httpGet,String proxyIp,int proxyPort){
// 创建httpClient实例
CloseableHttpClient httpClient= HttpClients.createDefault();
//设置代理IP、端口
HttpHost proxy=new HttpHost(proxyIp,proxyPort,"http");
//也可以设置超时时间 RequestConfig requestConfig = RequestConfig.custom().setProxy(proxy).setConnectTimeout(3000).setSocketTimeout(3000).setConnectionRequestTimeout(3000).build();
RequestConfig requestConfig=RequestConfig.custom().setProxy(proxy).build();
httpGet.setConfig(requestConfig);
return httpClient;
}
}

HttpClient使用代理IP的更多相关文章

  1. (四)HttpClient 使用代理 IP

    第一节: HttpClient 使用代理 IP 在爬取网页的时候,有的目标站点有反爬虫机制,对于频繁访问站点以及规则性访问站点的行为,会采集屏蔽IP措施. 这时候,代理IP就派上用场了. 关于代理IP ...

  2. 通过httpClient设置代理Ip

    背景: 我们有个车管系统,需要定期的去查询车辆的违章,之前一直是调第三方接口去查,后面发现数据不准确(和深圳交警查的对不上),问题比较多.于是想干脆直接从深圳交警上查,那不就不会出问题了吗,但是问题又 ...

  3. 解决httpclient设置代理ip之后请求无响应的问题

    httpclient这个工具类对于大家来说应该都不陌生吧,最近在使用过程中出现了碰到一个棘手的问题,当请求的接口地址由http变成https之后,程序执行到 httpClient.execute(ht ...

  4. HttpClient代理IP及设置连接读取超时

    1.不废话,上代码: public static void main(String[] args) throws Exception { CloseableHttpClient httpClient ...

  5. HttpClient(四)-- 使用代理IP 和 超时设置

    1.代理IP的用处: 在爬取网页的时候,有的目标站点有反爬虫机制,对于频繁访问站点以及规则性访问站点的行为,会采集屏蔽IP措施.这时候,就可以使用代理IP,屏蔽一个就换一个IP. 2.代理IP分类: ...

  6. [python]爬代理ip v2.0(未完待续)

    爬代理ip 所有的代码都放到了我的github上面, HTTP代理常识 HTTP代理按匿名度可分为透明代理.匿名代理和高度匿名代理. 特别感谢:勤奋的小孩 在评论中指出我文章中的错误. REMOTE_ ...

  7. 可能是一份没什么用的爬虫代理IP指南

    写在前面 做爬虫的小伙伴一般都绕不过代理IP这个问题. PS:如果还没遇到被封IP的场景,要不就是你量太小人家懒得理你,要不就是人家压根不在乎... 爬虫用户自己是没有能力维护一系列的代理服务器和代理 ...

  8. [爬虫进阶]使用Jsoup取代你的一切网络请求方法(java,post,get,代理IP)

    [爬虫进阶]使用Jsoup取代你的一切网络请求方法(java,post,get,代理IP) 原文链接:https://www.cnblogs.com/blog5277/p/9334560.html 原 ...

  9. Java 验证代理ip

    原文地址:http://www.cnblogs.com/junrong624/p/5416503.html 1 import java.io.IOException; import java.io.I ...

随机推荐

  1. Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [33,755] milliseconds.

    刚部署好程序,第一次登录时,加载非常得慢,查看log日志发现:Creation of SecureRandom instance for session ID generation using [SH ...

  2. robotframework中的用evaluate关键字进行运算(随机数+转换+运算)

    当我们在写rf测试用例时,可能需要随机产生一些数据,可能需要将已有的数据进行转换,做简单的运算等:此时我们可以用万能的evaluate来实现 ,后面一般均适用python表达式来进行实现. 接下来详细 ...

  3. Spark源码系列:RDD repartition、coalesce 对比

    在上一篇文章中 Spark源码系列:DataFrame repartition.coalesce 对比 对DataFrame的repartition.coalesce进行了对比,在这篇文章中,将会对R ...

  4. php闭包的使用实例

    $childrenNodes = array_filter($list, function($item) use($parentId){ return $item->node_pid == $p ...

  5. Java_01初识

    1.配置环境变量 设置JAVA_HOME:新建系统变量,变量名为JAVA_HOME,变量值设置为java jdk所在的目录 设置path: 在所有数据的最前方添加%JAVA_HOME%\bin; 2. ...

  6. hnsdfz -- 6.21 -- day7

    yjq ! yjq ! 今天yjq,感觉yjq好赞啊,路转粉 恩因为题很好所以大致讲一下题解吧 a题是几天前吕老板讲过的…… 一列点上每个点有两个权值ai和bi,每个点可以任选其中一个,但是要求任意一 ...

  7. PythonStudy——函数对象的案例

    # part1 # 加法运算 def add(n1, n2): return n1 + n2 def low(n1, n2): return n1 - n2 # 四则运算 def computed(n ...

  8. 使用dotenv 管理nodejs 应用的环境变量&&docker-compose 运行

      说明dotenv 是一个很方便的符合12 factor 的环境变量管理工具,使用很方便,实际上里面的代码也不是很多 测试使用docker 进行环境部署,为了方便分发使用pkg 进行打包,使用alp ...

  9. ie 9.10 兼容性问题 遇到的坑

    1.ie9 中ajax 跨域调用时 error报错信息为”No Transport”   原因是 ajax跨域 本人用的是 cors解决方案 但是ie9一下版本 对cors默认是不允许的所以需要我们自 ...

  10. Java使用算数运算符实现两个整数互换

    有很简单的方法可以实现,不过还是用一步一个脚印的方法来试试 首先分析一下流程 这里有两个变量. int a = 10,b = 40; //此时 a 为10,b 为40 然后我们开始走路,在不依靠第三者 ...