网站收录

日志里蜘蛛来过却没进索引:先核对爬虫身份与命中口径

服务器日志显示蜘蛛来过,页面却迟迟不进索引,往往不是页面本身的问题,而是三方口径没对齐。本文按身份识别、命中类型、时间口径、样本对照四步,梳理日志、抓取统计与索引状态不一致时的核对顺序,避免把探针和扫描器当成搜索端的抓取量。

网站收录

日志里蜘蛛来过却没进索引:先核对爬虫身份与命中口径

很多站长判断收录情况的依据是服务器日志:只要看到疑似蜘蛛的访问记录,就默认页面已经被抓取。但日志里的访问记录、抓取统计里的抓取次数、索引里的页面状态,是三套不同的口径。三者对不上时,先别急着改页面,先把口径核对清楚。

一、先确认访问者到底是谁

日志里的 User-Agent 可以直接伪造,任何脚本都能把自己写成搜索引擎蜘蛛。只看 UA 字符串就统计抓取量,很容易把自家采集程序、监控探针、第三方工具都算成蜘蛛。

  • 反向 DNS 与 IP 归属:把日志里的 IP 做反查,确认域名归属与官方公布的 IP 段是否一致。
  • 行为特征:真正的抓取通常分散、连续、按 URL 顺序推进;固定周期、固定路径、固定顺序的访问更像探针。
  • 来源分布:同一 IP 段在短时间内扫过大量不存在的 URL,更接近扫描器而非正常抓取。

尤其是使用了蜘蛛池或批量提交工具时,日志里会混进大量非搜索端的访问,这部分量不能直接当作“抓取量”来用。

二、日志里的“命中”要分清是哪一种

即使确认是搜索蜘蛛,一次访问也不等于一次有效抓取。至少要把下面几种情况分开看。

只取走了 robots.txt 或站点地图

这类请求会出现在日志里,但不代表它抓了正文页。统计抓取量时如果不过滤这些路径,数字会明显虚高。

请求方法不是 GET

HEAD 请求只拿响应头,不取正文。日志里出现 HEAD 往往只是连通性检查,不能算作内容抓取。

状态码不是 200

301、302、304、403、429、5xx 都算“来过但没拿到完整内容”。其中 304 表示内容未变,通常说明上次抓取的版本仍有效;429 和 5xx 则要去看服务端限流与稳定性。

请求根本没到源站

如果前面有 CDN、WAF 或负载均衡,被拦截的请求可能只记录在边缘节点,源站日志里看不到。判断抓取是否正常时,边缘日志和源站日志要一起看。

三、时间口径要先对齐

日志时间、抓取统计时间、索引状态更新之间常有延迟,也常有时区差异。核对前先确认几件事:

  1. 日志时间戳用的是 UTC 还是本地时间,与后台报表是否一致。
  2. 记录的是请求开始时间还是响应完成时间,差别在慢请求上会被放大。
  3. 索引状态本身存在更新延迟,“昨天抓了、今天还没进索引”属于正常范围,需要按观察窗口来判定。

四、把三方数据放到同一张表里核对

建议取一批样本 URL 逐条对照,而不是只看总量:

  • 日志:该 URL 最近一次被抓取的时间、状态码、响应大小。
  • 抓取统计:该 URL 所在目录的抓取频次与占比。
  • 索引状态:该 URL 当前是否在索引中,收录的是哪个版本。

三条都能对上,说明链路基本正常,问题可能出在页面质量或版本选择;如果日志里有、抓取统计里没有,先怀疑身份识别与统计过滤;如果抓取统计有、索引里始终没有,再回到内容与规范化上排查。

日志只能说明“有人来过”,说明不了“页面已经被收”。把身份、状态码、时间口径三件事对齐之后,再讨论抓取是否充分,结论才站得住。

最后提醒一点:核对期间尽量不要同时改动 robots.txt、canonical 和服务端配置,否则前后两次数据没法比较,等于白白多绕一圈。