Guide
怎麼從伺服器日誌辨識 AI 爬蟲?
網頁分析工具幾乎看不到 AI 爬蟲。要知道哪些 AI 系統來過,只能看伺服器端或 CDN 邊緣的存取記錄。
為什麼分析工具看不到
Google Analytics 這類工具靠瀏覽器執行 JavaScript 才會送出事件。AI 爬蟲多半只抓 HTML,不執行 JS,因此從不觸發那段程式碼。你的分析報表裡看不到它們,不代表它們沒來。
唯一可靠的來源是伺服器端或 CDN 邊緣的存取記錄——每一個 HTTP 請求都會留下,無論對方是否執行 JS。
要記錄哪些欄位
| 欄位 | 為什麼需要 |
|---|---|
| 時間戳 | 判斷抓取頻率與時段 |
| 路徑 | 知道它對哪些內容有興趣 |
| User-Agent | 判斷是哪一支爬蟲 |
| 狀態碼 | 知道它有沒有真的拿到內容——這一項最常被忽略 |
| 來源 IP | 用於反向 DNS 驗證(記錄後應考慮保存期限與個資規範) |
| Referer | 判斷是否為使用者觸發的請求 |
| 回應時間 | 判斷是否因為太慢而被放棄 |
User-Agent 的三個陷阱
一、版本號會變
本目錄的觀測資料中,GPTBot 7 月起送出的都是 GPTBot/1.4(6 月還看得到 1.2 與 1.3),但多數教學文章仍寫著 1.0。比對規則應該用不含版本的字串。
二、有些爬蟲偽裝成一般瀏覽器
Meta-ExternalAgent 與 Bytespider 送出的 UA 有好幾種,其中不少以正常的 Chrome 或 Android 瀏覽器字串開頭,真正的身分寫在括號裡。只比對開頭會完全漏掉它們。
# Meta-ExternalAgent 實際送出的字串(節錄)
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36
(KHTML, like Gecko) Chrome/145.0.0.0 Safari/537.36
(compatible; meta-externalagent/1.1 (+https://developers.facebook.com/...))
三、UA 可以被任何人冒用
User-Agent 是請求方自己宣告的字串,沒有任何強制力。要確認來源真的是該廠商,有兩種做法:比對廠商公布的 IP 網段(OpenAI 與 Perplexity 都有公布),或做反向 DNS 正解:先用來源 IP 反查主機名,再把該主機名正解回 IP,確認與原始 IP 相符,並檢查主機名是否屬於廠商公告的網域。反查結果要對照廠商公布的網域清單,不能只看主機名裡有沒有廠商的名字——本站舊版的爬蟲目錄就曾把 Google Cloud 上租用者的主機誤認為 Google 的爬蟲。
| 自稱的爬蟲 | 可驗證 | 通過 | 疑似偽冒(來源 IP 不在網段內) |
|---|---|---|---|
GPTBot | 是(IP 網段) | 211 | 1,197(85.0%) |
OAI-SearchBot | 是(IP 網段) | 509 | 1,050(67.4%) |
ChatGPT-User | 是(IP 網段) | 355 | 1,829(83.7%) |
PerplexityBot | 是(IP 網段) | 146 | 952(86.7%) |
Google-Extended | 不適用(沒有獨立 UA) | — | UA 自稱者一律視為偽冒(603 筆) |
ClaudeBot | 廠商未提供方法 | — | 無法判定 |
Bytespider | 廠商未提供方法 | — | 無法判定 |
Google-Extended 是特例。它只是 robots.txt 的控制權杖,Google 不會用這個名稱當 User-Agent 送出請求,所以在日誌裡用它找 Google 的 AI 抓取只會找到冒用者。詳見爬蟲目錄的說明。
用 grep 快速看一眼
在標準的 nginx/Apache 存取日誌上,最簡單的起點:
# 列出 AI 爬蟲的請求數(不分版本)
# 注意:這只數 UA 自稱,包含冒用者;Google-Extended 沒有自己的 UA,不放進比對
grep -oiE '(GPTBot|OAI-SearchBot|ChatGPT-User|ClaudeBot|Claude-User|Claude-SearchBot|\
PerplexityBot|meta-externalagent|Amazonbot|Bytespider|CCBot)' \
/var/log/nginx/access.log | sort | uniq -c | sort -rn
# 同時看狀態碼分布(欄位位置依你的 log_format 調整)
awk '/GPTBot/ {print $9}' /var/log/nginx/access.log | sort | uniq -c
完整的爬蟲清單與各自的 User-Agent 字串見AI 爬蟲目錄。
判讀時要分開的三件事
- 爬蟲有沒有來——存取記錄可以回答
- 它有沒有拿到內容——狀態碼可以回答
- AI 有沒有在回答中使用它——存取記錄無法回答,需要另外的引用監測
把第一項當成第三項的證據,是解讀爬蟲資料時最常見的錯誤。
常見問題
用 Cloudflare 的話要怎麼看?
Cloudflare 的邊緣日誌會記錄所有到達邊緣的請求,包含未回源的快取命中。若只看源站日誌,會漏掉被快取擋下的那部分。
爬蟲來得多,是不是代表 AEO 有效?
不是。爬蟲造訪只代表內容被取得,不代表 AI 會在回答中使用它,更不代表會提到你的品牌。這三件事需要分開量測。
記錄 IP 有沒有個資問題?
IP 在部分司法管轄區被視為個人資料。若要保存,應設定保存期限、限制存取,或在不需要驗證時只保留網段。具體要求依你所在地的法規。
資料來源
- OpenAI — Bots and crawlers
- Google — Verifying Googlebot and other crawlers
- Google — List of Google's common crawlers(Google-Extended)
- Perplexity — Bots
- 第一手觀測:shell.fans(ShellFans 的官網)的伺服器端存取記錄,2026-06-18 ~ 2026-09-08,10,784 筆 AI 爬蟲請求(已排除疑似偽冒)。