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