Sherlock

🔍 通过用户名搜索社交网络账号


项目简介(Overview)

Sherlock 是一个用于在多个社交网络和网站上搜索指定用户名是否存在的工具。 (GitHub)

换句话说,它的核心能力是:

输入一个用户名 → 扫描大量网站 → 返回该用户名在哪些平台存在

这是典型的 OSINT(Open Source Intelligence,开源情报)工具


功能(Features)

  • 支持在数百个网站上搜索用户名
  • 支持多线程并发请求(加快扫描速度)
  • 输出结果清晰(存在 / 不存在)
  • 可导出结果(如 CSV 等)
  • 支持命令行使用(CLI 工具)

工作原理(How It Works)

Sherlock 的核心逻辑其实很简单但非常实用:

  1. 预定义各大网站的用户 URL 模板

    • 例如:https://twitter.com/{username}
  2. 将输入的用户名填入模板

  3. 发起 HTTP 请求

  4. 判断结果:

    • 页面存在 → 用户名已注册
    • 404 / 不存在 → 未注册

本质上是:

批量 URL 探测 + 状态判断

(并不是“黑客行为”,只是自动化查询公开数据)


安装(Installation)

方法 1:pip 安装

pip install sherlock-project

方法 2:源码安装

git clone https://github.com/sherlock-project/sherlock.git
cd sherlock
python3 -m pip install -r requirements.txt

使用方式(Usage)

最基本用法:

sherlock username

示例:

sherlock jack

输出结果类似:

[+] Twitter: https://twitter.com/jack
[-] Instagram: Not Found
[+] GitHub: https://github.com/jack

高级参数(常见)

--timeout        设置请求超时
--threads        设置线程数
--output         输出到文件
--csv            导出 CSV
--json           导出 JSON

输出结果(Output)

Sherlock 会返回:

  • 用户名存在的平台列表
  • 对应的用户主页链接
  • 可选导出格式(JSON / CSV)

使用场景(Use Cases)

这个工具在很多场景都很实用:

1️⃣ OSINT / 情报分析

  • 调查某个用户名在互联网的分布
  • 分析个人/组织的网络足迹

2️⃣ 安全 / 风控

  • 检测账号是否被抢注
  • 用户名资产保护

3️⃣ 品牌保护

  • 查看品牌名是否被占用

4️⃣ 社交分析

  • 用户画像补全(跨平台)

项目特点(Key Characteristics)

  • 开源(Python 实现)
  • 轻量级 CLI 工具
  • 数据来源完全公开(无侵入)
  • 扩展性强(可新增网站规则)

技术本质(给你一个架构级理解)

这个项目本质可以抽象为:

👉 「规则驱动的分布式探测引擎」

可以拆成三层:


1️⃣ 规则层(核心资产)

site_name + url_template + 判断规则

例如:

{
  "site": "twitter",
  "url": "https://twitter.com/{username}",
  "error_type": "status_code"
}

2️⃣ 执行层(并发引擎)

  • 多线程 / 异步请求
  • HTTP 状态判断
  • 失败重试

3️⃣ 输出层(结果聚合)

  • 标准化结果
  • 导出 JSON / CSV
  • CLI 展示

⚠️ 注意点(很关键)

  • 不是 100% 准确(部分网站反爬 / 假阳性)
  • 请求量大可能被限流
  • 依赖网站结构(容易失效)
  • 不能用于非法用途

一句话总结

Sherlock = 用户名维度的全网扫描引擎(OSINT工具)


如果你从“架构/产品”角度看(结合你现在在做的系统)

这个项目其实非常值得你借鉴👇:

可以迁移到你 IM / 平台的能力:

1️⃣ 用户画像补全

  • IM 用户 → 外部社交映射

2️⃣ 风控能力

  • 检测异常账号(批量生成 / 机器人)

3️⃣ 用户资产体系

  • 用户名是否唯一 / 稀缺

4️⃣ 推荐系统

  • 跨平台兴趣补充(弱画像 → 强画像)

如果你下一步想更深入,我可以帮你拆:

👉 Sherlock 的代码结构 + 并发模型(async / thread) 👉 或者:如何做一个“增强版 Sherlock”(接入 AI + 推荐 + 用户画像)

参考资料