1. 项目概述一个纯粹、无依赖的域名情报收集工具在AI Agent和LLM应用开发中我们经常需要让智能体去“理解”一个在线实体比如一个网站。无论是进行竞争对手分析、安全审计还是简单的域名可用性检查第一步往往都是收集关于这个域名的公开情报。市面上这类工具很多但它们通常要么需要注册一堆API密钥增加了使用成本和复杂度要么依赖一大堆第三方库导致部署困难尤其是在受限环境中。今天要聊的这个项目——domain-intel就完美地解决了这两个痛点。domain-intel是一个专为AI Agent设计的技能Skill它的核心卖点就是“纯粹”。它只用Python标准库不依赖任何外部包也不需要任何API密钥。这意味着你可以把它轻松地集成到任何Python环境中无论是你的本地开发机、一个Docker容器还是一个资源受限的边缘设备它都能开箱即用。它通过被动OSINT开源情报技术帮你完成子域名发现、SSL证书检查、WHOIS查询、DNS记录获取以及域名可用性检查等一系列任务。对于开发者、安全研究员、产品经理甚至是那些想批量“扫”一下心仪域名是否可注册的朋友来说这都是一把轻巧而锋利的瑞士军刀。2. 核心功能与设计哲学解析2.1 为什么坚持“零依赖”和“零API密钥”这可能是这个工具最值得称道的设计决策。在当今的软件开发中引入依赖几乎是常态但依赖也带来了脆弱性。版本冲突、库停止维护、网络问题导致安装失败……这些问题在集成到AI Agent这种需要稳定运行的环境中时会被放大。domain-intel选择回归Python标准库利用socket、ssl、json、urllib等内置模块实现所有功能从根本上消除了环境依赖的烦恼。你只需要一个能运行Python3的环境它就一定能工作。“零API密钥”则是另一个层面的优雅。很多商业化的域名或SSL情报服务固然强大但免费额度有限注册流程繁琐并且你的查询数据会经过第三方服务器。domain-intel的所有数据都通过公开协议直接获取通过TCP 43端口进行WHOIS查询通过TLS握手获取SSL证书通过系统DNS解析器获取记录通过公开的证书透明度CT日志网站查询子域名。这种方式不仅免费、无限制而且在隐私方面也更令人安心——你的查询目标不会泄露给商业API提供商。2.2 六大核心命令深度解读工具提供了六个核心命令覆盖了域名情报的常见需求。下面我们来逐一拆解其背后的原理和能获取的信息维度。subdomains基于证书透明度的子域名发现这个功能的核心数据源是crt.sh一个公开的证书透明度日志搜索引擎。当网站申请SSL证书时证书颁发机构CA会将证书信息记录到公开的CT日志中证书的主题备用名称SAN字段里就包含了该证书有效的所有域名和子域名。domain-intel会模拟浏览器访问crt.sh查询指定主域名的所有证书记录然后从返回的JSON数据中提取出所有唯一的子域名。这种方法是被动的、非侵入式的不会向目标发送任何探测包非常适合初步的信息收集。但要注意它只能发现那些使用了SSL证书的子域名如果某个子域名仅使用HTTP或者使用了自签名证书且未录入公共日志则无法通过此方法发现。sslSSL/TLS证书深度检查这个命令会与目标域名的443端口或其他指定端口建立TLS连接并获取其服务器证书。解析证书可以得到丰富的信息有效期证书的起止日期直接判断是否过期或即将过期。颁发者是哪家CA签发的证书例如Let‘s Encrypt、DigiCert等。签名算法如SHA256-RSA反映了证书的加密强度。主题备用名称SAN除了主域名证书还对哪些其他域名有效这本身也能发现子域名或关联域名。证书链可以查看中间证书帮助诊断某些浏览器警告问题。 这些信息对于安全审计至关重要一个过期的证书或弱签名算法的证书会直接导致安全风险。whois域名注册信息查询WHOIS是一个用来查询域名注册信息的协议。domain-intel通过TCP 43端口直接向对应顶级域TLD的WHOIS服务器发送查询请求。返回的信息通常包括注册人可能被隐私保护服务隐藏注册商如GoDaddy, Namecheap注册日期、到期日期、最后更新日期域名服务器Name Servers这些信息在商业尽职调查、品牌保护或联系网站所有者时非常有用。工具声称支持100个TLD这意味着它内置或能智能判断不同后缀如.com,.cn,.io,.app对应的WHOIS服务器地址。dns全面的DNS记录解析利用系统的DNS解析器通常通过操作系统的getaddrinfo等函数获取域名相关的各种记录。包括A记录IPv4地址指向网站服务器。AAAA记录IPv6地址。MX记录邮件交换服务器暴露了企业使用的邮件服务如Google Workspace, Microsoft 365。NS记录权威域名服务器可能指向云服务商如AWS Route 53, Cloudflare。TXT记录文本记录常用于存放SPF、DKIM等邮件安全配置或域名验证信息。CNAME记录别名记录可能将子域名指向CDN或SaaS服务如www.example.comCNAME 到example.herokuapp.com。 分析这些记录可以快速绘制出目标的基础设施图谱。available智能域名可用性检查这不是一个简单的“查询是否被注册”的功能。它综合了多种被动信号进行推断DNS查询如果域名能解析出IP有A/AAAA记录那肯定已被注册和使用。WHOIS查询如果WHOIS返回有效的注册信息域名已被注册。SSL证书检查如果能建立TLS连接并获得证书域名肯定已被用于HTTPS服务。 如果以上所有检查都失败例如DNS查询返回NXDOMAINWHOIS返回“未找到”无法连接443端口则工具会以高置信度推断该域名“可能可用”。这是一种非常巧妙的、无需访问域名注册商API的方法。bulk批量多域名分析这是效率工具。允许一次性传入多个域名并行或顺序执行指定的检查默认是所有检查。输出是结构化的JSON便于后续用脚本进行自动化处理或分析比较。例如你可以一次性检查十个竞品域名的子域名和SSL配置快速生成对比报告。3. 实战部署与应用场景3.1 安装与集成到OpenClaw AI Agent根据项目说明安装非常简单本质上就是复制文件。对于OpenClaw框架技能通常存放在一个特定的工作空间目录下。# 假设你已经克隆了 domain-intel 仓库 git clone https://github.com/Cat-tj/domain-intel.git # 将其复制到 OpenClaw 的技能目录中 cp -r domain-intel/ ~/.openclaw/workspace/skills/domain-intel/完成复制后理论上你的OpenClaw Agent就具备了调用domain-intel技能的能力。具体的调用方式取决于OpenClaw框架如何定义和触发技能。通常你可以在给Agent的指令中通过自然语言描述任务例如“请帮我分析一下example.com这个域名的所有子域名和SSL证书情况。” Agent应该能理解并调用对应的domain_intel.py脚本。注意SKILL_DIR是一个占位符在实际的Agent运行环境中框架应该会自动将其替换为技能的真实路径。如果你是在Agent环境外独立使用这个脚本需要手动指定路径或进入脚本所在目录执行。3.2 独立使用作为命令行工具即使你不使用OpenClaw这个项目本身也是一个功能完整的命令行工具。你可以直接运行其中的Python脚本。# 进入脚本所在目录 cd ~/.openclaw/workspace/skills/domain-intel/scripts # 执行子域名发现 python3 domain_intel.py subdomains github.com # 执行SSL检查输出格式化JSON python3 domain_intel.py ssl github.com | python3 -m json.tool独立使用时其输出是结构化的JSON非常适合集成到你自己的自动化流水线中。例如你可以写一个Shell脚本定期检查自己公司所有域名的SSL证书到期时间并在到期前30天发送告警邮件。3.3 五大典型应用场景实操场景一竞争对手基础设施测绘假设你的竞品是competitor.com。你想了解他们的技术栈和业务规模。子域名发现python3 domain_intel.py subdomains competitor.com。你可能会发现api.competitor.com说明有开放API、staging.competitor.com测试环境、cdn.competitor.com使用了CDN、mail.competitor.com自建或特定邮件服务。DNS记录分析python3 domain_intel.py dns competitor.com。查看MX记录如果是aspmx.l.google.com说明他们用Google Workspace办公NS记录如果是ns1.cloudflare.com说明用了Cloudflare的DNS和可能的安全服务。SSL证书检查python3 domain_intel.py ssl competitor.com。看证书颁发者如果是“Let‘s Encrypt”可能技术团队比较注重成本或自动化如果是“DigiCert”可能企业级客户较多需要更强的信任背书。检查有效期也能推测其运维自动化水平。场景二内部安全自查与合规作为公司安全员你需要确保所有对外服务的SSL证书安全。编写批量检查脚本创建一个domains.txt文件列出公司所有对外域名。执行批量SSL检查python3 domain_intel.py bulk $(cat domains.txt) --checks ssl。解析结果并告警写一个Python脚本解析输出的JSON提取每个域名的not_after到期时间字段计算剩余天数如果少于阈值如15天则自动触发Jira工单或发送Slack消息给运维团队。场景三域名投资与品牌保护你想注册一个与你的品牌mybrand相关的域名但.com已被注册需要寻找其他可用后缀或变体。批量可用性检查python3 domain_intel.py available mybrand.io mybrand.ai mybrand-app.com mybrandhq.com。分析结果工具会返回每个域名的可用状态。对于显示“可能可用”的域名建议立即通过正规注册商进行最终确认和抢注因为被动检查存在微小的时间差和漏报可能。场景四渗透测试前期信息收集白帽在授权测试中信息收集是关键第一步。全面收集对目标域名target.com运行bulk命令一次性获取子域名、DNS、WHOIS、SSL信息。分析攻击面发现的每一个子域名都是一个潜在的入口点。过期的SSL证书可能允许实施中间人攻击。TXT记录中的信息可能泄露内部系统地址或第三方服务配置。生成报告结构化的JSON输出可以直接导入到像Maltego这样的可视化情报工具中绘制关系图谱。场景五业务合作前的尽职调查在与一家新公司partner.com进行技术合作前评估其技术成熟度。WHOIS信息查看域名注册年限注册很久的域名通常更可信。查看注册商是否专业。SSL配置检查是否使用强加密套件证书链是否完整。一个配置良好的HTTPS站点体现了技术团队的基本素养。邮件基础设施通过MX记录判断其使用的是专业企业邮箱如Google, Microsoft还是简陋的虚拟主机邮箱间接反映公司规模和技术投入。4. 技术细节、注意事项与避坑指南4.1 核心模块原理与代码片段浅析虽然我们不需要看全部源码但理解其关键实现有助于更自信地使用和排错。WHOIS查询的实现 WHOIS协议本身很简单但难点在于不同TLD的WHOIS服务器地址不同。一个健壮的实现需要一个TLD服务器映射表。domain-intel可能内置了这个表或者使用了类似python-whois库的逻辑但它是用纯Python重新实现的。其核心代码逻辑类似import socket def whois_query(domain, serverwhois.verisign-grs.com, port43): with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: s.connect((server, port)) s.send((domain \r\n).encode()) response b while True: chunk s.recv(4096) if not chunk: break response chunk return response.decode()然后它需要解析返回的文本提取关键字段。不同注册商的返回格式各异所以解析逻辑需要处理多种情况。SSL证书获取 Python标准库ssl可以创建未经验证的上下文来获取证书即使证书无效如自签名、过期也能拿到。import ssl, socket def get_cert(hostname, port443): context ssl.create_default_context() context.check_hostname False context.verify_mode ssl.CERT_NONE with socket.create_connection((hostname, port)) as sock: with context.wrap_socket(sock, server_hostnamehostname) as ssock: cert ssock.getpeercert() cert_bin ssock.getpeercert(binary_formTrue) # cert是字典格式cert_bin是DER格式可用于进一步解析 return cert, cert_bindomain-intel会利用cryptography库不它坚持零依赖所以很可能使用ssl模块的DER_cert_to_PEM_cert函数结合OpenSSL.crypto如果pyOpenSSL也不算标准库那它可能用了更底层的asn1crypto等等这也不是标准库。我怀疑它可能只解析了ssock.getpeercert()返回的字典对于更详细的信息如序列号、签名算法则通过解析cert_bin的DER编码来实现这需要自己写ASN.1解析逻辑复杂度很高。更可能的情况是它主要依赖getpeercert()返回的信息对于更专业的字段它做了取舍以保持零依赖。这是一个值得注意的细节它的SSL检查功能可能不如专业工具如openssl s_client详细但对于过期时间、颁发者、SAN等常见信息是足够的。4.2 使用中的常见问题与排查1. 子域名发现subdomains命令没有结果或结果不全原因A目标域名或其子域名根本没有使用SSL/TLS证书纯HTTP站点。排查尝试用ssl命令检查主域名如果连主域名都获取不到证书那子域名发现功能自然无效。解决需要结合其他主动探测工具如dnsrecon,amass进行补充但那些不属于本工具范畴。原因Bcrt.sh网站访问不稳定或限制了请求频率。排查手动在浏览器打开https://crt.sh/?q%.example.com看是否能正常显示结果。解决工具可能没有处理网络超时或速率限制。如果是批量查询建议在命令之间添加延时如time.sleep(2)。2. WHOIS查询whois命令返回“未找到”或超时原因A对于某些较新的或国家/地区特定的TLD如.app,.io,.cn工具内置的WHOIS服务器地址可能不正确或缺失。排查尝试用其他知名在线WHOIS网站查询同一个域名确认信息是否存在。解决可以查阅IANA的WHOIS服务器列表或者考虑为工具贡献代码补充缺失的TLD服务器映射。原因BWHOIS服务器实施了查询速率限制或基于IP的封锁。排查短时间内查询大量不同域名后出现失败。解决降低查询频率为每个查询添加随机延时。3. SSL检查ssl命令连接失败原因A目标服务器没有开启443端口或者使用了非标准端口。排查使用nc -zv example.com 443或telnet example.com 443检查端口连通性。解决本工具目前可能不支持指定端口需查证源码。如果目标服务在别的端口如8443则需要修改工具或使用其他方法。原因B服务器SSL配置错误或使用了客户端不支持的极端老旧/新潮的加密套件。排查尝试用不同版本的OpenSSL客户端或浏览器访问。解决工具使用的Pythonssl模块有默认的协议和密码套件设置。如果目标服务器配置非常规连接可能失败。这通常意味着目标服务器本身存在配置问题。4. 域名可用性检查available命令不准确重要提示这是一个被动推断不是权威查询。存在假阴性和假阳性。假阴性已注册但显示可用域名已被注册但所有者没有设置任何DNS记录域名“停放”状态也没有配置WHOIS隐私保护导致WHOIS返回未找到同时没有启用任何Web服务。这种情况比较少见但存在。假阳性实际可用但显示不可用DNS有缓存特别是NXDOMAIN结果被ISP缓存或者工具查询的WHOIS服务器临时不可用。最佳实践将此工具的“可用”结果视为一个“高概率可用”的强信号但最终决定注册前务必通过正规域名注册商如GoDaddy, Namecheap, Aliyun的搜索功能进行最终确认。5. 批量查询bulk命令速度慢原因所有查询都是串行执行的且网络I/O尤其是WHOIS和crt.sh查询是主要耗时部分。优化建议工具本身可能没有内置并发。对于大量域名检查你可以自己写一个Python脚本利用concurrent.futures.ThreadPoolExecutor并发调用domain_intel.py脚本的子进程或者直接导入其函数进行多线程调用可以大幅提升效率。4.3 安全与合规使用提醒遵守法律法规与道德规范仅将本工具用于你拥有所有权、已获得明确书面授权的资产或用于公开信息的合法研究。未经授权对他人网络资产进行扫描可能违反《计算机欺诈和滥用法案》CFAA等法律并构成违法行为。尊重目标系统即使是被动信息收集也应避免发起过高频率的请求以免对crt.sh或公共WHOIS服务器造成负载压力这可能导致你的IP被暂时封锁。数据解读的局限性工具提供的是原始数据。WHOIS信息可能因隐私保护服务而隐藏子域名列表可能不完整SSL证书信息反映的是你连接时那一瞬间的配置。在做出重要业务或安全决策前应通过多种渠道交叉验证信息。隐私考虑你的查询行为本身源IP、查询时间、目标域名会暴露给crt.sh和各个WHOIS服务器。在高度敏感的场景下请通过合适的网络渠道进行操作。5. 扩展思路与进阶玩法domain-intel作为一个基础组件其价值在于稳定、无依赖和结构化输出。这为它融入更复杂的自动化工作流打开了大门。思路一构建自动化监控面板结合Flask或FastAPI框架你可以快速搭建一个内部安全仪表盘。后端定时使用domain-intel的bulk命令检查公司所有关键域名的SSL证书到期时间和DNS记录变更将结果存入数据库如SQLite。前端展示一个仪表板用绿色、黄色、红色卡片分别表示证书状态健康、即将过期30天、已过期。任何异常变更如MX记录突然改变可能预示邮件被劫持可以高亮告警。思路二集成到CI/CD流水线在公司的CI/CD流程中每当有新的服务上线或域名配置变更时可以自动触发一个检查Job。这个Job调用domain-intel检查新域名的SSL配置是否合规如是否使用TLS 1.2以上证书是否来自受信CADNS记录是否指向正确的预发布或生产环境IP。如果检查不通过则自动失败部署流程防止配置错误流入生产环境。思路三为AI Agent赋予“网络侦查”能力这正是它作为OpenClaw Skill的初衷。你可以设计这样的Agent工作流用户请求“帮我调研一下‘某某科技公司’的线上业务规模。”Agent思考首先需要找到该公司的主域名可能通过内置搜索技能。调用domain-intel获得子域名、技术栈通过DNS/SSL推断、注册信息。分析与报告Agent综合这些信息生成一份简要报告“该公司主要使用.com主站并拥有api.,admin.等子站邮件服务由Google托管Web服务疑似部署在AWS上SSL证书由Let‘s Encrypt签发将于45天后到期...”思路四数据关联与图谱分析将domain-intel的输出JSON格式与其他OSINT工具如查询IP归属地、端口扫描结果的数据相结合使用networkx等库构建知识图谱。你会发现不同的竞品公司可能使用了相同的第三方服务如相同的CDN CNAME、相同的邮箱提供商或者某个投资机构旗下的多个项目域名都在同一天注册。这种关联分析能揭示出表面信息之下的深层联系。这个工具的精妙之处在于其“克制”的设计——不做大而全而是把“零依赖”、“被动收集”、“结构化输出”这几个点做到极致。它可能不是你武器库中威力最大的那件但一定是部署最方便、最可靠的那件。在需要快速验证想法、构建原型或在不便安装复杂环境的情况下它总能派上用场。