86b64c4248a8a9d5b50215b2681e1668bd5342ad
- 捡漏模式移入循环内部(非死代码) - rAF/interval 双重触发改 else if 互斥 - 删除冗余 '555' 判断和重复 EXPIRE - 网络错误计数基准从 batchSize 改为 failedResults.length - Fetch 拦截加 needsPatch 快速短路 - 跨天顺延逻辑(超过30秒移至明天) - rAF 可通过 _glmRafCancelled 中断 - setState 改用 Object.assign
GLM Coding 抢购助手 v4.6
基于 qtaxm/glm-rush v4.0 修改
原作者:qtaxm | 原版协议:MIT
本版本(v4.6)继承 MIT 协议,代码可自由使用、修改、分发。
智谱 GLM Coding Plan 限时抢购自动化脚本(Tampermonkey 油猴脚本)
功能特点
- 极速并发引擎 — 双模式并发:极速模式 10 路 + 普通模式 5 路,任一成功立即取消其余
- 自适应间隔 — 前 20 次零延迟爆发 → 30ms 快速重试 → 100ms 随机间隔,带 ±30% 抖动
- preview + check 双重校验 + 金额零值过滤 — 获取 bizId 后调用 check 确认有效,EXPIRE 或金额为 0 则立即重试
- 4 层支付恢复 — 暴力清弹窗 → 缓存重点击 → 直接获取支付链接 → 兜底提醒
- 反检测 — 请求指纹随机化(X-Request-Id / X-Timestamp / Accept-Language)、JSON.parse 定向拦截、fetch/XHR toString 伪装、Shadow DOM 面板隔离
- 高精度定时 — requestAnimationFrame + performance.now,精度 ±2ms,提前 2 秒触发补偿 RTT
- 配置持久化 — localStorage 保存所有配置,sessionStorage 保存捕获的请求(含版本号),刷新不丢失
- 弹窗自动恢复 — MutationObserver 监控弹窗,自动关闭并重新触发,最多 3 次
- 定时触发预热 — 开售前 5 分钟空 POST 预热连接池
- 5 分钟捡漏模式 — 达到重试上限后若在 10:05 内,自动降频捡漏退票
- 快捷键 —
Alt+S开始 /Alt+X停止 /Alt+H隐藏面板
安装
方式 1:从本仓库 Raw 安装
- 安装 Tampermonkey 浏览器扩展
- 点击安装:glm-rush-v4.user.js
- Tampermonkey 自动弹出安装页面,点击 安装
方式 2:手动安装
- 复制
glm-rush-v4.user.js的内容 - 打开 Tampermonkey → 添加新脚本 → 粘贴 → 保存
使用方法
- 打开 GLM Coding 页面
- 右上角出现控制面板
- 手动点一次购买按钮 — 脚本捕获请求参数(面板显示"已捕获")
- 选择触发方式:
- 主动抢购:立即开始并发重试
- 定时触发:设定时间(默认 10:00:00),到点提前 2 秒自动开始
- 抢购成功后自动弹出支付页面
配置参数
| 参数 | 默认值 | 说明 |
|---|---|---|
| 并发路数 | 5 | 普通模式同时发起的请求数 |
| 极速并发 | 10 | 前 5 秒的高并发路数 |
| 极速时长 | 5s | 高并发持续多久 |
| 最大重试 | 2000 | 达到上限后停止 |
| 爆发次数 | 20 | 前 N 次零延迟 |
| 快速间隔 | 30ms | 爆发后的重试间隔 |
| 慢速间隔 | 100ms | 后期重试间隔中值 |
| 抖动 | ±30% | 间隔随机化幅度 |
| 提前触发 | 2s | 定时触发提前几秒开始,补偿网络 RTT |
| 抢购时间 | 10:00:00 | 每天定时触发时间 |
快捷键
| 快捷键 | 功能 |
|---|---|
Alt + S |
启动主动抢购 |
Alt + X |
停止所有操作(含当前 batch 所有请求) |
Alt + H |
隐藏/显示面板 |
工作原理
用户点击购买 → 脚本捕获 preview 请求
↓
┌── 极速模式 (前5秒) ──┐
│ 10路并发 × 零延迟 │
└──────────────────────┘
↓
┌── 普通模式 ──────────┐
│ 5路并发 × 自适应间隔 │
└──────────────────────┘
↓
任一获取 bizId
↓
check 校验 bizId
├── EXPIRE → 立即重试
├── 金额=0 → 立即重试(空单过滤)
└── 通过 → 成功!
↓
4 层支付恢复
├── 清除错误弹窗/遮罩
├── 缓存响应 + 重点击购买
├── 直接获取支付链接
└── 兜底提醒
更新日志
v4.6 (2026-04-18) — 本版本
严重缺陷修复(Safety)
- A1 空单未被完整过滤:check 校验通过后增加金额字段零值判断,金额为 0 视为空单继续重试,防止"弹出二维码但金额为 0"的无效订单
- A2 patchSoldOut 触发 Vue 响应式对象循环引用:增加
__ob__/__v_isVNode/__v_isRef跳过逻辑,防止调用栈溢出 - A3 定时触发时机错误:增加
preAdvanceSec配置项,提前 2 秒触发补偿网络 RTT - A4 错过 10:00–10:05 捡漏窗口:达到 maxRetry 后自动切换低频捡漏模式(2 并发/3 秒间隔),5 分钟后才彻底停止
- A5 Fetch 拦截只处理 preview 接口:fetch 拦截器对所有 JSON 响应做文本级正则替换,防止页面初始化时 isSoldOut 无法解除
高优先级优化(Performance)
- B1 并发取消误计错误触发退避:改用 Promise.allSettled + filter 排除"已取消",避免批量取消触发 3 秒假退避
- B2 时间同步用业务接口有风险:改用 favicon.ico HEAD 请求做时间同步,采样 3 次取中位数
- B3 预热用 HEAD 请求触发 405:改用空 POST 预热 preview 连接池,次数从 3 次增到 5 次,时机从提前 3 秒改为 5 分钟
- B4 buy-btn 类名硬编码不稳定:增加 waitForBuyButton 异步轮询(最多 8 秒),支持"特惠订购"等文本匹配多种策略
- B5 stopAll 无法中止当前 batch:维护
_activeControllers数组,stopAll 时主动 abort 所有当前活跃请求 - B6 Vue 3 兼容:新增
getVueRoot函数兼容 Vue 2(__vue__)和 Vue 3(__vue_app__)两种访问方式 - B7 recoveryAttempts 在支付弹窗出现后未重置:支付弹窗真正出现时重置计数器,允许用户误操作后继续自动恢复
中优先级优化(Reliability)
- C1 code=555 退避时间过长:code=555 和 EXPIRE 视为立即重试无延迟,429 限流退避上限从 16 秒缩短到 8 秒
- C2 consecutiveSoldOut 判断过严:从"全部售罄才计数"改为"超过 60% 即计数",混合网络场景更合理
- C3 定时器精度依赖 setInterval 高负载漂移:剩余 1 秒内切换到 requestAnimationFrame 精确对齐
- C4 sessionStorage 无版本号旧格式静默出错:添加
CAPTURE_VER=1,版本不匹配时清除旧数据 - C5 beforeunload 无法拦截 SPA 内部路由跳转:劫持
history.pushState/history.replaceState,路由切换时弹窗确认 - C6 fakeXHR 重复拦截抛出 TypeError:新增
setProp辅助函数用 try-catch + Object.defineProperty 双重保护
低优先级优化(Polish)
- D1 默认 rushTime 写死 10:00:00 造成误解:面板增加"⚠️ 每次确认放票时间"提示
- D2 dismissDialog 强制 display:none 破坏 Vue 状态:优先发送 Escape 事件让 Vue 自己处理,300ms 降级再强制隐藏
- D3 getDelay 参数语义混乱:变量名从
attempt改为roundNum,语义从"请求序号"改为"轮次" - D4 版本号不一致:定义
VERSION='4.6'常量,统一控制台日志和面板标题
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) — 原版 qtaxm/glm-rush
- 并发重试(Promise.race 变体)
- 自适应间隔(爆发→快速→随机抖动)
- 反检测(定向拦截、toString 伪装、Shadow DOM)
- 高精度定时(rAF + performance.now)
- 配置/请求持久化
- MutationObserver 弹窗监控
- 快捷键、离开保护
v3.2 (原版 qtaxm/glm-rush)
- 单线程串行重试
- preview + check 双重校验
- 错误弹窗自动恢复
- 浮动控制面板
License
MIT License - 本版本基于 qtaxm/glm-rush 修改,继承 MIT 协议。
Description
Languages
JavaScript
100%