反爬利器--設置代理服務器


1. 代理簡介

  很多網站都會檢測某一段時間某個IP的訪問次數,如果同一個IP訪問過於頻繁,那么該網站就會禁止來自該IP的訪問,針對這種情況,可以使用代理服務器,每隔一段時間換一個馬甲。“他強任他強,勞資會變翔”哈哈哈。

  免費的開放代理獲取無成本,我們可以收集這些免費代理,測試后如果可以用,用在爬蟲上。

  免費短期代理網站舉例:

名詞解釋:

免費短期代理網站分高匿和透明

【高匿】:代表服務器追蹤不到你原來的IP;

【透明】:代表服務器可以追蹤到你的代理IP和原來的IP;

類型表示支持的類型:HTTP或者HTTPS

【存活的時間】:表示在這個期間可用

 

2.設置代理服務器

urllib.request中通過ProxyHandler來設置使用代理服務器,下面代碼說明如何使用自定義opener來使用代理:

例子1單個代理IP

 

 1 import urllib.request  2 
 3 # 構建兩個代理Handler,一個有代理IP,一個沒有
 4 httpproxy_handler = urllib.request.ProxyHandler({"http": "211.141.111.114:61395"})  5 nullproxy_handler = urllib.request.ProxyHandler({})  6 proxy_switch = True  # 定義一個代理開關
 7 
 8 # 通過urllib.request.build_opener() 方法創建自定義opener對象
 9 # 根據代理開關是否打開,使用不同的代理模式
10 if proxy_switch: 11     opener = urllib.request.build_opener(httpproxy_handler) 12 else: 13     opener = urllib.request.build_opener(nullproxy_handler) 14 
15 request = urllib.request.Request("http://www.baidu.com") 16 response = opener.open(request) 17 print(response.read())

  注意:

  如果程序中所有的請求都使用自定義的opener, 可以使用urllib.install_opener()將自定義的opener定義為全局opener,表示之后凡是調用urlopen,都將使用自定義的opener。

 

例子2代理IP列表隨機抽取

如果代理IP足夠多,就可以像隨機獲取User-Agent一樣,隨機選擇一個代理去訪問網站。

 

 1 import urllib.request  2 import random  3 
 4 proxy_list = [  5     {"http": "211.141.111.114:61395"},  6     {"http": "61.135.217.7:80"},  7     {"http": "171.39.74.97:8123"},  8     {"http": "218.59.228.18:61976"},  9     {"http": "221.224.136.211:35101"}, 10 ] 11 
12 # 隨機選擇一個代理
13 proxy = random.choice(proxy_list) 14 
15 # 使用選擇的代理構建代理處理器對象
16 httpproxy_handler = urllib.request.ProxyHandler(proxy) 17 opener = urllib.request.build_opener(httpproxy_handler) 18 request = urllib.request.Request("http://www.baidu.com") 19 response = opener.open(request) 20 print(response.read())

 

這些免費開放代理一般會有很多人都在使用,而且代理有壽命短,速度慢,匿名度不高,HTTP/HTTPS支持不穩定等缺點(免費沒好貨)。

 

所以,專業爬蟲工程師或爬蟲公司會使用高品質的私密代理,這些代理通常需要找專門的代理供應商購買,再通過用戶名/密碼授權使用。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM