1e3822fb253c1405480f2a8171434e59ac46b4ed
GLM Coding 抢购助手 v4.6(OpenClaw Mod)
智谱 GLM Coding Plan 限时抢购自动化脚本(Tampermonkey 油猴脚本) 基于 qtaxm/glm-rush v4.6 修改
vs 原版的差异
本版本在原版基础上增加了以下改进:
| 修改 | 说明 |
|---|---|
| A1 空单过滤 | check 返回金额为 0 视为空单,继续重试 |
| A2 Vue 响应式保护 | patchSoldOut 跳过 __ob__/__v_isVNode/__v_isRef 防止崩溃 |
| A3 提前触发 | 可配置提前 X 秒触发,补偿 RTT 网络延迟 |
| A4 捡漏模式 | maxRetry 耗尽后自动降速(2路/3s间隔)等退票 |
| A5 全局 soldOut 补丁 | 所有 fetch 响应的 JSON 中移除 isSoldOut/soldOut/isServerBusy/stock=0 |
| B1 Promise.allSettled | 并发取消不报 rejected,统一 settled 处理 |
| B2 favicon.ico 时间同步 | 改用 favicon.ico HEAD 请求,采样 3 次取中位数 |
| B3 预热策略 | 改用空 POST + favicon.ico,提前 5 分钟开始预热 |
| B4 waitForBuyButton | 按钮轮询最多 8 秒(每 200ms),支持 class/文本双策略 |
| B5 stopAll abort | 停止时主动 abort 所有进行中的 AbortController |
| B6 getVueRoot | Vue 2/3 兼容获取根实例辅助函数 |
| B7 支付弹窗恢复重置 | 检测到支付弹窗时重置 recoveryAttempts |
| C1 555 视为 EXPIRE | code=555 系统繁忙加入立即重试列表,429 退避上限 8 秒 |
| C2 连续售罄比例判断 | 60% 售罄即计数,非全量才计数 |
| C3 rAF 精度提升 | 最后 1 秒切换 requestAnimationFrame,setInterval/rAF 互斥 |
| C4 sessionStorage 版本校验 | 写入 __v:1,读取时校验版本,不一致则清除 |
| C5 history 路由劫持 | pushState/replaceState 拦截,离开确认提示 |
| C6 fakeXHR setProp | try-catch + Object.defineProperty 双重保护属性赋值 |
| D1 放票时间警告 | 面板显示「⚠️ 每次确认放票时间」提示 |
| D2 dismissDialog Escape | 弹窗关闭前优先发送 Escape 键盘事件 |
| D3 getDelay 参数名 | 参数名从 attempt 改为 round(语义更准确) |
| D4 VERSION 常量 | 统一 const VERSION = '4.6' 变量管理 |
功能特点
- 极速并发引擎 — 双模式并发:极速模式 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,提前触发补偿 RTT
- 配置持久化 — localStorage 保存所有配置,sessionStorage 保存捕获的请求(带版本校验)
- 弹窗自动恢复 — MutationObserver 监控弹窗,自动关闭并重新触发,最多 3 次
- 捡漏模式 — 抢购失败后自动降速等待退票
- 离开保护 — 路由跳转时确认是否中断抢购
- 快捷键 —
Alt+S开始 /Alt+X停止 /Alt+H隐藏面板
安装
方式 1:从 Gitea Raw 安装(推荐)
- 安装 Tampermonkey 浏览器扩展
- 点击安装:glm-rush-v4.user.js
- Tampermonkey 自动弹出安装页面,点击 安装
方式 2:从 GitHub Raw 安装(原版)
- 安装 Tampermonkey 浏览器扩展
- 点击安装:glm-rush-v4.user.js(原版)
使用方法
- 打开 GLM Coding 页面
- 右上角出现控制面板
- 手动点一次购买按钮 — 脚本捕获请求参数(面板显示"已捕获")
- 选择触发方式:
- 主动抢购:立即开始并发重试
- 定时触发:设定时间(默认 10:00:00),到点自动开始
- 抢购成功后自动弹出支付页面
配置参数
| 参数 | 默认值 | 说明 |
|---|---|---|
| 并发路数 | 5 | 普通模式同时发起的请求数 |
| 极速并发 | 10 | 前 5 秒的高并发路数 |
| 极速时长 | 5s | 高并发持续多久 |
| 最大重试 | 2000 | 达到上限后进入捡漏模式 |
| 爆发次数 | 20 | 前 N 次零延迟 |
| 快速间隔 | 30ms | 爆发后的重试间隔 |
| 慢速间隔 | 100ms | 后期重试间隔中值 |
| 抖动 | ±30% | 间隔随机化幅度 |
| 抢购时间 | 10:00:00 | 每天定时触发时间 |
| 提前触发 | 2s | 开抢前提前 X 秒触发(补偿 RTT) |
快捷键
| 快捷键 | 功能 |
|---|---|
Alt + S |
启动主动抢购 |
Alt + X |
停止所有操作 |
Alt + H |
隐藏/显示面板 |
工作原理
用户点击购买 → 脚本捕获 preview 请求
↓
┌── 极速模式 (前5秒) ──┐
│ 10路并发 × 零延迟 │
└──────────────────────┘
↓
┌── 普通模式 ──────────┐
│ 5路并发 × 自适应间隔 │
└──────────────────────┘
↓
任一获取 bizId
↓
check 校验 bizId
├── EXPIRE/空单 → 立即重试
└── 通过 → 成功!
↓
4 层支付恢复
├── 清除错误弹窗/遮罩
├── 缓存响应 + 重点击购买
├── 直接获取支付链接
└── 兜底提醒
↓
超过 maxRetry 且 < 5分钟
↓
捡漏模式(2路/3s间隔)
更新日志
v4.6-mod (2026-04-18)
基于 qtaxm/glm-rush v4.6,OpenClaw 新增修改:
- A1 check 返回金额为 0 视为空单,继续重试
- A2 patchSoldOut 增加 Vue 响应式对象保护
- A3 支持提前触发(补偿 RTT)
- A4 maxRetry 耗尽后自动进入捡漏模式
- A5 全局 fetch 响应 JSON soldOut/isServerBusy/stock=0 补丁
- B1 Promise.allSettled 统一处理并发取消
- B2 favicon.ico HEAD 时间同步,采样 3 次取中位数
- B3 预热改空 POST,提前 5 分钟开始
- B4 waitForBuyButton 异步轮询(最多 8 秒)
- B5 stopAll 主动 abort 所有 AbortController
- B6 getVueRoot Vue 2/3 兼容辅助函数
- B7 支付弹窗出现时重置 recoveryAttempts
- C1 code=555 系统繁忙视为 EXPIRE 立即重试,429 退避上限 8 秒
- C2 连续售罄改为比例判断(60% 即计数)
- C3 rAF 精度提升,最后 1 秒切换 requestAnimationFrame
- C4 sessionStorage 版本校验(__v:1)
- C5 history 路由劫持,离开时确认
- C6 fakeXHR setProp 双重保护属性赋值
- D1 面板增加放票时间警告提示
- D2 dismissDialog 优先发送 Escape 事件
- D3 getDelay 参数名语义修正
- D4 VERSION 常量统一版本管理
v4.6 (2026-04-10) 原版
- 修复 支付弹窗不弹出 — 根因: 前端
payComponent.isServerBusy=true阻止payPreviewFn发请求 - 新增
patchSoldOut增加isServerBusy拦截(JSON.parse 层) - 新增
patchVueServerBusy兜底:定时扫描 Vue 组件树,直接 patchisServerBusy=false - 新增
forcePayDialog兜底:抢购成功 1.5s 后若弹窗未出现,直接设置 VuepayDialogVisible=true
v4.5 (2026-04-10) 原版
- 修复
findBuyButton找错按钮(匹配到"即刻订阅"导航按钮),优先找buy-btn类按钮
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 弹窗监控
- 快捷键、离开保护
License
MIT License
致谢
- 原作者 qtaxm/glm-rush
Description
Languages
JavaScript
100%