系统检测到您正在使用网页抓取工具_【安全】58反抓取简介
0x00 介紹
網(wǎng)絡(luò)爬蟲,常又被稱呼為Spider,網(wǎng)絡(luò)機器人,主要模擬網(wǎng)絡(luò)交互協(xié)議,長時間,大規(guī)模的獲取目標數(shù)據(jù)。
普通爬蟲會從網(wǎng)站的一個鏈接開始,不斷收集網(wǎng)頁資源,同時不斷延伸抓取新獲取的URL以及相應的資源。在對抓取目標內(nèi)容結(jié)構(gòu)分析的基礎(chǔ)上,還會有目的性更強的聚焦型爬蟲。
爬蟲對網(wǎng)站的抓取,最直接的影響就是增加服務(wù)器負載,影響正常業(yè)務(wù)的使用。但是僅僅限制爬蟲的抓取頻次是遠遠不夠的。更重要的是對網(wǎng)站資源的保護,比如房產(chǎn)類信息中的小區(qū)名稱、戶型、建造年代、房型圖、視頻、面積、總價、單價等。同樣的,在58招聘,黃頁,二手車等業(yè)務(wù)線中,也存在著大量可用資源。更有甚者,利用業(yè)務(wù)邏輯漏洞或系統(tǒng)漏洞,爬蟲也可大量獲取平臺內(nèi)用戶、商戶信息,平臺信息,其間不乏敏感數(shù)據(jù),從而導致涉及信息泄露的各種群體及法律相關(guān)事件。
0x01 搜索引擎
在網(wǎng)絡(luò)中實際上也會存在大量的如Google,百度,360,微軟Bing等搜索引擎的爬蟲,一般這些搜索引擎都會對請求的瀏覽器UA進行定義,如百度PC端:PC UA:
Mozilla/5.0(compatible;Baiduspider/2.0;+http://www.baidu.com/search/spider.html)
眾所周知,瀏覽器信息都可以被偽造和篡改,所以單憑UA頭信息來識別是不夠的,反查HOST是識別搜索引擎的一種方法,但由于一些搜索引擎無法查明HOST,所以單一的識別方法并不十分有效。行為類的判別方法或許將更加重要。
Robots協(xié)議
這里順便提一句Robots協(xié)議,Robots協(xié)議(也稱為爬蟲協(xié)議、機器人協(xié)議等)的全稱是“網(wǎng)絡(luò)爬蟲排除標準”(Robots Exclusion Protocol)。
即使是正規(guī)的搜索引擎的爬蟲,也可能對一些網(wǎng)站造成負載壓力,或網(wǎng)站并不期望搜索引擎抓取一些頁面,這時Robots協(xié)議就會起到作用了。文件“Robots.txt”將告訴不同的爬蟲能訪問的頁面和禁止訪問的頁面,但是這個協(xié)議因為不強制爬蟲遵守,而起不到防止爬蟲的功能。
0x02 一些典型的爬取手段
在了解基本的爬取手段前,我們來看看,目前網(wǎng)絡(luò)中,哪些人是爬蟲的生產(chǎn)者(或搬運工)。
我們先來對他們進行一下分類:
? 學生,初級興趣愛好者,初級爬蟲程序員,數(shù)據(jù)分析師
? 數(shù)據(jù)公司
? 商業(yè)對手
? 失控的爬蟲和搜索引擎
一些愛好者或者初級爬蟲程序員,可能會通過網(wǎng)絡(luò)搜集可用的腳本或者框架,其中python無疑是用的最多最廣的,并且誕生了很多優(yōu)秀的庫和框架,如scrapy、BeautifulSoup 、pyquery、Mechanize等。
網(wǎng)絡(luò)上也存在著大量的數(shù)據(jù)公司,他們提供數(shù)據(jù)交易平臺,用戶可以購買定制數(shù)據(jù),定制爬蟲等。
商業(yè)競爭對手也會互相抓取對方數(shù)據(jù),獲取對方平臺資源或為己用,或用于進行商業(yè)數(shù)據(jù)分析,相信這里的爬蟲工程師已不再是搬運工的水平,他們有著明確的目的性和專業(yè)技能。
除了搜索引擎外,網(wǎng)絡(luò)上還存在著失控的爬蟲,他們可能存在于一些云服務(wù)器上,也可能存在于被入侵的電腦,這些程序可能已無人管理,但是在持續(xù)運行著抓取程序。
下面介紹一些典型的抓取手段
設(shè)置頻率
防爬一方面是為了防止服務(wù)器的高負載,那么那些真正想獲取網(wǎng)站資源的爬蟲,就不會輕易觸碰這條底線,所以設(shè)置爬蟲頻率是一個不錯的方法,爬蟲會試探網(wǎng)站的規(guī)則,每爬取一次數(shù)據(jù)就會設(shè)置一定的SLEEP時間,這個時間都有可能是隨機變化的,從而繞過平臺策略。不過換一個角度考慮,一天算下來,是86400秒,那么在時間有限又不能觸碰網(wǎng)站策略的前提下,如何更高效的抓取數(shù)據(jù)呢?辦法應該還是挺多的,后文會略有涉及。
代理IP
因為網(wǎng)站的瀏覽很多情況下并不存在賬戶屬性,所以攔截爬蟲最直接的手段,就是對IP的封禁。但是爬蟲為了高效的獲取網(wǎng)站數(shù)據(jù),會使用多線程,分布式,多IP進行抓取,他們可以輕易的從網(wǎng)上獲取免費的代理IP,如果擔心代理IP的穩(wěn)定性,可以購買付費代理IP庫,現(xiàn)在很多數(shù)據(jù)網(wǎng)站,也提供了付費的代理IP服務(wù)。
代理IP只是一種手段,其實爬蟲只要更換了IP,往往就可以繼續(xù)抓取任務(wù)。最簡單的例子比如我們在瀏覽一些網(wǎng)站時,可能會觸發(fā)網(wǎng)站的機器人挑戰(zhàn),用戶在挑戰(zhàn)成功后(例如正確輸入了圖片驗證碼的文字,或準確的滑動了滑塊)就可以繼續(xù)瀏覽。對于爬蟲來講,這里要突破驗證碼,在驗證碼無法突破的情況下,就需要更換IP,哪怕是重啟一下路由獲取新的IP地址。
偽造瀏覽器
部分網(wǎng)站會針對瀏覽器(user-agent)做爬蟲判斷,對于一些初級爬蟲,可能會存在非法的瀏覽器描述,比如python,phantomjs,pyspider等,這類UA會被直接封禁。針對瀏覽器也會有計數(shù)類策略,但因為瀏覽器信息很容易被篡改,所以只要維護一個瀏覽器庫隨機調(diào)用,就會繞過計數(shù)類策略。
還有爬蟲使用內(nèi)置瀏覽器,比如一些數(shù)據(jù)公司發(fā)布的數(shù)據(jù)采集器,八爪魚,火車頭等,這已經(jīng)不是簡單的篡改瀏覽器信息,他們支持各種新的css渲染特性和js運行時語法,這種方式主要在對抗對瀏覽器特征的檢查。
設(shè)備模擬
設(shè)備指紋作為目前反欺詐的利器,被很多企業(yè)使用,WEB端的JS或者APP端的SDK,用于唯一標識用戶設(shè)備。反抓取會利用IP結(jié)合設(shè)備指紋來制定一些策略,比如計數(shù)等。我們先不談設(shè)備指紋碰撞或者被破解的問題,單就指紋的申請,已經(jīng)可以模擬真實設(shè)備信息進行批量請求,指紋入庫等待后續(xù)使用。所以單獨針對指紋的策略,也不一定有效。
破解驗證碼
一般反抓取策略的初步攔截會以人機挑戰(zhàn)為主,例如各種驗證碼,對于爬蟲來講,驗證碼的破解就會成為關(guān)鍵一環(huán)。根據(jù)驗證碼形態(tài)的不同,破解方式會存在人工打碼,機器算法識別,接入打碼平臺等。這個環(huán)節(jié)的對抗也是相當激烈的,每一次的驗證碼升級,都有一定的時效性,只有不斷升級挑戰(zhàn)方式,才能有效的對抗爬蟲。
網(wǎng)絡(luò)協(xié)議參數(shù)的偽造
因為爬蟲本身就是程序在模擬用戶與網(wǎng)站的交互,所以理論上來講,當模擬程度足夠高時,很難區(qū)分機器行為。初級爬蟲可能會忽略cookie,refer等信息,高級一點的爬蟲就會對cookie進行設(shè)置或者對refer進行偽造。
0x03 反抓取常用的對抗方法
針對一些典型的爬取方法,自然會有一些基本的對抗方法,下面簡單描述一下常用的反抓取手段:
IP
最容易想到的就是針對IP的頻率類或次數(shù)累積限制,但是針對抓取的特點,可以進一步進行細分,如結(jié)合時段,城市,網(wǎng)站頁面類型,訪問間隔,跨度,以及一些協(xié)議參數(shù)的變化情況等。
瀏覽器檢測
對瀏覽器描述信息的檢測是最基礎(chǔ)的,在此基礎(chǔ)上,可以進一步針對瀏覽器特性進行檢查,基于瀏覽器的 UserAgent 字段描述的瀏覽器品牌、版本型號信息,對js運行時各個原生對象的屬性及方法進行檢驗,觀察其特征是否符合該版本的瀏覽器所應具備的特征,如Plugin,language,webgl,hairline等。
網(wǎng)絡(luò)協(xié)議參數(shù)檢測
進行基本的參數(shù)檢測,如cookie,refer是否為空,是否合法,refer是否正確等。同時需要結(jié)合用戶終端進行判斷,如區(qū)分WEB,APP,移動平板;以及入口應用的特性進行判斷,如主站,微信小程序,QQ及其他入口渠道等。
驗證碼
驗證碼產(chǎn)品提供多種人機識別方式,包括傳統(tǒng)字符驗證碼,滑動拼圖驗證碼,點選驗證碼,短信驗證碼,語音驗證碼等,以及結(jié)合生物特征的用戶鼠標、觸屏(移動端)等行為的行為驗證技術(shù)。
設(shè)備指紋
APP設(shè)備指紋SDK,用戶設(shè)備環(huán)境檢測,如是否為模擬器,是否ROOT等;M端,PC端設(shè)備指紋JS環(huán)境檢測等。
服務(wù)端檢測請求設(shè)備指紋是否合法。
APP,M,PC端設(shè)備標記,保證設(shè)備唯一性的基礎(chǔ)上進行如計數(shù)統(tǒng)計、行為分析等。
WEB端
JS埋點,JS網(wǎng)頁加密,JS代碼混淆等;
Ajax/Fetch異步請求,Noscript標簽的結(jié)合使用;
CSS字體庫等渲染,FONT-FACE拼湊式,BACKGROUND拼湊式,字符穿插式,偽元素隱蔽式,元素定位覆蓋模式,IFRAME異步加載,Flash、圖片或者pdf來呈現(xiàn)網(wǎng)站內(nèi)容等;
假鏈接,如在網(wǎng)頁多處放幾個一個像素的隨機圖片名假鏈;網(wǎng)頁多處放幾個隨機不可見的假鏈;網(wǎng)頁多處放幾個隨機的前景色和背景色相同的假鏈;網(wǎng)頁多處放隨機的位置超出屏幕的假鏈。
因為數(shù)據(jù)平臺定向抓取會分析網(wǎng)站結(jié)構(gòu),所以定期更改模板算一個應對方法,其余還有例如動態(tài)變換html標簽,網(wǎng)頁使用壓縮算法輸出內(nèi)容,網(wǎng)頁內(nèi)容不定時自動截斷等;
假數(shù)據(jù),返回假數(shù)據(jù),實際在防守的同時對抓取方的一種進攻,對抓取方恨之入骨可采用此方法,問題是可能帶來誤傷,或者當抓取方發(fā)現(xiàn)被無情欺騙時,激起對方的憤怒進而升級抓取手段,甚至蓄意的破壞。當然針對競品公司,應該予以無情的打擊。
行為分析
通過爬蟲與正常用戶的一些行為差別進行的分析,如:
對localStorage的訪問,一般爬蟲不存儲localStorage數(shù)據(jù),所以每次會訪問;
正常用戶訪問會在較短時間里完成某一時間周期的總請求數(shù)的絕大部分,映射到總用戶上,確定的一段時間里,正常用戶訪問的總頁數(shù)會在某個量級時開始驟減;
識別通過修改參數(shù)如ID等的遍歷行為。
API防刷
其實網(wǎng)絡(luò)數(shù)據(jù)的交互都是通過API實現(xiàn)的,那么針對API接口的一些防護措施也能有效的控制爬蟲,比如同IP/指紋對API接口頻率調(diào)用設(shè)置閾值;使用接口加密服務(wù),多套算法隨機使用,算法周期更新等;根據(jù)API接口的深度,在觸達路徑進行數(shù)據(jù)埋點,識別請求路徑等。
賬戶
一些網(wǎng)站信息必須用戶登錄后才可訪問,這樣反抓取除了通用方法外,還可以結(jié)合賬戶維度制定一些策略,比如同賬戶訪問次數(shù)、頻率限制;同賬戶多設(shè)備限制;同賬戶次數(shù)累積;同賬戶多瀏覽器訪問;同賬戶訪問城市切換,訪問多業(yè)務(wù)線等。
安全畫像
安全畫像是58信息安全的一項重要服務(wù),58自主研發(fā)的基于大數(shù)據(jù)的威脅情報系統(tǒng),該服務(wù)是一個分析型安全防控管理系統(tǒng),可基于風控系統(tǒng)實現(xiàn)統(tǒng)一的信息安全風控管理,幫助業(yè)務(wù)方實現(xiàn)事前的情報預警,事中的風險識別,事后的案件追溯,并與第三方數(shù)據(jù)有效集成,最終幫助業(yè)務(wù)線實現(xiàn)精準風險打擊和智慧運營的效果。
在反抓取對抗中,我們也使用了IP類,設(shè)備類,賬號類,手機號類等各種畫像標簽,效果顯著。
0x04 58反抓取系統(tǒng)概要介紹
58反抓取SCF服務(wù),為各業(yè)務(wù)線提供反抓取能力,接入成本低,時間短,目前日均處理接近10億次請求,系統(tǒng)處理能力平日在每秒1W次左右,系統(tǒng)服務(wù)處理時間為單次0.5ms。目前已基本覆蓋58房產(chǎn)、招聘、黃頁、二手車;趕集房產(chǎn)、招聘;安居客新房、二手房等各大業(yè)務(wù)線。
58反抓取系統(tǒng)示意圖:
各接入方通過SCF服務(wù)接入反抓取系統(tǒng);策略管理系統(tǒng)為各接入方配置策略集;分析單元執(zhí)行策略集,并將命中目標送至判決單元進行后續(xù)處理;通過實時監(jiān)控和大數(shù)據(jù)平臺進行數(shù)據(jù)分析。
反抓取策略管理系統(tǒng),是整個反抓取能力的核心,是新反抓取技術(shù)方案,新能力,新風控工具的體現(xiàn),目前可實現(xiàn)通用策略集的批量自動化配置。
反抓取實時監(jiān)控系統(tǒng),通過服務(wù)調(diào)用量監(jiān)控,識別風險,并對異常流量進行預警。
風險的處罰,處罰的數(shù)據(jù)維度包括UID,cookie,IP,設(shè)備指紋等:
處罰的攔截方式包含通過,驗證碼(圖片驗證碼、滑動驗證碼、短信驗證碼、語音驗證碼),返回假數(shù)據(jù),攔截頁中斷操作等。
0x05 反抓取流量分析平臺介紹
反抓取信息的重要來源,在于對流量的判斷,包括流量變化,協(xié)議特征等。通過對流量變化趨勢,機器特征的識別和聚類,往往可以發(fā)現(xiàn)現(xiàn)存問題,并且可以通過對個別業(yè)務(wù)線的風險識別,進而對其他業(yè)務(wù)線進行預警,達到態(tài)勢感知的效果。
基于nginx日志,針對反抓取進行的流量分析,可分析判斷來自PC,M端,APP等惡意爬蟲、自動機、模擬器等偽造真實用戶發(fā)起的惡意機器流量;可根據(jù)惡意機器流量判斷攻擊目標,攻擊行為和攻擊趨勢,并進行惡意流量預警;可對業(yè)務(wù)方進行流量熱度排名,域名熱度排名,接口熱度排名等。
域名排名,可以了解當前時期域名流量熱度以及時間內(nèi)流量變化情況:
對域名下基本特征的分析,可以識別機器行為等:
流量離散度分析,在于判斷流量的變化程度,并與歷史情況進行比對
同時還有對IP,UA,URL的排名和具體分析。
后續(xù)將增加更細致的分析,更多維度的統(tǒng)計,并提供風險輸出能力。
0x06 結(jié)語
上文主要介紹了一些爬蟲的基本概念、爬取方法、對抗方法,以及概要介紹了58反抓取服務(wù)能力,在反爬蟲領(lǐng)域,能做和要做的事情還有很多。無論對于爬蟲還是反爬蟲,非常多新技術(shù)、新思路都在不斷涌現(xiàn),這就要求產(chǎn)品、技術(shù)人員,緊跟科技發(fā)展潮流,勇于突破固有思維,進行創(chuàng)新,并緊密結(jié)合公司業(yè)務(wù)場景,為公司發(fā)展保駕護航。
總結(jié)
以上是生活随笔為你收集整理的系统检测到您正在使用网页抓取工具_【安全】58反抓取简介的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: tcp port numbers reu
- 下一篇: 基于产生式的动物识别专家系统_钇鑫智通打