iT邦幫忙

2025 iThome 鐵人賽

DAY 22
0
Security

導入CDN防護大作戰系列 第 22

【Day22】機器人爬蟲防護-防護機制與策略說明

  • 分享至 

  • xImage
  •  

終於來到最後一個關卡機器人爬蟲防護,先來定義什麼是機器人。

機器人(bot)是一種被程式設計完成特定任務的軟體應用程式,任務可能包含搜尋網路的內容、與網頁互動、與使用者聊天等等。根據Thales 集團發表 《2025年Imperva惡意機器人報告》已指出,機器流量超車人類流量!占比所有網路流量51% !! 報告來源

機器人的用途也分為好跟壞,例如幫忙你找資料寫論文題材的AI爬蟲機器人或是模擬人類對話的聊天機器人,當然也有不當爬取機敏資料以及發起大量憑證填充的惡意機器人。

Jerry,尤其是你們電商的特價產品價格,還有演唱會及特殊活動訂票,更是會有有心人士寫機器人程式來搶票。

好的與壞的

怎麼分辨好的跟壞的,對開發來說干擾WEB主機效能都是壞人,對行銷來說來爬資料幫忙推廣公司活動能見度的是好人,有好的方式可以防護嗎?

顧問回答,Akamai的作法是管理而不是阻擋!!

既然無法杜絕機器人的存取,還可能因為檔到好的機器人導致業務受到影響。

為了能做出良好的管理,必須要針對客戶的流量進行大數據分析,再藉此進行分類並透過不同的方式緩解。Akamai 每天傳輸的全球網路流量佔比高達 15% 到 30%。每天監測這些組織與超過 13 億台獨立設備之間超過 3 兆次的網路互動,因此收到的機器人請求也比任何人都多,數據越多檢測效果就越好,檢測結果就越準確。

怎麼分析的呢? 有幾個重點包含 用甚麼工具存取服務、存取服務時的行為模式、存取服務時的頻率

  • 用甚麼工具存取服務 :既然機器人都是利用程式來存取,很多情況下不會用標準瀏覽器來存取,而使用不同的工具,也會有不同的特徵。

    • 瀏覽器的特徵 : 應該要有accept-encoding、accept-language、Connection、user-agent等等HTTP標頭欄位資訊。
      https://ithelp.ithome.com.tw/upload/images/20251005/20042779lqye3gNMkx.png

    • 其他工具或AI機器人的特徵 :大部分的工具都會利用user-agent來宣告自己是誰,例如

      • Google 縮圖機器人 : User-Agent:
        Mozilla/5.0 (Windows NT 5.1; rv:11.0) Gecko Firefox/11.0 (via ggpht.com GoogleImageProxy)

      • AI機器人 : User-Agent:
        Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; ChatGPT-User/1.0; +https://openai.com/bot

      • curl工具 :User-Agent:
        curl/7.19.7 (x86_64-unknown-linux-gnu) libcurl/7.19.7 OpenSSL/1.0.2l zlib/1.2.5

    • 仿冒瀏覽器 :為躲避機器人防護或是請求特徵分析而遭阻擋的機器人,然後又模仿的不夠認真,例如

      • HTTP標頭缺user-agent
      • HTTP標頭缺Accept-Encoding
      • HTTP標頭缺Accept-Language
      • 使用的瀏覽器版本非常老舊,特徵不夠完整
    • TLS Fingerprint :在開啟 TLS 通訊時,客戶端與伺服器會先經過 TLS handshake。而每套程式或工具在進行TLS handshake 時,包括 TLS 密碼套件、擴充功能和其他參數的有序列表都可以形成一個辨識的特徵,透過這個特徵也能定義來源使用的工具為何。

      https://ithelp.ithome.com.tw/upload/images/20251005/20042779oaoMDLdn7C.png

      圖片引用於brightdata.com - What Is TLS Fingerprinting?

      延伸閱讀-What Is TLS Fingerprint

  • 存取服務時的行為模式 : 對比機器人產生的異常請求,其實可以從以下幾點分析出來

    • 持續性針對特定頁面或功能進行請求,例如

      • 商品價格
      • 金融匯率
      • 登入頁面
      • 提供網站互動資訊之API URL
      • 訂票程序
    • 來自雲端或是VPS商網段,請求的物件針對且特定,並非一般使用者瀏覽行為。

  • 存取服務時的頻率 : 依據業務需求,有些資訊會定期的更新。總是會有機器人用你超乎想像的頻率來更新資料,因此分析請求的頻率,也能判斷出是否為自動化程序的機器人流量。

    舉個例子:不管訂甚麼票,一般人總是會想一下如何選擇吧! 不太可能在一秒內完成好幾個選項的請求,這就不難判斷出是否為真人?

機器人分類

Akamai將機器人分為三大類:

  • Akamai 驗證分類的機器人 :Akamai經過大數據分析有明確用途的機器人包含:

    • 搜尋引擎優化 (SEO)
    • 網絡搜索引擎
    • 社交媒體和博客
    • 新聞內容聚合器
    • 商業智慧
    • 金融服務
    • AI機器人
    • 等等.....
  • Akamai 偵測到的機器人 :透過不同層面特徵請求分析出來,例如不正確的標頭簽章和亂序標頭以及瀏覽器版本不符等,分類包含:

    • Development Frameworks : Node js、Ruby、Java。
    • HTTP Libraries :curl、perl、python。
    • Headless Browsers/Automation Tools : phantom、wget。
    • Browser Impersonator :仿冒正常瀏覽器,但又缺乏重要特徵。
    • 等等....
  • 自訂分類的機器人 :依照需求自行定義機器人。
    防護

