菜单

用户名搜索引擎

相关源文件

本文档详细解释了 Sherlock 的核心搜索功能。它涵盖了引擎如何处理用户名、构建对社交网站的请求以及确定账户是否存在。有关搜索引擎使用的站点数据配置信息,请参阅站点数据系统

概述

用户名搜索引擎是 Sherlock 的核心组件,负责在各种社交网络上执行实际的用户名侦察。它通过接收用户名输入,根据配置的站点模式进行检查,向站点发出异步 HTTP 请求,并解释响应以确定账户是否存在。

来源: sherlock_project/sherlock.py170-530

核心组件

用户名搜索引擎由几个关键组件组成,它们协同工作以提供高效准确的用户名搜索。

SherlockFuturesSession

一个自定义的会话类,扩展了 FuturesSession 以支持带响应时间跟踪的异步请求。这使得 Sherlock 能够同时查询多个站点,显著提高性能。

来源: sherlock_project/sherlock.py48-111

主搜索功能

sherlock() 函数是搜索引擎的主要入口点。它接收用户名、站点配置和各种选项,然后协调在所有指定站点上的搜索过程。

来源: sherlock_project/sherlock.py170-530

请求处理

用户名验证

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

来源: sherlock_project/sherlock.py276-285

URL 构建

Sherlock 通过将站点配置中的占位符替换为实际用户名来构建要检查的 URL。

URL 类型目的示例
url_main主站点 URLhttps://twitter.com
url_user包含用户名的个人资料 URLhttps://twitter.com/{username}
url_probe用于存在性检查的特殊 URL(可选)https://api.twitter.com/users/lookup.json?screen_name={username}

来源: sherlock_project/sherlock.py273 sherlock_project/sherlock.py289-315

请求构建

搜索引擎根据站点要求支持不同的 HTTP 方法

来源: sherlock_project/sherlock.py294-327

响应分析

用户名搜索引擎使用三种主要方法来确定用户名是否存在于某个站点上

错误检测方法

来源: sherlock_project/sherlock.py428-479

检测方法描述工作原理
message检查响应文本中的错误消息如果找到特定错误文本,则用户名可用
status_code检查 HTTP 状态码如果状态码与错误代码匹配,则用户名可用
response_url检查重定向后的最终 URL如果状态码为 200-299,则用户名已被占用

来源: sherlock_project/sherlock.py428-479

WAF 检测

引擎包含对 Web 应用程序防火墙 (WAF) 的检测功能,以帮助识别请求何时被阻止。这可以防止在站点应用安全措施时出现错误结果。

来源: sherlock_project/sherlock.py410-426

结果收集与处理

所有站点检查的结果将被汇总并以结构化格式返回

来源: sherlock_project/sherlock.py510-518

结果字典结构

对于检查的每个站点,引擎都会创建一个包含以下信息的结果条目

字段描述
url_main主站点 URL
url_user包含用户名的个人资料 URL
status表示用户名是否存在的 QueryResult 对象
http_status请求的 HTTP 状态码
response_text响应文本(如果可用)

来源: sherlock_project/sherlock.py253-258 sherlock_project/sherlock.py520-528

优化技术

用户名搜索引擎实现了多种技术来优化性能和准确性

并发请求

引擎使用 FuturesSession 并发发送请求,这在检查大量站点时显著提高了性能。

来源: sherlock_project/sherlock.py247-250

工作器限制

引擎将并发工作器的数量限制为 20 个,以防止系统过载或导致站点出现速率限制问题。

来源: sherlock_project/sherlock.py241-250

请求超时

请求具有可配置的超时时间,以防止站点响应缓慢时出现挂起。

来源: sherlock_project/sherlock.py347-357

支持多个用户名

搜索引擎支持通过用不同字符替换特殊占位符来检查用户名的变体。

来源: sherlock_project/sherlock.py153-167

Tor 和代理支持

搜索引擎支持通过 Tor 或自定义代理发送请求,以增强隐私或绕过限制。

来源: sherlock_project/sherlock.py214-239 sherlock_project/sherlock.py340-357

与站点数据系统的集成

用户名搜索引擎依赖站点数据系统(站点数据系统)来提供每个站点的配置信息。这种关注点分离使得引擎可以专注于搜索逻辑,而站点特定的详细信息则独立维护。

来源: sherlock_project/sherlock.py256-368

总结

用户名搜索引擎是一个复杂的组件,可以有效地在众多社交网络中搜索用户名。其主要优势包括:

  1. 异步处理以提高性能
  2. 多种错误检测方法以确保结果准确
  3. 灵活的请求处理以适应不同的站点要求
  4. 在发送请求前验证用户名
  5. 全面的结果报告,包含详细的状态信息

引擎的设计使其可以通过简单地更新站点数据配置来轻松扩展到新站点,而无需更改核心搜索逻辑。