python爬蟲防止IP被封的一些措施

2022-06-27 11:42:11 字數 1530 閱讀 1112

在編寫爬蟲爬取資料的時候,因為很多**都有反爬蟲措施,所以很容易被封ip,就不能繼續爬了。在爬取大資料量的資料時更是瑟瑟發抖,時刻擔心著下一秒ip可能就被封了。

本文就如何解決這個問題總結出一些應對措施,這些措施可以單獨使用,也可以同時使用,效果更好。

在請求頭中把user-agent設定成瀏覽器中的user-agent,來偽造瀏覽器訪問。比如:

resp = requests.get(url,headers = headers)

還可以先收集多種瀏覽器的user-agent,每次發起請求時隨機從中選乙個使用,可以進一步提高安全性:

in [7]: import requests,random

in [9]: def get_html(url):

...:     headers = 

...:     resp = requests.get(url,headers = headers)

...:     return resp.text

把上面隨機選擇乙個user-agent的**封裝成乙個函式:

import random

def get_headers():

'''隨機獲取乙個headers

'''headers = 

return headers

注:一些常見瀏覽器的user-agent可參見:

比如:time.sleep(random.randint(0,3))  # 暫停0~3秒的整數秒,時間區間:[0,3]

或:time.sleep(random.random())  # 暫停0~1秒,時間區間:[0,1)

若從瀏覽器中可以正常訪問乙個頁面,則可以將瀏覽器中的cookies複製過來使用,比如:

cookies = dict(uuid='b18f0e70-8705-470d-bc4b-09a8da617e15',um_distinctid='15d188be71d50-013c49b12ec14a-3f73035d-100200-15d188be71ffd')

resp = requests.get(url,cookies = cookies)

# 把瀏覽器的cookies字串轉成字典

def cookies2dict(cookies):

items = cookies.split(';')

d = {}

for item in items:

kv = item.split('=',1)

k = kv[0]

v = kv[1]

d[k] = v

return d

可以換著用多個**ip來進行訪問,防止同乙個ip發起過多請求而被封ip,比如:

proxies = 

resp = requests.get(url,proxies = proxies)

# 注:免費的**ip可以在這個**上獲取:

道高一尺魔高一丈,你有反爬蟲措施,那我也有各種"反反爬蟲"的措施,github上就有一位大神專門整理了乙個這樣的專案:anti-anti-spider,鏈結位址為:

可以研究一下。

python爬蟲防止IP被封的一些措施

在編寫爬蟲爬取資料的時候,因為很多 都有反爬蟲措施,所以很容易被封ip,就不能繼續爬了。在爬取大資料量的資料時更是瑟瑟發抖,時刻擔心著下一秒ip可能就被封了。本文就如何解決這個問題總結出一些應對措施,這些措施可以單獨使用,也可以同時使用,效果更好。在請求頭中把user agent設定成瀏覽器中的us...

python爬蟲防止IP被封的一些措施

在編寫爬蟲爬取資料的時候,尤其是爬取大量資料的時候,因為很多 都有反爬蟲措施,所以很容易被封ip,就不能繼續爬了。本文就如何解決這個問題總結出一些應對措施,這些措施可以單獨使用,也可以同時使用,效果更好。在請求頭中把user agent設定成瀏覽器中的user agent,來偽造瀏覽器訪問。比如 r...

爬蟲 IP被封解決辦法

方法1.1.ip必須需要,比如adsl。如果有條件,其實可以跟機房多申請外網ip。2.在有外網ip的機器上,部署 伺服器。3.你的程式,使用輪訓替換 伺服器來訪問想要採集的 好處 1.程式邏輯變化小,只需要 功能。3.就算具體ip被遮蔽了,你可以直接把 伺服器下線就ok,程式邏輯不需要變化。方法2....