充分了解一下反爬策略
jj
2022-07-27
網絡爬蟲技術已經成為一種非常流行的網絡技術,對于一個內容驅動的網站來說,不可避免的會受到網絡爬蟲技術的光顧。優(yōu)秀的爬蟲技術不會干擾網站的正常運行,而糟糕的爬蟲技術會帶來很多麻煩,因為他們的頁面抓取能力差,經常會有幾十個或者上百個重復請求,增加了網絡站點的訪問壓力,導致站點訪問緩慢甚至無法訪問。

為了避免這種情況,網站會使用反抓取技術,一般從一般用戶請求的頭、一般用戶行為、網站目錄、數據加載方式三個方面來實現反爬蟲。
1.穿越報頭反爬蟲技術
普通用戶要求的頭反爬蟲技術是最常見的反爬蟲技術策略。很多網站會檢測Headers的User-Agent,有些網站會檢測Referer(有些資源網站的防盜鏈就是檢測Referer)。如果遇到這種反爬蟲技術機制,可以直接給爬蟲技術添加頭,把瀏覽器的User-Agent復制到爬蟲技術頭;或將Referer值修改為目標網絡站點的域名。對于檢測報頭的反爬蟲技術,在爬蟲技術中修改或添加報頭可以很好的繞過它。
2.基于一般用戶行為的反爬蟲技術
還有一些網站會檢測到一般的用戶行為,比如同一個IP在短時間內多次訪問同一個頁面,或者同一個賬號在短時間內多次做同樣的操作。
大部分網點都是前一種情況,對于這種情況可以使用IP代理,精靈ip代理適用于多個平臺,在全國各地都有自營的服務器節(jié)點,有大量的IP地址,就可以每隔幾個請求就換一個IP,這在requests或者urllib2中很容易做到,所以可以很容易的繞過第一道反爬蟲技術。
在第二種情況下,下一個請求可以在每次請求后隨機間隔幾秒鐘發(fā)出。一些存在邏輯漏洞的網站,可以通過多次請求、注銷、再次登錄、繼續(xù)請求的方式,繞過同一賬號不能在短時間內多次發(fā)出相同請求的限制。
3.動態(tài)頁面的反爬蟲技術
以上情況大多出現在靜態(tài)頁面,以及一些網站上。我們需要抓取的數據是通過ajax請求獲取的,或者是Java生成的。首先,使用Firebug或HttpFox來分析網絡請求。如果能找到ajax請求,分析出具體的參數和響應的具體含義,就可以采用上面的方法,直接用requests或者urllib2模擬ajax請求,分析響應的json,得到需要的數據。
反爬蟲和爬蟲是相輔相成的,遵守目標站點的規(guī)則才是利人利己的好爬蟲。