mirai-console 的扫码登录命令 临时实现。
- 扫码登录不一定能够解决风控问题,该报 235 可能还得报 235,因人而异。
- 请确保 mirai 所在网络环境与你手机所在网络环境相似,否则QQ可能不会允许你确认登录。
- 请使用手机摄像头扫码,或者使用 XPosed 模块绕过不可通过相册扫码登录的限制。
- 扫码登录暂无预发行版本或稳定版本支持,仅有开发版支持,可能会有较明显的 bug。
- 扫码登录的接口可能会在
2.15.0-RC
发生变化,本插件不保证在以后版本的可用性。
最近已知的风控
- 服务器最近似乎针对手表协议进行了更新,发送消息过快可能会导致机器人被风控无法再发送群消息。
- 该风控可通过让机器人频繁发送消息复现。一般来说通过密码登录皆为 code=45
- 若机器人无法发送群消息,请删除 cache 和 device.json 重新登录再试。
- 请尝试寻找降低消息发送速度的措施。(可尝试使用插件 ryoii/mirai-rate-limit)
请等待密码登录相关协议的更新。
最近二维码登录的 PR 合并了,但是我并没有找到登录命令,所以我打算写一份暂时用着。为了较快地能写出一套登录命令,大部分代码是抄的mirai原来的自动登录系统。
在 mirai 版本大于或等于 2.15.0-dev-27
的控制台中安装该插件,如果你不会下载开发版本,可在本文末尾加群下载一键包。你也可以使用最近的一个测试版本 2.15.0-M1
安装插件后启动,在控制台输入命令
qrlogin <QQ号>
即可进行二维码登录,第一次进行二维码登录要求使用手机QQ扫码二维码确认,第二次及以后可自动使用登录会话来登录而无需扫码。建议在第一次登录后添加自动登录。
如果看不清控制台输出的二维码图片,可以在 ./data/top.mrxiaom.qrlogin/
找到二维码图片文件。
使用 ANDROID_WATCH
协议进行扫码登录时,需要 mirai 与你的手机处于同一网络环境,可以通过连接同一 WiFi 来实现。
如果你的 mirai 在服务器上,可尝试在服务器上搭建代理服务器,手机连接代理服务器再扫码。
你页可以在本地电脑扫码登录完成后退出登录,在服务器删除 ./bots/机器人QQ号
文件夹,将本地的 ./bots/机器人QQ号
文件夹传输到服务器,至少等待半小时再登录。
等待足够长的时间避免短时间内异地登录造成风控要求重新扫码,这个方法大概率可以成功,在已被标记风控的IP地址可能无法成功。
和 mirai-console 自带命令基本一致,只是命令前缀多了 qr
,选项少了密码。
/qrLogin <qq> [protocol] # 扫码登录,协议可用 ANDROID_WATCH 和 MACOS,默认 ANDROID_WATCH
/qrAutoLogin add <account> # 添加(扫码登录)自动登录
/qrAutoLogin clear # 清除(扫码登录)自动登录的所有配置
/qrAutoLogin list # 查看(扫码登录)自动登录账号列表
/qrAutoLogin remove <account> # 删除一个(扫码登录)自动登录账号
/qrAutoLogin removeConfig <account> <configKey> # 删除一个账号(扫码登录)自动登录的一个配置项
/qrAutoLogin setConfig <account> <configKey> <value> # 设置一个账号(扫码登录)自动登录的一个配置项
添加 jvm 参数 -Dmirai.no-desktop
可以禁用窗口式扫码登录处理器。
添加 jvm 参数 -Dqrlogin.no-solver
可以禁止本插件修改登录解决器。
非开发者可无视此部分。
./gradlew buildPlugin
对于想要使用 扫码登录 的 mirai-core
用户,请见 mirai 2.15.0-M1 的 Release Note,里面有扫码登录的操作方法。
或者参考本插件源码:
登录命令: QRLoginCommand.kt
修改登录解决器: QRLoginSolver.kt
加入群 1047497524 在群文件 Mirai 一键包
文件夹下载。
前往 爱发电 捐助我。