diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1394919 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +inject.js +node_modules/ +.DS_Store diff --git a/README.md b/README.md new file mode 100644 index 0000000..c2575c1 --- /dev/null +++ b/README.md @@ -0,0 +1,113 @@ +# GLM Coding 抢购助手 v4.0 + +智谱 GLM Coding Plan 限时抢购自动化脚本(Tampermonkey 油猴脚本) + +## 功能特点 + +- **并发重试** — 3 路并发请求,任一成功立即返回(比单线程快 3x) +- **自适应间隔** — 前 10 次零延迟爆发 → 快速重试 → 随机间隔,带 ±30% 抖动 +- **preview + check 双重校验** — 获取 bizId 后调用 check 确认有效,EXPIRE 立即重试 +- **4 层支付恢复** — 暴力清弹窗 → 缓存重点击 → 直接获取支付链接 → 兜底提醒 +- **反检测** — JSON.parse 定向拦截(不污染全局)、fetch/XHR toString 伪装、Shadow DOM 面板隔离 +- **高精度定时** — requestAnimationFrame + performance.now,精度 ±2ms +- **配置持久化** — localStorage 保存并发数/上限等配置,sessionStorage 保存捕获的请求 +- **错误弹窗自动恢复** — MutationObserver 监控弹窗出现,自动关闭并重新触发购买 +- **TCP 预热** — 提前建立连接,减少首次请求延迟 +- **快捷键** — `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. 右上角出现 **GLM v4.0** 控制面板 +3. **手动点一次购买按钮** — 脚本捕获请求参数(面板显示"已捕获") +4. 选择触发方式: + - **主动抢购**:立即开始并发重试 + - **定时触发**:设定时间,到点自动开始 + - **预热**:提前建立 TCP 连接 +5. 抢购成功后自动弹出支付页面 + +## 控制面板 + +``` +┌─────────────────────────┐ +│ GLM v4.0 [-] │ +├─────────────────────────┤ +│ ● 重试中... 45/500 │ +│ 已捕获: POST .../preview│ +│ │ +│ [重试:45] [成功:0] [错误:3] │ +│ │ +│ 并发 [3] 上限 [500] │ +│ 定时 [--:--] [设定] │ +│ │ +│ [▶ 主动抢购] [停止] [预热]│ +│ │ +│ 10:00:01 捕获 preview │ +│ 10:00:01 #3 系统繁忙 │ +│ 10:00:02 #15 售罄 │ +│ 10:00:03 成功! bizId=xx │ +└─────────────────────────┘ +``` + +## 配置参数 + +| 参数 | 默认值 | 说明 | +|------|--------|------| +| 并发数 | 3 | 同时发起的请求数 | +| 最大重试 | 500 | 达到上限后停止 | +| 爆发次数 | 10 | 前 N 次零延迟 | +| 快速间隔 | 50ms | 爆发后的重试间隔 | +| 慢速间隔 | 150ms | 后期重试间隔中值 | +| 抖动 | ±30% | 间隔随机化幅度 | + +## 快捷键 + +| 快捷键 | 功能 | +|--------|------| +| `Alt + S` | 启动主动抢购 | +| `Alt + X` | 停止所有操作 | +| `Alt + H` | 隐藏/显示面板 | + +## 工作原理 + +``` +用户点击购买 → 脚本捕获 preview 请求 + ↓ + ┌── 并发路1 ──┐ + ├── 并发路2 ──┤ → 任一获取 bizId + └── 并发路3 ──┘ + ↓ + check 校验 bizId + ├── EXPIRE → 立即重试 + └── 通过 → 成功! + ↓ + 4 层支付恢复 + ├── 清除错误弹窗/遮罩 + ├── 缓存响应 + 重点击购买 + ├── 直接获取支付链接 + └── 兜底提醒 +``` + +## 注意事项 + +- 需要先登录智谱账号 +- 抢购前建议先点一次购买按钮让脚本捕获请求参数 +- 建议在抢购开始前 3 秒点击 **预热** 按钮 +- 如果支付弹窗未出现,脚本会自动尝试多种恢复策略 + +## License + +MIT