要取得可复查的状态证据,核心是让每一次检查都留下带时间、来源和原始内容的记录。对 robots.txt 来说,最直接的做法是抓取该文件的原始响应,并同时保存 HTTP 状态码、响应头和正文;只截图浏览器里看到的内容,无法证明服务器当时返回了什么。下面按观察、判断、处理、复查四步展开,并比较两种常见方案。
robots.txt 的状态证据通常要回答三类问题:文件是否存在、内容是否可被公开读取、特定爬虫是否被允许或禁止。不同问题需要的证据不同。
如果只是内部沟通,浏览器截图可以凑合;如果要把结论交给他人复核、写进报告或用于排查争议,就必须用可重复、可对比的方式取证。
这是最容易被复查的方案,因为命令、输出和时间都可以原样保留。以 curl 为例,可以执行:
curl -sS -D headers.txt -o robots.txt -A "ExampleBot" https://example.com/robots.txt
这条命令把响应头写入 headers.txt,把正文写入 robots.txt,并声明了 User-Agent。复查者只要拿到这两个文件,就能看到状态码、内容类型、抓取时间和正文。适用条件是:你能在终端或服务器上执行命令,且目标地址可公开访问。判断结果时先看响应头第一行的状态码,再看正文是否完整;如果状态码是 301 或 302,需要继续追踪跳转后的最终地址,否则保存的只是跳转响应。
如果无法使用命令行,可以选择能显示原始响应头和正文的抓取工具,或从服务器访问日志中提取记录。在线工具适合快速查看,但要注意它展示的是工具服务器发起的请求,不等同于搜索引擎爬虫的请求。日志方案适合复查历史状态,因为日志里通常有请求时间、来源 IP、User-Agent 和状态码。
两种方案的比较依据可以归纳为三点:
需要提醒的是,robots.txt 的抓取限制不等于可靠的索引移除。即使文件里写了禁止抓取,已经收录的页面也可能继续出现在结果中,因为限制抓取和移除索引是两件事。站点地图也不保证收录。这些边界决定了取证时要区分“爬虫是否被允许抓取”和“页面是否已被索引”。
取得证据后,建议按下面的检查项整理,方便下次复查时逐条对比:
复查时,用同样的命令和 User-Agent 再抓一次,把新旧两份响应头和正文并排比较。如果状态码或正文发生变化,就能判断是文件被修改、权限被调整,还是服务器行为改变。若两次结果一致,说明状态稳定,可以作为阶段性结论。
下一步可以直接做一次基线抓取:选一个固定命令,把响应头和正文保存到带日期的目录中,并在文件里写明抓取时间和 User-Agent。之后每次变更 robots.txt 或排查抓取问题时,都用同一方式再抓一次,这样得到的记录才具备可复查性。