搜尋抓取

搜尋蜘蛛抓取:IPv4 與 IPv6 双栈下入口可達性與回源路径核對

双栈接入後,蜘蛛可能经由 IPv4 或 IPv6 訪問同一頁面。解析策略、节点配置、防火墙與回源規則的差异,會让部分抓取直接失敗却不易察觉。本文按解析记錄、分协议栈訪問、日誌拆分、安全策略四個步骤,說明如何核對两條鏈路的可達性與返回一致性。

搜尋抓取

搜尋蜘蛛抓取:IPv4 與 IPv6 双栈下入口可達性與回源路径核對

很多站点在更換 CDN 或升級机房时,會同时開啟 IPv4 與 IPv6 双栈接入。對普通用戶来说,這只是“能不能打開”的差別;但對搜尋蜘蛛来说,双栈意味着它可能從不同协议栈、不同解析结果、甚至不同回源节点訪問你的頁面。一旦两條鏈路的可達性、返回内容或狀態碼不一致,抓取就會呈現出“看起来正常、實际断断續續”的狀態。

双栈為什么會带出抓取問题

蜘蛛在發起抓取前先做 DNS 解析。若域名同时存在 A 和 AAAA 记錄,爬虫的解析策略、所在網絡环境、是否優先 IPv6,都會影响它最终连到哪一個地址。如果 AAAA 指向的节点没有正确配置监听、證书、防火墙放行或回源規則,就會出現部分抓取直接失敗,而你在浏览器里用 IPv4 訪問却一切正常的错觉。

常见的几種不一致表現

  • 抓取日誌里同一 URL 时而 200、时而连接超时或 502
  • CDN 或 WAF 只對 IPv4 段做了白名單,IPv6 請求被拦截
  • 證书鏈或回源配置未覆盖 IPv6 节点,握手阶段就中断
  • 双栈节点缓存策略不同,返回的 HTML 版本不一致
  • 站内重定向把 IPv6 請求跳到只监听 IPv4 的域名

核對顺序建议

一、先把解析结果摆出来

用 dig 或 nslookup 分別查 A 與 AAAA,记錄 TTL 與返回地址,確認 AAAA 不是遗留的測試地址或已下线机房。若使用 CDN,留意其調度域名與 CNAME 鏈路上是否都支持双栈。

二、分別用两個协议栈訪問

  1. 用 curl -4 與 curl -6 分別請求首頁、栏目頁和一篇内容頁
  2. 對比狀態碼、响應头、TTFB 與返回正文長度
  3. 检查是否出現證书告警、连接重置或超时
  4. 確認最终落地 URL 是否一致

三、看日誌與回源

在服務器訪問日誌或 CDN 日誌中按协议族拆分統計,观察 IPv6 請求的占比與错誤率。重点看 5xx、超时與 403 是否集中在某一個协议栈。如果 IPv6 流量占比极低但错誤率很高,說明這條路径基本不可用,需要優先修复。

四、防火墙與安全策略

防火墙、WAF、限流規則往往按 IPv4 網段配置,新增 IPv6 後容易漏放。核對监听地址是否為 :: 或 0.0.0.0,同时確認安全组、白名單與限流阈值對两個协议栈都生效。

長期维護要点

  • 双栈上线前先在測試域名驗證完整抓取路径
  • 變更 DNS 记錄时保持合理 TTL,避免解析切換期的抖動
  • 把协议族纳入日常抓取监控指标,而不是只看總成功率
  • 若暂时無法维護 IPv6 鏈路,宁可先不發布 AAAA 记錄
入口可達性是抓取的前提。任何一條解析路径不可用,都會让部分抓取直接消失,而這類問题往往不會在頁面层面留下明顯痕迹。

把 IPv4 與 IPv6 当成两條獨立的抓取鏈路分別核對,比只检查“網站能不能打開”更接近問题的真實位置。