更新時(shí)間:2020年09月18日15時(shí)57分 來(lái)源:傳智播客 瀏覽次數(shù):
現(xiàn)如今因?yàn)樗阉饕娴牧餍?,網(wǎng)絡(luò)爬蟲(chóng)已經(jīng)成了很普及的技術(shù)了,除了專門(mén)做搜索的Google、Yahoo、百度以外,幾乎每個(gè)大型門(mén)戶網(wǎng)站都會(huì)有自己的搜索引擎,更不用說(shuō)還有各種不知名的小型爬蟲(chóng)了。一些智能的搜索引擎爬蟲(chóng)的爬取頻率比較合理,不會(huì)消耗過(guò)多網(wǎng)站的資源,但是,很多網(wǎng)絡(luò)爬蟲(chóng)對(duì)網(wǎng)頁(yè)的爬取能力很差,經(jīng)常并發(fā)上百個(gè)請(qǐng)求循環(huán)重復(fù)爬取,這種爬蟲(chóng)對(duì)中小型網(wǎng)站造成的訪問(wèn)壓力非常大,很有可能會(huì)導(dǎo)致網(wǎng)站訪問(wèn)速度緩慢,甚至無(wú)法訪問(wèn),因此現(xiàn)在的網(wǎng)站會(huì)采取一些反爬蟲(chóng)措施來(lái)阻止爬蟲(chóng)的不當(dāng)爬取行為。
對(duì)于采取了反爬蟲(chóng)措施的網(wǎng)站,爬蟲(chóng)程序需要針對(duì)這些措施采取相應(yīng)的應(yīng)對(duì)策略,才能成功地爬取到網(wǎng)站上的數(shù)據(jù)。常用的應(yīng)對(duì)策略包括以下幾種。
User-agent表示用戶代理,是HTTP協(xié)議中的一個(gè)字段,其作用是描述發(fā)出HTTP請(qǐng)求的終端信息,比如操作系統(tǒng)及版本、瀏覽器及版本等,服務(wù)器通過(guò)這個(gè)字段可以知道訪問(wèn)網(wǎng)站的是誰(shuí)。
每個(gè)正規(guī)的爬蟲(chóng)都有固定的User-agent,因此,只要將這個(gè)字段設(shè)為知名的用戶代理,就能夠成功偽裝。不過(guò),不推薦偽裝知名爬蟲(chóng),因?yàn)檫@些爬蟲(chóng)很可能有固定的IP,如百度爬蟲(chóng)。這里,我們推薦若干個(gè)瀏覽器的User-agent,在每次發(fā)送請(qǐng)求的時(shí)候,隨機(jī)從這些用戶代理中選擇一個(gè)就行,具體如下:
Mozilla/5.0 (Windows NT 5.1; U; en; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 9.50
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 9.50
Mozilla/5.0 (Windows NT 6.1; WOW64; rv:34.0) Gecko/20100101 Firefox/34.0
如果網(wǎng)站根據(jù)某個(gè)時(shí)間段以內(nèi)IP訪問(wèn)的次數(shù)來(lái)判定是否為爬蟲(chóng),一旦這些IP地址被封掉后,User-agent偽裝就失效了。遇到這種情況,可以使用代理IP完成。所謂代理IP就是介于用戶和網(wǎng)站之間的第三者,即用戶先將請(qǐng)求發(fā)送給代理IP,之后代理IP再發(fā)送到服務(wù)器,這時(shí)服務(wù)器會(huì)將代理IP視為爬蟲(chóng)的IP,同時(shí)用多個(gè)代理IP,可以降低單個(gè)IP地址的訪問(wèn)量,極有可能逃過(guò)一劫。
有些網(wǎng)站提供了一大批代理IP,我們可以將其存儲(chǔ)起來(lái)以備不時(shí)之需。不過(guò),很多代理IP的壽命比較短,需要有一套完整的機(jī)制來(lái)校驗(yàn)已有代理IP的有效性。
如果沒(méi)有找到既免費(fèi)又穩(wěn)定的代理IP,則可以降低訪問(wèn)網(wǎng)站的頻率,這樣做可以達(dá)到與用戶代理一樣的效果,防止對(duì)方從訪問(wèn)量上認(rèn)出爬蟲(chóng)的身份,不過(guò)爬取效率會(huì)差很多。為了彌補(bǔ)這個(gè)缺點(diǎn),我們可以基于這個(gè)思想適時(shí)調(diào)整具體的操作。例如,每抓取一個(gè)頁(yè)面就休息若干秒,或者限制每天抓取的頁(yè)面數(shù)量。
雖然有些網(wǎng)站不登陸就能訪問(wèn),但是它一檢測(cè)到某IP的訪問(wèn)量有異常,就會(huì)馬上提出登陸要求,并隨機(jī)提供一個(gè)驗(yàn)證碼。碰到這種情況,大多數(shù)情況下需要采取相應(yīng)的技術(shù)識(shí)別驗(yàn)證碼,只有正確輸入驗(yàn)證碼,才能夠繼續(xù)爬取網(wǎng)站。不過(guò),識(shí)別驗(yàn)證碼的技術(shù)難度還是比較大的。
猜你喜歡:
北京校區(qū)