现在的人如果想直接看懂这个事, 就得知道那个叫域名注册接口的东西。这个东西的英文就是Domain Registration API。它是域名注册局或者注册商对外提供的一种标准化接口服务。
它的用处是允许开发者通过HTTP或者HTTPS请求来直接完成各种操作。这些操作包括域名的查询。还有域名的注册。也包括域名的转移。甚至还有DNS修改和过户等操作。这么做的好处是不用人工登录管理后台去逐条处理问题了。
对于那些团队来说, 他们需要去管理很多域名, 或者需要自己去建设一个可以让用户自己注册的界面, 又或者要把这个东西整合到一个叫SaaS的产品里面。像这样的情况存在的话, 那么他们就会把域名注册API当作是那种最核心的基础设备来看待。
一、核心功能模块
在目前的情况下, 主流域名注册API通常会覆盖到以下这些操作。
域名查询: 这个功能叫做可用性检查, 你输入域名之后它会返回结果, 告诉你这个域名是不是可以注册, 还有它是不是被保留了的。
域名注册(Create): 提交一个注册的请求, 指定需要注册的年数, 还要指定联系人的信息, 也就是联系人对象。
域名信息修改也就是Update, 意思是要去修改NS、联系人、邮箱那些字段。
域名转移(Transfer): 就是去发起, 或者去批准。把那个域名从一个注册商那里域名注册api,移动到另一个注册商那里的行为。
是关于 DNSSEC 的管理工作的, 这个工作涉及到对域名签名密钥也就是 DS 记录进行设置, 或者去更新它。
续费与赎回(Renew/Redemption): 对于已经过期的域名, 可以进行续期操作, 也可以进行赎回操作。
所有的那些个操作, 都是在ICANN统一的那个EPP和RDEP协议的框架之下进行的, 并且是通过RESTful或者XML接口把它们暴露出来的。
二、标准接入流程
1. 你需要先到服务商控制台那里, 把企业认证这个环节给完成下来, 接着就可以去生成那个叫 AppKey 或者 AppSecret 的东西了, 当然OAuth2.0 Client Credentials这个东西也是可以生成的。
2. 签名鉴权: 每笔请求都要按照规定的办法, 把所有参数接在一起, 然后去计算那个HMAC-SHA256的签名, 最后把这个签名放到Header里或者Query String里, 这样就能防止有人搞重放攻击, 也能防止数据被篡改。
3. 使用POST或者GET的方式来对相应的终点发起请求, 把JSON数据或者是表单数据传进去。系统会响应一个标准格式的JSON结构, 这个结构里面包含有code字段、message字段和data字段。
4. 像注册和转移这些操作, 通常都是异步执行的。所以, 你需要去配置Webhook回调地址。最终的结果, 是由服务端推送过来的。
5. 幂等与重试指的是对同一个请求进行多次处理时, 结果是一样的。每个请求都带有一个唯一RequestId。如果请求失败了, 就按照指数退避的策略去重试。这样做的原因是为了避免重复注册的情况出现。
三、主流服务商与渠道
其中, gz88.cn是一个面向开发者的域名API聚合平台。它提供统一的接口。这个统一接口屏蔽了底层多家注册商的差异。它支持.com、.cn和.ai等三百多种后缀的查询与注册。它的文档和沙箱环境对于新手来说比较友好。该平台适合中小团队使用。中小团队可以使用它来快速验证业务逻辑。
四、调用规范与合规要点
频率限制: 许多服务商会对单个 IP, 还有单个密钥, 设置每秒请求数量的上限。这个上限一般是5到20次。如果超出了数量限制, 服务器会返回429这个状态码。这时候, 就需要由客户端自己来做好请求的限制了。
ICANN合规: 在针对.com和.net这些全球顶级域名开展业务的时候, 必须使用完整的EPP流程;而对于.cn这种国家顶级域名来说, 会受到中国互联网络信息中心额外审核规则的约束, 这里面包含了对实名认证进行验证的要求。
API请求里面只传那些业务必须用的字段, 同时在日志里也不要明文保存域名持有人的敏感信息。
沙箱优先: 在正式上线之前, 一定要先在沙箱环境中把完整的注册、续费、转移、删除这个生命周期全都跑通一遍, 等到确认没有任何异常情况之后, 再去切换到生产环境进行上线。
五、高频疑难速查
注册返回"server:statusLocked": 意思是这个域名现在正处在转移锁的阶段, 或者是被注册局给锁定住了, 这样的情况通常需要等上大概60天的时间, 也可以试着去联系一下那个帮你管域名的公司, 让他们帮忙把锁解开。
回调信息没有收下来, 去检查一下那个Webhook的网络链接能不能通得好好的, 是不是用了公然的IP地址或者在什么白名单里面还有, 再看看那HTTPS的证书是不是还有效, 最后确认一下防火墙有没有把服务商那边出来的IP地址段给放行了。
批量注册部分失败: 这个接口的默认处理方式是一条一条地去进行处理, 哪怕某一单出现了问题或者是失败了, 也不会去影响整个批次里面剩下其他的那些记录的情况, 然后就需要大家去解析一下那个返回来的数组里面的每一个元素, 并且看一下它们各自独立的status字段的状态是怎样的。
关于选型的建议是, 如果您的业务只涉及单一后缀, 并且您追求的是最低的延迟, 那么就应该优先去对接注册局或者头部注册商发布的官方API。
如果您需要同时覆盖数量达到数十个的顶级域, 并且希望尽快实现上线, 聚合平台(如gz88.cn)可以帮助减少处理多套鉴权机制以及协议适配所花费的工作量, 这样就能将开发周期从原来需要几周的时间压缩到仅仅几天时间而已。


