本文介紹了使用Web應(yīng)用防火墻提供的防護功能攔截惡意爬蟲的最佳實踐。
背景信息
當(dāng)今互聯(lián)網(wǎng)爬蟲種類繁多,且為了繞過網(wǎng)站管理員的防爬策略,專業(yè)的爬蟲往往會不斷變換爬取手段。因此,依靠固定的規(guī)則來實現(xiàn)一勞永逸的完美防護是不太可能的。此外,爬蟲風(fēng)險管理往往與業(yè)務(wù)自身的特性有很強的關(guān)聯(lián)性,需要專業(yè)的安全團隊進行對抗才能取得較好的效果。
如果您對防爬效果有較高的要求,或者缺乏專業(yè)的安全團隊來配置相應(yīng)的安全策略,您可以使用Web應(yīng)用防火墻
Bot管理模塊提供的爬蟲防護功能。Bot管理模塊基于阿里云對全網(wǎng)威脅情報實時計算得到的惡意爬蟲IP情報庫、動態(tài)更新的各大公有云、IDC機房IP庫等情報信息,可以幫助您直接放行合法爬蟲請求,并對來自威脅情報庫的惡意請求進行防護處置。
說明 Bot管理模塊屬于增值服務(wù),需要在購買或升級Web應(yīng)用防火墻時單獨開通。
除了Bot管理模塊,您還可以參照下文介紹的爬蟲請求的特征,結(jié)合Web應(yīng)用防火墻的自定義防護策略、IP黑名單功能設(shè)置針對性的爬蟲攔截規(guī)則。
惡意爬蟲的危害和特征
正常爬蟲請求的user-agent字段中通常包含xxspider標(biāo)識,并且爬取的請求量不大,爬取的URL和時間段都比較分散。如果對合法的爬蟲IP執(zhí)行反向nslookup或tracert,一般都可以看到爬蟲的來源地址。例如,對百度的爬蟲IP執(zhí)行反向nslookup,即可查詢到其來源地址信息。
惡意爬蟲則可能會在某個時間段大量請求某個域名的特定地址或接口,這種情況很可能是偽裝成爬蟲的CC攻擊,或是經(jīng)第三方偽裝后針對性爬取敏感信息的請求。當(dāng)惡意爬蟲請求量大到一定程度后,往往造成服務(wù)器的CPU飆升,帶來網(wǎng)站無法訪問等業(yè)務(wù)中斷問題。
設(shè)置自定義防護策略
通過設(shè)置WAF自定義防護策略,您可以靈活地結(jié)合User-Agent和URL等關(guān)鍵字段來過濾惡意爬蟲請求。
配置示例:
-
您可以在控制臺的自定義防護策略頁面配置以下ACL訪問控制規(guī)則,只放行百度爬蟲,而過濾其他的爬蟲請求。
-
您可以在控制臺的自定義防護策略頁面配置以下ACL訪問控制規(guī)則,禁止任何爬蟲訪問/userinfo目錄下的內(nèi)容。
說明 通過限制User-Agent字段的方式在面對惡意攻擊者精心構(gòu)造的爬蟲攻擊時很容易被繞過。例如,惡意攻擊者可以通過在惡意爬蟲請求的User-Agent字段中帶有baidu字符,偽裝成百度爬蟲而不被該ACL訪問控制規(guī)則攔截。甚至,惡意攻擊者可以通過在User-Agent字段中去除spider字符,隱藏爬蟲身份,則該ACL訪問控制規(guī)則將無法攔截。
如果您發(fā)現(xiàn)惡意爬蟲請求具有高頻的特征,您還可以使用自定義防護策略的頻率設(shè)置,針對特定的路徑配置基于IP的訪問頻率的檢測和阻斷規(guī)則。
配置示例:您可以在控制臺的
自定義防護策略頁面配置以下規(guī)則,當(dāng)一個IP在30秒內(nèi)訪問當(dāng)前域名下任意路徑的次數(shù)超過1000次,則封禁該IP的請求10個小時。
如果您開通了旗艦版的Web應(yīng)用防火墻實例,則您可以在頻率設(shè)置中使用除IP和Session外的自定義統(tǒng)計對象字段,設(shè)置更細(xì)粒度、更多維度的限速功能。例如,由于針對IP的封禁會影響NAT出口,您可以使用cookie或者業(yè)務(wù)中自帶的用戶級別參數(shù)作為統(tǒng)計對象。下圖配置針對業(yè)務(wù)中標(biāo)記用戶的cookie(假設(shè)cookie格式為uid=12345)進行統(tǒng)計,并使用滑塊作為處置動作,避免誤攔截。
設(shè)置IP黑名單
如果您發(fā)現(xiàn)有大量惡意爬蟲請求來自于特定區(qū)域,且正常的業(yè)務(wù)訪問都沒有來自該區(qū)域的請求,則可以開啟地域級IP黑名單,直接攔截該特定區(qū)域的所有訪問請求。
配置示例:您可以在控制臺的
IP黑名單頁面配置以下規(guī)則,封禁中國境外IP地址的訪問請求。
我公司為阿里云代理商,通過此頁面下單購買,新老阿里云會員,均可享受我公司代理商價格!