爬蟲是構建大數據平臺的基礎。它負責抓取網頁信息,對網頁進行識別、分類和過濾。我們熟悉的電子商務、搜索、新聞以及各大門戶網站,每天都有強大的爬蟲集群在高負載下運行。他們“和諧”地聚集在一起,從新聞和新聞中學習。他們盡最大努力搜索和優化網絡信息,各大研究機構盡最大努力建立數據集。
然而,各大網站都不給爬行者喘息的機會,讓他們為所欲為。畢竟內容的價值在任何時候都是顯而易見的,所以爬行者和反爬行者之間有混戰。
在與爬行者對爬行者的攻防戰中,沒有一刻可以放松。為了制定反爬行網站的反爬行策略,你必須根據爬蟲的特點選擇一個計劃。爬蟲的特點是什么?腳本+自動化。因此,反對攀登的破壞性動作不超過兩種:
首先,非腳本訪問=》瀏覽器真實性檢測。
第二,非自動訪問=>訪問用戶的真實性檢測。
由于其運行環境和工作原理,瀏覽器會帶來一些獨特的屬性:有協議協商頭和可執行的JavaScript代碼段。然后基于瀏覽器的真實性檢測,構建了第一個抵抗爬行者的堡壘。
反爬蟲黨在活動之初就率先提供了用戶代理、內容類型、應用程序、我接受編碼、接受語言、x-forward-for、referer等頭格。第一批標題與普通瀏覽器不同的爬蟲一個接一個地被觸發,瞬間死亡。然而,這種爬行動物并不是吃素的。他們用一個巧妙的詭計來逃避真相,并通過鍛造計價器頭迅速突破了防線。
反爬蟲一點也不驚慌,在html中添加了一個JavaScript腳本。因為他的瀏覽器提前知道地雷的位置,所以可以安全地繞過它,而不影響正常的網頁顯示。然而,爬行者并不知道,一個接一個地被抓,被打死或受傷。直到大殺手Node.js出現之前,JavaScript都可以直接執行。爬行者終于反擊了,又贏了一場勝利。
反爬行者沒有考慮其他問題,他們用迷宮般的“單頁應用程序”防御了他們的堡壘。然而,由于單頁面應用的巧妙結構,爬蟲使出了渾身解數,卻無法分析出任何數據,一籌莫展。單頁應用程序在戰場上占據主導地位。反登山者開始了一場片面的屠殺,爬蟲的士氣被摧毀了。
終于,這場戰斗的終結者出現了。他是無頭鉻技術。新技術一出現,爬蟲軍的武庫就煥然一新:硒元素、傀儡大師、幻影JS、卡斯珀JS等重型攻城殺手不斷取得成績,反爬行者則是拒人于千里之外。爬蟲軍終于在第一場戰役中取得了勝利。
得益于無頭Chrome的出現,反爬蟲在瀏覽器識別戰中立于不敗之地。但勝敗乃兵家常事。東方不亮西方亮。在數據防御的關鍵時刻,防爬蟲意外地發現了一個現象。雖然瀏覽器很難識別,但人性是貪婪的。人類可以做很多腳本做不到的事情。即使是人的行為也有固定的規則。就這樣,反爬隊員們苦干了很久,終于再次踏上了戰場。
第一道防線直接指向爬蟲的關鍵——貪婪(訪問頻率)。這種每秒10次的高頻訪問請求怎么會發生在一個人身上呢?爬蟲們不得不大幅度降低攻擊頻率,反爬蟲們終于松了一口氣。
第二道防線的目標是爬蟲的痛點-懶惰(固定IP)。最近,同一個IP發出了數百個請求,因為如此,爬蟲必須付出巨大的代價來購買代理IP。即便如此,反爬蟲仍然可以通過阻止公共IP地址來關閉大量的代理IP地址。經過反爬隊的精心操作,敵人的攻勢逐漸有效地被削弱了。