OpenAI 爬蟲全解析:GPTBot、OAI-SearchBot 與 ChatGPT-User
OpenAI 以 GPTBot 收集可能用於訓練模型的內容,以 OAI-SearchBot 為 ChatGPT 搜尋索引頁面,並以 ChatGPT-User 處理使用者要求的造訪。封鎖 GPTBot 只會退出訓練;封鎖 OAI-SearchBot 則會讓你從 ChatGPT 搜尋答案中消失。robots.txt 可能不適用於 ChatGPT-User。
同一家公司有三種不同的 user agent,各有自己的 robots.txt 標記,造成不少混淆。許多網站在 GPTBot 剛出現時就加以封鎖,有些後來才發現,自己同時也擋掉了決定 ChatGPT 能否引用的爬蟲,原因往往是一條範圍過廣的防火牆規則。本文依據 OpenAI 自己的文件,逐一說明這三個代理程式。
本頁內容
GPTBot 的用途是什麼?
GPTBot 抓取可能用於訓練 OpenAI 生成式 AI 基礎模型的內容。OpenAI 的文件指出,禁止 GPTBot 代表該網站的內容不應被用於訓練這些模型。
它的 user agent 含有標記 GPTBot,例如 Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; GPTBot/1.4; +https://openai.com/gptbot。OpenAI 提醒版本號碼可能變動,因此請比對標記,而不是整串字串。OpenAI 在 openai.com/gptbot.json 公布其 IP 範圍。
是否允許它,屬於政策決定。有些發布者希望內容進入訓練資料,有些則不然。封鎖它不會影響 ChatGPT 搜尋,因為那是另一個爬蟲。日後如果改變主意,只要移除 Disallow 那一行即可,不需要登記或申請任何東西。
OAI-SearchBot 的用途是什麼?
OAI-SearchBot 是 OpenAI 的搜尋爬蟲,負責讓網站出現在 ChatGPT 的搜尋功能中。OpenAI 明確表示,已退出 OAI-SearchBot 的網站不會顯示在 ChatGPT 搜尋答案中。
如果你希望 ChatGPT 引用你的頁面,就應該在 robots.txt 與防火牆中都允許這個爬蟲。它的 IP 範圍公布在 openai.com/searchbot.json,防火牆可以藉此確認請求確實來自 OpenAI。
ChatGPT-User 的用途是什麼?
ChatGPT-User 並不是一般意義上的爬蟲。當 ChatGPT 使用者或自訂 GPT 提出要求時,它才會擷取頁面,例如有人把你的網址貼進對話並要求摘要。OpenAI 表示,它不會用於自動爬取網路。
OpenAI 文件中有兩個重點。第一,由於這些動作是由使用者發起的,robots.txt 規則可能不適用。第二,ChatGPT-User 不會用來判斷內容是否可以出現在搜尋中。對搜尋來說,起作用的設定是 OAI-SearchBot。
分別封鎖它們會發生什麼事?
- 封鎖
GPTBot:你的內容會被標示為不得用於訓練。只要允許OAI-SearchBot,ChatGPT 搜尋仍可顯示並引用你。 - 封鎖
OAI-SearchBot:你的頁面不會出現在 ChatGPT 搜尋答案中。訓練則另由GPTBot控制。 - 在 robots.txt 封鎖
ChatGPT-User:OpenAI 表示 robots.txt 可能不適用於這些造訪,因此效果不保證。在防火牆封鎖則會讓擷取失敗,貼上你連結的使用者只會看到錯誤,而不是你的內容。 - 在防火牆封鎖全部三個:ChatGPT 既無法索引也無法擷取你的頁面,自然沒有你的內容可以引用。
- 全部允許:你的頁面可被索引用於搜尋、在使用者要求時被擷取,並且透過
GPTBot可能用於訓練。
OpenAI 也提到,當 GPTBot 與 OAI-SearchBot 都被允許時,它可能把一次爬取的結果同時用於兩種目的,以避免重複爬取。
OpenAI 的爬蟲應該用什麼樣的 robots.txt?
對多數希望出現在 ChatGPT 答案中的網站來說,建議允許搜尋爬蟲,再另外決定訓練的政策。以下檔案允許搜尋、並退出訓練:
User-agent: OAI-SearchBot
Allow: /
User-agent: GPTBot
Disallow: /
User-agent: *
Allow: /
Disallow: /admin/
請留意 RFC 9309 的一個細節:爬蟲會遵循點名它的群組,並忽略 * 群組。在上面的範例中,OAI-SearchBot 可以進入 /admin/,因為它自己的群組裡沒有 Disallow: /admin/ 這一行。想保持私密的路徑,必須在每個點名的群組中重複寫一次。OpenAI 表示搜尋方面的變更大約需要 24 小時才會套用。
如何確認防火牆讓它們通過?
robots.txt 只是聲明你的政策,每個請求實際收到什麼,由防火牆或 CDN 決定。請分別用各爬蟲的 user agent 請求頁面,並將狀態碼與內容大小和瀏覽器請求相比。如果爬蟲收到 403、429 或驗證挑戰頁,瀏覽器卻看到正常頁面,就代表防火牆凌駕了你的 robots.txt。
AISeeWhy 會一次對三個 OpenAI 代理程式執行這項比對:OAI-SearchBot 與 ChatGPT-User 被封鎖會損失引用,因此標為 P1;GPTBot 被封鎖則視為 P3 的政策選擇,而非錯誤。
常見問題
GPTBot 就是 ChatGPT 嗎?
不是。GPTBot 是收集訓練資料的爬蟲。ChatGPT 搜尋使用 OAI-SearchBot,而使用者要求的即時造訪則來自 ChatGPT-User。
可以允許 ChatGPT 搜尋但封鎖訓練嗎?
可以。在 robots.txt 中允許 OAI-SearchBot、禁止 GPTBot 即可。OpenAI 的文件說明這兩項設定彼此獨立。
應該用 IP 位址封鎖 OpenAI 嗎?
用 IP 封鎖會讓爬蟲無法讀取你的 robots.txt,也使你的政策更難調整。通常比較好的做法是在 robots.txt 中說明政策,並用公布的 IP 範圍來驗證(而不是封鎖)OpenAI 的爬蟲。
為什麼要比對標記,而不是完整的 user agent?
OpenAI 表示其 user agent 中的版本號碼可能變動,而且各爬蟲公布的範例字串也不盡相同。比對 GPTBot 或 OAI-SearchBot 的規則在更新後仍然有效;比對完整字串的規則則可能悄悄失效。