搜索抓取

搜索蜘蛛抓取:IPv6 双栈访问差异与抓取路径的核对方法

站点启用 IPv6 双栈后,抓取日志里常出现两条链路表现不一致的情况。本文从日志判断、DNS 记录、防火墙放行、CDN 回源四个方面,梳理双栈环境下抓取路径的核对顺序,帮助定位请求被丢弃或返回分叉的原因。

搜索抓取

搜索蜘蛛抓取:IPv6 双栈访问差异与抓取路径的核对方法

很多站点在完成 IPv6 改造后,会发现抓取日志里同时出现来自 IPv4 与 IPv6 的请求。表面上看覆盖范围没变,但实际抓取到的 URL 数量、回访频率可能出现差异。IPv6 双栈本身不会直接带来收录变化,它更像是把“入口是否可达”这件事拆成了两条链路:任何一条出问题,蜘蛛看到的站点就只是一个残缺版本。

为什么双栈站点更容易出现抓取路径差异

单栈站点只有一条访问路径,出问题就是全站不可达,现象很直接。双栈站点则不同:IPv4 与 IPv6 可能走不同的 DNS 解析结果、不同的 CDN 节点、不同的回源线路,甚至落到不同的源站机器上。只要其中一条链路的配置有偏差,蜘蛛就会按“哪条先通”来决定访问哪条,而你看到的日志自然只反映那条链路的状态。

更麻烦的是,IPv6 的可用性往往只在部分地区或部分网络环境里成立。同样是 AAAA 记录,某些运营商可以正常解析并回访,另一些则直接超时重试。抓取量因此呈现忽高忽低的波动,而不是稳定的增长或下降。

先确认蜘蛛到底走了哪条链路

从日志入手

  • 统计同一时间窗口内,来自 IPv4 与 IPv6 的请求条数比例,观察是否存在明显偏斜。
  • 对单个 URL 做抽样,看它在两个协议族下的状态码、响应体长度是否一致。
  • 注意同一 URL 是否出现“IPv6 返回 200、IPv4 返回 302 或 403”这类分叉。

从外部探测入手

用支持指定协议族的工具分别访问域名,比较响应头、跳转链与最终落地 URL。只看其中一种协议的结果,很容易得出“站点一切正常”的错误结论。

三类高频不一致

1. DNS 记录不完整

域名只解析出 A 记录,或 AAAA 记录只覆盖部分线路。部分地区解析失败后,蜘蛛会退回 IPv4,但重试过程会消耗时间,表现为回访间隔被拉长。

2. 防火墙与安全组只放行 IPv4

这是最常见的情况。安全策略按 IPv4 网段配置,IPv6 请求直接撞在端口上超时。日志里看不到 403,因为请求根本没到达应用层,只在网络层被丢弃。

3. CDN 与回源的协议处理差异

边缘节点对两种协议的回源策略、缓存键、压缩策略可能不同。结果是同一个 URL 在两条链路上返回不同内容,抓取到的页面版本出现不一致。

一份可执行的核对顺序

  1. 确认域名解析是否同时存在 A 与 AAAA,并检查各线路的解析结果是否一致。
  2. 用指定协议族的请求工具分别访问首页与一个深层页面,比较状态码、跳转链、响应头。
  3. 检查服务器防火墙、云安全组、WAF 是否对 IPv6 放行。
  4. 核对 CDN 的 IPv6 开关与回源配置,确认缓存键与压缩策略一致。
  5. 对照抓取日志,确认两条链路的请求比例与状态码分布。
  6. 修正后持续观察一到两周的回访节奏,而不是当天就下结论。

修正后要观察什么

  • 两种协议族的请求占比是否趋于稳定,而不是单边增长。
  • 同一 URL 在不同链路上的状态码是否统一。
  • 抓取频次是否从集中突发变为更均匀的回访。
  • 栏目页与详情页的抓取比例是否回到合理区间。
双栈不是配好就完事的一次性工作,它更像是两条并行的路。任何一条路上有坑,蜘蛛走一次就不会再优先选它。

最后提醒一点:IPv6 相关的问题往往不会在报错里明说。它表现为抓取量的缓慢下滑、回访时间变长、部分 URL 迟迟不被访问。与其盯着总量,不如把两种协议族的日志分开看,差异通常就藏在里面。