使用代理IP不是萬(wàn)能,只是爬蟲策略之一
在使用代理ip的過(guò)程中,我們發(fā)現(xiàn)大部分用戶朋友都有這種想法:擁有優(yōu)質(zhì)代理IP,爬蟲可以暢通無(wú)阻。如果爬蟲做的不好是代理IP的鍋,他們認(rèn)為是優(yōu)質(zhì)的代理IP等同于一個(gè)好的爬蟲策略,有了這樣一個(gè)代理IP,你不必?fù)?dān)心爬蟲策略。其實(shí)這種想法是片面的,使用代理IP不是萬(wàn)能,只是爬蟲策略之一,具體的爬蟲策略要根據(jù)目標(biāo)網(wǎng)站的反爬策略來(lái)制定,也可以稱為反爬策略。
一般反爬蟲措施如下:
1.代碼級(jí)限制需要登錄訪問(wèn)權(quán)限。一天只能訪問(wèn)一定數(shù)量的頁(yè)面,在沒有登錄的情況下只能查看幾個(gè)頁(yè)面,比如列表信息類網(wǎng)站。已經(jīng)有很多一天6個(gè)的列表詳情頁(yè)了,再多的頁(yè)面就會(huì)有惡意。這種限制需要大量的帳戶來(lái)進(jìn)行爬蟲爬行。當(dāng)然,除了完全限制之外,還可以限制訪問(wèn)若干個(gè)以上的彈窗驗(yàn)證碼,驗(yàn)證后再繼續(xù)訪問(wèn),這樣至少不會(huì)有少數(shù)真實(shí)用戶無(wú)法訪問(wèn)。
2.提前獲取IP代理池的IP列表,直接在防火墻層面進(jìn)行黑客攻擊,可以避免一些高端的問(wèn)題。
3.在Nginx或者代碼級(jí)別把所有常見的爬蟲頭信息都拉黑。據(jù)說(shuō)一些大網(wǎng)站把python中常見的爬蟲頭信息全部黑掉了,增加了基礎(chǔ)爬蟲的代碼成本。
4.高端的反爬蟲就是每隔幾個(gè)小時(shí)就要切換頁(yè)面代碼或者接口數(shù)據(jù)結(jié)構(gòu)。我記得那是個(gè)寶藏。對(duì)于爬蟲來(lái)說(shuō),它可能只是寫這種類型的代碼,然后整個(gè)頁(yè)面代碼和數(shù)據(jù)結(jié)構(gòu)使用一套新的非常高級(jí)的對(duì)策。
5.數(shù)據(jù)加擾:每個(gè)頁(yè)面都有一些加密和解密規(guī)則,或者每個(gè)頁(yè)面都有不同的加擾數(shù)據(jù)。很有可能你抓取的內(nèi)容含有一些虛假數(shù)據(jù)或者加密數(shù)據(jù),這也增加了爬蟲的成本。比如可以在網(wǎng)頁(yè)中添加一些具有相同樣式或名稱的關(guān)鍵隱藏字段,而這些隱藏字段甚至不會(huì)出現(xiàn)在頁(yè)面上,導(dǎo)致爬蟲很難找到關(guān)鍵元素。
從上面可以看出,爬蟲策略不僅僅是使用高質(zhì)量的代理IP,還要根據(jù)目標(biāo)網(wǎng)站反爬策略的實(shí)際分析,制定具體的反爬策略,當(dāng)然是高質(zhì)量的代理IP一定是必不可少。