很多站点在更換 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 鏈路上是否都支持双栈。
二、分別用两個协议栈訪問
- 用 curl -4 與 curl -6 分別請求首頁、栏目頁和一篇内容頁
- 對比狀態碼、响應头、TTFB 與返回正文長度
- 检查是否出現證书告警、连接重置或超时
- 確認最终落地 URL 是否一致
三、看日誌與回源
在服務器訪問日誌或 CDN 日誌中按协议族拆分統計,观察 IPv6 請求的占比與错誤率。重点看 5xx、超时與 403 是否集中在某一個协议栈。如果 IPv6 流量占比极低但错誤率很高,說明這條路径基本不可用,需要優先修复。
四、防火墙與安全策略
防火墙、WAF、限流規則往往按 IPv4 網段配置,新增 IPv6 後容易漏放。核對监听地址是否為 :: 或 0.0.0.0,同时確認安全组、白名單與限流阈值對两個协议栈都生效。
長期维護要点
- 双栈上线前先在測試域名驗證完整抓取路径
- 變更 DNS 记錄时保持合理 TTL,避免解析切換期的抖動
- 把协议族纳入日常抓取监控指标,而不是只看總成功率
- 若暂时無法维護 IPv6 鏈路,宁可先不發布 AAAA 记錄
入口可達性是抓取的前提。任何一條解析路径不可用,都會让部分抓取直接消失,而這類問题往往不會在頁面层面留下明顯痕迹。
把 IPv4 與 IPv6 当成两條獨立的抓取鏈路分別核對,比只检查“網站能不能打開”更接近問题的真實位置。