破解反爬蟲機制的幾種方法

1. 什麼是爬蟲和反爬蟲?

  • 爬蟲:使用任何技術手段,批量獲取網站信息的一種方式。
  • 反爬蟲:使用任何技術手段,阻止別人批量獲取本身網站信息的一種方式。

2. 常見的反爬蟲機制

  • 經過UA 識別爬蟲 有些爬蟲的UA是特殊的,與正常瀏覽器的不同,可經過識別特徵UA,直接封掉爬蟲請求
  • 設置IP訪問頻率,若是超過必定頻率,彈出驗證碼 若是輸入正確的驗證碼,則放行,若是沒有輸入,則拉入禁止一段時間,若是超過禁爬時間,再次出發驗證碼,則拉入黑名單。固然根據具體的業務,爲不一樣場景設置不一樣閾值,好比登錄用戶和非登錄用戶,請求是否含有refer。
  • 經過併發識別爬蟲 有些爬蟲的併發是很高的,統計併發最高的IP,加入黑名單(或者直接封掉爬蟲IP所在C段)
  • 請求的時間窗口過濾統計 爬蟲爬取網頁的頻率都是比較固定的,不像人去訪問網頁,中間的間隔時間比較無規則,因此咱們能夠給每一個IP地址創建一個時間窗口,記錄IP地址最近12次訪問時間,每記錄一次就滑動一次窗口,比較最近訪問時間和當前時間,若是間隔時間很長判斷不是爬蟲,清除時間窗口,若是間隔不長,就回溯計算指定時間段的訪問頻率,若是訪問頻率超過閥值,就轉向驗證碼頁面讓用戶填寫驗證碼
  • 限制單個ip/api token的訪問量 好比15分鐘限制訪問頁面180次,具體標準可參考一些大型網站的公開api,如twitter api,對於抓取用戶公開信息的爬蟲要格外敏感
  • 識別出合法爬蟲 對http頭agent進行驗證,是否標記爲、百度的spider,嚴格一點的話應該判別來源IP是否爲、baidu的爬蟲IP,這些IP在網上均可以找到。校驗出來IP不在白名單就能夠阻止訪問內容。
  • 蜜罐資源 爬蟲解析離不開正則匹配,適當在頁面添加一些正常瀏覽器瀏覽訪問不到的資源,一旦有ip訪問,過濾下頭部是否是搜素引擎的蜘蛛,不是就能夠直接封了。好比說隱式連接。

3. 破解反爬蟲機制的幾種方法

  • 策略1設置下載延遲,好比數字設置爲5秒,越大越安全
  • 策略2禁止Cookie,某些網站會經過Cookie識別用戶身份,禁用後使得服務器沒法識別爬蟲軌跡
  • 策略3使用user agent池。也就是每次發送的時候隨機從池中選擇不同的瀏覽器頭信息,防止暴露爬蟲身份
  • 策略4使用IP池,這個須要大量的IP資源,能夠經過抓取網上免費公開的IP建成自有的IP代理池。
  • 策略5分佈式爬取,這個是針對大型爬蟲系統的,實現一個分佈式的爬蟲,主要爲如下幾個步驟: 一、基本的http抓取工具,如scrapy; 二、避免重複抓取網頁,如Bloom Filter; 三、維護一個全部集羣機器可以有效分享的分佈式隊列; 四、將分佈式隊列和Scrapy的結合; 五、後續處理,網頁析取(如python-goose),存儲(如Mongodb)。
  • 策略6:模擬登陸—瀏覽器登陸的爬取 設置一個cookie處理對象,它負責將cookie添加到http請求中,並能從http響應中獲得cookie,向網站登陸頁面發送一個請求Request, 包括登陸url,POST請求的數據,Http header利用urllib2.urlopen發送請求,接收WEB服務器的Response。

 

參考文獻:python

【1】反爬蟲機制和破解方法彙總api

相關文章
相關標籤/搜索