学完这篇,你能判断 Whois 查询是被限流还是其他错误,并按「降频缓存 → 换 RDAP → 换数据源 → 走正式接口」的顺序把查询稳定跑起来。
第一步:先确认是不是被限流
先分清是网络问题还是配额问题,再决定怎么处理。执行一次查询,看返回内容:
whois example.com
如果返回结果里出现 Number of allowed queries exceeded、WHOIS LIMIT EXCEEDED、Your connection limit exceeded、Query rate limit exceeded 这类字样,或者干脆连接超时、被拒绝,就是触发了对方注册局/注册商的频率限制。具体文案因注册局而异,但特征很明显:同样的域名,隔几分钟再查就正常了。
注意:别把「域名未注册」当成限流。未注册域名会返回明确的 No match / NOT FOUND,在多数 whois 客户端里退出码为 0 或 1,不带任何 rate limit 字样。搞混了会白折腾半天。
第二步:降并发、加延迟、做本地缓存
多数限流是请求发送得太快造成的。做完这一步,单机串行查询基本不会再触发频率限制。做法三条:
- 串行:批量查询时不要开多线程/多进程,一次只发一个请求。
- 加延迟:每条查询之间
sleep 2~sleep 5(秒),具体间隔看对方提示,没有提示就从 5 秒起步。
- 本地缓存:域名注册信息不会秒变,把结果按域名存到本地文件或数据库,设 24 小时 TTL,重复查询直接读缓存。
简单脚本示例:
while read d; do
[ -f "cache/$d.txt" ] || { whois "$d" > "cache/$d.txt"; sleep 5; }
done < domains.txt
注意:反向遍历(从 IP 查域名、从注册人查域名)比正向查询更容易被限,很多注册局的 whois 干脆关闭了模糊匹配。批量做这类查询前先小样本试探。
第三步:改用 RDAP 协议
RDAP 是基于 HTTPS 的 whois 替代协议,返回 JSON,并且支持标准 HTTP 状态码,被限流时能明确收到 429 Too Many Requests,还能从 Retry-After 头知道等多久。这一步做完,你就能用程序精确处理限流,而不是靠猜。
以 .com 为例:
curl -s -i https://rdap.verisign.com/com/v1/domain/example.com
常用入口规律是 https://rdap.<注册局域名>/<后缀>/v1/domain/<域名>,比如 .org 走 https://rdap.publicinterestregistry.org/rdap/domain/example.com。不确定某个后缀的 RDAP 地址,可查 IANA 的引导文件:
https://data.iana.org/rdap/dns.json
代码里这样处理限流:
r = requests.get(url, timeout=10)
if r.status_code == 429:
time.sleep(int(r.headers.get("Retry-After", 60)))
retry()
第四步:换数据源交叉验证
单一数据源被限时,换一条路走。这一步的目的是拿到结果而不是死磕一个接口。可选的来源:
- 注册商官网查询页:如 Namecheap、GoDaddy 的域名查询框,人工核对几条时最快。
- 注册局官方 whois:直接连注册局(如 Verisign 的
whois.verisign-grs.com)而不是第三方聚合站,配额通常更宽松。
- 第三方 API:WhoisXML API、ip138、站长工具类接口,按量计费,额度明确,适合批量场景。
注意:换数据源是为了规避单点限流,不是让你用代理 IP 池去刷对方接口。绕过速率限制属于违反服务条款,可能被封 IP 段甚至封账号,批量抓取前务必读一遍对方的 ToS 和 robots 协议。
第五步:申请正式接口或商用通道
如果你的业务长期依赖批量查询,最省事的办法是走正式渠道:注册局和主流数据服务商都提供带 API Key 的付费接口,有明确的 QPS 额度和 SLA,被限流时能拿到技术支持。这一步做完,限流问题就从「运维救火」变成「容量规划」。
小结
- 先看返回文案,区分「限流」和「域名不存在」;
- 批量查询必须串行 + 加延迟 + 本地缓存 24 小时;
- 优先用 RDAP,它能返回 429 状态码和
Retry-After,限流可编程处理;
- 被限时换注册商、注册局或第三方 API 交叉验证;
- 长期批量需求直接买带 Key 的正式接口,不要用代理池硬刷。
免责声明:本文所述命令与接口地址以各注册局官方文档为准,服务商可能随时调整限流策略与接口路径,生产环境使用前请自行验证并遵守对应服务条款。