自动域名的抢注脚本, 它的核心意思其实是这样的, 就是在域名到期被释放出来的时候, 或者是在新的域名开放给大众注册的那一个时间点,通过程序发出的请求, 去对注册商提供的接口或者是WHOIS的接口发起大量的注册指令, 这样的话, 人工的操作就只需要几毫秒的时间就可以完成, 从而可以在那个竞争特别高的域名的池子里面抢到注册的权力, 对于接下来的这部分内容来说, 我们是从这个脚本该怎么编写, 以及运行的环境需要什么样的条件, 再到最后在实战中进行部署的过程, 给出了一个可以从开始做到最后做成的完整的路径和办法。
脚本核心原理
这个域名抢注脚本它并不是说把那个系统给破解了, 它是基于注册商那里公开的API写出来的那些自动化请求的序列, 这些API就比如说是中央注册局的Registry API, 还有各个注册商的REST接口, 它的核心流程就是先监控一下目标域名的状态, 通过WHOISH查询来得到信息, 然后去判断释放或者开放的到底是什么时刻, 接着并发地去调用注册的接口, 最后处理接收到的那些响应并记录下结果。
因为同一个域名有很多人会在同一时间发出请求这种情况叫做竞态条件, 所以处理这个情况的脚本需要用一个队列来排队, 再加上当任务没完成时设置一个超时然后重新尝试的办法。
编写步骤
1. 确定技术栈: 主要选择是Python, 它要配合requests以及asyncio, 或者Node.js, 它要配合axios还有concurrent-rabbit, 这两个都是主流的选择, 这样能够支持高并发的处理需求, 并且能够保持比较高的开发效率。
2. 接口对接: 需要先登录注册商后台, 然后拿到API Key以及沙箱环境的地址。
如果以通过ICANN认证的注册商所提供的标准接口作为例子来说的话, 发起新的域名注册请求时, 必须包含像域名、注册人的个人资料, 还有DNS服务器的设置这类不可缺少的信息内容, 接着就要根据官方提供的技术文档说明, 把这些信息组合排列成一个格式正确的JSON Body数据包。
3. 状态监控: 每隔五秒钟, 就去查询一次目标域名的WHOIS状态, 看它是不是从已过期的那种状态, 变成了即将删除的状态, 然后又变成了被释放的状态, 这样做是为了减少那些没有意义的网络请求。
如果注册商那边支持Webhook回调的话, 也可以选择使用这种方式, 同样也能达到降低无效请求数量的效果。
4. 并发控制: 使用信号量来限制当前的并发请求数量, 通常单个账户保持不超过5到10个并发请求的状态, 以此来避免触发注册商的风控机制。在面对返回429或者503状态码的情况时, 需要采取指数退避的方式进行重试操作。
5. 结果记录就是把每次请求用到的域名加上当时返回的状态码, 还有那个表示时间的数字全都写进本地上用的sqlite这个数据库里, 然后方便以后再去筛选出成功的那些东西, 并且能够进行批量操作来管理它们。
运行与批量抢注实战
建议你在生产环境里, 把云服务器部署在目标注册商机房所在的同一个地域, 这样做是为了降低网络的延迟问题。你应该使用系统级别的定时任务, 比如cron或者systemd timer, 然后在释放窗口到来之前的30秒钟的时候启动相关的脚本。
在批量处理的场景之下, 先把目标域名的那一串列表弄进配置文件去。然后脚本会挨个挨条的去处理。针对单批次里面建议不要超过五十个域名这个数字。这样做主要是为了不去触那个账户级别的那种限流的情况出现。
抢注成功的这个动作完成后, 脚本要自动地把DNS解析的配置给完成掉, 具体一点说就是要把A记录, 还有CNAME这样的一些东西给添加上去。这么做的目的, 就是为了能够把从注册完成到后来正式上线之间的那个时间差给缩短下去。
合规与风险提示
根据国际域名与互联网号码分配机构的注册商协议规定, 还有各个国家的所谓统一域名争议解决政策的相关内容, 那些抱着恶意心态去抢注他人商标所属域名的行为, 很有可能会引来仲裁审查以及法律层面的追责追究。所以这个脚本的使用范围必须要严格限制在以下几种符合规定的场景之内才行, 具体情况如下所示。
去注册自己的品牌名作为保护性域名, 也就是做防御性地注册。
已经过了注册期限, 而且没有去办理续期手续的这种域名是被争议不了的, 同时这种域名也不是其他什么人商标里的注册商标。
当新顶级域也就是那一种新的通用顶级域名在开放进行注册的时候, 那个叫做合法抢注的一个东西就在那里存在着。
注册商拥有权利, 可以针对那些异常高频的请求情况实施封禁API Key的操作。因此, 脚本在开始设计的时候, 必须把请求间隔设置好。同时, 还需要包含日限额控制的功能。
参考资源
各个注册商所发布的API文档, 像是Verisign、Donuts以及CentralNic等等这些平台的文档, 都可以作为第一手的接口规范来源来进行查阅。
关于国内域名的操作细节与抢注策略的讨论内容, 大家可以去gz88.cn的技术专栏以及社区案例中参考查看, 该内容里面包含了针对.cn和.com.cn等中文域名后缀的释放时间规律, 同时也提供了相关的实测数据, 这些信息可以作为脚本参数进行调优时的参考依据。
这个脚本本身是没有所谓的万能版本的, 必须要根据你正在使用的注册商API、目标域名池的具体特征还有并发规模来逐一进行适配工作。我们建议你先在沙箱环境里面把完整的流程全部跑通, 然后再去切换到生产环境, 这样可以确保每一个环节出现的异常分支都能够有专门的逻辑来处理, 不会说让程序直接崩溃或者出错。


