反爬虫机制和破解方法汇总
生活随笔
收集整理的這篇文章主要介紹了
反爬虫机制和破解方法汇总
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
https://cloud.tencent.com/developer/article/1032918
什么是爬蟲和反爬蟲?
- 爬蟲:使用任何技術手段,批量獲取網站信息的一種方式。
- 反爬蟲:使用任何技術手段,阻止別人批量獲取自己網站信息的一種方式。
常見的反爬蟲機制
- 通過UA 識別爬蟲 有些爬蟲的UA是特殊的,與正常瀏覽器的不一樣,可通過識別特征UA,直接封掉爬蟲請求
- 設置IP訪問頻率,如果超過一定頻率,彈出驗證碼 如果輸入正確的驗證碼,則放行,如果沒有輸入,則拉入禁止一段時間,如果超過禁爬時間,再次出發驗證碼,則拉入黑名單。當然根據具體的業務,為不同場景設置不同閾值,比如登陸用戶和非登陸用戶,請求是否含有refer。
- 通過并發識別爬蟲 有些爬蟲的并發是很高的,統計并發最高的IP,加入黑名單(或者直接封掉爬蟲IP所在C段)
- 請求的時間窗口過濾統計 爬蟲爬取網頁的頻率都是比較固定的,不像人去訪問網頁,中間的間隔時間比較無規則,所以我們可以給每個IP地址建立一個時間窗口,記錄IP地址最近12次訪問時間,每記錄一次就滑動一次窗口,比較最近訪問時間和當前時間,如果間隔時間很長判斷不是爬蟲,清除時間窗口,如果間隔不長,就回溯計算指定時間段的訪問頻率,如果訪問頻率超過閥值,就轉向驗證碼頁面讓用戶填寫驗證碼
- 限制單個ip/api token的訪問量 比如15分鐘限制訪問頁面180次,具體標準可參考一些大型網站的公開api,如twitter api,對于抓取用戶公開信息的爬蟲要格外敏感
- 識別出合法爬蟲 對http頭agent進行驗證,是否標記為、百度的spider,嚴格一點的話應該判別來源IP是否為、baidu的爬蟲IP,這些IP在網上都可以找到。校驗出來IP不在白名單就可以阻止訪問內容。
- 蜜罐資源 爬蟲解析離不開正則匹配,適當在頁面添加一些正常瀏覽器瀏覽訪問不到的資源,一旦有ip訪問,過濾下頭部是不是搜素引擎的蜘蛛,不是就可以直接封了。比如說隱式鏈接。
破解反爬蟲機制的幾種方法
- 策略1:設置下載延遲,比如數字設置為5秒,越大越安全
- 策略2:禁止Cookie,某些網站會通過Cookie識別用戶身份,禁用后使得服務器無法識別爬蟲軌跡
- 策略3:使用user agent池。也就是每次發送的時候隨機從池中選擇不一樣的瀏覽器頭信息,防止暴露爬蟲身份
- 策略4:使用IP池,這個需要大量的IP資源,可以通過抓取網上免費公開的IP建成自有的IP代理池。
- 策略5:分布式爬取,這個是針對大型爬蟲系統的,實現一個分布式的爬蟲,主要為以下幾個步驟: 1、基本的http抓取工具,如scrapy; 2、避免重復抓取網頁,如Bloom Filter; 3、維護一個所有集群機器能夠有效分享的分布式隊列; 4、將分布式隊列和Scrapy的結合; 5、后續處理,網頁析取(如python-goose),存儲(如Mongodb)。
- 策略6:模擬登錄—瀏覽器登錄的爬取 設置一個cookie處理對象,它負責將cookie添加到http請求中,并能從http響應中得到cookie,向網站登錄頁面發送一個請求Request, 包括登錄url,POST請求的數據,Http header利用urllib2.urlopen發送請求,接收WEB服務器的Response。
本文分享自微信公眾號 - Python中文社區(python-china),作者:知乎@橙哥
原文出處及轉載信息見文內詳細說明,如有侵權,請聯系 yunjia_community@tencent.com刪除。
原始發表時間:2016-09-06
本文參與騰訊云自媒體分享計劃,歡迎正在閱讀的你也加入,一起分享。
總結
以上是生活随笔為你收集整理的反爬虫机制和破解方法汇总的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ImportError: libgthr
- 下一篇: 一种单独适配于NER的数据增强方法:DA