充分了解一下反爬策略
jj
2022-07-27
網(wǎng)絡(luò)爬蟲(chóng)技術(shù)已經(jīng)成為一種非常流行的網(wǎng)絡(luò)技術(shù),對(duì)于一個(gè)內(nèi)容驅(qū)動(dòng)的網(wǎng)站來(lái)說(shuō),不可避免的會(huì)受到網(wǎng)絡(luò)爬蟲(chóng)技術(shù)的光顧。優(yōu)秀的爬蟲(chóng)技術(shù)不會(huì)干擾網(wǎng)站的正常運(yùn)行,而糟糕的爬蟲(chóng)技術(shù)會(huì)帶來(lái)很多麻煩,因?yàn)樗麄兊捻?yè)面抓取能力差,經(jīng)常會(huì)有幾十個(gè)或者上百個(gè)重復(fù)請(qǐng)求,增加了網(wǎng)絡(luò)站點(diǎn)的訪問(wèn)壓力,導(dǎo)致站點(diǎn)訪問(wèn)緩慢甚至無(wú)法訪問(wèn)。

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