Web 抓取攻擊,或簡(jiǎn)稱為“抓取”,發(fā)生在機(jī)器人自動(dòng)從您的網(wǎng)站收集數(shù)據(jù)時(shí),通常是出于惡意目的,如內(nèi)容轉(zhuǎn)售和降價(jià)。爬蟲機(jī)器人模仿真實(shí)用戶在常規(guī)瀏覽器上訪問(wèn)網(wǎng)站,在那里他們提取機(jī)器人程序員想要存儲(chǔ)在本地?cái)?shù)據(jù)庫(kù)中的數(shù)據(jù)。
爬蟲與其他類型的機(jī)器人有何不同?
與不需要執(zhí)行很多請(qǐng)求的scalpers這樣的機(jī)器人相反,抓取程序經(jīng)常需要發(fā)出數(shù)百萬(wàn)個(gè)請(qǐng)求來(lái)抓取網(wǎng)頁(yè)。盡管他們執(zhí)行的請(qǐng)求量很大,但 Scraper 機(jī)器人被設(shè)計(jì)為有利可圖。
例如,與剝頭皮機(jī)器人相比,爬蟲可能使用質(zhì)量較低的代理,但它們傾向于使用與其他機(jī)器人相同的底層技術(shù)。爬蟲可以基于自動(dòng)化(無(wú)頭)瀏覽器,或者它們可以利用 HTTP 客戶端,如 aiohttp 和 Axios。爬蟲機(jī)器人可以定制,或者欺詐者可以利用不同的專門框架,例如 Scrapy,使爬蟲的創(chuàng)建更容易。許多機(jī)器人即服務(wù) (BaaS)也專門用于抓取——他們所要做的就是使用 API 來(lái)抓取網(wǎng)站。
如何檢測(cè)抓取攻擊?
與其他類型的攻擊一樣,可以使用三種主要類型的信號(hào)檢測(cè)抓取攻擊:
- 行為
- 名聲
- 簽名
行為
可以在服務(wù)器端和客戶端收集行為信號(hào)。在服務(wù)器端,該引擎分析用戶如何瀏覽網(wǎng)站或移動(dòng)應(yīng)用程序,以檢測(cè)一段時(shí)間內(nèi)請(qǐng)求數(shù)量中的可疑異常值——因?yàn)闄C(jī)器人發(fā)出請(qǐng)求的速度比任何人都快得多。
在客戶端,JavaScript(用于網(wǎng)站)或 SDK(用于移動(dòng)應(yīng)用程序)將收集瀏覽器中事件的詳細(xì)信息,例如點(diǎn)擊、觸摸事件、打字速度和鼠標(biāo)移動(dòng)。然后可以通過(guò)機(jī)器學(xué)習(xí) (ML) 模型分析這些細(xì)節(jié),以檢測(cè)交互是否與人類行為一致。
名聲
信譽(yù)信號(hào)僅在服務(wù)器端以不同的粒度級(jí)別(如 IP 地址或用戶會(huì)話)和時(shí)間窗口(如分鐘、小時(shí)、天或月)計(jì)算。有了信譽(yù)信號(hào),檢測(cè)引擎可以使用先驗(yàn)知識(shí)來(lái)調(diào)整決策。例如,如果某個(gè)自治系統(tǒng)經(jīng)常與數(shù)據(jù)抓取相關(guān)聯(lián),ML 模型將決定更積極地阻止來(lái)自該系統(tǒng)的流量。
由于抓取工具需要擴(kuò)大攻擊規(guī)模才能抓取數(shù)千或數(shù)百萬(wàn)頁(yè),因此他們往往嚴(yán)重依賴代理。最先進(jìn)的爬蟲使用住宅代理來(lái)訪問(wèn)類似于人類用戶的 IP 地址。這就是為什么能夠檢測(cè)代理以阻止爬蟲很重要的原因。
簽名
簽名信號(hào)在服務(wù)器端和客戶端都被收集,可以包括:
- HTTP 指紋:HTTP 標(biāo)頭的詳細(xì)信息(服務(wù)器端)。
- TLS 指紋:在 TLS 握手(服務(wù)器端)期間提取的元數(shù)據(jù)。
- 瀏覽器指紋:JavaScript (JS) 收集有關(guān)操作系統(tǒng) (OS)、瀏覽器和設(shè)備(客戶端,在瀏覽器中)的信息。
- 移動(dòng)指紋:SDK 收集有關(guān)操作系統(tǒng)和設(shè)備(客戶端,在移動(dòng)應(yīng)用程序中)的信息。
最徹底的檢測(cè)將始終利用瀏覽器和移動(dòng)指紋,因?yàn)槭褂?JS 或 SDK 制作的高級(jí)解決方案可以檢測(cè)流行的無(wú)頭瀏覽器和自動(dòng)化框架,如無(wú)頭 Chrome、Puppeteer、Playwright和Selenium。
客戶端挑戰(zhàn)還可以幫助檢測(cè)和跟蹤旨在繞過(guò)傳統(tǒng)機(jī)器人檢測(cè)技術(shù)的爬蟲經(jīng)常使用的修改后的機(jī)器人框架,尤其是:
- 傀儡師額外隱身
- 修改后的 Selenium ChromeDriver
- 修改編劇
關(guān)于抓取檢測(cè)和保護(hù)的問(wèn)題和誤解
大多數(shù)網(wǎng)站和移動(dòng)應(yīng)用程序都實(shí)施了針對(duì)爬蟲的反制措施,其中包括驗(yàn)證碼、速率限制、Web 應(yīng)用程序防火墻 (WAF) 等。但一些常見的反制措施不足以保護(hù)您的網(wǎng)站免受復(fù)雜的爬蟲攻擊——更糟糕的是,其中一些可能會(huì)產(chǎn)生誤報(bào)。
傳統(tǒng)的 CAPTCHA 是否足以對(duì)抗爬蟲?
不會(huì)。大多數(shù)爬蟲可以偽造傳統(tǒng)的驗(yàn)證碼,使用基于人工智能的圖像或音頻識(shí)別或驗(yàn)證碼農(nóng)場(chǎng),人類工人代表機(jī)器人解決驗(yàn)證碼挑戰(zhàn)。最重要的是,向用戶顯示驗(yàn)證碼(也稱為“誤報(bào)”)會(huì)顯著降低真實(shí)用戶的用戶體驗(yàn)。
在我的網(wǎng)站和 API 端點(diǎn)上使用基于 IP 的速率限制可以確保我的安全嗎?
雖然基于 IP 的速率限制可以阻止最簡(jiǎn)單的機(jī)器人程序(僅從一個(gè)或幾個(gè) IP 運(yùn)行的機(jī)器人程序),但它無(wú)法捕捉到最復(fù)雜的爬蟲程序。復(fù)雜的爬蟲利用代理將他們的攻擊分布到數(shù)千個(gè)不同的 IP 地址。因此,每個(gè) IP 地址僅發(fā)出少量請(qǐng)求,這使攻擊者能夠保持在速率限制閾值以下。
此外,阻止整個(gè) IP 地址是危險(xiǎn)的,因?yàn)樵S多 IP 地址被大量共享。事實(shí)上,大多數(shù)移動(dòng) IP 地址在任何給定時(shí)間都由成百上千的用戶共享。因此,阻止 IP 會(huì)導(dǎo)致許多誤報(bào)(挑戰(zhàn)真正的人類用戶),從而損害您的用戶體驗(yàn)并使您的消費(fèi)者感到沮喪。
阻止來(lái)自數(shù)據(jù)中心 IP 的所有流量是否足以阻止爬蟲?
不幸的是,阻止所有數(shù)據(jù)中心 IP 流量是不夠的,更糟糕??的是,它會(huì)觸發(fā)誤報(bào)。許多合法流量來(lái)自數(shù)據(jù)中心 IP,包括 VPN 用戶和大公司代理。您不想阻止您的合法用戶。最重要的是,攻擊者可以訪問(wèn)數(shù)百萬(wàn)個(gè)住宅代理——而不僅僅是數(shù)據(jù)中心代理。一些代理服務(wù)以每 GB 帶寬幾美元的價(jià)格提供對(duì)住宅 IP 的訪問(wèn)。因此,攻擊者可以使用屬于 Comcast、AT&T 和 Verizon 等知名互聯(lián)網(wǎng)服務(wù)提供商 (ISP) 的 IP ,就像您的真實(shí)用戶一樣。
如果我使用地理封鎖來(lái)阻止來(lái)自我的業(yè)務(wù)未開展業(yè)務(wù)的國(guó)家/地區(qū)的所有流量,爬蟲能否繞過(guò)它?雖然地理封鎖可能會(huì)阻止從單個(gè) IP 或外國(guó)數(shù)據(jù)中心代理運(yùn)行的簡(jiǎn)單爬蟲,但它不會(huì)阻止利用住宅代理的更復(fù)雜的攻擊者。住宅代理網(wǎng)絡(luò)允許欺詐者選擇位于特定國(guó)家/地區(qū)的代理。
我們?cè)谟^察到的是,大多數(shù)攻擊者選擇與他們所針對(duì)的網(wǎng)站位于同一國(guó)家/地區(qū)的代理——這有助于他們顯得更人性化并繞過(guò)地理封鎖技術(shù)。
地理封鎖也會(huì)產(chǎn)生誤報(bào),因?yàn)槟囊恍┯脩艨赡苷趪?guó)外旅行或暫時(shí)居住。此外,請(qǐng)記住 IP 地址位置并非 100% 準(zhǔn)確。因此,IP 位置數(shù)據(jù)庫(kù)中可能存在一些國(guó)家/地區(qū)錯(cuò)誤分類,地理封鎖可能會(huì)在這些 IP 上產(chǎn)生誤報(bào)。
我的 WAF 可以防止抓取嗎?
不,不完全是。WAF 無(wú)法與當(dāng)今復(fù)雜的爬蟲機(jī)器人相提并論,因?yàn)?WAF 旨在使用一組二進(jìn)制規(guī)則檢測(cè)和過(guò)濾惡意流量。盡管昨天的簡(jiǎn)單機(jī)器人程序和已知威脅可能會(huì)受到 WAF 中指定規(guī)則的約束,但爬蟲現(xiàn)在可以輕松訪問(wèn)使用代理和 ML 來(lái)模仿人類行為的復(fù)雜機(jī)器人程序。今天復(fù)雜的爬蟲可以輕松繞過(guò)基于規(guī)則的安全工具,如 WAF。