MIT License

技术解读

以下内容由 GitRead 中文社区 编辑团队基于项目 README 与官方资料整理, 结合中文开发者的常见使用场景补充技术选型建议。具体以项目官方文档为准。

2720 个探针背后:kaifcodec/user-scanner 的 OSINT 工程化实践

项目背景与痛点

OSINT(公开情报)工具从来不缺,缺的是“能持续运行下去”的那一类。传统方案大致分两种。一种是 Sherlock、Maigret 这类用户名检索器,它们依靠硬编码的站点清单和一次 HTTP 状态码判定就下结论,站点改版后就会大面积失效。另一种是把零散的 API 调用拼成一个脚本集合,跑一次可以,想复用就得重写。

kaifcodec/user-scanner 选择的是第三条路:把“扫描向量”当成需要长期维护的一等公民。项目对外宣称维护着 2720+ 活跃向量,其中邮箱类 210+、用户名类 2510+。注意这个悬殊的比例:邮箱是站点内部标识,往往需要注册、验证甚至付费才能确认;而用户名是跨站的全局标识,可以检索的站点数量比邮箱多一个数量级。这个数字本身就是架构决策的产物,而不是简单的列表堆砌。

它真正解决的问题是:把“一次成功的情报检索”变成“一条可编排、可被 Agent 调用的能力”。而 MCP(Model Context Protocol)原生支持,正是它与其他同类工具拉开差距的关键。

核心技术揭秘

从工程角度看,这个项目更像一个向量驱动的扫描引擎,而不是一个 CLI 脚本。可以推断,它的核心抽象大致是:

  • 向量(Vector):每个站点是一个独立模块,声明目标类型、URL 模板、请求特征、命中判定规则、可信度权重;
  • 调度器:按类型路由到对应的向量池,统一处理并发、限速、超时、重试与失败降级;
  • 判定器:不只看 HTTP 200,还要结合响应体特征、重定向路径、页面指纹来降低误报;
  • 归一化层:把各站点各种异构的结果压成统一结构(平台名、URL、置信度、证据片段);
  • MCP 接口层:把上述能力暴露成工具调用,让 LLM Agent 可以“按需检索”而非一次性全量扫描。

数据流大致如下:

graph TD A[输入: Email 或 Username] --> B{"识别输入类型"} B -->|"Email"| C[邮箱向量池 210+] B -->|"Username"| D[用户名向量池 2510+] C --> E[调度器: 并发 限速 重试] D --> E E --> F[HTTP 探针与页面抓取] F --> G[判定器: 指纹 重定向 响应体特征] G --> H[证据归一化与置信度评分] H --> I[实体聚合与去重] I --> J[结构化输出 JSON 与报告] I --> K[MCP Server 工具接口] K --> L[LLM Agent 与自动化编排]

真正的技术难点集中在三处。其一是误报抑制:用户名在不同站点重名极普遍,“页面存在”不等于“此人存在”,必须引入负样本对照或页面指纹差异判定。其二是速率与封禁对抗:2500+ 向量并发打出去,几分钟内就会被 CDN 拉黑,所以限速策略、代理池、退避算法不是可选项而是必需品。其三是向量维护的熵增:站点改版、加验证码、迁移域名——2720 个模块的腐烂速度远超普通项目,这也是它强调“actively maintained”的原因。

功能亮点与差异

  • 2-in-1 的统一抽象:邮箱与用户名共用同一套向量协议,只是判定器不同,避免了双份代码库;
  • MCP 原生:这是最关键的差异化。传统 OSINT 工具的产出是终端文本,而 MCP 让扫描结果直接进入 Agent 的上下文,可以被链式调用(先查用户名 → 命中后查关联邮箱 → 再查泄露面);
  • 单输入深度提取:从一条 Email 出发做多级展开,本质是小规模的实体消歧与关联扩散;
  • 面向研究的可复现性:结构化输出比“截图式报告”更适合做证据留存。

相比 Sherlock 的纯存在性检测、Maigret 的广度优先策略,它更像“向量数量 + 可编程性”的组合拳。

应用场景与落地建议

适合:红队前期信息收集、企业品牌仿冒与账号冒用监测、威胁情报中的攻击者画像、开源情报教学与研究。

生产落地要注意几点。第一,别在裸网络环境全量跑——务必配代理池与保守限速,否则目标站点会直接把你拉黑。第二,结果必须二次复核,把置信度低的结果当线索而非结论。第三,合规红线:邮箱/用户名检索在很多司法辖区涉及个人数据,用于招聘背调、跟踪个人等场景风险极高,企业内部使用请先过法务。第四,把 MCP 层当成稳定接口,底层向量会频繁变动,不要直接依赖内部模块。

综合评价

