Files
glm-coding-helper/README.md
T

325 lines
13 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 智谱 GLM Coding Plan 抢购助手 + 本地 OCR 自动验证码
这是一个面向智谱 GLM Coding Plan 的抢购辅助项目,包含 Tampermonkey 油猴脚本和本地 CPU/GPU OCR 后端,用于限时抢购流程辅助、一键启动后端、中文点选验证码自动识别、验证码自动点击、套餐按钮提前可点、限流重试和多窗口监控。目前仅适配 Google Chrome 和 Microsoft Edge,推荐使用 Chrome。
关键词:GLM Coding Rush、GLM Coding Plan 抢购助手、GLM Coding Plan 抢购脚本、GLM Coding Plan 一键抢购、GLM Coding 一键启动、智谱 GLM Coding 抢购、智谱编程套餐抢购、GLM Coding 油猴脚本、Tampermonkey userscript、Auto-Purchase Userscript、自动解锁售罄、限流重试、多窗口并发、本地 OCR、CPU OCR、GPU OCR、中文点选验证码、验证码自动点击、订阅助手。
English keywords: GLM Coding Rush, GLM Coding Plan auto purchase, GLM Coding Plan rush helper, GLM Coding one-click startup, GLM Coding userscript, Tampermonkey script, local OCR captcha solver, CPU OCR backend, GPU OCR backend, Chinese captcha auto click.
## 演示
https://github.com/user-attachments/assets/e1a56d07-5c4d-4aa1-a567-909dd25bd037
## 能做什么
- GLM Coding Plan 抢购流程辅助,减少手动刷新和返回操作
- 提前解除页面按钮不可点击状态,让订阅按钮可以操作
- 自动切换套餐和订阅周期,按配置顺序尝试
- 遇到中文点选验证码时,调用本地 OCR 后端自动识别并点击目标文字
- 支持 CPU/GPU 本地识别,不上传验证码图片到第三方服务
- 支持一键多开窗口,方便补货前预热和同时监控
- 默认不自动点击验证码“确定”按钮,需要在配置面板里手动开启
- 默认不自动关闭无效支付链接/限流弹窗,需要在配置面板里手动开启
- 默认使用作者内置折扣入口进入 GLM Coding Plan
注意:目前仅适配 Chrome 和 Edge。我测试了 1080p-1920p、桌面 100%-150% 放大倍率、浏览器 50%-125% 缩放。如果遇到显示或点击问题,建议先调整为 1920p、桌面 100%-125% 放大、浏览器 100%。
后端配置、GPU/CPU 自动选择、worker 数、OCR 配置等说明见:
```text
docs/backend_config.md
```
修复历史见:
```text
CHANGELOG.md
```
## 快速开始
现在普通用户不需要手动装 Python、不需要自己跑 PowerShell 安装命令。最简单的方式是:
1. 下载 Release 压缩包
2. 解压
3. 安装油猴脚本
4. 双击启动后端
5. 打开 GLM Coding Plan 页面
### 1. 下载压缩包
到 Releases 页面下载:
https://github.com/OLmatter/glm-coding-helper/releases
推荐二选一:
| 文件 | 适合谁 | 说明 |
| --- | --- | --- |
| `glm-coding-helper-portable-cpu-*.zip` | 想解压即用的人 | 自带 CPU 后端环境,体积较大,解压后直接双击启动 |
| `glm-coding-helper-online-installer-*.zip` | 网络正常、想下载小包的人 | 小包,首次启动会自动下载并安装 CPU/GPU 环境 |
不知道选哪个,就下载 `portable-cpu`。
### 2. 解压
把 zip 解压到一个普通目录,例如:
```text
D:\Tools\glm-coding-helper
```
路径里有中文通常也可以。如果遇到环境安装失败,优先换到纯英文路径再试。
### 3. 安装油猴脚本
1. 在 Chrome 或 Edge 安装 Tampermonkey:https://www.tampermonkey.net/
2. 安装脚本,二选一:
方式 A:访问 Greasy Fork 页面安装:
```text
https://greasyfork.org/zh-CN/scripts/579760-glm-coding-helper
```
方式 B:打开解压目录里的本地脚本:
```text
glm-coding-helper.user.js
```
3. 如果使用方式 B,就复制全部内容,新建 Tampermonkey 脚本,粘贴并保存。
4. 确认脚本已启用。
Chrome 用户如果脚本不运行,请打开扩展详情,开启:
- 开发者模式
- 允许用户脚本
- 允许在无痕模式中启用(如果你用无痕窗口)
Greasy Fork 和仓库根目录的 `glm-coding-helper.user.js` 都是给普通用户安装的入口;`scripts/userscripts/` 只是保留给开发和旧路径兼容。
### 4. 启动后端
如果下载的是自带环境包:
```text
start-backend.cmd
```
如果下载的是在线安装包:
```text
one-click-start.cmd
```
后端启动后默认监听:
```text
http://127.0.0.1:8888
```
然后打开 GLM Coding Plan 页面。脚本会自动使用内置优惠入口进入,不需要手动复制邀请码:
```text
https://www.bigmodel.cn/glm-coding
```
## 抢购步骤
1. 先安装好油猴插件,配置好油猴脚本。使用 Chrome 时要在扩展页面开启开发者模式,然后找到 Tampermonkey 详情,把“允许用户脚本”“在无痕模式下启用”“允许访问文件网址”按需打开。
2. 下载并解压 Release 包,双击 `start-backend.cmd` 或 `one-click-start.cmd` 启动本地后端。
3. 打开 GLM Coding 页面测试脚本是否正常,脚本会自动补上内置优惠入口。
4. 每天 9 点 30 分前进入抢购页面准备,晚了可能就打不开了。提前准备好手机支付宝付款。
5. 多开几个窗口,等快到 10 点的时候点击好验证码但不要确定,等 10 点一到再按确定。并发窗口不要开得过多,建议先从 2-4 个窗口开始;过高并发可能触发平台限流或风控。
6. 如果这波没抢到,就盯着一个窗口用 OCR 识别点击。默认不会自动关闭支付页面。注意:如果看到没有金额的支付页面,那就是没抢到,要关掉继续抢。这时可以使用快捷键快速操作。
### 快捷键
- `Esc`:关闭系统繁忙弹窗或支付弹窗
- `Enter` / `Space`:点击验证码确认按钮
### 重要提醒
- 默认会自动识别验证码并点击目标文字。
- 默认不会自动点击验证码“确定”按钮,需要在配置面板里手动开启。
- 默认不会自动关闭无效支付链接或限流弹窗,需要在配置面板里手动开启。
- 遇到真正有金额的支付二维码,请自行确认后再扫码支付。
- 多窗口并发不是越多越好。窗口过多、请求过密可能触发平台限流、验证码升级或账号风控,请根据自己的网络和账号情况保守设置。
- 抢购是否成功受库存、限流、账号状态、支付速度等因素影响,脚本不能保证一定抢到。
油猴菜单里可以打开配置面板、一键多开窗口、清除今日套餐状态缓存。
## 配置面板
在 Tampermonkey 菜单中选择:
```text
打开配置面板
```
可以配置:
- 套餐优先级
- 订阅周期优先级
- 是否自动点击订阅
- 是否自动点击验证码文字
- 是否自动点击验证码确定
- 是否自动关闭无效支付/限流弹窗
- 是否启用智能刷新
默认配置比较保守:脚本会帮你识别并点选验证码文字,但不会替你按验证码“确定”。
## 验证码识别说明
当前验证码流程是:
1. 油猴脚本直接从腾讯验证码组件中抓取原图。
2. 原图发送到本地后端 `/captcha_direct`。
3. 后端使用本地 YOLO + PaddleOCR 识别。
4. 脚本按识别坐标点击文字。
验证码图片不会上传到第三方识别服务。
## 常用文件
| 文件 | 用途 |
| --- | --- |
| `glm-coding-helper.user.js` | 给 Tampermonkey 安装的主脚本 |
| `start-backend.cmd` | 启动已有本地后端环境 |
| `one-click-start.cmd` | 自动安装环境并启动 |
| `install-env.cmd` | 手动安装 CPU 后端环境 |
| `scripts/` | 后端和打包脚本 |
| `models/` | 本地识别模型 |
## 常用启动方式
普通用户优先双击 `.cmd` 文件。如果你需要手动调试,可以用下面的命令。
自动选择 CPU/GPU:
```powershell
powershell -ExecutionPolicy Bypass -File scripts\start_backend.ps1 -Mode auto
```
强制 CPU:
```powershell
powershell -ExecutionPolicy Bypass -File scripts\start_backend.ps1 -Mode cpu
```
指定 CPU worker:
```powershell
powershell -ExecutionPolicy Bypass -File scripts\start_backend.ps1 -Mode cpu -CpuWorkers 3
```
强制 GPU:
```powershell
powershell -ExecutionPolicy Bypass -File scripts\start_backend.ps1 -Mode gpu
```
GPU 模式需要确认 `.venv_paddle_gpu` 里安装的是 GPU 版 PyTorch。`paddlepaddle-gpu` 只负责 OCR,YOLO/Ultralytics 依赖 `torch`;如果 `torch` 是 CPU 版,后端仍会跑起来,但 YOLO 会走 CPU。
检查方式:
```powershell
.\.venv_paddle_gpu\Scripts\python.exe -c "import torch; print(torch.__version__); print(torch.cuda.is_available()); print(torch.cuda.get_device_name(0) if torch.cuda.is_available() else 'no cuda')"
```
如果输出 `False` 或 `no cuda`,请在 `.venv_paddle_gpu` 中按 PyTorch 官网选择 CUDA 版本重新安装 GPU 版 `torch` 后再启动 GPU 模式。
## 模型文件
默认检测权重路径:
```text
models/weights/yolo-captcha-detector.pt
```
也可以用环境变量覆盖:
```powershell
$env:CNCAPTCHA_DETECTOR_PATH="D:\path\to\best.pt"
```
验证码识别模型从传统 CV、YOLO、GLM-OCR/VLM 标注、手搓排序模型到 PP-OCRv5 的开发历程见:
```text
docs/captcha_model_journey.md
```
## 常见问题
### 识别结果或点击位置像是错位、滞后一张图?
先刷新一下浏览器页面,再重新打开验证码测试。验证码弹窗刷新、页面状态缓存、多窗口切换或浏览器缩放状态异常时,前端显示和后端识别可能短暂不同步。
### 后端窗口红字报错怎么办?
优先确认你下载的是最新版 Release 包。如果是在线安装包,第一次启动需要联网下载环境;如果网络不稳定,建议换 `portable-cpu` 自带环境包。
### 优惠活动从哪里进入?
推荐打开 GLM Coding 页面后由脚本自动补上内置优惠入口:
👉 https://www.bigmodel.cn/glm-coding
## 致谢
本项目的油猴前端脚本是在 Greasy Fork 用户 `mumumi` 的《GLM Coding Plan抢购助手》基础上二次开发而来:
https://greasyfork.org/zh-CN/scripts/572157-glm-coding-plan%E6%8A%A2%E8%B4%AD%E5%8A%A9%E6%89%8B
感谢原作者长期维护和分享。原脚本采用 GNU GPLv3 许可证;本仓库继续保留相同许可证声明,并在其基础上增加本地 CPU/GPU OCR 后端、自动验证码识别和开源部署脚本。
## 许可证
本项目基于 GNU GPLv3 发布。油猴脚本基于 Greasy Fork 用户 `mumumi` 的 GPLv3 脚本二次开发,继续保留相同许可证。
## 说明
本项目用于本地 OCR、自动化辅助和技术研究。请遵守目标网站服务条款和当地法律法规,自行承担使用风险。
## 附录:OCR 方案对比
下面是本项目在本地数据上的阶段性对比结果。判定口径为:点选验证码中 3 个提示字都点到正确位置,才算 1 张图片识别成功。
### 小样本隐藏集
隐藏集包含 33 张未参与训练的真实验证码图。
| 阶段 | 方案 | 准确率 | 速度 | 说明 |
| --- | --- | ---: | ---: | --- |
| 1 | 裸 `ddddocr default/old` | `4/33 = 12.1%` | `7.3ms/裁剪字符` | 速度很快,但直接用于本验证码不够 |
| 2 | 裸 `ddddocr beta` | `6/33 = 18.2%` | `7.9ms/裁剪字符` | 比 default 略好,但仍不能直接用 |
| 3 | `glm-coding-grabber` 原样管道 | `24/33 = 72.7%` | `156ms/张` | 原项目默认只扫 macOS 字体,Windows 下会退化 |
| 4 | `glm-coding-grabber` 完整管道 + Windows 字体 | `33/33 = 100%` | `250ms/张` | 轻量、快速,补齐字体后效果明显提升 |
| 5 | 本项目 PP-OCRv5 mobile 裸识别 | `26/33 = 78.8%` | `624ms/裁剪字符` | 单独识别仍不够稳定 |
| 6 | 本项目 PP-OCRv5 mobile + 提示字约束 | `32/33 = 97.0%` | 同上 | 接近可用 |
| 7 | 本项目 PP-OCRv5 server 裸识别 | `28/33 = 84.8%` | `706ms/裁剪字符` | 比 mobile 更准,但更重 |
| 8 | 本项目 PP-OCRv5 server + 提示字约束 | `33/33 = 100%` | 同上 | 隐藏集满分 |
| 9 | 本项目 CPU hybrid logits constrained | `33/33 = 100%` | warm `761ms/张` | 当前默认稳定方案 |
### 压力测试集
压力测试使用本地 `glm_ocr_labels_all.json` 中 `has_error=false` 的 379 张可用标注图,统一按 35px 点击半径判定。
| 方案 | 准确率 | 平均速度 | 特点 |
| --- | ---: | ---: | --- |
| `glm-coding-grabber` 完整管道 + Windows 字体 | `363/379 = 95.8%` | `257ms/张` | 更轻、更快,但大样本下仍有失败 |
| 本项目当前 CPU 管道 | `379/379 = 100%` | `851ms/张` | 更慢、更大,但稳定性更好 |
更严格点击半径下的压力测试结果:
| 点击半径 | `glm-coding-grabber` 完整管道 | 本项目当前 CPU 管道 |
| ---: | ---: | ---: |
| 10px | `339/379 = 89.4%` | `379/379 = 100%` |
| 15px | `359/379 = 94.7%` | `379/379 = 100%` |
| 20px | `362/379 = 95.5%` | `379/379 = 100%` |
| 25px | `363/379 = 95.8%` | `379/379 = 100%` |
| 35px | `363/379 = 95.8%` | `379/379 = 100%` |
结论:轻量 `ddddocr` 管道的优势是体积小、速度快,适合作为快速模式或备用模式;本项目当前 PP-OCRv5 + YOLO + 提示字约束方案的缺点是慢、环境大,但在本地隐藏集和压力测试中稳定性更好。