手把手玩转 MHY_Scanner:Windows 扫码登录与直播抢码的 3 步实战指南
手把手玩转 MHY_Scanner:Windows 扫码登录与直播抢码的 3 步实战指南
【免费下载链接】MHY_ScannerMHY扫码登录器,支持从直播流抢码。项目地址: https://gitcode.com/gh_mirrors/mh/MHY_Scanner
晚上八点,主播在直播间亮出登录二维码,弹幕里瞬间刷过一片"抢到了"。你盯着屏幕,手忙脚乱打开手机、切到游戏 APP、对准扫码,等到二维码终于被扫中,系统提示"二维码已过期"——名额早就被抢空了。这样的场景,玩过崩坏3、原神、星穹铁道、绝区零的老玩家都不陌生:扫码登录本身不难,难的是在二维码出现的那一两秒内完成识别与确认。
MHY_Scanner 正是为解决这个痛点而生的免费开源工具:它常驻 Windows 后台,自动截取屏幕或直播画面中的二维码,识别后调用账号 Cookie 自动完成扫码确认,全程无需手动掏手机。无论是游戏日常登录,还是直播间里的高并发抢码,它都能把"发现二维码 → 完成登录"的链路压缩到秒级,让多账号轮换和无人值守成为可能。
一、它到底能做什么:一张表看懂核心能力 🚀
在动手安装之前,先花三十秒搞清楚这个工具的定位。它本质上是一个"眼睛 + 手指":眼睛负责在屏幕或视频流里找到二维码,手指负责替你把扫码确认的动作做完。
| 核心能力 | 具体表现 | 关键指标 |
|---|---|---|
| 屏幕二维码自动识别 | 监控桌面任意区域,发现二维码立即解码并登录 | 单帧识别毫秒级,无需人工干预 |
| 直播流抢码 | 直接解析 B 站 / 抖音直播流画面,捕捉主播亮码瞬间 | 适配 720p/30fps 常见直播码率 |
| 多账号表格化管理 | 账号以表格形式呈现,支持备注、切换与轮换 | 账号数量不限,双击单元格即可改备注 |
| 无人值守模式 | 启动即开始识别,登录完成后自动退出 | 无需登录后手动切回窗口关程序 |
支持的游戏与服务器范围如下:
| 游戏 | 官方服务器 | Bilibili 服务器 |
|---|---|---|
| 崩坏3 | ✅ | ✅ |
| 原神 | ✅ | — |
| 星穹铁道 | ✅ | — |
| 绝区零 | ✅ | — |
一句话总结:屏幕场景适合日常登录,直播流场景适合抢码。两类场景共用同一套识别引擎,切换只在一个按钮之间。
二、上手实战:从下载到第一次自动登录 🖥️
1. 三分钟完成环境搭建
工具本体不需要安装,下载 Release 压缩包解压即可运行。唯一的硬性依赖是Visual C++ 运行库(x64 版本),微软官方提供了独立安装包,没有装过的机器直接安装一次即可,之后所有版本通用。
克隆源码自行编译的读者,只需确保本机具备 CMake、MSVC 工具链以及项目声明的依赖项(OpenCV、cpr、FFmpeg、nlohmann/json 等),参考仓库内 CI/CD 工作流即可复现构建过程:
git clone https://gitcode.com/gh_mirrors/mh/MHY_Scanner💡 提示:绝大多数用户不需要编译。直接使用官方发布的 exe,把
ScanModel目录(内含 detect.prototxt、detect.caffemodel、sr.prototxt、sr.caffemodel 四个文件)与可执行文件放在同一目录下,识别引擎才能正常工作。
2. 获取并录入账号 Cookie
自动登录的"通行证"是账号 Cookie。获取方式并不复杂,全程在浏览器里完成(具体步骤见项目内的 doc/Cookie.md):
- 打开浏览器,进入无痕/隐身模式,访问米哈游通行证官网并登录;
- 按
F12打开开发者工具,切到Network标签; - 刷新页面,在请求列表中找到通行证域名对应的请求;
- 展开Request Headers,复制
Cookie字段的全部内容。
回到工具主界面,点击菜单栏账号管理 → 添加账号,把刚才复制的 Cookie 粘贴进去。此时你还可以做两件小事:
- 双击"备注"单元格,给账号起个自己能认出来的名字(比如"小号_A");
- 点击"测试登录"验证 Cookie 是否有效,避免正式抢码时才发现账号失效。
⚠️ Cookie 相当于账号的钥匙,请勿随意分享给他人。项目文档明确提示示例获取方式可能随官网改版失效,若失败请以浏览器实际抓包结果为准。
3. 一键启动屏幕监控
账号就绪后,点击监视屏幕按钮,工具便开始以毫秒级间隔抓取桌面画面。只要屏幕上出现二维码(无论是游戏启动器的、网页端的还是其他客户端的),它都会自动解码并完成登录。
正在执行的任务,对应按钮会高亮显示;再次点击按钮即可停止监控。若勾选了"启动后自动识别、完成后自动退出",你甚至可以在出门前挂上工具,回家时账号已经登录完毕。
三、进阶玩法:多账号轮换与直播流抢码 ⚡
基础功能只能解决"手慢"的问题,真正拉开差距的是下面这几个高阶场景。
1. 多账号表格化管理:告别切号手忙脚乱
账号多了之后,管理方式决定了你的操作效率。工具把账号集中呈现在表格里,一次登录、一个账号,用完切换下一个,全程无需重复粘贴 Cookie。
配合「登录后自动退出」选项,你可以把多账号任务编排成一条流水线:
启动工具 → 自动识别屏幕二维码 → 账号A登录 → 工具退出 → 再次启动 → 账号B登录 → 工具退出 → ……每条链路的切换成本只有一次双击,比手动开浏览器、找 Cookie、粘贴要快一个量级。
2. 直播流抢码:从"手速竞赛"变成"机器值守"
直播间抢码的难点在于你不知道二维码什么时候出现。盯着一动不动的直播间画面三十分钟,眼睛早就疲劳了;而机器不会疲劳。
在工具主界面选择对应直播平台,在"直播间"输入框填入房间号(RID),点击监视直播间即可。RID 是一串纯数字,从直播间链接中提取:
| 平台 | 链接形式 | RID 位置 |
|---|---|---|
| B 站 | https://live.bilibili.com/<RID> | 链接末尾的数字 |
| 抖音 | https://live.douyin.com/<RID> | 链接末尾的数字 |
背后的工作链路是:工具先通过直播平台接口解析出当前推流地址(B 站走 room_init + getRoomPlayInfo,抖音走 webcast 接口),再拉起 FFmpeg 拉流解码成视频帧,送入识别引擎逐帧扫描。直播间一出现二维码,通常一两秒内就能完成识别与登录确认。
💡 实战建议:直播流分辨率建议选 720p,太高会拖慢拉流与解码速度,太低则二维码细节丢失影响识别率;识别灵敏度保持默认即可。
3. 多账号 + 直播流组合拳
把上面两招组合起来,就是一个完整的无人值守抢码方案:
监视直播间开始 → 二维码出现 → 立即解码 → 账号A完成确认 → 直播间再次亮码 → 账号B接力 → …… → 自动退出直播结束或流中断时,工具会根据状态码(LIVESTOP / STREAMERROR)自动停止并给出反馈,不会空转浪费资源。
四、底层解密:它为什么又快又稳 🔍
外行看热闹,内行看门道。这一节拆开外壳,看看识别与网络两条主线分别做了什么。
1. 识别引擎:不止是"找二维码"那么简单
项目没有从零造轮子,而是站在 OpenCV 的肩膀上:屏幕捕获交给DXGI Desktop Duplication(见 src/Core/ScreenShotDXGI.hpp),它直接读取显卡渲染后的桌面纹理,比传统的 GDI 截屏快得多;二维码解码则交给 OpenCV 的WeChatQRCode 检测器。
看 src/Core/QRScanner.cpp 里的初始化逻辑:
QRScanner::QRScanner() { // 加载检测模型与超分模型,共四个文件 detector = cv::makePtr<cv::wechat_qrcode::WeChatQRCode>( DETECT_PROTOTXT_PATH, DETECT_CAFFE_MODEL_PATH, SR_PROTOTXT_PATH, SR_CAFFE_MODEL_PATH); detector->setScaleFactor(0.4); // 缩小输入图像,加快检测 }两处细节值得注意:
- 超分模型(sr.*):二维码在直播画面里往往又小又糊,模型会先对目标区域做超分辨率增强,把"看不清"变成"能识别",这正是直播场景识别率的关键;
- scaleFactor = 0.4:先按 40% 比例缩小图像快速扫描,命中目标后再精读,换来的是毫秒级的响应速度。
解码调用则非常简单:
void QRScanner::decodeSingle(const cv::Mat& img, std::string& qrCode) { const std::vector<std::string>& strDecoded = detector->detectAndDecode(img); if (strDecoded.size() > 0) { qrCode = strDecoded[0]; // 取第一个解码结果 } }配合屏幕捕获线程,整体形成了"抓帧 → 缩放 → 检测 → 解码 → 登录"的流水线,每一环都做了减法,最终单次识别耗时稳定在几十毫秒量级。
2. 多游戏自动分流:一个二维码如何知道自己属于哪款游戏
四款游戏的登录接口各不相同,工具靠二维码内容里的特征前缀自动分流。看 src/Core/ScannerBase.hpp 中的映射表:
std::map<std::string_view, std::function<void()>> setGameType{ { "8F3", [this]() { gameType = GameType::Honkai3; /* 崩坏3 */ } }, { "9E&", [this]() { gameType = GameType::Genshin; /* 原神 */ } }, { "8F%", [this]() { gameType = GameType::HonkaiStarRail; /* 星穹铁道 */ } }, { "%BA", [this]() { gameType = GameType::ZenlessZoneZero; /* 绝区零 */ } }, };解码出二维码字符串后,工具读取前几个字符,命中哪个前缀就调用对应的扫码与确认接口(接口统一收敛在 src/Core/ApiDefs.hpp,如qrcode_scan/qrcode_confirm)。这意味着同一时刻可以混用多款游戏的账号,互不干扰。
3. Cookie 解析:一行代码拆解字符串
浏览器复制的 Cookie 是一长串key=value; key=value文本,直接丢给接口显然不行。项目里的 src/Core/CookieParser.hpp 用十余行代码完成了全部解析:按;分段、按=切分、去除首尾空格、存入哈希表。你粘贴的 Cookie 在进入工具的那一刻起,就被结构化成了可以按 key 查询的字典,这也是后续登录请求能精准携带身份凭证的原因。
五、避坑锦囊:现象 → 原因 → 对策 🛠️
实际使用中遇到问题并不可怕,按下面这个清单逐一排查即可。
现象一:识别成功率低,二维码明明在屏幕上却扫不到
- 可能原因:直播画面里二维码太小或压缩过度;屏幕有反光;窗口被缩放。
- 对策:优先把直播清晰度切到 720p;确保二维码完整露出、不被弹幕遮挡;识别前先确认
ScanModel四个模型文件与 exe 在同一目录。
现象二:能识别到二维码,但登录一直失败
- 可能原因:Cookie 过期或已失效;账号在别的设备登录过,挤掉了当前会话。
- 对策:重新按 doc/Cookie.md 的流程抓取新 Cookie;通过"测试登录"功能在正式使用前验证账号有效性;多账号场景下记录每个账号的最后使用时间,及时剔除失效账号。
现象三:直播监控开始后长时间无反应
- 可能原因:RID 填写错误;直播间未开播;平台接口返回了异常状态。
- 对策:确认 RID 是直播间链接末尾的纯数字;先确认直播处于开播状态;观察工具输出中是否有
NotLive/Error等状态提示,必要时重启监控任务。
现象四:抢码时总是慢半拍,别人先扫到
- 可能原因:机器性能不足导致抓帧与解码链路过慢;同时开了过多后台任务。
- 对策:识别期间关闭无关的浏览器标签与高占用程序;直播流保持 720p 不要盲目追求 1080p;必要时将进程优先级调高,把 CPU 让给识别线程。
性能调优小贴士:如果你的机器配置较高(16GB 内存以上),可以放心让工具与直播客户端同开;配置较低的老机器,则建议一次只挂一个直播任务,避免多路拉流耗尽内存。
六、写在最后:让它替你盯着下一场直播 👋
回到开头的场景。主播再次亮出二维码,这一次你不需要盯着屏幕——工具会在二维码出现的一瞬间完成识别与确认,你要做的只是坐等账号登录成功。这就是 MHY_Scanner 的核心价值:把"人肉盯帧"变成"机器值守",把 15 秒的手动流程压缩到秒级自动完成。
给新上手的朋友三条实用建议:
- 先日常后抢码:先用屏幕监控模式跑几天日常登录,摸清账号与 Cookie 的维护节奏,再上直播抢码这类高并发场景;
- 定期更新:米哈游接口与直播平台规则都在变化,多留意项目 Release 更新,新版本通常包含接口适配与识别优化;
- 按需调参:识别灵敏度和直播清晰度没有绝对最优解,结合自己的网络与硬件在效率、稳定性之间找到平衡点。
项目目前处于社区共建阶段,使用中遇到任何问题,或对某款新游戏、新平台有适配需求,都欢迎提出建议与问题,一起把这套扫码方案打磨得更顺手。下一场直播开始前,不妨先把它部署起来试试看。
【免费下载链接】MHY_ScannerMHY扫码登录器,支持从直播流抢码。项目地址: https://gitcode.com/gh_mirrors/mh/MHY_Scanner
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考