AI 爬蟲的 robots.txt 寫法
各家 AI 公司的爬蟲遵守 robots.txt 的範圍各不相同,要讓它發揮作用,就得知道每家公司的爬蟲名稱並分別寫上。只擋訓練用的抓取、保留搜尋顯示、放慢抓取速度、擋下所有已公開名稱的爬蟲:點擊卡片即可複製要貼進 robots.txt 的幾行。每張卡片都附了一句,說明該公司的文件寫明自家爬蟲遵守什麼。卡片頂部的色帶每格代表一個 User-agent 群組,紅色是封鎖的群組,綠色是放行的群組,黃色是只放慢速度的群組。
只擋訓練用抓取(GPTBot)
OpenAI 把訓練用抓取交給 GPTBot。這條規則管不到負責 ChatGPT 搜尋顯示的 OAI-SearchBot。
User-agent: GPTBot
Disallow: /擋訓練,保留 ChatGPT 搜尋顯示
OpenAI 的文件寫明,這兩個名稱可以在 robots.txt 裡分別放行或封鎖。搜尋那邊的變更大約 24 小時後生效。
User-agent: GPTBot
Disallow: /
User-agent: OAI-SearchBot
Allow: /關閉 ChatGPT 搜尋顯示(OAI-SearchBot)
只擋負責 ChatGPT 搜尋顯示的 OAI-SearchBot。依 OpenAI 文件的說法,改完後大約 24 小時生效。
User-agent: OAI-SearchBot
Disallow: /放慢抓取速度(ClaudeBot)
Anthropic 表示 ClaudeBot 支援非標準的 Crawl-delay 擴充,並以這個值(1)作為範例。
User-agent: ClaudeBot
Crawl-delay: 1擋訓練 + 放行搜尋 + 放慢速度
Crawl-delay 是非標準擴充,所以只放在已表明支援的 ClaudeBot 群組裡。另外兩組是 OpenAI 寫明可以分別處理的名稱。
User-agent: GPTBot
Disallow: /
User-agent: OAI-SearchBot
Allow: /
User-agent: ClaudeBot
Crawl-delay: 1封鎖 ClaudeBot
Anthropic 表示 ClaudeBot 遵守 robots.txt。
User-agent: ClaudeBot
Disallow: /封鎖使用者發起的造訪(ChatGPT-User)
這是 ChatGPT 使用者提問後開啟頁面的造訪。OpenAI 的文件寫明,由於這類動作由使用者發起,robots.txt 規則可能不適用。
User-agent: ChatGPT-User
Disallow: /封鎖所有已公開名稱的 AI 爬蟲
四個名稱中,ChatGPT-User 可能不受規則約束。與其說是封鎖,不如說是公開表明網站的立場。
User-agent: GPTBot
Disallow: /
User-agent: OAI-SearchBot
Disallow: /
User-agent: ChatGPT-User
Disallow: /
User-agent: ClaudeBot
Disallow: /常見問題
- 在 robots.txt 裡擋了,抓取就會停嗎?
- 規定這個檔案規則的標準(RFC 9309,2022 年 9 月)寫得很明確:robots.txt 只是請求爬蟲遵守的規則,不是決定存取權限的機制。即使是遵守規則的公司,適用範圍也各不相同。
- User-Agent 寫著 GPTBot,就一定是 OpenAI 嗎?
- 名稱(User-Agent)誰都能冒用。OpenAI 以 JSON 檔公開了 GPTBot、OAI-SearchBot、ChatGPT-User 各自的 IP 範圍。把連線來源位址和這份清單對照,就能找出只是借用名稱的請求。
- 怎麼確認是 Google 的代理程式?
- Google 會在自家代理程式的部分請求上附加 Web Bot Auth 方式的簽章,並公布公開金鑰清單的網址。在伺服器或 CDN 上驗證這個簽章,就能分辨是不是真正的 Google 代理程式。Google 也註明,並不是每個請求都帶有簽章。
- robots.txt 擋不住的造訪怎麼辦?
- 代理程式依人的指示來訪時,單靠 robots.txt 無法過濾。IP 範圍比對和請求簽章,也只對已經表明身分的公司有效。所以要在搜尋、篩選組合、大型檔案下載這類一次請求就讓伺服器做大量工作的地方設定請求次數上限。如果不記錄 User-Agent、連線來源位址和請求路徑,出了問題也無從追查是誰做了什麼。