Hinikaa/namesniper
GitHub: Hinikaa/namesniper
一款零依赖的多平台用户名可用性监控工具,支持持续轮询、多渠道通知和自定义 hook,帮助用户在心仪名称释放时第一时间获知。
Stars: 0 | Forks: 0
# namesniper
多平台用户名可用性监控工具。只需提供一个名称列表,当其中任意一个在 GitHub、npm、PyPI、Reddit 和 Roblox 上被释放时,它会立即通知你。
## 概述
大多数“抢名”脚本只是在 `while True` 循环中写死了一个 API 调用。而本项目专为真正的无人值守运行而构建:支持 JSON 配置文件、带有重置机制的正式监控模式(如果一个名称被释放后再次被占用,稍后会再次通知)、桌面通知、webhook 通知(同时兼容 Discord 和 Slack 风格)、可选的 shell hook(用于在名称可用的瞬间执行你想要的任何操作),以及在激进轮询时使用的可选代理轮换。
零第三方依赖。仅使用标准库。
## 安装
要求 Python 3.9+。无需额外安装:
```
git clone https://github.com/Hinikaa/namesniper
cd namesniper
```
## 用法
复制示例配置文件并进行编辑:
```
cp config.example.json config.json
```
```
{
"usernames": ["hina", "example"],
"platforms": ["github", "gitlab", "npm", "pypi", "roblox"],
"interval": 300,
"webhook": null,
"desktop_notify": true,
"hook": null,
"proxies": []
}
```
运行一次:
```
python3 -m namesniper config.json
```
持续监控:
```
python3 -m namesniper config.json --watch
```
### 配置字段
| 字段 | 含义 |
|---|---|
| `usernames` | 要检查的名称,必填 |
| `platforms` | `github`、`gitlab`、`npm`、`pypi`、`roblox` 的子集 |
| `interval` | `--watch` 模式下每轮检查之间的间隔秒数 |
| `webhook` | Discord 或 Slack 的 incoming webhook URL,或为 `null` |
| `desktop_notify` | 命中时触发 `notify-send` 弹窗(仅限 Linux,在其他平台上会静默跳过) |
| `hook` | 每次命中时运行的 shell 命令,会替换其中的 `{username}` 和 `{platform}` |
| `proxies` | `host:port` 格式的代理列表,如果非空则使用轮询机制 |
### Hook 示例
```
"hook": "echo '{username} freed up on {platform}' >> hits.log"
```
## 注意事项
- npm 和 PyPI 都不再公开提供用户名查询的 endpoint 了(npm 的 `org.couchdb.user:` 路由现在对未认证请求会返回 401 错误),因此这两个平台的检查工具实际上是在测试项目/包名的抢注情况,而不是账户名——这依然有用,只是它解决的问题与“这个用户名是否可用”不同。
- GitHub 和 GitLab 会对未认证的请求进行速率限制;如果在极短的间隔内检查过长的用户名列表,将会开始出现检查失败,而不是误报可用(失败会被记录并跳过,不会被报告为可用)。
- Reddit 的 API 现在直接拦截了所有未认证的流量(每个请求都会返回 403 错误,而不仅仅是缺少 user-agents),因此该平台已被移除,而不是作为一个实际上永远无法生效的检查器发布。
- 本工具不会在任何平台上自动创建账户。如果你想自己实现这一点,可以使用 `hook`。
## 许可证
MIT,详见 `LICENSE`。
标签:Homebrew安装, Python, 代理轮换, 无后门, 用户名监控, 逆向工具, 通知机器人