爬蟲與反爬蟲,永恆的道高一尺魔高一丈

打從有采集這件事情開始,就有防採集的誕生。

今天,我們就一起來說說這些年遇到的各種防採集策略。

 

1限制IP單位時間訪問次數還有頻率

背景:沒有哪個常人一秒鐘內能訪問相同網站N次(不管是不是同一個網頁)

解決辦法:一般遇到這種情況我們就放緩採集頻率,不管你寫代碼添加Sleep,或者在我們八爪魚裏面設置間隔時間都可以解決

 

進化1:有些高級點的防採集策略,他甚至監控到每個請求的頻率,如果一直處於同一個頻率,比如一秒一次,他也是會封。

解決辦法:這種情況一般就需要我們在採集間隔裏面加上隨機數,每次訪問的頻率相對隨機。

 

進化2:有些更殘忍的防採集策略,他甚至會監控每IP每天或每時段請求網頁的數量。因爲他可以通過數據分析,知道大體上他真實的用戶一般最多會訪問他多少網頁,如果超過,他也照樣封。

解決辦法:這種情況也就只有用多IP或者多服務器來解決了,虛擬出許多不同的終端在訪問,平攤訪問資源。八爪魚在這塊也提供了代理IP池套餐與旗艦版雲服務器集羣來保障。

 

2驗證碼

背景:驗證碼天生就是一個識別你到底是人還是機器的神器

 驗證碼

 

解決辦法:

這一招是被用爛的一招,現在普通的驗證碼,即使加了混淆,都可以通過圖像識別技術給破解了,所以市面就多了好多詭異的驗證碼,最經典的,應該算是12306的驗證碼了吧。但是再複雜的驗證碼,包括那些中文成語,中文加減乘除之類的,都是有破解之法。因爲這世上還有打碼平臺在,就是一種人工幫你輸入驗證碼的平臺。

八爪魚內置支持絕大多數驗證碼的破解,除了少數的一兩種特別極端,現在滿世界還找不到破解之法,其他都支持。

 

3用戶登錄帶COOKIE才能訪問網站內容

背景:通過帳號來限制你訪問的權限

解決辦法

普通的,我們只需要通過八爪魚採集進行登陸操作,只要你能提供相對應的帳號密碼,八爪魚可以進行模擬操作登陸網站,你就可以進去獲取數據了。如果你沒有帳號,那就一點辦法都沒有了。就像IT桔子,你沒帳號,你只能看到前1000條數據。你只有付費購買他們的SAAS帳號,你才能看到更多數據。

 

進化一:即使有帳號也不管用

解決辦法

就像京東的評論,你只能看到最新的1000條。這種時候就必須用上八爪魚的定時採集,我們進行某種頻率的監控,一有新數據就馬上採集下來,保持跟進,保持積累。

 

4利用JS加密網頁內容

背景:通過瀏覽器的JS運算出網頁內容結果

解決辦法

這種招術,在對付HTTP POST請求的時候,是一種增加複雜度與難度的招術。但是八爪魚天生就是對抗這種,八爪魚內置瀏覽器訪問網頁數據,在打開網頁的時候就會去執行JS調用代碼獲取數據,然後再解析網頁數據。所以自帶JS運算,輕輕鬆鬆就把這種給繞過去了。

而一般通過代碼或HTTP請求模式的爬蟲技術,是怎麼繞都繞不開這種,而通過寫代碼進行採集的同學,他必須把JS加密給破解了。

 

5鏈接隨機化

背景:網站頁面鏈接隨機化,同一個頁面有多個鏈接或根據不同情況生成鏈接

解決辦法:這種情況,一般要求我們從源頭開始訪問,模擬人訪問,比如從首頁,進入到列表,再到內容頁。他內頁鏈接隨機化,首頁地址總不能隨機吧。這種只要以不變應萬變,即可破解。

 

進化1:利用腳本生成分頁地址

解決辦法:這種情況,在八爪魚瀏覽器面前,也是一點效力都沒有。因爲八爪魚是一種模擬人的操作,除非他生成的分頁地址不是要給人訪問的,要不,照樣採。

 

6網頁裏面增加混淆不可見元素

背景:常規的網頁數據解析爲結構化數據,均是通過字符串定位與正則表達式匹配。所以增加混淆代碼或文字,增加你破解的難度,給你增加麻煩。筆者曾見過某網頁解析出來的時候寫着:”不要採,不要採,再採我就又得被叼了“

解決辦法:因爲八爪魚主要還是能通過XPATH定位的方式,這種小技倆在XPATH面前,輕鬆就被繞開了。大不了我們再用字符串替換,把一些混淆的字符段通過某種規則給替換掉即可。畢竟網頁開發者留下混淆代碼也是遵循某種規律留下的。

 

7網站隨機出現模板

背景:增加採集難度,同一類頁面,但是多種模板展現

解決辦法:這種情況主要是耐心點,筆者見過分頁列表頁面,單數頁是一種模板,雙數頁是另外一種,或者常規是一種,逢10就另外一種。這種就需要我們在一開始採集的時候,觀察清楚。但這種又很好觀察,一般換了模板,我們就採不到數據。

不可能同一模板,前面一頁採得好好的,後面一頁就不行了。多數是出現在模板不一致導致的。八爪魚內置判斷邏輯,你可以通過頁面不同的特徵,引導八爪魚用不一樣的解析來破解。

 

8人工智能防採集

背景:互聯網99.9%以上的防採集措施,估計來來回回就這一些招吧,但是另外那0.01%,纔是讓人費勁的。像某些大公司,有專門的人工智能防採集團隊。

他們可以通過識別你的網絡請求,不管是走瀏覽器,還是走請求的方式,只要你訪問他們網站的軌跡,不像是一般用戶訪問的軌跡,或絕大多數用戶的軌跡,他們都會進行一些防採集的策略,比如增加驗證碼,或出現假數據等等。

解決辦法:這種時候就要求我們,更加像”人“的操作一樣,去進行採集。比如我們一般會先訪問首頁,然後點點一些位置,拖拉一下,然後再進行列表頁,再看一看,再進入詳情頁等等。這些摸擬人的操作,均可通過八爪魚完成,包括自動下拉多少屏,停留時間,鼠標停留位置等等。

 

進化一:建立黑IP池

些大型公司,還會建立黑IP池,一旦是池子裏的IP進行訪問,馬上拒絕。這一般是出現在境外IP,或一些機房IP,說白就是已經被用爛的IP了。而這時候,優質的代理IP資源,就顯得特別寶貴了。

 

                                                     

在筆者看來,採集與防採集,永遠都是一個矛盾的問題,無法說絕對採集到,或絕對採集不到。在這一行當裏面,真正考究的是採集成功與收益的問題,比如說增加驗證碼,IP等方式,均是需要一定的開銷開本,特別在大數據量面前,這個成本有時是非常巨大的。

而網站方,也是通過這一點,來增加你的採集難度採集成本,從而達到一個相對平衡可控的範圍。筆者經手過的項目,有些項目每年需要花費上百萬的IP或驗證碼成本纔可獲取到想要的數據,八爪魚能做到的是,以相對較低的成本,幫你獲取到你想要的數據,而不是0成本。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章