[小菜一碟] 使用 Cloudflare 的 Transform Rules 功能協助我們輕鬆判定友好爬蟲(Bot、Crawler)

在跟爬蟲的戰爭之中,很容易打到一些友好的爬蟲,像是 Google、Bing、...等搜尋引擎,還有像是 Ahrefs 這種 SEO 的輔助工具,我們要在自己的應用程式當中去過濾出所有的友好爬蟲,是一件苦差事,不過如果我們有使用 Cloudflare 的話,Cloudflare 有自己維護友好爬蟲的清單,再搭配他們自家的 Transform Rules 服務,我們就可以很輕鬆地過濾出友好的爬蟲。

Create transform rule

免費的方案可以設定兩組 Transform Rules,首先我們從 Rules 功能當中切換到 Transform Rules 頁籤,點開 Create transform rule 選擇 Modify Header

Modify Header

接著,在畫面上依序填入:

  1. Rule name:自訂的規則名稱,我給它叫「Friendly Bots」。
  2. When incoming requests match...:設定 Request 的過濾條件,在這邊我其實是不想過濾 Request,但是這個欄位是必填,所以我就設定一個寬鬆的過濾條件。
  3. Then...:變更 Header 的方式,這邊選擇 Set dynamic,自訂一個 Header name,最後是重點,Value 填上「cf.client.bot」。

最後點擊 Deploy 按鈕,就開始生效了。

經過剛剛這樣設定之後,有什麼效果? 如果發出 Request 的來源端是 Cloudflare 認定的友好爬蟲,Cloudflare 就會幫我們在 Request 中加一組 Header「X-Friendly-Bot=true」往後端傳送,所以後端應用程式只要從 Request Headers 當中檢查有 X-Friendly-Bot 而且值是 true,就能知道目前的 Request 是不是從友好爬蟲發過來的,我們再決定看是要放行,還是做其他的處理。

不友好的爬蟲是不太能帶給我們什麼正向的價值,能擋則擋,這個事半功倍的功能就分享給有在用 Cloudflare 或是有考慮使用 Cloudflare 的朋友,希望能起到一點幫助。

相關資源

C# 指南
ASP.NET 教學
ASP.NET MVC 指引
Azure SQL Database 教學
SQL Server 教學
Xamarin.Forms 教學