ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

滑块验证怎么破?MHY_Scanner基于WebView2的GeeTest验证窗口实现解析

滑块验证怎么破?MHY_Scanner基于WebView2的GeeTest验证窗口实现解析 滑块验证怎么破MHY_Scanner基于WebView2的GeeTest验证窗口实现解析【免费下载链接】MHY_ScannerMHY扫码登录器支持从直播流抢码。项目地址: https://gitcode.com/gh_mirrors/mh/MHY_ScannerMHY_Scanner 是一款免费开源的米哈游扫码登录器支持崩坏3、原神、星穹铁道、绝区零等游戏可从屏幕或直播流中自动识别二维码完成登录。本文讲解当手机号登录触发GeeTest 滑块验证时MHY_Scanner 是如何基于WebView2弹出一个内嵌验证窗口让你拖一拖滑块就能顺利完成登录的完整实现。一、登录时为什么会弹出滑块验证在走手机号 短信验证码登录流程时官方接口并不总是直接放行。MHY_Scanner 的 MhyApi.hpp 中可以看到关键逻辑调用CreateLoginCaptcha请求发送验证码若返回码为-3101说明风控要求先完成人机验证此时响应头X-Rpc-Aigis里会携带session_id、gt、challenge等参数。这些参数正好是 GeeTest 滑块验证的入场券。项目用一个简单的结构体把它们收拢在一起定义在 ApiDefs.hppstruct GeetestData { std::string action_type{}; std::string session_id{}; int mmt_type{}; std::string gt{}; std::string challenge{}; ServerType GeeTestType{}; }; 同样的机制也存在于崩坏3 B站渠道登录对应实现在 BSGameSDK.hpp 的CaptchaCaptcha()中。二、核心思路不破解而是内嵌一个验证网页 面对滑块验证MHY_Scanner 选择了最稳妥的思路——让官方验证页面在应用内跑起来由用户手动拖动滑块完成验证。实现核心只有两个文件文件职责src/UI/WindowGeeTest.h声明WindowGeeTest窗口持有 WebView2 控制器src/UI/WindowGeeTest.cpp构建验证 HTML、初始化 WebView2、接收验证结果窗口固定为 400×450 大小标题就是请完成验证WindowGeeTest::WindowGeeTest(QWidget* parent) : QWidget(parent) { setWindowFlags(Qt::Window); setFixedSize(QSize(400, 450)); setWindowTitle(请完成验证); }依赖方面项目通过 vcpkg 引入 WebView2可在 vcpkg.json 中看到webview2依赖并在 CMakeLists.txt 中find_package(unofficial-webview2 CONFIG REQUIRED)完成链接。三、验证窗口的三步工作流程 ⚙️第 1 步生成验证页面 HTMLInit(gt, challenge)会把接口拿到的gt和challenge填入一段内嵌 HTML 模板。模板引用了 GeeTest 官方 JSgt.0.5.2.js并调用initGeetest初始化indexHtml std::format(TemplateHtml, gt, challenge);第 2 步窗口显示时创建 WebView2在showEvent中依次完成环境 → 控制器 → 页面三级初始化最后NavigateToString(indexHtml)直接加载刚才拼好的 HTML无需访问外部页面CreateCoreWebView2EnvironmentWithOptions创建环境CreateCoreWebView2Controller绑定到窗口句柄并设置尺寸关闭状态栏put_IsStatusBarEnabled(false)界面更干净。第 3 步把验证结果送回 C 端HTML 里的 JS 监听验证成功回调通过 WebView2 的桥接机制把结果发出来captchaObj.onSuccess(function () {{ var result captchaObj.getValidate(); chrome.webview.postMessage(result); }});C 端则在add_WebMessageReceived中接收消息转成 Qt 信号postMessage发射出去——JS 与 C 的通信闭环就此完成。四、验证完成后登录如何继续✅信号发出后WindowLogin.cpp 的槽函数接手后续流程并按账号渠道分流验证类型处理逻辑官服ServerType::Official将session_id Base64(验证结果)作为X-Rpc-Aigis头重新调用CreateLoginCaptcha成功即可发送短信验证码崩坏3 B站渠道BH3_BiliBili解析 JSON 中的geetest_challenge/geetest_validate直接传入LoginByPassWord完成账号密码登录也就是说滑块验证只是登录链路中的一次性关卡验证窗口一闪而过登录流程随即无缝继续用户几乎无感。五、新手如何体验从 Releases 下载最新版并解压安装 Visual C 运行库运行MHY_Scanner.exe点击账号管理 → 添加账号选择手机号登录并点击发送若触发风控请完成验证窗口会自动弹出拖动滑块完成验证后窗口自动关闭短信验证码随即到达。小贴士WebView2 运行库在 Windows 10/11 上通常已预装若窗口空白不显示可在微软商店安装 Microsoft Edge WebView2 Runtime。完成登录后你就可以点击监视屏幕或监视直播间让 MHY_Scanner 自动识别屏幕或直播流中的二维码并登录了——滑块验证的关卡已经被 WebView2 稳稳挡在了登录流程之内。【免费下载链接】MHY_ScannerMHY扫码登录器支持从直播流抢码。项目地址: https://gitcode.com/gh_mirrors/mh/MHY_Scanner创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表