你在門口的 robots.txt 狠狠寫下這幾行,指名道姓叫 GPTBot 滾出去:
User-agent: GPTBot
Disallow: /
然後呢?你怎麼知道這張字條有沒有用?
網路上那些教你「該不該拒絕 AI」、「怎麼寫分手信」的農場文多到氾濫,但從來沒有人敢往下回答:把門關上之後,你要怎麼從自己的伺服器 log 裡,確認對方到底有沒有死心。這篇文章就是要談這件事。而且我先聲明,我不會給你一個粉飾太平的「遵循率」數字,真正的原因我們留到後面講。
在開始查勤之前,有三件事會讓你把對方的正常作息,過度解讀成對你的侵犯。
Google-Extended 就是最常被拿來自己嚇自己的例子。Google 官方文件是這樣白紙黑字寫的:「Google-Extended doesn't have a separate HTTP request user agent string. Crawling is done with existing Google user agent strings」。
它從來不會實體出現在你的 log 裡。 它就像一個純粹用來安撫你的承諾條款:你的內容照樣會被 Googlebot 帶走,這個名字只決定了帶走之後,對方能不能把它拿去餵養 Gemini。同一頁還補了一句:「Google-Extended does not impact a site's inclusion in Google Search nor is it used as a ranking signal in Google Search.」
這個推論非常殘酷:關於 Google-Extended 的承諾到底有沒有兌現,你在自己的地盤上永遠查不到。 因為根本沒有實體的請求可以讓你監視,所有的處置全都在 Google 深不見底的內部進行。Apple 的 Applebot-Extended 也是同一種把戲。我們的爬蟲註冊表裡躺著 246 個條目,被標記為「控制 token」的只有這兩個。諷刺的是,它們偏偏是大家最愛寫進 robots.txt 裡的那批。
你在門口看不到他們,不代表他們不守規矩,而是這種私密協議,你本來就無從查證。
這是今天最赤裸的一張表,完全從這三家大廠 2026-09-06 當天的官方規章上扒下來的:
三家公司面對同一道門禁,給了三種嘴臉:一家說通常忽略、一家說可能不適用、只有一家願意給出涵蓋所有 bot 的正面承諾。這不是我刻意曲解,是他們自己貼在臉上的標籤。
請仔細看 Perplexity 那個 generally (通常),還有 OpenAI 那個 may not (可能不)。這兩個詞就是他們為自己留下的逃生後門,而且都精準地留在同一個語境裡。
實務上的結論很痛:擋掉來要訓練資料的傢伙,不代表你能阻止對方在有人使喚時跑來敲門。 你把 GPTBot 全站 Disallow,但只要有個活人在 ChatGPT 裡貼上你的網址,ChatGPT-User 照樣有藉口闖進來。這兩件事在你的 log 裡是兩個不同的身分、兩種不同的節奏,請不要把它們混為一談。
另外別忘了,Anthropic 給的那份公開 IP 清單是一份大鍋炒的合併檔,根本不分身分。所以就算你想從 IP 反查對方到底是來要資料的 ClaudeBot 還是替人跑腿的 Claude-User,這條路也早就被堵死了 (這點我們昨天才剛見識過)。
robots.txt 一直到 2022 年才被正式扶正為標準 (RFC 9309)。實務上最常讓人栽跟斗的四條規矩,官方原話是這樣寫的:
大小寫的包容度是不對等的。 對於對方名字 (UA token) 的比對:「Crawlers MUST use case-insensitive matching to find the group that matches the product token」。但對於你想保護的隱私路徑:「The matching SHOULD be case sensitive.」意思是說,你寫 user-agent: gptbot 對方是必須認帳的 (MUST 不分大小寫),但你寫 Disallow: /Private,卻擋不住他闖進 /private。多數人以為的防護網,方向剛好相反。
誰講得最細誰就贏,而「最細」的定義是字節 (octet) 最多:「The most specific match found MUST be used. The most specific match is the match that has the most octets. … If an "allow" rule and a "disallow" rule are equivalent, then the "allow" rule SHOULD be used.」 所以你立規矩的先後順序根本不重要,長度才是王道。如果剛好平手,他們會毫不猶豫地選擇對自己有利的 allow。
你崩潰的方式,決定了對方怎麼對待你。 這是同一份 RFC 裡兩條極端無情的規定:「If a server status code indicates that the robots.txt file is unavailable to the crawler, then the crawler MAY access any resources on the server.」(4xx 代表門戶大開,全部任憑處置)。
另一條是「If the robots.txt file is unreachable due to server or network errors, this means the robots.txt file is undefined and the crawler MUST assume complete disallow.」(5xx 代表你病得不輕,對方必須退避三舍)。記住,404 等於全裸,500 等於死鎖。如果你的 robots.txt 是動態生成的,某次上線出包回了 404,你所有的底線在爬蟲眼裡會瞬間蒸發。
他們只會保留你的承諾 24 小時:「Crawlers SHOULD NOT use the cached version for more than 24 hours, unless the robots.txt file is unreachable.」這條規定直接決定了你查勤的耐心要有多長。
「他們到底尊不尊重我立下的規矩?」這其實是兩個難度天差地別的拷問。把它們拆開來,你會發現第一層的答案,便宜到你今晚就能動手。
這一層只需要簡單的 grep 就能抓到把柄:
grep '/robots.txt' access.log | awk '{print $1, $12}' | sort | uniq -c | sort -rn
把這些紀錄拖出來看兩件事:到底是誰來讀過你的 robots.txt,以及他們多久才來看一次。配合 RFC 那個 24 小時的記憶上限,一個每週才來敷衍看一次的爬蟲,對你昨天剛改好的規矩,本來就不會有任何反應。
這裡提供一個極度實用的查勤線索。根據我們爬蟲註冊表的紀錄,從 2026-08-03 開始,GPTBot 與 OAI-SearchBot 在抓取 robots.txt 本身時,會在他們的 UA 字串裡刻意帶上一個 robots.txt 標記。所以那一筆打探底線的請求,你在 log 裡一眼就能認出來,根本不需要靠路徑去瞎猜。
此外,你還得把他們神經傳導的時間算進去。OpenAI 官方是這麼說的:「For search results, please note it can take ~24 hours from a site's robots.txt update for our systems to adjust.」
而 Anthropic 呢?他們完全沒有交代任何傳播時間。這一格在他們心裡是真的空白,不是我沒查到。所以你查勤的底線是「改完規矩之後至少隱忍 24 小時」,而且對於某些對象,你根本不知道這場等待有沒有盡頭。
這一層你必須設下對照組的圈套,因為這裡藏著一個巨大的自我欺騙:「他沒有來碰那一頁」,絕對不等於「他尊重你的規矩」。 也許只是他剛好抓取失敗、被你的保鑣 (WAF) 擋在門外,或者他根本從頭到尾就沒對那一頁感興趣過。
2026 年 7 月,西班牙馬德里理工與 ETH Zurich 的一篇 arXiv 論文 (2607.14447) 把這個檢驗標準寫得最無情:「Avoiding a disallowed page is meaningful only when the same system also demonstrates successful retrieval of allowed pages under comparable conditions.」
避開了禁區,只有在同一個傢伙能在相同條件下成功觸碰你允許的區域時,這份尊重才算數。
他們設下的圈套可以直接搬來用,總共四個象限:
一個真的把你的話聽進去的系統,行為應該是這樣:條件 1 和 3 他拿得到,條件 2 和 4 他碰不到。只有這四個象限同時攤在陽光下,你才能分辨對方到底是「守規矩」,還是單純「無能為力」。
這圈套還有一個致命的細節:每一個目標頁面都必須放上一把獨一無二的鑰匙 (論文裡是用 HMAC 算出來的密碼)。有了這把鑰匙,你才能確定「他是真的親自來翻過這一頁」,而不是「他拿著過期的記憶或別人的轉述,在對你背誦一段看起來很像的謊言」。少了這層確認,你測到的只是他大腦裡殘留的幻影,根本不是他此刻的行為。
Cloudflare 在 2025 年做同一件事時,手法乾淨得讓人頭皮發麻 (官方原話):「We created multiple brand-new domains, similar to testexample.com and secretexample.com. These domains were newly purchased and had not yet been indexed by any search engine nor made publicly accessible in any discoverable way.」
買下全新、從未被任何搜尋引擎染指、沒有任何公開入口的網域。這麼一來,對方只要敢開口說「我知道這個站的秘密」,那絕對是當場非法潛入抓出來的,賴都賴不掉。
你要怎麼打造自己版本的最小圈套:準備兩個私密路徑,一個寫 allow 一個寫 disallow,各藏一段隨機的密碼。robots.txt 換好之後,安靜等滿 24 小時以上。接著,對每一個你想測試的 AI 助理下令:「請去幫我拿 裡的東西」,同時死死盯著你的 log 看。四個象限的反應都填滿了,再來談對方是不是個值得信任的對象。
因為這個圈子裡,目前根本沒有任何一個經得起考驗的數據。每一個被端上檯面的數字,骨子裡全都有結構性的殘缺。
目前世面上發表過最嚴謹的一份報告,是 2025 年的一篇大規模實證研究 (arXiv 2505.21733)。他們在某美國大型私立大學的 36 個網站上,花了 40 天,盯著 130 隻自己報上名號的 bot,輪流換上四種面具的 robots.txt (基準版、要求等待 30 秒版、限定端點版、全站死鎖版),每一種測試兩週。他們的摘要寫得很直白:「We find that bots are less likely to comply with stricter robots.txt directives, and that certain categories of bots, including AI search crawlers, rarely check robots.txt at all.」
這是一個明確的惡意輪廓:AI 助理與 AI 搜尋爬蟲這兩類傢伙,在 168 小時的忍耐期內,願意去看一眼你 robots.txt 的比例,連四成都不到。
但這篇論文裡每一隻 bot 的成績單,你絕對不能把它當成遵循率來讀。這是我必須用力搖醒你的地方。他們的三個實驗用了三種完全不同的衡量標準。全站死鎖那組算的是「robots.txt 被碰的次數 ÷ 所有頁面被碰的總數」;限定端點那組算的是「(robots.txt 加上允許端點) 被碰的次數 ÷ 總次數」;要求等待那組算的則是兩次造訪的空窗期。他們把三種截然不同的行為,全塞在同一個「compliance」的字眼底下。你可以很誠實地說「當我全面封鎖時,某些爬蟲確實只敢看 robots.txt,但有些傢伙依然故我地闖進來亂翻」。但你絕對不能簡化成「某某爬蟲的遵循率是 20%」。
更致命的是兩個結構性的盲區,而且這兩個盲區剛好呼應了我們昨天的警告:
所以這類研究算出來的數字,只是他們惡劣行徑的下限,絕對不是上限。
這正是這兩天文章最痛的交集:沒有經過身分驗證的遵循率,全都是一場笑話。 一個假冒 GPTBot 的騙子踐踏了你的規矩,這筆帳最後算在誰頭上?你的報表只會默默把這筆爛帳記給 OpenAI。
至於單一廠商之間的互咬。Cloudflare 在 2025-08-04 曾經發文指控某家 AI 搜尋業者,利用不具名的爬蟲強行繞過 no-crawl 指令。他們當時拿出一組非常乾淨的對照組 (官方原話):「When we ran the same test…with ChatGPT, we found that ChatGPT-User fetched the robots file and stopped crawling when it was disallowed.」
一樣的測試,一樣的誘惑,一個停手了,另一個強闖了。這大概是這攤渾水裡最有說服力的一次對質。但基於誠實,我必須加上兩個標籤:這是利害關係人自己做的量測 (Cloudflare 賣的正好就是擋機器人的保全服務),而且被指控的那一方公開否認,至今從未認帳。2024 年更早的時候也爆發過類似的醜聞,但因為我在本機已經找不到當時一手英文調查報導的原文,所以今天我拒絕引用那裡面的任何一句話。
Google-Extended 和 Applebot-Extended 永遠不會留下足跡,他們尊不尊重你,你根本無從在伺服器端查證。明天,我們走進 Cloudflare AI Crawl Control,看看那些免費的保全,到底能給你多少安全感。
本文是「你的第一本 AEO x GEO 教戰手冊」系列第 5 天。系列實測與數據由 arrivl 整理 (Growth Analytics for the Agentic Web)。