蜘蛛池知识

蜘蛛池入口页的 DNS 解析与 TTL:解析抖动如何让蜘蛛空手而归

蜘蛛抓取入口页之前先要完成域名解析,这一步发生在站外,日志里看不到。本文梳理解析失败的常见表现、TTL 长短的取舍、多 A 记录与线路解析的隐患、AAAA 记录的坑,以及接入蜘蛛池前值得跑一遍的检查清单。

蜘蛛池知识

蜘蛛池入口页的 DNS 解析与 TTL:解析抖动如何让蜘蛛空手而归

搜索引擎蜘蛛抓取一个 URL 之前,第一步是向 DNS 查询域名对应的 IP。这一步发生在你的服务器之外,既不会出现在访问日志里,也不受 robots.txt 控制。很多蜘蛛池入口页的「抓取异常」,追到最后其实是解析层的问题。

为什么解析问题最难被发现

服务器日志只记录已经到达的请求。如果蜘蛛在解析阶段就失败了,它根本连不上你的机器,日志里自然一片空白。典型表现是:前几天还稳定的抓取量突然归零,而服务器负载、页面状态看起来一切正常。

常见的几类原因包括:

  • 域名到期、欠费或实名信息失效导致解析被暂停;
  • NS 服务器不可达,或解析服务商侧出现故障;
  • 多台权威 DNS 记录不一致,不同地区查询结果不同;
  • 云防火墙或安全组把 DNS 相关端口拦掉。

还有一种情况更隐蔽:解析本身正常,但返回的 IP 指向了一台已经停服的机器,或者指向了默认站点、错误页。蜘蛛能连上,拿到的却不是你想要的内容。

TTL 设多少,取决于你改不改

TTL 决定各地递归 DNS 缓存这条记录多久。设得长,解析稳定、查询压力小,但你要换 IP 时,全网生效要等很久;设得短,切换快,但查询次数变多,极端情况下反而更容易受解析波动影响。

另一个容易踩的细节是单位。多数解析商控制台用秒,也有用分钟甚至小时的,改之前看清单位,避免本想设 10 分钟结果设成了 10 小时。

一个比较稳妥的做法:日常把 TTL 控制在 300~600 秒,需要迁移前 24~48 小时先降到你能接受的最短值,切换完成并观察稳定后再调回去。

多 A 记录与线路解析

给同一个域名配多条 A 记录,本意是做冗余,但如果其中一台机器已经下线或端口不通,蜘蛛有概率被分到坏的那台。普通轮询解析不会自动跳过故障节点,除非你用的是带健康检查的解析服务。

线路解析在国内站点很常见,按运营商或地域返回不同 IP。需要注意的是,爬虫的出口 IP 段未必和你预期的用户分布一致,如果你只优化了某几条线路,抓取节点拿到的可能是最差的那台机器。

AAAA 记录容易被忽略

如果域名配了 IPv6 的 AAAA 记录,而服务器或 CDN 并没有正确监听 IPv6,蜘蛛尝试走 IPv6 时会连接超时,再决定是否回退到 IPv4。回退策略各家爬虫并不一致,有的会直接放弃这次抓取。没有 IPv6 服务能力,就别留 AAAA 记录。

接入前的解析检查清单

  1. 用 dig 或 nslookup 从多个公共 DNS 分别查询,确认返回结果一致;
  2. 确认域名有效期、实名状态与解析套餐都正常,没有临近到期;
  3. 逐台验证每条 A 记录对应的 IP 都能返回正确内容,而不是默认站点或错误页;
  4. 留意解析服务商的免费版限速或查询配额,入口页多、请求量大的站点尤其要确认;
  5. 迁移或调整后至少观察 48 小时,把搜索后台的抓取数据和访问日志对照看。

小结

DNS 是蜘蛛池入口页最底层的一环,平时安静,出问题时往往也最彻底。把解析稳定性纳入日常巡检——域名到期时间、TTL 设置、多 A 记录的健康状况、AAAA 记录是否必要——比事后翻日志找原因省事得多。