-
1 # GeCoder
-
2 # 你看我獨角獸嗎
大家在爬蟲的時候確實很容易遇到這個問題,因為目前普通網站也沒有什麼好的方案解決爬蟲的方法,秉著寧願殺錯也不放過,一般根據一段時間內ip訪問的頻率來禁止登入網站。
在實際操作中,一般我們有幾個簡單的思路去避免該問題,大大提高爬蟲的效率。
間隔時間爬取這比較容易理解,對爬蟲指令碼的抓取頻率限制來繞過IP限制,儘量模仿人的訪問速率去抓取頁面。一般流程是這樣,先自己手動瀏覽一遍網站,看人工大概需要多少秒完成一次網站瀏覽,然後把這個時間作為最大上限值,透過二分法測試來不斷地壓縮機器爬取時間上限。
多IP代理這個就更加穩定些,而且併發效率高,不用卡爬取的時間上限。只需維護好一個IP池,將爬蟲任務分拆變成很多個子任務給不同的IP去爬取,最終達到高併發爬取的目的。
目前爬蟲常用的多IP方案是動態代理,假設你用這個動態代理去訪問百度, 百度識別出來的IP並不是你的本機IP,而是一個隨機的IP,每次都會變化,也就是說,你只需設定一次代理,就可以得到隨機變化的IP,免去頻繁更換代理的麻煩。
-
3 # Rennes1
代理這方面我寫過原生的,效果不太好,我用了大概300個IP對房天下,但是掛了一晚上也就十萬左右,看日誌大概跑了五六個小時,建議還是看看自己用的框架的手冊,看看代理和多執行緒的實現是怎麼樣的,畢竟產品封裝的要比我們好,基本上都是指定檔案做為IP池就可以,關注一下each,會學到不少東西
-
4 # 路人甲
總的來講,網站的反爬蟲的策略有:檢測爬取頻率、併發連線數目、HTTP請求header包括referer和UserAgent、網站日誌和訪問日誌比對、判定User Agent,IP訪問次數,透過這些資料來檢測這個動態是爬蟲還是使用者個人行為。
其中最常見的就是判斷你的請求頻率和併發數量,如果你在短時間內傳送了大量的請求,也就是你的爬取速度很快的話,那麼他就直接判斷你是爬蟲,這時候先把你IP封了再說,免得給自己的網站帶來負擔。
那麼這些策略我們都如何應對呢?這幾個方法都不同,
我們先理解一下網站的程式碼執行,首先我們向伺服器傳送請求,這時伺服器的後臺php、java都會執行,然後網站程式碼被髮送到本地,在本地時js、ajax會在瀏覽器核心中執行。所以這時候我們就知道,爬蟲不僅要欺騙php java程式碼、還要欺騙js和ajax程式碼。
那麼不同的程式碼就有不同的執行順序,關於這一部分,這個教程給了很好的解釋
(http://blog.csdn.net/wang1144/article/details/39378909)
2、使用代理
爬的太快會被封,是一定的。爬的太慢又非常耗時間。所以很多人都會說可以使用代理,所謂代理就是介於使用者與網站之間的第三者:使用者先將請求發到代理,然後代理再發到伺服器,這樣看起來就像是代理在訪問那個網站了,實現一個不斷的切換IP的假象。網上免費代理很多,但是能用的沒幾個,如果不想購買付費的代理,大家可以學習一下
3、降低訪問頻率
如果一直找不到好用的免費代理,又不想付費,最好的辦法就是降低訪問頻率了。這樣做可以達到與用代理一樣的效果——防止被對方從訪問量上看出來。比如:每抓取一個頁面就休息隨機幾秒、限制每天抓取的頁面數量。當然,在抓取效率上會差很多,因為資料量大的話,時間就會很長。
-
5 # 時空伴隨x
對於我們普通P民來說,防止反爬封IP貌似只有降低爬蟲訪問頻率以達到完全模擬真實使用者訪問的方法。
不過最近我在V站看到有大神開源了一款高效能的的分散式代理IP池,最重要的是“免費”,不要998也不要98,真正的免費+高效能IP代理池,絕對是題主期待的最佳解決方案。
以下是V站大神的測試截圖:
-
6 # 猿茂盛
在爬蟲爬取資料的過程中,時常會被網站禁止訪問可是卻總是找不著原因,這也是讓很多人頭痛的原因,這邊有幾個方面能夠幫你初步檢驗一下究竟是哪裡出了問題。如果你發現你爬取到的資料和頁面正常顯示的資料不一樣,或者說你爬取的是空白資料,那 很有可能是由於網站建立頁的程式有問題;假如爬取頻率高過了網站的設定閥值,就會被禁止訪問,因此爬蟲的開發人員一般要採用兩種方式來處理這個問題:一類是調慢爬取速度,減少對目標網站產生的壓力。可是如此一來會減少單位時間內的爬取量。第二類方法是利用設定代理IP等方式,突破反爬蟲機制繼續高頻率爬取,可是如此一來要很多個穩定的代理IP。芝麻HTTP代理IP,IP海量且高匿,爬蟲工作者能夠放心使用。
-
7 # K哥爬蟲
可以參考:常見的反爬策略及解決方案
還可以:
使用代理IP
ip是上網需要唯一的身份地址,身份憑證,而代理ip就是我們上網過程中的一箇中間介,是由你的電腦先訪問代理ip,之後再由代理ip訪問你點開的頁面,所以在這個頁面的訪問記錄裡留下的是就是代理ip的地址,而不是你的電腦本機ip,如此便能實現“防止自身IP被封禁”。
普通的匿名代理ip能隱藏客戶機的真實ip,但是也會改變我們的請求資訊,伺服器端有可能會認為我們使用了代理。不過使用此種代理時,雖然被訪問的網站不能知道客戶端的ip地址,但仍然可以知道你在使用代理,當然某些能夠偵測IP的網頁仍然可以查到客戶端的ip;
而高度匿名代理請新增連結描述不改變客戶機的請求,這樣在伺服器看來就像有個真正的客戶瀏覽器在訪問它,這時客戶的真實ip是隱藏的.
因此,爬蟲程式需要使用到爬蟲代理ip時,儘量選擇普通匿名代理和高匿名代理。快代理 提供高匿代理ip免費試用。
頻繁切換代理IP
使用代理ip爬取一個網站的大量資料時,會因為頻繁的連線該網站給對方伺服器造成極大的壓力而被對方遮蔽ip,這個時候就需要頻繁的切換代理ip,爬取的資料越多,則需要更多的代理ip。
合理控制爬取頻率
如果爬蟲採集的速度越快,就越容易被發現,也就越容易被封IP。
一般情況,可以對每個頁面抓取之間的延遲設定為最大來控制頻率,這樣不會給伺服器造成負擔,也不會因訪問頻繁被封。但這種方法會導致抓取的速度較慢,如果有大量抓取任務,會嚴重影響效率。
等待時間動態變化,最小的時間間隔減去網頁讀取的時間,這樣無論在網路流暢還是網路較差的時候,網頁都是最小的時間間隔。但這種方法只適合單執行緒的爬蟲小規模網站。
-
8 # qcrbx
在網路上我們不可避免的會遇到網頁的反爬封鎖,所以就有了爬蟲的攻防,在攻和守之間兩股力量不斷的抗衡。接下來就講講使用爬蟲時ip限制問題的方法!
1、IP必須需要,如果有條件,建議一定要使用代理IP。
2、在有網路IP的機器上,部署爬蟲代理伺服器。
3、你的程式,使用輪訓替換代理伺服器來訪問想要採集的網站。
好處:
1、程式邏輯變化小,只需要代理功能。
2、根據對方網站遮蔽規則不同,你只需要新增更多的代理就行了。
3、就算具體IP被遮蔽了,你可以直接把代理伺服器下線就OK,程式邏輯不需要變化。
-
9 # 企師爺
爬蟲怎麼解決封IP的問題?
並不是使用高匿代理IP就不會被封,高匿代理IP只是讓目標網站無法知道你的真實IP,如果爬取的數量過於頻繁,觸發了反爬也是會被封的。
還有一種原因就是你使用的代理IP是萬人騎IP,被人大量地在相同業務上使用過。
可以使用分散式爬蟲,多終端更換IP進行爬取。終端越多,效率越快。
推薦閱讀:杜蕾斯新對手,營銷太野了
雙十一簡訊營銷行為,終於被整治
-
10 # 阿茲緋言沫藺
爬蟲的ip被封是因為現在的技術手段越來越普及了,要想解決爬蟲不被封,難就需要過硬的技術。無非兩種方式:一種社會工程學;社會工程學一般用在服務商上面機會更大。第二種方式:專業術語黑盒測試;你沒有過硬的技術,是無法獲得root的。
當然你錢多的話,動態ip多整點。你要是每天爬來爬去,我怕你錢不夠砸的。況且ip也是有限的。你莫把它搞急眼了,一段一段的來封或者SOS你就玩完了。
回覆列表
爬蟲爬取網站資料的時候,可能會遇到不同型別的ip限制。
1,如果是網站限制了你的ip,那麼可以換一個ip試試。
2,如果是因為爬取資料的頻率過快導致觸發了網站的反爬機制,那麼可以在每次爬取的間隙設定一個隨機的等待時間。
3,如果是因為爬取次數太多被網站封了ip,那麼可以使用ip代理的方式解決問題。