很多人调蜘蛛池,注意力集中在入口页本身:内容、链接、响应头。但蜘蛛要看到这个页面,得先完成一步非常基础的动作——把域名解析成 IP。DNS 这一跳出问题,页面做得再好也不会被访问到,日志里往往只表现为某段时间完全没动静。
解析是抓取链路的起点
一次完整的抓取大致是:解析域名、建立 TCP 连接、发送 HTTP 请求、返回内容。DNS 排在最前面,也是最容易被忽略的环节。蜘蛛的解析器有自己的缓存,缓存时长由你设置的 TTL 决定,所以解析变更的效果不是立刻生效的。
TTL 设多长更合适
TTL 决定解析记录在各家递归服务器上缓存多久。设得太长,换 IP 后旧地址还会被继续使用一段时间;设得太短,解析请求次数上升,链路抖动更容易被放大。
- 常规运营期:600 到 3600 秒是相对稳的区间,兼顾切换速度与查询压力。
- 计划更换服务器前:提前一天把 TTL 降到 300 秒左右,等旧缓存自然过期后再切。
- 切换完成后:观察一到两天,确认访问正常,再把 TTL 调回常规值。
泛解析方便,但要清楚代价
泛解析能让任意子域名都指向同一个地址,批量建站时确实省事。问题在于,拼错的、被外部随机生成的子域名也会解析成功,并返回同一个入口页。这等于把一个有限的抓取面变成没有边界的抓取面,日志里会出现大量你并不认识的子域名访问。
更稳妥的做法是:只解析实际使用的子域名,把泛解析留给确实需要动态生成子域名的场景,同时不要在入口页上互相链接这些随机子域名。
CNAME 与 CDN 的注意事项
接入 CDN 后,域名通常 CNAME 到服务商地址。这里有两个细节值得留意:
- 解析层级不要太长。多级 CNAME 会拉长解析时间,部分解析器对过长的链处理并不积极。
- 确认回源正常。节点能返回页面,不代表回源畅通;回源异常时节点可能返回错误页,而蜘蛛看到的就是这个错误页。
解析异常常见的几种表现
- 返回 NXDOMAIN:域名或子域名记录不存在,通常是配置漏了或刚删除。
- 返回 SERVFAIL:解析链路上某个环节出错,常见于权威服务器不可达。
- 只返回 AAAA 记录:服务器没有 IPv6 支持,连接直接被拒绝。
- 解析到已下线节点的旧 IP:切换后没有清理残留记录。
- 按地域解析到错误节点:地理定位配置与实际线路不符。
多 IP 解析与轮询
一个域名配置多个 A 记录时,蜘蛛可能命中其中任意一个。这意味着每一个 IP 都必须能正常响应,否则表现为有时能抓、有时抓不到,很难定位。轮询解析并不是可靠的负载均衡,也不能保证蜘蛛一定落到你希望的那台机器上。
如果抓取量忽高忽低又没有明显规律,先别急着改页面,用几个公共解析服务分别查一遍域名,看看返回结果是否一致。
一份简单的检查清单
- 确认线上实际使用的主机名,逐个查询解析结果。
- 对比不同地区、不同解析服务商返回的 IP 是否一致。
- 确认每个返回的 IP 都能正常响应入口页请求。
- 变更前降 TTL,变更后保留旧 IP 一段时间再回收。
- 把解析变更记录在案,出问题时能快速对照时间线。
DNS 本身不复杂,但它是所有访问行为的前置条件。把它当成运维的常规项,而不是临时救火项,入口页的稳定性会好很多。