(四)HttpClient 使用代理 IP
第一節: HttpClient 使用代理 IP
在爬取網頁的時候,有的目標站點有反爬蟲機制,對于頻繁訪問站點以及規則性訪問站點的行為,會采集屏蔽IP措施。
這時候,代理IP就派上用場了。
關于代理IP的話 也分幾種透明代理、匿名代理、混淆代理、高匿代理
1、透明代理(Transparent Proxy)
REMOTE_ADDR = Proxy IP
HTTP_VIA = Proxy IP
HTTP_X_FORWARDED_FOR = Your IP
透明代理雖然可以直接“隱藏”你的IP地址,但是還是可以從HTTP_X_FORWARDED_FOR來查到你是誰。
2、匿名代理(Anonymous Proxy)
REMOTE_ADDR = proxy IP
HTTP_VIA = proxy IP
HTTP_X_FORWARDED_FOR = proxy IP
匿名代理比透明代理進步了一點:別人只能知道你用了代理,無法知道你是誰。
還有一種比純匿名代理更先進一點的:混淆代理,見下節。
3、混淆代理(Distorting Proxies)
REMOTE_ADDR = Proxy IP
HTTP_VIA = Proxy IP
HTTP_X_FORWARDED_FOR = Random IP address
如上,與匿名代理相同,如果使用了混淆代理,別人還是能知道你在用代理,但是會得到一個假的IP地址,偽裝的更逼真:-)
4、高匿代理(Elite proxy或High Anonymity Proxy)
REMOTE_ADDR = Proxy IP
HTTP_VIA = not determined
HTTP_X_FORWARDED_FOR = not determined
可以看出來,高匿代理讓別人根本無法發現你是在用代理,所以是最好的選擇。
一般我們搞爬蟲 用的都是 高匿的代理IP;
那代理IP 從哪里搞呢 很簡單 百度一下,你就知道 一大堆代理IP站點。 一般都會給出一些免費的,但是花點錢搞收費接口更加方便;
比如http://www.66ip.cn/
httpClient使用代理IP代碼:
1 package com.javaxk.httpclient.chap04;
2
3 import org.apache.http.HttpEntity;
4 import org.apache.http.HttpHost;
5 import org.apache.http.client.config.RequestConfig;
6 import org.apache.http.client.methods.CloseableHttpResponse;
7 import org.apache.http.client.methods.HttpGet;
8 import org.apache.http.impl.client.CloseableHttpClient;
9 import org.apache.http.impl.client.HttpClients;
10 import org.apache.http.util.EntityUtils;
11
12 public class Demo1 {
13
14 public static void main(String[] args)throws Exception {
15 CloseableHttpClient httpClient=HttpClients.createDefault(); // 創建httpClient實例
16 HttpGet httpGet=new HttpGet("https://www.taobao.com/"); // 創建httpget實例
17 HttpHost proxy=new HttpHost("178.32.213.128", 80);
18 RequestConfig requestConfig=RequestConfig.custom().setProxy(proxy).build(); //代理ip
19 httpGet.setConfig(requestConfig); //設置代理ip
20 httpGet.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:50.0) Gecko/20100101 Firefox/50.0");
21 CloseableHttpResponse response=httpClient.execute(httpGet); // 執行http get請求
22 HttpEntity entity=response.getEntity(); // 獲取返回實體
23 System.out.println("網頁內容:"+EntityUtils.toString(entity, "utf-8")); // 獲取網頁內容
24 response.close(); // response關閉
25 httpClient.close(); // httpClient關閉
26 }
27
28 }
建議大家用國內代理IP 以及主干道網絡大城市的代理IP 訪問速度快;
總結
以上是生活随笔為你收集整理的(四)HttpClient 使用代理 IP的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SAP Hybris的build cal
- 下一篇: 霓虹深渊道具黄金团有什么用