菜单

项目结构

相关源文件

本文档概述了 Sherlock 项目的代码库组织结构和重要文件。它详细介绍了构成该系统的仓库结构、核心组件和支持性基础设施文件。有关测试框架的信息,请参阅测试框架;有关 CI/CD 管道的详细信息,请参阅持续集成

存储库概览

Sherlock 项目遵循清晰的模块化组织,将核心功能与支持性基础设施分离。仓库结构旨在方便使用和贡献。

来源:.gitignore, .editorconfig

核心组件

Sherlock 的核心功能集中在几个关键文件中,这些文件负责在社交网络上搜索用户名。

主引擎 (sherlock.py)

系统的核心组件是 sherlock.py,它包含处理用户名、向社交网络发出请求以及处理响应的主要逻辑。

站点配置 (data.json)

这个关键文件包含所有支持站点的结构化信息,包括:

  • URL 模式
  • 错误检测方法
  • 请求头
  • 用户名验证规则

这些核心组件之间的关系如下图所示:

来源:.gitignore

开发基础设施

该仓库包含多个支持开发过程的配置文件。

编辑器配置

.editorconfig 定义了不同编辑器和 IDE 之间一致的编码风格

  • Python 文件使用 4 空格缩进和双引号
  • 大多数其他文件使用 2 空格缩进
  • 所有文件使用 LF 行结束符和 UTF-8 编码
[*.py]
indent_size = 4
quote_type = double

来源:.editorconfig16-18

版本控制配置

.gitignore 指定了版本控制中排除的文件和目录

  1. 开发环境

    • 虚拟环境 (venv/, bin/, lib/)
    • 编辑器特定文件夹 (.vscode/, .idea/)
    • Python 缓存文件 (__pycache__/)
  2. 测试产物

    • .coverage
    • .tox/
    • tests/.excluded_sites
  3. 构建和分发

    • dist/
    • *.egg-info/
    • src/
  4. 输出文件

    • 文本文件(requirements.txt 除外)
    • CSV 和 XLSX 报告

来源:.gitignore1-48

包配置

Sherlock 的打包系统旨在让用户安装过程简单明了。

来源:.gitignore

测试结构

该项目拥有一个健壮的测试框架,位于 tests/ 目录下。

来源:.gitignore8-10 .gitignore40-41

部署配置

Sherlock 提供了多种部署方法,包括 pip 安装和 Docker 容器。

来源:.gitignore

文档文件

该仓库包含多个文档文件,帮助用户和贡献者理解该项目。

来源:.gitignore

输出格式

Sherlock 项目支持多种搜索结果输出格式:

  • 纯文本文件 (*.txt)
  • CSV 报告 (*.csv)
  • Excel 电子表格 (*.xlsx)

这些输出文件通常从版本控制中排除,因为它们包含用户特定的结果。

来源:.gitignore30-38

开发工具集成

该项目配置为与流行的开发工具和持续集成服务配合使用。

来源:.gitignore12-14 .gitignore46-47 .editorconfig1-19

项目结构演变

项目结构设计为可维护和可扩展。将站点配置数据与核心引擎分离,使得在不修改主代码库的情况下轻松更新支持的站点成为可能。

通过这种组织方式,Sherlock 在核心组件的稳定性和站点配置的灵活性之间取得了平衡,使项目能够适应社交网络环境的变化,同时保持一致的用户体验。

来源:.gitignore, .editorconfig