Files
glm-rush/README.md
qtaxm 471bc16d80 fix: v4.6 clickButton 直接调用 Vue gotoPayFn() 绕过 disabled
Playwright 实测发现: 解除 DOM disabled 后点击按钮仍无法触发 Vue 事件,
因为 Vue 组件内部有自己的状态控制。
改为直接从按钮向上查找 Vue 实例,调用 gotoPayFn() 方法。
2026-04-10 20:16:02 +08:00

138 lines
5.7 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 抢购助手 v4.6
智谱 GLM Coding Plan 限时抢购自动化脚本Tampermonkey 油猴脚本)
## 功能特点
- **极速并发引擎** — 双模式并发:极速模式 10 路 + 普通模式 5 路,任一成功立即取消其余
- **自适应间隔** — 前 20 次零延迟爆发 → 30ms 快速重试 → 100ms 随机间隔,带 ±30% 抖动
- **preview + check 双重校验** — 获取 bizId 后调用 check 确认有效EXPIRE 立即重试
- **4 层支付恢复** — 暴力清弹窗 → 缓存重点击 → 直接获取支付链接 → 兜底提醒
- **反检测** — 请求指纹随机化X-Request-Id / X-Timestamp / Accept-Language、JSON.parse 定向拦截、fetch/XHR toString 伪装、Shadow DOM 面板隔离
- **高精度定时** — requestAnimationFrame + performance.now精度 ±2ms
- **配置持久化** — localStorage 保存所有配置sessionStorage 保存捕获的请求,刷新不丢失
- **弹窗自动恢复** — MutationObserver 监控弹窗,自动关闭并重新触发,最多 3 次
- **快捷键** — `Alt+S` 开始 / `Alt+X` 停止 / `Alt+H` 隐藏面板
## 安装
### 方式 1从 GitHub Raw 安装(推荐)
1. 安装 [Tampermonkey](https://www.tampermonkey.net/) 浏览器扩展
2. 点击安装:[glm-rush-v4.user.js](https://raw.githubusercontent.com/qtaxm/glm-rush/master/glm-rush-v4.user.js)
3. Tampermonkey 自动弹出安装页面,点击 **安装**
### 方式 2手动安装
1. 复制 `glm-rush-v4.user.js` 的内容
2. 打开 Tampermonkey → 添加新脚本 → 粘贴 → 保存
## 使用方法
1. 打开 [GLM Coding 页面](https://bigmodel.cn/glm-coding)
2. 右上角出现控制面板
3. **手动点一次购买按钮** — 脚本捕获请求参数(面板显示"已捕获"
4. 选择触发方式:
- **主动抢购**:立即开始并发重试
- **定时触发**:设定时间(默认 10:00:00到点自动开始
5. 抢购成功后自动弹出支付页面
## 配置参数
| 参数 | 默认值 | 说明 |
|------|--------|------|
| 并发路数 | 5 | 普通模式同时发起的请求数 |
| 极速并发 | 10 | 前 5 秒的高并发路数 |
| 极速时长 | 5s | 高并发持续多久 |
| 最大重试 | 2000 | 达到上限后停止 |
| 爆发次数 | 20 | 前 N 次零延迟 |
| 快速间隔 | 30ms | 爆发后的重试间隔 |
| 慢速间隔 | 100ms | 后期重试间隔中值 |
| 抖动 | ±30% | 间隔随机化幅度 |
| 抢购时间 | 10:00:00 | 每天定时触发时间 |
## 快捷键
| 快捷键 | 功能 |
|--------|------|
| `Alt + S` | 启动主动抢购 |
| `Alt + X` | 停止所有操作 |
| `Alt + H` | 隐藏/显示面板 |
## 工作原理
```
用户点击购买 → 脚本捕获 preview 请求
┌── 极速模式 (前5秒) ──┐
│ 10路并发 × 零延迟 │
└──────────────────────┘
┌── 普通模式 ──────────┐
│ 5路并发 × 自适应间隔 │
└──────────────────────┘
任一获取 bizId
check 校验 bizId
├── EXPIRE → 立即重试
└── 通过 → 成功!
4 层支付恢复
├── 清除错误弹窗/遮罩
├── 缓存响应 + 重点击购买
├── 直接获取支付链接
└── 兜底提醒
```
## 更新日志
### v4.6 (2026-04-10)
- **修复** clickButton 直接调用 Vue 组件的 `gotoPayFn()` 方法,彻底绕过 disabled 按钮限制
- **验证** Playwright 实测确认 `gotoPayFn()` 能触发完整的 preview + check 流程
### v4.5 (2026-04-10)
- **修复** 支付弹窗不弹出的核心问题:改用"先抢再喂"策略retry 独立抢到 bizId 后缓存响应,再点击按钮让前端正常处理
- **修复** `findBuyButton` 找错按钮(匹配到"即刻订阅"导航按钮),现在按优先级排序,优先找特惠/购买按钮
- **修复** disabled 按钮点击无效:`clickButton` 强制解除 disabled 和 is-disabled class
- **优化** 拦截器简化:去掉 proactive 分支,只做 cache 返回 + 普通捕获,逻辑更清晰
- **优化** 按钮排除"即刻订阅"、"暂不"、"拼好模"等非购买按钮
### v4.4 (2026-04-09)
- **新增** 极速模式:前 5 秒 10 路并发,之后降为 5 路
- **新增** 请求指纹随机化X-Request-Id / X-Timestamp / Accept-Language 权重随机)
- **新增** 余额支付方式支持
- **优化** 并发数从 3 路提升到 5 路(普通模式)
- **优化** 最大重试从 500 提升到 2000
- **优化** 爆发次数从 10 提升到 20快速间隔从 50ms 降到 30ms
- **优化** 连续售罄 / 限流智能退避
### v4.1 (2026-04-08)
- **修复** 售罄状态下按钮不可点击的问题(恢复全局 JSON.parse patch
- **修复** 支付弹窗不弹出的问题4 层恢复策略)
- **修复** `@match` 规则不匹配 `bigmodel.cn`(无 www
- **修复** 原型链污染风险Object.keys + WeakSet
- **修复** HTTP 401/403 会话过期检测
- **修复** 限流退避使用错误的计数器
- **修复** stats.errors 永远显示 0
- **修复** Alt+H 快捷键在 Shadow DOM 中失效
### v4.0 (2026-04-08)
- 并发重试Promise.race 变体)
- 自适应间隔(爆发→快速→随机抖动)
- 反检测定向拦截、toString 伪装、Shadow DOM
- 高精度定时rAF + performance.now
- 配置/请求持久化
- MutationObserver 弹窗监控
- 快捷键、离开保护
### v3.2 (原版)
- 单线程串行重试
- preview + check 双重校验
- 错误弹窗自动恢复
- 浮动控制面板
## License
MIT