[原創] 2018上半年網際網路惡意爬蟲分析:從全景視角看爬蟲與反爬蟲
導語:網際網路最激烈的對抗戰場,除了安全專家與駭客之間,大概就是爬蟲與反爬蟲領域了。據統計,爬蟲流量早已超過了人類真實訪問請求流量。網際網路充斥著形形色色的爬蟲,雲上、傳統行業都有不同規模的使用者被爬蟲愛好者盯上,這些爬蟲從哪裡來?爬取了誰的資料?資料將被用於何處?
近日,騰訊雲釋出2018上半年安全專題系列研究報告,該系列報告圍繞雲上使用者最常遭遇的安全威脅展開,用資料統計揭露攻擊現狀,透過溯源還原攻擊者手法,讓企業使用者與其他使用者在應對攻擊時有跡可循,併為其提供可靠的安全指南。本篇報告中,雲鼎實驗室透過部署的威脅感知系統,捕獲到大量爬蟲請求流量以及真實來源 IP,且基於2018年上半年捕獲的數億次爬蟲請求,對網際網路爬蟲行為進行分析。
一、基本概念
1. 爬蟲是什麼?
爬蟲最早源於搜尋引擎,它是一種按照一定的規則,自動從網際網路上抓取資訊的程式。
搜尋引擎是善意的爬蟲,它爬取網站的所有頁面,提供給其他使用者進行快速搜尋和訪問,給網站帶來流量。為此,行業還達成了 Robots 君子協議,讓網際網路上的搜尋與被搜尋和諧相處。
原本雙贏的局面,很快就被一些人破壞了,如同其他技術,爬蟲也是一把雙刃劍,變得不再「君子」。尤其是近年來「大資料」的概念,吸引了許多公司肆意爬取其他公司的資料,於是「惡意爬蟲」開始充斥網際網路。
本篇報告主要聚焦於「惡意爬蟲」,不討論搜尋引擎爬蟲及合法爬蟲等。
2. 爬蟲的分類
按爬蟲功能,可以分為網頁爬蟲和介面爬蟲。
網頁爬蟲:以搜尋引擎爬蟲為主,根據網頁上的超連結進行遍歷爬取。
介面爬蟲:透過精準構造特定 API 介面的請求資料,而獲得大量資料資訊。
按授權情況,可以分為合法爬蟲和惡意爬蟲。
合法爬蟲:以符合 Robots 協議規範的行為爬取網頁,或爬取網路公開介面,或購買介面授權進行爬取,均為合法爬蟲,該類爬蟲通常不用考慮反爬蟲等對抗性工作。
惡意爬蟲:透過分析並自行構造引數對非公開介面進行資料爬取或提交,獲取對方本不願意被大量獲取的資料,並有可能給對方伺服器效能造成極大損耗。此處通常存在爬蟲和反爬蟲的激烈交鋒。
3. 資料從哪來?
爬蟲不生產資料,它們只是資料的搬運工。要研究爬蟲,就得先研究資料的來源。尤其是對小型公司來說,往往需要更多外部資料輔助商業決策。如何在廣袤的網際網路中獲取對自己有價值的資料,是許多公司一直考慮的問題。通常來說,存在以下幾大資料來源:
➢ 企業產生的使用者資料
如 BAT 等公司,擁有大量使用者,每天使用者都會產生海量的原始資料。
另外還包括 PGC (專業生產內容)和 UGC (使用者生產內容)資料,如新聞、自媒體、微博、短影片等等。
➢ 政府、機構的公開資料
如統計局、工商行政、智慧財產權、銀行證券等公開資訊和資料。
➢ 第三方資料庫購買
市場上有很多產品化的資料庫,包括商業類和學術類,如 Bloomberg、 CSMAR、 Wind、知網等等,一般以公司的名義購買資料查詢許可權,比如諮詢公司、高等院校、研究機構都會購買。
➢ 爬蟲獲取網路資料
使用爬蟲技術,進行網頁爬取,或透過公開和非公開的介面呼叫,獲得資料。
➢ 公司間進行資料交換
不同公司間進行資料交換,彼此進行資料補全。
➢ 商業間諜或駭客竊取資料
透過內鬼渠道獲取其他公司使用者資料,或者利用駭客等非常規手段,透過定製入侵獲取資料或地下黑市購買其他公司資料。此處內鬼洩漏遠多於駭客竊取。
二、惡意爬蟲的目標
從前面總結的資料來源看,第三方資料庫購買或資料竊取的渠道都不涉及爬蟲,真正屬於惡意爬蟲目標的,主要是網際網路公司和政府相關部門的資料。
行業總體分佈
透過對捕獲的海量惡意爬蟲流量進行標註,整理出惡意爬蟲流量最大的行業 TOP 10 排行,詳情如下:
由統計可見,出行類惡意爬蟲流量佔比高於電商與社交行業,居首位,其次是點評、運營商、公共行政等。接下來逐個行業進行分析:
1. 出行
➢ 實時火車票資訊
對火車購票平臺的惡意爬蟲訪問佔據了出行行業近90%的流量,淺析可知其實比較合理,幾百個城市,幾千趟列車構成國內鐵路網,火車站與車次排列組合後是一個非常大的資料集,隨著人工購票快速向網際網路購票過渡,第三方代購和搶票服務商便越來越多,而任意一家要做到資料實時重新整理,都需要不小的爬蟲叢集,因此導致火車票購買站點成為爬蟲光顧最頻繁的業務。
➢ 實時機票資訊
機票類佔據出行類8.77%的惡意爬蟲流量,主要是爬取各大航空公司實時票價。
➢ 實時公交資訊
主要爬取市內公交 GPS 資訊。
➢ 實時共享單車資訊
主要爬取特定區域周邊的實時共享單車資訊。
➢ 酒店空房資訊
酒店爬取佔比較少,主要是刷酒店房價,與交通類比較可忽略不計
2. 社交
由於國內的社交平臺多數以純 APP 為主,部分社交平臺並不支援網頁功能,因此捕獲到的社交類爬蟲主要集中在微博類平臺,以爬取使用者資訊和所釋出的內容為主。
3. 電商
4. O2O
O2O 行業惡意爬蟲主要集中在點評類和團購類公司,其中以爬取商鋪動態資訊和星級評分資訊的點評類資料為主,佔總數的90%以上。
5. 公共行政
公共行政類惡意爬蟲主要集中在法院文書、智慧財產權、企業資訊、信用資訊等常規商業資訊領域,而另一個受爬蟲青睞的是掛號類平臺,從資料來看應該是一些代掛號平臺提供的搶號服務。
6. 運營商
運營商的惡意爬蟲流量主要集中在運營商各種網際網路套餐手機卡的查詢。由於網際網路套餐手機卡存在較高的價效比,因此網路上形成了相關的刷靚號、搶號、代購等產業鏈。
網路上存在多種透過爬蟲技術進行靚號手機號搜尋的工具,選擇手機卡型別,再不斷爬取待售手機號,尋找到符合理想靚號規則的號碼。下圖為某掃號工具截圖,可選擇數十種不同的網際網路套餐卡:
(某手機靚號掃號工具截圖)
7. 自媒體
根據本次統計,自媒體類爬蟲主要集中於微信訂閱號關鍵詞搜尋和文章訪問,分別佔總量的64.91%和20.73%,其他自媒體平臺約佔14.36%。
8. 地圖
地圖類爬蟲比較常規,主要是爬取地理位置周邊商戶詳細資訊為主。
9. SEO
SEO 類惡意爬蟲通常是頻繁搜尋相關詞彙,來影響搜尋引擎的排名。
10. 新聞
新聞類惡意爬蟲主要用於爬取聚合類新聞 APP 及各大門戶的新聞資訊。以搜尋引擎的新聞平臺和聚合類APP的資料為主,傳統門戶類爬蟲較少光顧。
11. 其他
其他主要被爬蟲光顧的領域還有新聞、招聘、問答、百科、物流、分類資訊、小說等,不進行一一列舉。
三、爬蟲來源 IP 分佈
1. 國家分佈
從本次半年度統計捕獲到的爬蟲流量源 IP 來看,大部分都來自國內,超過90%,其次主要來自美國、德國、日本等國家。
2. 國內分佈
將源自國內的資料抽出來進行細分,可以看到,主要來自北京、天津、河北、上海等省市,以上4個地區所佔國內惡意爬蟲流量超70%。這並不是因為爬蟲作者都來自這些地區,而是因為大量的爬蟲部署在租用的 IDC 機房,這些機房大多在發達省市。
3. 網路分佈
該圖是惡意爬蟲源 IP 的網路分佈,可以看到,超過一半來自國內運營商網路,而這其中大比例是源自運營商的 IDC 機房。雲端計算廠商方面,國內主要雲廠商都有上榜。
整體資料來看,惡意爬蟲絕大部分都是來自 IDC 機房,隨著惡意程式雲端化,雲端計算廠商應當對雲資源被濫用的情況進行及時瞭解和處理。
四、爬蟲與反爬蟲的對抗
作為網際網路對抗最激烈的戰場之一,說到爬蟲,就不能不提反爬蟲。當反爬蟲工程師對爬蟲進行了反殺,爬蟲工程師也不會任人宰割,很快又研究出了各種反對抗技術。
1. 對手是誰
爬蟲和反爬蟲的鬥爭由來已久,要想做好反爬蟲,先要知道對手有哪些,才好制定相應的策略。反爬蟲工程師的對手通常來自以下幾類:
➢ 應屆畢業生
每年三月份左右通常會有一波爬蟲高峰,和應屆畢業生(本科、碩士、博士)有關,為了讓論文有資料支撐,他們的爬蟲簡單粗暴,忽略了伺服器壓力,且人數不可預測。
➢ 創業小公司
初創公司缺少資料支撐,為了公司生存問題,爬取別家資料,不過通常持續不久,較易被反爬蟲手段逼退。
➢ 成型的商業對手
反爬蟲工作最大的對手,有錢有人有技術,如果需要,會透過分散式、跨省機房、ADSL 等種種手段進行長期爬取。如果雙方持續對抗,最終的結果可能會是彼此找到平衡點。
➢ 失控爬蟲
許多爬蟲放於伺服器執行後,就被程式設計師忘了,它們或許早已爬不到資料了,但依然會孜孜不倦地消耗伺服器資源,直到爬蟲所在伺服器到期。
2. 技術對抗
猶如安全專家和駭客之爭,爬蟲工程師和反爬蟲工程師也是相愛相殺、你來我往、螺旋上升。經過幾番的技術升級,常用的反爬蟲及對應的反反爬蟲方案如下:
➢ 驗證碼
驗證碼是最常用的反爬蟲措施,但簡單驗證碼透過機器學習自動識別,通常正確率能達到50%以上甚至更高。
複雜驗證碼透過提交到專門的打碼平臺進行人工打碼,依據驗證碼的複雜度,打碼工人平均每碼收1-2分錢。也同樣容易被繞過,使得資料容易被爬取。
➢ 封 IP
這是最有效也最容易誤殺的方案。該策略建立在 IP 稀有的前提下,目前透過代理池購買或者撥號 VPS 等方式,可以低成本獲取數十萬的 IP 池,導致單純的封IP策略效果越來越差。
➢ 滑塊驗證
滑塊驗證結合了機器學習技術,只需要滑動滑塊,而不用看那些複雜到有時人眼也無法分辨的字母。但由於部分廠商實現時校驗演算法較為簡單,導致經常只需要相對簡單的模擬滑動操作就能繞過,從而使得資料被惡意爬取。
➢ 關聯請求上下文
反爬蟲可以透過 Token 或網路請求上下文是否進行了完整流程的方式來判斷是否真人訪問。但對具有協議分析能力的技術人員來說進行全量模擬並沒有太大困難。
➢ javascript 參與運算
簡單的爬蟲無法進行 js 運算,如果部分中間結果需要 js 引擎對 js 進行解析和運算,那麼就可以讓攻擊者無法簡單進行爬取。但爬蟲開發者依然可以透過自帶 js 引擎模組或直接使用 phantomjs 等無端瀏覽器進行自動化解析。
➢ 提高資料獲取成本
當面對的是職業選手時,只能透過提升對方人力成本來實現,比如程式碼混淆、動態加密方案、假資料等方式,利用開發速度大於分析速度的優勢,來拖垮對方的意志。如果對方咬定不放鬆,那隻能持續對抗,直到一方由於機器成本或人力成本放棄。
當對抗到了這個階段,與安全對抗一樣,技術之爭就進入了鏖戰的「平衡期」,此時反爬蟲工程師對抗掉了大部分的低階玩家,剩下的高階爬蟲工程師也默契的保持一個不給伺服器太大壓力的爬取速度,雙方猶如太極推手,那下一步如何打破這個平衡?
五、對抗新思路:雲端 AI 反爬蟲
爬蟲和反爬蟲的對抗,在雲端計算成為趨勢後,逐漸加入了第三方勢力,雲端計算廠商可直接為企業提供雲端反爬能力,將戰局從反爬蟲與爬蟲的 1v1 變成了企業+雲廠商與爬蟲 的 2v1,助力企業的反爬能力。
尤其是近年來 AI 技術不斷突破,為解決許多問題提供了全新思路。基於這個角度,雲鼎實驗室透過深度學習技術對海量真實惡意爬蟲流量進行分析,認為將 AI 技術引入反爬蟲領域能起到極好的補充效果,將是未來此類對抗領域的趨勢所在。
為此,騰訊雲網站管家 (WAF) 聯合雲鼎實驗室基於海量真實爬蟲流量建立更為通用的爬蟲識別模型,已卓有成效,後續將致力於把最強的識別能力開放給各企業。
騰訊安全雲鼎實驗室主要關注騰訊雲安全體系建設,專注於雲上網路環境的攻防研究和安全運營,以及基於機器學習等前沿技術理念打造雲安全產品。
2020安全開發者峰會(2020 SDC)議題徵集 中國.北京 7月!
相關文章
- 網路爬蟲——爬蟲實戰(一)2022-01-29爬蟲
- python網路爬蟲_Python爬蟲:30個小時搞定Python網路爬蟲視訊教程2020-10-21Python爬蟲
- 反爬蟲之字型反爬蟲2019-06-27爬蟲
- python爬蟲---網頁爬蟲,圖片爬蟲,文章爬蟲,Python爬蟲爬取新聞網站新聞2019-01-04Python爬蟲網頁網站
- 網路爬蟲2018-12-07爬蟲
- 爬蟲與反爬蟲技術簡介2022-09-20爬蟲
- 惡意爬蟲?能讓惡意爬蟲遁於無形的小Tips2023-05-09爬蟲
- [Python] 網路爬蟲與資訊提取(1) 網路爬蟲之規則2020-11-06Python爬蟲
- 【Python學習】爬蟲爬蟲爬蟲爬蟲~2018-05-03Python爬蟲
- 網路爬蟲精要2019-04-27爬蟲
- 網路爬蟲示例2018-10-30爬蟲
- C#爬蟲與反爬蟲--字型加密篇2019-06-26C#爬蟲加密
- python網路爬蟲(14)使用Scrapy搭建爬蟲框架2019-07-27Python爬蟲框架
- 反網路爬蟲以及解決方案2019-03-07爬蟲
- 通用爬蟲與聚焦爬蟲2023-04-18爬蟲
- python網路爬蟲應用_python網路爬蟲應用實戰2020-12-29Python爬蟲
- python網路爬蟲(9)構建基礎爬蟲思路2019-06-09Python爬蟲
- 網路爬蟲專案2022-01-29爬蟲
- 網路爬蟲的原理2018-12-02爬蟲
- python DHT網路爬蟲2019-02-14Python爬蟲
- 《網頁爬蟲》2018-11-26網頁爬蟲
- 什麼是Python網路爬蟲?常見的網路爬蟲有哪些?2020-11-27Python爬蟲
- 爬蟲(9) - Scrapy框架(1) | Scrapy 非同步網路爬蟲框架2022-07-05爬蟲框架非同步
- 精通Scrapy網路爬蟲【一】第一個爬蟲專案2021-06-19爬蟲
- 網路爬蟲---從千圖網爬取圖片到本地2019-09-03爬蟲
- 【python--爬蟲】彼岸圖網高清桌布爬蟲2019-07-21Python爬蟲
- 識別網路爬蟲的策略分析2022-09-14爬蟲
- 爬蟲:多程式爬蟲2021-05-19爬蟲
- 2個月精通Python爬蟲——3大爬蟲框架+6場實戰+反爬蟲技巧+分散式爬蟲2018-06-28Python爬蟲框架分散式
- 什麼是網路爬蟲?為什麼用Python寫爬蟲?2021-03-08爬蟲Python
- 《Python3網路爬蟲開發實戰》教程||爬蟲教程2018-11-13Python爬蟲
- 手把手教你寫網路爬蟲(2):迷你爬蟲架構2018-04-27爬蟲架構
- 什麼是網路爬蟲?2022-12-09爬蟲
- 網路爬蟲流程總結2023-03-09爬蟲
- 網路爬蟲是什麼?2022-05-25爬蟲
- python網路爬蟲合法嗎2021-09-11Python爬蟲
- 網路爬蟲的反扒策略2021-09-11爬蟲
- 專案--python網路爬蟲2020-08-15Python爬蟲