1、UA檢測
UA,即 User-Agent,是HTTP請求頭部信息的一個屬性,它是用戶訪問網站時的瀏覽器標識,可以通過審查元素或者開發者工具中看到。一些網站通過檢測UA從而確定請求的對象是腳本程序還是正常的用戶通過瀏覽器請求,實現反爬蟲的目的。
反反爬策略:構造自己的UA池,使得每次用程序向網站發請求時都隨機帶上正常的UA標識,更好的模擬瀏覽器行為。有些網站還會有反爬時間或者頻率的限制,因此,最好可以再設置一個 timeout ,最好是隨機休眠,Python中可以使用 time.sleep() 進行設置。
2、IP限制
一些網站會根據你請求的IP地址的頻率和次數來進行反爬。如果你同樣的IP地址在短時間內對一個網站頻繁的進行訪問,那么服務器有可能在一段時間內會禁止這個IP地址進行訪問。
反反爬策略:構造自己的IP代理池,然后每次發起請求時都從池中隨機選擇一個IP地址。比如:可以去西刺代理尋找一些IP地址構造代理池。
3、驗證碼反爬
這個是一種非常有效的反爬機制,現在的驗證碼也變得越來越復雜,各種花樣很多,想寫個腳本去識別驗證碼那還真不是一件簡單的事情。
反反爬策略:這個能怎么樣呢,簡單的驗證碼可以通過雲打碼這個平台上提供的接口進行編碼識別,試了一下,還不錯,收費也不貴,但是一些比較復雜的驗證碼就不知道怎么樣了,實在不行,還是用手輸入吧
4、Ajax動態加載
有些網頁直接用它的URL抓取不到數據,這時候,就很有可能是Ajax動態加載的了。它的原理是利用網頁的URL加載網頁的源代碼之后,會先在瀏覽器中執行JavaScript程序,這些程序會加載除更多的內容,並把加載出的內容傳輸到網頁中。
反反爬策略:利用審查元素或者開發者工具查看網頁數據的XHR類型的URL,並向這個XHR類型的URL發起請求就可以拿到對應的數據了。
5、cookie限制
cookie是服務器在用戶瀏覽器設置的請求頭部信息,當瀏覽器發起請求時,如果存在cookie,就一定會攜帶。服務器會檢測cookie是否是之前設置的cookie實現反爬。
反反爬策略:在請求頭部信息中帶上相應的cookie信息,利用Python的requests模塊發請求時,可以使用requests.session自動處理cookie。