⭐ 推荐:社区规则条款 V1.0

Whois和RDAP查询有什么区别,日常该用哪个?

四大皆空
四大皆空 正式会员萌新站长
发布于 2026-10-26 09:56 ·1 浏览 ·0 回复
内容摘要

Whois 是 TCP 43 的纯文本旧协议,RDAP 是 HTTPS 返回结构化 JSON 的标准化替代;日常查域名优先用 RDAP,便于解析和自动发现,仅支持 Whois 或需对照旧数据时回退,两者隐私保护一致。

学完这篇你能分清 Whois 和 RDAP 的本质区别,并知道日常查域名信息时该先用哪个、什么时候必须回退到另一个。下面按操作步骤走一遍,命令可以直接复制。

第一步:先弄清两者的根本差异

这一步要搞明白「为什么会有 RDAP」,后面选工具才不迷糊。一句话概括:Whois 是 1980 年代的纯文本协议,走 TCP 43 端口,返回一段人看的自由文本;RDAP 是它的现代替代品,走 HTTPS,返回结构化 JSON。

对比项WhoisRDAP
传输方式TCP 43 端口,明文HTTPS(443),可走 CDN
返回格式自由文本,各家字段名不统一JSON,字段名标准化
国际化域名常出现乱码原生支持 IDN
自动发现服务器靠 whois 客户端内置的服务器列表IANA Bootstrap 自动引导
速率限制提示只有一句文本警告标准 HTTP 429 + Retry-After 头

注意:两者在隐私保护上是一致的。受 GDPR 等法规影响,注册人姓名、邮箱、电话在绝大多数通用顶级域名下都已被隐藏,换成 RDAP 也不会把邮箱变出来,别抱这个期待。

第二步:用 RDAP 查一个域名

这一步要拿到结构化的域名数据,做完你能直接用脚本解析。RDAP 有标准 URL 形态,域名查询走 /domain/{域名}。

最省事的是用 IANA 官方引导,先查该后缀的 RDAP 服务器地址:

curl -s https://data.iana.org/rdap/dns.json | jq -r '.services[] | select(.[0][] == "com") | .[1][]'

拿到服务器地址后直接查:

curl -s https://rdap.verisign.com/com/v1/domain/example.com | jq '.'

如果想跳过手动找服务器,可以用社区重定向服务(第三方,非官方):

curl -sL https://rdap.org/domain/example.com | jq '{name: .ldhName, status: .status, events: .events, registrar: [.entities[]? | select(.roles[]? == "registrar") | .vcardArray[1][]? | select(.[0] == "fn") | .[3]]}'

重点看三块:events 里的 registration 和 expiration(注册与到期时间)、status(域名状态码,如 clientTransferProhibited)、entities 里 roles 为 registrar 的条目(注册商)。

第三步:用 Whois 查同一个域名做对照

这一步要拿到同一域名的文本结果,方便和老资料、老脚本对齐。

whois example.com

指定服务器查询:

whois -h whois.verisign-grs.com example.com

在 CentOS / Debian 最小化安装里 whois 命令默认没装,需要 yum install whois 或 apt install whois。

注意:Whois 的字段名各家不统一,同一个「注册商」可能叫 Registrar、Sponsoring Registrar 或 registrar:,写正则解析时一定要做多套匹配,否则换一个后缀就崩。另外 43 端口在部分云主机出方向被拦,命令会一直卡住直到超时,可以用 timeout 10 whois example.com 先探一下。

第四步:判断日常该用哪个

这一步给出选择标准,做完你不用再纠结。

优先用 RDAP 的场景:批量查询、写进程序做监控、需要稳定解析字段、需要判断域名是否临近到期并自动告警。JSON 结构固定,jq 一条命令就能取值,比正则抠文本可靠得多。

必须回退 Whois 的场景:部分国家和地区顶级域名(ccTLD)至今没有部署 RDAP,用 RDAP 查会直接 404 或找不到引导记录;一些老域名、特殊后缀也只有 43 端口服务。所以工程上的稳妥写法是「RDAP 优先,失败或返回无数据时降级到 Whois」。

人工看一眼的场景:两者都行。RDAP 的 JSON 用 jq 格式化后比 Whois 更清爽,但如果你只是想知道「这域名什么时候到期」,whois 敲一下最快。

注意:RDAP 是有速率限制的,触发后返回 HTTP 429,务必读 Retry-After 头再重试,不要写死固定间隔硬刷。Whois 侧被限流时通常表现为返回一段「query rate exceeded」文本而不是报错码,脚本里要显式判断这段文本,否则会把限流信息当成查询结果存进数据库。

小结

Whois 是 43 端口的纯文本老协议,字段随注册局变化;RDAP 是 HTTPS + JSON 的标准化替代,字段统一、支持 IDN 和自动引导。批量与自动化场景以 RDAP 为主、Whois 兜底;ccTLD 和老后缀先确认有没有 RDAP 服务再决定。写解析代码时一定要处理 RDAP 的 429 重试和 Whois 的限流文本,并且清楚两者都拿不到被隐私保护的联系人信息。

免责声明:本文命令与字段说明基于通用协议规范整理,各注册局、注册商的实际返回内容与限流策略可能随时调整,请以官方查询结果为准;请遵守目标服务的使用条款,勿高频抓取。

本文转载自 GJ站长论坛,原文地址:https://www.gj0.com/thread-2575.html
转载请注明出处,版权归原作者所有。
—/ 5暂无评分
还没有评分,来打第一分吧

全部回复 0

还没有回复,来抢沙发~