如何用 Sherlock 的 --json 参数试用新的站点清单包括直接用上游 PR 编号指定【免费下载链接】sherlockHunt down social media accounts by username across social networks项目地址: https://gitcode.com/GitHub_Trending/sh/sherlock你手里有一份新的站点清单——可能是自己改过的data.json也可能是上游一个还没合并的 PR 里修改的清单——想在不改动 Sherlock 默认清单的前提下用它跑一次真实的用户名查询。Sherlock 的--json简写-j参数正是干这个的sherlock --help中的说明是 Load data from a JSON file or an online, valid, JSON file. Upstream PR numbers also accepted.即它接受本地 JSON 文件、在线 JSON 地址也接受上游 PR 编号。本文基于 docs/README.md 中的帮助输出以及 sherlock_project/sherlock.py、sherlock_project/sites.py 中--json的实际实现逻辑来写操作步骤。前提安装并确认 Sherlock 可用docs/README.md 给出的安装方式pipx install sherlock-project # 或使用 docker docker run -it --rm sherlock/sherlock # 或使用 dnf dnf install sherlock-projectpip或uv可以替代pipx。文档特别提醒ParrotOS 和 Ubuntu 24.04 上第三方维护的包已经损坏这两个系统的用户应使用uv/pipx/pip或 Docker。安装后确认版本与参数说明sherlock --version sherlock --help--version会显示版本信息与依赖文档中展示的--help输出对应 Version 0.16.0。确认--json选项出现在帮助里即可开始。需要了解的一点默认行为不传--json也不传--local时Sherlock 默认加载的是在线托管的 livedata.json托管在 data.sherlockproject.xyz而不是安装包里的那份——sherlock_project/sites.py 注释说明这样做的目的是让使用者拿到最新数据。传了--local才会强制使用程序自带的resources/data.json并且此时--json不再生效sherlock_project/sherlock.py 中--local分支优先。--json 支持哪几种清单来源参数值的三种形态在 sherlock_project/sites.py 的说明和 sherlock_project/sherlock.py 的代码中都有明确定义绝对路径或相对路径的本地文件例如/path/to/my_list.json或my_list.json相对路径以当前工作目录为基准文件名必须以.json结尾。在线地址http://或https://开头、指向一份有效 JSON 文件的 URL。纯数字被解释为上游 PR 编号见下文专节。准备一份试用清单文件如果要自己写清单文件结构以仓库内置的 sherlock_project/resources/data.json 为准顶层是一个对象每个键是站点名值是该站点的探测信息。sherlock_project/resources/data.schema.json 定义了每个站点条目的必填字段url、urlMain、errorType、username_claimed其中errorType只能取message、response_url、status_code字符串或数组并且errorType含message时必须提供errorMsgerrorType含response_url时必须提供errorUrlerrorType含status_code时必须提供errorCode。下面这份文件直接取自内置清单中1337x的真实条目保存为my_list.json即可作为最小试用清单url中的{}是用户名占位符由 sherlock_project/sites.py 的文档说明要求{ 1337x: { errorMsg: [ titleError something went wrong./title, headtitle404 Not Found/title/head ], errorType: message, regexCheck: ^[A-Za-z0-9]{4,12}$, url: https://www.1337x.to/user/{}/, urlMain: https://www.1337x.to/, username_claimed: FitGirl } }如果清单里有isNSFW: true的站点默认会被跳过需要加--nsfw才纳入检查--site显式指定的站点不受此默认移除影响。用本地清单跑一次查询sherlock --json my_list.json user123命令里的user123换成你要查询的用户名。多个用户名直接并列在末尾sherlock --json my_list.json user1 user2。这一步会依次经历读取my_list.json→ 按上游排除列表exclusions过滤站点 → 逐站探测用户名。清单加载失败时查询不会开始程序直接报错退出报错对照见文末表格。用上游 PR 编号直接试用不需要下载 PR 的清单文件直接把 PR 编号作为参数值# 1234 替换为你要试用的上游 PR 编号纯整数 sherlock --json 1234 user123处理逻辑在 sherlock_project/sherlock.py参数值如果是纯数字程序会通过上游仓库的 PR 接口读取该 PR 的信息取这个 PR 头提交head commit的 SHA再以该提交为准取sherlock_project/resources/data.json作为清单来源。也就是说试用的是 PR 分支上那份data.json未合并的 PR 同样可以这样试。两种典型结果PR 编号不存在接口返回带message字段的响应程序打印ERROR: Pull request #1234 not found.1234为你传入的编号并退出编号有效程序静默切换清单来源正常进入查询流程与用文件路径的行为一致。验证清单确实生效看终端输出默认会打印找到用户名的站点--print-found默认开启加--print-all还会打印未找到用户名的那些站点这样能直接核对新清单里的站点名是否真的参与了探测。看落盘文件文档说明找到的账户会按用户名存成文本文件例如查询user123后生成user123.txt单用户名还可以用--output指定输出文件名多用户名用--folderoutput指定输出目录两者不能同时使用同时传会打印You can only use one of the output methods.并退出。用--site核对单个站点--site SITE_NAME把分析限定在指定站点上可重复多次指定。如果新清单里应该含某站点但不含可以这样验证sherlock --json my_list.json --site 1337x user123若1337x不在清单中程序打印Error: Desired sites not found: 1337x.并退出在清单中则只对这一个站点发起探测适合快速确认某个新站点能否被加载和命中。两个会影响生效站点集合的默认行为试用时要记住程序默认会加载上游误报排除列表并移除其中的站点若加载失败打印Warning: Could not load exclusions, continuing without them.并在无排除列表的情况下继续。加--ignore-exclusions可完全忽略排除列表官方帮助同时提示may return more false positives。另外--timeout控制单次请求等待秒数默认 60 秒清单站点较多或网络较慢时可按需调整。出错时对照这些信息定位以下报错文案均来自 sherlock_project/sites.py 和 sherlock_project/sherlock.py 的源码出现时按表定位| 报错 | 触发条件 | | - | - | |ERROR: Pull request #N not found.| 传入的 PR 编号在上游仓库中不存在 | |Problem while attempting to access data file URL ...: ...| 在线清单地址请求失败网络异常等 | |Bad response while accessing data file URL ....| 在线清单地址返回了非 200 响应 | |Problem while attempting to access data file ....| 本地清单文件不存在 | |Problem parsing json contents at ...: ...| 清单不是合法 JSON 或解析失败 | |Problem parsing json contents at ...: Missing attribute ...| 某站点条目缺少必填属性如url、urlMain、username_claimed、errorType | |Encountered TypeError parsing json contents for target ... at ... Skipping target.| 单个站点条目结构异常跳过该站点后继续不算致命错误 |清单本身加载正常、但某个新站点始终查不到或误报时--dump-response会把该站点的 HTTP 响应转储到 stdout 供针对性排查这是帮助文本中列出的调试选项。最后说明边界--json只替换清单来源不改探测逻辑NSFW 站点、排除列表、--timeout等其余参数行为与平时一致。清单加载失败时程序在查询前就退出不会产生结果文件这一点可用于快速判断是我的清单写错了还是站点真的没命中。【免费下载链接】sherlockHunt down social media accounts by username across social networks项目地址: https://gitcode.com/GitHub_Trending/sh/sherlock创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
