05.21 五分鐘瞭解爬蟲 爬蟲與反爬蟲的博弈

一.簡介

萬維網上有著無數的網頁,包含著海量的信息,有些時候我們需要從某些網站提取出我們感興趣、有價值的內容。但是不可能靠人工去點擊網頁複製粘貼。我們需要一種能自動獲取網頁內容並可以按照指定規則提取相應內容的程序,這就是爬蟲。

網絡爬蟲本質就是http請求,瀏覽器是用戶主動操作然後完成HTTP請求,而爬蟲需要自動完成http請求,網絡爬蟲需要一套整體架構完成工作。

一般來說一個完整的爬蟲生命週期包括:URL管理、頁面下載、內容抽取、持久化

五分鐘瞭解爬蟲 爬蟲與反爬蟲的博弈

URL管理

首先url管理器添加了新的url到待爬取集合中,判斷了待添加的url是否在容器中、是否有待爬取的url,並且獲取待爬取的url,將url從待爬取的url集合移動到已爬取的url集合。

頁面下載

下載器將接收到的url傳給互聯網,互聯網返回html文件給下載器,下載器將其保存到本地,一般的會對下載器做分佈式部署,一個是提交效率,再一個是起到請求代理作用。

內容抽取

頁面解析器主要完成的是從獲取的html網頁字符串中取得有價值的感興趣的數據和新的url列表。數據抽取比較常用的手段有基於css選擇器、正則表達式、xpath的規則提取。一般提取完後還會對數據進行一定的清洗或自定義處理,從而將請求到的非結構數據轉化為我們需要的結構化數據。

數據持久化

數據持久化到相關的數據庫、隊列、文件等方便做數據計算和與應用對接。

二.爬蟲分類

網絡爬蟲按照實現的技術和結構一般分為通用網絡爬蟲、聚焦網絡爬蟲。從特性上也有增量式網絡爬蟲和深層網絡爬蟲等類別,在實際的網絡爬蟲中,通常是這幾類爬蟲的組合體。

通用網絡爬蟲

通用網絡爬蟲(General Purpose Web Crawler)。通用網絡爬蟲又叫作全網爬蟲,顧名思義,通用網絡爬蟲爬取的目標資源在全互聯網中。通用網絡爬蟲所爬取的目標數據是巨大的,並且爬行的範圍也是非常大的,正是由於其爬取的數據是海量數據,故而對於這類爬蟲來說,其爬取的性能要求是非常高的。這種網絡爬蟲主要應用於大型搜索引擎中,有非常高的應用價值。

五分鐘瞭解爬蟲 爬蟲與反爬蟲的博弈

通用網絡爬蟲主要由初始URL集合、URL隊列、頁面爬行模塊、頁面分析模塊、頁面數據庫、鏈接過濾模塊等構成。通用網絡爬蟲在爬行的時候會採取一定的爬行策略,主要有深度優先爬行策略和廣度優先爬行等策略。

聚焦網絡爬蟲

聚焦網絡爬蟲(Focused Crawler)也叫主題網絡爬蟲,顧名思義,聚焦網絡爬蟲是按照預先定義好的主題有選擇地進行網頁爬取的一種爬蟲,聚焦網絡爬蟲不像通用網絡爬蟲一樣將目標資源定位在全互聯網中,而是將爬取的目標網頁定位在與主題相關的頁面中,此時,可以大大節省爬蟲爬取時所需的帶寬資源和服務器資源。聚焦網絡爬蟲主要應用在對特定信息的爬取中,主要為某一類特定的人群提供服務。

聚焦網絡爬蟲主要由初始URL集合、URL隊列、頁面爬行模塊、頁面分析模塊、頁面數據庫、鏈接過濾模塊、內容評價模塊、鏈接評價模塊等構成。內容評價模塊可以評價內容的重要性,同理,鏈接評價模塊也可以評價出鏈接的重要性,然後根據鏈接和內容的重要性,可以確定哪些頁面優先訪問。

五分鐘瞭解爬蟲 爬蟲與反爬蟲的博弈

增量式網絡爬蟲

增量式網絡爬蟲(Incremental Web Crawler),所謂增量式,對應著增量式更新。增量式更新指的是在更新的時候只更新改變的地方,而未改變的地方則不更新,所以增量式網絡爬蟲,在爬取網頁的時候,只爬取內容發生變化的網頁或者新產生的網頁,對於未發生內容變化的網頁,則不會爬取。增量式網絡爬蟲在一定程度上能夠保證所爬取的頁面,儘可能是新頁面。

深層網絡爬蟲

