網(wǎng)站的防爬機(jī)制一般用這幾種方法
jj
2021-11-26
了解網(wǎng)站的防爬機(jī)制,一般網(wǎng)站從以下幾個(gè)方面進(jìn)行反爬蟲(chóng):

1.通過(guò)標(biāo)頭進(jìn)行反爬網(wǎng)
向用戶請(qǐng)求標(biāo)頭反爬蟲(chóng)是最常見(jiàn)的反爬蟲(chóng)策略。很多網(wǎng)站會(huì)檢測(cè)到Headers的User-Agent,有些網(wǎng)站會(huì)檢測(cè)到Referer(有些資源網(wǎng)站的防盜鏈就是檢測(cè)Referer)。
如果遇到這種反爬蟲(chóng)機(jī)制,可以直接將header添加到爬蟲(chóng)中,將瀏覽器的User-Agent復(fù)制到爬蟲(chóng)的header中?;蛘邔eferer值修改為目標(biāo)網(wǎng)站的域名。對(duì)于檢測(cè)標(biāo)頭的反爬網(wǎng)程序,可以通過(guò)修改或添加爬網(wǎng)程序中的標(biāo)頭來(lái)繞過(guò)它。
2.基于用戶行為的反爬蟲(chóng)
也有一些網(wǎng)站檢測(cè)用戶行為,比如同一個(gè)IP短時(shí)間內(nèi)多次訪問(wèn)同一個(gè)頁(yè)面,或者同一個(gè)賬號(hào)短時(shí)間內(nèi)多次做同樣的操作。
大多數(shù)網(wǎng)站都是前一種情況,可以通過(guò)使用IP代理來(lái)解決。我們可以在檢測(cè)后將代理IP保存在文件中,但是這種方法并不可取,而且代理IP失敗的概率很高,所以從專業(yè)代理IP網(wǎng)站上實(shí)時(shí)抓取是一個(gè)不錯(cuò)的選擇。
在第二種情況下,下一個(gè)請(qǐng)求可以在每個(gè)請(qǐng)求之后的幾秒鐘的隨機(jī)時(shí)間間隔內(nèi)發(fā)出。一些存在邏輯漏洞的網(wǎng)站可以通過(guò)多次請(qǐng)求、注銷、再次登錄、繼續(xù)請(qǐng)求等方式,繞過(guò)同一賬號(hào)無(wú)法在短時(shí)間內(nèi)多次提出同一請(qǐng)求的限制。
對(duì)于cookie,檢查cookie以確定用戶是否是有效用戶。需要登錄的網(wǎng)站經(jīng)常使用這種技術(shù)。此外,一些網(wǎng)站的登錄將被動(dòng)態(tài)更新和驗(yàn)證。例如,用于登錄驗(yàn)證的authentication _ token將在Tukuku登錄時(shí)隨機(jī)分配,authentication _ token將與用戶提交的登錄名和密碼一起發(fā)送回服務(wù)器。
3.基于動(dòng)態(tài)頁(yè)面的反爬蟲(chóng)
有時(shí)抓取目標(biāo)頁(yè)面時(shí),發(fā)現(xiàn)關(guān)鍵信息內(nèi)容為空,只有框架代碼。這是因?yàn)榫W(wǎng)站的信息通過(guò)用戶帖子的XHR動(dòng)態(tài)返回內(nèi)容信息。這個(gè)問(wèn)題的解決方案是通過(guò)開(kāi)發(fā)者工具(FireBug等)分析網(wǎng)站流量。),找到單獨(dú)的內(nèi)容信息請(qǐng)求(如Json),抓取內(nèi)容信息,得到需要的內(nèi)容。
更復(fù)雜的是動(dòng)態(tài)請(qǐng)求的加密,參數(shù)無(wú)法解析,所以無(wú)法抓取。在這種情況下,可以通過(guò)Mechanize、selenium RC調(diào)用瀏覽器內(nèi)核,就像真正的瀏覽器上網(wǎng)一樣,可以最大限度地提高爬行的成功率,但效率會(huì)大打折扣。筆者測(cè)試過(guò),抓取拉戈30頁(yè)招聘信息需要30多秒。而用模擬瀏覽器內(nèi)核抓取則需要2-3分鐘。
4.限制一些IP訪問(wèn)
免費(fèi)代理IP可以從很多網(wǎng)站獲得。由于爬網(wǎng)程序可以使用這些代理IP來(lái)爬網(wǎng)網(wǎng)站,因此網(wǎng)站也可以使用這些代理IP反向限制,通過(guò)爬網(wǎng)這些IP并將其保存在服務(wù)器上來(lái)限制爬網(wǎng)程序。