🎮 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 + ExpressHTTP 服务,静态文件,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 树,可以访问任何组件的内部 stateprops,无需逆向工程或 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;
  }
}

自动答题流程

  1. 每 600ms 遍历页面所有元素的 React fiber 树
  2. 找到包含 question.correctAnswers 的组件状态
  3. 多策略查找答案元素(依次尝试 4 层):
    1. [class*="answerContainer"] — 精确文本匹配
    2. [class*="answer"] — 任意含 answer 类的元素
    3. 全页面任意可见元素 — 精确文本匹配
    4. div/button/span — 包含文本匹配
  4. 答题后自动点击页面所有按钮/可点击元素推进游戏
  5. 答完一题后继续下一题,循环往复

游戏作弊原理

游戏作弊方式修改的状态字段
🎣 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  # 反检测插件

🧪 已知限制

📝 更新日志

版本日期变更
v2.6.12026-05-17修复自动答题死循环:恢复 cc41e2b 答题逻辑(无 break、精确匹配、答题后继续推进)。多策略答案元素检测(4层 fallback)。Crypto Hack 密码选择支持。加入流程增加导航等待容错。
v2.52026-05-17Crypto Hack + Fishing Frenzy 完整自动化支持
v2.32026-05-17修复 PIN 加入流程(改用 keyboard.type 触发 React 事件)、WebSocket 代理、截图路径
v2.12026-05-17iframe 支持、多玩家加入、游戏主持功能、Cookie 自动处理
v2.02026-05-17初始版本:Playwright + Socket.IO + React fiber 遍历架构
← 返回控制面板