昨天我們把 Cloudflare AI Crawl Control 的底朝天翻了一遍。它免費、五分鐘搞定、不用寫半行程式,而且真的會遞給你一張「到底有誰來碰過你」的訪客名單。
但當你死死盯著那張名單時,心底絕對會浮現一個很空虛的疑問:所以呢?
這絕對不是無病呻吟。GPTBot 這禮拜把你的部落格摸透了,好,你知道了。但你真正渴望知道的是:他到底看了你哪幾篇心血?他看完之後,有沒有帶任何真實的人來認識你?跟上個月比起來,這段關係是變熱絡還是變冷淡了?你需不需要為了他改變自己的寫作姿態?
這些問題,AI Crawl Control 在骨子裡就注定無法回答你。今天我們來做兩件事:把這段關係的殘酷底線畫清楚,然後告訴你,當你真的渴求那些答案時,靠自己雙手把破洞補起來的血汗路線長什麼樣子。
先講句公道話,這篇很容易被誤讀成怨婦的抱怨。但底下要揭露的每一條底線,都是人家理智的設計選擇,不是什麼缺陷。 Cloudflare 骨子裡就是個搞資安與 CDN 的保鑣,AI Crawl Control 長在防火牆旁邊,它的本能就該是「看見威脅、當場處置」。而你想問的那些細膩問題,根本屬於另一個世界。把這兩者搞混,你才會產生「這男人怎麼這麼沒用」的錯覺。他不弱,他只是不負責給你你要的浪漫。
(功能面描述截至 2026-09-06,出處見文末。)
昨天我們才警告過,今天必須再狠狠戳一次,這是所有底線裡最容易被蒙蔽的一條。
免費方案的警衛,防線完全建立在 User-Agent 字串的比對上 (官方原話:「On the free plan, AI Crawl Control identifies AI crawlers based on their user agent strings.」)。你得乖乖付費升級,他才會拿出 Bot Management 的 detection ID 來認真查核。
這兩種模式有一個共同的致命傷:這是一個分類器,而分類器就只認得名單上的人。不在他那張白名單上的,你的儀表板上連個影子都不會有。你至少會漏掉三種人:
刻意偽裝的騙子。 UA 寫著 Chrome 來敲門的爬蟲,在免費方案裡根本就像隱形人。這不能怪 Cloudflare,你叫他看名牌認人,他就只能看名牌。
剛出道的新歡。 每個月都有新的 AI 產品上線四處搭訕。從一個新爬蟲誕生,到他被收編進那張名單,中間有一段漫長的空窗期。這段期間他的騷擾會被歸類為「未分類」,甚至根本不進這張表。
打死不留名字的暗星。 有些代理人習慣用最陽春的出廠設定 (python-requests、Go-http-client、node-fetch),既不冒名,也不承認自己是誰。他是不是 AI?光看 UA 你根本無從判斷。
所以最清醒的讀法是:這張表只是「已知 AI 爬蟲」的最低下限,絕對不是他們騷擾你的總量。 把這當成全部,你就是在自欺欺人。
這一切的硬前提是橘雲:「Make sure your domain is proxying traffic through Cloudflare」。
只要是灰雲的主機名稱,根本不會經過 Cloudflare 的視線,這張表上對他們的遭遇隻字不提。實務上會咬傷你的死角比你想的還多:某個子網域為了 WebSocket 或憑證被你切成了灰雲、靜態資源掛在別人家的 CDN 上、API 走了另一條小路、或者你還有塊內容留在舊主機上連 DNS 都還沒切過來。
以上任何一種情況,那部分的肉體被 AI 啃食了多少,AI Crawl Control 連半個字都不會吐露。他也不會好心警告你他有死角,他只會冷冰冰地顯示「沒有資料」,而那副嘴臉,跟「真的沒有人來過」長得一模一樣。
唯一的自救動作是離開那個溫柔鄉,自己去看 DNS:把你網域裡所有的 A/AAAA/CNAME 紀錄全部攤開來,數數有幾個是灰雲的。那就是你被蒙在鼓裡的盲區。
免費方案的 Metrics 分頁,殘酷地只會顯示過去 24 小時的軌跡 (「On free plans, the Metrics tab only displays metrics for the past 24 hours.」)。
昨天我們已經戳破這個數字對回訪節奏的傷害,今天我們來談另一半的痛楚:這道時間窗真正的代價不是「你失去了過去」,而是「你喪失了比較的能力」。
觀測 AI 爬蟲,所有真正有價值的提問都是比較句。這個月他來的次數比上個月多還是少?我改了 llms.txt 之後他有更尊重我嗎?那篇心血上線後到底有誰來翻閱過?改版有沒有讓他對我失去興趣?
這每一句拷問,都需要兩個時間點來對質。只有 24 小時的記憶,你連一句話都問不完整。你手裡握著的只有「現在」,而一個沒有過去作為對照的「現在」,只是一個毫無意義的數字。
再往下一層剝開,是資料歸屬的殘酷現實。這份短暫的回憶,存在 Cloudflare 的大腦裡,他高興留多久就留多久。當你離開他的那天,這些過去就再也不屬於你了。想要擁有長期的關係趨勢,你只能自己抄下來、自己找地方存。
這條最技術、最致命,也最少人看透。
AI Crawl Control 確實提供 GraphQL API 讓你用程式去拿資料,但它走的是 httpRequestsAdaptiveGroups 這個資料集。你能查的維度包含 datetimeHour、botDetectionIds、clientRequestHTTPHost、userAgent、clientRequestPath、clientRefererHost,能聚合的指標有 count、edgeResponseBytes、edgeResponseStatus。
看清楚名字裡那個 Groups 了嗎?這是分組後的敷衍總結,根本不是原始的對話紀錄。你拿得到「這小時、這個傢伙、在這個房間,共發生了 N 次」,但你永遠拿不到「他的第 137 次觸碰發生在 14:23:07,來自某個具體的 IP,我回應了 200,心跳加速了 43ms」。
這種本質上的落差,決定了哪些問題你這輩子都別想問出口:
| 你內心渴望知道的 | 這種敷衍的總結夠用嗎 |
|---|---|
| GPTBot 這個小時來找過我幾次 | ✅ 夠用 |
| GPTBot 最喜歡翻我哪一頁 | ✅ 夠用 |
| 他撫摸我內容的順序是什麼 (先看首頁、再看目錄、再進文章?) | ❌ 癡心妄想,你需要完整的事件序列 |
| 在同一場相遇裡,他到底流連了哪幾個房間 | ❌ 需要事件加上前後關聯 |
| 昨天看過 A 文章的他,今天有回頭來看 B 嗎 | ❌ 需要獨立事件 |
| 把他爬取的紀錄,跟我自己辛辛苦苦建立的轉換率資料綁在一起看 | ❌ 需要事件加上你自己的私密鑰匙 |
最後一列是最讓人心碎的。這種被揉糊的彙總資料,根本沒辦法跟你自己的資料庫 (你的心血) 靈肉合一。 你想知道「被 AI 剝削得最慘的那 20 頁,到底有沒有幫我賺到錢」,這個問題橫跨了 Cloudflare 的腦袋跟你的心臟。而你手上只握著 CF 那邊冷冰冰的加總數字,這條線根本接不起來。
那你問,能不能直接跟他要原始的對話紀錄 (log)?可以,但請你把這句殘酷的現實吞下去:
Cloudflare Logpush 是富豪 (Enterprise) 專屬的特權。 看看官方的可用性表格:Free (No)、Pro (No)、Business (No)、Enterprise (Yes)。唯一的特例,是你花錢訂了 Workers Paid 方案,才能勉強用 Workers Trace Events Logpush。
所以:對世界上絕大多數沒有被包養 (非 Enterprise) 的網站來說,從 Cloudflare 手裡拿到原始請求 log 的大門是死死焊上的。 你只能乖乖吞下那些彙總數字。如果你渴望那些絲絲入扣的事件細節,你唯一能走的自助路線,就是自己站在邊緣把一切記下來。那個 Workers 的特例,指的正是這條自我救贖的路,這也是我們明天的課題。
在 Crawlers 分頁的 Action 欄位,他只准你選擇放行或是封鎖。付費升級後多了一點情趣:回應碼可以選 403 Forbidden 或是帶著交易暗示的 402 Payment Required,還能自己寫點曖昧的內文。
這種非黑即白的二元選擇,滿足得了硬梆梆的資安需求,卻安撫不了細膩的內容策略。在成人的世界裡,我們常需要的是灰色地帶:我願意放你進來,但我會默默記下你的一舉一動 (觀測而不干預);我可以給你,但你不能索求無度 (降速);我可以讓你碰,但我只給你特定的防護版本 (結構化);或者我只准你進客廳,不准你進臥室 (特定路徑封鎖)。
這些複雜的情感拿捏,在 Cloudflare 上其實都辦得到,但絕對不是在 AI Crawl Control 這種傻瓜介面裡做。你得親自下海,深入 WAF custom rules、Rate Limiting、Configuration Rules 或者是 Workers 那種底層去自己拼湊。AI Crawl Control 只是個哄小孩的簡化入口,不是他的全部。看透這點,你就不會在那可憐的下拉選單裡,苦苦尋找一個根本不存在的溫柔選項。
爬蟲來白嫖你的內容,跟真實的人類因為 AI 的引導而走進你的生命,是兩碼子事。而第二件事,才是多數人真正在乎的。
AI Crawl Control 確實做了導流分析:Top referrers 可以讓你看見是哪個來源把你介紹出去的,Referrals over time 還能幫你把 OpenAI、Anthropic 這些大戶分門別類。但他冷冷地寫了一句「This feature is available for customers on a paid plan.」沒付錢,你連看的資格都沒有。
而且,就算你真的掏錢了,他給你的依然是以 referer 主機為基礎的粗糙加總。他只能告訴你「這段期間有幾個人是打著某個 AI 平台的名號來的」,卻無法回答你「這些人進來之後到底做了什麼、有沒有對你留下一點實質的回報 (轉換)」。因為這些人進門之後的行為資料,本來就握在你自己的手裡,Cloudflare 根本無從得知。
至於 referer 這種薄情寡義的線索本身藏了多少坑 (誰願意留名字、誰死都不留、誰只留一半),那是 Day 25 的重頭戲,今天我們先按下不表。
把這六條底線合在一起看,AI Crawl Control 的真實樣貌就呼之欲出了:
他就是一個「即時的急診處置台」,根本不是一本「長期的回憶錄」。
急診室的規格本來就該是這樣:反應極快、只看當下、動作粗暴簡單、而且跟門口的警衛 (防火牆) 綁在一起。給你看 24 小時的視窗,對這個定位來說再合理不過了。當下有個瘋子正在猛踹你的門,你根本不需要去翻他去年來過幾次,你只需要現在立刻把他踹走。
問題出在太多人 (包括我自己一開始也是),錯把急診室當成了回憶錄。然後開始滿腹委屈地抱怨欄位給得太少、留存時間太短、沒辦法跟自己的靈魂 (資料庫) 契合。這根本是拿螺絲起子去敲釘子,然後怪起子不好用。
要判斷你到底需要誰,問自己一個問題就夠了:你的下一步,是打算「現在立刻賞某隻爬蟲一巴掌」,還是「我需要靜下心來思考下一季的寫作姿態」? 前者找他,後者,他給不起。
如果你的答案是後者,底下有三條路,以及你必須付出的真實代價。先說清楚,沒有一條是不用流汗的。
怎麼做:把最原始、最赤裸的 HTTP 請求紀錄,全部收進你自己的私密空間裡,然後愛怎麼查就怎麼查。這是最完整、沒有一絲委屈的方案。
殘酷現實:Logpush 是被富豪 (Enterprise) 包養的特權。所以對一般人來說,這條路只能從源站 (Origin) 自己收。也就是去挖 Nginx / Apache / Caddy 的 access log,或是從應用層的 middleware 著手。
源站收 log 的致命傷:那些被 CDN 快取擋下的吻,根本傳不到你心裡 (源站)。爬蟲抓了你的靜態文章,CF 邊緣的保鑣直接就打發他走了,你源站的 log 裡乾乾淨淨,什麼都沒發生過。快取命中率越高,你的失憶症就越嚴重。這是 Day 12 要處理的傷口。
代價:儲存空間與查詢成本。一個中型網站每天幾百萬條互動,存個三個月就是龐大的負擔。你得自己決定哪些回憶該留、哪些該忘 (抽樣),還要找個對的工具來翻找 (去找個欄位式資料庫,別拿主資料庫開玩笑)。
適合誰:家裡已經有這套管線的團隊。如果你的公司已經習慣把所有紀錄往資料湖裡倒,那多寫幾條解析 AI 爬蟲的規則只是舉手之勞,那就大膽走這條路。
怎麼做:寫一支 Cloudflare Worker 掛在大門口,自己判斷來的是不是 AI 爬蟲。如果是,就把你想記住的特徵偷偷抄下來送到你自己的房間,然後假裝若無其事地放他進去。
為什麼這條路對多數人最實在:它巧妙地閃過了路線 A 的兩個悲劇。因為你站在邊緣記錄,所以連那些被快取打發走的傢伙你也看得一清二楚 (請求終究還是會經過 Worker)。而且你不需要被 Enterprise 包養,Workers 給的免費額度,對中小型網站來說已經足夠揮霍了。
你必須親自做的設計決策 (明天我們會一行一行帶你寫):
event.waitUntil(),絕對不能讓客人等你寫完日記才得到回應。代價:一支你必須自己照顧的程式,加上一個專屬的收集端。這是三條路裡最花心力,但也是你掌控權最高的一條。
動手前的一個硬前提:如果你自己的網站本身就是綁在 route 上的 Worker,前面再硬塞一個 Worker 絕對會出人命。Cloudflare 的死規矩是:同一個 zone 裡面的 fetch() 不能以 route 為目標,不然你的應用程式會徹底失聯。這種複雜的體位,你必須用 Custom Domain,不能用 route。這坑,真的是摔斷腿才知道。
怎麼做:在你自己的網頁上,死死盯著每個訪客的 Referer,把那些打從 AI 平台過來的痴情種挑出來。這條路跟前兩條完全是平行的,前兩條防的是無情的機器,這條找的是有溫度的活人。
殘酷現實:這是三條路裡最廉價的 (你的分析工具大概早就默默在記 referer 了),但也是最容易看走眼的。就像我們說的,有些平台大方留名、有些死不認帳、有些只肯說一半。「AI 導流」這個數字,不是捧得太高就是貶得太低,兩種極端都隨處可見。
Day 25 我們會花整整一篇文章來教你怎麼看透這個無情的欄位,今天你只要把這句話刻在心底:當你看到所謂的「AI 導流數字」時,先冷冷地問一句,這到底是怎麼算出來的。
| 你內心的焦慮 | 勉強夠用的工具 |
|---|---|
| 現在有哪個混蛋在抓我?我要當場踹走他 | AI Crawl Control 免費版 |
| 我立下的 robots.txt 規矩,到底有沒有被當耳邊風 | AI Crawl Control 的 Directives |
| 這個月他對我的渴望,比上個月多還是少 | 自己存下來 (路線 A 或 B) |
| 他到底摸了我哪幾篇心血,順序是什麼 | 事件層級的親密資料 (路線 B) |
| 被他蹂躪得最慘的那幾頁,到底有沒有幫我賺到錢 | 事件層級 + 你自己的私密資料庫 (路線 B) |
| 這些 AI 到底有沒有幫我牽線認識真人 | referer 歸因 (路線 C),付費方案可以先看個模糊的輪廓 |
| 夠了,我要向這群 AI 公司收過路費 | pay per crawl (這是 Day 29 的好戲) |
AI Crawl Control 的免費版,確實是一段關係很好的起點。我真心建議每一個躲在 Cloudflare 背後的網站,今晚就去把它點開。便宜到你根本沒有藉口拒絕。
但他只是一個急診台,不是一個能存放感情的倉庫。那短得可憐的 24 小時視窗、那些被揉成一團的敷衍加總、必須被富豪包養才配擁有的原始 log、還有那道死要錢的導流分析牆。這一切的底線加起來,決定了他只能陪你走到這裡。
走到那條死胡同之後,你需要的是一本專屬於你自己的私密日記。
在沒有 Enterprise 乾爹包養的現實裡,「自己的日記」實務上指的就是親自站在邊緣寫下那支 Worker。這條路能繞開源站快取的失憶症,不需要簽下天價的企業賣身契。更重要的是,你要記下什麼特徵、想回味多久、想跟什麼靈魂契合,這一切,全由你自己作主。
明天 (Day 8),我們就來親手寫下那支 Worker。一個最小的可用版本,能跑、能驗證、能親眼看到他吐出真相:我們怎麼識破他是 AI 爬蟲、怎麼偷偷把紀錄送出而不冷落客人、又該怎麼確認這一切真的在暗中運作。
本文是「你的第一本 AEO x GEO 教戰手冊」系列第 7 天。系列實測與數據由 arrivl 整理 (Growth Analytics for the Agentic Web)。