58反抓取簡介

0x00 介紹css

網絡爬蟲,常又被稱呼爲Spider,網絡機器人,主要模擬網絡交互協議,長時間,大規模的獲取目標數據。html

普通爬蟲會從網站的一個連接開始,不斷收集網頁資源,同時不斷延伸抓取新獲取的URL以及相應的資源。 在對抓取目標內容結構分析的基礎上,還會有目的性更強的聚焦型爬蟲。python

爬蟲對網站的抓取,最直接的影響就是增長服務器負載,影響正常業務的使用。 可是僅僅限制爬蟲的抓取頻次是遠遠不夠的。 更重要的是對網站資源的保護,好比房產類信息中的小區名稱、戶型、建造年代、房型圖、視頻、面積、總價、單價等。 一樣的,在58招聘,黃頁,二手車等業務線中,也存在着大量可用資源。 更有甚者,利用業務邏輯漏洞或系統漏洞,爬蟲也可大量獲取平臺內用戶、商戶信息,平臺信息,其間不乏敏感數據,從而致使涉及信息泄露的各類羣體及法律相關事件。nginx

0x01 搜索引擎

在網絡中實際上也會存在大量的如Google,百度,360,微軟Bing等搜索引擎的爬蟲,通常這些搜索引擎都會對請求的瀏覽器UA進行定義,如百度PC端: PC UA:程序員

