Python爬蟲(chóng)防封ip的一些技巧
在編寫(xiě)爬蟲(chóng)爬取數(shù)據(jù)的時(shí)候,因?yàn)楹芏嗑W(wǎng)站都有反爬蟲(chóng)措施,所以很容易被封IP,就不能繼續(xù)爬了。在爬取大數(shù)據(jù)量的數(shù)據(jù)時(shí)更是瑟瑟發(fā)抖,時(shí)刻擔(dān)心著下一秒IP可能就被封了。
本文就如何解決這個(gè)問(wèn)題總結(jié)出一些應(yīng)對(duì)措施,這些措施可以單獨(dú)使用,也可以同時(shí)使用,效果更好。
偽造User-Agent
在請(qǐng)求頭中把User-Agent設(shè)置成瀏覽器中的User-Agent,來(lái)偽造瀏覽器訪問(wèn)。比如:
headers ={’User-Agent’:’Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36’} resp = requests.get(url,headers = headers)
還可以先收集多種瀏覽器的User-Agent,每次發(fā)起請(qǐng)求時(shí)隨機(jī)從中選一個(gè)使用,可以進(jìn)一步提高安全性:
把上面隨機(jī)選擇一個(gè)User-Agent的代碼封裝成一個(gè)函數(shù):
在每次重復(fù)爬取之間設(shè)置一個(gè)隨機(jī)時(shí)間間隔
比如:
time.sleep(random.randint(0,3)) # 暫停0~3秒的整數(shù)秒,時(shí)間區(qū)間:[0,3]
或:
time.sleep(random.random()) # 暫停0~1秒,時(shí)間區(qū)間:[0,1)
偽造cookies
若從瀏覽器中可以正常訪問(wèn)一個(gè)頁(yè)面,則可以將瀏覽器中的cookies復(fù)制過(guò)來(lái)使用,比如:
注:用瀏覽器cookies發(fā)起請(qǐng)求后,如果請(qǐng)求頻率過(guò)于頻繁仍會(huì)被封IP,這時(shí)可以在瀏覽器上進(jìn)行相應(yīng)的手工驗(yàn)證(比如點(diǎn)擊驗(yàn)證圖片等),然后就可以繼續(xù)正常使用該cookies發(fā)起請(qǐng)求。
使用代理
可以換著用多個(gè)代理IP來(lái)進(jìn)行訪問(wèn),防止同一個(gè)IP發(fā)起過(guò)多請(qǐng)求而被封IP,比如:
附:GitHub上的一個(gè)'反反爬蟲(chóng)'項(xiàng)目
道高一尺魔高一丈,你有反爬蟲(chóng)措施,那我也有各種'反反爬蟲(chóng)'的措施,GitHub上就有一位大神專門(mén)整理了一個(gè)這樣的項(xiàng)目:Anti-Anti-Spider,鏈接地址為:github.com/luyishisi/An可以研究一下。
以上就是Python爬蟲(chóng)防封ip的一些技巧的詳細(xì)內(nèi)容,更多關(guān)于Python爬蟲(chóng)防封ip的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!
相關(guān)文章:
1. ASP.NET MVC使用Boostrap實(shí)現(xiàn)產(chǎn)品展示、查詢、排序、分頁(yè)2. Java并發(fā)編程必備之Future機(jī)制3. Android SeekBar實(shí)現(xiàn)平滑滾動(dòng)4. 每日幾道java新手入門(mén)面試題,通往自由的道路5. Django實(shí)現(xiàn)任意文件上傳(最簡(jiǎn)單的方法)6. 詳解ABP框架中的日志管理和設(shè)置管理的基本配置7. idea實(shí)現(xiàn)類快捷生成接口方法示例8. ASP.NET MVC使用JSAjaxFileUploader插件實(shí)現(xiàn)單文件上傳9. 使用ajax跨域調(diào)用springboot框架的api傳輸文件10. ASP.NET MVC把數(shù)據(jù)庫(kù)中枚舉項(xiàng)的數(shù)字轉(zhuǎn)換成文字
