喜歡爬蟲的夥伴都知道,在爬網站的内容的時候并不是一爬就可以了,有時候就會遇到一些網站的反爬蟲,折回讓你爬不到資料,給你傳回一些404,403或者500的狀态碼,這有時候會讓人苦不堪言,在你爬的資料較多時,網站認為你是一個機器,就不讓你爬了。反爬蟲主要有以下幾種方式:
通過UA判斷。這是最低級的判斷,一般反爬蟲不會用這個做唯一判斷,因為反反爬蟲非常容易,直接随機UA即可解決。
通過單IP頻繁通路判斷。這個判斷簡單,而且反反爬蟲比較費力,反爬蟲絕佳方案。需采用多IP抓取。
通過Cookie判斷,例如通過會員制賬号密碼登陸,判斷單賬号短時間抓取次數判斷。這個反反爬蟲也很費力。需采用多賬号抓取。
動态頁面加載。這個考驗前端工程師的功底,如果前端寫的好,各種JS判斷,各種邏輯,像百度,淘寶一樣,post登入很難。較好的方法,但是對于大牛,還是防不勝防。反反爬蟲多采用渲染浏覽器抓取,效率低下。
采用驗證碼。這裡要麼是登入的時候有驗證碼,要麼是判斷是爬蟲時,不封IP,而是采用驗證碼驗證,例如鍊家網。驗證碼是反爬蟲成本效益較高的方案。反反爬蟲一般接入OCR驗證碼識别平台或者人工打碼平台,亦或者利用Tesseract OCR識别,亦或者采用神經網絡訓練識别驗證碼等。
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICM38FdsYkRGZkRG9lcvx2bjxiNx8VZ6l2cs0TP35EMJpnT51EROBDOsJGcohVYsR2MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZwpmL5ATN4UDOzYTM5ADNwkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
代理IP是最常見的一種多IP爬蟲方法。在請求Headers中加入代理IP位址,即可實作代理IP抓取。缺陷是爬取速度和代理IP的速度息息相關。而且好的IP費用較高,免費的速度普遍不高。
當使用熊貓代理ip時可按照以下動态代理接入文檔進行操作
1.說明
使用動态代理:
1.動态并發産品和動态按量包時産品代理設定為 dynamic.xiongmaodaili.com:8089;動态按量産品需将代理設定為 dynamic.xiongmaodaili.com:8088
2.在請求的header裡面添加Proxy-Authorization參數(下面有詳細的說明)
3.通路https協定頭需要先忽略證書驗證
2.使用方法
簽名算法參數:
secret 個人密鑰
orderno 訂單号
timestamp 時間戳/1000(也就是10位時間戳)
注:change參數不加入簽名算法,不傳預設為true(即使用每次通路都改變ip政策)
認證流程
2.1客戶根據三個參數拼接出字元串
txt=“orderno=xxxx,secret=xxxxxxxxx,timestamp=xxxxxxxxxx”
2.2簽名根據planText 拼接出的字元串 進行MD5() ,然後再轉成大寫 例如
sign = org.apache.commons.codec.digest.DigestUtils.md5Hex(txt).toUpperCase();
2.3客戶通過head中添加Proxy-Authorization 例如
Proxy-Authorization:sign=38UDHCCXXXXX&orderno=DT2017230151xxxxxxx×tamp=1487753521&change=true
2.4 伺服器接受到請求,認證成功則開始執行代理服務,失敗則傳回錯誤提示,用utf-8編碼即可檢視錯誤原因。
示例代碼請參照:https://github.com/XMPROXY/XM-PROXY