新聞中心
爬蟲和反爬的對抗一直在進行著… 為了幫助更好的進行爬蟲行為以及反爬, 今天就來介紹一下網(wǎng)頁開發(fā)者常用的反爬手段。

創(chuàng)新互聯(lián)主營馬鞍山網(wǎng)站建設的網(wǎng)絡公司,主營網(wǎng)站建設方案,重慶App定制開發(fā),馬鞍山h5重慶小程序開發(fā)搭建,馬鞍山網(wǎng)站營銷推廣歡迎馬鞍山等地區(qū)企業(yè)咨詢
1. BAN IP :網(wǎng)頁的運維人員通過分析日志發(fā)現(xiàn)最近某一個IP訪問量特別特別大,某一段時間內(nèi)訪問了無數(shù)次的網(wǎng)頁,則運維人員判斷此種訪問行為并非正常人的行為,于是直接在服務器上封殺了此人IP。
解決方法:此種方法極其容易誤傷其他正常用戶,因為某一片區(qū)域的其他用戶可能有著相同的IP,導致服務器少了許多正常用戶的訪問,所以一般運維人員不會通過此種方法來限制爬蟲。不過面對許多大量的訪問,服務器還是會偶爾把該IP放入黑名單,過一段時間再將其放出來,但我們可以通過分布式爬蟲以及購買代理IP也能很好的解決,只不過爬蟲的成本提高了。
2. BAN USERAGENT :很多的爬蟲請求頭就是默認的一些很明顯的爬蟲頭python-requests/2.18.4,諸如此類,當運維人員發(fā)現(xiàn)攜帶有這類headers的數(shù)據(jù)包,直接拒絕訪問,返回403錯誤
解決方法:直接r=requests.get(url,headers={'User-Agent':'Baiduspider'})把爬蟲請求headers偽裝成百度爬蟲或者其他瀏覽器頭就行了。
案例:雪球網(wǎng)
返回的就是
403
403 Forbidden.
Your IP Address: xxx.xxx.xxx.xxx .
但是當我們這樣寫:
返回的就是
200
< !DOCTYPE html>
3. BAN COOKIES :服務器對每一個訪問網(wǎng)頁的人都set-cookie,給其一個cookies,當該cookies訪問超過某一個閥值時就BAN掉該COOKIE,過一段時間再放出來,當然一般爬蟲都是不帶COOKIE進行訪問的,可是網(wǎng)頁上有一部分內(nèi)容如新浪微博是需要用戶登錄才能查看更多內(nèi)容。
解決辦法:控制訪問速度,或者某些需要登錄的如新浪微博,在某寶上買多個賬號,生成多個cookies,在每一次訪問時帶上cookies
案例:螞蜂窩
以前因為旅游的需求,所以想到了去抓一點游記來找找哪些地方好玩,于是去了螞蜂窩網(wǎng)站找游記,一篇一篇的看真的很慢,想到不如把所有文章抓過來然后統(tǒng)計每個詞出現(xiàn)的頻率***,統(tǒng)計出最熱的一些旅游景點,就寫了一個scrapy爬蟲抓游記,當修改了headers后開始爬取,發(fā)現(xiàn)訪問過快服務器就會斷開掉我的連接,然后過一段時間(幾個小時)才能繼續(xù)爬。于是放慢速度抓就發(fā)現(xiàn)不會再被BAN了。
4. 驗證碼驗證 :當某一用戶訪問次數(shù)過多后,就自動讓請求跳轉(zhuǎn)到一個驗證碼頁面,只有在輸入正確的驗證碼之后才能繼續(xù)訪問網(wǎng)站
解決辦法:python可以通過一些第三方庫如(pytesser,PIL)來對驗證碼進行處理,識別出正確的驗證碼,復雜的驗證碼可以通過機器學習讓爬蟲自動識別復雜驗證碼,讓程序自動識別驗證碼并自動輸入驗證碼繼續(xù)抓取
案例:安全客
當訪問者對安全客訪問過快他就會自動蹦出一個驗證碼界面。
如下:
5. javascript渲染 :網(wǎng)頁開發(fā)者將重要信息放在網(wǎng)頁中但不寫入html標簽中,而瀏覽器會自動渲染


咨詢
建站咨詢