互聯(lián)網(wǎng)最激烈的對抗戰(zhàn)場潘鲫,除了安全專家與黑客之間翁逞,大概就是爬蟲與反爬蟲領(lǐng)域了。據(jù)統(tǒng)計溉仑,爬蟲流量早已超過了人類真實訪問請求流量挖函。互聯(lián)網(wǎng)充斥著形形色色的爬蟲浊竟,云上怨喘、傳統(tǒng)行業(yè)都有不同規(guī)模的用戶被爬蟲愛好者盯上津畸,這些爬蟲從哪里來?爬取了誰的數(shù)據(jù)必怜?數(shù)據(jù)將被用于何處肉拓?
近日,騰訊云發(fā)布2018上半年安全專題系列研究報告梳庆,該系列報告圍繞云上用戶最常遭遇的安全威脅展開暖途,用數(shù)據(jù)統(tǒng)計揭露攻擊現(xiàn)狀,通過溯源還原攻擊者手法膏执,讓企業(yè)用戶與其他用戶在應(yīng)對攻擊時有跡可循驻售,并為其提供可靠的安全指南。本篇報告中更米,云鼎實驗室通過部署的威脅感知系統(tǒng)欺栗,捕獲到大量爬蟲請求流量以及真實來源IP,且基于2018年上半年捕獲的數(shù)億次爬蟲請求征峦,對互聯(lián)網(wǎng)爬蟲行為進行分析迟几。雪吹西門詩在此分享給大家。
一栏笆、基本概念
1. 爬蟲是什么瘤旨?
爬蟲最早源于搜索引擎,它是一種按照一定的規(guī)則竖伯,自動從互聯(lián)網(wǎng)上抓取信息的程序。
搜索引擎是善意的爬蟲因宇,它爬取網(wǎng)站的所有頁面七婴,提供給其他用戶進行快速搜索和訪問,給網(wǎng)站帶來流量察滑。為此打厘,行業(yè)還達成了 Robots 君子協(xié)議,讓互聯(lián)網(wǎng)上的搜索與被搜索和諧相處贺辰。
原本雙贏的局面户盯,很快就被一些人破壞了,如同其他技術(shù)饲化,爬蟲也是一把雙刃劍莽鸭,變得不再「君子」。尤其是近年來「大數(shù)據(jù)」的概念吃靠,吸引了許多公司肆意爬取其他公司的數(shù)據(jù)硫眨,于是「惡意爬蟲」開始充斥互聯(lián)網(wǎng)。
本篇報告主要聚焦于「惡意爬蟲」巢块,不討論搜索引擎爬蟲及合法爬蟲等礁阁。
2. 爬蟲的分類
按爬蟲功能巧号,可以分為網(wǎng)頁爬蟲和接口爬蟲。
網(wǎng)頁爬蟲:以搜索引擎爬蟲為主姥闭,根據(jù)網(wǎng)頁上的超鏈接進行遍歷爬取丹鸿。
接口爬蟲:通過精準構(gòu)造特定 API 接口的請求數(shù)據(jù),而獲得大量數(shù)據(jù)信息棚品。
按授權(quán)情況靠欢,可以分為合法爬蟲和惡意爬蟲。
合法爬蟲:以符合 Robots 協(xié)議規(guī)范的行為爬取網(wǎng)頁南片,或爬取網(wǎng)絡(luò)公開接口掺涛,或購買接口授權(quán)進行爬取,均為合法爬蟲疼进,該類爬蟲通常不用考慮反爬蟲等對抗性工作薪缆。
惡意爬蟲:通過分析并自行構(gòu)造參數(shù)對非公開接口進行數(shù)據(jù)爬取或提交,獲取對方本不愿意被大量獲取的數(shù)據(jù)伞广,并有可能給對方服務(wù)器性能造成極大損耗拣帽。此處通常存在爬蟲和反爬蟲的激烈交鋒。
3. 數(shù)據(jù)從哪來嚼锄?
爬蟲不生產(chǎn)數(shù)據(jù)减拭,它們只是數(shù)據(jù)的搬運工。要研究爬蟲区丑,就得先研究數(shù)據(jù)的來源拧粪。尤其是對小型公司來說,往往需要更多外部數(shù)據(jù)輔助商業(yè)決策沧侥。如何在廣袤的互聯(lián)網(wǎng)中獲取對自己有價值的數(shù)據(jù)可霎,是許多公司一直考慮的問題。通常來說宴杀,存在以下幾大數(shù)據(jù)來源:
1.企業(yè)產(chǎn)生的用戶數(shù)據(jù)
如 BAT 等公司癣朗,擁有大量用戶,每天用戶都會產(chǎn)生海量的原始數(shù)據(jù)旺罢。
另外還包括 PGC (專業(yè)生產(chǎn)內(nèi)容)和 UGC (用戶生產(chǎn)內(nèi)容)數(shù)據(jù)旷余,如新聞、自媒體扁达、微博正卧、短視頻等等。
2.政府罩驻、機構(gòu)的公開數(shù)據(jù)
如統(tǒng)計局穗酥、工商行政、知識產(chǎn)權(quán)、銀行證券等公開信息和數(shù)據(jù)砾跃。
3.第三方數(shù)據(jù)庫購買
市場上有很多產(chǎn)品化的數(shù)據(jù)庫骏啰,包括商業(yè)類和學(xué)術(shù)類,如 Bloomberg抽高、 CSMAR判耕、 Wind、知網(wǎng)等等翘骂,一般以公司的名義購買數(shù)據(jù)查詢權(quán)限壁熄,比如咨詢公司、高等院校碳竟、研究機構(gòu)都會購買草丧。
4.爬蟲獲取網(wǎng)絡(luò)數(shù)據(jù)
使用爬蟲技術(shù),進行網(wǎng)頁爬取莹桅,或通過公開和非公開的接口調(diào)用昌执,獲得數(shù)據(jù)。
5.公司間進行數(shù)據(jù)交換
不同公司間進行數(shù)據(jù)交換诈泼,彼此進行數(shù)據(jù)補全懂拾。
6.商業(yè)間諜或黑客竊取數(shù)據(jù)
通過內(nèi)鬼渠道獲取其他公司用戶數(shù)據(jù),或者利用黑客等非常規(guī)手段铐达,通過定制入侵獲取數(shù)據(jù)或地下黑市購買其他公司數(shù)據(jù)岖赋。此處內(nèi)鬼泄漏遠多于黑客竊取。
二瓮孙、惡意爬蟲的目標
從前面總結(jié)的數(shù)據(jù)來源看唐断,第三方數(shù)據(jù)庫購買或數(shù)據(jù)竊取的渠道都不涉及爬蟲,真正屬于惡意爬蟲目標的杭抠,主要是互聯(lián)網(wǎng)公司和政府相關(guān)部門的數(shù)據(jù)栗涂。
行業(yè)總體分布
通過對捕獲的海量惡意爬蟲流量進行標注,整理出惡意爬蟲流量最大的行業(yè)TOP 10 排行祈争,詳情如下:
由統(tǒng)計可見,出行類惡意爬蟲流量占比高于電商與社交行業(yè)角寸,居首位菩混,其次是點評、運營商扁藕、公共行政等沮峡。接下來逐個行業(yè)進行分析:
1. 出行
實時火車票信息:對火車購票平臺的惡意爬蟲訪問占據(jù)了出行行業(yè)近90%的流量,淺析可知其實比較合理亿柑,幾百個城市邢疙,幾千趟列車構(gòu)成國內(nèi)鐵路網(wǎng),火車站與車次排列組合后是一個非常大的數(shù)據(jù)集,隨著人工購票快速向互聯(lián)網(wǎng)購票過渡疟游,第三方代購和搶票服務(wù)商便越來越多呼畸,而任意一家要做到數(shù)據(jù)實時刷新,都需要不小的爬蟲集群颁虐,因此導(dǎo)致火車票購買站點成為爬蟲光顧最頻繁的業(yè)務(wù)蛮原。
實時機票信息:機票類占據(jù)出行類8.77%的惡意爬蟲流量,主要是爬取各大航空公司實時票價另绩。
實時公交信息:主要爬取市內(nèi)公交 GPS 信息儒陨。
實時共享單車信息:主要爬取特定區(qū)域周邊的實時共享單車信息。
酒店空房信息:酒店爬取占比較少笋籽,主要是刷酒店房價蹦漠,與交通類比較可忽略不計
2. 社交
由于國內(nèi)的社交平臺多數(shù)以純 APP 為主,部分社交平臺并不支持網(wǎng)頁功能车海,因此捕獲到的社交類爬蟲主要集中在微博類平臺笛园,以爬取用戶信息和所發(fā)布的內(nèi)容為主。
3. 電商
電商行業(yè)爬蟲主要是爬取商品信息和價格等數(shù)據(jù)容劳,由于商業(yè)模式的差異喘沿,C2C 類電商由于中小賣家眾多,商品數(shù)量遠多于 B2C 類電商竭贩,支撐了電商類惡意爬蟲近90%流量蚜印, B2C 類電商加起來占一成左右。
4. O2O
O2O 行業(yè)惡意爬蟲主要集中在點評類和團購類公司留量,其中以爬取商鋪動態(tài)信息和星級評分信息的點評類數(shù)據(jù)為主窄赋,占總數(shù)的90%以上。
5. 公共行政
公共行政類惡意爬蟲主要集中在法院文書楼熄、知識產(chǎn)權(quán)忆绰、企業(yè)信息、信用信息等常規(guī)商業(yè)信息領(lǐng)域可岂,而另一個受爬蟲青睞的是掛號類平臺错敢,從數(shù)據(jù)來看應(yīng)該是一些代掛號平臺提供的搶號服務(wù)。
6. 運營商
運營商的惡意爬蟲流量主要集中在運營商各種互聯(lián)網(wǎng)套餐手機卡的查詢缕粹。由于互聯(lián)網(wǎng)套餐手機卡存在較高的性價比稚茅,因此網(wǎng)絡(luò)上形成了相關(guān)的刷靚號、搶號平斩、代購等產(chǎn)業(yè)鏈亚享。
網(wǎng)絡(luò)上存在多種通過爬蟲技術(shù)進行靚號手機號搜索的工具,選擇手機卡類型绘面,再不斷爬取待售手機號欺税,尋找到符合理想靚號規(guī)則的號碼侈沪。下圖為某掃號工具截圖,可選擇數(shù)十種不同的互聯(lián)網(wǎng)套餐卡:
某手機靚號掃號工具截圖
7. 自媒體
根據(jù)本次統(tǒng)計晚凿,自媒體類爬蟲主要集中于微信訂閱號關(guān)鍵詞搜索和文章訪問亭罪,分別占總量的64.91%和20.73%,其他自媒體平臺約占14.36%晃虫。
8. 地圖
地圖類爬蟲比較常規(guī)皆撩,主要是爬取地理位置周邊商戶詳細信息為主。
9. SEO
SEO 類惡意爬蟲通常是頻繁搜索相關(guān)詞匯哲银,來影響搜索引擎的排名扛吞。
10. 新聞
新聞類惡意爬蟲主要用于爬取聚合類新聞 APP 及各大門戶的新聞信息。以搜索引擎的新聞平臺和聚合類APP的數(shù)據(jù)為主荆责,傳統(tǒng)門戶類爬蟲較少光顧滥比。
11. 其他
其他主要被爬蟲光顧的領(lǐng)域還有新聞、招聘做院、問答盲泛、百科、物流键耕、分類信息寺滚、小說等,不進行一一列舉屈雄。
三村视、爬蟲來源 IP 分布
1. 國家分布
從本次半年度統(tǒng)計捕獲到的爬蟲流量源 IP 來看,大部分都來自國內(nèi)酒奶,超過90%蚁孔,其次主要來自美國、德國惋嚎、日本等國家杠氢。
2. 國內(nèi)分布
將源自國內(nèi)的數(shù)據(jù)抽出來進行細分,可以看到另伍,主要來自北京鼻百、天津、河北摆尝、上海等省市愕宋,以上4個地區(qū)所占國內(nèi)惡意爬蟲流量超70%。這并不是因為爬蟲作者都來自這些地區(qū)结榄,而是因為大量的爬蟲部署在租用的 IDC 機房,這些機房大多在發(fā)達省市囤捻。
3. 網(wǎng)絡(luò)分布
該圖是惡意爬蟲源 IP 的網(wǎng)絡(luò)分布臼朗,可以看到,超過一半來自國內(nèi)運營商網(wǎng)絡(luò),而這其中大比例是源自運營商的 IDC 機房视哑。云計算廠商方面绣否,國內(nèi)主要云廠商都有上榜。
整體數(shù)據(jù)來看挡毅,惡意爬蟲絕大部分都是來自 IDC 機房蒜撮,隨著惡意程序云端化,云計算廠商應(yīng)當對云資源被濫用的情況進行及時了解和處理跪呈。
四段磨、爬蟲與反爬蟲的對抗
作為互聯(lián)網(wǎng)對抗最激烈的戰(zhàn)場之一,說到爬蟲耗绿,就不能不提反爬蟲苹支。當反爬蟲工程師對爬蟲進行了反殺,爬蟲工程師也不會任人宰割误阻,很快又研究出了各種反對抗技術(shù)债蜜。
1. 對手是誰
爬蟲和反爬蟲的斗爭由來已久,要想做好反爬蟲究反,先要知道對手有哪些寻定,才好制定相應(yīng)的策略。反爬蟲工程師的對手通常來自以下幾類:
應(yīng)屆畢業(yè)生
每年三月份左右通常會有一波爬蟲高峰精耐,和應(yīng)屆畢業(yè)生(本科狼速、碩士、博士)有關(guān)黍氮,為了讓論文有數(shù)據(jù)支撐唐含,他們的爬蟲簡單粗暴,忽略了服務(wù)器壓力沫浆,且人數(shù)不可預(yù)測捷枯。
創(chuàng)業(yè)小公司:初創(chuàng)公司缺少數(shù)據(jù)支撐,為了公司生存問題专执,爬取別家數(shù)據(jù)淮捆,不過通常持續(xù)不久,較易被反爬蟲手段逼退本股。
成型的商業(yè)對手:反爬蟲工作最大的對手攀痊,有錢有人有技術(shù),如果需要拄显,會通過分布式苟径、跨省機房、ADSL 等種種手段進行長期爬取躬审。如果雙方持續(xù)對抗棘街,最終的結(jié)果可能會是彼此找到平衡點蟆盐。
失控爬蟲:許多爬蟲放于服務(wù)器運行后,就被程序員忘了遭殉,它們或許早已爬不到數(shù)據(jù)了石挂,但依然會孜孜不倦的消耗服務(wù)器資源,直到爬蟲所在服務(wù)器到期险污。
2. 技術(shù)對抗
猶如安全專家和黑客之爭痹愚,爬蟲工程師和反爬蟲工程師也是相愛相殺、你來我往蛔糯、螺旋上升拯腮。經(jīng)過幾番的技術(shù)升級,常用的反爬蟲及對應(yīng)的反反爬蟲方案如下:
驗證碼
驗證碼是最常用的反爬蟲措施渤闷,但簡單驗證碼通過機器學(xué)習(xí)自動識別疾瓮,通常正確率能達到50%以上甚至更高。
復(fù)雜驗證碼通過提交到專門的打碼平臺進行人工打碼飒箭,依據(jù)驗證碼的復(fù)雜度狼电,打碼工人平均每碼收1-2分錢。也同樣容易被繞過弦蹂,使得數(shù)據(jù)容易被爬取肩碟。
封 IP
這是最有效也最容易誤殺的方案。該策略建立在 IP 稀有的前提下凸椿,目前通過代理池購買或者撥號 VPS 等方式削祈,可以低成本獲取數(shù)十萬的 IP 池,導(dǎo)致單純的封IP策略效果越來越差脑漫。
滑塊驗證
滑塊驗證結(jié)合了機器學(xué)習(xí)技術(shù)髓抑,只需要滑動滑塊,而不用看那些復(fù)雜到有時人眼也無法分辨的字母优幸。但由于部分廠商實現(xiàn)時校驗算法較為簡單吨拍,導(dǎo)致經(jīng)常只需要相對簡單的模擬滑動操作就能繞過,從而使得數(shù)據(jù)被惡意爬取网杆。
關(guān)聯(lián)請求上下文
反爬蟲可以通過 Token 或網(wǎng)絡(luò)請求上下文是否進行了完整流程的方式來判斷是否真人訪問羹饰。但對具有協(xié)議分析能力的技術(shù)人員來說進行全量模擬并沒有太大困難。
javascript 參與運算
簡單的爬蟲無法進行 js 運算碳却,如果部分中間結(jié)果需要 js 引擎對 js 進行解析和運算队秩,那么就可以讓攻擊者無法簡單進行爬取。但爬蟲開發(fā)者依然可以通過自帶 js 引擎模塊或直接使用 phantomjs 等無端瀏覽器進行自動化解析昼浦。
提高數(shù)據(jù)獲取成本
當面對的是職業(yè)選手時馍资,只能通過提升對方人力成本來實現(xiàn),比如代碼混淆关噪、動態(tài)加密方案鸟蟹、假數(shù)據(jù)等方式物舒,利用開發(fā)速度大于分析速度的優(yōu)勢,來拖垮對方的意志戏锹。如果對方咬定不放松,那只能持續(xù)對抗火诸,直到一方由于機器成本或人力成本放棄锦针。
當對抗到了這個階段,與安全對抗一樣置蜀,技術(shù)之爭就進入了鏖戰(zhàn)的「平衡期」奈搜,此時反爬蟲工程師對抗掉了大部分的低級玩家,剩下的高級爬蟲工程師也默契的保持一個不給服務(wù)器太大壓力的爬取速度盯荤,雙方猶如太極推手馋吗,那下一步如何打破這個平衡?
五秋秤、對抗新思路:云端 AI 反爬蟲
爬蟲和反爬蟲的對抗宏粤,在云計算成為趨勢后,逐漸加入了第三方勢力灼卢,云計算廠商可直接為企業(yè)提供云端反爬能力绍哎,將戰(zhàn)局從反爬蟲與爬蟲的 1v1 變成了企業(yè)+云廠商與爬蟲 的 2v1侣诵,助力企業(yè)的反爬能力携龟。
尤其是近年來 AI 技術(shù)不斷突破,為解決許多問題提供了全新思路俄烁∩В基于這個角度海诲,云鼎實驗室通過深度學(xué)習(xí)技術(shù)對海量真實惡意爬蟲流量進行分析,認為將 AI 技術(shù)引入反爬蟲領(lǐng)域能起到極好的補充效果檩互,將是未來此類對抗領(lǐng)域的趨勢所在特幔。
我們拭目以待。