設定方式

Akamai的BOT防護分為兩種授權,因應授權不同可以與機器人互動的方式也不同,目前採購的AAP只有Monitor、Deny、Allow三種動作。

而進階的BOT還多了Captcha(驗證碼)、Slow Delay(延遲回應)、Tarpit(完全不理會)、Crypto challenge(加密挑戰)等機制,可以因應的情境更為多元及複雜。

設定時,只要針對類別勾選動作即可。

防護規則建議

接下來,每一個防護功能我們都要來評估及討論,先前講的4個項目

  • 能分辨出惡意來源及惡意請求的意圖嗎?

    • 惡意來源:
      透過請求的網段再加上User-agent,其實蠻容易辨識出是否為正常來源。

      但是近年VPN服務的盛行,VPN服務的主機大多建置於雲端以及VPS商,此時這些平常被視為惡意的來源,瞬間又變成正常人了。

    • 惡意意圖 :
      透過平台分析可以初步從BOT的分類確認是用甚麼工具來存取,再依據業務的需求分析存取的資原及物件,也能分析出意圖。

      但是針對單一物件或功能一定有問題嗎? 金融的匯率資料、氣候地震資料、車票時間費用等等,可能還是需要其他的考量例如頻率、請求的Mathod、請求參數的準確度等來統一分析,避免誤判。

  • 怎麼判斷?
    請務必先從提供服務網站其業務行為進行深入了解,包含

    1. 前端提供的工具除了瀏覽器外是否還有其他的可能? 例如手機APP或是合作夥伴請求的方式。
    2. 承上,非瀏覽器存取的方式如SDK及HTTP Library有沒有明確的特徵。
    3. 電商與物流業的合作,可能也包含非台灣的網段例如其他國家的物流業者,或是一般零售業者但可能是動態IP等。
  • 怎麼擋?
    阻擋的方式除了直接勾選平台已經定義好的類別外,可依據HTTP請求的標頭內容設定條件阻擋。

  • 會擋不住或是誤擋?

    • 擋不住 :
      既然知道了偵測的方式,那麼是否可以繞過呢? 答案是肯定的!!

      但也有分有作功課跟沒作的,怎麼說呢?

      如果,我知道你一定會檢查瀏覽器的特徵,是不是我仿冒的時候該加的HTTP標頭欄位都加一加?

      有TLS Fingerprint跟JS挑戰,網路上已經有公開套件可以協助繞過 ?

      認真的要繞過也是有可能的!!

    • 誤擋 :
      你更應該擔心誤檔!! 除非開發部門明確的定義及限制,前端所有可存取的方法。

      包含以下情況都應該調查清楚:

      • 是否僅允許一般瀏覽器存取網站?
      • 網站是否有提供API請求? 請求的Method為何?
      • 若有開發行動裝置APP來存取,架構上僅有SDK還是會有webview兩種形式來跟網站互動?
      • 若為APP在連線時,是否會帶有明確的特徵如User-agent,以利辨識?
      • 上線超過10年以上,經歷過數個軟體開發技術迭代的服務,提供給外部合作夥伴存取的資源,有沒有限制存取的方式,還是能通就好?

      在沒搞懂前,你只能一直Alert下去,永遠開不了Deny!!

策略整理

評估完後,就綜合評估你可能會遭遇的情境,擬定出防護策略。

其實大部分的情況,開發單位可能也沒想這麼多,也沒法提供給你太多的資訊,所以有以下規劃建議:

  1. 全部BOT規則開啟Alert,每天透過平台用以下條件過濾,透過數據及Akamai BOT分類的歸納,整理出以下資訊

    • TOP X 的分類都是那些機器人?
    • TOP X 的服務網站各是哪些網站?
    • TOP X 的URL的功能為何? 各代表什麼業務?
    • TOP X 的User-agent有哪些? 都來自什麼網路? 都存取哪些網站及物件?
    • TOP X 的HTTP Library有哪些? 都來自什麼網路? 都存取哪些網站及物件?
    • TOP X 的仿冒瀏覽器缺乏的特徵有哪些?
  2. 與開發及行銷單位確認,是否有SEO的需求? 並且觀察持續觀察Akamai定義的機器人存取概況,尤其是網絡搜索引擎、社交媒體和博客、新聞內容聚合器、搜尋引擎優化 (SEO)等。

  3. 若防護網站太多,請從最簡單的網站開始進行分析,不要一開始就針對交易或訂票相關的服務。有可能你會絕望到都開不了Deny~~~~XD

  4. 與開發以及系統單位合作,透過理解平日導致網站伺服主機負載增加的區間,有沒有可能是BOT造成?

  5. 承上,若不是Akamai已知的類別造成問題,那後續把心力都花在以下3個項目即可

    • HTTP Libraries
    • Browser Impersonator
    • User-Agent
  6. 若有明確機器人特徵,由於防護規則僅能大分類開啟,可藉由自訂客製化規則機制協同完成阻擋。

https://ithelp.ithome.com.tw/upload/images/20251005/20042779E9sILTuQAw.png


上一篇
【Day21】Web應用程序防火墻-防護機制與策略說明
系列文
導入CDN防護大作戰22
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言