菜单

站点列表管理

相关源文件

目的和概述

本文档解释了 Sherlock 如何维护和更新其支持的用户名搜索网站列表。Sherlock 的强大之处在于其庞大的受支持站点数据库,这需要系统化的管理、验证和文档方法。本页面涵盖了维护站点数据和生成最新文档的自动化机制。

有关站点数据如何构建以及在用户名搜索中如何使用的详细信息,请参阅站点数据系统

数据存储与组织

Sherlock 站点列表管理的基础是 data.json 文件,它包含了所有受支持网站的配置信息。该文件是系统中所有与站点相关信息的唯一真实来源。

核心数据文件

data.json 文件存储了每个受支持站点的详细配置,包括:

  • 用于检查用户名是否存在的 URL 模式
  • 错误检测方法和模式
  • 用于用户名验证的正则表达式模式
  • 主站点 URL
  • 已知存在或不存在的测试用户名
  • 成人内容网站的 NSFW 标记

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

该文件包含数百个站点配置,每个都具有特定的检测方法。站点按字母顺序组织以保持整洁。

自动化站点列表更新

当 data.json 中支持的站点发生更改时,Sherlock 会通过 GitHub Actions 工作流自动更新其文档。

更新工作流

来源:.github/workflows/update-site-list.yml1-47 devel/site-list.py1-40

这种自动化确保文档始终与实际受支持的站点同步,从而消除了手动维护并减少了错误。

GitHub Actions 工作流

更新过程实现为 GitHub Actions 工作流,该工作流:

  1. 在 master 分支中的 data.json 文件被修改时触发
  2. 检出仓库代码
  3. 设置 Python 环境
  4. 运行 site-list.py 脚本
  5. 将生成的文档推送到项目网站仓库

来源:.github/workflows/update-site-list.yml1-11

站点列表生成脚本

site-list.py 脚本执行多项关键功能:

  1. 读取 data.json 文件
  2. 从处理中移除特定于模式的关键字
  3. 按字母顺序排序站点条目
  4. 生成一个格式化的 Markdown 文档,列出所有受支持的站点
  5. 更新 data.json 以保持字母顺序

来源:devel/site-list.py1-40

该脚本生成一个格式精美的 Markdown 文件,其中包含:

  • 标题和描述
  • 所有受支持站点的编号列表
  • 指向每个站点主页的链接
  • 成人内容网站的 NSFW 标记

站点维护生命周期

Sherlock 中的站点从添加开始,到可能的移除,都会经历一个明确的生命周期。

来源:docs/removed-sites.md1-1537 sherlock_project/resources/data.json1-4647

站点移除原因

当站点需要从 Sherlock 中移除时,它们会在 removed-sites.md 文件中记录并附带解释。常见原因包括:

原因描述示例
误报站点错误地报告所有用户名都存在PayPal, Pinterest
反机器人措施站点实施了 CAPTCHA 或其他反机器人技术Creative Market, AllTrails
服务关闭站点不再存在或已关闭Google Plus, Mixer
响应问题站点经常超时或存在其他响应问题GDProfiles, TripAdvisor
需要认证站点要求登录才能检查用户名Kali Community, PCPartPicker

来源:docs/removed-sites.md1-1537

与核心系统集成

站点列表管理系统与 Sherlock 的其他组件集成:

来源:sherlock_project/resources/data.json1-4647 .github/workflows/update-site-list.yml1-47 devel/site-list.py1-40 docs/removed-sites.md1-1537

这种集成确保随着支持的站点列表的演进,核心搜索功能和面向用户的文档都保持同步。

站点管理最佳实践

在维护站点列表时,开发人员应遵循以下准则:

  1. 彻底测试:确保站点对现有和不存在的用户名都能正常工作
  2. 记录移除原因:始终在 removed-sites.md 中记录移除站点的理由
  3. 使用正确的配置:为每个站点选择合适的错误检测方法
  4. 保持字母顺序:尽管脚本会排序站点,但将新站点添加在正确的位置是良好的实践
  5. 包含测试用户名:始终提供有效的测试用户名以供验证

结论

Sherlock 中的站点列表管理系统提供了一个强大的框架,用于维护一个最新的受支持网站数据库。通过 GitHub Actions 的自动化以及清晰的文档实践,该项目确保用户始终能够访问关于可搜索站点的最新信息。

该系统对于 Sherlock 的持续维护和发展至关重要,它使项目能够适应网站认证方法的变化或新流行平台的出现。