Python爬蟲、反爬蟲和反反爬蟲

我主要對反爬蟲和反反爬蟲做一個簡單的總結

我想補充一下關於爬蟲和反爬蟲,以及爲什麼要爬蟲,爲什麼要反爬蟲,也就是從技術和技術帶來的影響的角度來看待爬蟲。發現一個很有意思的鏈接,

爬蟲、反爬蟲、反反爬蟲

 

1 爬蟲、反爬蟲、反反爬蟲

爬蟲 —— 使用任何技術手段批量獲取網站信息的一種方式,關鍵在批量。

反爬蟲 —— 使用任何技術手段,阻止別人批量獲取自己網站信息的一種方式。關鍵也在於批量。

誤傷 —— 在反爬蟲的過程中,錯誤的將普通用戶識別爲爬蟲。誤傷率高的反爬蟲策略,效果再好也不能用。

攔截 —— 成功地阻止爬蟲訪問。通常來說,攔截率越高的策略,誤傷率就越高,因此要做權衡。

資源 —— 機器成本與人力成本的總和。

2 常見的爬蟲、反爬蟲、反反爬蟲手段

爬蟲、反反爬蟲反爬蟲
對某個網站或者APP的數據感興趣。 [1] 
首先分析網站/APP [2]的請求與返回數據,然後用python,或Java,或網上免費的抓取軟件,不斷遍歷某列表抓取數據存數據庫。 
 zabbix等監控顯示某時間段請求陡增,ip相同,useragent還是JavaClient,直接Nginx封殺這個ip
useragent模仿谷歌或者百度瀏覽器,再獲取十幾個代理ip,爬的過程中不斷輪詢替換ip 
 發現ip不斷變化,直接每次請求添加用戶是否登錄的校驗
通過註冊等各種方法,獲取一個真實賬號,模擬登錄,每次請求攜帶登錄產生的cookie或者token 
 健全賬號權限體系,即擁有A的賬號,無法獲取賬號B的數據訪問權限。
設置定時器,簡單粗暴的直接爬取所有能爬取的數據 
 針對多IP的高頻訪問,Nginx設置頻率限制,如某個ip短時間訪問超過一定次數就直接屏蔽,一定程度增加爬蟲方獲取有效IP的成本
寫代碼爬取ip代理網站,或者批量購買高匿代理ip,幾千IP輪詢爬 
 在訪問頻率上繼續做文章,升級ip限制策略,加大ip限制的成功率。
ip大量被封,爲了解決這問題,開始模擬人類請求特徵,比如每半小時爬取改爲隨機1-3秒爬一次,爬10次休息10秒,每天只在8-1218-0點爬,隔幾天還休息一下。再比如爲了減少請求,能只抓列表頁就不抓詳情頁 
 此刻再在訪問頻率上做限制,可能會誤傷真實用戶。如果網站類型不太注重用戶體驗,可以訪問一定次數強制彈框要求輸入驗證碼
簡單的驗證碼,完全可以自學圖像識別的教程(關鍵詞PILtesseract),對驗證碼進行二值化預處理,分割,模式訓練後,識別驗證碼 
 針對具有用戶行爲的爬蟲,首先要明白,爬蟲與人類在訪問特徵上最大的不一樣在於,人不會長時間持續訪問一個網站,而爬蟲的訪問數量會隨着時間增長而線性增長。根據這特徵,分析請求日誌,設置ip黑名單
由於各種限制,單個爬蟲輪詢ip模擬用戶行爲進行爬取,效率已經大大降低。這個時候有條件,可以考慮分佈式,跨省跨機房,利用ADSL進行長期爬取 
 既然無法避免被爬,那就繼續加大對方爬取成本
如果死磕到底。。 
 只能硬着頭皮和他繼續死磕,直到一方因爲機器成本與人力成本問題放棄。

3 爲什麼需要反爬蟲?

l  公司的重要資源被批量爬取,喪失競爭力。

l  爬蟲佔總PV比例太高,因爲高訪問量浪費了太多錢。

l  爬蟲拖垮了站點,嚴重影響了用戶體驗。

l  資源被爬取難以起訴成功,對方可以肆意爬取

4 反爬蟲的一些措施

反爬蟲的關鍵在於阻止被批量爬取,重點在批量。反爬蟲技術的核心在於不斷變更規則,比如不斷變更驗證碼。我們在內容上可以做如下文章:

l  網站不同地方的文本內容添加不同的自帶標籤,增加對方數據清理難度。

l  關鍵數據由文本轉圖片,甚至添加水印等。目前市場上圖片ocr識別無法有效轉文字,讓對方即使獲取了圖片也無法有效使用。

l  網站相關頁面的列表查詢,限制總頁數的展示。比如數據一共1K頁,相關接口卻只對外展示前十頁。對方找不到入口最多爬取10頁數據。

l  間接關閉網站核心數據查看入口,比如內容的查看像百度文庫一樣改爲word、pdf或者ppt下載模式,高頻下載需要驗證碼或者賬號積分。

l  網站不提供註冊入口,或者註冊需要內部推薦或者評審,加大爬蟲方獲取賬號的難度。

l  網站的請求url複雜化,比如弄的像淘寶一樣沒有規律,id改爲UUID等。

l  前端頁面儘可能不暴露數據的唯一鍵,對唯一鍵如主鍵id等進行僞裝,可以增加對方爬取後的去重成本。因爲對方爬數據可能是在你的多個模塊頁面進行多維度爬取,會有大量的重複數據。

l  前端html頁面別一次性加載列表,根據用戶點擊js動態加載。即查詢頁面源碼時,只能看到列表的第一條數據。

l  當確定訪問異常時,大量返回虛假數據。爬蟲幾乎沒有判斷數據真假的能力,只有人才有。對方發現的越晚,我們的處理應對時間就越充裕。

l  核心數據提高安全等級,單獨加密等。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章