欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

常見的反爬蟲urllib技術(shù)分享

 更新時間:2022年04月25日 16:20:10   作者:愛python的王三金  
這篇文章主要介紹了常見的反爬蟲urllib技術(shù)分享,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

爬蟲和反爬的對抗一直在進行著…為了幫助更好的進行爬蟲行為以及反爬,今天就來介紹一下網(wǎng)頁開發(fā)者常用的反爬手段。

通過robots.txt來限制爬蟲:

爬蟲都遵守著一個協(xié)議:robots.txt

robots.txt(統(tǒng)一小寫)是一種存放于網(wǎng)站根目錄下的ASCII編碼的文本文件,它通常告訴網(wǎng)絡搜索引擎的漫游器(又稱網(wǎng)絡蜘蛛),此網(wǎng)站中的哪些內(nèi)容是不應被搜索引擎的漫游器獲取的,哪些是可以被漫游器獲取的。因為一些系統(tǒng)中的URL是大小寫敏感的,所以robots.txt的文件名應統(tǒng)一為小寫。

robots.txt應放置于網(wǎng)站的根目錄下。

如果想單獨定義搜索引擎的漫游器訪問子目錄時的行為,那么可以將自定的設(shè)置合并到根目錄下的robots.txt,或者使用robots元數(shù)據(jù)(Metadata,又稱元數(shù)據(jù))。

robots.txt協(xié)議并不是一個規(guī)范,而只是約定俗成的,所以并不能保證網(wǎng)站的隱私。

注意robots.txt是用字符串比較來確定是否獲取URL,所以目錄末尾有與沒有斜杠“/”表示的是不同的URL。

robots.txt允許使用類似”Disallow: *.gif”這樣的通配符[1][2]。

解決方法:

這實際上只是一個”君子協(xié)議“,遵守與否,都在于爬蟲的編寫者。

通過User-Agent來控制訪問:

無論是瀏覽器還是爬蟲程序,在向服務器發(fā)起網(wǎng)絡請求的時候,都會發(fā)過去一個頭文件:headers 這里面的大多數(shù)的字段都是瀏覽器向服務器”表明身份“用的
 

對于爬蟲程序來說,最需要注意的字段就是:User-Agent

很多網(wǎng)站都會建立 user-agent白名單,只有屬于正常范圍的user-agent才能夠正常訪問。

解決方法:

在發(fā)送請求時使用該網(wǎng)站user-agent白名單的的UA

可以使用python的第三方模塊fake_useragent 隨機生成UA,需手動安裝

>>> from fake_useragent import FakeUserAgent
>>> ua = FakeUserAgent()
>>> ua.random
'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1866.237 Safari/537.36'

驗證碼:

最為經(jīng)典的反爬蟲策略當屬“驗證碼”了。因為驗證碼是圖片,用戶登錄時只需輸入一次便可登錄成功,而我們程序抓取數(shù)據(jù)過程中,需要不斷的登
錄,比如我們需要抓取1000個用戶的個人信息,則需要填1000次驗證碼,而手動輸入驗證碼是不現(xiàn)實的,所以驗證碼的出現(xiàn)曾經(jīng)難倒了很多網(wǎng)絡爬蟲工程師。

解決方法:

  • 分析網(wǎng)站驗證碼機制,從網(wǎng)站后臺或者前端獲取驗證碼(文本形式),該方法只適用于少量網(wǎng)站,因為一般驗證碼我們很難拿到。
  • 利用圖像識別技術(shù),識別驗證碼文本(例如最近比較火的深度學習Tensorflow等)。
  • 往往一些網(wǎng)站不只有pc端,還有手機端網(wǎng)站,很有可能手機端是不包含驗證碼的。所以不妨試試手機端網(wǎng)站,也許會有意外收獲

IP限制:

另外一種麻煩的反爬蟲策略當屬封ip和封賬號了。本人初期曾經(jīng)用一臺機器抓取拉鉤,導致短時間內(nèi)賬號被封,IP被封,所以遇到類似問題一定要多加小心。

解決方法:

  • 最簡單的解決辦法:限制程序抓取頻率,每隔幾秒登錄一次(如果對抓取數(shù)量沒有要求,則可以采用這種方法,如果想抓取大量數(shù)據(jù),還不得抓取到猴年馬月啊)。
  • 既然封賬號封IP,那我就用多個賬號、多臺機器抓取唄,既解決了反爬蟲問題,也相當于做了分流處理,降低單臺機器帶寬壓力。
  • 事實證明,有些網(wǎng)站即使我們采用了1)2)方法,還是會被封,這種情況下我們只能去抓取代理IP了,可以寫一個專門的爬蟲程序用來抓取代理,用這些代理去抓取我們想要的數(shù)據(jù)。到此為止,基本上封賬號、封IP的問題就可以解決了。

cookie:

通過cookie限制抓取信息,比如我們模擬登陸之后,想拿到登陸之后某頁面信息,千萬不要以為模擬登陸之后就所有頁面都可以抓了,有時候還需要請求一些中間頁面拿到特定cookie,然后才可以抓到我們需要的頁面。
解決方法:

通過瀏覽器的F12查看器,觀察具體整個過程都請求了哪些URL(主要包括HTML、JS、XHR),挨個試,試到成功為止。

JS渲染:

采用JS渲染頁面。什么意思呢,就是返回的頁面并不是直接請求得到,而是有一部分由JS操作DOM得到,所以那部分數(shù)據(jù)我們也拿不到咯。
解決方法:

  • 可以使用Phantomjs模擬瀏覽器請求返回渲染完JS的頁面
  • 通過抓包抓取JS渲染的數(shù)據(jù)(不推薦)

以上就是常見的反爬蟲urllib技術(shù)分享的詳細內(nèi)容,更多關(guān)于反爬蟲urllib技術(shù)的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評論