OpenAI 的爬蟲,平均每抓 1,700 次網頁,才換回一次真正的訪客點閱;換成 Anthropic,這個比例惡化到 73,000 次才有一次。這是 Cloudflare 在 2025 年年中公布的爬取與導流比例,訓練型的 AI 爬蟲拿走你的內容,卻幾乎不還你任何流量。
多數人處理這件事的方式,還停在兩三年前那套做法,打開 robots.txt,加幾行 Disallow,覺得問題就解決了。不過 robots.txt AI 爬蟲設定這件事,這一年多已經悄悄變成三層要一起顧的事。除了 robots.txt 檔案本身的 user-agent 規則,還多了能不能被訓練的意圖聲明,如果網站掛在 Cloudflare 這類 CDN 後面,後台另外一層預設規則也在同時運作。只改對其中一層、放著另外兩層不管,設定看起來完成了,實際上可能完全沒生效,也可能反而把原本想留住的搜尋引用一起擋掉。
這篇會按照這三層的順序,從爬蟲種類分清楚開始,一路講到 Cloudflare 這一層新規則怎麼設,最後附上可以直接複製的設定片段。先從分清楚種類講起,才有辦法往下拆這三層。

AI 爬蟲不是一種,而是三種:訓練、引用、使用者觸發
封鎖前得先弄清楚一件事。AI 爬蟲底下其實有三個目的完全不同的群體,把它們當成同一種東西一起擋,最後多半是擋錯對象。
第一種是訓練爬蟲,工作是把網頁內容抓回去,當成語言模型的訓練資料。它爬完就走,不會替你帶來任何一個訪客,對你來說是純粹的單向付出,這也是文章開頭那組懸殊比例的來源。
第二種是即時引用爬蟲,運作方式完全不同。使用者向 AI 提問的當下,它才即時去抓你的頁面,把內容片段融進答案並附上來源連結,抓你的內容是為了在答案裡引用你、把使用者導回你的網站,對你來說是雙向的。
第三種是使用者觸發爬蟲,只在某個使用者明確要求 AI 讀取某個網址時才抓一次,流量極小,本質是替使用者代勞,多數情況沒有封鎖的理由。

