先给结论:入口正常而深层失效,通常不是工具整体失灵,而是抓取路径、渲染条件或状态判定三者之一在深层发生了变化。定位断点的正确动作是沿一条真实用户路径逐跳验证,而不是把整站重新跑一遍。具体选哪种方式,取决于深层页面是静态可达还是依赖交互与渲染。
拿到“入口 200、深层报错”的结果后,不要立刻怀疑工具。先用两三个可核对的证据把原因分开:
区分方法很直接:对同一个深层 URL,分别用浏览器直接访问、用命令行请求、用工具再跑一次。三者结果不一致,说明问题在抓取条件;三者一致报错,说明问题在链接或服务端本身。
如果深层页面不依赖登录和脚本,优先用逐跳验证,因为它能精确指出断在第几层。
这里有一个容易忽略的例外:robots.txt 的抓取限制不等于可靠的索引移除。深层 URL 被 robots 屏蔽时,工具可能报“不可抓取”而非“失效”,手动访问却完全正常。遇到这种不一致,先核对 robots 规则,再判断链路是否真的断了,否则会把正常页面误判为死链。
当深层内容由脚本加载、或必须点击某个筛选、翻页、展开按钮才出现时,逐跳手动验证会失真,因为浏览器替你完成了工具没做的事。这时应换一种做法:
一个假设的例子:某列表页入口正常,翻到第 5 页后工具报大量 404。手动访问第 5 页正常,但地址里带有会话参数,该参数几分钟后失效。此时断点不在页面,而在参数有效期。处理动作应是改用不带临时参数的稳定地址复测;如果复测通过,下一步就不必再改页面,而应检查分页链接的生成方式。
单次扫描结果只能说明“这一次、这个条件下”的状态。要判断深层链路是否真的普遍失效,需要第二份证据:
需要提醒的是,请求量或抓取量突然归零,不能单独证明处理正确。它也可能是限速、封禁、任务中断或配置被改的结果。要把日志、状态码和实际页面内容三者对齐后再下结论。
如果深层失效集中在同一个模板、同一类参数或同一个时间窗口,逐跳验证的边际收益会迅速下降。此时更有效的动作是:固定一组代表性 URL,在修正抓取条件后重跑,看失败集合是否缩小。缩小则说明判断方向正确,可继续沿该条件排查;没有变化则说明断点在服务端或链接生成逻辑,应转向检查路由、重定向规则和参数处理。例外情况是深层页面本身依赖登录或地域限制,这类失效无法靠调整工具解决,需要先明确访问前提再评估链路是否真的可用。
把断点定位到具体一层之后,再决定是修链接、改抓取条件还是改服务端返回,这样每一步都有可复核的依据,而不是反复重扫全站。