RepoDaily · 2026-08-31 · Security tool

user-scanner:单个邮箱/用户名横扫 465+ 向量的 Python OSINT 套件

#7 Security tool Python +464 kaifcodec/user-scanner 打开仓库

kaifcodec/user-scanner 以一个邮箱或用户名为起点,覆盖 465+ 扫描向量(175+ 邮箱站点 / 290+ 用户名平台),内置自动 pivot、Hudson Rock 泄露情报与 MCP AI 代理集成,本期 464 星排名第 7。

项目类型Security tool
最适合需要从一个邮箱或用户名出发完成账号映射、元数据抓取与身份关联的 OSINT 分析师、红队与安全研究人员
风险等级中等——OSINT 扫描天然带法律与合规风险;代码为 MIT 许可,但由单一作者维护
评估时间30 分钟以内——在 Python 3.10+ 环境装好包,先用自己控制的账号跑一轮扫描,再看报告质量

核心问题: 你是否需要一个 MIT 许可、单命令行同时提供 465+ 邮箱/用户名检测、自动 pivot 与原生 MCP AI 代理集成的套件?

91/100

RepoDaily 采用评分

RepoDaily 将该项目的采用分评为 91/100(强):分数来自文章来源、安装路径、生产风险、差异化、许可证清晰度以及 AI/Agent 适配度。

基于 RepoDaily 来源和采用说明的方向性评分,不是基准测试。风险: 中
100证据质量

包含 5 个来源、覆盖 3 类来源;如有 RepoDaily 独有模块,会进一步提高证据分。

97可安装/可试用性

检测到 6 个工作流步骤、5 个下一步动作,以及 2 个命令/安装信号。

63维护可信度

趋势热度为 +464 stars;如内容中有 release、issue 或维护信号,会提高维护可信度。

93生产准备度

采纳风险标记为 medium,并包含 5 条安全说明与 4 条跳过条件。

100差异化

3 个机会视角、5 个替代方案,以及 4 个类型化模块支撑差异化判断。

82许可证清晰度

文章中包含许可证来源或许可证表述。

90Agent / AI 适配度

文章正文和元数据中检测到 8 个 AI/Agent 相关信号。

项目概览

user-scanner(v1.5.1.1)是一个 Python 编写的 OSINT 套件:输入一个邮箱或用户名,即可横跨 465+ 扫描向量——175+ 邮箱集成站点与 290+ 用户名平台。作者 Kaif,MIT 许可,2026-08-31 趋势榜第 7 名,当期 464 星;README 挂有 Trendshift 徽章,说明热度并非单日脉冲。

它与传统账号枚举脚本的区别在于 pivot 引擎:首轮扫描会抓取头像、简介、粉丝数、UID、卖家状态等元数据,并从结果里挖出新的用户名、主页链接与暴露的邮箱,再自动对二级目标继续扫描。基于通配符的排列与别名生成器负责覆盖拼写变体与抢注,--hudson 参数则把 Hudson Rock 信息窃取木马泄露日志的比对叠加在账号发现之上。

第二个差异点是代理集成。除主 CLI 外,包里还提供第二个入口 user-scanner-mcp,用于运行 Model Context Protocol 服务器:Claude Desktop、Cursor、Antigravity 等 LLM 客户端可以直接驱动扫描与递归 pivot。报告支持多格式导出,装上 pdf 扩展(reportlab、pillow、svglib)后可生成带头像照片的 PDF。

工程层面这是一个克制的小项目:flit 构建、要求 Python 3.10+、以 httpx 与 curl_cffi 构建高并发引擎并自动模拟 TLS 指纹;CONTRIBUTING.md 写明了精确的模块契约,让贡献者持续扩充向量数量。项目在 Windows、Linux、Termux 上均测试过,并有 Discord 社群(discord.gg/tVNrKVXb49)支撑。

解决什么问题

  • 账号枚举工具碎片化:用户名检测与邮箱注册探测通常是两套工具;user-scanner 在一个 CLI 内合并两者(user_scan 同步校验 + email_scan 异步流程)。
  • pivot 靠手工:命中结果泄漏出第二个用户名或邮箱时,通常要重新跑工具;跨扫描引擎把挖到的用户名、主页链接与暴露邮箱自动当作新目标。
  • 别名盲区:只扫一个用户名会漏掉抢注与拼写变体;通配符排列生成可扩展搜索空间。
  • 原始命令行输出不适合直接交付;带头像照片的 PDF 导出把扫描命中变成可分享的报告。
  • LLM 代理此前没有合规方式运行 OSINT 扫描;MCP 服务器把扫描器变成可调用的工具,而不只是终端程序。

