V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
szq8014
V2EX  ›  程序员

cn 域名有效期无法自动化查询,各位大佬有解决方案吗

  •  
  •   szq8014 · 8 天前 · 1128 次点击

    最近在做一个运维质量提升的小项目,想分享一下,也想请教下有没有更好的解决方案。

    公司内部给客户部署的系统里,大概有二十来个项目是使用客户自己的域名现在计划做一个自动化脚本,定期检测这些域名的有效期,提前预警。

    目前踩了一圈坑,发现域名到期检测其实没想象中那么简单:

    对于非 .cn 域名用一些开放的 RDAP 接口(例如 https://client.rdap.org/)可以直接查到域名的基础信息,包括到期时间,整体比较顺畅,没啥问题。

    但 .cn 域名有点麻烦了,国内这块几乎没有可直接调用的公开接口。 官方的查询( https://www.cnnic.com.cn/)必须要验证码,人机校验还不能跳过……脚本跑不起来,只能考虑接一个验证码识别服务。

    目前卡在 .cn 域名的有效期获取上,不知道大家有没有遇到类似需求? 有没有大佬知道有没有更优雅或者更稳定的解决办法?

    9 条回复    2025-11-15 09:45:59 +08:00
    python35
        1
    python35  
       8 天前   ❤️ 1
    看了下 https://www.cnnic.cn/ 这个页面 只要不刷新验证码 可以用一个验证码一直查不同的域名 再加上是 4 位数的图片验证吗 找人标个 200 张 写个多层 conv 识别就行
    Bisn
        2
    Bisn  
       8 天前   ❤️ 1
    https://github.com/dromara/domain-admin 这个开源项目可以看到域名到期时间
    dandankele
        3
    dandankele  
       8 天前   ❤️ 1
    用 whois 命令查也行吧,不知道限不限制频率,而且你的客户也不多,查询间隔时间长一点,然后存储起来就行

    root@localhost:~# whois nmc.cn
    Domain Name: nmc.cn
    ROID: 20030310s10001s00013947-cn
    Domain Status: ok
    Registrant: 国家气象中心(中央气象台)
    Registrant Contact Email: [email protected]
    Sponsoring Registrar: 北京国科云计算技术有限公司(原北京中科三方网络技术有限公司)
    Name Server: ns1.sfn.cn
    Name Server: ns2.sfn.cn
    Registration Time: 2003-03-10 19:14:55
    Expiration Time: 2026-12-08 13:45:51
    DNSSEC: unsigned
    Curtion
        4
    Curtion  
       8 天前
    直接用 whois 吧,我记得很多开源项目都是支持 cn 域名到期时间查询的
    szq8014
        5
    szq8014  
    OP
       8 天前
    @Bisn 感谢,里面能看到处理域名查询的代码,学习学习
    skiy
        6
    skiy  
       8 天前 via iPhone
    cnnic 官网有近三天过期删除的接口。whois 不准确的,因为有 75 天待删除期。
    huangsen365
        7
    huangsen365  
       8 天前   ❤️ 1
    whois 能查但不够准,尤其是 .cn ,同步延迟 + 赎回期都会影响结果,所以 whois 只能作为辅助参考之一。
    更稳的方案还是优先调用注册商自己的 API 拿官方 JSON ,把结果存库,再结合 whois 做交叉校验。

    如果必须用 whois ,那就多准备几个查询节点(不同地区/网络)轮询,避免限流,也能拿到更完整的数据。

    简单说:能走 API 就走 API ,whois 只是参考,不适合作为唯一数据源。
    huangsen365
        8
    huangsen365  
       8 天前
    比如假设:域名是阿里云注册的,就直接调阿里云的接口:
    https://api.aliyun.com/document/Domain/2018-01-29/QueryDomainByDomainName

    我自己已经在用,准确又稳定。
    vovov
        9
    vovov  
       8 天前 via iPhone
    换个思路,调用注册接口
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   2469 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 06:13 · PVG 14:13 · LAX 22:13 · JFK 01:13
    ♥ Do have faith in what you're doing.