我見過的最昂貴的四個角色是 Disallow: /. 一個團隊在發布期間將暫存機器人。txt 推入生產階段,沒有人注意到,在接下來的十天裡,Google悄悄地放棄了大部分網站'頁數。流量並沒有以引發警報的方式崩潰;它耗盡了。當有人想檢查時 /robots.txt,恢復是一個月的重新爬行。導致它的文件有四行長。
Robots。txt 看似簡單。它是純文本,可能有六個指令值得了解,並且語法適合索引卡。這種簡單性正是它出錯的原因:沒有建置步驟,CI 中沒有行距,沒有類型系統,也沒有錯誤訊息。如果您編寫了爬蟲無法解析的規則,爬蟲會默默地忽略該行並繼續執行。您的檔案看起來不錯,您的網站看起來不錯,而您認為被封鎖的內容正在被爬行,或者您需要爬行的內容則不然。
我建造 工具。dev 我不斷地為暫存環境、客戶端網站和我自己的專案編寫 robots。txt 文件,所以我建立了 robots.txt 發電機 使故障模式可見。它從結構化形式建立文件,因此語法在構造上是正確的。它會列印您所寫的內容並用行號呼叫腳槍。它使用與真實爬蟲使用的最長匹配優先級相同的規則來測試 URL,因此您可以在部署之前而不是搜尋控制台告訴您無法存取頁面,從而根據您的規則測試 URL。
TL;DR: Robots。txt 告訴爬蟲它們可能會取得什麼。它不會從搜尋結果中刪除頁面,也不會保護任何私人內容 - 該文件是公開的,合規性是自願的。規則僅適用於 a 內部
User-agent:組,路徑必須從開始/,*匹配任何內容,尾隨$錨定結局,當兩條規則匹配時,最長的模式獲勝,允許打破平局。這 robots.txt 發電機 在瀏覽器中建置、列印和測試所有這些。
機器人.txt 實際上控制什麼
Robots。txt 是一個爬行指令,而不是索引指令。這種單一的差異解釋了圍繞它的大部分混亂。
當爬蟲想要在主機上取得 URL 時,它會先取得 https://yourhost/robots.txt 並檢查URL是否允許。如果a Disallow 規則匹配,表現良好的爬蟲不會請求該頁面。這就是整個機制。它管理 HTTP 請求,僅此而已。
它不做的是從搜尋索引中刪除 URL。 Google 可以而且確實索引它從未獲取過的 URL,僅使用指向它們的連結的錨文本和上下文。如果你阻止 /pricing 在 robots。txt 中,有 50 個站點連結到 /pricing谷歌可能仍然會在結果中顯示該 URL - 通常沒有描述,因為它從不讀取頁面。封鎖您想要退出搜尋的 URL 對您來說非常不利: noindex 會刪除它的標籤存在於頁面內,不允許取得頁面的爬蟲永遠看不到它。正確的順序是允許爬行、發球 <meta name="robots" content="noindex"> 或者一個 X-Robots-Tag: noindex 標頭,等待頁面退出,然後如果您想節省爬行預算,請將其封鎖。
它也不保護任何東西。 Robots。txt 在眾所周知的路徑上公開提供服務;任何人,包括網路上的每個攻擊者,都可以在瀏覽器中讀取您的內容。 A Disallow: /internal-admin-v2/ 線是一個路標,指向你想要隱藏的東西。惡意抓取者完全忽略該文件 - 遵守它是一個自願約定,而不是執行機制。任何必須是私人的東西都需要身份驗證或 IP 允許清單。 Robots。txt 是禮貌地向選擇監聽的爬蟲提出的請求。
Robots。txt 產生器的主要功能
結構化群組編輯器
文件's 語法是群組:一個或多個 User-agent: 行後面是適用於它們的規則。手寫它會引發最常見的結構錯誤,即漂浮在第一個錯誤之上的規則 User-agent: 它適用於任何人的行。生成器將群組建置為一流對象,因此您新增的每個規則都必然屬於一個群組。
報告真實足槍的驗證器
行程每按一次鍵,都會運行並報告錯誤、警告和帶有行號的註釋。它標記任何群組之外的規則,路徑缺少前導斜線,裸露 Disallow: 沒有價值(這意味著 "允許一切"幾乎從來都不是作者的意思),網站地圖 URL 不是絕對的, $ 除模式末尾、未知指令、重複的使用者代理群組以及 - 大聲 - a 之外的任何地方都使用 Disallow: / 坐在下面 User-agent: *.
真正的 URL 測試儀
輸入路徑和使用者代理,工具報告允許或不允許,以及決定它的確切規則。優先邏輯是真實的 RFC 9309:無論文件中出現的順序規則如何,最長的匹配路徑模式都會獲勝,如果兩個模式長度相同,則允許擊敗不允許。這是人們最常從直覺中犯錯的部分,因為它的行為不像防火牆' 的首場比賽獲勝規則。
一鍵預設
允許一切,阻止一切,WordPress,Shopify,Next。js,Block AI 爬蟲各自用正確、明智的起點填滿整個表單。 WordPress 預設區塊 /wp-admin/ 雕刻時 /wp-admin/admin-ajax.php許多手寫檔案忘記了這一點,從而破壞了 Google 渲染頁面所需的前端功能。
人工智慧爬蟲控制
一鍵新增 GPTBot、ClaudeBot、PerplexityBot、CCBot、Google-Extended、Bytespider 和 anthropic-ai 的拒絕群組,同時讓 Googlebot 和 Bingbot 自由抓取。已知的爬蟲表解釋了每個機器人的實際操作,因此您正在做出明智的選擇,而不是貼上部落格文章中的清單。
解析您現有的檔案
將機器人貼上到您已經提供的位置,然後工具將其讀回可編輯的群組。大多數 robots。txt 工作都不是綠地 - 它正在審核和修復三年前由離開的人編寫的內容 - 從實際生活開始是做到這一點的唯一明智方法。
一切都保留在您的瀏覽器中
該檔案完全在客戶端 JavaScript 中產生、連結和測試。沒有上傳任何內容,因此您可以安全地為暫存主機或網站的未宣布部分起草規則,並且該工具在載入後離線工作。
如何使用 Robots。txt 產生器
步驟 1:從預設開始,或匯入您已有的內容
如果您重新開始,請選擇最接近堆疊的預設。如果您已經提供 robots。txt,請從中取得它 https://yoursite.com/robots.txt,將其貼到導入框中,然後按一下"解析為群組"。該工具重建群組結構,驗證器立即告訴您在生產中運行的文件出了什麼問題。
步驟 2:建立您的使用者代理群組
每組針對一個或多個爬蟲。從已知機器人清單中新增爬蟲或直接鍵入令牌 - 令牌不敏感地匹配,因此 googlebot 和 Googlebot 是等價的。一組與 * 是包羅萬象的:它適用於任何沒有自己更具體群體的爬蟲。
這裡內化的關鍵是爬蟲只服從一組。谷歌機器人讀到 Googlebot 如果存在且忽略了群 * 完全分組 - 它不會合併它們。如果您創建一個 Googlebot 群組新增一條規則,您必須重複其中的每條規則 * 聚集在其中,否則谷歌機器人將默默地停止服從他們所有人。這幾乎第一次讓每個人都感到驚訝。
步驟 3:新增規則、網站地圖並讀取驗證器
新增禁止路徑,用於您想要爬蟲跳過的內容,並允許路徑用於其中的分割區。僅當您針對的是尊重某人的引擎時,才新增爬行延遲。新增您的網站地圖 URL - 這些必須是絕對的,包括方案和主機,並且它們位於任何群組之外,適用於每個人。
然後閱讀驗證器。錯誤是行不通的事情。警告可能並不意味著你的想法。筆記是機會。在你走得更遠之前把所有東西都修好。
第 4 步:測試您真正關心的 URL
這是人們跳過且不應該跳過的步驟。採取爬行狀態真正重要的三到四個路徑 - 您的產品頁面、您的部落格、您認為已封鎖的管理路線、Google 渲染佈局所需的 CSS 檔案 - 並根據 Googlebot 測試每一條路徑。該工具告訴您允許或不允許,並指定負責的規則。如果結果令您驚訝,您的規則不會說出您認為他們所說的內容,現在學習它的成本要低得多。
步驟 5:複製或下載並部署到 root
複製文件或下載 robots.txt,然後準確地送達 https://yourhost/robots.txt 與a 200 狀態和a text/plain 內容類型。其他地方都不起作用。 /blog/robots.txt 任何人都不會閱讀。
機器人排除協議,詳細
它終於成為標準了
二十五年來,robots。txt 一直是 1994 年郵件列表帖子中描述的慣例,爬蟲們各自以自己的方式解釋歧義。 2022年,它被發佈為 RFC 9309,它編碼了 Google、Bing 和最嚴重的爬蟲匯聚的解析規則、匹配語義和優先順序。當本指南說"時;規則是X",這意味著 RFC 9309 說 X - 而不是部落格文章斷言它。
團體,以及為什麼爬行者只服從一個
記錄由一個或多個連續記錄組成 User-agent: 行後面跟著適用於它們的規則行。爬蟲用產品令牌來識別自己 - Googlebot, Bingbot, GPTBot- 並尋找令牌最具體匹配的群組。它服從一個組而不是其他組。這 * 組是後備,僅在沒有更具體匹配時才使用。
實際後果值得重複,因為它會造成很大的傷害:群組不會繼承。一個讀取的文件
User-agent: *
Disallow: /admin/
Disallow: /cart
User-agent: Googlebot
Disallow: /internal/
意味著 Googlebot 可能會爬行 /admin/ 和 /cart 自由地。它找到了自己的團體,所以 * 群組是看不見的。如果您希望從所有三個規則中封鎖 Googlebot,則所有三個規則都必須出現在內部 Googlebot 組。
最長匹配優先權
當適用組中的兩個或多個規則與 URL 相符時,獲勝者是具有 的規則 最長的路徑模式,以字元為單位測量。文件中的順序無關緊要。如果最長的匹配允許和最長的匹配禁止長度相同,則允許獲勝。
User-agent: *
Disallow: /admin
Allow: /admin/public
根據這些規則, /admin/public/logo.png 是 允許的- 允許模式是 13 個字符,而禁止和#39;s 6 - 而 /admin/secret 是 不允許,因為只有禁止模式與之匹配。這是每個 " 背後的機制;封鎖目錄,允許一個檔案進入其中"模式,包括 WordPress's admin-ajax.php 剝離。這也是為什麼像防火牆配置一樣自上而下編寫規則會產生錯誤的直覺:沒有首場比賽勝利,沒有失敗,也沒有順序。
通配符和最終錨
路徑模式支援兩個特殊字元。
* 匹配任何字元序列,但不包括任何字元序列。 Disallow: /*?sessionid= 阻止任何包含該查詢參數的 URL。
$ 錨定 URL 的末尾,僅表示它是模式的最終字元。 Disallow: /*.pdf$ 塊 /whitepaper.pdf 但不是 /whitepaper.pdf?download=1,因為該 URL 不會以 結尾 .pdf. 放下 $ 你可以阻止兩者 - 以及路徑僅包含的任何其他內容 .pdf.
沒有一個 $,匹配是a 前綴匹配,它不斷地絆倒人們。 Disallow: /admin 塊 /admin, /admin/, /admin/users,還有 /administrator 和 /admin-tools,因為它們都以字串開頭 /admin. 如果您僅指目錄,請寫入 /admin/.
爬行延遲並未受到普遍尊重
Crawl-delay: 10 要求爬蟲在請求之間等待十秒鐘。 Bing、Yandex 和各種較小的爬蟲都尊重這一點。 Googlebot 完全忽略了它- Google 根據伺服器回應時間和搜尋控制台中的設定而不是檔案中的指令來調整爬行率。在大型網站上設定較大的爬行延遲是一個慢動作的腳步聲:每個請求需要10 秒,一個100,000 頁的網站需要近12 天才能爬行一次,但實際上其中大部分內容根本不會被爬行。如果爬行確實傷害了您的伺服器,請修復伺服器或快取頁面;限制爬蟲主要只會讓您隱形。
阻止人工智慧爬蟲
人工智慧爬蟲分為兩類,人們經常將其混為一談。訓練爬蟲 - GPTBot、ClaudeBot、CCBot、Bytespider、Google-Extended - 收集用於訓練模型的內容。答案引擎爬蟲(其中 PerplexityBot 是最明顯的例子)獲取頁面,以便可以在生成的答案中引用它們,從而向您發送推薦流量。封鎖第一類可以保護您的內容不被模型吸收;阻止第二個會將您從可能被引用的表面移除。
Google-Extended 值得特別注意的是,因為它的命名有誤導性。它不是爬蟲。它是一個令牌,控制 Googlebot 已獲取的內容是否可用於 Gemini 和 Vertex AI 培訓。不允許它有 沒有任何效果 在 Google 搜尋爬行、索引或排名上。您可以拒絕 Google's AI 訓練的使用並保持您的搜尋狀態完好無損。
適用於所有這些的警告:合規性是自願的。阻止 GPTBot 停止 OpenAI'因為 OpenAI 選擇尊重該文件,因此宣布爬蟲。它對對其用戶代理撒謊的刮刀沒有任何作用,並且沒有 robots。txt 指令可以。
指令參考
| 指令 | 範圍 | 目的 | 榮幸地 |
|---|---|---|---|
User-agent: |
開設一個小組 | 命名爬蟲,適用以下規則。 * 是包羅萬象的。 |
大家 |
Disallow: |
一個團體內部 | 要求爬蟲不要取得與路徑相符的 URL。裸露的 Disallow: 沒有價值意味著&引用;允許一切&引用;。 |
大家 |
Allow: |
一個團體內部 | 從更廣泛的領域中劃分出一個例外 Disallow. 以最長比賽獲勝。 |
Google、必應、大多數現代爬蟲 |
Crawl-delay: |
一個團體內部 | 請求之間的最小秒數。 | Bing、Yandex、其他 - 不是谷歌機器人 |
Sitemap: |
全球 | 網站地圖或網站地圖索引的絕對 URL。適用於所有爬蟲,無論位置為何。 | Google、Bing、大多數爬蟲 |
Host: |
全球 | 首選鏡像/域。 Yandex 擴充。 | 僅 Yandex |
Noindex: |
- | 不起作用。 Google 在 2019 年放棄了支援。使用 a noindex 元標籤或 X-Robots-Tag 標題。 |
沒有人 |
# |
任何地方 | 評論。線路上所有之後的內容都被忽略。 | 大家 |
常用案例
將垃圾排除在索引之外,而不會阻塞任何重要的內容
麵包和黃油的工作:阻止分面搜尋 URL、會話 ID 查詢字串、內部搜尋結果以及購物車或結帳頁面,因此爬蟲將預算花在實際上可以排名的頁面上。陷阱過度阻塞。規則就像 Disallow: /*? 用查詢字串封鎖每個 URL,在許多網站上包含您非常希望抓取的分頁類別頁面。在發貨之前測試模式。
將集結地點調暗
User-agent: * 加 Disallow: / 是對暫存或預覽環境的正確調用,並且 Block 預設的所有內容都會產生它。但將此視為衛生,而不是安全:暫存環境也應該位於 HTTP 授權或 IP 允許清單後面,因為 robots。txt 既不隱藏主機,也不阻止任何人瀏覽它。該文件絕不能晉升為生產 - 將其放入部署管道和#39;差異審查,因為這個錯誤是網站從 Google 消失的最常見方式。
修復已退出搜尋的網站
當有機交通從懸崖上掉下來時, /robots.txt 在演算法更新和反向連結審核之前首先要檢查的是。將即時檔案貼到產生器中並讀取驗證器輸出。一個流浪 Disallow: /,阻止 CSS 和 JavaScript 的規則需要渲染頁面,或 Googlebot 不小心覆蓋精心編寫的群組 * 小組會立即出現。
決定人工智慧爬蟲可以對您的內容做什麼
出版商、文件網站以及任何內容為產品的人現在都可以對訓練爬蟲做出真正的決定。 Block AI 爬蟲預設為您提供了一個可防禦的預設- 歡迎搜尋引擎,拒絕訓練爬蟲- 爬蟲表會解釋每個爬蟲表,以便您可以故意做出例外,例如保持PerplexityBot 允許推薦流量,同時拒絕純訓練機器人。
審核繼承的網站
你接管了一個網站,但沒有人知道為什麼 /resources/ 沒有索引。導入即時機器人。txt,根據相關路徑運行測試儀,工具命名執行此操作的確切規則。這需要一分鐘並取代一個下午的猜測。
為什麼要在瀏覽器中產生 robots。txt
的 robots.txt 發電機 完全以客戶端運作。您的路徑、主機名稱和規則永遠不會離開機器,這比看起來更重要 - 未發布產品的目錄結構、暫存主機的 URL 以及您試圖保持安靜的內部路由都是值得不貼上的東西其他人'伺服器日誌。頁面載入後,它就可以離線工作,輸出是您擁有的純文字檔案。
Robots。txt 與一些相鄰的工作並排。這 元標記產生器 產生 noindex 以及執行工作 robots。txt 無法執行的規範標籤。這 開啟圖形預覽 顯示一旦您允許抓取爬蟲,您的連結將如何呈現。和 蛞蝓發電機 建立您的規則最終將匹配的乾淨路徑。
問號
我可以把 robots.txt 檔案放在哪裡?
必須準確食用 /robots.txt 例如,它適用於主機 https://example.com/robots.txt. 爬蟲們不看別處。一個文件在 /blog/robots.txt 被完全忽略,並且文件打開 example.com 不治理 shop.example.com;每個主機都需要自己的。以 200 狀態和 a 為其提供服務 text/plain 內容類型。
不允許從 Google 中刪除頁面?
不,這是對該格式最嚴重的誤解。禁止阻止 Google 取得頁面;它不會從索引中刪除 URL。如果其他網站連結到被封鎖的 URL,Google 仍然可以列出它,通常沒有描述,因為它從不閱讀該頁面。若要防止頁面進入搜尋結果,請允許爬行並提供 a noindex 機器人元標籤或 X-Robots-Tag 標頭。如果您封鎖 URL,爬蟲將永遠看不到您新增的 noindex。
robots.txt 是隱藏私人頁面的方法嗎?
不,這是一個任何人都可以閱讀的公共文件,遵守它是自願的--惡意抓取者完全忽略它。列表 /internal-admin/ 在禁止規則中,請告訴每個攻擊者確切的要查看的位置。任何必須保持私有狀態的內容都需要身份驗證、IP 允許列表,或根本不在公共互聯網上。
當允許和禁止都符合 URL 時如何互動?
最具體的規則獲勝,其中特殊性意味著路徑模式的長度。給定的 Disallow: /admin 和 Allow: /admin/public網址 /admin/public 允許是因為允許模式更長,而 /admin/secret 被阻止。如果兩個模式的長度完全相同,則允許獲勝。文件中出現的順序規則並不重要,這讓那些期待防火牆式首場比賽獲勝行為的人感到驚訝。
* 和 $ 通配符是做什麼的?
星號與任何字元的運行相匹配,因此 Disallow: /*?sessionid= 阻止任何包含該參數的 URL。美元符號錨定 URL 的末尾,因此 Disallow: /*.pdf$ 塊 /report.pdf 但不是 /report.pdf?download=1. 沒有a $,匹配是前綴匹配: Disallow: /admin 塊 /admin, /admin/users,還有 /administrator,因為它們都以該字串開頭。
如何封鎖像 gptbot 和 claudebot 這樣的 AI 爬蟲?
給每個人自己的小組 Disallow: /. Block AI 爬蟲預設只需單擊即可為 GPTBot、ClaudeBot、PerplexityBot、CCBot、Google-Extended、Bytespider 和 anthropic-ai 執行此操作,同時讓 Googlebot 和 Bingbot 自由爬行。請注意,Google-Extended 僅控制 Gemini 和 Vertex AI 的訓練使用,對 Google 搜尋沒有影響。合規性是自願的,因此這可以阻止合作爬蟲,而不是確定的刮刀。
爬行延遲真的有效嗎?
這取決於爬蟲。 Googlebot 完全忽略它 - 從搜尋控制台和您的伺服器調整爬行率'的回應時間。 Bing、Yandex 和幾個較小的爬蟲確實尊重它,將值視為請求之間的最小秒數。在大網站上設定大延遲可能意味著大多數頁面永遠不會被爬行,因此如果爬行確實是一個問題,請保持較小的值並修復伺服器容量。
如果我的 robots.txt 有語法錯誤會怎樣?
爬行者默默地丟棄無法解析的線條,然後繼續執行其餘部分,因此違反的規則會悄悄地失敗,而不是大聲地失敗。未知的指令、缺少前導斜線的路徑或放置在第一個指令上方的規則 User-agent: 線路根本不執行任何操作,直到流量移動時您才會發現。這正是驗證器的用途:它在部署之前用行號報告每個驗證器。



