一、前言
一般而言,抓取稍微正規一點的網站,都會有反網絡爬蟲的制約。反網絡爬蟲主要有以下幾種方式:
根據UA判斷。這是最低級的判斷,一般反網絡爬蟲不會用這個做唯一判斷,因爲反反網絡爬蟲非常容易,直接隨機UA即可解決。
根據單IP頻繁訪問判斷。這個判斷簡單,而且反反網絡爬蟲比較費力,反網絡爬蟲絕佳方案。需采用多IP抓取。
根據Cookie判斷,例如根據會員制賬號密碼登陸,判斷單賬號短時間抓取次數判斷。這個反反網絡爬蟲也很費力。需采用多賬號抓取。
動態頁面加載。這個考驗前端工程師的功底,假如前端寫的好,各種JS判斷,各種邏輯,像百度,淘寶一樣,post登錄很難。較好的方法,但是對于大牛,還是防不勝防。反反網絡爬蟲多采用渲染浏覽器抓取,效率低下。
采用驗證碼。這裏要不是登錄的時候有驗證碼,要不是判斷是網絡爬蟲時,不封IP,而是采用驗證碼驗證,例如鏈家網。驗證碼是反網絡爬蟲性價比較高的方案。反反網絡爬蟲一般接入OCR驗證碼識別平台或是人工打碼平台,亦或是利用Tesseract OCR識別,亦或是采用神經網絡訓練識別驗證碼等。
二、概要
今天咱們先主要來講一講,如何應對第2條的反反網絡爬蟲,如何根據多IP抓取。根據多IP網絡爬蟲,又分爲以下幾種形式:
根據ADSL撥號換IP服務器。每撥一次就會有一個新IP,較好解決IP單一問題。
假如是局域網,帶路由器的,第一種方法可能不好用。這個時候可以模擬登陸路由器,控制路由器重新撥號,換IP,這其實是一種折中的辦法,曲線救國。
代理IP,利用購買的或是網上抓取的免費代理IP,實現多IP網絡爬蟲。
分布式網絡爬蟲。采用多個服務器,多個IP,多個slave網絡爬蟲同時運行,由master負責調度。效率較高,屬于大型分布式抓取,一般用redis分布式抓取,不表。
最近了解到一種新的加密的代理網絡。Tor匿名網絡,利用這個也能匿名換IP。這個還沒有詳細了解,不表。
三、正文
1. ADSL撥號
我一般是在windows平台ADSL撥號,其他平台暫時沒用過。windows平台撥號,我一般用python的代碼爲:
2. 路由器撥號
假如是局域網,帶路由器的。直接調用windows的rasdial命令無法撥號時,這個時候可以模擬登陸路由器,控制路由器重新撥號,換IP,這其實是一種折中的辦法,曲線救國。下面以登錄小米路由器示例:
利用這個方法,就實現了用路由器換IP的目的。該方法的缺陷也是很明顯的。就是不像第一種方法那樣通用。基本上一個路由器就得編一套代碼,屬于定制代碼。
3. 代理IP
代理IP是最常見的一種多IP網絡爬蟲方法。在請求Headers中加入代理IP地址,即可實現代理IP抓取。缺陷是爬取速度和代理IP的速度息息相關。而且好的IP費用較高,免費的速度普遍不高。
附上requests抓取攜帶代理IP和selenium抓取攜帶代理IP的代碼。
requests:
selenium:
四、尾言
本文主要講了反網絡爬蟲的一些概念,常用的方法,反反網絡爬蟲的一些方法,並且主要介紹了多IP網絡爬蟲的實現方式,屬于網絡爬蟲領域基礎內容。掌握了這些基礎內容,以後網絡爬蟲步伐才能邁得堅實。
天下數據提供動態撥號vps、動態IP撥號、動態vps、動態IP撥號服務器、動態秒換IP、ADSL撥號服務器等,有大陸、美國、香港、日本、韓國、菲律賓、新加坡等!適用于網絡營銷、數據抓取、數據分析、刷單、投票等領域。需要的朋友請聯系天下數據客服!