robots.txt 在线抓取与测试

把线上正在生效的 robots.txt 抓回来,按分组列清规则,再拿具体路径试一下到底允许不允许抓。

需服务端处理这个工具由服务器代为访问网络

你要检查的网站地址会发送到本站服务器,由服务器发起查询,结果只返回给这个页面。

服务器不保存查询内容,也不记录你查了什么,只按来源 IP 限制频率(每分钟 30 次)防止被当跳板刷。站上其它工具仍然全部在浏览器本机完成。

例子:

robots.txt 能做什么、不能做什么

先纠正一个最常见的误解:robots.txt 不是访问控制。它是一份放在网站根目录、任何人打开网址就能读到的公开文本,作用只是「请求爬虫别抓这些路径」。想靠它藏后台地址、藏接口文档是无效的——攻击者第一件事就是读这个文件,你写在 Disallow 里的路径反而成了一份目录清单。要真正限制访问得靠登录、IP 白名单或者网络层。

Disallow 和 noindex 也是两件事,经常被搞混。Disallow 是「别来抓」,但如果页面已经被别的网站链接过,爬虫可能从外链知道它的存在并直接收录一个没有内容的空条目,用户搜到点进去看到空白。noindex 是「抓可以,但别收录」,才是阻止出现在搜索结果里的正确做法。两者连用有一个著名陷阱:如果整站都被 Disallow 了,爬虫根本读不到页面里的 noindex 标记,结果反而可能被收录。

规则匹配按「最长匹配优先」而不是「从上往下第一条」。同一个分组里,模式字符串最长的那条规则胜出;长度相同时 Allow 优先于 Disallow。所以 Disallow: /private/ 配上 Allow: /private/public/ 是有效的白名单写法,前者更短,后者更长,后者胜出。反过来把顺序倒过来写没有意义,顺序不影响结果。理解这一点,规则就好读了。

分组匹配也有细节:一个爬虫只会命中第一个与它名字匹配的分组,之后的分组对它完全失效。这意味着「User-agent: Googlebot 后面加一组规则」是给 Googlebot 的专属例外,其它爬虫读的是别的分组;但是 User-agent 名字是大小写不敏感的前缀匹配,Googlebot 和 Googlebot-News 会被同一组覆盖。写多分组时按「从具体到宽泛」排列最不容易出错。

Sitemap 是 robots.txt 里唯一对 SEO 有正面作用的声明,位置不限制,但必须写完整 URL(含 https://)。它和 robots.txt 是互补的:robots.txt 说「别抓什么」,sitemap 说「该抓什么、什么时候更新的」。两者冲突时以 robots.txt 为准——被 Disallow 的地址即使出现在 sitemap 里也不会被抓。想看自己线上实际生效的规则和网址清单是否一致,用robots.txt 测试逐条验证,再配合meta 标签生成把页面的收录控制设对。

常见问题

这个工具和站上的「robots.txt 测试」有什么区别?

那个是把规则贴进去本地判断,适合验证自己写的规则对不对;这个直接去抓线上的 robots.txt,省掉「打开浏览器、找到文件、全选复制」这几步,适合检查别人家的站点或者线上跑着的版本。两者的规则匹配用的是同一套实现。

相关:robots.txt 测试

抓不到 robots.txt 是出错了吗?

不一定是。文件不存在(返回 404)是常见且合法的状态,含义是「没有限制,什么都可以抓」。要注意的是另一种情况:有些站把 404 页面渲染成 200 返回一整页 HTML,看起来像抓到了,其实不是 robots.txt,页面会专门把这种情况标出来。

Disallow 写成 / 是不是就等于完全不让抓?

对,但不推荐这么用。Disallow: / 是「别来抓」,可它拦不住页面被别的站链接、被搜索引擎从外链发现;真要阻止收录应该用 noindex,或者干脆把它放在登录后面。用 robots.txt 挡住私密内容也是误解——它是一份公开的君子协定,任何人读一下就知道你的目录结构。

测试路径时该选哪个 User-agent?

想验证自己的配置就用默认的 *;想确认某家搜索引擎会不会抓到某个页面,就选对应爬虫。注意规则按分组匹配,一个爬虫只会命中第一个和它名字对应的分组,剩下的分组对它无效——这也是「加了 Googlebot 分组之后百度抓不到了」这类问题的来源。

Sitemap 声明了但抓不到怎么办?

先确认地址写的是完整 URL 而且能被公网访问(用一个没登录的浏览器试试)。其次是 gzip 格式的 sitemap 要保证确实是 gzip 压缩过的,扩展名写成 .gz 但内容是明文会被拒绝。另外单个 sitemap 最多 5 万条网址、不超过 50 MB,超了必须拆成索引文件。

Crawl-delay 现在还有用吗?

Googlebot 和 Bingbot 都已明确不支持它,改用控制台里的抓取速率设置;但部分中小爬虫仍然遵守。所以它不是一个可靠的限流手段,真正要控速还是靠服务器侧的限流和 429 响应。