什么是數(shù)據(jù)抓?。?/strong>
數(shù)據(jù)抓取,以其最一般的形式,是指一種計算機程序從另一程序生成的輸出中提取數(shù)據(jù)的技術(shù)。數(shù)據(jù)抓取通常體現(xiàn)在網(wǎng)頁抓取中,網(wǎng)頁抓取是使用應(yīng)用程序從網(wǎng)站提取有價值信息的過程。
為什么要抓取網(wǎng)站數(shù)據(jù)?
通常,公司不希望其獨特內(nèi)容被下載并重新用于未經(jīng)授權(quán)的目的。因此,它們不會通過開放的API或其他便于訪問的資源公開所有數(shù)據(jù)。而另一方面,不管網(wǎng)站怎樣限制訪問權(quán)限,抓取機器人都會嘗試對網(wǎng)站數(shù)據(jù)進行抓取。這樣,網(wǎng)頁抓取機器人與各種內(nèi)容保護策略之間就存在一種貓捉老鼠的游戲,道高一尺,魔高一丈。
盡管執(zhí)行起來可能很復雜,但網(wǎng)頁抓取的過程非常簡單。網(wǎng)頁抓取分為3個步驟:
首先,用于提取信息的代碼段(我們稱為抓取機器人)將 HTTP GET請求發(fā)送到特定網(wǎng)站。
當網(wǎng)站響應(yīng)的時,抓取器將解析HTML文檔以獲取特定的數(shù)據(jù)模式。
數(shù)據(jù)提取后,被轉(zhuǎn)換為抓取機器人設(shè)計者所設(shè)計的特定格式。
抓取機器人可以被設(shè)計用于多種用途,例如:
內(nèi)容抓取–可以從網(wǎng)站上抓取內(nèi)容以便復制依賴于該內(nèi)容的獨特產(chǎn)品或服務(wù)優(yōu)勢。例如,Yelp之類的產(chǎn)品依賴評論。競爭對手可以從Yelp中抓取所有評論內(nèi)容,然后復制到自己的網(wǎng)站,讓自己網(wǎng)站的內(nèi)容開起來十分具有原創(chuàng)性。
價格抓取–通過抓取價格數(shù)據(jù),競爭對手可以匯總其競品信息。這可以使他們擁有獨特的定價優(yōu)勢。
聯(lián)絡(luò)信息抓取–許多網(wǎng)站明文包含電子郵件地址和電話號碼。通過抓取諸如在線員工目錄之類的位置,抓取機器人能夠匯總聯(lián)絡(luò)信息,以嘗試大規(guī)模郵件發(fā)送、自動呼叫或惡意的社交工程攻擊。這是垃圾信息發(fā)送者和詐騙者尋找新目標的主要方法之一。
如何防護網(wǎng)頁抓???
通常,網(wǎng)站訪問者可以看到的所有內(nèi)容都必須轉(zhuǎn)移到訪問者的計算機上,并且訪問者可以訪問的任何信息都可以被機器人抓取。
有方法能夠限制可能發(fā)生的抓取量。以下是三種限制數(shù)據(jù)抓取工作的方法:
速率限制請求 – 對于訪問網(wǎng)站并點擊網(wǎng)站上一系列網(wǎng)頁的真實用戶,他們與網(wǎng)站交互的速度普遍是可預測的;例如,不可能有人類用戶每秒瀏覽100個網(wǎng)頁。另一方面,計算機則能以比人類快多個數(shù)量級的速度發(fā)出請求,而初級數(shù)據(jù)抓取程序則可能采用不受限抓取技術(shù)嘗試快速抓取整個網(wǎng)站的數(shù)據(jù)。通過限制特定 IP 地址在給定時間時段內(nèi)發(fā)出的最大請求數(shù),網(wǎng)站能夠保護自己免受侵略性請求的影響,并限制在特定時間范圍中可能發(fā)生的數(shù)據(jù)抓取量。
定期修改HTML標記–數(shù)據(jù)抓取機器人依靠持續(xù)一直的格式化來有效地遍歷網(wǎng)站內(nèi)容并解析和保存有用的數(shù)據(jù)。阻止此工作流的一個方法就是定期更改 HTML 標記的元素,使格式一致的抓取過程變得更加復雜。嵌套 HTML 元素或者更改其他方面的標記,即可阻礙或者阻止簡單的數(shù)據(jù)抓取活動。某些網(wǎng)站在每次呈現(xiàn)網(wǎng)頁時,會對某些形式的內(nèi)容保護進行隨機修改。其他網(wǎng)站則偶爾修改自己的標記代碼,防止更長期的數(shù)據(jù)抓取活動。
將CAPTCHA用于大量數(shù)據(jù)的請求者– 除了使用速率限制解決方案外,減慢內(nèi)容抓取速度的另一個有用步驟是要求網(wǎng)站訪問者完成計算機難以實現(xiàn)的挑戰(zhàn)。盡管人類可以合理地應(yīng)對這個挑戰(zhàn),但一個在進行數(shù)據(jù)抓取的無腦瀏覽器*極有可能無法通過該挑戰(zhàn),更不可能持續(xù)通過數(shù)個挑戰(zhàn)。但是,持續(xù)不斷的CAPTCHA測試可能會對真實用戶的體驗產(chǎn)生負面影響。
另一種不太常見的防護方法要求將內(nèi)容嵌入例如圖像類的媒體對象中。由于內(nèi)容不存在于字符串中,因此復制內(nèi)容要復雜得多,需要光學字符識別(OCR)才能從圖像文件中提取數(shù)據(jù)。但這也會給需要從網(wǎng)站復制內(nèi)容的真實用戶帶來麻煩,他們將不得不靠記憶或重新輸入例如地址或電話號碼之類的信息,而無法直接復制。
*無頭瀏覽器是網(wǎng)頁瀏覽器的一種,類似于Chrome或Firefox,但默認情況下它沒有可視的用戶界面,因此其移動速度比常見的網(wǎng)頁瀏覽器快得多。本質(zhì)上它是在命令行界面運行,無頭瀏覽器可以避免呈現(xiàn)整個Web應(yīng)用程序。數(shù)據(jù)抓取工具會編寫機器人使用無頭瀏覽器來更快地請求數(shù)據(jù),因為沒有人會去查看要抓取的每個頁面。
如何完全防止抓???
完全防止抓取網(wǎng)頁的唯一方法是避免將內(nèi)容完全放在網(wǎng)站上。但是,使用高級的機器人管理解決方案可以幫助網(wǎng)站幾乎完全消除抓取機器人的訪問權(quán)限。
數(shù)據(jù)抓取和數(shù)據(jù)爬蟲有什么區(qū)別?
爬網(wǎng)是指像谷歌這樣的大型搜索引擎將它們的爬網(wǎng)程序(例如Googlebot)發(fā)送到網(wǎng)絡(luò)以索引互聯(lián)網(wǎng)內(nèi)容時所進行的過程。另一方面,它通常是專門為從特定網(wǎng)站提取數(shù)據(jù)而構(gòu)建的。
以下是抓取機器人與網(wǎng)頁爬網(wǎng)程序機器人的3種不同行為:
抓取機器人會假裝為網(wǎng)頁瀏覽器,而爬網(wǎng)程序機器人會表明其目的,而不是試圖蒙騙網(wǎng)站。
有時,抓取機器人會采取高級措施,例如填寫表格或進行其他行為以進入網(wǎng)站的特定部分。爬網(wǎng)程序則不會。
抓取機器人通常會忽略robots.txt文件,該文件是一個文本文件,專門用于告訴爬網(wǎng)程序能解析哪些數(shù)據(jù)以及不能訪問的區(qū)域。因為抓取器被設(shè)計為提取特定內(nèi)容,所以它可以被設(shè)計專門抓取那些被明確禁止抓取的內(nèi)容。
Cloudflare 機器人管理使用機器學習和行為分析來識別例如抓取器等惡意機器人,保護網(wǎng)站獨特的內(nèi)容并防止機器人濫用 Web 屬性。