理论上能查询 1000+ 域名后缀的小工具: https://dmcheck.app
功能很简单——输入一个关键词,同时查询多个后缀的域名注册状态。查询时预配置了 83 个 TLD 的 WHOIS 服务器直连,再加上 RDAP 协议兜底,理论上能覆盖 1000+ 后缀。结果通过 SSE 逐条推送,不用等全部查完。
一直查域名都是用的 query.domains 这个网站,交互非常棒,只是人机验证有点多,所以想着自己练手复刻一个。
看起来很简洁,但做起来才发现细节非常多。
WHOIS 没有统一标准。
每个注册局返回的格式都不一样,比如日期可能是 2025-03-15、15/03/2025、March 15, 2025。字段名也不统一,有的叫 Creation Date,有的叫 created,有的叫 Registration Time,需要做大量兼容处理。
限流问题比想象中更隐蔽。
并发查询十几个后缀时,如果对同一个 WHOIS 服务器连续发请求,对方往往不会报错,而是直接返回空响应,这一点非常难排查。
最后做了三层防护:同一个 WHOIS 服务器串行请求、空响应自动重试,以及 RDAP 单独限制并发数量。
缓存策略需要分情况设计。
未注册的域名缓存时间要短,因为随时可能被注册;已注册的可以长缓存;查询失败的 unknown 状态干脆不缓存。
另外,详情面板不复用缓存——因为详情需要完整数据,所以每次都会重新查询。
“没有被注册”不一定真的可注册。
有些域名其实是注册局保留的,需要从 WHOIS 返回中额外解析出 reserved 状态,并和 available、registered 做区分。
交互其实也反复调了好几轮。
比如:结果列表的状态区分、最近注册域名用相对时间展示、输入完整域名时自动追加后缀……这些单独看都不难,但组合在一起就比较花时间。
最后看起来还是挺像 query.domains ,但整个过程确实学到了不少东西。
为了在小内存 VPS 上运行,选择了 Go:
scp + systemctl restartRedis 缓存是可选的,没有 Redis 也可以正常运行。
这是一个看起来很简单,但实际充满细节的小项目。
一个查询页面背后,要处理的边界情况比想象中多得多。不过整个过程还是挺好玩的,也很有成就感。
GitHub 开源: https://github.com/PlayerYK/dmcheck
在线体验: https://dmcheck.app
AGPL-3.0 协议,欢迎提 issue 和 PR 。
1
shortawn 2 天前
|
2
sohu022 2 天前
用 vercel domains, 一键查询 550+个域名, 也没有人机验证, 很好用。https://vercel.com/domains
|
3
BeCool PRO 之前给 https://query.domains 加 turnstile 验证是不得已为之,爬虫请求太频繁了,影响了正常用户的使用。后面会优化下,比如登录用户一周只需要验证一次。
|