检查 robots txt协议前,最先要准备的不是工具,而是能定位“谁在什么条件下读到哪份文件”的基础信息。至少需要:站点可访问的协议与主机名、robots.txt 的完整 URL、当前文件内容、目标搜索引擎或爬虫名称、要检查的具体路径,以及这份文件是测试环境还是生产环境。缺了其中任何一项,检查结果都可能张冠李戴。
robots.txt 的位置由协议和主机决定,而不是由页面路径决定。同一个域名下,https://example.com/robots.txt 和 http://example.com/robots.txt 在协议层面是两份资源;子域名如 https://blog.example.com/robots.txt 也各自独立。检查前要记录:
协议://主机名/robots.txt,确认返回的是 200 还是 404、301、403。如果站点同时存在 www 和非 www、HTTP 和 HTTPS 多个版本,要分别准备这些 URL,不能只查一个就下结论。
拿到文件后,要保留一份原文快照,包括所有注释行。检查时常见的误判来自“以为规则生效,其实写错了字段名或写在了错误的分组下”。同时准备服务器访问日志中针对 /robots.txt 的请求记录,用来核对爬虫是否真的来读过。
User-agent、Disallow、Allow、Sitemap 等字段,以及日志中的请求时间、User-Agent、返回状态。robots.txt 是按 User-agent 分组的,不同爬虫读到的规则可能完全不同。检查前要确定两件事:一是针对哪个爬虫,二是针对哪条具体 URL。没有这两项,就无法判断某条规则是否真的拦住了目标页面。
User-agent: *。Disallow: /private 会覆盖 /private 及其下级路径。示例(假设场景):文件写有 User-agent: * 与 Disallow: /tmp/,要检查 https://example.com/tmp/a.html。该路径以 /tmp/ 开头,属于被禁止范围;而 https://example.com/tmp 是否被拦,取决于是否带结尾斜杠,这正是需要逐字比对的原因。
这是检查前必须建立的前提:robots.txt 控制的是抓取,不是索引。被 Disallow 的 URL 仍可能因为外部链接出现在搜索结果中,只是搜索引擎无法读取页面内容来生成摘要。因此准备信息时,要额外记录该 URL 是否已被收录、是否设置了 noindex、是否有其他可访问的等价页面。
X-Robots-Tag,或在 HTML 中查看 meta robots。检查后常面对两种选择:直接修改 robots.txt 屏蔽路径,或保留抓取、改用页面级索引指令。判断依据如下。
下一步:把上述信息整理成一张对照表,列出每个主机、每个爬虫、每条待验证路径,再逐项运行检查,避免只凭一份文件就下结论。