反爬筆記
1 伺服器反爬的原因
爬蟲佔總PV高,浪費資源
資源被批量爬走,喪失競爭力
2 伺服器常反什麼樣的爬蟲
應屆畢業生
創業小公司
沒法停止的失控小爬蟲
成型的商業對手
抽風的搜尋引擎
3 反爬蟲領域常見的一些概念
爬蟲
反爬蟲
誤傷
攔截
資源
4 反爬的三個反向
基於身份識別
基於爬蟲行為
基於資料加密
5 常見基於身份識別進行反爬
- 基於headers欄位進行反爬
1 通過User-Agent欄位進行反爬
新增隨機UA
2 通過referer欄位或者其他欄位進行反爬
新增referer欄位
3 通過cookie來反爬
進行模擬登入,成功獲取cookie之後在進行資料爬取
- 通過請求引數來反爬 1 通過從html靜態檔案中獲取請求資料 仔細分析抓包得到的每一個包,搞清楚請求中間的聯絡 2 通過傳送請求獲取請求資料 仔細分析抓包得到的每一個包,搞清楚請求中間的聯絡,搞清除請求引數的來源 3 通過js生成請求引數 分析js,觀察加密的實現過程,通過js2py獲取js的執行結果,或者用selenium實現 4 通過驗證碼來反爬 使用打碼平臺識別
6 常見基於爬蟲行為進行反爬
- 基於請求頻繁或總請求數量
1 通過請求ip/賬號單位時間內總請求數量進行反爬
對應的通過購買高質量的ip的方法能夠解決問題/購買多個賬號
2 通過同一ip/賬號請求之間的間隔進行反爬
請求之間進行隨機等待,模擬真實使用者操作,在新增時間間隔後,為了能夠高速獲取資料,
儘量使用代理池,如果是賬號,則將賬號請求之間設定隨機睡眠
3 通過對請求ip/賬號每天請求次數設定值,進行反爬
對應的通過購買高質量的ip的方法能夠解決問題/購買多個賬號,同時設定請求隨機休眠
- 根據爬取行為進行反爬,通常在爬取步驟上作分析 1 通過js實現跳轉來反爬 多次抓包獲取條狀url, 分析規律 2 通過蜜罐(陷阱)獲取爬蟲ip(或者代理ip),進行反爬 完成爬蟲編寫後,使用代理批量爬取/仔細分析響應內容結構,找出頁面存在的陷阱 3 通過假資料反爬 長期執行,核對資料庫中資料同實際頁面中資料對應情況,如何存在問題/仔細分析響應內容 4 阻塞任務佇列 觀察執行過程中請求響應狀態/仔細分析原始碼獲取垃圾url生成規律,對url進行過濾 5 阻塞網路io 觀察爬蟲執行狀態/多執行緒對請求執行緒計時/傳送請求線 6 運維平臺綜合審計 仔細觀察分析,長期執行測試目標網站,檢查資料採集速度,多方面處理
7 常見基於資料加密進行反爬
通常的特殊化處理主要指的就是css資料偏移自定義字型/資料加密/資料圖片/特殊編碼格式等
- 對響應中含有的資料進行特殊處理
1 通過自定義字型來反爬
切換到手機版/解析字型檔案進行翻譯
2 通過css來反爬
計算css的偏移
3 通過js動態生成資料進行反爬
解析關鍵js,獲得資料生成流程,模擬生成資料
4 通過圖片化反爬
通過使用圖片解析引擎從圖片中解析資料
5 通過編碼格式進行反爬
根據原始碼進行多格式編碼,或者真正的編碼格式