Agents.txt不是存取控制
DreamHost現在的文件說明:如果網站沒有提供自訂版本,Web Hosting方案會自動包含預設的robots.txt與agents.txt檔案。1
這個小小的主機代管細節,指向一個更大的轉變。網站現在至少同時面向3種對象:搜尋爬蟲、AI爬蟲,以及在推論時尋找清楚脈絡的助理。檔名讓這個轉變看起來井然有序。robots.txt說明自動化用戶端可以爬取什麼。llms.txt為LLM提供策展過的地圖。agents.txt則暗示面向代理程式的政策。但這些檔案都不該讓營運者誤以為自己已受到保護。
Agents.txt不是存取控制。請把爬蟲檔案視為公開的政策提示與探索輔助。真正的控制仍來自伺服器端授權、機器人身分驗證、速率限制、日誌、快取行為,以及您關心的爬蟲確實看過目前檔案的證據。
重點摘要
Robots Exclusion Protocol標準明確指出,爬蟲規則「不是一種存取授權」。2 Google也警告,即使某個URL在robots.txt中被禁止,如果其他頁面連到它,該URL仍可能出現在搜尋結果中。3 DreamHost自己的機器人控制文章也說,robots檔案對遵循規範的搜尋引擎而言只是建議,惡意機器人可能忽略該檔案,或使用誤導性的user-agent。1
AI爬蟲又加入更多政策維度。OpenAI將用於ChatGPT搜尋的OAI-SearchBot,與涉及訓練用途爬取的GPTBot分開;並表示ChatGPT-User代表使用者觸發的動作,這類情境下robots.txt可能不適用。4 Google則說,Google-Extended沒有獨立的HTTP user-agent字串,而是作為robots.txt中的產品權杖,用於訓練與模型依據化偏好,不影響Google Search收錄。5 如今的爬蟲控制檔需要依目的制定政策,而不是單一的允許或封鎖開關。
如果您的主機、平台或代理程式生態系預期有agents.txt,就使用它。若希望推論時工具理解您最重要的頁面,請使用llms.txt。robots.txt仍要保持正確,因為主要爬蟲仍會使用它。然後在伺服器邊界驗證請求,並閱讀日誌。文字檔可以表達意圖,卻無法阻止不受信任的用戶端。
重要結論
給網站擁有者:
- 發布robots.txt作為爬取政策、llms.txt作為AI可讀脈絡;agents.txt只應作為面向代理程式的提示。
- 不要把私有路由、祕密檔名、內部提示詞或敏感路徑放進任何公開爬蟲檔案。
- 變更後檢查日誌。政策檔只有在正確的爬蟲抓取並改變行為時才有意義。
給SEO與AIO團隊:
- 將搜尋能見度、訓練許可與使用者觸發的擷取分開處理。
- 明確列出您想允許的機器人,例如搜尋爬蟲與AI答案介面。
- 將爬蟲檔案與sitemap、canonical、schema及llms.txt驗證搭配使用。
給安全團隊: - 把user-agent字串視為聲稱,而不是身分。 - 在營運者支援的情況下,使用反向DNS或公布的IP範圍驗證爬蟲。 - 敏感資源的存取應以身分驗證、WAF規則、應用程式政策與速率限制執行,而不是依賴爬蟲禮節。
Agents.txt帶來了什麼變化?
robots.txt已存在數十年。RFC定義的robots.txt檔案,是服務擁有者提供給爬蟲的檔案,讓爬蟲判斷哪些URI可以存取。2 基本檔案格式看起來很熟悉:
User-agent: *
Disallow: /private-draft/
Sitemap: https://example.com/sitemap.xml
agents.txt出現在另一個時刻。今天的網站接收到的不再只有搜尋引擎爬蟲。還有訓練爬蟲、答案引擎爬蟲、廣告安全爬蟲、瀏覽器助理擷取、使用者觸發的LLM擷取、封存爬蟲、SEO工具,以及借用合法爬蟲名稱的垃圾機器人。
DreamHost的文件之所以重要,是因為它讓agents.txt從小眾想法,進入至少一家主流主機商的預設行為。該文章表示,DreamHost會為Web Hosting方案自動包含預設的robots.txt與agents.txt檔案,網站擁有者也可以在網站根目錄放置自訂檔案來覆寫任一檔案。1 這並不代表agents.txt成為具備強制語義的標準。它只代表這個檔名更可能出現在真實網站中。
安全的解讀應該很窄:
| 檔案 | 最適合的角色 | 錯誤假設 |
|---|---|---|
robots.txt |
給遵循規範爬蟲的爬取偏好。 | 「封鎖就代表私密。」 |
llms.txt |
為推論時使用提供策展過、LLM可讀的地圖。 | 「列入就代表會排名或被引用。」 |
agents.txt |
在平台會讀取時,提供面向代理程式的政策提示。 | 「機器人必須遵守。」 |
| Sitemap | 為可收錄的公開頁面提供完整URL探索。 | 「提交就代表已收錄。」 |
| 伺服器日誌 | 證明實際發生了什麼。 | 「沒有可見referrer就代表沒有爬蟲使用該頁面。」 |
這些檔名不應彼此競爭。它們應該組成一組政策封包:爬蟲可以請求什麼、AI系統應該閱讀什麼、代理程式應該知道什麼,以及伺服器實際觀察到什麼。
Robots.txt仍然重要,但它不能保護您
當團隊把爬蟲檔案當作安全邊界時,這些檔案就會失效。
RFC清楚劃出邊界。該協定要求自動化用戶端在存取URI時遵守規則;它並不授權存取。2 Google在實務上也說了同樣的事:如果其他頁面連到被禁止的URL,Google即使不爬取被封鎖頁面的內容,仍可能找到並索引該URL位址與其他公開連結資訊。3 DreamHost也警告,robots規則對遵循規範的搜尋引擎只是建議,惡意機器人可能忽略檔案,或使用假的user-agent。1
這些事實導出一條簡單規則:凡是被複製到搜尋結果、被抓進資料集,或由LLM顯示後會造成傷害的內容,都不要放進robots.txt、agents.txt或llms.txt。
糟糕的爬蟲檔案暴露的內容,往往多於它保護的內容:
User-agent: *
Disallow: /internal-product-roadmap/
Disallow: /legal-private/
Disallow: /prompt-drafts/
Disallow: /customers/acme-renewal-risk/
上面的檔案等於告訴每位訪客:敏感資料可能在哪裡。遵循規範的爬蟲也許會避開那些路徑。攻擊者則拿到了一張目錄地圖。
更安全的檔案會說明公開爬取政策,而不點名敏感資產:
User-agent: *
Allow: /
Disallow: /*.md$
Sitemap: https://example.com/sitemap.xml
這個版本表達了真實偏好,同時不揭露私有結構。如果/prompt-drafts/確實存在,伺服器應該用身分驗證保護它,並在適當情況下使用noindex標頭。爬蟲檔案不該承擔這個責任。
AI爬蟲需要依目的制定政策
搜尋爬蟲政策過去看起來很二元:允許Googlebot、封鎖吵雜的SEO工具,並用伺服器控制保護私有頁面。
AI爬蟲政策則多了目的。網站擁有者可能希望某頁出現在ChatGPT搜尋結果中,同時又不希望同一頁被用於模型訓練。OpenAI的爬蟲文件明確區分這一點。文件指出,OAI-SearchBot支援ChatGPT搜尋功能,而GPTBot會爬取可能用於訓練OpenAI生成式AI基礎模型的內容。4 OpenAI也表示這些設定彼此獨立:網站管理員可以允許OAI-SearchBot,同時禁止GPTBot。4
Google以不同方式畫出類似邊界。Google爬蟲文件說,Google-Extended沒有獨立的HTTP請求user-agent字串;現有Google user agent會執行爬取,而Google-Extended是robots.txt中的產品權杖。5 Google表示,這個權杖控制已爬取網站內容是否可支援未來Gemini模型訓練與模型依據化,且不影響Google Search收錄或排名。5
這兩個例子說明,單一封鎖清單抓不到重點。真正的政策矩陣會問:
| 目的 | 範例訊號 | 營運者問題 |
|---|---|---|
| 搜尋探索 | Googlebot、Bingbot、OAI-SearchBot | 我是否希望該頁出現在搜尋或答案結果中? |
| 訓練偏好 | GPTBot、Google-Extended | 我是否希望該頁用於模型訓練或模型依據化工作流程? |
| 使用者觸發擷取 | ChatGPT-User、瀏覽器助理 | 是否有人要求助理擷取該頁? |
| 網站理解 | llms.txt、schema、RSS |
我是否已給AI系統清楚說明公開內容? |
| 濫用流量 | 偽造user-agent、抓取工具 | 該請求是否證明身分,並在政策內運作? |
政策檔應該符合目的。不要封鎖所有AI user-agent,然後疑惑為什麼AI搜尋介面忽略網站。也不要允許所有AI爬蟲,事後才抱怨訓練爬蟲取用了您原本只想提供給使用者搜尋的頁面。請分開目的、說清偏好,並驗證行為。
Llms.txt解決的是另一個問題
llms.txt不會取代robots.txt。Jeremy Howard的提案將/llms.txt描述為一種提供資訊的方式,協助LLM在推論時使用網站。6 同一份提案也說,llms.txt可以與現有Web標準並存:sitemap為搜尋引擎列出頁面,llms.txt則為LLM提供策展過的概覽,並可用允許內容的脈絡補充robots.txt。6
這個區別對AIO工作很重要。
robots.txt回答:「這個爬蟲可以請求這條路徑嗎?」
llms.txt回答:「如果助理閱讀我的網站,它應該先理解什麼?」
agents.txt可能回答:「代理式用戶端應該知道哪些期望行為?」
這些問題彼此相近,但不會收斂成同一個檔案。嚴肅經營的網站應該把AI探索視為發布介面:
- 發布具有清楚標題與描述的canonical頁面。
- 加入與可見頁面一致的結構化資料。
- 保持sitemap與RSS輸出最新。
- 發布
llms.txt與llms-full.txt,提供策展過的AI脈絡。 - 發布
robots.txt,明確說明爬蟲政策。 - 只有在平台或代理程式生態系有具體讀取者時,才加入
agents.txt。 - 檢查日誌,確認爬蟲請求了變更後的檔案。
跳過最後一步,AIO就只是希望儀式。爬蟲檔案存在。路由回傳200。卻沒有證據能證明目標用戶端看過它。
驗證應該放在邊界
User-agent字串不能證明身分。隨便一支指令碼都能送出User-Agent: Googlebot。抓取工具也能送出User-Agent: GPTBot。只信任標頭的政策,會把最寬鬆待遇給最容易偽造的訊號。
Google為聲稱來自Google的請求記錄了兩種驗證路徑:一次性檢查可使用反向DNS加正向DNS;大型系統則可比對公布的IP範圍。7 OpenAI在爬蟲文件中為OAI-SearchBot、GPTBot與ChatGPT-User公布IP位址JSON檔案。4 這些機制無法涵蓋所有爬蟲,但它們確立了正確形狀:身分需要字串以外的證據。
最低限度的邊界政策應記錄:
| 證據 | 為什麼重要 |
|---|---|
| User-agent | 顯示用戶端的聲稱。 |
| 來源IP與ASN | 協助區分雲端抓取工具與已驗證爬蟲範圍。 |
| 反向DNS或IP範圍結果 | 在營運者支援驗證時證明身分。 |
| 請求路徑 | 顯示用戶端實際碰觸了哪些內容。 |
robots.txt擷取時間 |
顯示用戶端是否在爬取前檢查政策。 |
| 狀態碼與快取結果 | 顯示爬蟲收到什麼。 |
| 速率與路徑模式 | 即使是具名機器人,也能揭露濫用行為。 |
這組日誌封包會把爬蟲政策從意見變成證據。如果GPTBot持續請求被禁止的路徑,您可以證明。若假的Googlebot從住宅代理大量敲打看似私有的URL,您可以封鎖它,而不傷害真正的Googlebot。如果OAI-SearchBot從未請求變更後的文章,就能知道頁面為什麼沒有出現在ChatGPT搜尋中。
實用的AI爬蟲政策封包
不要從檔案開始。請先從結果開始。
| 結果 | 必要控制 |
|---|---|
| 搜尋引擎應收錄公開頁面。 | Sitemap、canonical標籤、schema、快速200回應,以及允許搜尋爬蟲。 |
| AI答案引擎應理解網站。 | 清楚文章、schema、RSS、llms.txt,以及具備明確摘要的來源頁面。 |
| 訓練爬蟲應避開特定內容。 | 依目的分組的robots.txt,加上政策或法律要求時的伺服器執行。 |
| 私有內容必須維持私密。 | 身分驗證、授權、無公開連結、不在爬蟲檔案揭露,且不外洩快取。 |
| 惡意機器人不應耗盡資源。 | 速率限制、WAF規則、已驗證機器人例外,以及濫用日誌。 |
| 政策變更應可稽核。 | 路由檢查、爬蟲擷取日誌、部署時間戳,以及簡短審查封包。 |
這組封包讓每一層各司其職。robots.txt傳達偏好。llms.txt傳達脈絡。agents.txt在有讀取者時傳達面向代理程式的意圖。伺服器負責執行。日誌負責證明。
在我自己的網站上,爬蟲工作也遵循這個分工。公開政策檔歡迎合法爬蟲,並封鎖爬蟲從程式碼區塊範例推斷出的原始Markdown路徑。AI脈絡檔則讓助理能以策展過的路徑進入公開文章。夜間爬取普查會告訴我爬蟲是否看見錯誤、過期快取、缺失路由,或現在應該回傳410的舊URL。政策檔提供意圖。日誌決定意圖是否奏效。
Agents.txt應該放什麼
在生態系定型之前,請讓agents.txt保持平淡且公開。
適合放入的內容:
- 網站聯絡資訊與政策URL。
- 指向
robots.txt、sitemap、llms.txt與RSS的連結。 - 偏好的公開內容使用聲明。
- 提醒私有或需驗證路由必須取得授權。
- 處理爬取問題的支援信箱。
不適合放入的內容:
- 祕密路徑。
- 內部提示詞規則。
- 非公開API路由。
- 客戶名稱。
- 安全例外。
- 若被敵意用戶端複製會傷害網站的指令。
判斷agents.txt的正確標準不是「好代理程式會喜歡這個嗎?」而是「如果惡意代理程式、搜尋結果和隨機使用者都讀到這個檔案,我是否仍能接受?」
更好的心智模型
爬蟲檔案是公共道路上的標誌。
標誌可以寫「送貨入口」、「請勿進入」或「從這裡開始」。守規矩的駕駛會遵守標誌。魯莽駕駛會忽略它。標誌仍然有用,因為多數合法流量都需要清楚指引。但當您把標誌當成上鎖的門,它就會失效。
AI爬蟲讓這些標誌同時更重要,也更不充分。更重要,是因為AI系統需要清楚的公開脈絡、依目的區分的政策與路由地圖。更不充分,是因為user-agent數量增加、訓練與搜尋分道揚鑣,惡意用戶端也能冒充好用戶端。
答案不是放棄爬蟲檔案。答案是把它們的權威降到正確層級。發布清楚的公開政策。驗證誰請求了這些檔案。觀察它們抓取了什麼。在伺服器端執行私有邊界。凡是關於「AI能見度」的主張,在日誌與即時路由支持之前,都應視為尚未證實。
這就是AIO表演與真實爬蟲營運的差別。
FAQ
什麼是agents.txt?
agents.txt是一種新興的面向代理程式文字檔,有些主機或工具可能會在網站根目錄提供它。DreamHost記錄了Web Hosting方案的預設agents.txt檔案,但該文件不會讓這個檔案成為存取控制標準。在特定代理程式平台清楚記錄如何讀取與套用該檔案之前,請把它視為公開提示。1
robots.txt會封鎖AI爬蟲嗎?
遵循規範的爬蟲可能會遵守robots.txt,主要營運者也會為其爬蟲記錄特定權杖。OpenAI記錄了OAI-SearchBot與GPTBot控制方式,Google則將Google-Extended記錄為用於訓練與模型依據化偏好的產品權杖。45 但robots.txt仍不會驗證用戶端、不會隱藏內容,也無法阻止選擇忽略該檔案的機器人。23
我應該發布llms.txt嗎?
如果希望AI助理找到一份策展過的公開內容地圖,就發布llms.txt。該提案將llms.txt定位為推論時脈絡,而不是sitemap或robots.txt的替代品。6 有用的檔案會指向您真正希望代理程式理解的頁面。
被禁止的URL仍可能出現在搜尋中嗎?
會。Google表示,被robots.txt封鎖的URL若被其他頁面連結,仍可能出現;即使Google不會爬取或索引被封鎖頁面的內容。3 對於必須遠離公開結果的頁面,請使用身分驗證、在允許爬取時使用noindex,以及伺服器端政策。
如何分辨真正的爬蟲和假的爬蟲?
不要只看user-agent字串。Google記錄了反向DNS加正向DNS檢查,以及公布IP範圍比對。7 OpenAI為其記錄的機器人公布IP位址JSON檔案。4 若某爬蟲營運者沒有公布驗證資料,請把該請求歸類為一項聲稱,並依行為進行速率限制或挑戰。
公開網站最安全的爬蟲檔案設定是什麼?
使用robots.txt管理爬蟲政策,使用sitemap做URL探索,使用llms.txt提供策展過的AI脈絡,並只將agents.txt用於公開的代理程式指引。讓敏感路徑遠離所有公開檔案。接著驗證即時路由、快取狀態、爬蟲擷取與伺服器日誌,再說這套設定有效。
參考資料
-
DreamHost, “Control bots, spiders, and crawlers,” DreamHost Knowledge Base. Accessed May 18, 2026. ↩↩↩↩↩
-
Koster, M., Illyes, G., Zeller, H., and Sassman, L., “RFC 9309: Robots Exclusion Protocol,” IETF, September 2022. ↩↩↩↩
-
Google Search Central, “Introduction to robots.txt,” Google for Developers. ↩↩↩↩
-
OpenAI, “Overview of OpenAI Crawlers,” OpenAI API Documentation. ↩↩↩↩↩↩
-
Google Crawling Infrastructure, “Google’s common crawlers,” Google for Developers. ↩↩↩↩
-
Jeremy Howard, “The /llms.txt file,” llms-txt proposal, September 3, 2024. ↩↩↩
-
Google Crawling Infrastructure, “Verify requests from Google crawlers and fetchers,” Google for Developers, last updated March 20, 2026. ↩↩