分享新作的域名批量查询工具 dmcheck.app

3 天前
 kamal

做了个域名批量查询工具,聊聊过程

理论上能查询 1000+ 域名后缀的小工具: https://dmcheck.app

功能很简单——输入一个关键词,同时查询多个后缀的域名注册状态。查询时预配置了 83 个 TLD 的 WHOIS 服务器直连,再加上 RDAP 协议兜底,理论上能覆盖 1000+ 后缀。结果通过 SSE 逐条推送,不用等全部查完。

一直查域名都是用的 query.domains 这个网站,交互非常棒,只是人机验证有点多,所以想着自己练手复刻一个。

看起来很简洁,但做起来才发现细节非常多。


一些踩过的坑

WHOIS 没有统一标准。
每个注册局返回的格式都不一样,比如日期可能是 2025-03-1515/03/2025March 15, 2025。字段名也不统一,有的叫 Creation Date,有的叫 created,有的叫 Registration Time,需要做大量兼容处理。

限流问题比想象中更隐蔽。
并发查询十几个后缀时,如果对同一个 WHOIS 服务器连续发请求,对方往往不会报错,而是直接返回空响应,这一点非常难排查。

最后做了三层防护:同一个 WHOIS 服务器串行请求、空响应自动重试,以及 RDAP 单独限制并发数量。

缓存策略需要分情况设计。
未注册的域名缓存时间要短,因为随时可能被注册;已注册的可以长缓存;查询失败的 unknown 状态干脆不缓存。

另外,详情面板不复用缓存——因为详情需要完整数据,所以每次都会重新查询。

“没有被注册”不一定真的可注册。
有些域名其实是注册局保留的,需要从 WHOIS 返回中额外解析出 reserved 状态,并和 availableregistered 做区分。


关于交互

交互其实也反复调了好几轮。

比如:结果列表的状态区分、最近注册域名用相对时间展示、输入完整域名时自动追加后缀……这些单独看都不难,但组合在一起就比较花时间。

最后看起来还是挺像 query.domains ,但整个过程确实学到了不少东西。


技术选型

为了在小内存 VPS 上运行,选择了 Go:

Redis 缓存是可选的,没有 Redis 也可以正常运行。


最后

这是一个看起来很简单,但实际充满细节的小项目。

一个查询页面背后,要处理的边界情况比想象中多得多。不过整个过程还是挺好玩的,也很有成就感。


GitHub 开源: https://github.com/PlayerYK/dmcheck
在线体验: https://dmcheck.app

AGPL-3.0 协议,欢迎提 issue 和 PR 。

649 次点击
所在节点    分享创造
4 条回复
shortawn
3 天前
sohu022
3 天前
用 vercel domains, 一键查询 550+个域名, 也没有人机验证, 很好用。https://vercel.com/domains
BeCool
3 天前
之前给 https://query.domains 加 turnstile 验证是不得已为之,爬虫请求太频繁了,影响了正常用户的使用。后面会优化下,比如登录用户一周只需要验证一次。
kamal
3 天前
@BeCool #3 感谢做出这么好用的工具,实际做才能体会到简洁的界面后面做了多少取舍,多少优化。要是能登录后减少验证,仍然是我首选工具。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1204767

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX