爬蟲 解決網頁ip限制的問題的八種方法


方法1.

之前由於公司項目需要,采集過google地圖數據,還有一些大型網站數據。
經驗如下:

  • 1.IP必須需要,像@alswl 說的非常正確,ADSL。如果有條件,其實可以跟機房多申請外網IP。
  • 2.在有外網IP的機器上,部署代理服務器。
  • 3.你的程序,使用輪訓替換代理服務器來訪問想要采集的網站。

好處:

  • 1.程序邏輯變化小,只需要代理功能。
    • 2.根據對方網站屏蔽規則不同,你只需要添加更多的代理就行了。
    • 3.就算具體IP被屏蔽了,你可以直接把代理服務器下線就OK,程序邏輯不需要變化。

方法2.

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

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


方法3.

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

    
    
   
   
           
  • 1
  • 2

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


方法4.

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


方法5.

1 user agent 偽裝和輪換
2 使用代理 ip 和輪換
3 cookies 的處理,有的網站對登陸用戶政策寬松些

友情提示:考慮爬蟲給人家網站帶來的負擔,be a responsible crawler :)


方法6.

盡可能的模擬用戶行為:
1、UserAgent經常換一換
2、訪問時間間隔設長一點,訪問時間設置為隨機數;
3、訪問頁面的順序也可以隨機着來


方法7.

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


方法8.

  1. 對爬蟲抓取進行壓力控制;
  2. 可以考慮使用代理的方式訪問目標站點。

-降低抓取頻率,時間設置長一些,訪問時間采用隨機數
-頻繁切換UserAgent(模擬瀏覽器訪問)
-多頁面數據,隨機訪問然后抓取數據
-更換用戶IP

				<script>
					(function(){
						function setArticleH(btnReadmore,posi){
							var winH = $(window).height();
							var articleBox = $("div.article_content");
							var artH = articleBox.height();
							if(artH > winH*posi){
								articleBox.css({
									'height':winH*posi+'px',
									'overflow':'hidden'
								})
								btnReadmore.click(function(){
									articleBox.removeAttr("style");
									$(this).parent().remove();
								})
							}else{
								btnReadmore.parent().remove();
							}
						}
						var btnReadmore = $("#btn-readmore");
						if(btnReadmore.length>0){
							if(currentUserName){
								setArticleH(btnReadmore,3);
							}else{
								setArticleH(btnReadmore,1.2);
							}
						}
					})()
				</script>
				</article>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM