Thanks to visit codestin.com
Credit goes to github.com

Skip to content

XiaomingX/expired-domain-names-checker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

expired-domain-names-checker

检查域名是否可以注册的异步工具,基于 Python + asyncio,支持在 macOS 与 Ubuntu 上的高并发执行。核心通过异步 WHOIS 查询来判断域名的可注册性,内置分组调度与并发控制,方便批量检查大规模域名集合。

目标与设计原则

  • 简单、可扩展的异步实现,便于在实际环境中接入更多数据源或 API。
  • 支持大规模域名批量处理,具备分组执行与并发控制。
  • 避免误判,遇到工具缺失或异常时返回安全的结果标记(如 None)。

快速开始

安装

  • Python 版本:3.7 及以上
  • 依赖安装(推荐在虚拟环境中执行):
    • uvloop(可选,提升性能)
    • 其他 Python 标准库在 Python 3.7 及以上版本中已包含

命令示例:

  • 安装 uvloop(可选)
    • 使用 pip 安装:pip install uvloop

运行

  • 直接运行脚本(假设代码保存在 main.py,且数据文件在 data/tocheck-10-13.md
    • python main.py
  • 运行环境注意事项
    • macOS 与 Ubuntu 上需安装 whois 工具,示例分别为 brew install whoissudo apt-get install whois
    • 如果 whois 不可用,程序将返回 None,表示无法判断

功能概览

  • 从 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 等常见开源许可证,请在正式发布中明确许可证信息。

About

检查域名是否可以注册

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages