爬蟲行動被限制,改換ip只是其中一個辦法

爬蟲行動被限制,改換ip只是其中一個辦法
知己知彼百戰不殆,對於競爭對手或者目標消費羣體的數據收集,我們樂此不疲。在ip代理盛行的今天,爬蟲技術已經可以被我們充分發揮,海量收集數據,毫不手軟。如果不用代理ip,我們的爬蟲行動往往會受到很多限制,以致最終被完全封鎖掉。有什麼方法能避免呢?往下看。

1.驗證碼
我們在很多網站會遇到,如果請求量大了之後就會遇到驗證碼的情況。最讓人詬病的12306,其實也是一定程度上的防止非正當請求的產生。
對於驗證碼,可以通過OCR來識別圖片,Github上面有很多大神分享的代碼可以用,可以去看看。

2.Headers限制
這應該是最常見的,最基本的反爬蟲手段,主要是初步判斷你是否是真實的瀏覽器在操作。
這個一般很好解決,把瀏覽器中的Headers信息複製上去就OK了。
值得注意的是,很多網站只需要userAgent信息就可以通過,但是有的網站還需要驗證一些其他的信息,比如知乎,有一些頁面還需要 authorization 的信息。所以需要加哪些Headers,還需要嘗試,可能還需要Referer、Accept-encoding等信息。

3.返回僞造的信息
這個真的是程序員何苦爲難程序員。反爬蟲的工程師也是煞費苦心,一方面是不讓真實的數據被大規模爬取,另一方面也給你後期的數據處理增加負擔。如果數據僞造的好,可能你真的不容易發現自己爬的是假數據,當然只能依靠你後期去清洗這些數據了。

4.減少返回的信息
最基本的隱藏真實的數據量,只有不斷加載才能刷新信息。還有的就更變態,會只給你展示一部分信息,人都看不到,爬蟲也無能爲力。比如CNKI,你每次搜索能夠得到的內容就是非常有限的。這個貌似沒有很好的解決辦法,但是這麼幹的網站畢竟是少數,因爲這種方式,其實在某種程度上是犧牲了一部分真實用戶的體驗。

5.動態加載
通過異步加載,一方面是爲了反爬蟲,一方面也可以給網頁瀏覽帶來不同的體驗,實現更多的功能。很多動態網站都是通過ajax或者JavaScript來加載請求的網頁。
在遇到動態加載的網頁的時候就需要去分析ajax請求,一般情況都能直接找到包含我們想要數據的json文件。
如果網站給文件加密,那麼可以通過selenium+phantomJS框架,調用瀏覽器內核,並利用phantomJS執行js來模擬人爲操作以及觸發頁面中的js腳本。理論上selenium是比較全能的爬蟲方案,因爲這個確實算是真實的用戶行爲。除非網站的反爬蟲嚴苛到寧願誤殺的地步。

6.IP限制
限制IP也是很多網站反爬蟲的初衷,有些人隨便寫一個循環,就開始暴力爬取 ,確實會給網站服務器帶來很大的負擔,而這種頻繁的訪問,顯然也不會是真實用戶行爲,索性果斷把你封掉。
這種情況,你可以遵守規則,把你爬取的速度變慢,每次爬取停個幾秒就行了。
time.sleep(5)1
當然,你也可以通過不斷換IP的形式來繞過這種限制,網上很多免費的IP資源,你可以自己搭一個IP池,爬到一定的量就切換IP。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章