robots.txt 生成器
robots.txt 生成器,是指按爬虫分组可视化填写 Allow、Disallow 规则与 Sitemap 地址,一键生成根目录 robots.txt 文件的前端工具。它免费、无需注册,内置屏蔽 AI 训练爬虫、WordPress 后台等预设,可粘贴现有 robots.txt 做语法体检,并输入网址测试 Googlebot、百度等爬虫能否抓取、命中哪一条规则。内容全在浏览器本地生成,不上传。
一键套用预设
编辑规则
*GPTBotClaudeBotCCBotGoogle-Extended高级:文件头注释、Host、Clean-param
规则只在本页内存里,刷新即恢复示例;不写入本地存储,也不上传。
生成结果
User-agent: *
Disallow: /admin/
# AI 训练爬虫
User-agent: GPTBot
User-agent: ClaudeBot
User-agent: CCBot
User-agent: Google-Extended
Disallow: /
Sitemap: https://example.com/sitemap.xml
2 个分组 · 2 条规则 · 1 条 Sitemap · 192 字节(Google 上限 500 KiB)
语法体检(2 条)
- 提示第 5 行单独列出的爬虫不会继承 * 组的规则,* 里禁止的路径对它们放开了
- 提示第 8 行这个 token 只在 robots.txt 里生效,访问日志里永远搜不到它;屏蔽它不影响搜索收录(Google-Extended)
抓取测试:这个网址能被抓吗
测试的就是上面代码区那份即将下载的文本,按 RFC 9309 与 Google 公开规则判定,个别搜索引擎可能不同。
✕ 禁止抓取
禁止抓取:* 组第 2 行 Disallow: /admin/ 命中(遵守 robots 协议的爬虫不会抓取这个网址)
实际参与匹配的路径:/admin/login
批量矩阵:网址 × 爬虫
最多 50 条网址 × 12 个爬虫,点格子看判定理由。
| 网址 | Googlebot | Baiduspider | bingbot | GPTBot | ClaudeBot | Google-Extended |
|---|---|---|---|---|---|---|
/ | ||||||
/admin/ | ||||||
/blog/hello |
如何使用robots.txt 生成器
robots.txt 在线生成:点一个预设,或在分组卡片里从爬虫名录添加 User-agent,再逐条添加 Allow / Disallow 路径,最后填上 Sitemap 完整网址;已有文件可以切到「源码」粘进去,点「解析为表单」接着改。
看语法体检清单,按必须改、注意、提示三级逐条处理;再在「抓取测试」里输入网址、选爬虫,确认它被哪一组哪一行规则判为允许或禁止,批量矩阵能一次看多个网址 × 多个爬虫。
复制或下载 robots.txt,上传到网站根目录,让 https://你的域名/robots.txt 能直接打开;Next.js 项目可以切到 robots.ts 页签,把生成的代码放进 app/robots.ts。
关于robots.txt 生成器的常见问题
- robots.txt 生成器会上传我的网站信息吗?
- 不会上传。你填的路径、域名、Sitemap 地址和粘贴进来的 robots.txt,全部在浏览器本地拼接、解析和判定,不发给任何服务器,本工具也不会替你去抓取线上的 robots.txt。规则只放在当前页面的内存里,刷新即恢复示例,不写进本地存储;只有输出格式、组间空行和测试器默认爬虫这几项展示偏好会记在本机。站点本身仅有匿名访问量统计,与你填的内容无关。
- robots.txt 怎么写才规范,最少要写哪几行?
- 最少两行:一行 User-agent: * 表示下面的规则对所有爬虫生效,一行 Disallow: 加路径表示禁止抓取的目录,Disallow 后面留空就是不禁止任何内容。规范的写法还有三点:路径必须以斜杠开头,写成 admin/ 不会匹配任何网址;每个分组至少要有一条规则;Sitemap 要写带 https 和域名的完整网址。文件名必须全小写叫 robots.txt,用 UTF-8 编码。本工具生成时会自动补齐空分组,体检清单会把不规范的写法逐行标出来。
- robots.txt 屏蔽 AI 爬虫怎么写,会影响收录吗?
- 给 AI 训练爬虫单独写一组:User-agent 依次写 GPTBot、ClaudeBot、CCBot、Google-Extended、Applebot-Extended、Bytespider 等,下面一行 Disallow: /。这样不影响搜索收录,因为 Googlebot、百度蜘蛛走的是 * 组或它们自己的组。要分清三类:训练抓取、用户在 AI 对话里点链接时的实时抓取(ChatGPT-User 等)、AI 搜索抓取(OAI-SearchBot 等),屏蔽后果各不相同。本页预设默认只屏蔽训练类。名录会过时,也有爬虫不遵守协议,不能宣称屏蔽了全部 AI 爬虫。
- robots.txt 里 Allow 和 Disallow 冲突时听谁的?
- 听路径更长、更具体的那一条,和谁写在前面无关。比如 Disallow: /wp-admin/ 和 Allow: /wp-admin/admin-ajax.php 同时命中 admin-ajax.php 时,Allow 那条更长,所以允许抓取。两条一样长、一个允许一个禁止时,按 RFC 9309 与 Google 的规则 Allow 胜出。有些老教程说先写的优先,这是错的。本工具的抓取测试会把命中的规则、落选的规则以及落选原因(更短或平局让给 Allow)逐条列出来。
- robots.txt 通配符 * 和 $ 怎么用,问号要转义吗?
- 星号匹配任意长度的任意字符,包括斜杠,所以 Disallow: /*.pdf 能挡住任意目录下的 PDF。美元符只有放在末尾才表示网址到此结束,Disallow: /*.pdf$ 挡得住 /a/b.pdf,挡不住带参数的 /a/b.pdf?x=1;放在中间的美元符只是普通字符。问号在 robots.txt 里就是问号本身,不是通配符,也不需要转义,Disallow: /*?sort= 挡的是网址里任意位置出现的 ?sort=。路径区分大小写,/Fish 和 /fish 不是同一条。
- robots.txt 能阻止网页被百度收录吗?
- 不能保证。robots.txt 禁止百度抓取的只是抓取:被别的网站链接到的地址,仍可能只带网址、不带摘要地出现在搜索结果里。要让页面不被收录,应该在页面里写 noindex(meta robots 或 X-Robots-Tag 响应头),而且这个页面不能同时被 robots.txt 禁止抓取,否则爬虫根本看不到那句 noindex,形成死循环。测试站、后台这类真正不想公开的内容,最可靠的是加密码或只允许内网访问。
- robots.txt 的 Crawl-delay 对百度和谷歌有用吗?
- 没用。Google 官方文档写明只支持 user-agent、allow、disallow、sitemap 四种指令,Crawl-delay 会被忽略;百度的抓取频次要到百度搜索资源平台里调整;Yandex 也已不再读取它。Bing 支持 Crawl-delay,部分 SEO 工具爬虫也认。所以如果你是为了减轻服务器压力,与其写 Crawl-delay,不如去各家站长平台设置抓取频率,或者在服务器层做限速。本工具在对 Google、百度生效的分组里写了 Crawl-delay 时会给出提示。
- robots.txt 为什么单独列出的爬虫不受 * 组限制?
- 因为爬虫只认最匹配自己的那一组:一旦某个分组点名了 GPTBot,GPTBot 就只看这一组,* 组里的规则对它完全不生效,两组不会叠加。于是常见的翻车是:* 组禁止了 /admin/,又给 GPTBot 单独写了一组只禁止 /private,结果 GPTBot 反而能抓 /admin/。正确做法是把 * 组里想保留的禁止规则在专属分组里再写一遍。本工具的抓取测试遇到这种情况会明确提示专属分组不继承 * 组。
- robots.txt 放在哪里才生效,改完多久生效?
- 必须放在网站根目录,用 https://你的域名/robots.txt 能直接打开才算数,放在子目录里无效。它只管同一协议、同一域名、同一端口下的网址,www 与不带 www、http 与 https、各个子域名都要各放一份。改完不会立刻生效:搜索引擎会缓存 robots.txt,Google 通常最长缓存约 24 小时,可以在 Search Console 的 robots.txt 报告里请求重新抓取。文件超过 500 KiB 时 Google 只读前 500 KiB。
- Next.js 项目的 robots.ts 和 robots.txt 怎么写?
- Next.js 13.3 及以上的 App Router 可以在 app 目录下放一个 robots.ts,默认导出一个返回 MetadataRoute.Robots 对象的函数,里面写 rules、sitemap、host,构建时自动生成 /robots.txt;也可以直接把静态的 robots.txt 放进 app 或 public 目录。本工具的 robots.ts 页签会把同一份规则转成这种写法。注意 Clean-param、Noindex 等指令在这个对象里没有对应字段,工具会把无法表达的条目列出来,不会静默丢掉。
- robots.txt 能挡住采集脚本和 curl 吗?
- 挡不住。robots.txt 是君子协定,只约束主动遵守协议的爬虫,curl、python-requests、各类采集脚本根本不会去读它,所以本工具的爬虫名录也不收这类 HTTP 客户端,免得让人误以为写上就能挡住。对不守规矩的抓取,要靠服务器层手段:按 User-Agent 或 IP 拦截、限速、验证码、登录墙等。另外 robots.txt 是公开文件,任何人都能看到你禁止了哪些路径,所以别把它当成隐藏后台地址的办法。
- robots.txt 检测工具怎么测试网址能否被抓取?
- 把现有 robots.txt 粘进本页的源码框(或直接用表单生成一份),在抓取测试里输入完整网址或以斜杠开头的路径,再选一个爬虫,就会给出允许或禁止的结论、生效的是哪一组、命中第几行哪条规则,以及其他命中但落选的规则为什么输了。中文路径会按 UTF-8 百分号编码后再匹配,网址里的锚点会被丢掉。批量矩阵可以一次看最多 50 个网址乘 12 个爬虫。判定按 RFC 9309 与 Google 公开规则,个别搜索引擎可能不同。
功能特点:生成、体检、测试一页完成
- robots 文件生成:按爬虫分组可视化编辑,实时输出 UTF-8、LF 换行的 robots.txt,空分组自动补一行空 Disallow,路径里的换行会被删除、井号编码为 %23,防止一条路径注入一整行新指令。
- robots.txt 检测:内置 25 条体检规则,按必须改、注意、提示三级标出孤儿规则、路径缺斜杠、拼写错误、屏蔽 CSS/JS 等常见问题。
- 抓取测试与矩阵:输入网址选爬虫即给出允许或禁止,并指出生效分组与命中行;批量网址 × 多爬虫的网格让整份规则一目了然。
- 6 个预设:允许全部抓取、禁止全部抓取(测试站)、屏蔽 AI 训练爬虫、WordPress 常用、屏蔽站内搜索与排序参数、只允许主流搜索引擎。其中「屏蔽 AI 训练爬虫」一键屏蔽 GPTBot 等训练抓取,WordPress robots.txt 预设顺带演示了最长匹配。
- 与 User-Agent 解析共用爬虫名录:56 个 robots token,按搜索、AI 训练、AI 用户触发、AI 搜索、社交、SEO 工具分类,名录版本 2026.10。
- Next.js robots.ts 写法:同一份规则一键转成 App Router 的 MetadataRoute.Robots 代码,表达不了的指令明确列出。
- 粘贴反解析:把线上的 robots.txt 粘进来转回表单,注释归属、行内注释、未知指令保留与否都有说明。
英文里这类工具叫 robots.txt generator 或 robots.txt tester;本页把两件事放在一起,并且测试的就是你即将下载的那份文本——模型先生成文本,再把文本重新解析后判定,保证「测的就是你下载的」。
robots.txt 测试工具的判定规则:三条最常见的误解
- 专属分组不继承 * 组:爬虫只看最匹配自己的那一组。给 GPTBot 单独写了组,
User-agent: *下的禁止规则就对它不生效。 - 只看最长匹配,不看先后顺序:同时命中多条规则时路径更长的胜出,一样长时 Allow 胜出;规则写在文件里的先后与结论无关。
- 中文路径按 UTF-8 百分号编码后再比:
Disallow: /产品/同样挡得住浏览器发出的/%E4%BA%A7%E5%93%81/,十六进制大小写不影响结果,但%2F和斜杠不是一回事。
指令速查:Disallow 和 Allow 的区别、robots.txt Sitemap 与 Crawl-delay
Disallow 和 Allow 的区别一句话:Disallow 划出不许抓的范围,Allow 在这个范围里开口子,两者冲突时按最长匹配裁决。robots.txt Sitemap 行写在文件任意位置都行,但必须是完整网址。各家搜索引擎对指令的支持不同,下表查不到官方说法的格子写「未公开」,不猜。
| 指令 | 写法 | 作用 | 百度 | Bing | Yandex | 搜狗 | 360 | |
|---|---|---|---|---|---|---|---|---|
| Disallow | Disallow: /admin/ | 禁止抓取以该路径开头的网址;留空表示不禁止 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 |
| Allow | Allow: /admin/public/ | 在 Disallow 范围里放行更具体的路径,按最长匹配胜出 | 支持 | 支持 | 支持 | 支持 | 未公开 | 未公开 |
| 通配符 * | Disallow: /*?sort= | 匹配任意长度的任意字符(含 /) | 支持 | 支持 | 支持 | 支持 | 未公开 | 未公开 |
| 结尾符 $ | Disallow: /*.pdf$ | 只放在末尾,表示网址到此结束 | 支持 | 支持 | 支持 | 支持 | 未公开 | 未公开 |
| Sitemap | Sitemap: https://example.com/sitemap.xml | 告诉爬虫站点地图在哪,必须写完整网址 | 支持 | 未公开 | 支持 | 支持 | 未公开 | 未公开 |
| Crawl-delay | Crawl-delay: 10 | 两次抓取之间至少间隔的秒数 | 不支持 | 不支持 | 支持 | 不支持 | 未公开 | 未公开 |
| Host | Host: example.com | 指定主镜像域名 | 不支持 | 未公开 | 未公开 | 已弃用 | 未公开 | 未公开 |
| Clean-param | Clean-param: utm_source / | 声明不影响页面内容的参数,避免重复抓取 | 不支持 | 未公开 | 未公开 | 支持 | 未公开 | 未公开 |
想让 robots.txt 禁止百度抓取整站,写 User-agent: Baiduspider 加 Disallow: / 两行即可;但它挡的只是抓取,不保证已收录的网址消失。
常见爬虫 robots token 对照(含 Google-Extended)
robots.txt 里写的是 robots token,不一定等于访问日志里的 UA 名。Google-Extended、Applebot-Extended 只存在于 robots.txt,日志里永远搜不到;屏蔽 GPTBot 也不等于屏蔽 ChatGPT-User,它们是两个不同的 token。下表与 User-Agent 解析工具共用同一份名录。
| robots token | 运营者 | 用途 | 屏蔽后果 |
|---|---|---|---|
Googlebot | 搜索引擎 | 屏蔽后该搜索引擎不再抓取,排名与摘要会逐步受影响 | |
Googlebot-Image | 搜索引擎 | 屏蔽后该搜索引擎不再抓取,排名与摘要会逐步受影响 | |
Googlebot-News | 搜索引擎 | 屏蔽后该搜索引擎不再抓取,排名与摘要会逐步受影响 | |
Googlebot-Video | 搜索引擎 | 屏蔽后该搜索引擎不再抓取,排名与摘要会逐步受影响 | |
Google-InspectionTool | 搜索引擎 | 屏蔽后该搜索引擎不再抓取,排名与摘要会逐步受影响 | |
Storebot-Google | 搜索引擎 | 屏蔽后该搜索引擎不再抓取,排名与摘要会逐步受影响 | |
AdsBot-Google | 搜索引擎 | 屏蔽后该搜索引擎不再抓取,排名与摘要会逐步受影响 | |
Mediapartners-Google | 搜索引擎 | 屏蔽后该搜索引擎不再抓取,排名与摘要会逐步受影响 | |
Baiduspider | 百度 | 搜索引擎 | 屏蔽后该搜索引擎不再抓取,排名与摘要会逐步受影响 |
Baiduspider-render | 百度 | 搜索引擎 | 屏蔽后该搜索引擎不再抓取,排名与摘要会逐步受影响 |
bingbot | Microsoft | 搜索引擎 | 屏蔽后该搜索引擎不再抓取,排名与摘要会逐步受影响 |
adidxbot | Microsoft | 搜索引擎 | 屏蔽后该搜索引擎不再抓取,排名与摘要会逐步受影响 |
Sogou web spider | 搜狗 | 搜索引擎 | 屏蔽后该搜索引擎不再抓取,排名与摘要会逐步受影响 |
360Spider | 360 | 搜索引擎 | 屏蔽后该搜索引擎不再抓取,排名与摘要会逐步受影响 |
HaosouSpider | 360 | 搜索引擎 | 屏蔽后该搜索引擎不再抓取,排名与摘要会逐步受影响 |
YisouSpider | 神马搜索(UC / 阿里) | 搜索引擎 | 屏蔽后该搜索引擎不再抓取,排名与摘要会逐步受影响 |
PetalBot | 华为(花瓣搜索) | 搜索引擎 | 屏蔽后该搜索引擎不再抓取,排名与摘要会逐步受影响 |
YandexBot | Yandex | 搜索引擎 | 屏蔽后该搜索引擎不再抓取,排名与摘要会逐步受影响 |
DuckDuckBot | DuckDuckGo | 搜索引擎 | 屏蔽后该搜索引擎不再抓取,排名与摘要会逐步受影响 |
Slurp | Yahoo | 搜索引擎 | 屏蔽后该搜索引擎不再抓取,排名与摘要会逐步受影响 |
Applebot | Apple | 搜索引擎 | 屏蔽后该搜索引擎不再抓取,排名与摘要会逐步受影响 |
Yeti | NAVER | 搜索引擎 | 屏蔽后该搜索引擎不再抓取,排名与摘要会逐步受影响 |
GPTBot | OpenAI | AI 训练 | 屏蔽后内容不再被抓去训练模型,不影响搜索收录 |
ClaudeBot | Anthropic | AI 训练 | 屏蔽后内容不再被抓去训练模型,不影响搜索收录 |
anthropic-ai | Anthropic | AI 训练 | 屏蔽后内容不再被抓去训练模型,不影响搜索收录 |
CCBot | Common Crawl | AI 训练 | 屏蔽后内容不再被抓去训练模型,不影响搜索收录 |
Bytespider | 字节跳动 | AI 训练 | 屏蔽后内容不再被抓去训练模型,不影响搜索收录 |
meta-externalagent | Meta | AI 训练 | 屏蔽后内容不再被抓去训练模型,不影响搜索收录 |
Amazonbot | Amazon | AI 训练 | 屏蔽后内容不再被抓去训练模型,不影响搜索收录 |
cohere-ai | Cohere | AI 训练 | 屏蔽后内容不再被抓去训练模型,不影响搜索收录 |
Diffbot | Diffbot | AI 训练 | 屏蔽后内容不再被抓去训练模型,不影响搜索收录 |
Google-Extended | AI 训练 | 屏蔽后内容不再被抓去训练模型,不影响搜索收录;只在 robots.txt 里生效 | |
Applebot-Extended | Apple | AI 训练 | 屏蔽后内容不再被抓去训练模型,不影响搜索收录;只在 robots.txt 里生效 |
ChatGPT-User | OpenAI | AI 用户触发 | 屏蔽后用户在 AI 对话里点开你的链接会打不开 |
Claude-User | Anthropic | AI 用户触发 | 屏蔽后用户在 AI 对话里点开你的链接会打不开 |
Perplexity-User | Perplexity | AI 用户触发 | 屏蔽后用户在 AI 对话里点开你的链接会打不开 |
OAI-SearchBot | OpenAI | AI 搜索 | 屏蔽后你的页面不会出现在该 AI 搜索的引用结果里 |
PerplexityBot | Perplexity | AI 搜索 | 屏蔽后你的页面不会出现在该 AI 搜索的引用结果里 |
robots.txt 通配符与匹配示例
下表「挡得住 / 挡不住」由本工具的匹配函数现场算出,不是手写的结论。
| 规则路径 | 挡得住 | 挡不住 |
|---|---|---|
/fish | /fish、/fish.html、/fishheads/yummy.html | /Fish.asp、/catfish |
/fish/ | /fish/、/fish/salmon.html | /fish、/fish.html |
/*.pdf$ | /a/b.pdf | /a/b.pdf?x=1、/a.pdfx |
/*? | /list?page=2、/a/? | /list |
/a$b | /a$b | /ab |
robots.txt 检测:体检覆盖的 25 条常见问题
| 级别 | 判据 | 提示 |
|---|---|---|
| 必须改 | 第一条 User-agent 之前出现规则 | 这几行规则不属于任何分组,所有爬虫都会忽略它们 |
| 必须改 | 非空非注释且没有冒号 | 这一行不是「指令: 值」格式,会被忽略 |
| 必须改 | 路径不以 / 或 * 开头 | 路径要以 / 开头,写成 admin/ 不会匹配任何网址 |
| 必须改 | Sitemap 不是完整网址 | Sitemap 必须写完整地址(含 https:// 与域名),例如 https://example.com/sitemap.xml |
| 必须改 | Sitemap 用了 javascript: 等危险协议 | 这个地址的协议不安全,已不写入文件 |
| 注意 | * 组 Disallow: / 且没有放行规则 | 所有爬虫都被禁止抓取全站;注意这不等于「不被收录」 |
| 注意 | 指令名拼写不标准 | 拼写不标准,Google 能容错读入,其他搜索引擎未必认 |
| 注意 | User-agent 带版本号或多余后缀 | robots token 不带版本号,写 Googlebot 即可 |
| 注意 | 出现 Noindex 指令 | robots.txt 里的 Noindex 已不被 Google 支持,要用 meta robots 或 X-Robots-Tag |
| 注意 | Disallow 了 CSS / JS 或静态资源目录 | 屏蔽 CSS / JS 会让搜索引擎渲染不出页面,可能影响排名 |
| 注意 | 文件超过 500 KiB | 超过 500 KiB,Google 只读前 500 KiB,后面的规则会被忽略 |
| 提示 | User-agent 不在爬虫名录 | 名录里没有这个爬虫,请确认 token 拼写(大小写不敏感) |
| 提示 | 对 Google / 百度适用的分组写了 Crawl-delay | Google 和百度不读 Crawl-delay,抓取频率要去各自的站长平台调 |
| 提示 | 出现 Host 指令 | Host 只有 Yandex 曾识别,且已弃用 |
| 提示 | 有 * 组禁止规则,同时有单独列出的爬虫 | 单独列出的爬虫不会继承 * 组的规则,* 里禁止的路径对它们放开了 |
| 提示 | 同一爬虫出现在多个分组 | 这些分组会被合并处理,建议写在一起更好读 |
| 提示 | 同组同一路径既 Allow 又 Disallow | 长度相同时 Allow 胜出,这条 Disallow 不生效 |
| 提示 | $ 不在路径末尾 | $ 只在末尾表示「以此结尾」,中间的 $ 是普通字符 |
| 提示 | 路径里有 ? | ? 在 robots.txt 里就是问号本身,不是通配符 |
| 提示 | 路径里有 # | # 之后会被当成注释;生成时已编码为 %23 |
| 提示 | 路径含中文等非 ASCII 字符 | 中文路径会按 UTF-8 百分号编码后匹配(测试器已按此处理) |
| 提示 | 文件开头有 BOM | 文件开头有 BOM,多数爬虫能处理,建议另存为无 BOM 的 UTF-8 |
| 提示 | 分组没有任何规则 | 空分组已自动补一行空 Disallow:(等于允许全部) |
| 提示 | Disallow: / 点名了 AI 用户触发抓取 | 这类是用户在 AI 对话里点开你链接时的抓取,屏蔽后用户在 AI 里打不开你的页面 |
| 提示 | 用了 Google-Extended / Applebot-Extended | 这个 token 只在 robots.txt 里生效,访问日志里永远搜不到它;屏蔽它不影响搜索收录 |