检查域名是否可以注册的异步工具,基于 Python + asyncio,支持在 macOS 与 Ubuntu 上的高并发执行。核心通过异步 WHOIS 查询来判断域名的可注册性,内置分组调度与并发控制,方便批量检查大规模域名集合。
- 简单、可扩展的异步实现,便于在实际环境中接入更多数据源或 API。
- 支持大规模域名批量处理,具备分组执行与并发控制。
- 避免误判,遇到工具缺失或异常时返回安全的结果标记(如 None)。
- Python 版本:3.7 及以上
- 依赖安装(推荐在虚拟环境中执行):
- uvloop(可选,提升性能)
- 其他 Python 标准库在 Python 3.7 及以上版本中已包含
命令示例:
- 安装 uvloop(可选)
- 使用 pip 安装:
pip install uvloop
- 使用 pip 安装:
- 直接运行脚本(假设代码保存在
main.py,且数据文件在data/tocheck-10-13.md)python main.py
- 运行环境注意事项
- macOS 与 Ubuntu 上需安装 whois 工具,示例分别为
brew install whois或sudo apt-get install whois - 如果 whois 不可用,程序将返回 None,表示无法判断
- macOS 与 Ubuntu 上需安装 whois 工具,示例分别为
- 从 Markdown 文件中提取待分析域名
- 过滤并仅处理以 .com 结尾的域名
- 使用异步 WHOIS 查询判断域名可注册性
- 通过分组(默认每组 200 个)进行分段并发执行,避免资源过载
- 提供健壮的错误处理与超时保护
- 读取文件并分组执行(伪输出示例)
- 输出示例为字典列表,包含 domain、is_dotcom、available 字段
- 结果会按域名排序输出,便于阅读与后续处理
示例输出:
{"domain": "example.com", "is_dotcom": True, "available": True}
{"domain": "anotherexample.com", "is_dotcom": True, "available": False}
...
- uvloop(可选,但推荐)
- whois 工具(系统命令,macOS 使用 Homebrew、Ubuntu 可以 apt-get)
- Python 3.7+
- 分组大小(group_size)与最大并发数(max_concurrency)
- 组大小示例:200
- 并发限制示例:20
- 可以在
analyze_domains(...)调用处调整
- 证书校验
- 当前实现对 HTTPS 请求使用了无证书校验的策略,仅用于演示。生产环境应确保正确的证书校验。
- read_domains_from_md: 从 Markdown 文件提取域名
- is_dotcom_domain: 过滤 .com 域名
- check_registration_availability_whois_async: 异步执行 whois 查询并解析输出
- determine_availability: 领域级可用性入口
- analyze_domains: 分组执行、收集结果并排序输出
- main: 程序入口
- 手动测试:
- 将 data/tocheck-10-13.md 放置正确格式的域名列表
- 运行
python main.py,观察输出结果与日志
- 自动化测试(建议未来扩展):
- 编写单元测试覆盖域名解析、分组逻辑、超时与错误处理
- 使用模拟的 whois 输出进行回归测试
- 贡献指南:请在提交前创建 issue 讨论实现细节,提出改进点;遵循项目的代码风格和测试要求。
- 拉取请求模板(建议添加):
- 描述变更
- 影响的模块
- 测试用例与结果
- 回归测试计划
- 本项目遵循 MIT/Apache 等常见开源许可证,请在正式发布中明确许可证信息。