关于 OSINT
OSINT 是面向安全研究人员和网站运营者的域名、IP 与网站调查 MCP 服务。它整合公开记录、基础设施比较和有限的主动检查,并保留证据及未完成检查的信息。
主要功能
- 01单域名与批量侦察
- 02比较域名共享基础设施
- 03检查网站信息与证据信号
- 04查询 DNS、RDAP、TLS 和邮件安全
- 05查看证书与网页存档历史
适用场景
- 01初步排查可疑网站
- 02比较多个域名的基础设施
- 03检查域名安全配置
- 04查看证书和网页快照历史
MCP 相关
向 MCP 客户端提供调查工具及证据报告。客户端可调用单项查询,也可通过域名和网站报告组合检查。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
15收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| domain | string | 是 | 域名,例如“example.com”。完整 URL 也可使用,但只会采用主机名。 |
| include_active | boolean | 否 | 同时连接到网站以获取 HTTP 标头、TLS 和 MTA-STS 策略。设为 false 可仅使用公共 API 和 DNS。 |
| include_subdomains | boolean | 否 | 在证书透明度日志(crt.sh)中查询子域名。这是最耗时的部分;设为 false 可将运行时间缩短至几秒,而非最长一分钟。 |
详细介绍
osint-mcp
用于调查域名、IP 和网站的 MCP 工具。查询公开记录、比较基础设施、一次检查多个域名,或收集可疑网站背后的详细信息。无需 API 密钥。
调查域名时,我厌倦了在 whois、crt.sh、Wayback Machine 和 Shodan 标签页之间来回切换,所以这个工具可以让模型代劳并汇总结果。
工具
| 工具 | 功能 | 来源 |
|---|---|---|
recon_domain | 域名概览、重点信息,以及各项检查的覆盖情况 | RDAP、DNS、电子邮件、CT 日志、HTTP、TLS、RIPEstat 和 InternetDB |
recon_batch | 最多生成十份域名报告,同时运行三个检查;每份报告都会保留数据源故障信息 | 公共 API + DNS;直接检查为可选项 |
compare_domains | 查找共享 IP、名称服务器、邮件服务器和注册商,并提供每个匹配项背后的记录 | DNS + RDAP |
investigate_site | 页面详情、显示的公司 ID、法律/联系页面、注册信息、存档快照、HTTP 和 TLS 检查,并提供具体信号和未执行的检查 | 网站 + 公共数据源 |
certificate_history | 证书颁发者、有效日期、相关名称,以及 CT 条目的链接 | crt.sh |
domain_whois | 注册商、创建/到期时间、名称服务器、滥用联系信息 | RDAP (rdap.org) |
ip_whois | 网络所有者、CIDR、国家/地区、滥用联系信息、PTR | RDAP + 反向 DNS |
dns_lookup | A、AAAA、CNAME、MX、NS、TXT、SOA、CAA(或自选记录类型) | 你的解析器或自定义解析器 |
subdomains | 在证书透明度日志中发现的子域名 | crt.sh |
wayback | URL 的存档快照,支持 example.com/* | Wayback CDX API |
http_headers | 状态码、重定向链、响应头、缺失的安全响应头 | 直接请求 |
shodan_internetdb | 开放端口、主机名、CPE、已知 CVE | Shodan InternetDB(免费) |
email_security | SPF、DMARC、MTA-STS、TLS-RPT、DKIM,并按 A-F 评级 | DNS |
tls_certificate | 颁发者、到期时间、SAN、TLS 版本,以及证书无效的原因 | 直接连接 |
asn_lookup | 宣告某个 IP 的 AS、所有者,以及该 AS 的所有前缀 | RIPEstat |
http_headers、tls_certificate 和 investigate_site 会直接联系网站。email_security 可以获取其 MTA-STS 策略。recon_domain 默认包含这些直接检查;设置 include_active=false 可跳过 HTTP、TLS 和 MTA-STS 策略获取。
recon_batch 默认关闭直接检查。compare_domains 仅使用公共 API 和 DNS。DNS 查询仍会经过解析器,并可能访问域名的权威名称服务器。不会进行端口扫描、目录暴力破解、表单提交或浏览器脚本运行。
调查
对于单个域名,请从 recon_domain 开始。它的 coverage 字段会说明哪些检查成功、失败、返回了部分数据或被跳过。某个来源不可用时,错误会留在对应部分,不会抹去其他结果。IPv4 和 IPv6 地址都会纳入检查,每个域名最多提供三个地址的详细信息。
对于一组域名或域名列表,请使用 recon_batch。它最多接受十个条目,会移除重复的主机名,并限制为每次处理三个域名。每个域名的截止时间为 90 秒。incomplete_domains 便于查找失败项。子域名历史记录和直接连接默认均处于关闭状态。
要检查网站之间是否可能存在关联,请使用 compare_domains。它报告的是共享基础设施,而非共同所有者的判定。CDN 地址、Google 邮件服务器或热门注册商可能出现在成千上万个互不相关的域名中。DNS 和 RDAP 检查失败时会明确显示,不会被当作检查无异常。
对于需要检查的网站或网店,请使用 investigate_site。它会读取提供的页面,并可选地读取同源下最多三个链接指向的联系或法律页面。它会提取标题、描述、显示的公司标识、表单目标和链接域名,然后将这些信息与公开查询结果结合。HTML 会作为文本读取;脚本、表单和链接资源都不会执行。
报告包含 signals,每项都指向其证据;以及 unavailable 列表。其 assessment 结果为 signals_collected 或 incomplete。这两种结果都不表示网站安全。它无法确认商品是否会送达、评论是否真实、产品是否属实,也无法确认公司号码的所有权。页脚中复制的号码只是观察到的声明,并非已核实的注册信息。
可选的 reference_domain 会将域名拼写与您已信任的域名进行比较。公共后缀(包括 github.io 等私有后缀)取自软件包内置列表,无需下载。拼写相似是检查 URL 的理由,并非冒充的证据。
certificate_history 会读取 crt.sh 的签发记录,并报告重复 ID 和数据截断情况。它不会告知当前提供的是哪个证书;要查询当前证书,请使用 tls_certificate。
来源与时效性
MCP 结果包含 checked_at、evidence 列表,以及一条外部文本属于不可信数据的提示。证据记录包含来源 URL、响应状态、收集时间,以及响应是否来自缓存。DNS 证据会注明查询的名称和解析器类型。
checked_at 是报告时间。fetched_at 是此工具获取来源响应的时间,并非提供方最后更新底层数据的时间。缓存响应会保留其原始收集时间和过期时间。0.3.0 之前创建的缓存条目,在再次获取之前,其收集时间未知。
记录、页面标题和其他外部字符串可能包含误导性文本或指令。它们是需要检查的证据,绝不是提供给已连接 Agent 的指令。最终解读仍由调查人员负责。
直接请求仅接受公共 HTTP/HTTPS 目标。私有、本地、组播和保留地址均会被阻止,重定向目标也不例外。连接使用经过检查的 DNS 地址,同时在 HTTP 和 TLS 中保留主机名。读取 HTTP 标头时不会下载最终页面正文。JSON 响应大小上限为 8 MiB;网站页面为 512 KiB;MTA-STS 策略为 64 KiB。法律页面重定向不得离开原始源。不会使用环境代理。
安装
需要 Python 3.10+。
pip install osint-mcp-server
如果使用 uv,则无需安装任何内容,只需将客户端指向 uvx(见下文)。
Claude Desktop
将以下内容添加到 claude_desktop_config.json:
{
"mcpServers": {
"osint": {
"command": "uvx",
"args": ["osint-mcp-server"]
}
}
}
如果通过 pip 安装,也可以只使用 "command": "osint-mcp-server",无需任何参数。
Claude Code
claude mcp add osint -- uvx osint-mcp-server
Cursor、Windsurf 等工具使用与 Claude Desktop 相同的 JSON。
更新
对于 pip 安装:
python -m pip install --upgrade osint-mcp-server
对于会启动 uvx 的客户端,如果希望 uv 检查最新的软件包,请在 args 中使用 osint-mcp-server@latest。使用 [email protected] 可固定到此版本。更新后请重启 MCP 服务。现有的 pip 安装不会自动更新。
对于支持配置工具超时的客户端,单次调查至少预留 120 秒,完整批次至少预留 360 秒。重试后,crt.sh 和 Wayback 可能需要更长时间;如果只需要一个答案,请使用耗时较短的工具。
示例提示词
- “对 example.com 进行侦察,并告诉我有哪些值得注意的地方”
- “有人能伪造来自我们域名的电子邮件吗?我们应该先修复什么?”
- “这 20 个域名中,哪些证书会在本月到期?”
- “AS13335 公布了哪些 IP 地址范围?”
- “检查这 5 个网站的安全标头,并告诉我哪些最糟糕”
- “example.com 的哪些子域名解析到了有开放端口的目标?”
- “example.com/about 在 2015 年是什么样子?”
- “比较这三家商店:它们是否共用主机、邮件服务器或注册商?列出实际匹配项”
- “调查这个商店 URL,包括联系页面,并告诉我哪些检查未能完成”
- “examp1e.com 看起来像 example.com 吗?收集证据,但不要称其为骗局”
- “对这十个域名进行侦察,不要连接到它们的网站”
- “显示此域名最近的 20 条证书记录,以及其中包含的名称”
缓存
API 响应(RDAP、crt.sh、Wayback、RIPEstat、InternetDB)会在 ~/.cache/osint-mcp/cache.sqlite3 中缓存 6 小时,主要是为了避免对 crt.sh 造成过多请求。DNS、TLS 和 HTTP 检查始终实时进行。
OSINT_MCP_CACHE=off # disable
OSINT_MCP_CACHE_TTL=3600 # seconds
OSINT_MCP_CACHE_PATH=/tmp/x.db
注意事项
- crt.sh 和 Wayback CDX API 速度较慢,而且经常返回 502/503。服务会重试几次;重试后,单个请求最长可能需要三分钟。批量域名检查则会在 90 秒后停止。
- InternetDB 并非实时数据,而且只包含 Shodan 实际扫描过的 IP。
- 无法列出 DKIM 选择器;
email_security会尝试常见选择器。如果知道自己的选择器,请传入dkim_selectors。 - 某些 TLD 通过 rdap.org 无法返回 RDAP 数据。未收到响应并不能证明该域名未注册。
- 网站检查会读取服务器渲染的 HTML。仅通过 JavaScript 加载的内容不会显示。此工具不会绕过机器人拦截,也不会登录。
开发
git clone https://github.com/robyroro/osint-mcp
cd osint-mcp
pip install -e . pytest ruff build
ruff check src tests
pytest
python -m build
测试使用合成数据和模拟的网络响应,涵盖真实的 MCP stdio 握手、数据源故障、缓存迁移、有界批次以及被阻止的网络目标。CI 会在 Linux 和 Windows 上运行 Python 3.10、3.12 和 3.14。
发布工作流会在 v* 标签上运行。它会检查版本、运行测试、构建软件包、发布到 PyPI,然后更新官方 MCP Registry。仅推送到 GitHub 不会更新已安装的软件包或目录中的描述。
使用 MCP inspector 试用:
npx @modelcontextprotocol/inspector osint-mcp
请合理使用
此工具只获取公开数据,但仍请仅将其用于你自己的内容、范围内的漏洞赏金目标或研究。不要用它来针对他人。
许可证
MIT © Robert Vind-Gardoș (@robyroro)
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。