三大陣營目前對應的主要爬蟲整理如下:
| 公司 | 訓練爬蟲 | 引用爬蟲 | 使用者觸發爬蟲 |
|---|---|---|---|
| OpenAI | GPTBot | OAI-SearchBot | ChatGPT-User |
| Anthropic | ClaudeBot | Claude-SearchBot | Claude-User |
| Perplexity | 無獨立訓練爬蟲 | PerplexityBot | Perplexity-User |
| Google-Extended(政策旗標,詳見後段) | 沿用一般 Googlebot | — | |
| 其他 | CCBot(Common Crawl)、Bytespider(字節跳動) | — | — |
同一家公司底下的爬蟲彼此獨立,擋掉一支不會連帶擋到另一支,只擋 ClaudeBot 不會連帶擋掉 Claude-SearchBot 或 Claude-User,每一支都要各自寫指令。OpenAI 在 2026 年還加了一支 OAI-AdsBot,專門驗證投放廣告內容的安全性,跟訓練與搜尋都無關,多數網站不需要特別理它。
分清楚種類之後,下一個問題是,就算規則寫對了,這些爬蟲真的會乖乖聽話嗎。
第一層:robots.txt 的 user-agent 規則,管得到誰、管不到誰
robots.txt 本身的執行力,比多數人想像的小。它更像一張貼在門口的告示牌,不是一道鎖,會不會有用,完全取決於對方願不願意遵守。
Cloudflare 一份報告指出,Perplexity 被觀察到用偽裝成一般瀏覽器的未申報爬蟲,去繞過網站原本設好的封鎖規則,還會不斷輪換 IP 位址與網路服務商,躲開既有的擋法。同一份報告拿 ChatGPT 做對照,ChatGPT-User 一旦讀到 robots.txt 裡的封鎖指令就停手,沒有再換一個身分繼續抓。Cloudflare 後來把 Perplexity 從已驗證機器人名單上除名,這是目前為止少數被大型基礎設施商公開點名不遵守規則的案例。
守規矩的一方也不是滴水不漏。網路上宣稱自己是 GPTBot 的流量裡,有一部分其實不是 OpenAI 本尊,而是冒用這個名字的其他爬蟲,後台看到 GPTBot 造訪,不代表真的是它。字節跳動的 Bytespider,則有比較長的不遵守 robots.txt 紀錄,這也是它常被列進封鎖清單的原因。
另一個常被忽略的坑,是用已經停用的舊名字寫規則。Anthropic 早年用過 Claude-Web 和 anthropic-ai 這兩個名稱,現在已經停用,改成 ClaudeBot、Claude-SearchBot、Claude-User 三支獨立爬蟲。如果 robots.txt 還留著兩三年前寫的 Claude-Web、anthropic-ai,對現在真正在跑的 ClaudeBot 完全沒有作用,等於花時間寫了一段沒人會看的規則。
還有一個技術常識值得順手澄清,robots.txt 管的是爬取,不是索引。它能叫爬蟲不要抓某個路徑,但如果別的網站連到那個網址,搜尋引擎仍可能知道它存在。真要讓某頁不出現在搜尋結果,該用的是 noindex 或密碼保護,不是只靠 robots.txt 擋。它也不是資安工具,這份檔案是公開的,任何人都能打開看,把後台或機密路徑寫進去防爬,反而像是把金庫位置貼在門口。
既然只有全有全無的指令不夠用,robots.txt 這幾年也多了一種更細緻的表態方式。
第二層:Content Signals,除了擋還能表態能不能被拿去訓練
2025 年 10 月,Cloudflare 在 robots.txt 裡加進一套新語法,讓網站不只能說能不能爬,還能分別表態爬回去之後可以拿來做什麼。
這套機制叫 Content Signals,寫法是在 robots.txt 裡加一行類似 Content-Signal: search=yes, ai-train=no 的聲明,把用途拆成三個獨立分類。
- search:能不能收進搜尋索引、回傳連結與摘要
- ai-input:能不能即時餵給 AI 模型做即時回答,例如即時檢索並融進答案這類引用行為
- ai-train:能不能拿去訓練或微調模型
三個分類彼此獨立,可以各自設是或否,等於可以寫下歡迎收進搜尋索引跟即時引用、但不准拿去訓練這種過去 robots.txt 語法做不到的細節聲明。目前 Cloudflare 的管理式 robots.txt 服務,已經替啟用這項功能的網站,預設加上 search=yes、ai-train=no 這行聲明。
這行聲明目前還沒有法律強制力,本質上仍是意圖表態,而不是技術上的門鎖。但它的意義在於,把願不願意讓內容被訓練這件事講得更精確,也替日後 AI 公司要不要付費使用內容鋪了一條路,這正是下一層要談的 Cloudflare 新規則背後的邏輯。
Content Signals 目前主要是 Cloudflare 在推,這也帶出一個很多人漏掉的地方,如果網站本來就掛在 Cloudflare 這類 CDN 後面,設定要多做一步。
第三層:網站掛在 Cloudflare 之類的 CDN 後面,設定要多做一步
多數教學只講到 robots.txt 這個檔案本身,但如果網站在 Cloudflare 後面,光改這個檔案不代表真的擋住了,CDN 層有自己的一套規則在跑,兩邊沒對齊,等於白改。
2025 年 7 月起,Cloudflare 把新申請的網域,預設規則從不主動擋,翻轉成預設封鎖所有已知 AI 爬蟲,申請時就要主動選擇要不要放行。這個改變一次影響了相當大一部分的公開網路,等於把要不要讓 AI 爬蟲進來的預設答案,從放行改成不放行。2026 年 9 月,Cloudflare 還會再更新一次預設規則,在有投放廣告的頁面上,訓練類與代理類的爬蟲會被擋,搜尋類則維持允許。

