Files
glm-rush/README.md

9.3 KiB
Raw Permalink Blame History

GLM Coding 抢购助手 v4.6OpenClaw 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 秒切换 requestAnimationFramesetInterval/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 安装(推荐)

  1. 安装 Tampermonkey 浏览器扩展
  2. 点击安装:glm-rush-v4.user.js
  3. Tampermonkey 自动弹出安装页面,点击 安装

方式 2从 GitHub Raw 安装(原版)

  1. 安装 Tampermonkey 浏览器扩展
  2. 点击安装:glm-rush-v4.user.js(原版)

使用方法

  1. 打开 GLM Coding 页面
  2. 右上角出现控制面板
  3. 手动点一次购买按钮 — 脚本捕获请求参数(面板显示"已捕获"
  4. 选择触发方式:
    • 主动抢购:立即开始并发重试
    • 定时触发:设定时间(默认 10:00:00到点自动开始
  5. 抢购成功后自动弹出支付页面

配置参数

参数 默认值 说明
并发路数 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.6OpenClaw 新增修改:

  • 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 组件树,直接 patch isServerBusy=false
  • 新增 forcePayDialog 兜底:抢购成功 1.5s 后若弹窗未出现,直接设置 Vue payDialogVisible=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

致谢