淺談網絡爬蟲技術與反爬蟲防護
?什么是網絡爬蟲
網絡爬蟲本質上是一段計算機程序或腳本,其按照一定的邏輯和算法規則自動地抓取互聯網信息。
網絡爬蟲的分類及技術原理
網絡爬蟲按照實現的技術和結構可以分為以下幾種類型:通用網絡爬蟲、聚焦網絡爬蟲、增量式網絡爬蟲、深層網絡爬蟲等。在實際的網絡爬蟲中,通常是這幾類爬蟲的組合體。
1、通用網絡爬蟲(Scalable Web Crawler)
通用網絡爬蟲又叫作全網爬蟲,爬取的目標資源在整個互聯網上,由于信息量巨大,常用于大型的搜索引擎中。它主要由初始化URL集合、URL隊列、頁面爬行模塊、頁面分析模塊、數據庫等構成。具體步驟是首先選取部分種子URL,將這些URL放入待抓取URL隊列,進行循環提取,一旦滿足停止條件則不再進行網絡爬蟲搜索。通用網絡爬蟲由于抓取的信息巨大,常使用分布式網絡爬蟲框架進行設計實現。
圖1-1 通用網絡爬蟲原理及過程?
2、聚焦網絡爬蟲(Focused Crawler)
聚焦網絡爬蟲,也叫主題網絡爬蟲,是指按照預先定義好的主題,有選擇地進行相關網頁爬取的一種爬蟲。和通用網絡爬蟲的區別在于,聚焦網絡爬蟲在實施頁面抓取時會對內容進行處理篩選,將爬取的目標網頁定位在與需求相關的頁面中。目前爬蟲應用中絕大多數是聚焦爬蟲。
圖1-2 聚焦網絡爬蟲示例PYTHON代碼
3、增量式網絡爬蟲(Incremental Web Crawler)
增量式網絡爬蟲在爬取網頁的時候只會在需要的時候爬取新產生或發生更新的頁面,對于沒有發生變化的頁面則不會爬取。這樣能有效地減少數據下載量并及時更新已爬取過的網頁,減少時間和存儲空間上的浪費,但該算法的復雜度和實現難度更高。應用場景包括某電商網站會實時更新一批最近商品,書籍網站根據作者創作的進度實時更新最新的章節數據等,遇到類似的場景時,便可以采用增量式網絡爬蟲。
為了使爬蟲獲取到的數據以增量的形式穩定增長,增量爬蟲的核心就是去重。Redis中的Set集合具有天然的去重屬性,所以往往采用的策略是將爬取過程中產生的URL進行存儲,存入到Redis中的Set中,當下次再爬取的時候,對在存儲的URL中的Set中進行判斷,如果URL存在則不發起請求,否則就發起請求。
4、深層網絡爬蟲
Web頁面按存在方式可以分為表層網頁(Surface Web)和深層網頁(Deep Web)。表層網頁指的直接使用靜態的超鏈接就可以直接訪問的靜態頁面。深層網頁指的是那些大部分內容不能通過靜態鏈接獲取的、隱藏在搜索表單后面的,需要用戶提交一些關鍵詞才能獲得的Web頁面。
反爬蟲
一方面,爬蟲技術容易造成網站帶寬資源的侵占,有些惡意爬蟲可能會對服務器發起Dos攻擊嚴重導致服務器癱瘓,另一方面從法律上講,不正當的爬蟲行為還會造成用戶隱私的泄露,有的甚至導致公司的重要資源被批量爬取,喪失市 場競爭力。在這種背景下,發展反爬蟲技術尤為重要。
反爬蟲技術是使用技術手段,阻止別人批量獲取自己網站信息的一種方式。技術關鍵也在于批量自動化處理。反爬蟲的目標是將正常的用戶流量和爬蟲流量進行區分,并阻止爬蟲訪問內部真實數據。在實際反爬蟲的過程中,錯誤的將普通用戶識別為爬蟲被稱為誤傷率。通常來說,攔截率越高的反爬蟲策略,誤傷的可能性就越高,因此需要做權衡。
反爬蟲技術手段
針對惡意爬蟲,可通過軟件和硬件兩方面進行反爬蟲技術防護,采取如下措施來識別和阻斷它。
1、軟件方面
1.1 限制User-Agent字段
軟件編碼中User-Agent字段可以攜帶一串包括瀏覽器、操作系統、CPU等用戶設備信息的字符串,如果請求來自非瀏覽器,就能識別其為爬蟲,阻止爬蟲抓取網站信息。其缺點是攻擊者很容易將爬蟲請求的User-Agent字段偽裝成特定地址輕而易舉繞過這一規則。
1.2 數據加密
前端對一些關鍵請求參數,如一些用戶信息類,地址類進行加密,用加密后的數據請求服務器,這樣網絡爬蟲由于不知道密鑰,就無法進行模擬請求服務器。
1.3 驗證碼
使用驗證碼可以防止應用或者網站被惡意注冊、攻擊,對于網站、APP而言,大量的無效注冊、重復注冊甚至是惡意攻擊很令人頭痛。數字、字母加干擾線、噪點,字母重疊擺放,文字點選,滑動拼圖,圖片選擇,點擊驗證,鼠標軌跡等等,無論何種形式的驗證碼,其根本目的都是為了實現人機識別,通過交互來驗證發起請求的是人還是機器。
1.4 使用蜜罐系統
蜜罐最早是來自于網絡攻防中,主要指防守方故意設置一個或多個服務器漏洞,讓攻擊方輕易地入侵進來,而這些服務器一般安裝了監控軟件用來監控入侵者的一舉一動。
蜜罐技術作為主動欺騙防御技術的核心,通過暗設陷阱,主動誘導攻擊,動態感知攻擊行為并定位攻擊源,從而可以對攻擊行為進行捕獲和分析,推測攻擊意圖和動機來進行防御,保障網絡的安全運行。目前市面上一些主流云服務系統均搭建了蜜罐系統進行反爬蟲防御。
2、硬件方面
2.1 防火墻/服務器限制IP
爬蟲自動化程序一般對服務器內容的訪問量大,不同于正常用戶,通過在服務器或者防火墻將訪問量大的IP地址加入黑名單,禁止其訪問。不過限制IP缺點也很明顯,攻擊者可以通過IP代理的方法實現換IP的目的,來從而避免其IP加入黑名單。
2.2 部署Web應用防火墻WAF
WAF是檢測機器爬蟲流量最常用的硬件產品,常用三種方式:Robot檢測(識別User-Agent)、開啟JS腳本反爬蟲網站反爬蟲(檢查瀏覽器合法性)和CC攻擊防護(限制IP/Cookie/Referer訪問者對特定路徑訪問頻率),來解決業務網站遭受的爬蟲問題。
另外,目前一些云WAF廠商在此基礎上,還提供了智能的反爬蟲模塊,有的產品基于AI分析引擎,通過流量畫像匹配用戶爬蟲,從而建立模型和行為標簽,提供爬蟲和IP情報,使用戶快速識別爬蟲行為,從而進行相關的干預。
風險和挑戰
由于篇幅有限,一些技術細節并未開展詳細說明。但隨著大數據、人工智能時代的來臨,爬蟲與反爬蟲注定不僅僅是一場無休止的戰斗,而且還越來越具備智能交互、模型分析、決策判斷等技能。這給實際運維帶來新的挑戰,我們將持續關注該領域發展,提升抵御網絡爬蟲風險的各種能力。