编写 robots.txt 规则,再精确核对它们屏蔽了什么
这款 robots.txt 生成器根据用户代理(user agent)分组和 Allow/Disallow 规则生成文件,添加你的站点地图,并能一键套用现成配置,例如屏蔽 AI 训练爬虫或标准的 WordPress 文件。测试工具则回答真正关键的问题:这个网址是否允许该爬虫抓取,又是哪一行决定的?它遵循 RFC 9309 和 Google 文档中说明的行为——最具体的 user-agent 分组、最长匹配路径、长度相同时 Allow 优先,以及 * 和 $ 通配符——并在你输入时标出错误。一切都在你的浏览器中运行。
如何创建并测试 robots.txt
- 1从预设开始——全部允许、屏蔽 AI 爬虫、WordPress、屏蔽 SEO 工具或全部屏蔽——或直接编辑分组。
- 2在每个分组中列出它适用的用户代理(
*表示所有爬虫),并添加 Disallow 和 Allow 路径,例如/admin/或/*.pdf$。 - 3添加 XML 站点地图的绝对网址,查看输出下方的警告,然后复制或下载
robots.txt。 - 4切换到测试,输入爬虫名称并每行填写一个网址,即可看到每个网址的判定结果以及决定它的规则和分组。也可以把任何线上的 robots.txt 粘贴进去进行检查。
- 5把文件上传到主机的根目录,使其可通过
https://yourdomain.com/robots.txt访问。
robots.txt 的工作原理
在抓取网站之前,守规矩的爬虫会从主机根目录获取 /robots.txt,并查找针对自己的规则。这个文件由若干分组组成:一行或多行 User-agent,后面跟着 Allow 和 Disallow 规则。Sitemap 行独立于分组之外,对所有爬虫都有效。
每个协议、主机和端口都有自己的 robots.txt:https://example.com/robots.txt 中的规则不覆盖 https://shop.example.com 或 http://example.com。文件不存在(404)意味着一切都可以抓取;服务器错误则会让 Google 暂停抓取该网站。
匹配规则详解
- 选择分组
- 爬虫只遵守 user-agent 对它指名最具体的那个分组,匹配不区分大小写——Googlebot-Image 若有 Googlebot-Image 分组就用它,否则用 Googlebot 分组,再否则用 *。指名同一代理的多个分组会被合并。* 分组中的规则不会叠加到具名分组上。
- 最长匹配优先
- 在分组内,路径与网址路径匹配字符最多的规则起决定作用。Disallow: /shop 加上 Allow: /shop/sale 会允许 /shop/sale/shoes。
- 长度相同时 Allow 优先
- 如果一条 Allow 规则和一条 Disallow 规则以相同长度匹配,则该网址被允许。
- * 与 $
- * 匹配任意字符序列,结尾的 $ 把模式锚定到网址末尾:Disallow: /*.pdf$ 会屏蔽 /files/report.pdf,但不会屏蔽 /report.pdf?download=1。
- 路径是前缀
- Disallow: /admin 会屏蔽 /admin、/admin/ 和 /administrator。末尾加斜杠则只屏蔽该文件夹。规则匹配路径和查询字符串,并区分大小写。
- 空的 Disallow
- 不带路径的 Disallow: 允许一切;这是编写一个什么都不屏蔽的分组的惯用写法。
屏蔽 AI 爬虫
AI 公司会公布其爬虫的 user-agent 标识,方便网站所有者选择退出。屏蔽 AI 爬虫预设会禁止 GPTBot、ChatGPT-User 和 OAI-SearchBot(OpenAI),ClaudeBot、Claude-User、Claude-SearchBot 和 anthropic-ai(Anthropic),Google-Extended(Gemini 训练),Applebot-Extended,CCBot(Common Crawl),PerplexityBot,Bytespider(ByteDance),meta-externalagent(Meta),Amazonbot 等,同时让普通搜索引擎照常抓取。
Google-Extended 和 Applebot-Extended 是控制标识,而不是独立的爬虫:屏蔽它们可以让你的内容不被用于 Gemini 和 Apple Intelligence 的训练,而不影响 Google 搜索或 Applebot 的搜索抓取。请注意,OAI-SearchBot 和 Claude-SearchBot 等搜索类机器人为 AI 搜索答案中的引用提供支持;如果你希望出现在那里,请把它们从列表中删除。遵守与否全凭自愿,对于无视 robots.txt 的爬虫,请使用服务器或防火墙规则。
robots.txt 做不到的事
robots.txt 控制的是抓取,而不是索引。被禁止抓取的网址如果有其他页面链接到它,仍可能出现在 Google 搜索结果中——只是没有描述。要让页面不出现在搜索结果中,应允许抓取并添加 noindex robots meta 标签或 X-Robots-Tag 响应头;自 2019 年起,Google 会忽略 robots.txt 中的 Noindex: 行。可以用 meta 标签生成器生成该标签。
不要用 robots.txt 隐藏私密区域:这个文件是公开的,恰恰列出了你最不想让人发现的路径。请用身份验证来保护它们。也不要屏蔽页面渲染所需的 CSS 和 JavaScript 文件,否则 Google 无法像访客那样看到页面。
Crawl-delay、Host 及其他指令
Crawl-delay 要求爬虫在两次请求之间等待若干秒。Bing 和 Yandex 遵守它;Google 会忽略它,并根据服务器的响应自动调整抓取频率。Host 曾是 Yandex 专用的首选镜像指令,现已废弃。Google 最多读取 robots.txt 文件的前 500 KiB。
用一行或多行使用绝对网址的 Sitemap: 把爬虫引向你的 XML 站点地图;这些行可以放在文件中的任何位置。站点地图本身可以用站点地图生成器创建。
常见问题
- robots.txt 应该放在哪里?
- 放在主机根目录,使其可通过 https://example.com/robots.txt 访问。放在子文件夹中的 robots.txt 会被忽略,每个子域名都需要自己的文件。
- 如何屏蔽所有爬虫?
- 使用 User-agent: *,后面加上 Disallow: /。遵守 robots.txt 的爬虫会停止抓取页面,但已知的网址可能还会在搜索结果中保留一段时间。
- 如何屏蔽 GPTBot 和其他 AI 爬虫?
- 添加一个列出它们的用户代理的分组——GPTBot、ClaudeBot、CCBot、Google-Extended、PerplexityBot 等——并设置 Disallow: /。“屏蔽 AI 爬虫”预设会为你写好这个分组,同时保持搜索引擎可以抓取。
- Disallow 会把页面从 Google 中删除吗?
- 不会。它只会停止抓取,但网址仍可能通过链接被索引。要让页面不出现在结果中,请在可抓取的页面上使用 noindex meta 标签,或通过 Search Console 删除。
- Allow 和 Disallow 同时匹配时,哪条规则生效?
- 路径更长的那条。如果两者长度相同,则 Allow 生效。测试工具会显示每个网址由哪一行决定。
- robots.txt 区分大小写吗?
- 指令名称和 user-agent 值不区分,但路径区分:Disallow: /Admin 不会屏蔽 /admin。文件名本身必须是小写的 robots.txt。
- Google 支持 Crawl-delay 吗?
- 不支持。Google 会忽略 Crawl-delay,并根据服务器的响应情况设置抓取频率。Bing 和 Yandex 则会遵守它。
- 我的 robots.txt 会被上传到任何地方吗?
- 不会。生成、解析和测试都在你的浏览器中完成。