Skip to content

shodan1q/wukong-code-sniper

Repository files navigation

Wukong Code Sniper

macOS 自动化工具,监控悟空官网邀请码,自动识别并提交到悟空桌面端抢码。

工作流程

  1. 启动 6 个 Playwright 页面并行轮询官网
  2. 每次 reload 后跳过首屏动画,进入快速检测路径
  3. 快速路径:仅检查邀请码图片的 src URL 是否变化(~0.01s),未变则跳过,不做截图和 OCR
  4. 慢速路径:URL 变化时才截图 + macOS Vision OCR 提取邀请码(~0.4s)
  5. 新码通过 macOS 辅助功能 API 自动填入悟空桌面端弹窗并回车提交
  6. 提交成功则停止,失败或已试过的码则继续等待

项目结构

├── 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_cardsubmit_wukong_code)。

使用

python3 sniper.py --max-minutes 180

程序最长运行 180 分钟,发现新邀请码自动提交,成功后停止。

设计说明

双路径检测:核心优化在于避免每次 reload 都做昂贵的截图 + OCR。每个 worker 刷新页面后,先通过 JS 读取邀请码图片的 src 属性(毫秒级),只有当 URL 发生变化(说明官网刷新了新码)才触发截图和 OCR。这使得绝大多数轮询周期的开销极低。

并行而非串行:6 个页面各自独立 reload,互不等待。由于每个页面从 reload 到 DOM 稳定需要数秒,并行可以大幅提高单位时间内的有效检测次数。

去重机制tried_codes.json 记录当天已尝试过的邀请码及其时间戳,避免重复提交相同的码。每次启动时自动加载,跨运行生效,每日自动清零。

只用真实码:不猜测、不穷举、不变体尝试。提交失败后继续等官网刷新下一轮新码。

截图区域校准

如果官网改版导致 OCR 失效:

  1. 截取一张完整页面图保存到 /tmp/wukong_web.png
  2. 运行 xcrun swift ocr_boxes.swift /tmp/wukong_web.png 查看文字坐标
  3. 根据输出更新 sniper.py 中的 CARD_CLIP 参数
  4. 运行 python3 calibrate.py 验证裁剪结果

配置参数

参数 默认值 说明
VIEWPORT 1440×1200 浏览器视口尺寸
CARD_CLIP x=610, y=955, 225×155 邀请码卡片截图区域
NUM_PAGES 6 并行页面数量
--max-minutes 180 最大运行时间(分钟)

License

MIT

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors