如何應付重度反爬蟲的網站

http://ae.yyuap.com/pages/viewpage.action?pageId=919721


摘要:

  • 網站爲什麼要反爬蟲

  • 網站反爬蟲的方式

  • 如何應付反爬蟲的網站

網站爲什麼要反爬蟲

1.不希望爬蟲獲得網站中的數據;比如說像taobao這種網站,本身有一個開發平臺,裏邊有些api是收費的,如果不採取反爬蟲的手段,就會失去大部分付費api的收入

2.減小服務器壓力,網站支持請求處理速度是有限的,支持大規模用戶的併發訪問需要投入很多資源,而爬蟲發送請求的速度可以遠遠超過正常用戶發送請求的速度,尤其是一些處理邏輯簡單,比如直接抓取全部頁面的爬蟲,會給服務器增加一些壓力

網站反爬蟲的方式

1.Robots協議:

Robots協議(也稱爲爬蟲協議、機器人協議等)的全稱是“網絡爬蟲排除標準”(Robots Exclusion Protocol),網站通過Robots協議告訴搜索引擎哪些頁面可以抓取,哪些頁面不能抓取。

 按照Robots協議,robots.txt是搜索引擎中訪問網站的時候要查看的第一個文件。robots.txt文件告訴蜘蛛程序在服務器上什麼文件是可以被查看的。

下面是Tmall的robots.txt,禁止來自baidu的爬蟲抓取網站中任何頁面

Robots協議是國際互聯網界通行的道德規範,不是強制規定,是否遵守Robots協議,完全取決於爬蟲的開發者,使用Robots協議不能保證站內的頁面不被爬蟲抓取

2.識別爬蟲,進行處理:

識別爬蟲:

用戶使用瀏覽器訪問網站,識別爬蟲就是識別收到的請求與真正人使用瀏覽器發出的請求是否有差異;比如說請求速度的差異,人使用瀏覽器發送請求一般比較慢,如果一個ip在單位時間內發出大量的請求,則有可能是爬蟲

處理可疑請求:

可以直接返回服務器錯誤、返回到禁止爬蟲的提示頁面、返回302讓瀏覽器跳轉的登錄頁面(用戶名密碼登錄、用戶名密碼驗證碼登錄、短信驗證登錄)

如何應付重度反爬蟲的網站

如果網站的反爬蟲機制有漏洞,則可以針對這個漏洞來破解該網站的反爬蟲機制,比如簡單登錄成功設置cookie,每次請求驗證cookie,可以模擬post請求登錄,保存cookie,在請求中發送cookie中內容;如果網站反爬蟲機制沒有漏洞,或者找不到漏洞,或者破解方法成本太高,則需要讓爬蟲的請求儘量和人使用瀏覽器請求一致。

下面給出使用selenium的半自動爬蟲抓取tmall的商品數據的示例


tmall的反爬蟲機制:

通過單位時間的請求數識別爬蟲,具體規則未知,第一次識別爲疑似爬蟲的閥值比較低,真人使用瀏覽器頻繁點擊也會被識別,識別爲疑似爬蟲的處理方法依次爲用戶名、密碼驗證,用戶名、密碼、驗證碼驗證,短信驗證

 

爬蟲的處理方式:

1.識別登錄頁面:

爬蟲發送的請求被識別爲疑似爬蟲都會跳到登錄頁面進行用戶驗證,分析登錄頁面也商品列表頁面、商品頁面的差異,來找到識別登錄頁面的方法

 這裏當前url來識別是否爲登錄頁

 

2.登錄頁面的處理:

Tmall的登錄頁面可能驗證用戶名、密碼、驗證碼、短信驗證碼,前兩個爲固定值,後兩個比較難處理,所以採用半自動的方式人工進行處理;當登錄頁面的url不是登錄url時再繼續抓取網頁

 

示例代碼如下:

每次抓取網頁使用jump_to_url方法請求頁面,進行登錄驗證(如果重定向到了登錄頁面),jump_to_url方法之後,瀏覽器處於已登錄狀態,可以使用selenium正常抓取數據



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