爬蟲訪問中,如何解決網站限制IP的問題?


8年多爬蟲經驗的人告訴你,國內ADSL是王道,多申請些線路,分布在多個不同的電信區局,能跨省跨市更好,自己寫好斷線重撥組件,自己寫動態IP追蹤服務,遠程硬體重置(主要針對ADSL貓,防止其宕機),其餘的任務分配,數據回收,都不是大問題。我的已經穩定運行了好幾年了,妥妥的!


有小部分網站的防範措施比較弱,可以偽裝下IP,修改X-Forwarded-for(貌似這麼拼。。。)即可繞過。

大部分網站么,如果要頻繁抓取,一般還是要多IP。我比較喜歡的解決方案是國外VPS再配多IP,通過默認網關切換來實現IP切換,比HTTP代理高效得多,估計也比多數情況下的ADSL切換更高效。

國外IP均價是$1/IP/Month,像Burst等賣得便宜些,0.3刀左右。

最後,最簡單最根本也最厚道的防封禁方法是,把抓取頻率降低些。。。


儘可能的模擬用戶行為:

1、UserAgent經常換一換;

2、訪問時間間隔設長一點,訪問時間設置為隨機數;

3、訪問頁面的順序也可以隨機著來


之前由於公司項目需要,採集過google地圖數據,還有一些大型網站數據。

經驗如下:

1.IP必須需要,像@alswl 說的非常正確,ADSL。如果有條件,其實可以跟機房多申請外網IP。

2.在有外網IP的機器上,部署代理伺服器。

3.你的程序,使用輪訓替換代理伺服器來訪問想要採集的網站。

好處:

1.程序邏輯變化小,只需要代理功能。

2.根據對方網站屏蔽規則不同,你只需要添加更多的代理就行了。

3.就算具體IP被屏蔽了,你可以直接把代理伺服器下線就OK,程序邏輯不需要變化。


提供幾個思路:

1:曾經我用過幾十個Goagent賬號做代理爬淘寶數據,或許你可以買幾十個vpn賬號做代理。

2:用家用電腦做爬蟲機器,用你家裡的電腦做伺服器 , 以前寫的一篇文章,通過一些設置,是可以從外網訪問到你的家用電腦的。當然穩定性可能不太好,估計需要做更多的開發才能保證可靠。然後可以將代碼部署到樹莓派上,如果是大點的公司的話,每個員工幫幫忙,帶回家部署上,估計就夠了


解決辦法

1代理ip

2改變訪問頻率

3識別驗證碼

4瀏覽器插件

5混合

1現在網上有很多賣代理ip的 他們也提供一些免費的代理ip但是都不太好用

如果你家裡用的是寬頻 那你就把路由器重啟一下這樣你也可以得到一個新的ip

如果有些網站是針對用戶名來反爬的話就沒用

2改變訪問頻率 訪問時間隨機 這樣做只是要讓對方的反爬以為是人在訪問

如果要求事實行高的話就不行了

3對一些需要輸入驗證碼來驗證的情況 前提你得學習怎麼識別驗證 像12306的驗證碼也只能人工識別

但是對方如果換一套驗證碼 你又得重新學習一下 還有驗證碼識別的難易程度都不一樣

4

寫一個模仿人正常訪問網站的瀏覽器插件

但是遇到驗證碼也白搭 還有速度也不是很快

5完全消除這些限制就需要 混合所有的方法

限制賬號就使用多用戶 登陸成功後維護一個cookie隊列 限制ip就使用代理ip

每個賬號至少擁有兩個ip

這樣就能切換使用了

然後每個頁面之間如果沒有前後聯繫 那麼就用不同的cookie去訪問

如果遇到了驗證碼那就用識別吧 只要不是類似12306網站的驗證碼其他的驗證碼還是可以識別出來的


不用自己做,直接買吧,http://api.datastory.com.cn


  • ADSL + 腳本,監測是否被封,然後不斷切換 ip
  • 設置查詢頻率限制

正統的做法是調用該網站提供的服務介面。


總結下:

-降低抓取頻率,時間設置長一些,訪問時間採用隨機數

-頻繁切換UserAgent(模擬瀏覽器訪問)

-多頁面數據,隨機訪問然後抓取數據

-更換用戶IP

-網站提供API,減少風險

-多線程


我一般是先構建出來一個可用的代理伺服器池,然後每次訪問時從裡面挑一個可用的進行連接,這樣把訪問均勻分布可以大大降低被block的幾率,而且可以隨時更新不可用的代理伺服器。

感興趣的可以去我以前寫的一段腳本上看一下:

kapythone/ProxyFactory · GitHub


用Tor啊!


如果你的項目比較複雜,對穩定性、可靠性、效率要求高的話,可參考一下我們的一個項目:

Distributed Socks5 (ds5)

一般玩玩 可以寫個爬蟲 專門爬代理


我試過兩種方法。

最早是想通過代理,買一些代理IP,不停的換,後來發現這條路不太好走,兩個原因,一是你能找到的免費代理IP幾乎都不能用,付費的IP錢是花了,也不是很穩定。

後來就用ADSL了,這個辦法有個不好的地方就是他要斷網,再撥號,斷網過程爬蟲是空跑的,如果你對數據實時性要求特別高,需要好好規劃一下程序。

ADSL另一個不好的地方是伺服器廠商似乎都是小作坊,不穩定,找到一個秒拔秒變,又長期穩定的合作夥伴也是很重要的。

謝謝,歡迎交流。


直接了當的方法有幾種:

  1. 直接淘寶上夠動態ADSL,撥一次換一個IP
  2. 買代理IP,不要用免費的,不穩定,時效短
  3. 偽造x forwarded for頭信息(比較低級,騙騙小朋友可以的)

主要是還多研究下目標網址的反爬蟲策略。


現在有動態IP的業務,就IP全國連一次斷一次。加我qq303347204 可以一起交流一下。


最快速便捷的方法還是找到穩定的代理ip,衝破目標網站的封鎖。

不過目前網上很多免費的代理ip,數量是很大,但是都不穩定,一點都不利於工作。

還是訊代理的獨享代理這樣的比較靠譜


我在爬https的網站 目前登錄顯示 網頁存在重複跳轉。讓我清cookie,清了也沒法用,用chrome的匿名模式依舊無法打開。這姑且算是網站封了我。

問題是我用手機上4g網路,也打不開!這個是什麼神奇的情況。。。。難不成還能智能識別我的手機號。。。請求雖然https但不需要登錄

找了個在線代理也打不開。。。。

誰遇到過類似情況。。。


也不知採用切換IP的方式靠譜不,目前也在考慮這方面的技術實現

過來學學經驗,順便問題樓主用的什麼爬蟲軟體


1. 對爬蟲抓取進行壓力控制;

2. 可以考慮使用代理的方式訪問目標站點。


選用靠譜穩定的代理,定期研究規律更換ip,代理flyvpn推薦給你


買代理IP吧 ,簡單易用


網站封的依據一般是單位時間內特定IP的訪問次數.

我是將採集的任務按 目標站點的IP進行分組 通過控制每個IP 在單位時間內發出任務的個數,來避免被封.當然,這個前題是你採集很多網站.如果只是採集一個網站,那麼只能通過多外部IP的方式來實現了.


代理伺服器


推薦閱讀:

八爪魚採集器能取代python爬蟲嗎?

TAG:互聯網 | 搜索 | 信息技術IT | 計算機網路 | 數據採集 | 爬蟲計算機網路 | 網頁抓取 |