一站式查询 IP · 电话 · 用户名 · 域名 WHOIS · MX 记录 · 邮箱 · 子域名 · 域名邮箱 · Diff 监控 · 批量扫描
🇨🇳 中文 · 🇬🇧 English
SpyEyes 是一款用 Python 编写的命令行 OSINT(开源情报)信息收集工具,专为中文用户深度优化。10 大核心能力:IP 追踪 / 电话号码解析 / 用户名扫描(3164 个平台 / 中英双语)/ 域名 WHOIS / MX 查询 / 邮箱有效性验证 / 子域名枚举(6 被动源 + 字典爆破 + JS 提取)/ 域名邮箱挖掘(6 源全免费并发 + 深度爬虫)/ Diff 监控(对比两次扫描)/ 批量域名输入(--batch)/ 8 种 Editorial 风报告。
适合 网络安全研究人员、渗透测试工程师、SOC 分析师、技术调查员、红队蓝队成员、CTF 玩家 以及任何对开源情报感兴趣的开发者使用。
- 🆕 v1.6.8:
~/.spyeyes/env自动加载 API keys + 报告显示完整 6 源状态 — KEY=VALUE 格式简单文件代替 LaunchAgent / shell 配置;报告里每个源 ✅/⊘/❌ 状态一目了然 - 🆕 v1.6.6:域名邮箱挖掘提速 3-4× — HTTP probe 过滤非 web 子域 + 多 target 并行 BFS 爬虫(linux.do 5.5 分钟 → 1.5 分钟)
- 🆕 v1.6.5:
--alive-only智能严格 — wildcard / DNS 劫持环境下自动加 HTTP 响应过滤,防止 fake "活"假象 - 🆕 v1.6.0:域名邮箱 6 源全并发 — Bing SERP + DuckDuckGo + Wayback Machine + GitHub commits + crt.sh + WHOIS,完全免费 + 无需注册;对比 theHarvester / Photon / EmailFinder,免费层最强
- 🆕 v1.5.0:Diff 模式 + 批量域名 —
spyeyes diff old.json new.jsonOSINT 持续监控;--batch domains.txt批量扫描 - 🆕 v1.4.x → v1.6.x:子域名 7 维度收集 — 6 被动源(crt.sh / CertSpotter / HackerTarget / OTX / Wayback Machine / 可选 subfinder 30+ 源)+ DNS 字典爆破 + JS/HTML body host 提取(支持 4xx/5xx title + CNAME 完整 chain)+ DNS A/AAAA/CNAME 验证 + HTTP probe + Wildcard 检测
- 🆕 Editorial Investigation Brief 报告美化 — 调查档案/报刊调性 Cormorant Garamond + Crimson Pro + JetBrains Mono;HTML sticky thead + alive/dead 视觉区分 + HTTP status 颜色;PDF 封面页 + 罗马数字章节;XMind 层级展开;Graph D3.js 力导向图
- 3164 个用户名扫描平台:48 中文圈 + 58 西语圈 + 91 成人/约会 + 733 论坛,Sherlock 级速度 ~20 秒(150 线程并发 + Session 池 + ReDoS 防护)
- Maigret-style permute + 递归扫描
--recursive(完整进度反馈)+ 多扫描模式--quick/--category - 8 种报告格式 —
JSON / Markdown / HTML / PDF / TXT / CSV / XMind / Graph (D3.js),全部跟随 UI 语言(中/英) - WAF 检测:Cloudflare / AWS WAF / PerimeterX / DataDome / Akamai 等高精度指纹
- 完整中英双语:交互菜单 / CLI 参数 / 错误信息 / 报告内容全部双语
- 🆕 v1.6.1:进度条 100% 全功能审计 — 所有耗时操作都有实时反馈,告别"看着卡死"
- 🆕 v1.8.0:智能默认报告目录 — 源码运行 →
<项目根>/Downloads/(git clone 用户在仓库直接看到);打包安装(pip/pipx/brew) →~/Downloads/spyeyes/(永不写 site-packages);SPYEYES_REPORTS_DIR=path始终最高优先级 - 🆕 v1.8.0:启动版本检查 — 24h 缓存比对 GitHub Release,新版本时 stderr 提示;
--no-update-check/SPYEYES_NO_UPDATE_CHECK=1一键禁用;离线 / API 失败完全静默 - 🆕 v1.8.0:
investigate提速 3-4× + 全程进度反馈 — Phase 2b(邮箱→用户名)从串行改 4 并发,15 邮箱场景从 ~210s 降到 ~50-80s;Phase 1/2a/2b 全程实时显示[N/M] ✓ task进度;TTY 安全,管道完全静默 - 541 个 pytest 测试:4 工具全清(ruff 0 / mypy 0 / bandit 0 / pytest 全绿),CI 跨 macOS/Linux/Windows × Python 3.10–3.14
|
|
| 工具 | IP | 电话 | 用户名 | WHOIS | MX | 邮箱 | 子域名 | 域名邮箱 | Diff监控 | 批量 | 报告格式 | 中文 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Sherlock | ❌ | ❌ | ✅ (400+) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | 1 | ❌ |
| Maigret | ❌ | ❌ | ✅ (3000+) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | 1-2 | ❌ |
| holehe | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | 1 | ❌ |
| theHarvester | ✅ | ❌ | ❌ | ✅ | ❌ | ✅ | ✅ | ✅(部分商业) | ❌ | ❌ | 1-2 | ❌ |
| Subfinder | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ | 1 | ❌ |
| Recon-ng | ✅ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | 1 | ❌ |
| SpyEyes | ✅ | ✅ | ✅ (3164) | ✅ | ✅ | ✅ | ✅ (7 维度) | ✅ (6 源全免费) | ✅ | ✅ | 8 | ✅ |
💡 定位说明:SpyEyes 不是为了在用户名扫描深度上跟 Sherlock 卷,而是做轻量级一站式 + 中文优先 + 报告丰富的 OSINT 工具。
- 只查用户名 → Sherlock / Maigret 更专业
- 邮箱挖掘要 30+ 商业 API → theHarvester 更全
- 但要免费层最强 + 8 种报告 + 中文 UI + 一站式 10 个命令 → SpyEyes 就是为你准备的
| 类别 | 技术 / 库 | 用途 |
|---|---|---|
| 语言 | Python 3.10+ | 主语言 |
| HTTP | requests |
API 调用 |
| 电话解析 | phonenumbers |
Google 官方电话号码库 |
| DNS | dnspython |
MX / A / AAAA 记录查询 |
| WHOIS | python-whois |
域名注册信息 |
| 并发 | concurrent.futures.ThreadPoolExecutor |
多平台并发扫描 |
| CLI | argparse |
命令行参数解析 |
| 终端 | ANSI escape sequences | 彩色输出 + TTY 检测 |
| 测试 | pytest + unittest.mock |
单元测试 + HTTP mock |
| CI/CD | GitHub Actions | 跨平台多版本自动测试 |
| 数据源 API | ipwho.is · api.ipify.org |
IP 信息查询 |
git clone https://github.com/Akxan/SpyEyes.git && \
cd SpyEyes && \
python3 -m venv .venv && \
source .venv/bin/activate && \
pip install -r requirements.txt && \
python3 -m spyeyes# 查询 Google DNS 的 IP 信息
python3 -m spyeyes ip 8.8.8.8
# 查询本机出口 IP
python3 -m spyeyes myip
# 查询电话号码
python3 -m spyeyes phone +8613800138000
# 扫描用户名
python3 -m spyeyes user torvalds
# WHOIS 查询
python3 -m spyeyes whois example.com
# MX 记录
python3 -m spyeyes mx gmail.com
# 邮箱验证
python3 -m spyeyes email someone@gmail.com
# 子域名枚举(v1.3.0 → v1.6.1)
python3 -m spyeyes subdomain example.com # 6 源被动 + DNS + HTTP probe + JS 提取(默认全开)
python3 -m spyeyes subdomain example.com --bruteforce # 加内置 220 字典爆破(更全)
SPYEYES_DNS_WORDLIST=~/all.txt spyeyes subdomain example.com --bruteforce # 自定义大字典
python3 -m spyeyes subdomain example.com --alive-only --save report.html # 只保留活跃子域(报告整洁)
python3 -m spyeyes subdomain example.com --no-js-extract --no-probe # 仅纯被动,最快
python3 -m spyeyes subdomain example.com --json | jq '.subdomains[] | select(.alive)'
# 🆕 v1.5.0:批量域名扫描
python3 -m spyeyes subdomain --batch domains.txt --batch-save-dir reports/ --alive-only
# domains.txt 每行一个域;# 注释 + 空行自动跳过;每个域独立 HTML 报告
# 🆕 v1.5.0:Diff 模式 — OSINT 持续监控
python3 -m spyeyes subdomain example.com --json > monday.json
python3 -m spyeyes subdomain example.com --json > friday.json # 几天后再扫
python3 -m spyeyes diff monday.json friday.json --save diff.html # 新增/消失/变更子域
# 🆕 v1.6.0:域名邮箱挖掘(6 源全并发,免费无注册)
python3 -m spyeyes domain-emails example.com # crt.sh + WHOIS + Bing + DDG + Wayback + GitHub 全并发
python3 -m spyeyes domain-emails example.com --guess "John Doe,Jane Smith" # 加模式生成
python3 -m spyeyes domain-emails example.com --no-crawl # 仅被动 6 源,最快
# 查看历史记录(~/.spyeyes/history.jsonl 自动累积)
python3 -m spyeyes history --limit 20 # 最近 20 条
python3 -m spyeyes history --search torvalds # 按 query 子串过滤
python3 -m spyeyes history --json | jq # JSON pipeline
# 输出 JSON + 保存到文件
python3 -m spyeyes ip 8.8.8.8 --json --save results/# 1) 8 种报告格式 —— 按 --save 文件后缀分发
python3 -m spyeyes user torvalds --save report.html # HTML(含 CSS 样式)
python3 -m spyeyes user torvalds --save report.pdf # PDF(需 spyeyes[pdf])
python3 -m spyeyes user torvalds --save report.xmind # XMind 8 思维导图
python3 -m spyeyes user torvalds --save report.graph.html # D3.js 力导向图
python3 -m spyeyes user torvalds --save report.csv # CSV(含 injection 防护)
python3 -m spyeyes user torvalds --save report.txt # 纯文本
python3 -m spyeyes user torvalds --save report.md # Markdown
python3 -m spyeyes user torvalds --save report.json # JSON
# 2) 报告内容跟随 UI 语言:中文 UI 出中文报告,英文 UI 出英文报告
python3 -m spyeyes --lang zh user torvalds --save zh.html
python3 -m spyeyes --lang en user torvalds --save en.html
# 3) Maigret-style 用户名变形(method=all 包含 _前缀/后缀_)
python3 -m spyeyes permute "John Doe" # strict(默认)
python3 -m spyeyes permute "John Doe" --method all # 含 _johndoe / johndoe_
python3 -m spyeyes permute "Linus Torvalds" --scan --quick # 变形 + 自动扫描
# 4) 递归扫描:在命中页面提取次级用户名继续扫
python3 -m spyeyes user torvalds --recursive --depth 2
# 5) 默认 150 线程并发(从 100 升级);可调
python3 -m spyeyes user torvalds --workers 200brew install python3 git
git clone https://github.com/Akxan/SpyEyes.git
cd SpyEyes
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txtsudo apt-get install git python3 python3-pip python3-venv
git clone https://github.com/Akxan/SpyEyes.git
cd SpyEyes
python3 -m venv .venv && source .venv/bin/activate
pip install -r requirements.txtpkg install git python
git clone https://github.com/Akxan/SpyEyes.git
cd SpyEyes
pip install -r requirements.txt# 在 https://www.python.org 下载 Python 3,安装时勾选 "Add to PATH"
git clone https://github.com/Akxan/SpyEyes.git
cd SpyEyes
python -m venv .venv
.venv\Scripts\activate
pip install -r requirements.txtSpyEyes 默认用 6 个免费源(无需任何 key 也能跑),但配置以下 keys 能显著提升命中率和稳定性。
mkdir -p ~/.spyeyes
cat > ~/.spyeyes/env << 'EOF'
# AlienVault OTX(免费,https://otx.alienvault.com/settings)
SPYEYES_OTX_API_KEY=your_otx_key
# SSLMate CertSpotter(免费,https://sslmate.com/account/api_credentials)
SPYEYES_CERTSPOTTER_API_KEY=your_certspotter_key
# ProjectDiscovery PDCP(免费,subfinder 用)
PDCP_API_KEY=your_pdcp_key
# 可选:GitHub commit search 提速(免费 PAT,只读权限)
SPYEYES_GITHUB_TOKEN=ghp_your_token
# 可选:固定报告目录
# 默认行为(v1.8.0+):源码运行 → <项目根>/Downloads/
# 打包安装 → ~/Downloads/spyeyes/
# 设此变量可强制覆盖,无视安装方式
SPYEYES_REPORTS_DIR=/var/log/spyeyes
# 可选:禁用启动时的 GitHub 版本检查(v1.8.0+)
# 默认每 24h 后台静默查一次最新 release; 设为 1 则完全跳过
# SPYEYES_NO_UPDATE_CHECK=1
EOF
chmod 600 ~/.spyeyes/env模块加载时自动读取,跨平台一致(macOS/Linux/Windows),shell export 优先。
echo 'export SPYEYES_OTX_API_KEY=your_key' >> ~/.zshrc
source ~/.zshrcpython3 -m spyeyes███████╗██████╗ ██╗ ██╗███████╗██╗ ██╗███████╗███████╗
██╔════╝██╔══██╗╚██╗ ██╔╝██╔════╝╚██╗ ██╔╝██╔════╝██╔════╝
███████╗██████╔╝ ╚████╔╝ █████╗ ╚████╔╝ █████╗ ███████╗
╚════██║██╔═══╝ ╚██╔╝ ██╔══╝ ╚██╔╝ ██╔══╝ ╚════██║
███████║██║ ██║ ███████╗ ██║ ███████╗███████║
╚══════╝╚═╝ ╚═╝ ╚══════╝ ╚═╝ ╚══════╝╚══════╝
👁 All-in-One OSINT Toolkit · github.com/Akxan/SpyEyes 👁
[ 1 ] IP 追踪
[ 2 ] 查看本机 IP
[ 3 ] 电话号码追踪
[ 4 ] 用户名追踪 / 变形扫描 ← v1.2.0:合并变形子流程
[ 5 ] 域名 WHOIS 查询
[ 6 ] 域名 MX 记录
[ 7 ] 邮箱有效性检查
[ 8 ] 子域名枚举 ← v1.3.0:新增
[ 9 ] 域名邮箱枚举 ← v1.4.0:新增(OSINT 邮箱挖取)
[ 10 ] 切换语言 / Language ← v1.4.0:让位到 [10]
[ 0 ] 退出
[ + ] 请选择功能 :
(在任意子功能中输入 0 或直接回车可返回此菜单)
菜单流程:
[4]用户名:先选策略(直接扫 / 变形+扫 / 仅变形)→ 扫描模式 → 可选递归[8]子域名:输入域名 → 选是否 HTTP probe → 4 阶段实时反馈(被动源 → wildcard → DNS → probe)[9]域名邮箱:输入域名 → 选是否含 alive 子域 → 可选模式生成姓名 → 可选 SMTP 验证- 保存报告时弹
[1-8]数字格式菜单 + 默认目录(v1.8.0:源码 → 项目根/Downloads/,打包 → ~/Downloads/spyeyes/),可连续多格式保存- 任何输入步骤直接回车或
0都返回主菜单(v1.3.2 新增)
# 基本用法
python3 -m spyeyes <subcommand> <args...> [--json] [--save DIR] [--no-color]
# 与 jq 联动(管道处理)
python3 -m spyeyes ip 8.8.8.8 --json | jq -r '.country'
python3 -m spyeyes phone +8613800138000 --json | jq -r '.location'
# 批量查 IP
for ip in 8.8.8.8 1.1.1.1 9.9.9.9; do
python3 -m spyeyes ip "$ip" --json | jq -r '.ip + " -> " + .country'
done
# 自动保存所有查询结果
mkdir -p results
python3 -m spyeyes user torvalds --save results
python3 -m spyeyes mx gmail.com --save results更详细的功能讲解、安装排错、参数说明请见:
按 --save <文件> 的后缀自动分发,所有格式都跟随当前 UI 语言(中/英):
| 格式 | 后缀 | 实现 | 适用场景 |
|---|---|---|---|
| JSON | .json |
stdlib | 管道处理、脚本调用、API 集成 |
| Markdown | .md |
stdlib(含注入转义) | GitHub Issue、笔记、wiki |
| HTML | .html |
stdlib + 内嵌 CSS | 浏览器查看、邮件附件、外发报告 |
.pdf |
reportlab(可选 [pdf]) |
正式调查报告、归档 | |
| TXT | .txt |
stdlib | 复制粘贴到 ticket / IM / 邮件 |
| CSV | .csv |
csv stdlib + Excel 公式注入防护 | Excel / Google Sheets / pandas |
| XMind | .xmind |
zipfile + xml stdlib | 思维导图(XMind 8 兼容) |
| Graph | .graph.html |
D3.js v7 (CDN) | 力导向关系图,可点击跳转 |
# 自动按后缀分发,全部 8 种格式都 work:
python3 -m spyeyes user torvalds --save report.html
python3 -m spyeyes user torvalds --save report.xmind
python3 -m spyeyes user torvalds --save report.graph.html交互模式:选"保存报告 → 是"后会弹出 [1] JSON ... [8] Graph 数字菜单,
默认路径按 v1.8.0 智能路由(源码运行 → <项目根>/Downloads/,pip/brew 装 → ~/Downloads/spyeyes/,
也可用 SPYEYES_REPORTS_DIR=path 覆盖),保存完追问"还要保存其它格式吗?"可连续多种格式输出。
安全防护:HTML / Graph 用
_html_escape防 XSS;CSV 单元格首字符为= + - @ \t \r时前置'防 Excel/Sheets 公式注入;Graph 中嵌入 JSON 的</转义为<\/防</script>注入。
注意:
--save DIR/(目录形式,以/结尾或目录已存在)固定输出 JSON,按时间戳命名归档; 要选格式请用具体的文件路径如--save report.html- 报告内容跟随
--lang—— CSV 列头也会本地化(中文 UI 输出分类,平台,主页地址,状态)。 下游用 pandas/jq 等需要稳定列名的脚本,请用--lang en或直接读 JSON
# 安装测试依赖
pip install pytest pytest-cov
# 跑全部测试
pytest tests/ -v
# 带覆盖率报告
pytest tests/ --cov=. --cov-report=term-missing当前测试覆盖:
- ✅ 306 个测试,0.6 秒跑完(v1.2.0 完整覆盖)
- ✅ 覆盖纯函数 + HTTP mock + 边界条件 + SSRF/ReDoS 防御 + 8 种报告格式 × 2 种语言
- ✅ GitHub Actions 在 macOS / Ubuntu / Windows × Python 3.10-3.13 自动测试
- ✅ 独立 lint job(ruff + mypy + bandit)
# 安装运行依赖 + 测试依赖
pip install -r requirements-dev.txtSpyEyes/
├── spyeyes/ # 主包(v1.0.0 起)
│ ├── __init__.py # 主代码(含全部功能 + i18n + __version__)
│ ├── __main__.py # python -m spyeyes 入口
│ └── data/platforms.json # 3164 平台数据库(合并 Maigret + Sherlock + WhatsMyName)
├── README.md # 你正在看的这个(中文入口)
├── README.en.md # English entry
├── LICENSE # Apache 2.0
├── NOTICE # 版权声明
├── requirements.txt # 运行依赖
├── requirements-dev.txt # 开发/测试依赖(pytest, ruff, mypy, bandit)
├── docs/ # 📚 所有文档
│ ├── TUTORIAL.md # 详细教程
│ ├── CHANGELOG.md # 版本更新日志
│ ├── CONTRIBUTING.md # 贡献指南
│ └── SECURITY.md # 安全策略
├── tools/
│ └── build_platforms.py # 平台数据库重建脚本(拉取上游最新,原子写 + 重试)
├── tests/
│ ├── __init__.py
│ ├── conftest.py # autouse fixture(全局状态隔离)
│ ├── test_spyeyes.py # 主功能测试(220 个)
│ └── test_build_platforms.py # 构建工具测试(40 个)
├── .github/
│ ├── workflows/ci.yml # GitHub Actions CI(lint job + 多 OS × 多 Python 矩阵)
│ ├── ISSUE_TEMPLATE/ # bug / 功能 issue 模板
│ ├── PULL_REQUEST_TEMPLATE.md
│ └── dependabot.yml # 自动依赖更新
- 🛡 企业蓝队 / SOC:分析可疑 IP 来源、排查钓鱼邮件域名
- 🎯 红队 / 渗透测试:信息收集阶段的快速查询
- 🏆 CTF / OSINT 比赛:快速做题工具
- 🕵 安全研究:批量 IP 归属分析、Domain Reputation
- 📞 诈骗号码识别:判断陌生来电的归属与运营商
- 📧 邮件营销:邮箱清单的有效性预筛
- 🌍 个人调研:查 VPN 出口、检查 DNS 配置
欢迎 PR、Issue、Star!
请先阅读 CONTRIBUTING.md 了解开发流程和代码规范。
本项目采用 Apache License 2.0 开源。
Apache 2.0 比 MIT 多了明确的专利授权和商标保护,对二次开发和商业使用更安全。
任何人可以自由使用、修改、分发,包括商业用途,但需保留版权声明。
- 🌟 Google libphonenumber —— 业界最权威的电话号码库
- 🌟 ipwho.is —— 免费、稳定、信息丰富的 IP 地理位置 API
- 🌟 ipify.org —— 简洁的本机 IP 查询服务
- 🌟 所有为开源安全工具做贡献的开发者们 ❤️
本工具仅用于合法的安全研究、自查、CTF、教学等场景。
❌ 禁止用于:
- 跟踪、骚扰、人肉搜索任何个人
- 未经授权的网络扫描或入侵
- 收集后用于商业牟利或违法犯罪
✅ 允许:
- 对自己拥有的资产做安全自查
- 在书面授权范围内的渗透测试
- 完全公开信息的合法查询
- 教学、研究、开源贡献
使用者需自行承担一切法律责任。详见 TUTORIAL.md - 法律与道德提醒。
OSINT 信息收集 IP 追踪 电话号码查询 用户名搜索 WHOIS MX 记录 邮箱验证 子域名枚举 域名邮箱挖取 证书透明度 网络安全 渗透测试 CTF 工具 Python OSINT 中文 OSINT 工具 osint-tool ip-tracker phone-tracker username-search whois-lookup dns-lookup email-verification subdomain-enumeration subdomain-finder email-harvester crtsh certspotter certificate-transparency cybersecurity reconnaissance red-team blue-team pentest ctf
如果这个项目对你有帮助,请给个 ⭐ Star 鼓励一下!