天天聊爬蟲,今天我們來聊聊反爬

weixin_33670713發表於2018-12-19
15344105-3b22112cffbfc9b3

反爬蟲的幾重措施

1.IP限制

如果是個人編寫的爬蟲,IP可能是固定的,那麼發現某個IP請求過於頻繁並且短時間內訪問大量的頁面,有爬蟲的嫌疑,作為網站的管理或者運維人員,你可能就得想辦法禁止這個IP地址訪問你的網頁了。那麼也就是說這個IP發出的請求在短時間內不能再訪問你的網頁了,也就暫時擋住了爬蟲。

學習Python中有不明白推薦加入交流裙

                號:735934841

                群裡有志同道合的小夥伴,互幫互助,

                群裡有免費的視訊學習教程和PDF!

2.User-Agent

User-Agent是使用者訪問網站時候的瀏覽器的標識

下面我列出了常見的幾種正常的系統的User-Agent大家可以參考一下,

15344105-c398fd94b4ebe6fc

並且在實際發生的時候,根據瀏覽器的不同,還有各種其他的User-Agent,我舉幾個例子方便大家理解:

safari 5.1 – MAC

User-Agent:Mozilla/5.0 (Macintosh; U; IntelMac OS X 10_6_8; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1Safari/534.50

Firefox 4.0.1 – MAC

User-Agent: Mozilla/5.0 (Macintosh; IntelMac OS X 10.6; rv:2.0.1) Gecko/20100101 Firefox/4.0.1

Firefox 4.0.1 – Windows

User-Agent:Mozilla/5.0 (Windows NT 6.1;rv:2.0.1) Gecko/20100101 Firefox/4.0.1

同樣的也有很多的合法的User-Agent,只要使用者訪問不是正常的User-Agent極有可能是爬蟲再訪問,這樣你就可以針對使用者的User-Agent進行限制了。

3、 驗證碼反爬蟲

這個辦法也是相當古老並且相當的有效果,如果一個爬蟲要解釋一個驗證碼中的內容,這在以前通過簡單的影象識別是可以完成的,但是就現在來講,驗證碼的干擾線,噪點都很多,甚至還出現了人類都難以認識的驗證碼(某二三零六)。

15344105-0aa75a598392e20b
15344105-7be8987a3fb2f61f

4.Ajax非同步載入

5.Noscript標籤的使用

<noscript>標籤是在瀏覽器(或者使用者瀏覽標識),沒有啟動指令碼支援的情況下觸發的標籤,在低階爬蟲中,基本都沒有配置js引擎,通常這種方式和Ajax非同步載入同時使用。用於保護自己不想讓爬蟲接觸的資訊。

6.Cookie限制

第一次開啟網頁會生成一個隨機cookie,如果再次開啟網頁這個cookie不存在,那麼再次設定,第三次開啟仍然不存在,這就非常有可能是爬蟲在工作了。很簡單,在三番屢次沒有帶有該帶的cookie,就禁止訪問。

爬蟲編寫注意事項

在這一部分,筆者希望就自己的經驗給大家編寫爬蟲提供比較可行的建議,也為大家提一個醒:

1.道德問題,是否遵守robots協議;

2.小心不要出現卡死在死迴圈中,儘量使用urlparser去解析分離url決定如何處理,如果簡單的想當然的分析url很容易出現死迴圈的問題;

3.單頁面響應超時設定,預設是200秒,建議調短,在網路允許的條件下,找到一個平衡點,避免所有的爬蟲執行緒都在等待200,結果出現效率降低;

4.高效準確的判重模式,如果判重出現問題,就會造成訪問大量已經訪問過的頁面浪費時間;

5.可以採用先下載,後分析的方法,加快爬蟲速度;

6.在非同步程式設計的時候要注意資源死鎖問題;

7.定位元素要精準(xpath)儘量避免dirty data。

小編推薦大家可以加我的扣扣群 735934841 。裡面有海量視訊教程和學習資料免費領取,不失為是一個學習的好地方,歡迎你的到來。一起交流學習!共同進步!!

相關文章