1. 程式人生 > >抓取微博數據,如何防護爬蟲被墻

抓取微博數據,如何防護爬蟲被墻

很多 代理 換ip setting 最簡 cookies 麻煩 獲取ip 客戶

大數據時代下,數據采集推動著數據分析,數據分析推動發展。但是在這個過程中會出現很多問題。拿最簡單最基礎的爬蟲采集數據為例,過程中就會面臨,IP被封,爬取受限、違法操作等多種問題,所以在爬去數據之前,一定要了解好預爬網站是否涉及違法操作,找到合適的代理IP訪問網站等一系列問題。
下面分享一些爬取微博數據時,防太陽HTTP止爬蟲被墻的幾個技巧,希望對您有所幫助。

技巧一:分布式爬取
分布式爬取的也有很多Githubrepo。原理主要是維護一個所有集群機器能夠有效分享的分布式隊列。?
使用分布式爬取還有另外一個目的:大規模抓取,單臺機器的負荷很大,況且速度很慢,多臺機器可以設置一個master管理多臺slave去同時爬取。?

另外關於網頁判重問題,可以用Bloom Filter。

技巧二:設置cookies
cookie其實是儲存在用戶終端的一些被加密的數據,有些網站通過cookies來識別用戶身份,如果某個訪問總是高頻率地發請求,很可能會被網站註意到,被嫌疑為爬蟲,這時網站就可以通過cookie找到這個訪問的用戶而拒絕其訪問。?
可以自定義設置cookie策略(防止cookie rejected問題:拒絕寫入cookie)或者禁止cookies。?
(1) 自定義設置cookies策略(防止cookierejected問題,拒絕寫入cookie)?
在系列一那篇文章裏就有自定義cookie策略設置,但更多的借鑒是官方文檔的例子,設置方法其實都大同小異,因為HttpClient-4.3.1組件版本跟以前舊版本的不同,寫法也有不同,另見官方文檔:http://hc.apache.org/httpcomponents-client-4.3.x/tutorial/html/statemgmt.html#d5e553?

(2) 禁止cookies?
通過禁止cookie,這是客戶端主動阻止服務器寫入。禁止cookie可以防止可能使用cookies識別爬蟲的網站來ban掉我們。?
在scrapy爬蟲中可以設置COOKIES_ENABLES= FALSE,即不啟用cookies middleware,不向web server發送cookies。

技巧三:修改IP
其實微博識別的是IP,不是賬號。也就是說,當需要連續抓取很多數據的時候,模擬登錄沒有意義。只要是同一個IP,不管怎麽換賬號也沒有用,主要的是換IP。?
web server應對爬蟲的策略之一就是直接將IP或者整個IP段都封掉禁止訪問,當IP被禁封後,轉換到其他IP繼續訪問即可。方法:代理IP、本地IP數據庫(使用IP池)。?

(1) 從代理IP網站獲取大量IP?
如果總是請求代理IP站點也未免有些麻煩,況且某些代理IP站點有時還可能被禁封,當然再換一個代理IP站點也可以,如果你不嫌麻煩的話。?
(2) 使用IP地址庫?
網上也有很多現成可用的IP地址庫,可以存放到本地,如果本地有IP數據庫就方便很多,至少不用每次都去請求代理IP站點了(當然可以一次性把站點內所有代理IP先爬下來存儲好,形成本地IP數據庫),總之獲取IP的方法有很多,不一定非要是通過代理IP站點。
道理相同,把IP解析出來就可以用了。

技巧四:修改User-Agent
最常見的就是偽裝瀏覽器,修改User-Agent(用戶代理)。?
User-Agent是指包含瀏覽器信息、操作系統信息等的一個字符串,也稱之為一種特殊的網絡協議。服務器通過它判斷當前訪問對象是瀏覽器、郵件客戶端還是網絡爬蟲。在request.headers裏可以查看user-agent,關於怎麽分析數據包、查看其User-Agent等信息,這個在前面的文章裏提到過。?
具體方法可以把User-Agent的值改為瀏覽器的方式,甚至可以設置一個User-Agent池(list,數組,字典都可以),存放多個“瀏覽器”,每次爬取的時候隨機取一個來設置request的User-Agent,這樣User-Agent會一直在變化,防止被墻。

技巧五:設置下載等待時間/下載頻率
大規模集中訪問對服務器的影響較大,爬蟲可以短時間增大服務器負載。這裏需要註意的是:設定下載等待時間的範圍控制,等待時間過長,不能滿足短時間大規模抓取的要求,等待時間過短則很有可能被拒絕訪問。?
(1) 在之前“從url獲取HTML”的方法裏,對於httpGet的配置設置了socket超時和連接connect超時,其實這裏的時長不是絕對的,主要取決於目標網站對爬蟲的控制。?
(2) 另外,在scrapy爬蟲框架裏,專有參數可以設置下載等待時間download_delay,這個參數可以設置在setting.py裏,也可以設置在spider裏。

太陽HTTP海量IP,高效快速,給您更好的爬蟲操作體驗!

抓取微博數據,如何防護爬蟲被墻