Mozilla/5.0(compatible;Baiduspider/2.0;+http://www.baidu.com/search/spider.html)web

衆所周知,瀏覽器信息均可以被僞造和篡改,因此單憑UA頭信息來識別是不夠的,反查HOST是識別搜索引擎的一種方法,但因爲一些搜索引擎沒法查明HOST,因此單一的識別方法並不十分有效。 行爲類的判別方法或許將更加劇要。算法

Robots協議

這裏順便提一句Robots協議,Robots協議(也稱爲爬蟲協議、機器人協議等)的全稱是「網絡爬蟲排除標準」(Robots Exclusion Protocol)。小程序

即便是正規的搜索引擎的爬蟲,也可能對一些網站形成負載壓力,或網站並不指望搜索引擎抓取一些頁面,這時Robots協議就會起到做用了。 文件「Robots.txt」將告訴不一樣的爬蟲能訪問的頁面和禁止訪問的頁面,可是這個協議由於不強制爬蟲遵照,而起不到防止爬蟲的功能。微信小程序

0x02 一些典型的爬取手段

在瞭解基本的爬取手段前,咱們來看看,目前網絡中,哪些人是爬蟲的生產者(或搬運工)。瀏覽器

咱們先來對他們進行一下分類:

Ø 學生,初級興趣愛好者,初級爬蟲程序員,數據分析師

Ø 數據公司

Ø 商業對手

Ø 失控的爬蟲和搜索引擎

一些愛好者或者初級爬蟲程序員,可能會經過網絡蒐集可用的腳本或者框架,其中python無疑是用的最多最廣的,而且誕生了不少優秀的庫和框架,如scrapy、BeautifulSoup 、pyquery、Mechanize等。

網絡上也存在着大量的數據公司,他們提供數據交易平臺,用戶能夠購買定製數據,定製爬蟲等。

 

商業競爭對手也會互相抓取對方數據,獲取對方平臺資源或爲己用,或用於進行商業數據分析,相信這裏的爬蟲工程師已再也不是搬運工的水平,他們有着明確的目的性和專業技能。

除了搜索引擎外,網絡上還存在着失控的爬蟲,他們可能存在於一些雲服務器上,也可能存在於被入侵的電腦,這些程序可能已無人管理,可是在持續運行着抓取程序。

下面介紹一些典型的抓取手段

設置頻率

防爬一方面是爲了防止服務器的高負載,那麼那些真正想獲取網站資源的爬蟲,就不會輕易觸碰這條底線,因此設置爬蟲頻率是一個不錯的方法,爬蟲會試探網站的規則,每爬取一次數據就會設置必定的SLEEP時間,這個時間都有多是隨機變化的,從而繞過平臺策略。 不過換一個角度考慮,一天算下來,是86400秒,那麼在時間有限又不能觸碰網站策略的前提下,如何更高效的抓取數據呢? 辦法應該仍是挺多的,後文會略有涉及。

代理IP

由於網站的瀏覽不少狀況下並不存在帳戶屬性,因此攔截爬蟲最直接的手段,就是對IP的封禁。 可是爬蟲爲了高效的獲取網站數據,會使用多線程,分佈式,多IP進行抓取,他們能夠輕易的從網上獲取免費的代理IP,若是擔憂代理IP的穩定性,能夠購買付費代理IP庫,如今不少數據網站,也提供了付費的代理IP服務。

代理IP只是一種手段,其實爬蟲只要更換了IP,每每就能夠繼續抓取任務。 最簡單的例子好比咱們在瀏覽一些網站時,可能會觸發網站的機器人挑戰,用戶在挑戰成功後(例如正確輸入了圖片驗證碼的文字,或準確的滑動了滑塊)就能夠繼續瀏覽。 對於爬蟲來說,這裏要突破驗證碼,在驗證碼沒法突破的狀況下,就須要更換IP,哪怕是重啓一下路由獲取新的IP地址。

僞造瀏覽器

部分網站會針對瀏覽器(user-agent)作爬蟲判斷,對於一些初級爬蟲,可能會存在非法的瀏覽器描述,好比python,phantomjs,pyspider等,這類UA會被直接封禁。 針對瀏覽器也會有計數類策略,但由於瀏覽器信息很容易被篡改,因此只要維護一個瀏覽器庫隨機調用,就會繞過計數類策略。

還有爬蟲使用內置瀏覽器,好比一些數據公司發佈的數據採集器,八爪魚,火車頭等,這已經不是簡單的篡改瀏覽器信息,他們支持各類新的css渲染特性和js運行時語法,這種方式主要在對抗對瀏覽器特徵的檢查。

設備模擬

設備指紋做爲目前反欺詐的利器,被不少企業使用,WEB端的JS或者APP端的SDK,用於惟一標識用戶設備。 反抓取會利用IP結合設備指紋來制定一些策略,好比計數等。 咱們先不談設備指紋碰撞或者被破解的問題,單就指紋的申請,已經能夠模擬真實設備信息進行批量請求,指紋入庫等待後續使用。 因此單獨針對指紋的策略,也不必定有效。

破解驗證碼

通常反抓取策略的初步攔截會以人機挑戰爲主,例如各類驗證碼,對於爬蟲來說,驗證碼的破解就會成爲關鍵一環。 根據驗證碼形態的不一樣,破解方式會存在人工打碼,機器算法識別,接入打碼平臺等。 這個環節的對抗也是至關激烈的,每一次的驗證碼升級,都有必定的時效性,只有不斷升級挑戰方式,纔能有效的對抗爬蟲。

網絡協議參數的僞造

由於爬蟲自己就是程序在模擬用戶與網站的交互,因此理論上來說,當模擬程度足夠高時,很難區分機器行爲。 初級爬蟲可能會忽略cookie,refer等信息,高級一點的爬蟲就會對cookie進行設置或者對refer進行僞造。

0x03 反抓取經常使用的對抗方法

針對一些典型的爬取方法,天然會有一些基本的對抗方法,下面簡單描述一下經常使用的反抓取手段:

IP

最容易想到的就是針對IP的頻率類或次數累積限制,可是針對抓取的特色,能夠進一步進行細分,如結合時段,城市,網站頁面類型,訪問間隔,跨度,以及一些協議參數的變化狀況等。

瀏覽器檢測

對瀏覽器描述信息的檢測是最基礎的,在此基礎上,能夠進一步針對瀏覽器特性進行檢查,基於瀏覽器的 UserAgent 字段描述的瀏覽器品牌、版本型號信息,對js運行時各個原生對象的屬性及方法進行檢驗,觀察其特徵是否符合該版本的瀏覽器所應具有的特徵,如Plugin,language,webgl,hairline等。

網絡協議參數檢測

進行基本的參數檢測,如cookie,refer是否爲空,是否合法,refer是否正確等。 同時須要結合用戶終端進行判斷,如區分WEB,APP,移動平板; 以及入口應用的特性進行判斷,如主站,微信小程序,QQ及其餘入口渠道等。

驗證碼

驗證碼產品提供多種人機識別方式,包括傳統字符驗證碼,滑動拼圖驗證碼,點選驗證碼,短信驗證碼,語音驗證碼等,以及結合生物特徵的用戶鼠標、觸屏(移動端)等行爲的行爲驗證技術。

設備指紋

APP設備指紋SDK,用戶設備環境檢測,如是否爲模擬器,是否ROOT等; M端,PC端設備指紋JS環境檢測等。

服務端檢測請求設備指紋是否合法。

APP,M,PC端設備標記,保證設備惟一性的基礎上進行如計數統計、行爲分析等。

WEB端

JS埋點,JS網頁加密,JS代碼混淆等;

Ajax/Fetch異步請求,Noscript標籤的結合使用;

CSS字體庫等渲染,FONT-FACE拼湊式,BACKGROUND拼湊式,字符穿插式,僞元素隱蔽式,元素定位覆蓋模式,IFRAME異步加載,Flash、圖片或者pdf來呈現網站內容等;

假連接,如在網頁多處放幾個一個像素的隨機圖片名假鏈; 網頁多處放幾個隨機不可見的假鏈; 網頁多處放幾個隨機的前景色和背景色相同的假鏈; 網頁多處放隨機的位置超出屏幕的假鏈。

由於數據平臺定向抓取會分析網站結構,因此按期更改模板算一個應對方法,其他還有例如動態變換html標籤,網頁使用壓縮算法輸出內容,網頁內容不定時自動截斷等;

假數據,返回假數據,實際在防守的同時對抓取方的一種進攻,對抓取方恨之入骨可採用此方法,問題是可能帶來誤傷,或者當抓取方發現被無情欺騙時,激起對方的憤怒進而升級抓取手段,甚至蓄意的破壞。 固然針對競品公司,應該予以無情的打擊。

行爲分析

經過爬蟲與正經常使用戶的一些行爲差異進行的分析,如:

對localStorage的訪問,通常爬蟲不存儲localStorage數據,因此每次會訪問;

正經常使用戶訪問會在較短期裏完成某一時間週期的總請求數的絕大部分,映射到總用戶上,肯定的一段時間裏,正經常使用戶訪問的總頁數會在某個量級時開始驟減;

識別經過修改參數如ID等的遍歷行爲。

API防刷

其實網絡數據的交互都是經過API實現的,那麼針對API接口的一些防禦措施也能有效的控制爬蟲,好比同IP/指紋對API接口頻率調用設置閾值; 使用接口加密服務,多套算法隨機使用,算法週期更新等; 根據API接口的深度,在觸達路徑進行數據埋點,識別請求路徑等。

帳戶

一些網站信息必須用戶登陸後纔可訪問,這樣反抓取除了通用方法外,還能夠結合帳戶維度制定一些策略,好比同帳戶訪問次數、頻率限制; 同帳戶多設備限制; 同帳戶次數累積; 同帳戶多瀏覽器訪問; 同帳戶訪問城市切換,訪問多業務線等。

安全畫像

安全畫像是58信息安全的一項重要服務,58自主研發的基於大數據的威脅情報系統,該服務是一個分析型安全防控管理系統,可基於風控系統實現統一的信息安全風控管理,幫助業務方實現事前的情報預警,事中的風險識別,過後的案件追溯,並與第三方數據有效集成,最終幫助業務線實現精準風險打擊和智慧運營的效果。

在反抓取對抗中,咱們也使用了IP類,設備類,帳號類,手機號類等各類畫像標籤,效果顯著。

0x04 58反抓取系統概要介紹

58反抓取SCF服務,爲各業務線提供反抓取能力,接入成本低,時間短,目前日均處理接近10億次請求,系統處理能力平日在每秒1W次左右,系統服務處理時間爲單次0.5ms。 目前已基本覆蓋58房產、招聘、黃頁、二手車; 趕集房產、招聘; 安居客新房、二手房等各大業務線。

58反抓取系統示意圖:

 

各接入方經過SCF服務接入反抓取系統; 策略管理系統爲各接入方配置策略集; 分析單元執行策略集,並將命中目標送至判決單元進行後續處理; 經過實時監控和大數據平臺進行數據分析。

反抓取策略管理系統,是整個反抓取能力的核心,是新反抓取技術方案,新能力,新風控工具的體現,目前可實現通用策略集的批量自動化配置。

反抓取實時監控系統,經過服務調用量監控,識別風險,並對異常流量進行預警。

風險的處罰,處罰的數據維度包括UID,cookie,IP,設備指紋等:

處罰的攔截方式包含經過,驗證碼(圖片驗證碼、滑動驗證碼、短信驗證碼、語音驗證碼),返回假數據,攔截頁中斷操做等。

 

0x05 反抓取流量分析平臺介紹

反抓取信息的重要來源,在於對流量的判斷,包括流量變化,協議特徵等。 經過對流量變化趨勢,機器特徵的識別和聚類,每每能夠發現現存問題,而且能夠經過對個別業務線的風險識別,進而對其餘業務線進行預警,達到態勢感知的效果。

基於nginx日誌,針對反抓取進行的流量分析,可分析判斷來自PC,M端,APP等惡意爬蟲、自動機、模擬器等僞造真實用戶發起的惡意機器流量; 可根據惡意機器流量判斷攻擊目標,攻擊行爲和攻擊趨勢,並進行惡意流量預警; 可對業務方進行流量熱度排名,域名熱度排名,接口熱度排名等。

域名排名,能夠了解當前時期域名流量熱度以及時間內流量變化狀況:

 

對域名下基本特徵的分析,能夠識別機器行爲等:

流量離散度分析,在於判斷流量的變化程度,並與歷史狀況進行比對

同時還有對IP,UA,URL的排名和具體分析。

後續將增長更細緻的分析,更多維度的統計,並提供風險輸出能力。

0x06 結語

上文主要介紹了一些爬蟲的基本概念、爬取方法、對抗方法,以及概要介紹了58反抓取服務能力,在反爬蟲領域,能作和要作的事情還有不少。 不管對於爬蟲仍是反爬蟲,很是多新技術、新思路都在不斷涌現,這就要求產品、技術人員,緊跟科技發展潮流,敢於突破固有思惟,進行創新,並緊密結合公司業務場景,爲公司發展保駕護航。

相關文章
相關標籤/搜索