ProxyHandler

很多網站會檢測某一段時間某個ip的訪問次數(通過流量統計,系統日誌等),如果訪問次數多的不像正常人,它會禁止這個ip的訪問,所以我們可以設置一些代理服務器,每隔一段時間換一個代理,就算ip被禁止,依然可以換個ip繼續爬取,urllib中通過ProxyHandler來設置使用代理服務器,下面代碼說明如何使用自定義opener來使用代理:

from urllib import request
#沒有使用代理
url='http://httpbin.org/ip'
#resp=request.urlopen(url)
#print(resp.read())
#使用代理字典形式
#1.使用ProxyHandler:傳入代理構建一個handler
handler=request.ProxyHandler({"http":"136.228.128.14:61158"})
#2.使用上面創建的handler構建一個opener
opener=request.build_opener(handler)
#3.使用opener去發送一個請求
req=request.Request(url)
resp=opener.open(req)
print(resp.read())

常用的代理有:

  • 快代理:http://www.kuaidaili.com
  • 代理雲:http://www.dailiyun.com
  • 西刺免費代理:http://www.xicidaili.com

查詢訪問服務器的IP地址,測試有無改變IP地址:httpbin.org
在這裏插入圖片描述

  1. 代理的原理:在請求目的服務器之前,先請求代理服務器,然後讓代理服務器去請求目的服務器,代理服務器拿到目的服務器的數據後,再轉發給我們

  2. http://httpbin.org :這個網站可以方便的查看http請求的一些條款

  3. 在代碼中使用代理:

  • 使用 urllib.request.ProxyHandler
  • 傳入一個代理,這個代理是一個字典,字典的key依賴於代理服務器能夠接受的類型,一般是“http”或“https”,值是“IP:port”
  • 使用上一步創建的“bandler”,以及‘request.build_opener’創建一個“opener”對象
  • 使用上一步創建的“opener”,調用“open”函數,發起請求
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章