配套的管理介面叫 AI Crawl Control,提供四件事:依爬蟲用途分類設定允許或封鎖、監控爬蟲的造訪與流量、追蹤 robots.txt 檔案的健全度並標出違反指令的爬蟲,以及還在私測階段的按次計費構想,讓 AI 公司每爬一次頁面就付一次費用。
如果網站掛在 Cloudflare 後面,設定完 robots.txt 檔案之後,還要回頭到這個後台檢查一次目前的允許清單,確認跟 robots.txt 裡寫的方向一致。兩邊各管各的、沒人去對過,是最容易發生以為擋了其實沒擋、以為放行了其實還是被攔在門外的地方。
三層都排好之後,還有一個常被搞混的細節,值得單獨拉出來講清楚。
Google-Extended 擋掉,不代表你從 Google 的 AI 搜尋摘要裡消失
很多人把 Google-Extended 當成一支跟 GPTBot、ClaudeBot 一樣會來敲門的爬蟲,擋掉它以為就跟 Google 的 AI 功能沒關係了,這個理解並不正確。
Google-Extended 其實沒有自己的爬取請求,實際抓取網頁的,一直都是一般的 Googlebot。Google-Extended 只是一個政策旗標,控制的是 Googlebot 已經抓回去的內容,能不能被拿去訓練 Gemini、Vertex AI 這些生成式模型,跟抓取本身是兩件事。
所以把 Google-Extended 設成 Disallow,並不會讓網頁從 Google 搜尋結果消失,也不影響它出現在 AI 搜尋摘要功能裡的資格,這兩者靠的都是一般 Googlebot 建的索引,跟 Google-Extended 完全無關。它唯一影響的,是內容會不會被拿去訓練下一代模型。這是三層設定裡最容易被誤判效果的一個環節,很多人以為擋了就等於從 AI 搜尋裡消失,結果只是少了一項訓練用途,搜尋端什麼都沒變。
把三層原理跟這個常見誤解都搞懂之後,可以回頭決定實際要怎麼設。
三層都設定好之後,該放行誰、擋掉誰?
網站的內容性質,才是決定放行或擋掉的依據,不是無差別全擋或全放,而且三層要往同一個方向設。
| 你的情況 | user-agent 層 | Content Signal | CDN 預設 |
|---|---|---|---|
| 內容型網站、想被 AI 引用帶流量 | 擋訓練、放引用 | search=yes, ai-train=no | 確認引用類仍在允許清單 |
| 有版權疑慮的獨家內容 | 訓練嚴格擋、引用視情況 | ai-train=no,視情況再調 ai-input | 維持預設封鎖,不主動加白名單 |
| 純功能型網站、後台、會員系統 | 擋整個路徑而非整站 | 不涉及,該路徑本來就不該被索引 | 依路徑設定,跟 AI 爬蟲無關 |
| 被暴力爬取、伺服器吃不消 | 封鎖兼用伺服器層防護 | 視情況 | 搭配速率限制,robots.txt 治標不治本 |
如果還在猶豫,可以照三個問題依序問自己。
- 內容有沒有版權或獨家性,是不希望被拿去訓練的?沒有的話,連訓練爬蟲都不一定要擋,被訓練到反而可能強化品牌在 AI 裡的存在感。
- 希不希望品牌出現在 ChatGPT、Perplexity 這類 AI 答案裡?只要答案是希望,引用爬蟲就不能擋,CDN 那層的允許清單也要一起確認。
- 真正想解決的是版權,還是伺服器負載?如果是負載,robots.txt 治標不治本,得搭配伺服器層或 CDN 層的速率限制。

