網路爬蟲無處不在,無意中的鏈接分享就能泄露你的隱私
曾經有個朋友滿臉困惑地問起:「據說谷歌可以搜索到私人電子郵件,真的假的?」
回答前,需要解釋一下網頁爬蟲的作用。今天,搜索引擎已經成為大家上網衝浪的標配,甚至有「內事不決問百度,外事不決問谷歌」的說法。搜索引擎可以根據用戶的需要提供內容豐富的網上信息,相對於傳統的紙質信息媒介,從根本上改變了人們獲取及處理信息的習慣,極大提高了效率。而其基礎就在於大量收集網頁信息的網路爬蟲。在搜索引擎發展的初期,程序猿小哥哥相互間炫耀的一個指標就是,自己的爬蟲收集的網頁數量。
網路爬蟲
搜索引擎收集網上信息的主要手段就是網路爬蟲(也叫網頁蜘蛛、網路機器人)。它是一種「自動化瀏覽網路」的程序,按照一定的規則,自動抓取互聯網信息,比如:網頁、各類文檔、圖片、音頻、視頻等。搜索引擎通過索引技術組織這些信息,根據用戶的查詢快速地提供搜索結果。
具體來說,如果把互聯網上的網頁或網站理解為一個個節點,大量的網頁或網站將通過超鏈接形成網狀結構。人們瀏覽網頁時,通過點擊網頁上的鏈接,從一個節點跳轉到下一個節點,就像是在一張網上行走。網路爬蟲模擬了該行為,但是速度更快,跳轉的節點更全面,所以被形象地稱為網路爬蟲或網路蜘蛛。
隨著網路的迅速發展,不斷優化的網路爬蟲技術正在有效地應對各種挑戰,為高效搜索用戶關注的特定領域與主題提供了有力支撐,也為中小站點的推廣提供了有效的途徑,為此,網站針對搜索引擎爬蟲的優化(SEO)曾風靡一時。
爬取原理
需要說明的是,網路爬蟲從一些初始網頁URL(網頁地址)開始抓取網頁,在此過程中,不斷從當前頁面上抽取新的鏈接用於爬取,循環往複擴充到整個網路,為搜索引擎或大型網路服務商採集數據。
網路爬蟲的爬行範圍和數量巨大,對於爬行速度和存儲空間要求較高。同時,由於待刷新的頁面很多,所以通常採用並行的方式。
下圖所示的是一個通用的爬蟲框架流程。首先精心選擇一部分網頁,以這些網頁的鏈接地址作為種子URL放入待抓取的URL隊列中,爬蟲從URL隊列依次讀取每個URL,通過DNS解析轉換為對應的IP地址。然後將其和網頁相對路徑交給網頁下載器,網頁下載器負責網頁內容的下載。一方面下載的內容存儲到資料庫中,等待後續處理;另一方面該網頁的URL添加到已抓取隊列(這個隊列記載了已經下載過的網頁URL,避免重複抓取)。此外,從剛下載的網頁中抽取出新的URL,如果該鏈接沒有被抓取過,則添加入待抓取URL隊列,在之後的調度中下載對應的網頁。這樣循環往複,直到待抓取URL隊列為空(實際上不會為空,會有其他的條件終止爬取),代表完成了一輪完整的抓取過程。
上述是一個通用爬蟲的整體流程,由於互聯網上網頁數量太過巨大,在實踐中通常會有不同的爬行策略,常用的有:深度優先策略、廣度優先策略。網站典型的網頁層次關係通常像一棵樹,如果把主頁看作樹根,其他的網頁則是枝杈上的樹葉。具體來說:
(1)深度優先策略是在垂直方向上,逐個分支爬取,依次訪問下一級網頁,直到不能再深入為止。爬蟲在完成一個爬行分支後,返回到上一鏈接節點搜索其它分支。當所有分支遍歷完後,爬行任務結束。這種策略比較適合垂直搜索或站內搜索,但爬行頁面內容層次較深的站點時會造成資源的巨大浪費。
(2)廣度優先策略是在水平方向上,逐個層面爬取,優先爬行處於較淺層次的頁面。當某一層次的全部頁面抓取完後,再深入下一層爬行。這種策略能夠有效控制頁面的爬行深度,避免遇到一個無窮深層分支時無法結束爬行的問題,不足之處在於需較長時間才能爬行到目錄層次較深的頁面。
爬蟲技術也面臨著一系列的難題,比如:互聯網上存在的大量重複網頁、動態頁面、動畫特效頁面等,增加了信息獲取的困難。現有的搜索引擎能抓取的網頁不超過互聯網所有網頁總數的一半,極端的估計是少於16%。
爬蟲應用
堅持看到這裡的寶寶要問了,枯燥的技術結束了吧?到底爬蟲還有什麼用呢?
眾所周知,很多電商平台都有自動調價功能,它會依靠爬蟲程序掃描同類網站商品的價格,針對性地展開相應的調整,從而取得價格優勢,為銷量提供保證。比如蘇寧易購的「稜鏡」系統就是一款實時比價工具。利用網路爬蟲獲取其他電商平台的同款商品的價格、促銷、評論等商品信息,給業務人員的工作帶來了極大便利。
其實,自從亞馬遜十多年前推出該自動比價模式以來,機器人驅動的定價給整個零售行業帶來了巨大的變革。以往,零售店最多每周調價一次,因為更換標籤的成本和時間成本都很高。而在電子商務世界,零售商卻可以隨時調價,有時候甚至達到每天數次,這都得益於競對定價數據等。
在電子商務行業,使用爬蟲成為了一場「貓捉老鼠」的遊戲。企業一方面希望阻止競爭對手爬取自己的網站,另一方面又想滲透對手的網站。儘管擁有各類技術防範,但爬取機器人數量還是令人震驚。除了競爭對手外,有的流量還來自科研院所,目的是研究競爭、搜索引擎、廣告服務,甚至還有的是企圖入侵網站帳號的不法分子。
爬蟲安全性
到了這裡,必須說下網路爬蟲的安全性問題。由於網路爬蟲的策略是儘可能多的「爬過」網站中的高價值信息,會根據特定策略儘可能多的訪問頁面,佔用網路帶寬並增加網路伺服器的處理開銷,不少小型站點的站長發現當網路爬蟲光顧的時候,訪問流量將會有明顯的增長。
例如,某個網站上有一個10MB(如PDF格式)的文件,使用爬蟲抓取該文件1000次,就會使網站產生大量出站流量(可在數分鐘內達到GB級),引起的後果很可能是災難性的。這種攻擊達到的效果似曾相識,類似臭名昭著的DDoS攻擊,使網頁服務在大量的暴力訪問下,資源耗盡而停止提供服務。
此外,惡意用戶還可能通過網路爬蟲抓取各種敏感資料用於不正當用途,主要表現在以下幾個方面:
(1)網站入侵,大多數基於網頁服務的系統都附帶了測試頁面及調試用後門程序等。通過這些頁面或程序甚至可以繞過認證直接訪問伺服器敏感數據,成為惡意用戶分析攻擊的有效情報來源。而且這些文件的存在本身也暗示網站中存在潛在的安全漏洞。
(2)搜索管理員登錄頁面,許多在線系統提供了基於網頁的管理介面,允許管理員對其進行遠程管理與控制。如果管理員疏於防範,一旦其管理員登錄頁面被惡意用戶搜索到,將面臨極大的威脅
(3)搜索互聯網用戶的個人資料,互聯網用戶的個人資料包括姓名、身份證號、電話、郵箱地址、QQ號、通信地址等個人信息,惡意用戶獲取後有可能實施攻擊或詐騙。
因此,採取適當的措施限制網路爬蟲的訪問許可權,向網路爬蟲開放網站希望推廣的頁面,屏蔽比較敏感的頁面,對於保持網站的安全運行、保護用戶的隱私是極其重要的。所以,谷歌正常情況下不應該抓取到私人郵件,但不排除特別情況下,由於伺服器的管理漏洞而發生信息泄露的可能。
能堅持看到最後的童鞋必須有獎勵,推薦一個搜索引擎shodan ,被稱為「黑暗」谷歌,也被稱為世界上最可怕的搜索引擎。它看上去跟普通搜索引擎一樣,但是可以搜到網路上存在的攝像頭、路由器、印表機等數據採集監控系統,並根據其所屬國家、操作系統、品牌以及其它屬性進行分類。如果說,谷歌和百度是網站內容搜索,那麼,它則是網路設備搜索,在物聯網應用中提供了探索的場景。
(來源:蘇寧財富資訊;作者:蘇寧金融研究院高級研究員沈春澤)
推薦閱讀: