我见过的最昂贵的四个角色是 Disallow: /。一个团队在发布期间将一个分期机器人。txt推向生产,没有人注意到,在接下来的十天里,谷歌悄悄地放弃了大部分网站's页面。流量没有以引发警报的方式崩溃;它耗尽了。当有人想检查时 /robots.txt者, 恢复是一个月的重新抓取, 导致它的文件长四行。
Robots。txt 简直是看似简单的,它是纯文本,它可能有六个指令值得了解,语法适合索引卡,那个简单正是它出错的原因:没有构建步骤,你的 CI 没有 linter,没有类型系统,也没有错误消息,如果你写了一个爬虫无法解析的规则,爬虫默默地忽略了那行,并继续执行你的文件看起来很好,你的站点看起来很好,你认为被阻止的东西正在被爬行 - 或者你需要爬行的东西不是。
我建造 Toolz.dev 我不断地为暂存环境、客户端站点和自己的项目编写robots。txt文件,所以我构建了 robots.txt 生成器 使失败模式可见。它从结构化形式构建文件,因此语法是正确的,它列出了您所写的内容,并用行号调出脚枪。它使用相同的最长匹配优先级来测试 URL 真实爬虫的使用,因此您可以在部署之前证明页面是可到达的,而不是在搜索控制台告诉您它不是之后。
TL;博士: Robots。txt告诉爬虫他们可能获取什么,它不会从搜索结果中删除页面,也不保护任何私密的东西- 文件是公开的,合规是自愿的,规则只适用于a内部
User-agent:组,路径必须从开始/、*匹配任何东西,一个尾随$锚定终点,当两条规则匹配时,最长模式获胜,允许打破平局。 robots.txt 生成器 在浏览器中构建、行列和测试所有这些。
机器人。txt 实际控制什么
Robots。txt是一个爬取指令,而不是索引指令,那个单一的区别解释了它周围的大部分混乱。
当爬虫想要在主机上获取 URL 时,它会首先获取 https://yourhost/robots.txt 并检查 URL 是否允许。如果 a Disallow rule匹配,一个乖巧的爬虫不请求页面,那就是整个机制,它管理http请求,其他什么都没有。
它不做的就是从搜索索引中删除一个 URL,谷歌可以而且做它从未获取过的索引 URL,只使用指向它们的链接的锚文本和上下文。如果你阻止 /pricing 在 robots。txt 和 50 个站点链接到 /pricing中,谷歌可能仍然会在结果中显示该URL- 通常没有描述,因为它从不读取页面。阻止您想要退出搜索的URL会主动对您不利: noindex tag 会移除它,它就住在页面里面,一个不允许取页面的爬虫永远看不到它,正确的顺序是允许爬行,serve <meta name="robots" content="noindex"> 或者一个 X-Robots-Tag: noindex header,等待页面退出,只有在想要节省抓取预算时才会阻止它。
它也不保护任何东西。Robots。txt 在众所周知的路径上公开提供服务;任何人,包括互联网上的每个攻击者,都可以在浏览器中读取您的。A Disallow: /internal-admin-v2/ line是一个指向你想要隐藏的东西的路标恶意刮刀完全忽略了文件- 兑现它是一种自愿的约定,而不是强制执行机制任何必须是私人的东西都需要身份验证或IP允许列表Robots。txt是一个请求,礼貌地提出,给选择倾听的爬虫。
Robots.txt Generator 的主要功能
结构化组编辑器
件's语法是组:一个或多个 User-agent: lines后面跟着适用于它们的规则。写出用手邀请单个最常见的结构bug,这是浮在第一个之上的规则 User-agent: line where it applicated to nobody。generator build groups as first-class objects, so every rule you add necessary belong to a group。
报告真实脚枪的验证器
Linter在每次击键上运行,并报告错误,警告,并用行号注释它标记任何组之外的规则,路径缺少他们的领先斜线,裸 Disallow: 值(这意味着"允许一切"并且几乎从来都不是作者的意思),站点地图URL不是绝对的, $ 除了模式的末尾、未知的指令、重复的用户代理组以及 - 大声 - a 之外,在任何地方使用 Disallow: / 坐在下面 User-agent: *。
真正的 URL 测试器
Enter a path 和一个用户代理和工具报告允许或禁止,加上决定它的确切规则,优先逻辑才是真正的那个来自 RFC 9309:最长匹配路径模式无论文件中出现顺序规则如何都获胜,如果两个模式长度相同,允许跳动禁止这是人们最常从直觉中弄错的部分,因为它不像防火墙's首战制胜规则。
一键预设
允许所有内容,阻止所有内容,WordPress,Shopify,Next。js 和 Block AI 爬虫都用一个正确、合理的起点填充整个表单。 WordPress 预设块 /wp-admin/ 一边雕刻一边 /wp-admin/admin-ajax.php的,许多手写文件忘记了这一点,从而破坏了谷歌渲染页面所需的前端功能。
AI 爬虫控制
一键添加 GPTBot、ClaudeBot、PerplexityBot、CCBot、Google-Extended、Bytespider 和 anthropic-ai 的拒绝组,同时让 Googlebot 和 Bingbot 可以自由地爬行。已知的爬行表解释了每个机器人的实际操作,因此您是在做出明智的选择,而不是从博客文章中粘贴列表。
解析您现有的文件
Paste你已经服务的robots。txt并且工具读回可编辑的组,大多数robots。txt工作不是绿地- 它正在审计和修复三年前由一个离开的人写的东西- 从实际生活开始是唯一理智的做法。
一切都保留在您的浏览器中
该文件完全在客户端 JavaScript 中生成、内衬和测试。没有上传任何内容,因此您可以安全地为分期主机或站点的不明部分起草规则,并且该工具一旦加载就离线工作。
如何使用 Robots.txt 生成器
1步:从预设开始,或者导入你已经拥有的东西
如果您开始新鲜,请选择最靠近堆栈的预设。如果您已经为机器人服务。txt,请从中获取 https://yoursite.com/robots.txt(import)框中粘贴,然后点击分组解析,工具重构分组结构,验证者立即告诉你在生产中一直运行的文件出了什么问题。
第 2 步:构建您的用户代理组
每个组都针对一个或多个爬虫。从已知机器人列表中添加爬虫或直接键入令牌 - 令牌不敏感地匹配大小写,因此 googlebot 並 Googlebot 是等价的。与的一组 * 是包罗万象:它适用于任何没有自己的更具体组的爬虫。
这里内化的关键是爬虫完全服从一个群体。 Googlebot 读到 Googlebot 如果存在组并忽略组 * 完全组 - 它不会合并它们。如果你创建一个 Googlebot 要添加一条规则,您必须重复该规则中的每一条规则 * group里面,或者googlebot会默默地停止对他们所有人的服从,这几乎是第一次让所有人感到惊讶。
3步:添加规则,站点地图,并读取验证器
添加禁止路径,用于您希望爬虫跳过的内容,并允许内部的删除路径。仅当您针对的是一个尊重一个的引擎时才添加爬行延迟。添加您的站点地图 URL - 这些必须是绝对的,包括方案和主机,并且它们位于任何组之外,适用于每个人。
Na么读取验证器,错误是行不通的事,警告是Yi定不代表你所想的事,注意事项是机会,把一切都Fang红了再走远。
4步:测试你真正关心的URL
这是人们跳过并且不应该的步骤。采取三到四条路径,其抓取状态真正重要 - 您的产品页面、您的博客、您认为您被阻止的管理员路线、Google 需要渲染您的布局 - 并针对 Googlebot 测试每个工具。该工具告诉您允许或禁止并指定负责的规则。如果结果令您感到惊讶,您的规则不会说出您认为他们所说的内容,现在了解该规则要便宜得多。
5步:复制或下载并部署到根
复制文件或下载 robots.txt然后准确地服务 https://yourhost/robots.txt 着一个 200 状态和a text/plain 内容类型。其他地方不起作用。 /blog/robots.txt 没有人读过。
机器人排除协议,详细说明
这终于是一个标准了
25年来,robots。txt是1994年邮件列表帖子中描述的一种惯例,爬虫各自以自己的方式解释了模糊性,2022年它被发布为 RFC 9309的,它编纂了解析规则、匹配语义以及谷歌、必应和最严重的爬虫已经收敛的优先顺序,当本指南说"规则是x"时,它意味着rfc 9309说X-并不是说一篇博文断言它。
Groups,以及为什么爬虫只服从一个
记录由一个或多个连续记录组成 User-agent: line 后面跟着适用于它们的规则行,一个爬虫用一个产品令牌来标识自己- Googlebot、 Bingbot、 GPTBot- 并寻找代币最具体匹配的组,它服从那个组,不服从其他组。的 * 组是后备项,仅在没有更具体的匹配时使用。
实际后果需要重复,因为它会造成如此大的损害:组不会继承。读取的文件
User-agent: *
Disallow: /admin/
Disallow: /cart
User-agent: Googlebot
Disallow: /internal/
意味着 Googlebot 可能会抓取 /admin/ 並 /cart 自由。它找到了自己的团体,所以 * group 对它来说是不可见的,如果你想让 Googlebot 被阻止所有三个,那么所有三个规则都必须出现在内部 Googlebot 团体。
最长的比赛优先级
当适用组中的两个或多个规则与 URL 匹配时,获胜者就是具有 URL 的规则 最长的路径模式(以字符为单位),文件中的顺序无关紧要,如果最长的匹配允许和最长的匹配禁止长度相同,允许获胜。
User-agent: *
Disallow: /admin
Allow: /admin/public
根据这些规则, /admin/public/logo.png 於 允许- 允许模式是 13 个字符,反对 Disallow's 6 - while /admin/secret 於 不允许的,因为只有disallow模式匹配它,这就是每个"阻止目录背后的机制,允许里面有一个文件"模式,包括wordpress's admin-ajax.php carve-out。也是为什么像防火墙配置一样自上而下地编写规则会产生错误的直觉:没有首胜,没有掉线,没有排序。
通配符和末端锚
路径模式支持两个特殊字符。
* 匹配任何字符序列,不包括任何字符序列。 Disallow: /*?sessionid= 在任何地方阻止包含该查询参数的任何 URL。
$ URL 的末尾锚定,并且仅表示当它是模式的最后字符时。 Disallow: /*.pdf$ 块 /whitepaper.pdf 但不是 /whitepaper.pdf?download=1的,因为那个网址不以结束 .pdf.放下 $ 你阻止两者--以及路径仅包含的任何其他东西 .pdf。
没有a $,匹配是a 前缀匹配经常绊倒人们。 Disallow: /admin 块 /admin、 /admin/、 /admin/users、还有 /administrator 並 /admin-tools的,因为它们都以字符串开头 /admin。如果您仅指目录,请写入 /admin/。
爬行延迟并没有得到普遍尊重
Crawl-delay: 10 要求爬虫在请求之间等待十秒钟。 Bing、Yandex 和各种较小的爬虫都向它致敬。 Googlebot 完全忽略了它- Google 根据服务器响应时间和搜索控制台中的设置调整抓取速率,而不是根据文件中的指令。在大型站点上设置大的抓取延迟是一种慢动作的徒步枪:在每个请求 10 秒时,一个 100,000 页的站点需要近十二天才能抓取一次,实际上其中大部分根本不会被抓取。如果抓取确实伤害了您的服务器,请修复服务器或缓存页面;限制爬虫大多只是让你隐形。
阻断人工智能爬虫
AI爬虫分为人们通常会混为一谈的两类,训练爬虫- GPTBot、ClaudeBot、CCBot、Bytespider、Google-Extended- 收集用于训练模型的内容,答案引擎爬虫,其中PerplexityBot是最清晰的例子,获取页面以便在生成的答案中引用它们,这可以向您发送推荐流量,阻止第一类可以保护您的内容不被模型吸收;阻止第二类可以使您从否则可能会被引用的表面中移除。
Google-Extended googlebot已经获取的内容是否可能用于双子座和顶点ai训练,值得特别注释,因为它的命名会误导,它不是一个爬虫,它是一个令牌,控制它是否允许它有 没有任何影响 google搜索爬取、索引或排名上,您可以拒绝google's AI训练的使用,并保持您的搜索存在完全完整。
适用于所有这些人的警告:合规性是自愿的。阻止 GPTBot 会停止 OpenAI's 声明的爬虫,因为 OpenAI 选择尊重该文件。它对谎称其用户代理的刮刀没有任何作用,并且没有机器人。txt 指令可以。
指令参考
| 指令 | 范围 | 目的 | 荣誉由 |
|---|---|---|---|
User-agent: |
开群 | 以下规则适用于以下爬虫的名称。 * 是包罗万象的。 |
每个人 |
Disallow: |
在一个团体内部 | 要求爬虫不要获取与路径匹配的 URL。光秃秃的 Disallow: 没有价值就意味着"允许一切"。 |
每个人 |
Allow: |
在一个团体内部 | 从更广泛的领域中雕刻出一个例外 Disallow。以最长的比赛赢得平局。 |
Google、Bing、大多数现代爬虫 |
Crawl-delay: |
在一个团体内部 | 请求之间的最小秒数。 | Bing、Yandex、其他人 - 不是谷歌机器人 |
Sitemap: |
全球 | Sitemap 或 sitemap 索引的绝对 URL。适用于所有爬虫,无论放置位置如何。 | 谷歌、必应、大多数爬虫 |
Host: |
全球 | 首选镜像/域。 Yandex 扩展。 | 仅限 Yandex |
Noindex: |
- | 不起作用。 谷歌在 2019 年放弃了支持。使用 a noindex 元标签或 X-Robots-Tag 头。 |
没有人 |
# |
任何地方 | Comment。inline 上它之后的所有内容都被忽略了。 | 每个人 |
常见用例
将垃圾排除在索引之外,而不会阻止任何重要的事情
的面包和黄油工作:阻止分面搜索URL,会话ID查询字符串,内部搜索结果以及购物车或结账页面,因此爬虫将预算花在实际上可以排名的页面上陷阱是过度阻塞这样的规则 Disallow: /*? 1个查询字符串来阻止每一个URL,在很多站点上,这个查询字符串都包含了你非常想要抓取的分页分类页面,在发货前测试一下模式。
将舞台地点弄黑
User-agent: * 加加 Disallow: / 是对分期或预览环境的正确调用,而block所有预设都会产生它。但将其视为卫生,而不是安全:分期环境也应该位于http auth或IP允许列表的后面,因为robots。txt既不隐藏主机也不阻止任何人浏览它。并且文件绝不能,永远不会被推广到生产-将其放入部署管道's diff审查中,因为这个确切的错误是网站从谷歌中消失的最常见方式。
修复已退出搜索的网站
当有机交通从悬崖上掉下来时, /robots.txt 是首先要检查的,在算法更新和反向链接审核之前,将实时文件粘贴到生成器中,读取验证器输出。一个杂散 Disallow: /阻塞 CSS 和 JavaScript Googlebot 渲染页面所需的规则,或者 a Googlebot 不小心覆盖了精心编写的组 * 组会立即出现。
AI爬虫可能对你的内容做什么
Publishers,文档网站,以及任何内容为产品的人现在都有一个关于训练爬虫的真正决定。Block AI爬虫预设为您提供了一个可防御的默认值 - 欢迎搜索引擎,拒绝训练爬虫 - 并且爬虫表解释了每个,因此您可以故意做出例外,例如保持PerplexityBot允许推荐流量,同时拒绝纯训练机器人。
审核继承的站点
你接管了一个网站,但没有人知道为什么 /resources/ is not indexed。txt 导入活机器人,针对所讨论的路径运行测试仪,工具命名精确的规则来做这需要一分钟,并取代一个下午的猜测。
为什么要在浏览器中生成robots.txt
的 robots.txt 生成器 unness three 完全客户端。你的路径,主机名,规则永远不会离开机器,这比它看起来更重要- 未发布产品的目录结构,分期主机的URL,以及你试图保持安静的内部路线,都是值得不粘贴到别人的东西's服务器日志。一旦页面加载它离线工作,输出是你拥有的纯文本文件。
Robots。txt 与一些邻近的工作岗位并肩作战。 元标记生成器 产生 noindex 执行工作机器人的规范标签。txt 不能。 打开图预览 显示一旦您允许的那些爬虫来获取它们,您的链接将如何呈现。和 蛞蝓发生器 构建您的规则最终将匹配的干净路径。
常问问题
把 robots.txt 文件放在哪里?
必须准确地提供 /robots.txt 例如,在主机上它适用于 - https://example.com/robots.txt。爬虫看别的地方。文件在 /blog/robots.txt 完全被忽略,并且文件打开 example.com 不管怎样 shop.example.com;每个主机都需要自己的。以200状态和a来服务它 text/plain 内容类型。
不允许从谷歌中删除页面?
No,而这是对格式最为严重的误解,不允许阻止谷歌获取页面;它不会从索引中删除URL,如果其他站点链接到被阻止的URL,谷歌仍然可以列出它,通常没有描述,因为它从不读取页面以阻止搜索结果,允许抓取并服务a noindex 机器人元标签或 X-Robots-Tag header。url 屏蔽掉,那么爬虫永远看不到你添加的 noindex。
robots.txt 是隐藏私有页面的一种方式吗?
No。是任何人都可以阅读的公共文件,而兑现它是自愿的- 恶意刮刀完全忽略了它。上市 /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完全忽略它 - 爬虫速率是从搜索控制台和从您的服务器's响应时间调整的 Bing,Yandex和几个较小的爬虫确实尊重它,将值视为请求之间的最小秒数。在大型站点上设置大延迟可能意味着大多数页面根本不会被爬虫,因此保持值较小,如果爬虫确实是一个问题,则可以修复服务器容量。
如果我的 robots.txt 有语法错误会发生什么?
Crawlers默默地丢弃他们无法解析的行,并继续其余的行,因此一个破损的规则会悄悄地失败,而不是大声地失败。一个未知的指令,一条路径缺少其前导斜杠,或者一个规则放在第一个上面 User-agent: line 根本不做任何事情,直到你的流量移动你才会发现,这正是验证器的用途:它在你部署之前用行号报告每一个。



