目前常見的Web反采集策略大概有以下幾種:
- 1)數據加密;
- 2)限制訪問頻率;
- 3)數據以非文本形式展現;
- 4)驗證碼保護;
- 5)Cookie驗證;
本文主要探討一下如何突破”限制訪問頻率”:
“限制訪問頻率”的原理:
服務器端程序(例如,WAF)維護了一個客戶端(IP)的訪問計數,如果客戶端(IP)請求頻率超過閾值,請求就會被攔截,通常會出現下列情形:
- 1)最常見的:返回403或503錯誤。
- 2)連接被重置。
- 3)最令人頭疼的:返回無效的內容
突破方法:
- 1)使用HTTP代理。因為服務端是根據IP進行限制的,通過使用代理就可以將下載量平均到多個IP上。需要注意的是透明代理往往是無效的,因為WAF能夠檢測到真實的源IP,所以要使用隱秘(secret)代理。
- 2)增加請求延遲。比如,WAF限制單IP請求頻率不能超過20次/分鐘,我們可以在兩次請求之間增加5S的延遲,這樣下載頻率就是12次/分鐘,就不會被攔截了。
通常我們會將1)和2)的方法結合,這樣即能防止被攔截,又能加快采集速度。例如,使用10個代理,每次下載增加5S延遲,一分鐘的實際下載量就是:120次。 - 3)利用搜索引擎緩存(Google,Bing,百度)?!扒€救國”策略,繞過目標服務器,從搜索引擎的緩存進行采集。而且緩存里的頁面的結構和原頁面是一樣的,不用重寫提取規則。
- 4)谷歌翻譯。讓谷歌作為我們的“代理”,將源語言和目標語言都設置成一樣,這樣從谷歌翻譯結果獲取的數據和原頁面就是一樣的(注意,HTML結構有很大變化,需要重寫提取規則)。
- 5)對于返回無效內容的情況,一定要找到檢測內容是否有效的方法,否則很難保證所有數據都是正確的。