开发者工具
robots.txt 验证器
粘贴 robots.txt 内容以检查语法。解析 User-agent、Disallow、Allow、Sitemap 指令,并可视化爬虫访问规则。
[[ fetchError ]]
[[ labels.or_paste ]]
[[ labels.sample_label ]]:
[[ labels.no_input ]]
[[ labels.result_label ]]
[[ labels.errors_label ]]
- [[ labels.line_label ]] [[ err.line ]]: [[ errorMessage(err) ]]
✓ [[ labels.no_errors ]]
[[ labels.blocks_label ]]
User-agent:
[[ ua === '*' ? labels.all_crawlers + ' (*)' : ua ]]
| Disallow | / [[ labels.disallow_empty ]] [[ path ]] |
| Allow | [[ path ]] |
| [[ labels.no_rules ]] | |
| Crawl-delay | [[ block.crawlDelay ]] |
[[ labels.sitemaps_label ]]
Tips
- User-agent: * 适用于所有爬虫。指定了机器人名称(如 Googlebot)的块优先级高于通配符块。
- Disallow:(空值)表示"允许所有路径"。
Disallow: /(仅斜杠)表示禁止所有内容,请注意区分。 - Allow: 指令优先于
Disallow:。例如,先写Disallow: /private/,再写Allow: /private/public.html,则该文件允许访问。 - Crawl-delay: 是非标准指令,指定请求间隔(秒)。Bing 和 Yandex 支持,Google 不支持——请使用 Google Search Console 的抓取频率设置。
- Sitemap: 指令可告知搜索引擎站点地图的 URL。Google 和 Bing 均识别此指令,建议与 Search Console 手动提交结合使用。
常见问题
会。用
Disallow 屏蔽某个页面后,爬虫无法读取其内容,该页面不会被索引。但若有外部链接指向该页面,搜索引擎可能仍会将其列为"已知但未爬取"。如需彻底排除,需结合 noindex 元标签。不适用。robots.txt 的作用范围是每个域名独立的。
example.com/robots.txt 不适用于 blog.example.com,子域名需要各自的 robots.txt。Googlebot 支持
*(任意字符串)和 $(URL 末尾)。例如,Disallow: /private/*.pdf$ 可屏蔽 /private/ 下的所有 PDF 文件。并非所有爬虫都支持通配符,请查阅各机器人的文档。闲话 ― robots.txt 的诞生 ― 互联网礼仪的起源
1994 年,荷兰工程师 Martijn Koster 提出了机器人排除协议(REP)。当时网络爬虫无序爬取网站,给服务器造成过大负担。Koster 的想法很简单:"在网站根目录放一个规则文件,爬虫就能读取。" 这个文件就是 robots.txt。
重要的是,robots.txt 是一种自愿遵守的君子协议,没有强制约束力。友好的爬虫(如 Googlebot、Bingbot)会遵守它,但恶意爬虫会无视它。因此 robots.txt 适合告知搜索引擎哪些页面不需要索引,但不能用于保护敏感内容——机密页面必须通过身份验证来保护。
机器人排除协议作为非正式惯例存在了近三十年,直到 2022 年 9 月才被 IETF 正式注册为 RFC 9309。RFC 明确了指令名称不区分大小写,并解决了长期存在的语法歧义。