解决需要滑块登陆的问题

解决需要滑块登陆的问题

启动项修改

首先,请关闭mirai,然后打开 start by jre.bat文件(右键 - 编辑)。

image

-cp 前面添加-Dmirai.slider.captcha.supported

或者将以下文本复制覆盖进去。

@echo off
title Mirai Console
jre\bin\java -Dmirai.slider.captcha.supported -cp "./libs/*" net.mamoe.mirai.console.terminal.MiraiConsoleTerminalLoader %*
pause

保存,关闭,运行!

然后再尝试运行start by jre,登陆你需要登陆的账号。

接下来应该会弹出这个窗口,将红框内链接全部复制到一个Google 或者 Edge(基于Chromium内核的版本) 浏览器中。

没有请下载安装此版本: MicrosoftEdgeSetup.exe (1.7 MB)
推荐使用MircoSoft Edge 中文界面简洁明了

提示:使用 Ctrl+A全选,使用Ctrl+C复制 Ctrl+V粘贴 Ctrl+X剪切

打开后应该是以下窗口,先别急着验证

在这个页面按下F12 打开浏览器的开发人员工具,点击左上角模拟设备按钮

image

左上角这里随便选择一个设备
image

然后选择控制台

在这里粘贴以下代码并且回车

隐藏内容
/*
 * Copyright 2019-2021 Mamoe Technologies and contributors.
 *
 *  此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证.
 *  Use of this source code is governed by the GNU AGPLv3 license that can be found through the following link.
 *
 *  https://github.com/mamoe/mirai/blob/master/LICENSE
 */

!(() => {
    let prompt = window.prompt;

    // jsbridge://CAPTCHA/onVerifyCAPTCHA?p=....#2
    /**
     * @type {string} url
     * @return {boolean}
     */
    function processUrl(url) {
        let prefix = "jsbridge://CAPTCHA/onVerifyCAPTCHA?p="
        if (url.startsWith(prefix)) {
            let json = url.substring(prefix.length);
            for (let i = json.length; i--; i > 0) {
                let j = json.substr(0, i)
                console.log(j);
                try {
                    let content = decodeURIComponent(j);
                    let obj = JSON.parse(content);
                    console.log(obj);
                    window.miraiSeleniumComplete = content;
                    prompt("MiraiSelenium - ticket", obj.ticket)
                    break;
                } catch (ignore) {
                }
            }
            return true;
        }
        return false;
    }

    (() => {
        let desc = Object.getOwnPropertyDescriptor(Image.prototype, "src");
        Object.defineProperty(Image.prototype, "src", {
            get: desc.get,
            set(v) {
                if (processUrl(v)) return;
                desc.set.call(this, v)
            }
        })
    })();


    (() => {
        let desc = Object.getOwnPropertyDescriptor(HTMLIFrameElement.prototype, "src");
        Object.defineProperty(HTMLIFrameElement.prototype, "src", {
            get: desc.get,
            set(v) {
                if (processUrl(v)) return;
                desc.set.call(this, v)
            }
        })
    })();

    (() => {
        let UserAgent = "${MIRAI_SELENIUM-USERAGENT}";
        if (UserAgent !== "${MIRAI_SELENIUM-USERAGENT}") {
            Object.defineProperty(Navigator.prototype, "userAgent", {
                get() {
                    return UserAgent
                }
            });
            document.querySelectorAll("script").forEach(it => it.remove());
        }
    })();
})()

不要耗时太久!如果滑动验证码刷新,你需要重复上方控制台输入代码。

这时候我们完成滑块验证,会弹出一个窗口,将里面的内容完整复制出来。

复制完就可以关闭窗口了,然后粘贴到mrai下面第二个框中,回车。

这里可能还会出现其他验证,直接通过即可。

这时候就应该登陆成功了。