三題答完,方向大致就出來了。而且前面提過,Bytespider 這類本來就不遵守 robots.txt 的爬蟲,真正想擋的暴力爬取,往往正是這套告示牌管不到的那一種。
方向定了,剩下就是把規則寫進檔案。
三份可以直接複製的設定片段
以下三套對應三種常見立場,挑一套貼進網站根目錄的 robots.txt,也就是你的網域.com/robots.txt,子網域要各自設定。每套都附上一行 Content Signal 聲明做示範,不需要就拿掉那一行。改完之後,OpenAI 這端大約 24 小時內會生效。
範本一:擋訓練、放引用(多數內容網站建議)
# 引用/搜尋類:允許
User-agent: OAI-SearchBot
Allow: /
User-agent: Claude-SearchBot
Allow: /
User-agent: PerplexityBot
Allow: /
User-agent: ChatGPT-User
Allow: /
User-agent: Claude-User
Allow: /
User-agent: Perplexity-User
Allow: /
# 訓練類:封鎖
User-agent: GPTBot
Disallow: /
User-agent: ClaudeBot
Disallow: /
User-agent: Google-Extended
Disallow: /
User-agent: CCBot
Disallow: /
User-agent: Bytespider
Disallow: /
# 一般搜尋引擎照常
User-agent: *
Allow: /
Sitemap: https://你的網域.com/sitemap.xml
# 意圖聲明:歡迎收進搜尋與即時引用,但不同意被拿去訓練
Content-Signal: search=yes, ai-input=yes, ai-train=noCode language: plaintext (plaintext)
範本二:全部歡迎(能見度優先)
User-agent: GPTBot
Allow: /
User-agent: OAI-SearchBot
Allow: /
User-agent: ChatGPT-User
Allow: /
User-agent: ClaudeBot
Allow: /
User-agent: Claude-SearchBot
Allow: /
User-agent: Claude-User
Allow: /
User-agent: PerplexityBot
Allow: /
User-agent: Perplexity-User
Allow: /
User-agent: Google-Extended
Allow: /
Sitemap: https://你的網域.com/sitemap.xml
Content-Signal: search=yes, ai-input=yes, ai-train=yesCode language: plaintext (plaintext)
範本三:保守封鎖(版權優先,仍留搜尋引用)
# 至少放行搜尋引用,避免從 AI 答案中消失
User-agent: OAI-SearchBot
Allow: /
User-agent: Claude-SearchBot
Allow: /
User-agent: PerplexityBot
Allow: /
# 訓練類:全部封鎖
User-agent: GPTBot
Disallow: /
User-agent: ClaudeBot
Disallow: /
User-agent: Google-Extended
Disallow: /
User-agent: CCBot
Disallow: /
User-agent: Bytespider
Disallow: /
User-agent: *
Allow: /
Sitemap: https://你的網域.com/sitemap.xml
Content-Signal: search=yes, ai-input=no, ai-train=noCode language: plaintext (plaintext)
三套的共同原則只有一條,除非有明確理由,搜尋引用類那幾支盡量都留著。封它們省不到頻寬、保不到版權,只會折損 AI 能見度。網站若掛在 CDN 後面,別忘了這份檔案只是其中一層,還要回頭核對前面第三層講的後台設定。
設定完,最容易漏掉的檢查動作
規則寫完不代表結束,設定完一定要回頭驗證,幾個地方最容易被忽略。
- 用對的工具驗證語法。Google 舊版的 robots.txt 測試工具已經停用,現在要到 Search Console 的設定選單裡找「robots.txt 報告」,確認檔案有沒有被正確抓到、有沒有解析錯誤或警告。
- CDN 後台要跟檔案內容對一遍。掛在 Cloudflare 這類服務後面的網站,兩邊各自有一套規則,只改檔案沒回頭核對後台設定,很容易做了等於沒做。
- 檢查有沒有整站被
Disallow: /誤傷。這最常發生在測試站搬到正式站,卻忘了拿掉測試環境留下的封鎖規則,如果這行留在正式站,連一般搜尋引擎都進不來,網站會整批從搜尋結果消失。
- 別把 robots.txt 當資安工具用。這份檔案是公開的,把機密或後台路徑寫進去防爬,反而是告訴有心人這裡有東西,真正該做的是登入驗證與伺服器層的權限控管。
- 爬蟲名單要定期回頭核對。AI 爬蟲的命名更新得很快,前面提過的 Claude-Web、anthropic-ai 就是活生生的例子,寫了規則不代表永遠有效,隔一段時間該回頭比對一次官方公布的最新爬蟲清單。
回到開頭那組懸殊的爬取比例,它提醒的不只是訓練爬蟲值不值得放行,更是這整件事已經不再是一次性的決定。robots.txt 這份檔案本身還在,但它現在只是三層裡的第一層,Content Signals 讓意圖表態更精確,CDN 後台的預設規則則直接決定了規則到底有沒有真正生效。這三層會隨著 AI 公司和基礎設施商的政策持續調整,就像 2026 年 9 月即將上線的新預設一樣,今天設定好的規則,半年後很可能又要重新檢查一次。與其把它當成設完就能忘記的一次性任務,不如把它排進定期要回頭看一眼的網站維護清單裡。
