北鬥劍陣, 爬蟲IP破封不可阻擋
“人在江湖飄,哪能不挨刀。”話糙理不糙,在我們酣暢淋漓地使用爬蟲抓取 數據為我們所用的時候,卻也能難免遇到強敵,IP遭到封鎖,爬蟲被反。那麽萬一不行,IP被封了,有什麽方法來解呢?
當然有,還很多。
方法1.
之前由於公司項目需要,采集過google地圖數據,還有一些大型網站數據。
經驗如下:
IP必須有,可以直接使用成熟的代理IP服務商,類似像太陽HTTP代理這種。
好處:
1.程序邏輯變化小,只需要代理功能。
2.根據對方網站屏蔽規則不同,你只需要添加更多的代理就行了。
3.就算具體IP被屏蔽了,你可以直接把IP代理下線就OK,程序邏輯不需要變化。
方法2.
有小部分網站的防範措施比較弱,可以偽裝下IP,修改X-Forwarded-for,即可繞過。
大部分網站麽,如果要頻繁抓取,一般還是要多IP。我比較喜歡的解決方案是VPS再配多IP,通過默認網關切換來實現IP切換。
方法3.
ADSL + 腳本,監測是否被封,然後不斷切換 ip
設置查詢頻率限制
正統的做法是調用該網站提供的服務接口。
方法4.
1 user agent 偽裝和輪換
2 使用代理 ip 和輪換
3 cookies 的處理,有的網站對登陸用戶政策寬松些
友情提示:考慮爬蟲給人家網站帶來的負擔,be a responsible crawler :)
方法5.
盡可能的模擬用戶行為:
1、UserAgent經常換一換;
2、訪問時間間隔設長一點,訪問時間設置為隨機數;
3、訪問頁面的順序也可以隨機著來
方法6.
網站封的依據一般是單位時間內特定IP的訪問次數.
我是將采集的任務按 目標站點的IP進行分組 通過控制每個IP 在單位時間內發出任務的個數,來避免被封.當然,這個前題是你采集很多網站.如果只是采集一個網站,那麽只能通過多外部IP的方式來實現了.
方法7.
-
對爬蟲抓取進行壓力控制;
- 可以考慮使用代理的方式訪問目標站點。
總結:
-降低抓取頻率,時間設置長一些,訪問時間采用隨機數
-頻繁切換UserAgent(模擬瀏覽器訪問)
-多頁面數據,隨機訪問然後抓取數據
-使用代理IP不間斷更換
太陽HTTP為您提供海量IP,高度隱匿真實IP。爬蟲行進暢通無阻!
北鬥劍陣, 爬蟲IP破封不可阻擋