搜索抓取

蜘蛛抓取从 DNS 开始:解析、TLS 与连接层容易被忽略的细节

很多抓取问题并不出在页面本身,而是发生在 HTML 之前:域名解析慢、证书链不完整、连接频繁中断。这篇从 DNS、TLS 握手、连接复用和服务器稳定性入手,给出一个从下往上的排查顺序,帮你在日志一片空白时也能找到线索。

搜索抓取

蜘蛛抓取从 DNS 开始:解析、TLS 与连接层容易被忽略的细节

很多人查抓取问题,习惯从页面内容、状态码、内链看起,但蜘蛛真正遇到的第一道关,往往发生在 HTML 之前:域名解析、TCP 连接、TLS 握手。这几步出了问题,日志里可能只是一片空白,连一次访问记录都留不下。

DNS:抓取链路上最容易被忽略的第一跳

蜘蛛要抓 https://example.com/a,第一步是把域名解析成 IP。这一步的开销取决于解析服务商、TTL 和线路。如果解析响应长期在几百毫秒以上,或者偶尔超时,抓取就会表现为时快时慢、部分页面始终抓不到。

  • TTL 设置过短,解析被反复请求,容易受解析服务商抖动影响;TTL 过长,切换 IP 或迁移时生效太慢。
  • 多地解析到不同节点时,要确认每个节点都能正常响应蜘蛛请求,而不是只有主力线路可用。
  • 解析记录里存在失效 IP,或者 CNAME 链拉得太长,都会拖慢甚至中断连接。

排查时可以在服务器上直接 dig 域名,看返回的 IP 是否与预期一致、响应时间是否稳定。

TLS 与连接复用:握手失败等于页面不存在

HTTPS 站点建立连接时要完成 TLS 握手。证书链不完整、中间证书缺失、SNI 配置不对、只支持过老的协议版本,都可能让蜘蛛在握手阶段就断开。这类问题在自己浏览器里往往看不出来,因为浏览器会做缓存和补全,而蜘蛛基本每次都从零开始。

几个常见的坑

  • 证书链不完整:浏览器能自动补,蜘蛛不一定。
  • 证书域名与实际访问域名不匹配,比如 www 与裸域共用一张不覆盖两者的证书。
  • 只开 IPv6 或只开 IPv4,导致部分网络环境的蜘蛛连不上。
  • 强制跳转 HTTPS 但证书尚未生效,形成连接层面的循环。

用在线工具检查证书链,并确认 www、裸域、协议版本都能正常握手,比事后猜测更有用。

服务器稳定性:不是快,而是稳

抓取对服务器的要求不是峰值多快,而是响应是否可预期。同一批 URL,如果响应时间在 100ms 到 3 秒之间来回跳,蜘蛛通常会降低抓取频率,URL 的发现和回访都会跟着变慢。

  • 带宽与并发:蜘蛛的请求会集中在短时间内到达,限速策略要留出余量。
  • WAF 与防火墙:验证码、JS 挑战、按 UA 拦截,都会让蜘蛛拿不到内容,而且常常留下 403 而不是 5xx,容易被误判成权限问题。
  • 后端接口慢:页面本身不大,但首字节时间很长,实际效果和超时差不多。
先确认服务器“对谁都稳”,再谈蜘蛛为什么抓得少。站点监控看到的和蜘蛛看到的,往往是同一件事的两个视角。

一条可执行的排查顺序

  1. 从服务器直接请求几个关键 URL,记录解析耗时、连接耗时和首字节时间。
  2. 检查证书链、SNI 与协议版本,确认 www 和裸域都正常。
  3. 对同一 URL 连续请求多次,观察响应时间波动和错误出现的规律。
  4. 确认是否有 WAF、限流或地域规则命中蜘蛛。
  5. 把结果与访问日志对照,看蜘蛛请求是被正常记录,还是在连接层就被断开。

抓取问题从下往上看,常常比从上往下看更快定位:先保证域名能解析、连接能建立、服务器能稳定回应,再去谈 Sitemap、内链结构和内容质量。