Sherlock 是开源 OSINT(开源情报)用户名查询工具
Sherlock 详细部署教程
1. 项目简介
Sherlock 是一款开源 OSINT(开源情报)用户名查询工具,可以根据输入的用户名,在 400+ 公开社交网络平台中自动检测该用户名是否存在。传统方式需要人工逐个平台搜索,而 Sherlock 可以自动化完成查询,大幅提高信息收集效率。
核心特性:
- 跨平台批量探测:给定一个或多个用户名,并发请求数百个站点,依据 HTTP 状态码、页面特征或重定向行为判定账号是否被占用
- 多种输出格式:支持文本、CSV、Excel(XLSX)等多种格式
- 灵活的查询控制:可指定特定平台、限定时间范围、控制输出详细程度
- 网络代理支持:支持 HTTP 代理、SOCKS5 代理等
版本信息:当前最新版本为 v0.16.0,该版本显著减少了误报率。
应用场景:用户名资产检查、数字身份分析、网络安全学习、OSINT 信息收集、企业品牌保护。
使用提醒:Sherlock 仅应用于授权的信息安全测试和学习研究,使用时需遵守当地法律法规。
2. 部署前准备
2.1 系统要求
| 项目 | 配置要求 |
|---|---|
| 操作系统 | Linux、macOS、Windows |
| Python | 3.10+(v0.16.0 已弃用 3.8/3.9 支持) |
| 内存 | 1GB 以上(Docker 方式) |
| 磁盘 | 10GB 以上(Docker 方式) |
| 网络 | 稳定的互联网连接 |
2.2 重要警告
根据官方文档,ParrotOS 和 Ubuntu 24.04 上由第三方维护的包已损坏,这两个系统的用户应改用 pipx/pip 或 Docker 安装。
3. 安装方式
Sherlock 提供三种主要安装方式,根据你的使用场景选择:
| 安装方式 | 适用场景 | 优势 |
|---|---|---|
| pipx 安装 | 常规使用(推荐) | 隔离环境,管理方便 |
| Docker 部署 | 容器化部署 | 环境隔离,无需配置 Python |
| 源码安装 | 开发者定制 | 完全可控,便于调试 |
4. 方式一:pipx 安装(推荐)
这是官方推荐的安装方式,适合大多数用户。
4.1 安装 pipx
Ubuntu/Debian:
1 | sudo apt update |
macOS:
1 | brew install pipx |
Windows:
1 | python -m pip install --user pipx |
4.2 安装 Sherlock
1 | pipx install sherlock-project |
也可以使用 pip 或 uv 替代 pipx:
1 | pip install --user sherlock-project |
4.3 验证安装
1 | sherlock --version |
如果显示版本号(如 sherlock 0.16.0),说明安装成功。
5. 方式二:Docker 部署
Docker 方式提供环境隔离,适合容器化部署场景。
5.1 安装 Docker
Ubuntu/Debian:
1 | sudo apt update |
验证安装:
1 | docker --version |
5.2 拉取 Sherlock 镜像
1 | docker pull sherlock/sherlock |
5.3 创建结果目录
用于持久化保存查询结果:
1 | mkdir -p /opt/sherlock/results |
5.4 测试运行
1 | docker run --rm sherlock/sherlock --help |
出现帮助信息表示部署成功。
5.5 基本查询
1 | docker run --rm sherlock/sherlock testuser |
5.6 保存查询结果
1 | docker run --rm \ |
Docker 镜像的 ENTRYPOINT 为 ["sherlock"],用户名作为命令参数直接透传。
6. 方式三:源码安装(开发者)
适合需要修改源码或深度定制的开发者。
6.1 克隆项目
1 | git clone https://github.com/sherlock-project/sherlock.git |
6.2 安装依赖
1 | pipx install . --force |
6.3 运行修改后的版本
1 | sherlock your_username_here |
7. 基本用法
7.1 基础查询
1 | # 查询单个用户名 |
找到的账号会被写入与用户名同名的独立文本文件(例如 user123.txt)。
7.2 指定平台查询
1 | # 只查询特定平台 |
7.3 通配符扩展
使用 {?} 检查相似用户名,会被依次替换为 _、-、.:
1 | sherlock john{?}doe |
8. 输出控制
8.1 输出详细程度
1 | # 仅打印找到的账号 |
8.2 保存结果
1 | # 保存到指定文本文件 |
9. 高级选项
9.1 网络代理
1 | # 使用 HTTP 代理 |
注意:
--tor和--unique-tor在 v0.15.0 中已被标记为弃用,未来版本可能移除。
9.2 数据源控制
1 | # 强制使用本地打包的 data.json |
9.3 其他选项
1 | # 设置请求超时(秒,默认 60) |
10. 常见问题与解决方案
10.1 数据文件访问错误
问题:运行时报错 ERROR: Bad response while accessing data file URL 'https://raw.githubusercontent.com/sherlock-project/sherlock/master/sherlock/resources/data.json'。
原因:运行的旧版本引用了已废弃的链接。
解决方案:
- 检查 Python 版本:
python --version - 确保 Python 版本为 3.9 或更高
- 升级 Sherlock:
pipx upgrade sherlock-project - 确认安装的是 v0.15.0 或更高版本
10.2 WAF 拦截问题
问题:结果显示 Blocked by bot detection (proxy may help)。
原因:该站点的请求被 WAF(Web 应用防火墙)拦截,响应体被识别为 WAF 挑战页。
解决方案:
- 使用
--print-all参数保留 WAF 记录 - 单独复现拦截:
sherlock --print-all --site 站点名 用户名 - 查看原始响应:
sherlock --print-all --dump-response --site 站点名 用户名 - 尝试更换代理出口重试
10.3 误报问题
问题:某些站点显示账号存在但实际不存在。
解决方案:升级到 v0.16.0 版本,该版本显著减少了误报率。
10.4 大小写敏感问题
问题:某些平台(如 Chess.com)对用户名大小写敏感,导致检测失败。
解决方案:尝试使用不同大小写形式查询,或使用 {?} 通配符扩展检查变体。
11. 部署架构总结
| 部署方式 | 适用场景 | 安装命令 | 特点 |
|---|---|---|---|
| pipx 安装 | 常规使用 | pipx install sherlock-project |
隔离环境,管理方便 |
| Docker 部署 | 容器化部署 | docker run -it --rm sherlock/sherlock |
环境隔离,无需配置 Python |
| 源码安装 | 开发者 | pipx install . --force |
完全可控,便于调试 |
Sherlock 是一个高效的 OSINT 工具,通过 pipx 或 Docker 可以快速完成部署。部署完成后,你可以通过简单的命令行参数实现跨 400+ 平台的用户名探测。建议始终使用最新版本以获得最佳性能和最低误报率,同时注意遵守相关法律法规,仅将工具用于合法授权的场景。











