当前位置: 首页 > news >正文

JustOne--一款类OneForAll的子域名收集工具

JustOne

子域名收集工具 | Subdomain Collection Tool

基于 Python 3.14 的现代化子域名收集工具,支持多源收集、爆破、置换扩展、存活验证、DNS 安全检测及接管风险检测。
Github地址:https://github.com/Yumi10086/JustOne

功能

  • 多源收集 — 12 个搜索引擎 + 3 个证书透明度日志 + 15 个开放数据集 + 5 个威胁情报
  • DNS 爆破 — 高并发词表爆破,递归深度扩展
  • 子域置换 — 基于已有子域名生成变异候选(前缀/后缀/数字/连字符插入)
  • 存活验证 — HTTP 异步批量检查 / DNS 快速解析
  • DNS 安全检测 — DNSSEC 状态、多解析器一致性对比(投毒/劫持检测)
  • 接管检测 — DNS CNAME + HTTP 指纹双确认,预装 15 种服务指纹
  • 代理支持 — 代理优先 → 直连回退,国内外双栈
  • 输出格式 — CSV / JSON / TXT

快速开始

环境要求

  • Python 3.14+
  • 虚拟环境(推荐)

安装

git clone https://github.com/your/JustOne.git
cd JustOnepython -m venv venv
# Windows
venv\Scripts\activate
# Linux/Mac
source venv/bin/activatepip install typer rich requests dnspython loguru aiohttp pydantic tqdm

配置

复制环境变量模板并根据需要填写 API Key:

cp config/.env.example config/.env

部分模块需要 API Key 才能工作(FOFA、Hunter、Shodan、ZoomEye、VirusTotal 等),不配置则自动跳过。

使用

完整收集

# 默认流程:搜索引擎 + 证书 + 数据集 + 爆破 + 置换
python justone.py main example.com# 跳过特定模块
python justone.py main example.com --no-brute
python justone.py main example.com --no-altdns
python justone.py main example.com --no-search

子域爆破

python justone.py brute example.com
python justone.py brute example.com -w wordlist.txt -c 1000

子域置换扩展

# 自动收集+爆破后置换
python justone.py altdns example.com# 从已知子域名文件直接置换
python justone.py altdns example.com -i subdomains.txt# 禁用特定置换规则
python justone.py altdns example.com -i subs.txt --no-number --no-insert

存活检查 & DNS 安全检测

# HTTP 存活检查
python justone.py check example.com# 仅 DNS 检查
python justone.py check example.com --dns# DNS 安全检测(DNSSEC + 投毒/劫持检测)
python justone.py check example.com --dns-security
python justone.py check example.com --dnssec# 从文件批量检查
python justone.py check -i subdomains.txt

子域接管检测

python justone.py takeover example.com
python justone.py takeover -i subdomains.txt
python justone.py takeover example.com --concurrent 50

输出选项

python justone.py main example.com -o results.csv          # 指定输出路径
python justone.py main example.com -f json                 # 输出格式: csv/json/txt

未指定输出路径时,结果自动保存到 results/ 目录:

命令 默认文件名
main results/collect_域名.csv
brute results/brute_域名.csv
altdns results/altdns_域名.csv
check results/check_域名.csv
takeover results/takeover_域名.csv

模块架构

justone.py          ← Typer CLI 入口
config/settings.py       ← Pydantic BaseSettings 配置logging.py        ← loguru 日志
common/module.py         ← 同步模块基类 (requests)async_module.py   ← 异步模块 Mixin (aiohttp)domain.py         ← 域名解析utils.py          ← 工具函数 (匹配/代理/重试)resolve.py        ← DNS 批量解析database.py       ← SQLite 持久化
modules/collect.py        ← 收集调度器brute.py          ← DNS 爆破altdns.py         ← 子域置换export.py         ← CSV/JSON/TXT 导出search/           ← 12 个搜索引擎certificates/     ← crt.sh / CertSpotter / Censysdatasets/         ← 15 个开放数据集dnsquery/         ← MX / NS / SOA / SPF / TXT 查询intelligence/     ← Threat Intelligence (AlienVault / VirusTotal 等)check/            ← HTTP / DNS / CDN / AXFR / 安全检测等takeover/         ← 子域接管检测
data/               ← 词表、CDN 指纹、公共后缀列表

代理配置

config/.env:

PROXY_ENABLE=true
PROXY_POOL=http://127.0.0.1:10808

行为:配置了代理则代理优先 → 失败回退直连;未配置则全程直连。

测试

pytest                          # 全量测试
pytest tests/test_altdns.py    # 单模块测试
pytest -k "test_dnssec"         # 按关键字过滤

全量测试约 340+ 用例,7 个跳过为 API Key 缺失模块,属正常预期。

数据源

每个模块可通过命令行 --no-xxx 选择性关闭,或在 config/.env 中配置对应的 API Key。

类别 模块
搜索引擎 Baidu, Bing, Google, Yahoo, Yandex, So, Sogou, Fofa, Hunter, Shodan, ZoomEye, Gitee
证书 crt.sh, CertSpotter, Censys
数据集 Anubis, Chinaz, Circl, Cloudflare, DNSDumpster, DNSdb, FullHunt, HackerTarget, IP138, LeakIX, NetCraft, PassiveDNS, RapidDNS, Robtex, SecurityTrails, SiteDossier
威胁情报 AlienVault OTX, URLScan.io, ThreatBook, VirusTotal, ThreatMiner
DNS 查询 MX, NS, SOA, SPF, TXT
安全检测 DNSSEC / 多解析器一致性 / 劫持检测
接管检测 15 种服务指纹 (GitHub Pages, AWS S3, Heroku, Vercel 等)

致谢

本项目的模块架构和收集思路参考了 OneForAll — 一个优秀的子域名收集工具。

http://www.jsqmd.com/news/918129/

相关文章:

  • ROFL-Player深度解析:英雄联盟回放文件的架构设计与实现原理
  • 用户故事写不好?Gemini提示工程+INVEST原则双引擎驱动,3天重构需求质量,你还在手动拍脑袋吗?
  • 别再只调白平衡了!用OpenCV和Kalibr搞定红外热成像摄像头的温度标定(附完整代码)
  • 知乎内容终极备份方案:如何完整保存你的知识资产
  • 如何用Mem Reduct让你的Windows电脑内存效率提升300%:新手完全指南
  • 3分钟解锁游戏性能潜力:DLSS Swapper智能管理方案
  • 安全库存怎么设定?供应链库存管理的核心参数? - 众智商学院职业教育
  • ESP32与RP2040双核协同打造旋转LED屏:从无线供电到视觉暂留全解析
  • 同一个实验,同样的protocol,为什么结果总是不一样?
  • 终极指南:三步搞定小说离线阅读,novel-downloader让你的数字图书馆永不消失
  • 2026西安黄金回收避雷红黑榜:深扒哪家套路深,千万别去A要去B,到底怎么选不踩坑? - 西安闲转记
  • 实验室建设选EPC还是分包 关键在这里
  • 掌握Windows系统管理艺术:Chris Titus Tech WinUtil深度实战指南
  • 别再瞎调了!Unity UI自适应保姆级教程:Canvas Scaler三种模式实战对比(附避坑清单)
  • 音乐解锁终极指南:3分钟掌握12种加密格式免费转换
  • 5分钟快速上手:用AutoMdxBuilder轻松制作专业MDX词典
  • 【基础知识】Python入门:序列
  • 2026年4月有名的塑料垃圾桶生产厂家口碑推荐,塑料周转框/塑料水箱/塑料周转筐/塑料垃圾桶,塑料垃圾桶厂家推荐分析 - 品牌推荐师
  • 201_002 Zynq7000 SoC PS资源介绍
  • 【AI工具故障排除黄金法则】:20年SRE专家亲授7大高频故障的秒级定位与修复流程
  • 杭州黄金回收哪家靠谱?拱墅、上城、萧山三店横评实录 - 百福黄金回收
  • 从零打造仿生机械手:Arduino控制与3D打印实战指南
  • 低调的黑客
  • 2026年杭州企业必看:如何选择可靠的GEO源码部署公司深度指南 - 品牌报告
  • D2DX:终极暗黑破坏神2现代化补丁,让经典游戏完美适配现代PC
  • 2026加拿大工程院院士:14位华人院士,占比1/4
  • 仅限技术决策者查阅:AI搜索引擎隐私SLA对比矩阵(含数据驻留地、第三方共享协议、删除SLA时效),17家厂商原始条款逐条标注
  • Claude 3.5究竟强在哪?弱在哪?(附237项原子能力打分矩阵):这份被3家FAANG内部传阅的竞品分析PDF正在失效
  • 2026四川成都+都江堰+青城山+九寨沟7天6晚导游排行榜|实测与避坑 - 随峰国旅
  • 浏览器如何解析HTML头部:底层逻辑揭秘