WHOIS 已死,我为其替代品构建了一个 API
Source: Dev.to
背景
我在构建一个需要域名注册信息的副项目。最初我使用 WHOIS,但每个注册商的输出都不同,没有统一格式,我的解析代码经常出错。
WHOSQL 的问题
- WHOIS 已被弃用。
- ICANN 正在推广 RDAP(注册数据访问协议)作为替代方案。
- RDAP 返回 JSON 并通过 HTTPS 工作,大多数注册局已经切换。
RDAP 概述
RDAP 为域名、IP 和 ASN 数据提供了标准化的 JSON 接口。然而,直接使用 RDAP 仍然比较繁琐:
-
没有统一的服务器 – 每个顶级域都有自己的 RDAP 服务器。必须查询 IANA 引导注册表来确定要查询的服务器。
-
域名查询需要两步 – 对于
.com和.net,注册局只存储基本数据。注册商(例如 GoDaddy、Cloudflare)在另一个服务器上保存其余信息,需要两次请求并合并结果。 -
vCardArray 格式 – 联系信息存放在嵌套的 vCard 结构中,例如:
["vcard", [ ["version", {}, "text", "4.0"], ["fn", {}, "text", "MarkMonitor Inc."], ["tel", {"type": "voice"}, "uri", "tel:+1.2086851750"], ["email", {}, "text", "abusecomplaints@markmonitor.com"] ]]
在大约 1,200 台不同服务器上解析这些数据极易出错。
我的解决方案:RDAP API
我构建了一个统一的 RDAP API,抽象掉这些复杂性。它提供单一端点,返回每个顶级域都一致的 JSON:
{
"domain": "google.com",
"registrar": { "name": "MarkMonitor Inc.", "iana_id": "292" },
"dates": {
"registered": "1997-09-15T04:00:00Z",
"expires": "2028-09-14T04:00:00Z"
},
"nameservers": ["ns1.google.com", "ns2.google.com"]
}
特性
- 引导处理 – 自动解析任意顶级域对应的 RDAP 服务器。
- 注册商跟进 – 将注册局和注册商的数据合并为单一响应。
- vCardArray 解析 – 将联系信息转换为易于使用的字段。
- 速率限制管理 – 内置限流,保持在 RDAP 限额范围内。
- 支持 IP 与 ASN 查询。
- 批量查询 – 每次请求最多可查询 10 条记录。
- 免费查询工具 位于首页(无需账号),支持域名、IP 和 ASN。
SDK
我为多种语言发布了客户端库。下面是 Python 示例:
from rdapapi import RdapApi
client = RdapApi("YOUR_API_KEY")
result = client.domains.lookup("google.com", follow=True)
print(result.registrar.name) # MarkMonitor Inc.
定价与文档
- 该 API 以 SaaS 形式提供,起价 $9 / month,并提供免费试用。
- 完整文档可在站点上查看(链接:Docs here)。
社区提问
还有人在生产环境中使用端口 43 WHOIS 吗?你们是如何处理各注册商格式不统一的问题?