更新時(shí)間:2022-11-22 來(lái)源:黑馬程序員 瀏覽量:
隨著網(wǎng)絡(luò)爬蟲(chóng)技術(shù)的普及,互聯(lián)網(wǎng)中出現(xiàn)了越來(lái)越多的網(wǎng)絡(luò)爬蟲(chóng),既有為搜索引擎采集數(shù)據(jù)的網(wǎng)絡(luò)爬蟲(chóng),也有很多其他的開(kāi)發(fā)者自己編寫(xiě)的網(wǎng)絡(luò)爬蟲(chóng)。對(duì)于一個(gè)內(nèi)容型驅(qū)動(dòng)的網(wǎng)站而言,被網(wǎng)絡(luò)爬蟲(chóng)訪問(wèn)是不可避免的。
盡管網(wǎng)絡(luò)爬蟲(chóng)履行著Robots協(xié)議,但是很多網(wǎng)絡(luò)爬蟲(chóng)的抓取行為不太合理,經(jīng)常同時(shí)發(fā)送上百個(gè)請(qǐng)求重復(fù)訪問(wèn)網(wǎng)站。這種抓取行為會(huì)給網(wǎng)站的服務(wù)器增加巨大的處理開(kāi)銷(xiāo),輕則降低網(wǎng)站的訪問(wèn)速度,重則導(dǎo)致網(wǎng)站無(wú)法被訪問(wèn),給網(wǎng)站造成一定的壓力。
因此,網(wǎng)站管理員會(huì)根據(jù)網(wǎng)絡(luò)爬蟲(chóng)的行為特點(diǎn),從來(lái)訪的客戶(hù)端程序中甄選出網(wǎng)絡(luò)爬蟲(chóng),并采取一些防爬蟲(chóng)措施來(lái)阻止網(wǎng)絡(luò)爬蟲(chóng)的訪問(wèn)。與此同時(shí),網(wǎng)絡(luò)爬蟲(chóng)會(huì)采取一些應(yīng)對(duì)策略繼續(xù)訪問(wèn)網(wǎng)站,常見(jiàn)的應(yīng)對(duì)策略包括添加User-Agent字段、降低訪問(wèn)頻率、設(shè)置代理服務(wù)器、識(shí)別驗(yàn)證碼,關(guān)于這幾種應(yīng)對(duì)策略的介紹如下。
瀏覽器在訪問(wèn)網(wǎng)站時(shí)會(huì)攜帶固定的User-Agent(用戶(hù)代理,用于描述瀏覽器的類(lèi)型及版本、操作系統(tǒng)及版本、瀏覽器插件、瀏覽器語(yǔ)言等信息),向網(wǎng)站表明自己的真實(shí)身份。
網(wǎng)絡(luò)爬蟲(chóng)每次訪問(wèn)網(wǎng)站時(shí)可以模仿瀏覽器的上述行為,也就是在請(qǐng)求網(wǎng)頁(yè)時(shí)攜帶User-Agent,將自己偽裝成一個(gè)瀏覽器,如此便可以繞過(guò)網(wǎng)站的檢測(cè),避免出現(xiàn)被網(wǎng)站服務(wù)器
直接拒絕訪問(wèn)的情況。
如果同一賬戶(hù)在較短的時(shí)間內(nèi)多次訪問(wèn)了網(wǎng)站,那么網(wǎng)站運(yùn)維人員會(huì)推斷此種訪問(wèn)行為可能是網(wǎng)絡(luò)爬蟲(chóng)的行為,并將該賬戶(hù)加入黑名單以禁止其訪問(wèn)網(wǎng)站。為防止網(wǎng)站運(yùn)維人員從
訪問(wèn)量上推斷出網(wǎng)絡(luò)爬蟲(chóng)的身份,可以降低網(wǎng)絡(luò)爬蟲(chóng)訪問(wèn)網(wǎng)站的頻率。不過(guò),這種方式會(huì)降低網(wǎng)絡(luò)爬蟲(chóng)的抓取效率。為了彌補(bǔ)這個(gè)不足,可以適當(dāng)?shù)卣{(diào)整一些操作,如讓網(wǎng)絡(luò)爬蟲(chóng)每抓
取一次頁(yè)面數(shù)據(jù)就休息幾秒,或者限制每天抓取的網(wǎng)頁(yè)的數(shù)量。
網(wǎng)絡(luò)爬蟲(chóng)在訪問(wèn)網(wǎng)站時(shí)若反復(fù)使用同一IP地址,則極易被網(wǎng)站識(shí)別身份后屏蔽、阻止、封禁等。此時(shí)可以在網(wǎng)絡(luò)爬蟲(chóng)和Web服務(wù)器之間設(shè)置代理服務(wù)器。有了代理服務(wù)器之后,網(wǎng)
絡(luò)爬蟲(chóng)會(huì)先將請(qǐng)求發(fā)送給代理服務(wù)器,代理服務(wù)器再轉(zhuǎn)發(fā)給服務(wù)器,這時(shí)服務(wù)器記錄的是代理服務(wù)器的IP地址(簡(jiǎn)稱(chēng)代理IP),而不是網(wǎng)絡(luò)爬蟲(chóng)所在設(shè)備的IP地址。
互聯(lián)網(wǎng)中有一些網(wǎng)站提供了大量的代理IP,可以將這些代理IP進(jìn)行存儲(chǔ),以備不時(shí)之需。不過(guò),很多代理IP的使用壽命非常短,需要通過(guò)一套完整的機(jī)制校驗(yàn)已有代理IP的有效性。
有些網(wǎng)站在檢測(cè)到某個(gè)客戶(hù)端的IP地址訪問(wèn)次數(shù)過(guò)于頻繁時(shí),會(huì)要求該客戶(hù)端進(jìn)行登錄驗(yàn)證,并隨機(jī)提供一個(gè)驗(yàn)證碼。為了應(yīng)對(duì)這種突發(fā)情況,網(wǎng)絡(luò)爬蟲(chóng)除了要輸入正確的賬戶(hù)密
碼之外,還要像人類(lèi)一樣通過(guò)滑動(dòng)或點(diǎn)擊行為識(shí)別驗(yàn)證碼,如此才能繼續(xù)訪問(wèn)網(wǎng)站。由于驗(yàn)證碼的種類(lèi)較多,不同的驗(yàn)證碼需要采用不同的技術(shù)進(jìn)行識(shí)別,具有一定的技術(shù)難度。