🎮 Blooket 爬虫 v2.6
运行中
服务器端
远程可控
部署在服务器的远程控制 Blooket 自动答题与游戏作弊爬虫。
任何浏览器打开 控制面板 即可操控服务器上的隐身浏览器
自动加入游戏、答题、作弊。支持 Gold Quest、Fishing Frenzy、Crypto Hack。
📋 需求
| 需求 | 说明 | 状态 |
| 服务器端运行 | 在 Linux 服务器上以 headless 浏览器运行,不依赖用户本地浏览器 | 完成 |
| 远程浏览器控制 | 任何浏览器打开 Web 控制面板,通过 WebSocket 实时操控 | 完成 |
| 自动答题 | 读取 React 组件状态获取正确答案,自动点击 DOM 中的答案按钮 | 完成 |
| Fishing Frenzy 作弊 | 永续Frenzy、设置鱼重、设置鱼饵等级 | 完成 |
| Gold Quest 作弊 | 设置金币、宝箱ESP(透视选择奖励) | 完成 |
| Crypto Hack 作弊 | 设置加密货币、自动猜测密码 | 完成 |
| HTTPS 公网部署 | 通过 Nginx + SSH 隧道 + Let's Encrypt 部署 | 完成 |
| 多玩家自动加入 | 自动启动多个机器人玩家(满足最低人数要求) | 部分 |
| 自动创建游戏 | 登录 → 选游戏模式 → 设置 → 获取 PIN(全自动) | 部分 |
🏗️ 架构
internet → blooket.derfzyh.xyz (SSL)
│
▼
Aliyun Nginx (反向代理 + WebSocket)
│
▼ SSH 反向隧道 (:18092)
fred-vm (:3458)
│
┌─────────────┼─────────────┐
│ │ │
Express Socket.IO Playwright
(静态文件) (实时通信) (隐身浏览器)
│
Blooket 游戏页面
(React fiber 状态注入)
技术栈
| 层次 | 技术 | 作用 |
| 浏览器自动化 | Playwright + playwright-extra + StealthPlugin | 启动 headless Chromium,绕过 Cloudflare 检测 |
| 后端服务 | Node.js + Express | HTTP 服务,静态文件,API 路由 |
| 实时通信 | Socket.IO | 双向 WebSocket,推送状态/日志/截图 |
| 反检测 | navigator.webdriver = false, 随机 User-Agent, Cookie 自动同意 | 绕过 Blooket 机器人检测 |
| 游戏注入 | React Fiber 遍历 | 访问组件内部状态,读取题目/修改游戏数据 |
| 反向代理 | Nginx + SSH 反向隧道 | HTTPS 终止,WebSocket 升级,端口转发 |
| SSL 证书 | Let's Encrypt / certbot | 自动续期 HTTPS 证书 |
🔬 核心技术原理
React Fiber 状态遍历
Blooket 使用 React 构建。React 在每个 DOM 元素上存储了一个 __reactFiber$* 属性,
指向对应的 fiber 节点。通过遍历 fiber 树,可以访问任何组件的内部 state 和
props,无需逆向工程或 API 破解。
// 遍历 React fiber 树查找游戏状态
for (const el of document.querySelectorAll('*')) {
const key = Object.keys(el).find(k => k.startsWith('__reactFiber'));
if (!key) continue;
let node = el[key];
for (let i = 0; i < 40 && node; i++) {
const s = node.stateNode?.state;
// s.question.correctAnswers ← 正确答案
// s.gold, s.weight, s.crypto ← 游戏数据
node = node.return || node.child || node.sibling;
}
}
自动答题流程
- 每 600ms 遍历页面所有元素的 React fiber 树
- 找到包含
question.correctAnswers 的组件状态
- 多策略查找答案元素(依次尝试 4 层):
[class*="answerContainer"] — 精确文本匹配
[class*="answer"] — 任意含 answer 类的元素
- 全页面任意可见元素 — 精确文本匹配
div/button/span — 包含文本匹配
- 答题后自动点击页面所有按钮/可点击元素推进游戏
- 答完一题后继续下一题,循环往复
游戏作弊原理
| 游戏 | 作弊方式 | 修改的状态字段 |
| 🎣 Fishing Frenzy |
直接修改 React state 并调用 forceUpdate() |
state.isFrenzy=true, state.weight=N, state.lure=N |
| 💰 Gold Quest |
设置金币数量、读取宝箱奖励 |
state.gold=N, state.choices[*].gold |
| 🔐 Crypto Hack |
设置加密货币、自动选密码 |
state.crypto=N, state.password=options[0] |
📡 API / Socket.IO 接口
| 事件 | 方向 | 参数 | 说明 |
joinGame | → 服务端 | { pin, name } | 机器人加入游戏 |
startAutoAnswer | → 服务端 | — | 启动自动答题 |
stop | → 服务端 | — | 停止所有操作 |
cheat | → 服务端 | { gameMode, cheatType, value } | 执行作弊 |
getState | → 服务端 | — | 获取游戏状态 |
screenshot | → 服务端 | — | 请求截图 |
reset | → 服务端 | — | 重置状态 |
status | ← 客户端 | BotStatus | 状态推送 |
log | ← 客户端 | string | 日志推送 |
gameState | ← 客户端 | object | 游戏状态(题目/答案/数据) |
screenshot | ← 客户端 | path | 截图 URL |
cheatResult | ← 客户端 | { cheatType, result } | 作弊执行结果 |
🎮 支持的游戏模式
| 游戏模式 | 自动答题 | 专属作弊 |
| 🎣 Fishing Frenzy (钓鱼狂潮) | ✅ 全自动 | 永续Frenzy / 设置重量 / 设置鱼饵 |
| 💰 Gold Quest (淘金热) | ✅ 全自动 | 设置金币 / 宝箱自动选择 |
| 🔐 Crypto Hack (加密黑客) | ✅ 全自动 | 设置加密货币 / 自动猜密码 / 密码选择 |
| 🏭 Factory (工厂) | ✅ | — |
| 🏎️ Racing (竞速) | ✅ | — |
| 🛡️ Tower Defense | ✅ | — |
| 🦖 Deceptive Dinos | ✅ | — |
| Café / Kingdom / Doom / Rush | ✅ | — |
🔧 部署配置
服务器
# 启动服务
cd ~/blooket-crawler
node server.js
# SSH 反向隧道 (fred-vm:3458 → aliyun:18092)
ssh -fN -R 18092:localhost:3458 root@openclaw.derfzyh.xyz
# Nginx (位于 openclaw.derfzyh.xyz)
# blooket.derfzyh.xyz → proxy_pass http://127.0.0.1:18092
# 包含 WebSocket 支持 (Upgrade, Connection headers)
依赖
express # HTTP 服务
socket.io # WebSocket 实时通信
playwright # 浏览器自动化核心
playwright-extra # Playwright 扩展
puppeteer-extra-plugin-stealth # 反检测插件
🧪 已知限制
- Cookie 弹窗 — Blooket 每次页面加载都弹出 cookie 同意框,需延迟等待自动关闭
- iframe 隔离 — 部分游戏内容在 iframe 中,需通过
page.frames() 访问
- 多玩家要求 — Fishing Frenzy 等游戏需要 ≥2 名玩家才能开始
- NextJS RSC — PIN 输入需要通过真实键盘打字触发 React onChange,JS 赋值无效
- 游戏创建 — 全自动创建游戏需要处理 School Identification 弹窗,当前半自动化
📝 更新日志
| 版本 | 日期 | 变更 |
| v2.6.1 | 2026-05-17 | 修复自动答题死循环:恢复 cc41e2b 答题逻辑(无 break、精确匹配、答题后继续推进)。多策略答案元素检测(4层 fallback)。Crypto Hack 密码选择支持。加入流程增加导航等待容错。 |
| v2.5 | 2026-05-17 | Crypto Hack + Fishing Frenzy 完整自动化支持 |
| v2.3 | 2026-05-17 | 修复 PIN 加入流程(改用 keyboard.type 触发 React 事件)、WebSocket 代理、截图路径 |
| v2.1 | 2026-05-17 | iframe 支持、多玩家加入、游戏主持功能、Cookie 自动处理 |
| v2.0 | 2026-05-17 | 初始版本:Playwright + Socket.IO + React fiber 遍历架构 |
← 返回控制面板