【过时】mirai 登录全解
警告
本文档的所有内容已过时,无法用于登录,仅供参考
现状 (2023年)
服务器大力推行 security sign、energy sign 等,目前 mirai 不添加外部签名服务的情况下已经非常难登录了。
对于纯粹的用户(非开发者)来说,部署和使用签名服务阻力稍大,
经常会出现让开发者头疼的反馈(用法错误、不看中文报错)。
本文尽可能列举出目前可用的方法以及注意事项,以供参考。
什么是签名服务?
2.15.0 正式版起,mirai 开放了 tlv544 加密以及 sso 签名的接口,
意味着可以通过对接外部服务对数据包进行加密,
以满足服务器要求,让机器人作为“正常QQ用户”登录并聊天。
对于一般通过的 mirai-console 用户来说,
外部签名服务要生效,就需要通过插件对接 mirai 的接口。
从下文选择一个插件,开始吧。
怎么使用其它协议登录?
这是玩 mirai 最基础的命令,避免有一些跳过新手教程的整合包用户不知道,这里解释一下。
login <账号> <密码> [协议]
不需要输入 <>
和 []
假如,我们在使用 fix-protocol-version + magic-signer-guide,需要使用 8.9.58
协议登录。
先在 mirai 启动的时候看看日志输出的各协议版本信息。
找到 8.9.58
对应的协议,
如果没有这个协议版本,需要用命令下载更新协议,在下文 fix-protocol-version 部分有说明。
假如我们已经找到了,比如
2023-07-21 11:45:13 I/fix-protocol-version: 当前各协议版本日期:
ANDROID_PHONE 8.9.63.11390 2023-05-26T10:46:18+08:00
ANDROID_PAD 8.9.58.11170 2023-05-26T10:46:18+08:00
那么我们需要登录的协议就是 ANDROID_PAD
不要无脑抄,根据自己的日志输出情况决定!!!
不要无脑抄,根据自己的日志输出情况决定!!!
不要无脑抄,根据自己的日志输出情况决定!!!
假如我们要登录的机器人QQ号是 114514
,密码是 sodayo
,那么登录命令就是
login 114514 sodayo ANDROID_PAD
少用整合包
安装签名服务涉及到你的账号安全,
来源不明的整合包、签名服务有可能包含恶意软件,
除非整合包来自你可信的来源,否则一律不要使用整合包。
登录时的警告是警告,不是报错
这是签名服务已成功注册的标志。
2.15.0 正式版起,如果你安装了签名服务,
登录时将会使用日志记录器 EncryptService.alert 的警告等级,打印出签名服务的文件位置信息。
这是在告诉你,你正在使用签名服务,可能会有信息泄露的风险,请不要使用来源不明的签名服务。
仅此而已,并不是报错。
日志记录器是日志每行开头在时间后面的东西。 比如 2023-07-21 11:45:14 I/Logger: Hello World. Logger 是日志记录器,用来分辨日志是在什么地方打印的。 I 是日志等级,Info(信息) 的缩写,除此之外还有 W(arn)警告、E(rror)错误、V(erbose)详细、D(ebug)调试 等日志级别。
不是所有报错都需要上报
有的报错是提示你哪里做错了,要求你改正,
你应当先认真阅读报错开头的信息,
如果是英文的可以先翻译再阅读。
当你判断这个问题不是你能解决的之后再上报给开发者。
比如【请检查签名服务可用性】,应该先看签名服务是不是开着的,签名服务的配置和插件的配置对不对得上等等。
装了签名服务还是 45
两种可能:
- 一是签名服务没配置好
- 二是冻结或者封号引起的 code=45,老实活跃聊天等状态解除,或者换号吧。
成功的迹象
如果在完成滑动验证码后出现短信验证,很大几率已经成功了。
提示
以下是签名服务相关插件
fix-protocol-version
临时协议修复。
https://mirai.mamoe.net/topic/2386
对接多个签名服务,自带协议版本更新。
优点是选择和备用方案比较多,更新跟进快,缺点是对用户来说配置稍微复杂。
相信很多用户已经用过了,这里先把注意事项写前面。
使用的签名服务版本必须要和协议版本相同,
比如 8.9.58
协议不能用 8.9.63
的签名服务,
登录之前必须检查这两个版本是否相同。
第一次安装这个插件后需要修改 KFCFactory.json
填入签名服务对应的
- 协议版本 (
"x.x.xx": {
) - 类型 (
"type": "类型"
) - 地址、端口 (
"base_url": "http://地址:端口"
) - 密钥 (
剩下名字带key的就是密钥
)
等参数,不填写是没有用的。插件详细页有填写例子。
出现【请检查可用性】的报错时先不要反馈,
先自己检查一遍你的签名服务是不是开着的,签名服务类型对不对,端口对不对……
通常就是这些问题,你去反馈也只能得到同样的答复。
如果签名服务和协议版本对不上,可以在 mirai 用protocol fetch 协议类型 版本
命令下载更新你需要的协议,
如 protocol fetch ANDROID_PAD 8.9.63
。
安装这个插件从来不是复杂的,复杂的是安装签名服务,
以及把签名服务的参数写进配置 KFCFactory.json
里。
好,现在正式开始配置教学。
首先安装 fix-protocol-version 最新版本启动一遍,
然后选择一个签名服务。(下面两个选一个就行了)
假定你选择
magic-signer-guide
(又名 KuimiVM
)
优点: 架构良好,运行稳定
缺点: 支持协议版本单一
先安装 docker (请自行搜索教程)
然后在浏览器打开项目地址 https://github.com/kiliokuara/magic-signer-guide
然后打开终端(Windows 是 CMD),执行项目地址【使用方法】里的命令(不需要$
号),执行之前可按需修改命令中的相关参数,在命令下面的“环境变量”有说明,不懂可以不改。然后确认服务已经开启。
假定你选择
unidbg-fetch-qsign
优点: 支持协议版本较多
缺点: 架构较差,运行可能不稳定
该项目已跑路,你可以寻找相关的 fork 项目续命。
将发行版解压到任意文件夹,那个文件夹应该要能看到 bin
、lib
、txlib
三个文件夹,
然后在这个文件夹打开终端(或CMD)执行以下命令
bin/unidbg-fetch-qsign --basePath=txlib/8.9.78
可以把 8.9.78 改成任意协议版本来切换签名服务版本。
签名服务配置文件在 txlib/协议版本/config.json
在配置文件中,可以在 unidbg
切换后端,dynarmic
、unicorn
、kvm
三个选项开启一个关闭两个即为切换后端,遇到崩溃可尝试更换后端。
关闭 debug
可一定程度减少日志输出。
确认服务已经开启后,复制粘贴 fix-protocol-version 项目地址 里找到的KFCFactory.json
的示例到你的 KFCFactory.json
文件,然后修改相关参数。
配置 | 说明 |
---|---|
base_url | 服务地址,包括端口号,如 http://127.0.0.1:端口 ,端口换成你签名服务的端口 |
type | 服务类型,可以填 fuqiuluo/unidbg-fetch-qsign 和 kiliokuara/magic-signer-guide ,用什么填什么 |
server_identity_key | magic-signer-guide 服务器身份密钥,在上面要执行的命令里有这个参数(SERVER_IDENTITY_KEY ),默认是 vivo50 |
authorization_key | magic-signer-guide 客户端身份密钥,在上面要执行的命令里有这个参数(AUTH_KEY ),默认是 kfc |
key | unidbg-fetch-qsign 的访问密钥,在 config.json 里有,默认是 114514 |
如果上面的命令你没改过,相关参数你可以不改,只要复制示例配置就行了,不改就是默认的。
你也应该注意到了 KFCFactory.json
是用来将登录的不同版本协议对接到不同的签名服务的,
所以,你部署了什么签名服务,就要用它对应的协议版本登录。
怎么给协议换版本前面说了,这里就不重复了。
完成
改好之后,使用相应的协议登录就行了。
qsign
签名服务移植。
https://mirai.mamoe.net/topic/2357
将 unidbg-fetch-qsign
移植到 mirai,省去 http api,直接对接。
优点是配置简单,缺点是签名服务类型单一,虽可支持多 bot,但对于多 mirai 实例无法复用服务导致整体内存占用更大。
大部分用户都是单 mirai 实例单 bot,影响应该不大。
只需要到 https://github.com/MrXiaoM/qsign/releases 下载zip解压到 mirai 所在目录就能用了。
详细配置详见插件介绍。
完成
即装即用,直接用 ANDROID_PHONE
或 ANDROID_PAD
协议登录即可。
MiraiSignHandler
签名服务适配。
https://mirai.mamoe.net/topic/2348
对接 unidbg-fetch-qsign
1.1.0 到 mirai。
该签名服务版本较旧,且该插件固定端口,
加上作者很久没有跟进更新和承诺开源,不推荐使用。
后记
没想到论坛上发布的签名服务插件不多。也好,不用我写那么多文档。