可复查的状态证据,指的是不依赖“我改过了”这类口头描述,而是能让他人按同一路径重新验证 robots.txt 当前状态、生效范围和修改历史的记录。对 robots.txt 编写来说,最实用的做法是:保存原始文件、抓取响应、解析结果和变更时间四类材料,并让每项材料都能对应到具体 URL 和具体时间。下面从交付结果倒推需要的资料、任务和验收方式。
robots.txt 的状态不是单一事实,至少分三层:
复查证据应分别对应这三层。只保存一份 robots.txt 文本,无法证明线上返回的就是它,也无法证明某条规则对某个 URL 的实际匹配结果。
假设验收目标是“证明 /private/ 目录对通用爬虫被禁止,且首页仍可抓取”。需要准备的资料包括:
https://example.com/robots.txt 的 HTTP 响应记录,包括状态码、响应头和响应体。https://example.com/private/page.html 和 https://example.com/ 的规则匹配结果。这些资料的共同点是:每条都能回答“谁在什么时间用什么方法得到这个结果”。缺少时间或方法,复查者只能重新猜。
方案一:本地解析工具加人工核对。用脚本或在线解析器读取 robots.txt,输入目标 URL,输出匹配到的规则。适用条件是规则数量少、User-agent 分组清晰、需要快速确认 Allow/Disallow 优先级。判断结果是:若解析器输出“disallow”且对应分组正确,可作为规则层证据;但它不能证明线上文件未被 CDN 或 WAF 改写。
方案二:直接抓取线上文件并保留原始响应。用 curl 或浏览器开发者工具获取 robots.txt,保存完整响应。适用条件是需要证明线上真实状态、排查缓存或代理差异。判断结果是:若响应体与本地文件一致、状态码为 200、内容类型为 text/plain,则文件层证据成立;若不一致,应优先排查部署路径、缓存和重定向。
两种方案不互斥。规则复杂时,先用方案二确认线上文件,再用方案一验证具体 URL 的匹配结果,证据链更完整。
下面是一组可以直接执行的步骤。示例中的域名和路径均为假设,仅用于说明方法。
curl -i https://example.com/robots.txt,把完整输出保存为带日期的文本文件。Content-Type、Last-Modified(若存在)、缓存相关头。User-agent 行、Disallow 行、Allow 行的顺序和拼写,注意大小写和通配符。robots-2025-01-15.txt、match-private-2025-01-15.txt。验收时,复查者应能仅凭这些文件复现你的判断。若某一步依赖登录态或特定工具,需要在记录中写明工具名称和版本,而不是只写“已检查”。
robots.txt 的抓取限制不等于可靠的索引移除。即使某 URL 被 Disallow,它仍可能因外部链接出现在搜索结果中。站点地图不保证收录,HTTPS 也不保证安全无漏洞或排名。这些结论不能写进 robots.txt 状态证据里,否则会把抓取层证据错误地当成索引层结论。
另外,不同搜索引擎对 robots.txt 的支持细节和报告方式需要分别核查。若验收目标涉及多个搜索引擎,应分别保存各自的抓取报告,而不是用一份通用文件代替。
下一步:选一个你实际控制的站点,按上面的六步生成一份带日期的证据包,再让另一位同事仅凭该证据包复述当前规则状态。若对方能复述一致,说明证据可复查;若不能,缺哪一环就补哪一环。