ProxyHatCom/sherlock-proxyhat
GitHub: ProxyHatCom/sherlock-proxyhat
为 Sherlock 用户名搜索工具提供轮换住宅代理接入和地理定位功能的轻量级启动器。
Stars: 0 | Forks: 0
# sherlock-proxyhat
通过 [ProxyHat](https://proxyhat.com?utm_source=github&utm_medium=readme&utm_campaign=sherlock) 住宅代理运行 [Sherlock](https://github.com/sherlock-project/sherlock) —— OSINT 用户名搜索工具。默认使用轮换的住宅 IP(在 Sherlock 检查的数百个网站中,每次连接都会获取一个全新的 IP),外加地理定位和匿名性,因此你被速率限制和屏蔽的几率会大幅降低。
[](https://github.com/ProxyHatCom/sherlock-proxyhat/actions/workflows/ci.yml)
[](https://github.com/ProxyHatCom/sherlock-proxyhat/actions/workflows/compat.yml)
[](https://pypi.org/project/sherlock-proxyhat/)
[](LICENSE)
##这是什么
Sherlock 是一个**应用程序**,而不是一个库:你运行 `sherlock `,它会跨 400 多个网站检查该用户名,并为所有网站接受一个单一的 `--proxy `。从一个数据中心 IP 向这么多网站发起请求,很快就会被节流和屏蔽。
`sherlock-proxyhat` 是一个**轻量级启动器**。它会解析 ProxyHat 住宅网关 URL,然后在预置 `--proxy ` 的情况下运行真正的 `sherlock` 可执行文件 —— 所有其他参数(用户名和 Sherlock 自身的参数)都会直接透传。没有分支,也没有补丁版的 Sherlock:它只是将 ProxyHat 接入了 Sherlock 原本就有的 `--proxy` 参数。
## 安装
```
pip install sherlock-proxyhat sherlock-project
```
`sherlock-project`(提供 `sherlock` 命令)是一个可选依赖项 —— 此启动器通过 shell 调用 `sherlock` 可执行文件,因此任何安装方式(pip、pipx、系统包)都可以使用。要将其与启动器一起拉取:
```
pip install "sherlock-proxyhat[sherlock]"
```
## 快速开始
```
# 一个 API key 会自动选择一个活跃的 residential sub-user:
export PROXYHAT_API_KEY=ph_xxx
# 与 sherlock 的参数相同——只需通过 launcher 运行它:
sherlock-proxyhat johndoe
# 进行 Geo-target 并添加 sherlock 自身的 flags;之后的所有内容都会被传递:
sherlock-proxyhat --proxyhat-country us johndoe janedoe --timeout 30 --csv
```
在 [proxyhat.com](https://proxyhat.com?utm_source=github&utm_medium=readme&utm_campaign=sherlock) 获取 API key。
任何不是 `--proxyhat-*` 选项的参数都会原封不动地转发给 `sherlock`,因此 Sherlock 的每个参数(`--timeout`、`--site`、`--nsfw`、`--csv`、`-o`、…)都能保持原样运行。
## 凭证
通过 `--proxyhat-*` 参数或环境变量传递它们 —— 参数优先于环境变量:
| 参数 | 环境变量 | 备注 |
|---|---|---|
| `--proxyhat-api-key` | `PROXYHAT_API_KEY` | 自动选择一个还有剩余流量的活跃子用户 |
| `--proxyhat-sub-user` | `PROXYHAT_SUBUSER` | 通过 uuid 或名称(配合 API key)选择特定的子用户 |
| `--proxyhat-username` | `PROXYHAT_USERNAME` | 显式指定网关 `proxy_username`(跳过 API) |
| `--proxyhat-password` | `PROXYHAT_PASSWORD` | 显式指定网关 `proxy_password` |
## 定位
所有定位功能都位于 `--proxyhat-*` 参数上,这些参数会在命令到达 `sherlock` 之前被剥离:
```
sherlock-proxyhat \
--proxyhat-protocol http \ # or socks5
--proxyhat-country us \ # ISO code or "any" (default)
--proxyhat-region california \
--proxyhat-city los_angeles \
--proxyhat-filter high \ # AI IP-quality tier
johndoe
```
### 默认轮换 IP
Sherlock 在整个运行过程中会复用一个代理,因此此启动器默认构建一个**轮换**的网关用户名:ProxyHat 网关在每次连接时都会分配一个新的住宅 IP,将数百个针对特定网站的检查分散到多个 IP 上 —— 这正是你在扫描时规避基于 IP 的速率限制所需要的。
想要在整个运行期间锁定一个 IP 吗?添加 `--proxyhat-sticky`(也可以通过 `--proxyhat-sticky-ttl` 设置存活时间):
```
sherlock-proxyhat --proxyhat-sticky johndoe # one pinned IP, 30m default
sherlock-proxyhat --proxyhat-sticky-ttl 2h johndoe # one pinned IP, 2h lifetime
```
### 自带代理
如果你自己传递了 Sherlock 原生的 `--proxy`/`-p`(或 `--tor`),启动器就会让位:它会原封不动地转发你的参数,而不会注入 ProxyHat URL。
### 凭证永远不会出现在你的日志中
Sherlock 在启动时会打印完整的 `--proxy` URL(`Using the proxy: http://user:pass@gate.proxyhat.com:8080`),否则这会将你的 ProxyHat `proxy_username`/`proxy_password` 泄露到终端以及任何捕获的日志中。由于启动器构建了这个 URL,它知道确切的密钥字符串并将其隐去:它会通过管道传输 Sherlock 的输出并逐行流式传输(不进行任何缓冲 —— 长时间扫描也能正常流式传输),在任何内容到达你的 stdout 之前,将凭证掩码处理为 `http://***:***@gate.proxyhat.com:8080`。Sherlock 的结果行将保持原样通过。
## 直接使用 URL 构建器
需要在你自己的脚本或不同的工具中使用网关 URL 吗?导入此辅助工具:
```
from sherlock_proxyhat import proxyhat_proxy_url
url = proxyhat_proxy_url(api_key="ph_xxx", country="us")
# -> "http://-country-us:@gate.proxyhat.com:8080"
```
默认轮换(`sticky=None`);传入 `sticky="30m"`(或 `True`)以锁定单个 IP。
## 工作原理
启动器会解析出它的 `--proxyhat-*` 选项,通过官方的 [`proxyhat`](https://pypi.org/project/proxyhat/) SDK 解析你的网关凭证(API key 会自动选择一个活跃的子用户,或者传入 `username`/`password`),并构建一个携带 ProxyHat 定位语法的连接 URL(`http://-country-us:@gate.proxyhat.com:8080`,或 `socks5://…:1080`)。然后,它会在你的 `PATH` 中找到 `sherlock` 可执行文件,并以子进程的形式运行 `sherlock --proxy `,同时返回 Sherlock 的退出码。轮换用户名使得网关在每次连接时都会分配一个新的住宅 IP;`--proxyhat-sticky` 则会锁定单个 IP。
## 路线图
此启动器特意包装了 Sherlock 现有的 `--proxy` 参数 —— 这是目前最实在、最便捷的交付方式。**计划的后续步骤**是向 Sherlock 上游提交 PR,以添加原生的 `--proxyhat` 参数(从 Sherlock 内部直接解析凭证和地理定位,无需包装器),从而使 ProxyHat 成为该工具中的一等公民选项。在此之前,此软件包是受支持的途径。
## 许可证
MIT © [ProxyHat](https://proxyhat.com)
标签:ESC4, OSINT, Python, 二进制模式, 代理工具, 实时处理, 密码管理, 无后门, 网络侦查, 逆向工具