先给有条件的结论:当修复A之后原本正常的B变差,最可能不是B自身坏了,而是A与B共享了同一条依赖链——例如同一份robots规则、同一个模板、同一层跳转或同一批URL参数。在缺少完整日志和后台权限时,你仍能做的最小动作是:把A改动前后“可被抓取的URL集合”和“返回状态码分布”做一次定点对比,而不是等收录数据。但若B的异常在A改动之前就已存在,或A根本没触及B的入口路径,这套拆法不成立,你看到的先后关系只是巧合。
百度抓取一个页面要穿过若干环节:入口链接被发现、robots允许、返回可索引状态、页面可渲染、最终进入索引。修复动作往往作用在共享层,而不是单个页面。比如你为了修好某批详情页的重复内容,给整个目录加了规范化或参数过滤,结果列表页的翻页链接被一并挡掉,于是原本正常收录的列表页开始掉。表面看是“详情页修好了、列表页坏了”,实际是同一层规则同时作用在两个对象上。
要判断是否共享依赖,先列出A和B各自经过的环节,再找交集。交集越靠近入口(robots、跳转、链接发现),影响面越大;交集越靠近单页(某段正文模板),影响面越小。这个判断不需要后台权限,只需要两边的URL样本和抓取记录。
在缺少日志或权限的情况下,不要试图复现全站,而是选两组样本:一组是修复目标A的URL,一组是意外变差的B的URL,各取若干条。对每条记录两件事——改动前后的可抓取状态(是否被robots挡、是否返回可索引状态码)和它被发现的入口(从哪个链接进来)。
这一步的实际动作是“分范围验证”:把A的修复只应用到一小部分URL,观察B对应部分是否同步变化。如果B只在被A覆盖的那部分变差,依赖链被确认;如果B全站都变差,问题更可能在更上层(如整体规则、服务器响应)。这个结果直接决定下一步是缩小规则范围,还是去查基础设施。
假设某站为修复大量空参数页被收录,在robots里加了一条针对带问号参数的通用限制。修复后空参数页确实减少,但原本正常的分页列表开始不被抓取。此时把限制从“所有带问号”收窄为“仅指定无效参数名”,再对同一批分页URL做定点检查。若分页URL重新变为可抓取,说明A和B共享的是robots这一层,收窄范围即可拆开;若分页仍不可抓取,则要怀疑分页本身另有问题,比如链接由脚本生成、入口被其他规则挡住。这里所有数字和现象都是假设,用来演示比较方法,不代表任何真实站点结果。
注意,robots的抓取限制不等于可靠的索引移除;即使某URL被挡,已收录的结果也可能延迟变化。所以“收窄后抓取恢复”只能说明抓取层被拆开,不能直接推出收录会同步恢复。
反例很关键:如果B的异常在A改动之前就存在,只是你改动后才注意到,那先后顺序是观察偏差,不是因果。可用改动时间点与B异常首次出现时间做比对;若B更早,拆依赖链的方向就错了。另一个反例是A和B虽然共用模板,但B的入口链接来自站外或另一套导航,A的改动根本影响不到它,这时应去查B自己的入口和状态。
还要区分相关与因果:抓取量、请求量的下降可能来自抓取配额调整、服务器波动或外部链接变化,不能单独证明是A改动导致的。把“时间接近”当成“因果”是这类排查最常见的误判。
若依赖链被确认,处理原则是“只在A需要的范围内生效”:把全局规则改为按目录、按参数名或按模板条件限定,再对B的样本重新检查可抓取状态。若无法收窄,就保留A的修复、单独为B补一条更具体的允许规则,并验证两条规则不冲突。若依赖链未被确认,不要继续在A上叠加改动,转而检查B自身的入口、状态码和渲染结果。每一步都以“定点样本是否恢复”为判断依据,而不是等收录总量变化——收录数据滞后,无法及时反馈对错。