[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-85153":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":8,"htmlUrl":8,"language":9,"languages":8,"totalLinesOfCode":8,"stars":10,"forks":11,"watchers":12,"openIssues":13,"contributorsCount":14,"subscribersCount":14,"size":14,"stars1d":14,"stars7d":14,"stars30d":14,"stars90d":14,"forks30d":14,"starsTrendScore":14,"compositeScore":15,"rankGlobal":8,"rankLanguage":8,"license":8,"archived":16,"fork":16,"defaultBranch":17,"hasWiki":16,"hasPages":16,"topics":18,"createdAt":8,"pushedAt":8,"updatedAt":19,"readmeContent":20,"aiSummary":8,"trendingCount":14,"starSnapshotCount":14,"syncStatus":13,"lastSyncTime":21,"discoverSource":22},85153,"miaosha-GLM","Rocke1001feller\u002Fmiaosha-GLM","Rocke1001feller",null,"JavaScript",85,35,57,2,0,34.43,false,"dev",[],"2026-06-15 10:04:56","# 智谱秒杀助手\n\n> **智谱 Coding Plan 秒杀助手** — Chrome MV3 浏览器扩展，辅助抢购 bigmodel.cn 限量套餐。\n\n**当前状态：积极开发中。** 秒杀网站的防护策略持续升级，本项目的成功率也在动态变化。我们非常欢迎社区贡献代码、反馈问题、分享经验。\n\n---\n\n## 免责声明\n\n- 本项目仅供学习交流，不保证每次都能抢到。实测成功率约 **60%**，受网络环境、服务器防护、验证码策略等多重因素影响。\n- bigmodel.cn 的防护机制会不定期更新，某些版本的扩展可能在某个时间点失效。**请自行 fork 本仓库，根据实际情况调整策略。**\n- 如果你找到了更优的方案，**欢迎提交 PR**，让更多人受益。社区的力量是本项目持续有效的关键。\n\n---\n\n## 功能概览\n\n| 功能 | 说明 |\n|------|------|\n| 倒计时提醒 | 系统通知 + 角标倒计时（60\u002F30\u002F15\u002F5 分钟前提醒） |\n| 验证码预取 | 自动拦截并缓存 Tencent CAPTCHA ticket，秒杀时跳过验证码 |\n| 同源请求代理 | 通过 MAIN world 注入绕过 CORS，确保 API 请求正常返回 |\n| NTP 校时 | 对 bigmodel.cn 服务器做延迟探测，对齐本地时钟 |\n| 自动开火 | 秒杀瞬间自动并发下单，支持多产品 + 多 ticket 策略 |\n| 开火可视化 | 3x3 产品矩阵实时展示每发请求的状态（成功\u002F繁忙\u002F错误\u002F耗尽） |\n| 支付轮询 | 下单成功后自动轮询支付二维码状态 |\n| API 调试面板 | Popup DEV 模式可直接调用 bigmodel.cn 7 个 API 端点 |\n\n---\n\n## 架构\n\n```\n┌─────────────────────────────────────────────────────────────────┐\n│                      Chrome Extension (MV3)                      │\n│                                                                   │\n│  ┌──────────────┐   ┌──────────────────────────────────────────┐ │\n│  │   Background  │   │              bigmodel.cn Tab              │ │\n│  │ Service Worker│   │                                           │ │\n│  │               │   │  ┌─────────────┐    ┌─────────────────┐  │ │\n│  │ • Alarms API  │   │  │ bm-capture  │    │   bm-main.js    │  │ │\n│  │ • Badge 角标  │   │  │ (ISOLATED)  │◄──►│  (MAIN world)   │  │ │\n│  │ • 通知推送    │   │  │             │    │                  │  │ │\n│  │               │   │  │ • 倒计时UI  │    │ • XHR 拦截      │  │ │\n│  └───────┬───────┘   │  │ • Auth抓取  │    │ • 验证码监听     │  │ │\n│          │           │  │ • Storage桥 │    │ • 秒杀火力控制   │  │ │\n│  ┌───────▼───────┐   │  └─────────────┘    └─────────────────┘  │ │\n│  │    Popup       │   │                                           │ │\n│  │                │   └──────────────────────────────────────────┘ │\n│  │  ┌──────────┐  │                                                 │\n│  │  │ DEV 模式 │  │   chrome.storage.local ◄──── 所有组件共享存储  │\n│  │  │ API 调试 │  │                                                 │\n│  │  └──────────┘  │                                                 │\n│  │  ┌──────────┐  │                                                 │\n│  │  │ PROD 模式│  │                                                 │\n│  │  │ 秒杀操作 │  │                                                 │\n│  │  └──────────┘  │                                                 │\n│  └────────────────┘                                                 │\n└─────────────────────────────────────────────────────────────────────┘\n```\n\n**核心工作流：**\n\n```\nbm-main.js (MAIN world)          bm-capture (ISOLATED world)\n────────────────────────          ───────────────────────────\nXHR 拦截到验证码响应               监听 window message\n→ window.postMessage(ticket)  →   → storage.setItem('local:ticketPool', ...)\n                                  → 累积 ticket 池\n\n倒计时提醒 UI 按钮点击              监听 UI 事件\n→ window.postMessage(FIRE) →       → 读取 ticketPool + auth\n                                  → 发起批量 fetch 请求\n```\n\n**为什么需要 MAIN world 注入？** bigmodel.cn 服务端会拒绝 `chrome-extension:\u002F\u002F` origin 的请求（返回空 body）。唯一的解决方案是在页面的 MAIN world 中执行 `fetch`，让请求来源为 `https:\u002F\u002Fbigmodel.cn`。详见 `docs\u002Farchitecture.md`。\n\n---\n\n## 快速开始\n\n### 方式一：下载预编译包（推荐）\n\n1. 下载 zip 压缩包：[miaosha-GLM.zip](https:\u002F\u002Fgithub.com\u002FRocke1001feller\u002Fmiaosha-GLM\u002Freleases\u002Fdownload\u002F1.0.0.alpha\u002Fmiaosha-glm-1.0.0.alpha-chrome.zip)\n2. 解压 zip 文件（见下方[解压说明](#zip-解压说明)）\n3. 打开 Chrome 浏览器，访问 `chrome:\u002F\u002Fextensions`\n4. 开启右上角的「开发者模式」\n5. 点击「加载已解压的扩展程序」，选择解压后的 `智谱秒杀助手` 文件夹\n6. 完成！扩展图标将出现在浏览器工具栏\n\n### 方式二：从源码构建\n\n```bash\n# 克隆仓库\ngit clone https:\u002F\u002Fgithub.com\u002FRocke1001feller\u002Fmiaosha-GLM.git\ncd miaosha-GLM\n\n# 安装依赖\npnpm install\n\n# 开发模式（HMR，扩展自动重载）\npnpm dev\n\n# 生产构建（含回归测试）\npnpm build\n```\n\n### 使用流程\n\n1. 打开 [bigmodel.cn\u002Fglm-coding](https:\u002F\u002Fbigmodel.cn\u002Fglm-coding) 并登录\n2. 在扩展选项页配置秒杀时间（默认 09:54:59.999 上海时区）\n3. 扩展自动预取验证码、校准服务器时间\n4. 秒杀瞬间点击「开火」或等待自动开火\n\n### ZIP 解压说明\n\n根据你的操作系统，解压下载的 zip 文件：\n\n**macOS**\n- 双击 `miaosha-GLM-chrome-mv3-1.0.0.alpha.zip`，系统自动解压\n- 或右键选择「用归档实用工具打开」\n\n**Windows**\n- 右键点击 zip 文件 → 选择「全部解压缩」\n- 或使用 7-Zip、WinRAR 等工具解压\n\n**Linux**\n```bash\nunzip miaosha-GLM-chrome-mv3-1.0.0.alpha.zip\n```\n\n解压后你会看到一个 `智谱秒杀助手` 文件夹，直接选择该文件夹加载到 Chrome 即可。\n\n---\n\n## 项目结构\n\n```\n├── entrypoints\u002F\n│   ├── background.ts          # Service Worker：通知 + 角标倒计时\n│   ├── bm-capture.content.ts  # Content Script (ISOLATED)：验证码\u002F认证\u002F开火\n│   ├── popup\u002F                 # Popup 页面 (Svelte 5)\n│   └── options\u002F               # 选项页 (Svelte 5)\n├── lib\u002F\n│   ├── api\u002F                   # API 客户端、Auth\u002FTicket\u002FPayment 存储、开火策略\n│   └── settings\u002F              # 秒杀时间、验证码配置\n├── src\u002Fbm-main\u002F               # MAIN world 注入脚本源码（01-09 模块）\n├── public\u002Fbm-main.js          # 自动生成的 IIFE（勿手动编辑）\n├── scripts\u002F                   # 构建脚本 + E2E 回归门\n├── tests\u002F                     # 单元\u002F组件\u002F集成测试\n└── docs\u002F                      # 架构文档、API 探查、故障复盘\n```\n\n---\n\n## 测试\n\n```bash\npnpm test            # 运行全部测试（65+ 用例）\npnpm test:watch      # 监听模式\npnpm test:ui         # 可视化 UI\npnpm test:coverage   # 覆盖率报告\n```\n\n测试分 6 层：纯逻辑 → 存储层 → bm-main JS → Svelte 组件 → Chrome API 集成 → E2E 回归。详见 `docs\u002Ftesting.md`。\n\n---\n\n## 贡献\n\n**欢迎任何形式的贡献！** 特别是：\n\n- 适配 bigmodel.cn 新的防护策略\n- 优化开火时序和并发策略\n- 提升验证码预取成功率\n- 修复 bug、补充测试、完善文档\n\n### 贡献流程\n\n1. Fork 本仓库\n2. 创建特性分支：`git checkout -b feature\u002Fyour-feature`\n3. 确保测试通过：`pnpm test`\n4. 确保构建通过：`pnpm build`\n5. 提交 Pull Request\n\n### 问题反馈\n\n如果遇到扩展失效、秒杀失败等情况，请在 Issues 中提交，并附上：\n\n- 浏览器版本\n- 扩展版本（构建日期）\n- 复现步骤\n- 控制台报错截图（如有）\n\n---\n\n## 技术栈\n\n| 技术 | 版本 | 用途 |\n|------|------|------|\n| [WXT](https:\u002F\u002Fwxt.dev) | 0.20.26 | Chrome MV3 扩展框架 |\n| [Svelte](https:\u002F\u002Fsvelte.dev) | 5.x | Popup \u002F Options UI |\n| [Vite](https:\u002F\u002Fvite.dev) | — | 构建工具（WXT 内置） |\n| [Vitest](https:\u002F\u002Fvitest.dev) | 4.x | 测试框架 |\n| TypeScript | — | 类型安全 |\n\n---\n\n## 相关文档\n\n- [架构与原理](docs\u002Farchitecture.md) — 整体架构、核心机制、设计决策\n- [测试指南](docs\u002Ftesting.md) — 测试分层、工具链、扩展测试套件\n- [API 探查](docs\u002Fbigmodel-batch-preview-api.md) — batch-preview 接口分析\n- [故障复盘](docs\u002Fpostmortem-batch-preview-empty-body-2026-05-30.md) — JWT 竞态导致空响应体的排查过程\n\n---\n\n## 许可证\n\nISC\n","2026-06-15 02:30:10","CREATED_QUERY"]