优点:向量规模与持续维护的承诺在开源 OSINT 圈里相当少见;MCP 原生支持踩中了 Agent 时代的真实需求;2-in-1 的统一抽象干净利落;结构化输出对自动化流水线友好。

缺点:2720 个向量的维护成本注定会转嫁为结果漂移,长期可靠性取决于社区活跃度;判定逻辑的透明度值得关注——黑盒式“命中”在取证场景很难被采信;代理与限速这类工程配套需要用户自己补课;最重要的是,它的能力越强,滥用边界就越模糊。

一句话总结:它是一个工程质量高于平均水准的 OSINT 扫描引擎,而不是一个“查人神器”;把它当基础设施用,比把它当魔法用更合适。

关于

GitHub 原始描述(英文)

🕵️‍♂️ (2-in-1) Email & Username OSINT suite featuring native MCP support for deep data extraction just from a single Email/Username. Analyzes 2720+ actively maintained scan vectors (210+ email / 2510+ username) for security research, investigations, and digital footprinting.

描述取自 GitHub 官方 API,保持仓库作者书写的原文。

语言占比

Nix
Python

Release

README

User Scanner

User Scanner Logo

Discord Web App

kaifcodec%2Fuser-scanner | Trendshift


A powerful 2-in-1 OSINT suite engineered for deep Email and Username Intelligence.

With 2720+ total scan vectors—including 210+ email-integrated sites and 2510+ username platforms—you can map digital footprints, analyze target behavior, uncover interests, full metadata of usernames and verify account registrations in seconds.


WebVetted Sponsor Banner
Go beyond account enumeration. WebVetted turns an email or username into a complete identity investigation with deep OSINT enrichment, breach intel, AI analysis, and an interactive identity graph.
Start an Investigation →


banner-github
Comprehensive OSINT platform for professional investigators and analysts. Reverse email, phone number, and username search across 250+ modules. Automate your intelligence gathering with our powerful tools.
Get Started →


Proxy-Seller Banner
Get reliable proxies for web scraping and automation. Use promo code KAIF15 for 15% OFF!
Get Started with 15% OFF →


🔍 Looking for Phone Number OSINT? Check out our other project phonsint to uncover accounts, masked emails, and profile photos with zero SMS alerts. Explore phonsint →

✨ Key Features

  • 🔎 Deep Email & Username OSINT: Look up email registrations and perform advanced username profiling across 2710+ platforms.
  • 👤 Rich Metadata Scraping: Scrapes avatars, bio descriptions, follower counts, UID numbers, seller statuses, and account attributes.
  • 🔀 Cross-Scan & Pivot Engine: Mines handles, profile links, and exposed email addresses from initial scans, automatically pivoting across secondary target vectors.
  • 🤖 Model Context Protocol (MCP) Server: Native AI agent integration for Claude Desktop, Cursor, Antigravity, and LLMs to run autonomous OSINT scans and recursive pivots.
  • 🛡️ Hudson Rock Infostealer Breach Intel: Query infostealer malware breach logs using the --hudson flag for high-priority target correlation.
  • ⚡ High-Throughput Parallel Engine: Powered by httpx and curl_cffi for maximum concurrency with automated TLS fingerprint impersonation.
  • 🔀 Permutation & Alias Generator: Wildcard-based username variation generation to catch typosquatting or alternative aliases.
  • 📂 Multi-Format Reports: Automated exports to PDF (with profile photos), JSON, and CSV for pipeline integration.
  • 🌐 Advanced Proxy Pivoting: Built-in proxy rotation with protocol auto-detection (http, socks5) and pre-scan reachability check (--validate-proxies).
  • 🎨 Responsive Terminal UI: Dynamic progress tracking, self-adaptive category grids (-lu/-le), and clear status reporting.

🚀 Installation

# Upgrade pip and install user-scanner
python3 -m pip install --upgrade pip
pip install user-scanner

# Optional: Install with MCP Server support for AI agents
pip install "user-scanner[mcp]"

📦 Virtual Environment Setup

# Create and activate virtual environment
python3 -m venv .venv
source .venv/bin/activate  # On Windows: .venv\Scripts\Activate.ps1

# Install package
pip install user-scanner

❄️ Via Nix (Linux & macOS)

# Run instantly without installing permanently
nix run github:kaifcodec/user-scanner/main -- --help

# Drop into a temporary shell with user-scanner active
nix shell github:kaifcodec/user-scanner/main

💻 Usage Guide

1. Basic Username & Email Scanning

Scan a single username or email address across all available platform modules:

user-scanner -u johndoe             # Single username scan
user-scanner -e [email protected]   # Single email scan
user-scanner -u johndoe --email-domains global  # Try johndoe across provider domains

2. Cross-Scan & Pivot Intelligence

An email scan proves an account exists but rarely reveals a handle. --cross-scan mines exposed handles, profile links, and secondary email addresses from target profiles, pivoting into multi-pass reconnaissance across all matching platforms:

