反蟲與反爬蟲二三事

Santorini 圣托里尼

爬蟲,反爬蟲,反反爬蟲……魔高一尺,道高一丈。無窮無盡的進(jìn)化抗?fàn)幨贰?/p>

入門級反爬蟲:驗(yàn)證一下Headers里面的一些參數(shù),設(shè)定一下訪問IP的閾值等。

中高級反爬蟲:添加驗(yàn)證碼,前端js渲染、異步加載,注冊掃碼登陸填手機(jī)號,投毒,蜜罐等。

次終極反爬蟲:人工智能全流量監(jiān)控。

終極反爬蟲:目前還不知道,如果需要肯定會有。

Headers參數(shù)

  1. user-agent

    這是表明你是一個什么東西,搜索引擎的蜘蛛、用戶的瀏覽器類型等等

  2. referer

    這個表明你的這次請求是來自哪里的。

  3. cookie

    cookie可以說是一個身份的象征,一個cookie可以包含很多信息,而且每一個cookie是和服務(wù)器端的session一一對應(yīng)的。不同的網(wǎng)站反爬的規(guī)則不盡相同,有簡單的,也有難的。如果不允許設(shè)置cookie可能十幾次或者幾十次之后就拒絕訪問了。如果使用代理,可能還要維護(hù)一個ip和cookie對應(yīng)表,同時還要注意cookie的變化以及過期等事情,相當(dāng)麻煩。

代理IP

  1. 偽裝IP

    有的網(wǎng)站可能并不去驗(yàn)證真實(shí)ip,可以在X-Forwarded-For中偽造ip。

  2. 代理IP池

    這部分相對簡單一點(diǎn),網(wǎng)上有大量的免費(fèi)代理,甚至還有api提供,不過既然是免費(fèi)的,你用別人也能用,穩(wěn)定性和速度幾乎不能保障。某寶上各種代理ip,價格在十幾到幾十不等,沒買過,據(jù)說穩(wěn)定性也不太強(qiáng)。

  3. vpn

    相對于代理,vpn具有非常好的穩(wěn)定性,但是更換的過程比較緩慢,所以適用于跟換次數(shù)少,但是網(wǎng)速要求高的。

  4. ADSL撥號

    爬蟲界的大招,成本稍微高點(diǎn),不過ip多-數(shù)萬,速度快,1-10M。缺點(diǎn),更換一次ip大概需要10秒鐘,而且還要設(shè)置好斷線重?fù)?,動態(tài)ip追蹤,遠(yuǎn)程硬件重置等。

  5. Tor

    匿名網(wǎng)絡(luò),該方法的采集速度是比較慢的,一個請求要從美國到俄羅斯到希臘最后再回來..優(yōu)點(diǎn)是絕對的匿名(僅限于反爬蟲)。適用于單獨(dú)請求,網(wǎng)速要求低的情況。

高級

這部分主要是提高獲取數(shù)據(jù)的門檻,登陸不進(jìn)去就無法獲取數(shù)據(jù)、獲得到數(shù)據(jù)卻不容易提煉出數(shù)據(jù)、提煉出數(shù)據(jù)卻包含無效數(shù)據(jù)假數(shù)據(jù),清洗不易;更有甚者讓其進(jìn)入蜜罐。

  1. 驗(yàn)證碼

    這里又將是無盡的抗?fàn)庍M(jìn)化史了。剛開始是純數(shù)字的靜態(tài)圖片,然后稍難一點(diǎn)的數(shù)字加漢字或涉及語義的靜態(tài)圖片,之后靜態(tài)變成動態(tài)的了,然后還有模擬人類行為的手勢操作,非人類的12306驗(yàn)證碼。破解驗(yàn)證碼的技術(shù)也在不斷發(fā)展,最初的人工一個一個,之后接入打碼平臺,到現(xiàn)在興起的人工智能。效率和準(zhǔn)確率不斷提升。

  2. 非人性前端代碼

    前端代碼一點(diǎn)都不是正常人的,簡單一點(diǎn)的把各個數(shù)據(jù)進(jìn)行拆分打亂,并且加入一些無用的數(shù)據(jù),但是顯示給客戶的依然是正常的,有的甚至將數(shù)據(jù)直接換成圖片顯示。像這種對于用戶體驗(yàn)、SEO優(yōu)化來說,簡直沒誰了,像這種殺敵一千自損八百,我是不太贊成的。

  3. js各種神操作

    對于js這一塊,不僅有你想不到的,更有你做不到的。不是有一句話是這么說的嗎:每天一道反爬題,輕輕松松學(xué)前端。簡單的有將數(shù)據(jù)通過js渲染來輸出,有的可能可能通過ajax異步傳輸,并且將數(shù)據(jù)在一個iframe中顯示。什么?你說這個很簡單,通過Selenium+PhantomJS/Chrome,獲取渲染后的頁面即可。我說性能低下,你說沒問題,鑒于PhantomJS的一些Bug,采用Selenium+Chrome+virtualenv,多進(jìn)程、異步等往上堆技術(shù),就可以解決的。那我還說了,通過特征提取,人操作的瀏覽器和Selenium驅(qū)動的headless瀏覽器還是不一樣的,比如說插件數(shù)、語言、WebGL供應(yīng)商和渲染器等等,還有很多刁鉆的,又該如何?不過還真有解決辦法。

  4. 投毒

    這一方面可以做的事情也比較多,可以給他們一些假數(shù)據(jù),就是比較損。

  5. 心理戰(zhàn)

    贏得這場爬蟲與反爬蟲這場戰(zhàn)爭,最好的辦法是不費(fèi)一兵一卒,讓爾等屈服。打打殺殺的多不好,大家都是文化人。沒事互相寫兩行注釋等,套路一下。弄一個蜜罐,你要啥我給你啥還不行嗎,要啥自行車。

次終極

這部分發(fā)展還并不完善(但是一定有在做的),一個是人工智能剛起步,另一個是全流量,每一Bit流量的前世今生都會進(jìn)行監(jiān)控,成本太高。

額外的話:

如果pc端的網(wǎng)頁太難,不妨試試手機(jī)端的,另外還可以看看app端的和微信小程序的。

做人要厚道,別分分鐘幾百萬上下訪問量,慢一點(diǎn),再慢一點(diǎn)。

大家都是程序員,混口飯吃而已。男人何苦為難男人,說不定下一秒你就從反爬蟲變成爬蟲工程師呢。不過說真的,真的沒必要死磕對方。從商業(yè)的角度來說也是這樣的,你擋住了99%的爬蟲就可以了,沒必要花費(fèi)大量的人力物力去啃那1%的硬骨頭,支出和收益不成正比啊。當(dāng)然,不為別的,就為了面子,死磕到底也是可以的。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容