先给一个有条件的结论:只有当两套日志的时区、时间格式和事件语义都能核对清楚时,才可以把抓取日志与应用日志按时间轴对齐,用来判断百度蜘蛛访问后服务端到底发生了什么。若其中任一环节无法确认,对齐结果只能当作线索,不能当作事实依据。更稳妥的顺序是先把时间基准统一,再对齐事件,最后才讨论百度不收录是否与某次抓取有关。
抓取日志通常记录的是外部请求到达的瞬间,应用日志记录的往往是请求进入业务逻辑、完成渲染或写入访问记录的时刻。两者即使时间戳接近,也可能描述不同阶段。对齐前要逐项核对:
如果两套日志没有共同标识,只能靠 URL 和时间窗近似匹配,那么结论的可靠度会明显下降。此时应把目标从“证明因果”降为“缩小可疑范围”。
多个角色对同一事实理解不同,常见原因是各自看到的日志阶段不同。与其争论,不如先做一张最小对照表,把每条抓取记录和对应的应用记录并排放置,并标注差异类型:
这张表的价值在于把“我觉得没被抓”变成“哪一类差异占多数”。动作上,先抽取同一 URL 在一段固定时间窗内的全部记录,按上述四类归类,再决定下一步查配置还是查应用。如果第一类占比高,下一步应优先检查前置层与路由;如果第三类占比高,先统一时钟比改规则更有效。
假设某站点抓取日志显示 10:00:00 有一次对目标 URL 的访问,应用日志在 10:00:08 才出现对应请求,且这种约 8 秒的差值在多条记录中稳定出现。此时更合理的解释是两套日志的写入阶段不同或存在固定偏移,而不是“百度抓取后没有处理”。若把 8 秒差值误判为丢失,就可能去改 robots.txt 或站点地图,而真正该做的是核对时钟同步与日志写入时机。反之,如果差值随机且伴随大量“抓取有、应用无”,才需要怀疑拦截或路由问题。
有一个反例会直接推翻前面的结论:当应用日志只记录成功响应、不记录被拒绝或被重定向的请求时,抓取日志里的大量访问在应用日志中天然不存在。这时无论怎么对齐,都会得出“抓取很多、处理很少”的假象。同样,如果抓取日志经过采样或轮转,缺失的记录也不能证明事件没发生。遇到这种情况,应先确认日志覆盖范围,再谈对齐,否则后续判断都会建立在残缺数据上。
建议先做一次小范围验证:选一个明确的目标 URL,固定一个较短时间窗,分别导出两套日志,统一为同一时区后按时间排序,逐条标注差异类型。若差异集中在固定偏移,下一步处理时钟与写入阶段;若集中在“抓取有、应用无”,下一步检查前置层与路由;若两套日志都稀疏且无法匹配,下一步先补全标识字段再重做对照。这个动作的结果决定后续是改配置、改日志,还是暂时无法下结论。百度不收录的原因可能涉及抓取、索引与展现多个环节,日志对齐只能回答其中一小段,不能单独作为收录与否的最终证据。