Pivot Direction What it Mines
-e → username Handles or social links exposed on an email’s registered profile
-u → username Secondary aliases advertised across target social profiles
-u → email Public email addresses published on target profile pages
-e → email Secondary addresses exposed by initial email profiles
user-scanner -u johndoe --cross-scan                                  # Pivot from username scan
user-scanner -e [email protected] --cross-scan                        # Pivot from email scan
user-scanner -e [email protected] --cross-scan --cross-links verified # Platform-verified links only
user-scanner -u johndoe --cross-scan --cross-depth 2        # Follow links two hops deep

💡 For confidence scoring, link classification rules, and cost models, see docs/CROSS_SCAN.md.

3. Hudson Rock Malware Breach Intelligence

Check if a target username or email address has been exposed in infostealer malware infection logs:

user-scanner -u johndoe --hudson             # Username malware log check
user-scanner -e [email protected] --hudson   # Email malware log check

🖼️ To view output terminal screenshots and visual previews, see docs/EXAMPLES.md.

4. Targeted Category & Module Scanning

Scan specific categories or individual modules, or list available modules in a responsive grid:

user-scanner -u johndoe -c dev                # Developer platforms only
user-scanner -e [email protected] -m github   # Single module check
user-scanner -u johndoe -m github,instagram   # Specific comma-separated modules

user-scanner -lu                              # List user categories & modules grid
user-scanner -le                              # List email categories & modules grid

5. Bulk File Scanning

Scan multiple targets from an input file (one target per line):

user-scanner -uf usernames.txt   # Bulk username scan
user-scanner -ef emails.txt      # Bulk email scan

6. Report Exports, Options & Proxies

# Export results to PDF, JSON, or CSV
user-scanner -u johndoe -f pdf -o report.pdf
user-scanner -u johndoe -f json -o results.json

# Verbose URL reporting and show all results (including not found)
user-scanner -u johndoe -v --all

# Rotate proxies with a pre-scan reachability check
user-scanner -u johndoe -P proxies.txt --validate-proxies

7. AI & LLM Agent Integration (MCP Server)

Connect user-scanner directly to AI coding assistants and LLM platforms via the Model Context Protocol (MCP). This enables AI agents (Claude Desktop, Cursor, Antigravity, Open-WebUI) to autonomously investigate handles and emails, pivot on exposed profiles, and analyze digital footprints.

Starting the Server
# Start the MCP server over standard I/O (stdio)
user-scanner-mcp

# Optional: Enable verbose logging to stderr
user-scanner-mcp -v
MCP Client Configuration

Add user-scanner to your client configuration (e.g. claude_desktop_config.json or mcp_config.json):

{
  "mcpServers": {
    "user-scanner": {
      "command": "user-scanner-mcp"
    }
  }
}
Exposed AI Tools
Tool Description Capabilities
scan_username Deep username OSINT & profile enrichment across platforms Targeted scans (category, module), recursive cross_scan, proxy injection, loudness toggles
scan_email Deep email verification & account discovery across platforms Target scoping, automated link pivoting (cross_scan), custom proxies, loudness toggles
list_available_modules Dynamic catalog & module discovery Allows AI agents to query all supported platforms and categories dynamically

An unknown category or module name is rejected with an error that suggests the closest valid names, so a typo never comes back as a scan with no findings. Use list_available_modules to see the full catalog.


📚 Documentation Hub

Explore detailed documentation guides in the docs/ directory:


🐍 Python Library Mode

Integrate the User Scanner engine directly into your Python scripts:

import asyncio
from user_scanner.core import engine
from user_scanner.email_scan.shopping import etsy

async def main():
    # Engine validates target against module and returns Result object
    result = await engine.check(etsy, "[email protected]")
    print(result.to_json())

asyncio.run(main())

💡 For complete Python API documentation and batch category checking examples, see docs/USAGE.md.


💖 Support the Project

Web platforms constantly update authentication flows. Maintaining over 2710+ scan modules requires around-the-clock commitment to keep the suite reliable and free for the cybersecurity community.

If user-scanner has saved you hours of manual pivoting or aided your investigations, consider supporting the project:

👉 Sponsor on GitHub

Project Sponsors

Huge thanks to our amazing sponsors who support the ongoing development of user-scanner!

soxoj
@soxoj
hienyimba
@hienyimba
InDieTasten
@InDieTasten

📜 Contributing

We welcome community contributions! Please read our Contributing Guidelines before opening a PR or submitting new scan modules.


⚠️ Disclaimer

This tool is provided strictly for educational purposes, authorized security research, and defensive OSINT investigations. The developers assume no liability and are not responsible for any misuse, unintended consequences, or legal actions resulting from the deployment of this software.

评论

暂无评论