V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
kamal
V2EX  ›  分享创造

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

  •  
  •   kamal ·
    PlayerYK · 2 天前 · 613 次点击

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

    理论上能查询 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:

    • 编译成单个二进制文件
    • 没有使用框架,也没有构建工具
    • 部署方式很简单:scp + systemctl restart
    • GitHub Actions 推到 publish 分支自动完成发布

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


    最后

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

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


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

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

    4 条回复    2026-04-10 11:53:46 +08:00
    shortawn
        1
    shortawn  
       2 天前
    sohu022
        2
    sohu022  
       2 天前
    用 vercel domains, 一键查询 550+个域名, 也没有人机验证, 很好用。https://vercel.com/domains
    BeCool
        3
    BeCool  
    PRO
       2 天前   ❤️ 1
    之前给 https://query.domains 加 turnstile 验证是不得已为之,爬虫请求太频繁了,影响了正常用户的使用。后面会优化下,比如登录用户一周只需要验证一次。
    kamal
        4
    kamal  
    OP
       2 天前
    @BeCool #3 感谢做出这么好用的工具,实际做才能体会到简洁的界面后面做了多少取舍,多少优化。要是能登录后减少验证,仍然是我首选工具。
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   1077 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 18:35 · PVG 02:35 · LAX 11:35 · JFK 14:35
    ♥ Do have faith in what you're doing.