使用爬蟲爬取網站,經常使用的解決IP被封的辦法

咱們常常在開發的過程當中,會編寫一些爬蟲爬取特定網站的數據,爲本身所用。可是問題來了,爬蟲常常會被目標網站封掉IP,這個時候咱們就須要一些額外的手段來解決這種問題了,下面是一些常見的解決辦法。瀏覽器

方法1.
1.IP必須須要明確並且正確,這是前提條件。若是有條件,其實能夠跟機房多申請外網IP。
2.在有外網IP的機器上,部署代理服務器。
3.使用輪訓替換代理服務器來訪問想要採集的網站。
好處:
1.程序邏輯變化小,只須要代理功能。
2.根據對方網站屏蔽規則不一樣,你只須要添加更多的代理就好了。
3.就算具體IP被屏蔽了,你能夠直接把代理服務器下線就OK,程序邏輯不須要變化。
方法2.
有小部分網站的防範措施比較弱,能夠假裝下IP,修改X-Forwarded-for(貌似這麼拼。。。)便可繞過。
大部分網站麼,若是要頻繁抓取,通常仍是要多IP。我比較喜歡的解決方案是國外VPS再配多IP,經過默認網關切換來實現IP切換,比HTTP代理高效得多,估計也比多數狀況下的ADSL切換更高效。
方法3.
ADSL + 腳本,監測是否被封,而後不斷切換 ip
設置查詢頻率限制
正統的作法是調用該網站提供的服務接口。
方法4.
8年多爬蟲經驗的人告訴你,國內ADSL是王道,多申請些線路,分佈在多個不一樣的電信區局,能跨省跨市更好,本身寫好斷線重撥組件,本身寫動態IP追蹤服務,遠程硬件重置(主要針對ADSL貓,防止其宕機),其他的任務分配,數據回收,都不是大問題。個人已經穩定運行了好幾年了,妥妥的!
方法5.
1 user agent 假裝和輪換
2 使用代理 ip 和輪換
3 cookies 的處理,有的網站對登錄用戶政策寬鬆些
友情提示:考慮爬蟲給人家網站帶來的負擔,be a responsible crawler :)
方法6.
儘量的模擬用戶行爲:
一、UserAgent常常換一換;
二、訪問時間間隔設長一點,訪問時間設置爲隨機數;
三、訪問頁面的順序也能夠隨機着來
方法8.
網站封的依據通常是單位時間內特定IP的訪問次數.
我是將採集的任務按 目標站點的IP進行分組 經過控制每一個IP 在單位時間內發出任務的個數,來避免被封.固然,這個前題是你採集不少網站.若是隻是採集一個網站,那麼只能經過多外部IP的方式來實現了.
方法9.
1. 對爬蟲抓取進行壓力控制;
2. 能夠考慮使用代理的方式訪問目標站點。
-下降抓取頻率,時間設置長一些,訪問時間採用隨機數
-頻繁切換UserAgent(模擬瀏覽器訪問)
-多頁面數據,隨機訪問而後抓取數據
-更換用戶IP服務器

相關文章
相關標籤/搜索