macOS 自动化工具,监控悟空官网邀请码,自动识别并提交到悟空桌面端抢码。
- 启动 6 个 Playwright 页面并行轮询官网
- 每次 reload 后跳过首屏动画,进入快速检测路径
- 快速路径:仅检查邀请码图片的
srcURL 是否变化(~0.01s),未变则跳过,不做截图和 OCR - 慢速路径:URL 变化时才截图 + macOS Vision OCR 提取邀请码(~0.4s)
- 新码通过 macOS 辅助功能 API 自动填入悟空桌面端弹窗并回车提交
- 提交成功则停止,失败或已试过的码则继续等待
├── sniper.py # 主程序:监控 → OCR → 提交
├── ocr_card.swift # macOS Vision OCR(识别邀请码文字)
├── submit_wukong_code.swift # 辅助功能 API(填写桌面端弹窗)
├── ocr_boxes.swift # 调试工具:OCR + 文字坐标输出
├── calibrate.py # 调试工具:验证截图裁剪区域
├── requirements.txt
└── .gitignore
- macOS(依赖 Vision 框架和辅助功能 API)
- Python 3.11+
- Xcode Command Line Tools(
xcode-select --install) - 悟空桌面端已安装并运行,邀请码弹窗处于可提交状态
- 终端已开启 辅助功能权限(系统设置 → 隐私与安全 → 辅助功能)
pip install -r requirements.txt
playwright install chromium首次运行时会自动编译 Swift 工具为二进制文件(ocr_card、submit_wukong_code)。
python3 sniper.py --max-minutes 180程序最长运行 180 分钟,发现新邀请码自动提交,成功后停止。
双路径检测:核心优化在于避免每次 reload 都做昂贵的截图 + OCR。每个 worker 刷新页面后,先通过 JS 读取邀请码图片的 src 属性(毫秒级),只有当 URL 发生变化(说明官网刷新了新码)才触发截图和 OCR。这使得绝大多数轮询周期的开销极低。
并行而非串行:6 个页面各自独立 reload,互不等待。由于每个页面从 reload 到 DOM 稳定需要数秒,并行可以大幅提高单位时间内的有效检测次数。
去重机制:tried_codes.json 记录当天已尝试过的邀请码及其时间戳,避免重复提交相同的码。每次启动时自动加载,跨运行生效,每日自动清零。
只用真实码:不猜测、不穷举、不变体尝试。提交失败后继续等官网刷新下一轮新码。
如果官网改版导致 OCR 失效:
- 截取一张完整页面图保存到
/tmp/wukong_web.png - 运行
xcrun swift ocr_boxes.swift /tmp/wukong_web.png查看文字坐标 - 根据输出更新
sniper.py中的CARD_CLIP参数 - 运行
python3 calibrate.py验证裁剪结果
| 参数 | 默认值 | 说明 |
|---|---|---|
VIEWPORT |
1440×1200 | 浏览器视口尺寸 |
CARD_CLIP |
x=610, y=955, 225×155 | 邀请码卡片截图区域 |
NUM_PAGES |
6 | 并行页面数量 |
--max-minutes |
180 | 最大运行时间(分钟) |