首頁 / 技術指南 / 從日誌辨識 AI 爬蟲

Guide

怎麼從伺服器日誌辨識 AI 爬蟲?

網頁分析工具幾乎看不到 AI 爬蟲。要知道哪些 AI 系統來過,只能看伺服器端或 CDN 邊緣的存取記錄。

發布 2026-09-08更新 2026-09-24最後查核 2026-09-08topcc.me 編輯部

為什麼分析工具看不到

Google Analytics 這類工具靠瀏覽器執行 JavaScript 才會送出事件。AI 爬蟲多半只抓 HTML,不執行 JS,因此從不觸發那段程式碼。你的分析報表裡看不到它們,不代表它們沒來。

唯一可靠的來源是伺服器端或 CDN 邊緣的存取記錄——每一個 HTTP 請求都會留下,無論對方是否執行 JS。

要記錄哪些欄位

欄位為什麼需要
時間戳判斷抓取頻率與時段
路徑知道它對哪些內容有興趣
User-Agent判斷是哪一支爬蟲
狀態碼知道它有沒有真的拿到內容——這一項最常被忽略
來源 IP用於反向 DNS 驗證(記錄後應考慮保存期限與個資規範)
Referer判斷是否為使用者觸發的請求
回應時間判斷是否因為太慢而被放棄
狀態碼一定要記。只記「誰來過」而不記「拿到什麼」,會得出過度樂觀的結論。本站的觀測資料中,有些爬蟲的 200 比例不到四成——它們來了,但沒拿到內容的請求多半是 404 或轉址。

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 的爬蟲。

本目錄觀測資料(shell.fans)中的可驗證性差異,2026-07-02 查核啟用後
自稱的爬蟲可驗證通過疑似偽冒(來源 IP 不在網段內)
GPTBot是(IP 網段)2111,197(85.0%)
OAI-SearchBot是(IP 網段)5091,050(67.4%)
ChatGPT-User是(IP 網段)3551,829(83.7%)
PerplexityBot是(IP 網段)146952(86.7%)
Google-Extended不適用(沒有獨立 UA)—UA 自稱者一律視為偽冒(603 筆)
ClaudeBot廠商未提供方法—無法判定
Bytespider廠商未提供方法—無法判定
「無法驗證」不等於「偽冒」,但偽冒很常見。多數廠商單純沒有公布驗證方法,無法驗證不代表是假的。可是在能查核的五支爬蟲上,shell.fans 在查核啟用後收到的「自稱」請求有 82.0%(6,768 筆中的 5,547 筆)來源 IP 不在廠商網段內,被判定為疑似偽冒。無法驗證的 UA 一樣可以被冒用,只是看不出來——這是設計存取控制與解讀日誌時必須納入的前提。篩選方式與限制見AI 爬蟲目錄。

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 爬蟲目錄。

判讀時要分開的三件事

  1. 爬蟲有沒有來——存取記錄可以回答
  2. 它有沒有拿到內容——狀態碼可以回答
  3. AI 有沒有在回答中使用它——存取記錄無法回答,需要另外的引用監測

把第一項當成第三項的證據,是解讀爬蟲資料時最常見的錯誤。

更正(2026-09-24):本頁先前引用的觀測數字把 shell.fans 與一個客戶網站的記錄合併計算,卻寫成「兩個站台」的第一手資料。現已只用 shell.fans 自己的記錄重算(期間不變);可驗證性的表格改列疑似偽冒的筆數,Google-Extended 不再列為可驗證的爬蟲,先前「沒有任何一筆疑似偽冒」的說法已撤回。改了什麼見AI 爬蟲目錄的更正說明。

常見問題

用 Cloudflare 的話要怎麼看?

Cloudflare 的邊緣日誌會記錄所有到達邊緣的請求,包含未回源的快取命中。若只看源站日誌,會漏掉被快取擋下的那部分。

爬蟲來得多,是不是代表 AEO 有效?

不是。爬蟲造訪只代表內容被取得,不代表 AI 會在回答中使用它,更不代表會提到你的品牌。這三件事需要分開量測。

記錄 IP 有沒有個資問題?

IP 在部分司法管轄區被視為個人資料。若要保存,應設定保存期限、限制存取,或在不需要驗證時只保留網段。具體要求依你所在地的法規。

資料來源