在动手修改任何影响蜘蛛爬行的配置之前,先把当前状态完整留存下来,是定位问题的前提。具体做法是:把 robots.txt、关键页面 HTML 头部、HTTP 响应头和站点地图各抓取一份带时间戳的快照,存到改动记录目录里。这样改动后一旦出现抓取量下降或页面消失,就能用快照对比,判断是改动引起的还是其他原因。下面用一个假设例子说明完整流程。
假设某个内容站近期收录变慢,负责人怀疑是 robots.txt 里某条 Disallow 规则挡住了栏目页,于是准备修改。修改前他做了三件事:抓取 robots.txt 原文、抓取受影响栏目页的响应头、记录站点地图的提交状态。改完一周后抓取量下降,他拿快照对比,发现被挡的其实是另一条规则,而下降来自站点地图里一批失效 URL。如果没有快照,这个判断几乎无法完成。
关键点是:快照必须保存“改动前的原始字节”,而不是自己重新打一遍的版本。手工重打容易漏掉空行、注释或大小写差异,这些恰恰是排查时最需要的信息。
X-Robots-Tag、Content-Type、Last-Modified 等,这些直接决定蜘蛛是否继续抓取。<meta name="robots">、<link rel="canonical">、<h1> 和分页链接。保存位置建议用固定目录加日期命名,例如 snapshots/2024-06-01/,避免覆盖。每次改动前新建一份,改动后再存一份,形成前后对照。
curl -s https://example.com/robots.txt -o snapshots/日期/robots.txt,保留原始内容。curl -sI https://example.com/栏目页 -o snapshots/日期/headers.txt。curl -s https://example.com/栏目页 -o snapshots/日期/page.html。curl -s https://example.com/sitemap.xml -o snapshots/日期/sitemap.xml。README.txt,记录改动目的、时间、操作人和预期影响。这套步骤适用于任何准备调整抓取规则、URL 结构或页面元信息的场景。如果站点规模很大,可以只抓取受影响栏目和首页,不必全站抓取。
最常见的错误是只保存了改动后的状态,或者用截图代替文本。截图无法搜索、无法做差异对比,排查时价值有限。另一个错误是保存了 robots.txt 却忘了保存站点地图,导致无法判断抓取下降是否来自 URL 失效。
判断快照是否够用,可以问自己三个问题:改动后如果抓取量下降,我能否用快照证明下降与本次改动有关?如果页面从索引消失,我能否还原改动前的 meta robots 和 canonical?如果站点地图出错,我能否对比前后 URL 列表?三个都能回答,快照就合格了。
还要注意,robots.txt 的抓取限制不等于可靠的索引移除。即使你在快照里看到某条 Disallow 规则,也不能据此认为页面已经或不会被索引。站点地图也不保证收录,HTTPS 不保证安全无漏洞或排名。这些判断需要分别对具体搜索引擎核查,不能混为一谈。
完成改动后,用同样的命令再抓取一份新快照,放在同一日期目录下的 after/ 子目录,然后用 diff 对比前后文件。差异行就是本次改动的实际影响范围,把它和抓取日志、收录变化放在一起看,就能定位问题到底出在哪一步。如果差异与预期不符,优先回滚到改动前快照对应的版本,再重新评估。