Python 爬蟲與反爬的幾個方案

原文鏈接: 何曉東 博客

沒有絕對的發爬蟲措施,只能提高爬蟲爬取的成本。

爬蟲措施:

  • 不設防的網站,直接爬取,不做任何僞裝
  • 基礎防備的網站,爬取過程中增加 time.sleep(n) 進行休眠一下,降級爬取頻次,防止被限制。再可以每次爬取切換 header 頭信息,僞裝成多個終端發起的請求
  • 需要登錄的情況下,需要多個用戶賬戶,爬取過程中切換 cookie 信息,模擬不同用戶在請求。
  • 使用 IP 代理池,切換 IP,越過高級限制。

python 爬蟲相關的有幾個實現越過限制的包:fake_useragent proxy_list 等,僞裝的越像真實用戶越爬取成功率高。

反爬蟲措施:

  • Nginx 層面進行頻次限制,可以參考 Nginx http 資源請求限制,至於限制的 key 爲瀏覽器頭/IP/登錄用戶,可以根據需求進行設置。
  • 代碼層面限制需要登錄訪問,一天僅可以訪問一定數量的頁面,未登錄狀態僅可以查看可數的幾個頁面,例如房源信息網站,一天查看 60+ 的房源詳情頁面已經很多了,更多可以就有惡意了。這樣的限制對於爬蟲方來說,需要籌備很多賬號進行爬取。當然在徹底的限制之外,可以限制訪問超過數量彈出驗證碼,驗證之後纔可以繼續訪問,這樣至少不會讓少部分真實用戶無法訪問
  • 提前獲取 IP 代理池的 IP 列表,直接防火牆層面的拉黑,能高端避免一些問題,免費 IP 代理池記得有網站,需要拉黑在自己獲取。
  • 將常見的爬蟲頭信息全部 Nginx 或者代碼層面拉黑,據說一些大網站把 python 的幾個常見爬蟲頭信息全部拉黑了,提升基礎爬蟲的代碼成本。
  • 高端反爬蟲是每隔幾小時切換頁面代碼或者接口數據結構,記得淘寶是這樣做的,對於爬蟲方來說,可能剛剛寫好爬這種類型的代碼,然後整體頁面代碼和數據結構用了新一套,很高階的反制措施了。
  • 數據擾亂:每一頁有一些加解密規則,或者每頁有不同的擾亂數據,你抓取到的極有可能是包含一些假數據,或者加密數據,也算是增加了爬蟲成本。例如網頁中也可以增加一些關鍵性的樣式或者名稱一致的隱藏域,偶數頁不出現這些隱藏域,讓爬蟲不好找的關鍵元素。

以上是自己想到的一些措施,謹記現在亂爬是違法的,別爬取一時爽,三年起步了。

© 原創文章,如有問題請聯繫 [email protected] 謝謝!

順道,大佬們來這裏學習更多知識 -> 這裏

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