工作原理

  1. 输入一个标识符(邮箱或用户名),扫描器向 465+ 向量并发铺开:175+ 邮箱集成站点、290+ 用户名平台。
  2. user_scanner/email_scan/ 下的邮箱模块运行异步多步流程:访问注册页、提取 CSRF token、提交探测载荷、按响应分类——例如 Mastodon 返回 'has already been taken' 即判定账号已注册,全部基于带超时与重定向处理的 httpx.AsyncClient。
  3. user_scanner/user_scan/ 下的用户名模块是同步可用性校验器,供主用户名扫描器调用。
  4. 跨扫描与 pivot 引擎抓取元数据(头像、简介、粉丝数、UID、卖家状态),并把挖到的用户名、主页链接与暴露邮箱作为新目标自动继续扫描。
  5. 可选层按参数或扩展启用:--hudson 查询 Hudson Rock 信息窃取日志;排列模式按通配符扩展别名变体;curl_cffi 以 TLS 指纹模拟支撑高并发。
  6. 结果以多格式报告落地(含带头像照片的 PDF,依赖 reportlab/pillow/svglib),或经 MCP 服务器交给 AI 代理。

架构解读:两套扫描引擎,一份 Result 契约

  • CONTRIBUTING.md 把代码分为两半:user_scanner/user_scan/* 是同步用户名可用性校验器;user_scanner/email_scan/* 是异步多步邮箱流程,按 social/、dev/、community、creator 等类别子目录组织。
  • 每个邮箱模块必须导出 async def validate_<service>(email: str) -> Result,使用 httpx.AsyncClient 并设置合理超时与 follow_redirects,docstring 需写明 API key、速率限制与负责任使用说明。
  • 共享的 Result 类型位于 user_scanner.core.result;Mastodon 参考实现在 'has already been taken' 时返回 Result.taken,在 IP 被标记或 429 时返回 Result.error。
  • pyproject.toml 定义两个控制台入口:user-scanner = user_scanner.__main__:main 与 user-scanner-mcp = user_scanner.mcp.server:main,后者即 MCP 服务器。
  • 模块文件名必须是小写平台名——github.py、reddit.py、x.py、pinterest.py——向量覆盖与文件树一一对应。

命令面:入口、参数与依赖约束

  • 包内附带两个控制台脚本:user-scanner 用于交互式 CLI 扫描,user-scanner-mcp 用于向支持 MCP 的 AI 客户端暴露能力。
  • --hudson 开启 Hudson Rock 信息窃取日志查询,用于高优先级目标关联。
  • 限流提示内建在模块报错里:遇到 HTTP 429 时 Mastodon 模块返回 'Rate limited; try using the -d flag',说明常规使用中有延迟/限速参数。
  • 要求 Python >= 3.10;核心依赖锁定较紧:httpx[http2]>=0.27,<0.29、socksio>=1.0,<2、colorama>=0.4,<1、curl_cffi>=0.7,<1、rich>=13。
  • 可选扩展按能力门控:pdf(reportlab>=4、pillow>=10、svglib>=1.5)负责 PDF 报告;mcp(mcp>=1.2.0,<2)负责代理服务器;dev(pytest、pytest-cov、pytest-anyio)面向贡献者。

集成面:MCP 代理、泄露情报与报告

MCP 服务器是头号集成点。装上 mcp 扩展后,user-scanner-mcp 会运行一个 Model Context Protocol 端点,Claude Desktop、Cursor、Antigravity 都能调用,代理可以自行串联扫描与递归 pivot。这把一个纯终端工具变成了可组合的代理能力——同类 OSINT 工具大多还做不到这一点。

泄露上下文来自 Hudson Rock:--hudson 会把扫描标识符与信息窃取木马的泄露日志比对,帮助识别凭据可能已经外泄的高优先级目标。报告侧以多格式导出收尾,pdf 扩展(reportlab/pillow/svglib)可生成嵌入头像照片的 PDF。

维护风险:单一作者与持续衰减的目标面

  • 版本 1.5.1.1,唯一署名作者 Kaif(kaifcodec@gmail.com),MIT 许可日期为 2025 年。
  • 465+ 向量只有在各平台注册页与 API 保持现有形态时才有价值;模块失效是该品类的结构性问题,项目的对策是文档化的贡献契约,而非付费数据源。
  • 测试与 lint 基础设施存在:pytest 配置了 testpaths = ["tests"],dev 扩展引入 pytest-cov 与 pytest-anyio,ruff 规则已配置——但 tests/ 会被排除出 flit sdist。
  • 对一个年轻项目而言社区信号不错:Discord 服务器、Trendshift 徽章,以及两家商业赞助商(WebVetted、Noimosiny)——它们的付费平台正好位于这款免费工具的上游。

谁适合关注

适合关注

  • 需要从单一邮箱/用户名绘制目标数字足迹的 OSINT 分析师与威胁研究人员。
  • 在授权交战规则内做侦察的红队人员。
  • 希望把泄露情报与账号发现合并在同一次扫描里的调查人员(--hudson)。
  • 要把 LLM 代理接入真实工具的开发者:MCP 服务器让 Claude Desktop、Cursor、Antigravity 可以直接调用扫描。
  • 移动端优先的用户:在 Termux、Windows、Linux 上都经过测试。

可以先跳过

  • 任何未经授权对第三方进行探测的场景——模块会访问真实注册端点,法律风险真实存在。
  • 需要 SLA 保障的商业平台的使用方;项目赞助商 WebVetted、Noimosiny 正好占据这一层。
  • 合规受限环境:curl_cffi 的 TLS 指纹模拟与探测流量可能违反目标站点条款。
  • Python 版本低于 3.10 的环境。

风险与注意事项

中

MIT 许可、已打包、文档精确,但 OSINT 探测自带法律与伦理风险,且 465+ 模块的准确度依赖单一作者持续跟进各站点变化。

  • 邮箱模块会探测真实注册流程;未经授权扫描第三方标识符可能违反站点条款与当地法律。
  • curl_cffi 的 TLS 模拟提高了 IP 被标记的概率——Mastodon 模块就显式处理了 'Your IP has been flagged' 响应。
  • 单一维护者(Kaif);已审阅文件中除 1.5.1.1 版本号外没有发布说明或变更日志。
  • 向量衰减是结构性的:任何平台改版都可能让某个模块悄然失效。
  • 每次扫描都会把目标标识符发送到 465+ 个第三方站点;运行前先想清楚这会暴露多少调查行为。
  • CONTRIBUTING.md 的 Mastodon 示例在探测载荷里硬编码了示例密码字符串——注册探测的常规做法,但审计代码时需要知悉。
  • 许可清晰:MIT(Copyright (c) 2025 Kaif),允许内部使用与修改。
  • 基础安装依赖面很小(httpx、curl_cffi、socksio、colorama、rich);更重的栈只随 pdf 与 mcp 扩展进入。
  • CONTRIBUTING.md 要求每个贡献模块在 docstring 中写明速率限制并附负责任使用说明。

替代方案比较

方案适用场景代价
只需要跨社交网络的用户名枚举,想要最经受过考验的单用途工具免费,开源
holehe
起点是邮箱,只想知道该地址注册了哪些站点免费,开源
Maigret
更看重深度用户名画像与报告输出,而非邮箱+用户名合并覆盖免费,开源
blackbird
想要一次运行同时查邮箱与用户名,但不需要 MCP 代理层免费,开源
WebVetted
需要带泄露情报、AI 分析与身份图谱的商业托管调查平台,而不是命令行工具商业产品(本项目赞助商)

这个趋势说明了什么

MCP 原生 OSINT 仍然稀缺

多数 OSINT 命令行工具早于代理时代。user-scanner 提供独立的 user-scanner-mcp 入口与 mcp 扩展,代理平台无需 shell 封装即可获得现成的扫描能力。

安装 mcp 扩展,把 Claude Desktop 或 Cursor 指向 user-scanner-mcp,确认一次扫描能经代理完整往返。

向量准确度才是护城河

465+ 向量只有在持续正确时才有意义。validate_<service>(email) -> Result 契约配合 httpx.AsyncClient 降低了单个模块的维护成本,这正是该品类覆盖面能复利增长的方式。

挑五个你熟悉的平台,用自己控制的账号扫描,统计准确命中与误报后再决定是否采用。

泄露情报融合压缩分诊步骤

--hudson 把 Hudson Rock 信息窃取日志比对并入账号发现同一次运行,省去了两个数据视图之间的人工交叉核对。

用你自己的一个标识符分别带与不带 --hudson 运行,比较报告差异。

下一步建议

先扫描你自己控制的账号

检验一个 465 向量套件最快的方法,是把它指向你拥有的账号。对照已知真实情况的命中率、误报与报告质量,比任何功能列表都更有说服力。

  1. 在 Windows、Linux 或 Termux 上准备 Python 3.10+ 环境并安装 user-scanner 包。
  2. 用你自己的某个用户名在 290+ 用户名平台上扫描,记录命中与漏报。
  3. 换用你控制的邮箱地址重复一次,观察 email_scan 异步模块如何探测注册流程。
  4. 对同一标识符加上 --hudson,看泄露日志比对如何叠加在账号发现之上。
  5. 装上 pdf 扩展导出 PDF 报告,判断输出是否符合你的案件交付标准。

RepoDaily 判断

user-scanner 把一整套 OSINT 闭环压缩进一个 MIT 许可的 Python 包:465+ 邮箱与用户名向量、从挖取结果自动 pivot、--hudson 的 Hudson Rock 泄露比对、PDF 报告,以及把整套能力变成代理可调用工具的原生 MCP 服务器。代价是品类固有的:对第三方目标的法律风险、真实探测带来的限流与 IP 标记,以及 465 个模块需要单一作者持续对齐不断变化的注册页。对授权调查工作,它有资格排在工具箱前列;对未经当事人同意的对象,完全不该运行。

信息来源