1. 程式人生 > >HttpClient代理IP及設定連線讀取超時

HttpClient代理IP及設定連線讀取超時

1、不廢話,上程式碼:

public static void main(String[] args) throws Exception {
		CloseableHttpClient httpClient = HttpClients.createDefault(); // 建立HttpClient例項
		HttpGet httpGet = new HttpGet("http://www.tuicool.com"); // 建立Httpget例項
		//設定Http報文頭資訊
		httpGet.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:49.0) Gecko/20100101 Firefox/49.0");
		HttpHost httoHost = new HttpHost("113.2.63.7",8118);//代理Ip
//RequestConfig requestConfig = RequestConfig.custom().setProxy(httoHost).build(); RequestConfig requestConfig = RequestConfig.custom() .setConnectTimeout(10000)//設定連線超時時間 .setSocketTimeout(10000)//設定讀取超時時間 .setProxy(httoHost)//設定代理 .build(); httpGet.setConfig(requestConfig); CloseableHttpResponse response = null; response = httpClient.execute(httpGet); // 執行http get請求 HttpEntity httpEntity = response.getEntity(); // 獲取返回實體 String web = EntityUtils.toString(httpEntity, "utf-8"); // 解析實體 System.out.println("網頁內容是:"); System.out.println(web); response.close(); // 關閉response httpClient.close(); // 關閉HttpClient實體 }

2、關於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

可以看出來,高匿代理讓別人根本無法發現你是在用代理,所以是最好的選擇。

Reference:
[1]Java1234_小鋒, HttpClient使用代理IP, http://blog.java1234.com/blog/articles/251.html
[2]Java1234_小鋒, HttpClient連線超時及讀取超時, http://blog.java1234.com/blog/articles/254.html