說爬蟲和反爬蟲之間的那些事!爬蟲是搭建大數(shù)據(jù)平臺的基礎(chǔ),負責抓取網(wǎng)頁信息,對網(wǎng)頁進行識別、分類和過濾。我們熟悉的電商、搜索、新聞以及各大門戶網(wǎng)站,每天都有強大的爬蟲集群在高負荷運行。他們“和諧地”互相聚合,從新聞和新聞中學習。他們盡最大努力搜索和優(yōu)化網(wǎng)頁信息,各大研究機構(gòu)盡最大努力構(gòu)建數(shù)據(jù)集。
但是,各大網(wǎng)站不給爬蟲喘息的機會,讓它為所欲為。畢竟內(nèi)容的價值在任何時候都是顯而易見的,所以才有了爬蟲和反爬蟲的混戰(zhàn)大戲。
沒有一刻放松與爬行者對爬行者的攻防戰(zhàn)。反爬網(wǎng)站要制定反爬策略,就要根據(jù)爬蟲的特點來選擇方案。爬蟲有什么特點?腳本+自動化。因此,反對攀爬的毀滅性舉動不超過兩種:
首先,非腳本訪問= >瀏覽器真實性檢測。
第二,非自動化訪問= >訪問用戶的真實性檢測。
由于其運行環(huán)境和工作原理,瀏覽器會帶來一些獨特的屬性:有協(xié)議協(xié)商的頭,有可執(zhí)行的JavaScript代碼片段。然后基于瀏覽器的真實性檢測,構(gòu)建防爬黨的第一道堡壘。
反爬蟲黨在競選之初,率先提供了user-agent、content-type、application、I accept-encoding、accept-language、x-forwarded-for、referer等頭部電網(wǎng)。第一批不同于正常瀏覽器標題的爬蟲相繼觸發(fā),瞬間死亡。然而,這種爬行動物不是吃素的!他們用了一招巧妙的瞞天過海的招數(shù),通過偽造表頭迅速突破防線!
反爬者一點也不慌張,在html里加了一個JavaScript腳本礦。因為他的瀏覽器提前知道了地雷的位置,所以可以安全繞過,不影響正常的網(wǎng)頁顯示。然而爬行者并不知情,接連被抓,或殺或傷。直到大殺器Node.js出現(xiàn),JavaScript才可以直接執(zhí)行。爬行者終于奮起反擊,再下一城!!
反爬者未能另作打算,用“單頁應(yīng)用”的迷宮防御重鑄堡壘。而爬蟲卻因單頁應(yīng)用的巧妙構(gòu)造,使盡渾身解數(shù)卻分析不出任何數(shù)據(jù),手足無措。單頁應(yīng)用程序主宰了戰(zhàn)場!反攀登者開始了單方面的屠殺,爬行動物的士氣被摧毀了…...
終于,這場戰(zhàn)斗的終結(jié)者出現(xiàn)了。他是無頭鉻技術(shù)!新技術(shù)一出現(xiàn),爬蟲軍的兵工廠煥然一新:硒元素、傀儡師、幻影JS、CasperJS等重型攻城殺手不斷建功,反爬者潰千里。爬蟲終于鎖定了首戰(zhàn)的勝利!
由于無頭Chrome的出現(xiàn),反爬者在瀏覽器識別之戰(zhàn)中所向披靡。但勝敗乃兵家常事,東方不亮西方亮。在數(shù)據(jù)防御的關(guān)鍵時刻,反爬者意外發(fā)現(xiàn)了一個現(xiàn)象。雖然瀏覽器很難識別,但是人性是貪婪的!人類可以做很多腳本做不到的事情!連人的行為都有固定的規(guī)則!就這樣,反攀登者努力了很久,終于再次踏上了戰(zhàn)場!這場戰(zhàn)斗的制高點是靈魂和哲學的雙層拷問:“你到底是不是人?”
第一道防線直指爬蟲的關(guān)鍵——貪婪(訪問頻率)!這種每秒10次的高頻訪問請求怎么會發(fā)生在一個人類身上,剁!爬行者不得不大幅降低攻擊頻率,反爬者終于松了一口氣。
第二道防線直指爬蟲的痛點——懶惰(固定IP)!最近,數(shù)百個請求從同一個IP發(fā)出。世界上怎么會有這么無聊的人?砍!正因如此,爬蟲不得不付出巨大的代價購買代理ip。即便如此,反爬蟲仍然可以通過屏蔽公網(wǎng)IP的方式關(guān)閉大量代理地址。經(jīng)過反爬黨的精心運作,敵人的攻勢被逐漸有效地削弱了。
就這樣,爬蟲和反爬蟲的斗爭還在繼續(xù),誰也不會認輸。有時候反爬蟲策略升級,爬蟲策略也會升級。