OpenOSINT 是一个以 AI 智能体为核心的开源 Python OSINT 框架。
你只需用自然语言输入目标,智能体就会自动决定运行哪些工具,根据发现的信息进行链式调用,并保存结构化的 Markdown 报告。
演示

实际会话示例:
$ openosint
openosint ❯ investigate target@example.com
→ generate_dorks('target@example.com')
→ search_email('target@example.com')
✓ Found: Spotify, WordPress, Gravatar, Office365
→ search_breach('target@example.com')
✓ Found in 2 breaches: LinkedIn (2016), Adobe (2013)
→ search_username('target_handle')
✓ Found on: GitHub, Reddit, HackerNews, Twitter
╭──────────────── Report ────────────────╮
│ ## Online Presence │
│ Spotify · WordPress · Gravatar │
│ │
│ ## Data Breaches │
│ LinkedIn (2016) · Adobe (2013) │
╰────────────────────────────────────────╯
✓ Report saved → reports/2026-05-16_report.md
从邮箱 → 关联账号 → 自动用户名跳转 → 跨平台搜索,全程无需人工干预。
为什么要做这个工具
典型的 OSINT 调查工作流是这样的:
- 打开终端,用
holehe调查邮箱 - 复制找到的用户名
- 切换到
sherlock搜索用户名 - 打开浏览器手动查 HaveIBeenPwned
- 再开一个标签查 WHOIS
- 做笔记,不断重复
每个工具都是信息孤岛,每次跳转都是手动操作。调查逻辑只存在于你的脑子里,关掉终端就消失了。
OpenOSINT 解决了这个问题。
核心设计:为什么工具结果不会产生幻觉
大多数 AI 工具包装器都存在一个根本问题:模型可能生成看起来合理但实际上并不存在的结果。
OpenOSINT 使用 Anthropic 原生 tool use API。当模型需要调用工具时,它会硬停止并发出一个 tool_use 块。你的代码运行真实的二进制文件,真实的输出返回到上下文中。
while True:
response = client.messages.create(
model="claude-...",
tools=TOOL_SCHEMAS,
messages=messages
)
# 智能体完成 — 提取最终报告
if response.stop_reason == "end_turn":
break
# 智能体需要工具 — 运行真实二进制
if response.stop_reason == "tool_use":
tool_results = []
for block in response.content:
if block.type == "tool_use":
# 运行 holehe、sherlock 等真实子进程
real_output = await execute_tool(block.name, block.input)
tool_results.append({
"type": "tool_result",
"tool_use_id": block.id,
"content": real_output # 真实输出,不是生成的
})
messages.append({"role": "assistant", "content": response.content})
messages.append({"role": "user", "content": tool_results})
模型从不生成工具结果,它只读取真实输出。
如果 sherlock 找到 12 个档案,这 12 个 URL 会原封不动地返回上下文。模型无法凭空添加第 13 个不存在的结果。
工具结果的幻觉在架构层面被彻底排除,而不仅仅是通过提示词规避。
9 个内置工具
工具
后端
获取信息
search_email
holehe
邮箱关联的社交账号
search_username
sherlock
300+ 平台的账号
search_breach
HaveIBeenPwned v3
数据泄露记录和泄露数据类型
search_whois
python-whois
注册人、注册商、创建日期
search_ip
ipinfo.io
地理位置、ASN、主机名
search_domain
sublist3r
子域名枚举
generate_dorks
内置
12 个定向 Google Dork URL(无网络请求)
search_paste
psbdmp.ws
Pastebin 泄露内容搜索
search_phone
phoneinfoga
运营商、国家、线路类型
search_virustotal
VirusTotal API v3
70+ 引擎的恶意软件检测
search_shodan
Shodan API
网络资产和漏洞信息
如果某个依赖二进制未安装,该工具返回描述性错误字符串,其他工具继续正常运行。
三种使用方式
交互式 AI REPL(默认)
$ openosint
# 或
$ openosint shell
用自然语言输入目标或问题:
openosint ❯ investigate target@example.com
openosint ❯ 找出 johndoe99 的所有账号
openosint ❯ example.com 有哪些子域名?
openosint ❯ +14155552671 是手机号吗?
每次调查完成后,报告会自动保存到 reports/ 目录。
REPL 内置命令:
命令
说明
clear
重置对话记忆
save
手动保存最后一份报告
tools
显示可用工具及状态
history
浏览历史会话
config
显示当前配置
help
列出所有命令
exit 或 Ctrl-D
退出
直接 CLI(无需 AI)
适用于脚本编写和自动化:
# 邮箱账号枚举(默认超时:120 秒)
openosint email target@example.com
# 自定义超时
openosint email target@example.com -t 60
# 用户名搜索(默认超时:180 秒)
openosint username johndoe99
# 多目标调查
openosint multi targets.txt
# VirusTotal 检测
openosint virustotal 192.168.1.1
# 详细输出
openosint -v email target@example.com
无需 Anthropic API Key。
MCP 服务器
将全部工具暴露给任何兼容 MCP 的 AI 客户端。
注册到 Claude Code:
claude mcp add openosint python /path/to/OpenOSINT/openosint/mcp_server.py
claude mcp list # 验证
Claude Desktop 配置(~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"openosint": {
"command": "python",
"args": ["/path/to/OpenOSINT/openosint/mcp_server.py"]
}
}
}
也支持通过 Ollama 使用本地模型(无需 API Key):
openosint --provider ollama --ollama-model llama3.2
架构设计
代码库分为五个严格的层次,禁止向上层导入:
openosint/tools/ 核心工具层
真实二进制和 API 的异步封装
无状态。不依赖 AI。纯函数。
openosint/agent.py AI 智能体层
Anthropic tool use 循环
每次会话的对话历史
openosint/repl.py 交互式 REPL(prompt_toolkit + Rich)
openosint/mcp_server.py MCP 服务器(stdio 传输)
openosint/cli.py CLI 入口点
AI 层完全可选。没有 API Key 也可以使用 CLI 和 MCP 服务器。
安装
git clone https://github.com/OpenOSINT/OpenOSINT.git
cd OpenOSINT
pip install -e .
或直接从 PyPI 安装:
pip install openosint
安装外部工具:
pip install holehe sherlock-project sublist3r
环境变量配置:
export ANTHROPIC_API_KEY=sk-ant-... # AI REPL 必需
export HIBP_API_KEY=your_key # HaveIBeenPwned v3
export IPINFO_TOKEN=your_token # ipinfo.io 速率限制
export VIRUSTOTAL_API_KEY=your_key # VirusTotal
export SHODAN_API_KEY=your_key # Shodan
总结
OpenOSINT 提供三种使用方式:
openosint— AI REPL,适合完整的自动链式调查openosint email/openosint username— 直接 CLI,适合脚本和自动化- MCP 服务器 — 在 Claude Code / Claude Desktop 中直接运行调查
MIT 许可证。Python 3.10+。仅限授权的安全研究使用。
如果觉得有用,欢迎在 GitHub 点个 Star ⭐
- GitHub:github.com/OpenOSINT/O…
- 文档:openosint.tech
⚠️ 本工具仅供授权的安全研究、渗透测试和调查性新闻使用。用户须自行承担遵守适用法律(包括 GDPR、CCPA 等)的责任。详见 DISCLAIMER.md。