Cloudflare 是否在封鎖 AI 爬蟲?找出原因並修正
即使 robots.txt 允許該爬蟲,Cloudflare 與其他防火牆仍可能以 403、429 或「Just a moment...」驗證挑戰頁回應 AI 爬蟲,瀏覽器卻看到正常頁面。請用該爬蟲的 user agent 請求頁面來確認,再於 AI Crawl Control 或透過 WAF 略過規則,放行 AI 搜尋爬蟲。
機器人防護的目的是阻擋爬取與濫用,它也確實做得很好。問題是,AI 搜尋爬蟲同樣是機器人。多年前開啟的某項安全設定、某個速率限制,或針對未知 user agent 的寬鬆規則,都可能悄悄把負責引用你的爬蟲擋在門外,而你自己造訪時一切正常。
本頁內容
防火牆為什麼會封鎖 AI 爬蟲?
防火牆會逐一判斷每個請求。爬蟲不會執行 JavaScript 驗證、不像瀏覽器那樣保存 cookie,還常常連續請求許多頁面,所以看起來正像是機器人防護要攔阻的流量。常見原因有:
- 對符合已知機器人特徵的流量發出驗證挑戰的機器人防護功能。例如 Cloudflare 的 Bot Fight Mode,會對機器人發出耗費大量運算的挑戰。
- 封鎖或挑戰含有「bot」或「crawler」等字樣的 user agent,或只允許少數幾個搜尋引擎的 WAF 自訂規則。
- 將 AI 爬蟲整類封鎖的設定。Cloudflare 讓你針對搜尋(Search)、代理(Agent)與訓練(Training)爬蟲設定政策,其中設為 Block 就會套用到所有爬蟲。
- 以 429 回應爬蟲連續快速請求的速率限制。
- 剛好涵蓋爬蟲所在網路的國家或 ASN 封鎖。
如何分辨是防火牆封鎖還是 robots.txt 封鎖?
robots.txt 封鎖是一種禮貌的請求:爬蟲讀取你的規則後,就不會擷取該頁。防火牆封鎖則是一種回應:爬蟲請求了頁面,卻得到別的東西。第二種情況可以直接觀察到。對頁面請求兩次,一次用瀏覽器的 user agent,一次用爬蟲的,然後比較。
for UA in "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36" \
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36; compatible; OAI-SearchBot/1.4; +https://openai.com/searchbot"; do
curl -s -o /dev/null -w "%{http_code} %{size_download}\n" -A "$UA" https://example.com/page
done
防火牆封鎖的跡象:只有爬蟲收到 403、429 或 503;頁面標題是 Just a moment... 或 Attention Required! | Cloudflare;內容含有 /cdn-cgi/challenge-platform;或回應為 200,但內容比瀏覽器看到的短很多。請記得,你的測試來自自己的 IP,而不是爬蟲經過驗證的 IP 範圍,所以它顯示的是防火牆如何對待該 user agent,而不是它對真正爬蟲的每一個處理細節。
如何在 Cloudflare 放行 AI 搜尋爬蟲?
Cloudflare 的 AI Crawl Control 所有方案皆可使用,會列出造訪你網域的 AI 爬蟲,並讓你為每一個設定動作。在後台開啟 AI Crawl Control,進入 Crawlers 清單,在 Action 欄為各爬蟲選擇 Allow 或 Block。Cloudflare 表示,在此設定封鎖會在你的區域(zone)上建立或更新一條 WAF 自訂規則。
如果封鎖爬蟲的是 WAF 自訂規則、Super Bot Fight Mode 或速率限制,請新增一條自訂規則,對已驗證的機器人及該爬蟲的標記略過這些功能:
Security → WAF → Custom rules → Create rule
Expression: (cf.client.bot) or (http.user_agent contains "OAI-SearchBot")
Action: Skip → All remaining custom rules, Super Bot Fight Mode, Rate limiting
Also: AI Crawl Control → OAI-SearchBot → Allow
請把這條規則放在最前面。請注意,以 user agent 比對也會放行任何偽造該 user agent 的人。可以的話,請優先使用已驗證機器人欄位(cf.client.bot)或廠商公布的 IP 範圍。
Bot Fight Mode 又是怎麼回事?
Cloudflare 的文件明確指出,Bot Fight Mode 無法透過 WAF 自訂規則或 Page Rules 繞過或略過。如果挑戰爬蟲的正是它,略過規則就派不上用場。你的選擇是關閉 Bot Fight Mode,或在提供的方案中改用 Super Bot Fight Mode,它在 Ruleset Engine 上運作,並支援略過規則。
我應該放行哪些爬蟲?
請依用途區分爬蟲。搜尋與使用者擷取類爬蟲,決定 AI 答案能否找到並引用你。訓練類爬蟲是為模型收集資料,封鎖它們是正當的選擇,而且不會讓你從 AI 搜尋中消失。
- 搜尋:
OAI-SearchBot、Claude-SearchBot、PerplexityBot、Googlebot、bingbot、Applebot。 - 使用者擷取:
ChatGPT-User、Claude-User、Perplexity-User。 - 訓練:
GPTBot、ClaudeBot、CCBot、meta-externalagent、Bytespider。
Cloudflare 自己的政策設定也採用相同的分類:搜尋、代理與訓練,因此你可以允許前兩類,再另外決定第三類。若使用其他防火牆或 CDN,原則相同:將爬蟲的標記加入允許清單,並在可行時以廠商公布的 IP 範圍或反向 DNS 驗證,讓它得到與瀏覽器相同的回應。
AISeeWhy 如何偵測防火牆封鎖?
AISeeWhy 會以 14 個爬蟲與一般瀏覽器的身分請求你的頁面,比對狀態、大小與重新導向,辨識驗證挑戰頁,並指出是哪個防火牆或 CDN 作出回應。當 robots.txt 允許某個爬蟲、伺服器卻封鎖它時,報告會顯示這項衝突,並提供 Cloudflare 規則或加入允許清單的修正步驟。
常見問題
Cloudflare 預設會封鎖 AI 爬蟲嗎?
這取決於你的帳號、方案與區域設定,而且 Cloudflare 的這些選項也曾多次調整。請查看 AI Crawl Control 與機器人設定,並用該爬蟲的 user agent 實際測試,而不要自行假設。
為什麼我的網站用瀏覽器正常,爬蟲卻不行?
防火牆會逐一判斷每個請求。瀏覽器能通過 JavaScript 驗證並保存 cookie;爬蟲不能,因此可能收到你從未看過的驗證頁或 403。
在 WAF 放行 AI 爬蟲安全嗎?
如果透過廠商的 IP 範圍或 Cloudflare 的已驗證機器人訊號進行驗證,放行指名的爬蟲風險很低。只信任 user agent 的規則,也會讓任何複製它的人進來。
Cloudflare 的電子郵件位址遮蔽功能會影響 AI 爬蟲嗎?
它會把電子郵件位址換成只能由腳本解碼的連結,所以爬蟲看到的是佔位內容,而不是位址。如果你希望聯絡信箱能被讀取,請在 Scrape Shield 底下關閉 Email Address Obfuscation,並以純文字顯示位址。
資料來源
- Cloudflare:AI Crawl Control
- Cloudflare:管理 AI 爬蟲(AI Crawl Control)
- Cloudflare:Bot Fight Mode
- Cloudflare:AI 爬蟲與代理程式存取政策
- OpenAI:OpenAI 爬蟲總覽