什么是爬蟲(chóng)和反爬蟲(chóng)?
- 爬蟲(chóng):使用任何技術(shù)手段,批量獲取網(wǎng)站信息的一種方式。
- 反爬蟲(chóng):使用任何技術(shù)手段,阻止別人批量獲取自己網(wǎng)站信息的一種方式。
常見(jiàn)的反爬蟲(chóng)機(jī)制
- 通過(guò)UA 識(shí)別爬蟲(chóng) 有些爬蟲(chóng)的UA是特殊的,與正常瀏覽器的不一樣,可通過(guò)識(shí)別特征UA,直接封掉爬蟲(chóng)請(qǐng)求
- 設(shè)置IP訪問(wèn)頻率,如果超過(guò)一定頻率,彈出驗(yàn)證碼 如果輸入正確的驗(yàn)證碼,則放行,如果沒(méi)有輸入,則拉入禁止一段時(shí)間,如果超過(guò)禁爬時(shí)間,再次出發(fā)驗(yàn)證碼,則拉入黑名單。當(dāng)然根據(jù)具體的業(yè)務(wù),為不同場(chǎng)景設(shè)置不同閾值,比如登陸用戶和非登陸用戶,請(qǐng)求是否含有refer。
- 通過(guò)并發(fā)識(shí)別爬蟲(chóng) 有些爬蟲(chóng)的并發(fā)是很高的,統(tǒng)計(jì)并發(fā)最高的IP,加入黑名單(或者直接封掉爬蟲(chóng)IP所在C段)
- 請(qǐng)求的時(shí)間窗口過(guò)濾統(tǒng)計(jì) 爬蟲(chóng)爬取網(wǎng)頁(yè)的頻率都是比較固定的,不像人去訪問(wèn)網(wǎng)頁(yè),中間的間隔時(shí)間比較無(wú)規(guī)則,所以我們可以給每個(gè)IP地址建立一個(gè)時(shí)間窗口,記錄IP地址最近12次訪問(wèn)時(shí)間,每記錄一次就滑動(dòng)一次窗口,比較最近訪問(wèn)時(shí)間和當(dāng)前時(shí)間,如果間隔時(shí)間很長(zhǎng)判斷不是爬蟲(chóng),清除時(shí)間窗口,如果間隔不長(zhǎng),就回溯計(jì)算指定時(shí)間段的訪問(wèn)頻率,如果訪問(wèn)頻率超過(guò)閥值,就轉(zhuǎn)向驗(yàn)證碼頁(yè)面讓用戶填寫(xiě)驗(yàn)證碼
- 限制單個(gè)ip/api token的訪問(wèn)量 比如15分鐘限制訪問(wèn)頁(yè)面180次,具體標(biāo)準(zhǔn)可參考一些大型網(wǎng)站的公開(kāi)api,如twitter api,對(duì)于抓取用戶公開(kāi)信息的爬蟲(chóng)要格外敏感
- 識(shí)別出合法爬蟲(chóng) 對(duì)http頭agent進(jìn)行驗(yàn)證,是否標(biāo)記為、百度的spider,嚴(yán)格一點(diǎn)的話應(yīng)該判別來(lái)源IP是否為、baidu的爬蟲(chóng)IP,這些IP在網(wǎng)上都可以找到。校驗(yàn)出來(lái)IP不在白名單就可以阻止訪問(wèn)內(nèi)容。
- 蜜罐資源 爬蟲(chóng)解析離不開(kāi)正則匹配,適當(dāng)在頁(yè)面添加一些正常瀏覽器瀏覽訪問(wèn)不到的資源,一旦有ip訪問(wèn),過(guò)濾下頭部是不是搜素引擎的蜘蛛,不是就可以直接封了。比如說(shuō)隱式鏈接。
破解反爬蟲(chóng)機(jī)制的幾種方法
- 策略1:設(shè)置下載延遲,比如數(shù)字設(shè)置為5秒,越大越安全
- 策略2:禁止Cookie,某些網(wǎng)站會(huì)通過(guò)Cookie識(shí)別用戶身份,禁用后使得服務(wù)器無(wú)法識(shí)別爬蟲(chóng)軌跡
- 策略3:使用user agent池。也就是每次發(fā)送的時(shí)候隨機(jī)從池中選擇不一樣的瀏覽器頭信息,防止暴露爬蟲(chóng)身份
- 策略4:使用IP池,這個(gè)需要大量的IP資源,可以通過(guò)抓取網(wǎng)上免費(fèi)公開(kāi)的IP建成自有的IP代理池。
- 策略5:分布式爬取,這個(gè)是針對(duì)大型爬蟲(chóng)系統(tǒng)的,實(shí)現(xiàn)一個(gè)分布式的爬蟲(chóng),主要為以下幾個(gè)步驟:
1、基本的http抓取工具,如scrapy;
2、避免重復(fù)抓取網(wǎng)頁(yè),如Bloom Filter;
3、維護(hù)一個(gè)所有集群機(jī)器能夠有效分享的分布式隊(duì)列;
4、將分布式隊(duì)列和Scrapy的結(jié)合;
5、后續(xù)處理,網(wǎng)頁(yè)析取(如python-goose),存儲(chǔ)(如Mongodb)。 - 策略6:模擬登錄—瀏覽器登錄的爬取 設(shè)置一個(gè)cookie處理對(duì)象,它負(fù)責(zé)將cookie添加到http請(qǐng)求中,并能從http響應(yīng)中得到cookie,向網(wǎng)站登錄頁(yè)面發(fā)送一個(gè)請(qǐng)求Request, 包括登錄url,POST請(qǐng)求的數(shù)據(jù),Http header利用urllib2.urlopen發(fā)送請(qǐng)求,接收WEB服務(wù)器的Response。
文章題目:反爬蟲(chóng)機(jī)制和破解方法匯總
網(wǎng)站網(wǎng)址:http://redsoil1982.com.cn/news/258009.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)建站、網(wǎng)頁(yè)設(shè)計(jì)公司、網(wǎng)站制作、微信小程序、網(wǎng)站策劃、網(wǎng)站導(dǎo)航
廣告
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源:
創(chuàng)新互聯(lián)