收录入口:入口页面正常但深层链路失效时怎样定位断点

📍 WDQWDWQD987AAAAA:216.73.217.101
📱 Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
🔗 /d84e37d0fa02.html
📄

收录入口:入口页面正常但深层链路失效时怎样定位断点

先给结论:当收录入口本身能访问、返回正常,而更深的页面或链接层级迟迟没有进入索引时,断点通常不在“入口是否可达”,而在“从入口到深层节点之间,爬虫是否被引导、被允许、被正确解析”。要定位它,不能只看入口状态码,而要沿链路逐跳验证“发现—允许—可解析—可索引”四个环节,哪一跳开始出现只有部分节点通过的现象,断点就在那一跳。

为什么入口正常不等于深层链路正常

入口页面返回 200,只证明这一个 URL 对爬虫可见。它不证明入口上的链接被解析、不证明深层 URL 被加入抓取队列、也不证明深层页面通过了索引判断。常见矛盾是:入口页在索引里,入口页指向的分类页或详情页却没有。此时问题往往出在入口到深层之间的“传递”环节,而不是入口本身。

一个容易被忽略的条件是:入口页可能对用户正常渲染,但链接是脚本运行时才插入的。爬虫拿到初始 HTML 时,链接尚未出现,于是深层节点从未被发现。这种情况下入口状态码永远正常,深层链路却始终断着。

两种解释:没被发现,还是被发现但没通过

深层链路失效,先分成两类互斥解释,能大幅缩小排查面。

这两类的处理方向完全不同:前者要修“发现路径”,后者要修“页面本身或索引信号”。如果混在一起查,很容易在入口页反复确认状态码,却始终碰不到真正的断点。

能区分两种解释的证据

关键是拿到“深层 URL 有没有被请求过”的证据,而不是只看最终是否被索引。

  1. 查服务器访问日志,按深层 URL 路径过滤,看是否存在来自爬虫的请求记录。有请求记录,说明发现环节基本通了,问题偏向解释二。
  2. 如果完全没有请求记录,再回到入口页,检查链接在初始 HTML 中是否存在、是否带 rel="nofollow"、是否依赖脚本注入。这是解释一的典型证据。
  3. 若日志显示被抓取但未索引,检查该深层页的返回状态、canonical 指向、robots meta、内容是否与已有页面高度重复。

需要提醒的是:日志里没有请求记录,不能单独证明“爬虫从未发现”。日志可能被轮转、被采样、被过滤,或爬虫请求走了另一台机器。反过来,抓取量归零也不能直接证明处理正确。要结合多个信号交叉判断,而不是把单一现象当结论。

一个假设例子:从入口到详情页的断点定位

假设某站入口页 /list 正常且已被索引,它指向的详情页 /item/123 长期未收录。按上面的方法走一遍:

这个例子的价值在于:每一步动作都改变了下一步的观察对象,而不是停在入口页反复确认。

几个容易误判的前提

定位断点时,有几个前提必须分清,否则会把正常现象当成故障。

定位断点的核心动作始终是:先判断深层 URL 有没有被请求,再决定修发现路径还是修索引信号。只要这一步的证据方向明确,后续排查就不会在入口页原地打转。

图1 图2

nginx