sherlock
sherlock-project/sherlock加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
假设你是一名安全研究员,收到一个举报称有人在多个社交平台上冒用他人身份。你手里只有一个用户名 steve_1987,想知道这个人注册了哪些平台。传统做法是:打开 Twitter 搜一遍,打开 Instagram 搜一遍,打开 GitHub 搜一遍……重复数十次,既费时又容易遗漏。
Sherlock 解决的就是这个痛点——它是一个开源的命令行工具,通过一个命令,同时查询 400+ 个社交网络平台,自动告诉你某个用户名是否被注册过。
Sherlock 由 Siddharth Dushantha 于 2018 年创建,灵感来自电视剧《神探夏洛克》中主角通过细致观察发现线索的能力。项目最初只是一个简单的 Python 脚本,如今已发展成一个拥有超过 9.2 万 Star、贡献者超过 500 人的成熟开源工具。
这个项目在 OSINT(开源情报收集)领域有着特殊的地位。随着社交媒体普及,"用户名"成为数字身份的重要标识——同一用户名在不同平台的出现,往往意味着同一个人在运营多个账号。Sherlock 把这种跨平台身份关联的能力,免费开放给所有人。

Sherlock 的工作方式并不复杂,但设计得很巧妙:
data.json(或从云端拉取),记录了 400+ 个社交平台的登录/个人主页 URL 模板requests-futures 实现异步并发,同时向多个平台发请求,大幅缩短查询时间
这种"穷举法 + 特征识别"的思路,简单但有效——它不依赖任何平台的 API,完全靠 HTTP 请求和响应特征来推断。
Sherlock 提供了丰富的命令行参数:
| 功能 | 参数 | 说明 |
|---|---|---|
| 单用户查询 | sherlock user123 | 查询一个用户名 |
| 批量查询 | sherlock user1 user2 | 同时查询多个 |
| 结果导出 CSV | --csv | 导出为 CSV 格式 |
| 结果导出 Excel | --xlsx | 导出为 Excel 格式 |
| 指定平台 | --site twitter | 只查特定平台 |
| 代理支持 | --proxy socks5://... | 通过代理发送请求 |
| 浏览器打开 | --browse | 在浏览器中打开所有结果链接 |
| 超时设置 | --timeout 30 | 单次请求超时时间 |
查询结果会生成一个文本文件,每个找到的账号显示为:
[+] user123 (Twitter): https://twitter.com/user123
[+] user123 (Instagram): https://instagram.com/user123
[+] user123 (GitHub): https://github.com/user123
Sherlock 的代码结构清晰,采用模块化设计:
sherlock.py:主入口,解析命令行参数,协调查询流程sites.py:平台信息管理,从本地或云端加载平台数据result.py:定义查询结果的数据结构(Claimed/Available/Unknown/Illegal)notify.py:结果通知,支持终端输出、文件写入、浏览器打开等多种方式resources/:内置的 data.json 和其他静态资源依赖栈非常轻量:Python 标准库 + requests + pandas(导出 Excel 用)+ colorama(彩色输出)+ PySocks(代理支持)+ stem(Tor 匿名网络支持)。
Sherlock 支持多种安装方式,对用户非常友好:
| 方式 | 命令 | 难度 |
|---|---|---|
| pipx(推荐) | pipx install sherlock-project | 极简 |
| pip | pip install sherlock-project | 极简 |
| Docker | docker run -it --rm sherlock/sherlock | 极简(无需 Python 环境) |
| 源码 | git clone && pip install . | 简单 |
Docker 方式是体验最快的——一行命令,不需要配置 Python 环境,即装即用。项目也提供了多阶段 Dockerfile,镜像体积控制在合理范围内。
Sherlock 是一把"双刃剑"。它本身是合法的 OSINT 工具,但被滥用的风险确实存在:
正当用途:
潜在滥用:
项目 README 明确提醒用户遵守当地法律,并且很多平台已将 Sherlock 的查询行为识别为自动化滥用,使用时需注意频率控制。项目本身也内置了 --timeout 和 --proxy 参数,引导用户以合理的速度进行查询。
Sherlock 是 OSINT 工具领域的标杆项目。它的成功催生了许多类似的工具(如 Whatsmyname、Namechk 等),也推动了"用户名枚举"这一细分领域的讨论。2024 年 GitHub 的 Star 历史显示,Sherlock 长期保持稳定增长,反映出 OSINT 需求在持续扩大——在社交媒体深度渗透的当下,跨平台身份发现的需求不会消失。
总结:Sherlock 是一个设计精良、维护活跃的 OSINT 开源工具。上手极简(pip 或 Docker 一行搞定),覆盖平台多(400+),代码质量好(模块化、测试覆盖、CI/CD),支持 CSV/Excel 导出和代理/Tor 网络。无论你是安全研究员、渗透测试工程师,还是对数字身份分析感兴趣的普通用户,Sherlock 都是值得收藏到工具箱里的实用利器。