Maigret:用户名溯源 3000+ 站点的 OSINT 工具
posts posts 2026-04-30T10:07:02+08:00Maigret 是一款基于 Python 的开源 OSINT 工具,通过用户名即可在全网 3000+ 站点范围内检索目标人物的账户存在性,并提取可用信息。本文解析其核心机制(递归搜索、自动更新站点库、信息提取)、安装方法、最小示例、Python 嵌入用法及适用边界。技术笔记OSINT, Python, 信息安全, 用户名枚举, 开源工具Maigret:用户名溯源 3000+ 站点的 OSINT 工具
项目概览
Maigret(发音接近"梅格瑞",命名来源于福尔摩斯小说中的侦探 Jules Maigret)是一款开源的 OSINT(Open Source Intelligence,公开来源情报)工具,核心能力是:只需给出一个用户名,在 3000+ 个网站上自动检测该用户名是否已注册,并尽可能提取账户相关的公开信息。
该项目由 soxoj 开发维护,当前版本 0.6.0(2025-04-10),最近一次提交为 2026-04-29——五年间持续活跃,GitHub 累计收获 20,281 颗 Stars 和 1,422 个 Forks,是用户名枚举(username enumeration)领域最流行的开源方案之一。
Maigret 的设计目标不是入侵系统,而是利用各平台"用户名已被占用"这一公开事实进行溯源。 项目明确声明仅用于教育和合法用途,使用者需自行遵守当地法律(GDPR、CCPA 等)。
核心能力一览
| 能力 | 说明 |
|---|---|
| 站点覆盖 | 支持 3,157 个站点(持续更新),默认扫描流量排名前 500 的站点,-a 参数可扫描全部 |
| 递归搜索 | 发现用户名后,自动提取关联 ID,再以新 ID 继续搜索,形成网络扩展 |
| 信息提取 | 集成 socid_extractor 库,从个人主页中提取邮箱、头像、Bio、关联账户链接等 |
| 多格式报告 | 支持 HTML、PDF、XMind 8(图形化思维导图)、JSON、NDJSON、CSV、TXT |
| 匿名访问 | 支持 Tor、I2P 和任意 SOCKS5/HTTP 代理,可访问 .onion / .i2p 域名 |
| Web UI | 内置 Web 界面,提供结果关系图谱和多种格式报告下载 |
| Python 嵌入 | CLI 仅是异步函数的封装,可作为库直接引入 Python 项目 |
| 零 API Key | 所有检测基于 HTTP 请求,无需任何平台授权 |
工作原理:递归 + 站点自动更新
Maigret 的技术架构围绕两个核心循环展开,理解它们是掌握这款工具的关键。
1. 站点检测循环
每个站点的检测逻辑统一抽象为"探测器"(probe),核心流程如下:
- 根据目标用户名构造该站点的个人主页 URL(不同站点 URL 格式各异,Maigret 维护了一个 3,157 条记录的映射库)
- 发送 HTTP 请求,检查响应状态码和页面内容
- 判断"用户名已被占用"还是"该账户不存在"(部分站点返回 404,部分返回 200 但有特定提示文本)
- 若检测到账户存在,调用 socid_extractor 提取页面中的结构化信息
用户输入: taylor_swift_1989
↓
Maigret 构造 URL → https://www.instagram.com/taylor_swift_1989/
↓
发送 GET 请求(支持自定义 User-Agent / 代理 / Tor)
↓
分析响应 → 找到 Profile 页面特征
↓
socid_extractor 提取 → 用户 ID(数字)、Bio、头像 URL、关联账户链接等结构化信息防屏蔽机制:Maigret 会自动处理部分站点的 Cloudflare 防护、验证码和请求频率限制。对于 taplink.cc 等使用 Cloudflare 的站点,最近的 PR(#2308)已切换为模拟浏览器 User-Agent 以绕过检测。
2. 递归扩展循环
这是 Maigret 与同类工具最显著的差异点。当某个站点的检测返回个人主页 URL 后,Maigret 会:
- 解析页面中所有外部链接和 ID 标识符
- 将这些新发现的标识符(用户名、邮箱后缀、数字 ID 等)作为新的搜索关键词
- 启动新一轮站点检测,从而发现目标在更多平台上的关联账户
这一机制使其能够从一个平台的"taylor_swift"账户出发,层层扩散至 Twitter、GitHub、YouTube 等多个平台,最终构建出目标人物的数字轮廓图谱。
3. 站点数据库的自动更新
Maigret 每次运行时(距上次运行超过 24 小时)会自动从 GitHub 下载最新的站点数据库,该数据库包含每个站点的:
- 站点名称、URL 模板、图标 URL
- 认证状态(是否需要登录才可查看)
- 标签:站点分类(如 social、photo、coding)和国家代码(如 us、cn、ru)
- 流量排名(来自 Majestic Million)
- 检测方式(status_code、message、redirect 等)
若离线运行,Maigret 会回退到内置的数据库,保证工具仍可使用。
安装与最小示例
环境要求
- Python 3.10 或更高版本
- 无需其他系统依赖(跨平台)
安装方式
# 从 PyPI 安装
pip install maigret
# 或者从源码克隆
git clone https://github.com/soxoj/maigret && cd maigret
pip install .不安装任何软件?可以通过以下途径直接运行:
- Telegram Bot:t.me/maigret_search_bot
- Google Cloud Shell:点击在 Cloud Shell 中打开
- Google Colab:提供可直接运行的 Notebook
- Docker:
# CLI 模式 docker run -v /mydir:/app/reports soxoj/maigret:latest username --html # Web UI 模式(访问 http://localhost:5000) docker run -p 5000:5000 soxoj/maigret:web
最小示例
# 检测单个用户名(默认扫描流量排名前 500 的站点)
maigret taylor_swift
# 扫描全部 3000+ 站点
maigret taylor_swift -a
# 仅在标记为 photo 和 dating 的站点中搜索
maigret taylor_swift --tags photo,dating
# 生成 HTML 报告
maigret taylor_swift --html
# 生成 PDF 报告
maigret taylor_swift --pdf
# 通过 Tor 代理发送请求
maigret taylor_swift --tor-proxy socks5://127.0.0.1:9050Python 嵌入用法
Maigret 的 CLI 是围绕一个异步函数的薄封装,可以直接引入 Python 项目。官方导出的核心接口为:
import asyncio
import logging
from maigret import search
from maigret.sites import MaigretDatabase
async def search_username(username: str):
logger = logging.getLogger("maigret")
db = MaigretDatabase()
site_dict = db.get_all_sites()
results = await search(
username,
site_dict=site_dict,
logger=logger,
timeout=5,
)
# results 为 dict,键为站点名,值为包含 found/status/url/extract_data 等字段的 dict
for site_name, result_data in results.items():
if result_data.get("found"):
print(f"[+] Found on {site_name}: {result_data.get('url')}")
if result_data.get("extract_data"):
print(f" Data: {result_data.get('extract_data')}")
asyncio.run(search_username("taylor_swift"))完整的异步调用模式、站点标签过滤和自定义通知器用法,请参考官方 Library Usage 文档。
适用场景与边界
适合的场景
- 安全审计:验证某员工是否在未授权平台注册了与公司相关的账户
- 数字足迹调查:了解某人在网络上的整体存在情况
- 社会工程学防御:了解攻击者可能通过公开信息构建的画像
- 失踪人口/案件调查:在获得合法授权的情况下追踪目标网络身份
- 红队行动:测试组织对外暴露的数字身份信息
边界与局限
- Maigret 不突破任何认证系统:它只是检测"公开可见"的信息,而非破解账户。
- 检测结果受限于站点的反爬策略:Cloudflare、验证码、高频限制等会导致部分站点漏检。
- 误报管理是持续维护工作:README 提到"站点检查会随时间失效,需要主动维护",因此 Maigret 维护者长期处理误报(false positive)问题,2025-2026 年间已有多次批量禁用/修复误报站点的 PR。
- 不适用于深度匿名化评估:它只能检测已知站点的账户,无法发现所有在线身份。
总结
Maigret 是目前最完整的开源用户名 OSINT 工具之一,凭借 3000+ 站点覆盖、递归搜索、自动化信息提取和灵活的 Python 嵌入能力,为安全研究人员和分析师提供了高效的数字足迹构建方案。
项目五年持续活跃,维护质量高(依赖更新及时、误报处理迅速),且已有专业商业产品(Social Links API、Crimewall)基于 Maigret 构建。MIT 许可证允许免费商用,但若需要每日更新的站点数据库和专用 API 接口,可联系作者获取商业支持。
立即体验:pip install maigret && maigret <你的目标用户名>
参考链接
- GitHub 仓库:https://github.com/soxoj/maigret
- 官方文档:https://maigret.readthedocs.io/
- PyPI 主页:https://pypi.org/project/maigret/
- Telegram Bot:https://t.me/maigret_search_bot
- 站点列表:https://github.com/soxoj/maigret/blob/main/sites.md
- 商业合作联系:maigret@soxoj.com