深層網絡爬蟲(Deep Web Crawler),常規的網絡爬蟲在運行中無法發現隱藏在普通網頁中的信息和規律,缺乏一定的主動性和智能性。深層網絡爬蟲則可以抓取到深層網頁的數據。一般網絡頁面分為表層網頁和深層網頁。 表層網頁是指傳統搜索引擎可以索引的頁面,而深層頁面是隻有用戶提交一些關鍵詞才能獲得的頁面,例如那些用戶註冊後內容才可見的網頁就屬於深層網頁。

五分鐘瞭解爬蟲 爬蟲與反爬蟲的博弈

三.爬蟲與反爬蟲

爬蟲目的是自動化的從目標網頁獲取數據,但是這個行為會對目標站點造成一定壓力,對方出於對站點性能或數據的保護,一般都會有反爬手段。所以在開發爬蟲過程中需要考慮反反爬。

爬蟲開發過程中常見分佈式(代理IP)、異步數據解析(內置瀏覽器內核)、光學圖片識別、模擬驗證(模擬請求Header、User-Agent、Token)等手段。網絡爬蟲會為Web服務器帶來巨大的資源開銷,當我們編寫的爬蟲數據不能給我們帶來價值時,我們應停止沒必要的網絡請求來給互聯網減少干擾。

站點反爬一般會考慮後臺對訪問進行統計,對單個IP,Session、單種User-Agent訪問超過閾值或 Referer缺失的請求進行封鎖,Robots協議,異步數據加載,頁面動態化,請求驗證攔截等。高端的反反爬包括混淆、不穩定代碼、給假數據(投毒)、行為分析、假鏈陷阱、字符轉圖片等。一般反爬蟲策略多數用在比較低級的爬蟲上,這類爬蟲多為簡單粗暴的不顧服務器壓力不停訪問,再一種為失控的或被人遺忘的爬蟲,這類爬蟲一般需要在第一時間封鎖掉。

鑑於爬蟲爬取的數據為目標網站發佈於互聯網的公開數據,所以理論上是不可能完全阻止掉爬蟲的。站點能做的只是增加爬蟲的爬取難度,讓爬蟲的開發成本增高從而知難而退。越是高級的爬蟲,越難被封鎖,相應高級爬蟲的開發成本也越高。在對高級爬蟲進行封鎖時,如果成本高到一定程度,並且爬蟲不會給自己帶來大的性能壓力和數據威脅時,這時就無需繼續提升成本和爬蟲對抗了。目前大多熱門站點在與爬蟲的博弈中,多維持著一個爬蟲與反爬蟲的平衡,畢竟雙方都是為了在商業市場中獲取利益,而不是不計成本的幹掉對方。

文 / Mob 馬波

五分鐘瞭解爬蟲 爬蟲與反爬蟲的博弈

ShareSDK 輕鬆實現社會化功能,以其強大的 App 社交分享功能深受開發者熟知和好評;

SMSSDK 可快速集成短信驗證功能,幫助開發者打通手機通訊錄好友的社交圈;

MobLink 打破了 App 孤島,實現了 Web 與 App 的無縫鏈接,新用戶在首次打開 App 時,大大提高用戶轉化率;

Mob統計分析 用數據驅動產品,精準化行為分析 + 多維數據模型 + 匹配全網標籤 + 垂直行業分析顧問;

MobPush 快速集成推送服務,應對多樣化推送場景;

BBSSDK 是 Discuz 論壇移動化解決方案,同步 Discuz 論壇數據實現論壇移動化;

ShareREC 手遊錄像分享則是 ShareSDK 圖文分享的延伸,可為手遊實現邊玩邊錄的功能,以此提升玩家黏度並有效促進推廣;

MobAPI 為開發者提供各種所需的原始數據及穩定的 API SERVICE,也免去了自己收集數據的繁瑣步驟;

MobPay 多種主流支付渠道可一鍵接入,滿足企業多樣化需求;

ShopSDK 2小時快速搭建您的商城系統,商品管理 - 訂單交易 - 售後退款 - 整套解決方案,豐富您APP的應用場景;

MobIM 為開發者提供即時通訊的消息通道服務,專注於保障通訊的安全穩定可靠,支持開發者使用App的自有用戶系統,或第三方用戶系統;

App工廠 全新App製作解決方案 ,可組合幾十種不同種類的App滿足電商、生活服務、教育、資訊、社交等多個行業的需求;

截止 2017 年 12 月

Mob 開發者服務平臺全球設備覆蓋超過 76 億,SDK下載量超過 318 萬次,服務超過 36 萬款移動應用。


分享到:


相關文章: