常見的反爬蟲和應對方法【豈安低調分享】

0x01 常見的反爬蟲

這幾天在爬一個網站,網站做了很多反爬蟲工作,爬起來有些艱難,花了一些時間才繞過反爬蟲。在這里把我寫爬蟲以來遇到的各種反爬蟲策略和應對的方法總結一下。

從功能上來講,爬蟲一般分為數據采集,處理,儲存三個部分。這里我們只討論數據采集部分。

一般網站從三個方面反爬蟲:用戶請求的Headers,用戶行為,網站目錄和數據加載方式。前兩種比較容易遇到,大多數網站都從這些角度來反爬蟲。第三種一些應用ajax的網站會采用,這樣增大了爬取的難度。

0x02 通過Headers反爬蟲

從用戶請求的Headers反爬蟲是最常見的反爬蟲策略。很多網站都會對Headers的User-Agent進行檢測,還有一部分網站會對Referer進行檢測(一些資源網站的防盜鏈就是檢測Referer)。

如果遇到了這類反爬蟲機制,可以直接在爬蟲中添加Headers,將瀏覽器的User-Agent復制到爬蟲的Headers中;或者將Referer值修改為目標網站域名。[評論:往往容易被忽略,通過對請求的抓包分析,確定referer,在程序中模擬訪問請求頭中添加]

對于檢測Headers的反爬蟲,在爬蟲中修改或者添加Headers就能很好的繞過。

0x03 基于用戶行為的反爬蟲

還有一部分網站是通過檢測用戶行為,例如同一IP短時間內多次訪問同一頁面,或者同一賬戶短時間內多次進行相同操作。[這種防爬,需要有足夠多的ip來應對]

大多數網站都是前一種情況,對于這種情況,使用IP代理就可以解決,可以專門寫一個爬蟲,爬取網上公開的代理ip,檢測后全部保存起來,這樣的代理ip爬蟲經常會用到,最好自己準備一個。

有了大量代理ip后可以每請求幾次更換一個ip,這在requests或者urllib2中很容易做到,這樣就能很容易的繞過第一種反爬蟲。[評論:動態撥號也是一種解決方案]

對于第二種情況,可以在每次請求后隨機間隔幾秒再進行下一次請求。有些有邏輯漏洞的網站,可以通過請求幾次,退出登錄,重新登錄,繼續請求來繞過同一賬號短時間內不能多次進行相同請求的限制。[評論:對于賬戶做防爬限制,一般難以應對,隨機幾秒請求也往往可能被封,如果能有多個賬戶,切換使用,效果更佳]

0x04 動態頁面的反爬蟲

上述的幾種情況大多都是出現在靜態頁面,還有一部分網站,我們需要爬取的數據是通過ajax請求得到,或者通過Java生成的。

首先用Firebug或者HttpFox對網絡請求進行分析[評論:感覺google的、IE的網絡請求分析使用也挺好]。如果能夠找到ajax請求,也能分析出具體的參數和響應的具體含義,我們就能采用上面的方法,直接利用requests或者urllib2模擬ajax請求,對響應的json進行分析得到需要的數據。

能夠直接模擬ajax請求獲取數據固然是極好的,但是有些網站把ajax請求的所有參數全部加密了。我們根本沒辦法構造自己所需要的數據的請求。

我這幾天爬的那個網站就是這樣,除了加密ajax參數,它還把一些基本的功能都封裝了,全部都是在調用自己的接口,而接口參數都是加密的。

遇到這樣的網站,我們就不能用上面的方法了,我用的是selenium+phantomJS框架,調用瀏覽器內核,并利用phantomJS執行js來模擬人為操作以及觸發頁面中的js腳本。從填寫表單到點擊按鈕再到滾動頁面,全部都可以模擬,不考慮具體的請求和響應過程,只是完完整整的把人瀏覽頁面獲取數據的過程模擬一遍。[評論:支持phantomJS]

用這套框架幾乎能繞過大多數的反爬蟲,因為它不是在偽裝成瀏覽器來獲取數據(上述的通過添加 Headers一定程度上就是為了偽裝成瀏覽器),它本身就是瀏覽器,phantomJS就是一個沒有界面的瀏覽器,只是操控這個瀏覽器的不是人。

利用 selenium+phantomJS能干很多事情,例如識別點觸式(12306)或者滑動式的驗證碼,對頁面表單進行暴力破解等等。它在自動化滲透中還 會大展身手,以后還會提到這個。(正文:知乎bsdr 評論:紅黑聯盟 )

0x05 場景化的反爬蟲解決方案

豈安科技專注于為互聯網企業提供業務風控解決方案,反爬蟲只是眾多需要解決方案其中很小的一部分。不過,因為爬蟲是所有攻擊鏈中的重要構成,無論是采集競爭對手網站的數據,嘗試破解用戶口令還是自動下單,其實都離不開爬蟲。

面對互聯網的復雜性和特殊性,常規的安全體系及市場規范難以滿足威脅判斷和風險控制的需求。作為一個技術驅動型的公司,豈安科技幫助企業解決互聯網領域的業務風險,主要是通過場景的模式,包括真假用戶識別,賬號欺詐/盜用、業務欺詐、業務風險控制、交易欺詐監控、惡意訂單、補貼濫用、盜卡盜刷等,這些場景中,都無可避免的首要面對——爬蟲。

1、降頻防御

在爬蟲防范過程中,早期由于其展現出的特征很多防御思路都是在于其頻率,實際在實際案例中,我們發現現在多代理降低單個IP的頻率已經是一種常規的做法,成本也非常的低,目前比較有效的分析維度為:

訪問者的URL訪問豐富程度:普通用戶在打開網頁時會有比較豐富的地址訪問,而自動爬蟲通常只有少數固定的頁面訪問。

訪問者是否具有連貫的訪問軌跡:用戶在進行頁面訪問時,通常是有一個合理的訪問軌跡,如從頁面A跳轉到頁面B,但爬蟲在自動獲取數據時,往往是對頁面地址進行逐個訪問,沒有連貫的軌跡。

訪問者是否查看了頁面上的靜態資源:爬蟲獲取數據時往往只關心具體的文字內容和數據,但不會查看圖片以及加載頁面上的CSS或者JS信息,這就給出了一個較為顯著的判斷特征。

訪問者每次訪問之間的時間間隔:爬蟲在獲取頁面信息時,會出現連續兩個Click之間時間非常短的情況,而人手動點擊頁面不會出現如此短時間或固定的時間訪問模式。


2、短信轟炸

短信轟炸是一種特別專項的爬蟲,往往只請求短信發送的接口。豈安的解決方案在這項問題上的優勢——能夠快速采集短信發送的日志,同時可以根據短信發送時IP訪問的上下文來綜合判斷( 豈安特點:不用擔心時間序問題)。

如果在發送短信的時候沒有其他頁面的訪問,沒有靜態資源的訪問,最近只請求了這一個接口,便可以直接封禁,不存在誤封。


3、注冊用戶掃描

注冊用戶的掃描問題的防范與解決方案,其實在本質上也與爬蟲問題相似,不同的是,豈安可以增加許多業務方向的維度。

豈安的產品可以在不需要研發資源介入的情況下快速從網絡流量中采集注冊驗證行為,結合IP訪問上下文行為進行判斷。

一般的防御思路僅是通過限制某個IP的訪問頻率(如10秒內超過1000次)方式來進行判斷的,而在豈安的產品中,2~3次的異常訪問即可被確認。


4、評論爬取防御

評論在訂單轉化上具有非常重要的作用。當用戶在瀏覽網站上的商品時,如果商品沒有對應的評論記錄或者購買記錄,則會產生不信任很難轉化到實際下單。

一些商家為了轉化率與銷售業績,會想到依靠爬蟲爬取其它擁有真正用戶參與的商品評論內容。

這會帶來什么樣的問題呢?

**- 購買信任感被復制、弱化

  • 網站的SEO和搜索引擎權重降低
  • 運營數據失真、策略被破壞
  • 潛在用戶流失**

豈安所采用的防御思路與網站爬蟲防御思路相同,但與此同時,豈安還會發現爬取評論的腳本請求類型會集中為GET請求,這在用戶瀏覽過程中也是極少見的情況,由此延伸出的垃圾注冊、惡意用戶、刷單、惡意占庫存等相關的各類不良信息都將被檢測出,并做出相應的防御、解決措施。


5、其它

點擊進入豈安的世界

大发快3