📌 项目地址:sherlock-project/sherlock | ⭐ 100,504 颗星 | 🔧 Python
它做的事很简单
你给 Sherlock 一个用户名,它同时去几百个社交网站查这个用户名有没有被注册,把命中的平台和链接全部列出来。结果可以存成 CSV 或 JSON。
这类需求很实际:想知道自己在多少平台留下过痕迹、做安全自查,或者做 OSINT 调查时的第一轮筛查。Sherlock 是这个领域最有名的 Python 工具,GitHub 上的 star 数已经超过十万,这个量级在纯 Python 项目里非常少见。
安装和基本用法
推荐用 pipx 装,避免污染环境:
pipx install sherlock-project
最简单的用法,直接跟一个用户名:
sherlock user123
结果默认存到以用户名命名的文本文件里。几个常用参数:
# 只显示找到的站点,安静很多
sherlock --print-found user123
# 指定输出目录
sherlock --output /tmp/results user123
# 一次查多个用户名
sherlock user1 user2 user3
不想装也可以从源码跑,或者用 Docker:
git clone --depth 1 https://github.com/sherlock-project/sherlock.git
cd sherlock
python3 -m sherlock user123
docker run -it --rm sherlock/sherlock user123
结果要怎么读
这是新手最容易踩的坑。Sherlock 的判断标准是“这个 URL 上的页面存在”,不是“这是同一个人”。
我拿一个常见用户名试过,比如 mike 这种,几乎每个平台都会命中,因为不同的人在各平台注册了同样的名字。所以拿到结果后先别急着下结论,要结合头像、注册时间、简介、发帖内容这些线索交叉比对,确认是不是同一个人。
还有一类误报来自站点本身:有的平台对不存在的用户名也返回 200,有的套一层登录墙,判断就会失准。重要结论多验证几个来源。
几个使用前该知道的点
合法使用是底线。 Sherlock 只查公开信息,不碰任何破解,但用它去调查别人、拼人物画像,可能触及你所在地的隐私法规。项目文档也明确要求只用于授权的、合法的目的。
你的 IP 会暴露在几百个站点面前。 一次查询等于短时间内向数百个网站发起请求,这些请求都会留记录。注意网络环境和查询频率,别拿日常 IP 乱扫。
站点列表会过期。 社交平台改版、上反爬机制,都会让部分站点暂时失效。结果里某个平台没查到,不代表那个平台没注册过。
和同类工具怎么选
- Maigret:可以理解为 Sherlock 的增强版后代,站点库扩到 3000+,能抓页面信息辅助判断是不是同一个人,还能出 PDF 报告。Sherlock 覆盖不够用时上它。
- WhatsMyName:网页版,不用装任何东西,浏览器打开就能查。代价是定制能力和批量导出弱一些。
Sherlock 的位置很清晰:命令行、速度快、社区持续维护站点列表。作为第一轮筛查,它够用,也最省事。许可证是 MIT,随便用。