菜单

核心架构

相关源文件

本文档提供了 Sherlock 核心系统架构的技术概述,解释了主要组件及其协同工作方式。它描述了主要的数据流、请求处理管道和检测机制,使得跨众多社交网络的用户名侦查成为可能。

有关站点数据配置系统的详细信息,请参阅 站点数据系统。有关实际搜索引擎实现的详细信息,请参阅 用户名搜索引擎

系统概览

Sherlock 构建于一个简单而强大的架构之上,该架构能够同时高效地搜索多个平台上的用户名。其核心是一个主引擎,它使用可配置的站点数据来协调对各种社交网络的请求。

来源:sherlock_project/sherlock.py180-530 sherlock_project/sherlock.py566-974

该架构采用数据驱动的设计,站点配置存储在 JSON 文件中,将站点特定的检测逻辑与核心引擎分离。这种方法允许在不修改核心代码的情况下轻松扩展到新平台。

关键组件

主引擎 (sherlock 函数)

sherlock() 函数是驱动整个用户名搜索过程的主引擎。它接受一个用户名和站点数据,然后协调对社交网络的请求的创建、执行和分析。

来源:sherlock_project/sherlock.py170-530

主引擎处理:

  • 请求会话的初始设置
  • 为所有站点创建请求 future,以实现并行处理
  • 处理响应并确定账户是否存在
  • 汇总结果并返回给调用者

SherlockFuturesSession

Sherlock 使用 `FuturesSession` 的自定义扩展来高效处理异步 HTTP 请求。此类增加了响应时间测量功能,以跟踪每个社交网络响应所需的时间。

来源:sherlock_project/sherlock.py48-111

站点数据系统

站点数据系统定义了 Sherlock 如何与每个社交网络进行交互。它被构建为一个包含数百个站点配置的 JSON 文件。

数据文件中的每个站点条目包括:

  • 主站点和用户配置文件的 URL 模式
  • 错误检测方法
  • 用户名验证模式
  • 特殊请求要求

有关站点数据结构的更多详细信息,请参阅 站点数据系统

来源:sherlock_project/resources/data.json1-50

查询通知系统

Sherlock 使用通知系统将结果报告给用户。`QueryNotify` 基类提供了一个接口,不同的输出方法可以实现该接口。

  • 控制台输出(彩色终端显示)
  • 文件输出(TXT、CSV、XLSX)
  • 浏览结果(在浏览器中打开找到的个人资料)

来源:sherlock_project/sherlock.py844-846 sherlock_project/sherlock.py878-970

请求处理管道

请求处理管道是 Sherlock 功能的核心,负责从用户名输入到结果确定的整个生命周期。

来源:sherlock_project/sherlock.py212-368 sherlock_project/sherlock.py371-528

用户名验证

在发出请求之前,Sherlock 使用正则表达式根据特定站点的模式验证用户名。这可以防止向用户名格式无效的站点发送不必要的请求。

来源:sherlock_project/sherlock.py276-285

请求构建

Sherlock 根据每个站点的规范构建 HTTP 请求,支持各种方法(GET、HEAD、POST、PUT)以及所需的自定义标头或载荷。

每个请求的 URL 通过将用户名插入站点的 URL 模板来构造。

来源:sherlock_project/sherlock.py273 sherlock_project/sherlock.py294-308

并行请求执行

为了高效地查询数百个站点,Sherlock 使用 `FuturesSession` 来并行执行请求。

来源:sherlock_project/sherlock.py248-250 sherlock_project/sherlock.py351-357

响应处理

收到响应后,Sherlock 会对其进行分析,以确定用户名在每个站点上是否存在。

来源:sherlock_project/sherlock.py386-389

账户存在性检测机制

Sherlock 使用三种主要方法来确定用户名在某个站点上是否存在。

来源:sherlock_project/sherlock.py407-476

状态码检查

对于使用状态码检测的站点,Sherlock 将 HTTP 响应状态码与预期的错误代码进行比较。

来源:sherlock_project/sherlock.py453-465

错误消息检测

对于使用消息检测的站点,Sherlock 会在响应文本中搜索特定的错误消息,这些消息指示账户不存在。

来源:sherlock_project/sherlock.py428-452

响应 URL 检查

对于使用 URL 重定向检测的站点,Sherlock 会检查最终 URL 是否与请求的 URL 不同。

来源:sherlock_project/sherlock.py466-475

命令行界面

该系统通过命令行界面公开其功能,该界面提供了控制搜索和输出的各种选项。

来源:sherlock_project/sherlock.py566-730 sherlock_project/sherlock.py844-974

命令行界面支持:

  • 多用户名搜索,包括模式变体
  • 站点过滤,仅检查特定站点
  • 各种输出格式(文本、CSV、Excel)
  • 代理和 Tor 网络使用
  • 自定义超时设置

错误处理和 WAF 检测

Sherlock 实现了强大的错误处理机制,以应对各种网络问题和 Web 应用程序防火墙 (WAF) 阻止。

该系统还检测常见的 WAF 指纹,以识别站点何时阻止自动化访问。

来源:sherlock_project/sherlock.py114-140 sherlock_project/sherlock.py415-420

总结

Sherlock 的核心架构旨在实现灵活性、效率和可扩展性。数据驱动的方法,将站点规范与核心逻辑分离,可以轻松添加新站点和检测方法。异步请求处理能够同时快速检查数百个站点,使其成为跨社交网络的用户名侦查的有效工具。

该架构的主要优势在于其适应不同社交平台所需检测方法的能力,以统一的方式处理从状态码到复杂错误消息和 URL 重定向的所有内容。