反爬概述
但是當網絡爬蟲被濫用后,互聯網上就出現太多同質的東西,原創得不到保護。
於是,很多網站開始反網絡爬蟲,想方設法保護自己的內容。
他們根據ip訪問頻率,瀏覽網頁速度,賬戶登錄,輸入驗證碼,flash封裝,ajax混淆,js加密,圖片等技術,來應對網絡爬蟲。
防的一方不惜成本,迫使抓的一方在考慮成本效益后放棄。
抓的一方不惜成本,防的一方在考慮用戶流失后放棄。
反爬策略
一: User-Agent +Referer檢測
User-Agent 是HTTP協議的中的一個字段, 其作用是描述發出HTTP請求的終端的一些信息。
使得服務器能夠識別客戶使用的操作系統及版本、CPU 類型、瀏覽器及版本、瀏覽器渲染引擎、瀏覽器語言、瀏覽器插件等。
服務器通過這個字段就可以知道訪問網站的是什么人。對於不是正常瀏覽器的用戶進行屏蔽。
解決方案: 偽裝瀏覽器的User-Agent,因為每個瀏覽器的User-Agent不一樣,並且所有
的用戶都能使用瀏覽器。所有每次請求的時候條件瀏覽器的User-Agent,就能解決UA檢測
告訴服務器我是從哪個頁面鏈接過來的。例如有一些圖片網站在你請求圖片的時候,就會檢測
你的Referer值,如果Referer不符合,不會返回正常的圖片。
解決方案:在檢測referer的請求中,攜帶符合的referer值。
二: js混淆和渲染
1.去掉一些實際沒有調用的函數。
2.將零散的變量聲明合並。
3.邏輯函數的精簡。
4.變量名的簡化。具體要看不同的壓縮工具的考慮優劣。常見的有UglifyJS、JScrambler等工具。
解決方案:
1.通過閱讀網站js源碼,找到關鍵的代碼,並用python實現。
2.通過閱讀網站js源碼,找到關鍵的代碼,用PyV8,execjs等庫直接執行js代碼。
3.通過selenium庫直接模擬瀏覽器環境
三:IP限制頻次
與服務器的tcp連接。
對於服務端來說可以很清楚的查看到,一個ip地址在單位時間內發起的請求。
當請求數超過一定的值之后,就可判斷為非正常的用戶請求。
解決方案:
1.自行設計ip代理池,通過輪換的方式,每次請求攜帶不同的代理地址。
2.ADSL動態撥號他有個獨有的特點,每撥一次號,就獲取一個新的IP。也就是它的IP是不固定的。
四:驗證碼
Apart”(全自動區分計算機和人類的圖靈測試)的縮寫,是一種區分用戶是計算機還是人的公共全自動程序。
可以防止:惡意破解密碼、刷票、論壇灌水,有效防止某個黑客對某一個特定注冊用戶用特定程序暴力破解方式進行不斷的登陸嘗試。
這個問題可以由計算機生成並評判,但是必須只有人類才能解答。由於計算機無法解答
CAPTCHA的問題,所以回答出問題的用戶就可以被認為是人類。
解決方案:
1.手動識別驗證碼
2.pytesseract識別簡單的驗證碼
3.對接打碼平台
4.機器學習
