1. 程式人生 > >常見的反爬策略及其破解方法

常見的反爬策略及其破解方法

原創: 筆者 深度學習與影象目標檢測

用爬蟲抓取網站資料的時候,經常會突然發現抓不了資料,這就說明你的爬蟲程式被對方伺服器識別為爬蟲了。大型的網站都會設定完備的反爬策略,來維護自身的資訊,而一般對方伺服器判斷請求者是一個合法者,多通過User-Agent、IP、Cookies、資料加密等方式。下面針對這幾種反爬策略,列出一些常用的破解反爬蟲技術方案,供大家在設計爬蟲時參考。

使用者請求的Headers設定

     當用戶訪問一個網站時,網站會對Headers的User-Agent進行檢測,還有一部分對Referer檢測,當遇到這種反爬機制,在爬蟲當中新增Headers請求頭,將瀏覽器的請求資訊以字典的資料形式新增到爬蟲請求頭部.一般通過瀏覽器呼叫鍵盤F12快捷鍵或者右鍵檢視元素調出對一個網頁的請求顯示,然後點選Network即可檢視當前User-Agent資訊。做爬蟲時最好隨機切換不同的User-Agent,以便讓伺服器判斷不是當前一個固定的瀏覽器訪問。

     資料解密

有時候資料顯示在頁面對使用者來說是友好的,但對爬蟲來說就糟糕了。然而有些資料是通過JS加密、Ajax請求來獲取資料。有些通過javascript進行加密頁面資料,這種只能找到加密程式碼進行處理,這種方案是最好、最快獲取資料,但是破解難度較大,會花費相當多的時間。其中本人也遇到過這種網站。這種破解方案就是使用Selenium+PhantomJS,呼叫瀏覽器核心,使用Selenium模擬人為操作網頁,並解析頁面中的JS指令碼,最終想獲取的資料才能獲取.這種操作幾乎能破解大多數資料加密反爬蟲,不過它的效率比較低。

驗證碼識別

 

     利用圖片驗證碼防止爬蟲也比較常見,常見12306網站驗證碼、網站登入圖片驗證、Google 驗證碼等等,目前對特別複雜的驗證碼沒有很好的識別,只能通過第三方平臺或者影象識別技術解決。常見的Python圖片識別庫包括Tesseract和其他第三方識別平臺。

 

代理IP設定

 

     如果你的爬蟲用固定的IP去抓取資料,不到一會也會被識別你是爬蟲。網站通過檢測訪問者IP是否在一定時間進行大量訪問,一旦被檢測直接封殺。一般在請求的時候加入代理IP,網上大多數免費代理IP的可效性 比較低,最好使用購買代理,基本有效性90%以上。所以做爬蟲系統,最好購買有效性比較高的代理IP,然後建立代理IP池,定時判斷IP的有效性後,再新增代理進行抓取。

 

Cookies重置

 

     有些網站為了辨別使用者身份,進行Session跟蹤,伺服器會向用戶本地瀏覽器儲存文字檔案,當進行下次訪問的時候,瀏覽器會自動帶這個檔案給伺服器,伺服器進行判斷識別使用者.所以伺服器利用Cookies包含的資訊判斷在HTTP傳輸中的狀態.Cookies最典型的應用判斷是否已經登入和保留使用者資訊。

      一般反爬伺服器也會對cookie進行時間有效設定,如果在有效期外,就不能抓取資料了。這種破解方式就要建立一個cookie池了,定時通過cookie池中的cookie去訪問網站判斷,如果失效,則往池裡新增新的cookie資訊,依次迴圈.

 

     本文粗略地介紹了以上幾種反爬破解方案,幾乎能破解90%以上的反爬。做爬蟲應用,實際上就是和反爬策略角逐的過程,為了保證資料的有效性和價值,我們在設計爬蟲時需要根據實際情況,採用相應的破解策略。