如何使用签名服务
-
我目前在用MCL,想要用签名服务来正常登录。目前的理解是,MCL需要装sakura插件进行扫码登录,需要装fix-protocol-version插件来与签名服务器对接。其中支持的签名服务器有两个,一个是unidbg-fetch-qsign,一个是magic-signer-guide,二者任选一个就可以了。
我尝试配置qsign的时候出现了问题:
1.我(似乎)正常配置了config和device等信息
2.我可以打开go-cqhttp.bat,并且正常登录,显示好友发送的消息
3.打开mcl的时候,似乎可以正常连接qsign的服务器:2023-10-03 10:16:20 I/fix-protocol-version: 当前签名服务配置信息: v8.9.58 by fuqiuluo/unidbg-fetch-qsign from http://127.0.0.1:13579
4.在mcl中login,然后使用sakura扫码登录,报错:
2023-10-03 10:16:47 I/Bot.xxxxxxxxxx: Bot cancelled: Bot closed Login failed: unidbg-fetch-qsign 服务异常, 请检查其日志, 'running' 2023-10-03 10:16:47 E/console: xyz.cssxsh.mirai.tool.KFCStateException: unidbg-fetch-qsign 服务异常, 请检查其日志, 'running' xyz.cssxsh.mirai.tool.KFCStateException: unidbg-fetch-qsign 服务异常, 请检查其日志, 'running' at fix-protocol-version-1.12.0.mirai2.jar//xyz.cssxsh.mirai.tool.UnidbgFetchQsign.check(UnidbgFetchQsign.kt:109) at fix-protocol-version-1.12.0.mirai2.jar//xyz.cssxsh.mirai.tool.UnidbgFetchQsign.customEnergy(UnidbgFetchQsign.kt:137) at fix-protocol-version-1.12.0.mirai2.jar//xyz.cssxsh.mirai.tool.UnidbgFetchQsign.encryptTlv(UnidbgFetchQsign.kt:125) at net.mamoe.mirai.internal.network.protocol.packet.TlvKt.t544ForVerify(Tlv.kt:1013) at net.mamoe.mirai.internal.network.protocol.packet.login.wtlogin.WtLogin2$SubmitSliderCaptcha$1$1$1$1.invoke(WtLogin2.kt:35) at net.mamoe.mirai.internal.network.protocol.packet.login.wtlogin.WtLogin2$SubmitSliderCaptcha$1$1$1$1.invoke(WtLogin2.kt:28) at net.mamoe.mirai.utils.TlvMapKt._writeTlvMap(TlvMap.kt:130) at net.mamoe.mirai.utils.TlvMapKt._writeTlvMap$default(TlvMap.kt:123) at net.mamoe.mirai.internal.network.protocol.packet.login.wtlogin.WtLogin2$SubmitSliderCaptcha$1$1$1.invoke(WtLogin2.kt:28) at net.mamoe.mirai.internal.network.protocol.packet.login.wtlogin.WtLogin2$SubmitSliderCaptcha$1$1$1.invoke(WtLogin2.kt:25) at net.mamoe.mirai.internal.network.protocol.packet.EncryptMethodEcdh.makeBody(EncryptMethod.kt:121) at net.mamoe.mirai.internal.network.protocol.packet.OutgoingPacketKt.writeOicqRequestPacket(OutgoingPacket.kt:455) at net.mamoe.mirai.internal.network.protocol.packet.OutgoingPacketKt.writeOicqRequestPacket$default(OutgoingPacket.kt:448) at net.mamoe.mirai.internal.network.protocol.packet.login.wtlogin.WtLogin2$SubmitSliderCaptcha$1$1.invoke(WtLogin2.kt:25) at net.mamoe.mirai.internal.network.protocol.packet.login.wtlogin.WtLogin2$SubmitSliderCaptcha$1$1.invoke(WtLogin2.kt:24) at net.mamoe.mirai.internal.network.protocol.packet.OutgoingPacketKt.writeSsoPacket(OutgoingPacket.kt:985) at net.mamoe.mirai.internal.network.protocol.packet.OutgoingPacketKt.writeSsoPacket$default(OutgoingPacket.kt:352) at net.mamoe.mirai.internal.network.protocol.packet.login.wtlogin.WtLogin2$SubmitSliderCaptcha$1.invoke(WtLogin2.kt:24) at net.mamoe.mirai.internal.network.protocol.packet.login.wtlogin.WtLogin2$SubmitSliderCaptcha$1.invoke(WtLogin2.kt:23) at net.mamoe.mirai.internal.network.protocol.packet.OutgoingPacketKt.buildLoginOutgoingPacket(OutgoingPacket.kt:310) at net.mamoe.mirai.internal.network.protocol.packet.OutgoingPacketKt.buildLoginOutgoingPacket$default(OutgoingPacket.kt:278) at net.mamoe.mirai.internal.network.protocol.packet.login.wtlogin.WtLogin2.SubmitSliderCaptcha(WtLogin2.kt:23) at net.mamoe.mirai.internal.network.components.SsoProcessorImpl$SlowLoginImpl.doLogin(SsoProcessor.kt:472) at net.mamoe.mirai.internal.network.components.SsoProcessorImpl$SlowLoginImpl$doLogin$1.invokeSuspend(SsoProcessor.kt) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106) at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:570) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:677) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:664) 2023-10-03 10:18:47 W/io.netty.channel.DefaultChannelPipeline: An exceptionCaught() event was fired, and it reached at the tail of the pipeline. It usually means the last handler in the pipeline did not handle the exception. io.netty.handler.timeout.ReadTimeoutException
请问我应该如何解决呢?
顺便想问,官方可以出一个稍微易懂的教程吗,或者有没有人做一个...感觉我肯定是哪里配置有问题... -
我已解决,顺便写一个教程吧。。。之后发上来
-
【以unidbg-fetch-qsign为例】
说明
1.有任何关于登录问题,官方会有说明(应该是官方的吧),请及时查看最新的通知:https://mirai.mamoe.net/topic/223/无法登录的临时处理方案
2.以下内容根据当前(2023.10.3)的情况,不对后续任何更改负责,谢谢理解!!
3.我只使用MCL,Mirai Core的用户请酌情参考如何使用
1.确保下载了MCL,并且安装fix-protocal-version和mirai-login-solver-sakura插件。
(注:插件安装方式为:在release那里下载jar包,然后直接放到plugins文件夹中,重启mcl就行)2.下载并安装unidbg-fetch-qsign服务,并且启动
- 2.1:建议按照官方wiki的提示进行部署,我选择的是windows下一键部署
- 2.2:在上述的windows下一键部署中,请按照这个来操作。注意,由于我们使用的是mcl,而不是cq(cq好像是另一个机器人平台),因此需要删除
go-cqhttp.bat
和go-cqhttp.exe
,并且直接运行Start_Qsign.bat
(以下简称为qsign) - 2.3:在运行qsign的时候,需要指定版本、地址、端口和key,其中“版本”需要选择fix-protocal-version所支持的。(例如,截止目前,好像支持的最高版本是8.9.63,好像可以在“无法登陆的临时处理方案”或者fix-protocal-version的仓库中看到。在运行mcl的时候,会显示当前的版本,如果需要更新版本的话,请参考fix-protocal-version的README)
- 如果顺利的话,qsign可以成功启动并且开启服务
3.使用mcl连接qsign服务
- 编辑
KFCFactory.json
。请注意,由于我选择的是8.9.63,并且是unidbg-fetch-qsign,所以我的json文件内容是(请你自己根据自己的需要进行编辑):
{ "8.9.63": { "base_url": "http://127.0.0.1:13579", "type": "fuqiuluo/unidbg-fetch-qsign", "key": "1145141919810" } }
- 重启mcl,此时应当看到类似这样的信息
2023-10-03 11:02:18 I/fix-protocol-version: 当前各登录协议版本日期: ANDROID_PHONE 8.9.63.11390 2023-05-26T10:46:18+08:00 ANDROID_PAD 8.9.63.11390 2023-05-26T10:46:18+08:00 ANDROID_WATCH 2.0.8 2019-06-03T20:25:31+08:00 IPAD 8.9.50.611 2023-02-16T15:10:14+08:00 MACOS 6.8.2.21241 2022-03-14T11:11:35+08:00 2023-10-03 11:02:18 I/fix-protocol-version: 当前签名服务配置信息: v8.9.63 by fuqiuluo/unidbg-fetch-qsign from http://127.0.0.1:13579
其中“当前签名服务配置信息”表示可以正常连接,如果不能的话会有其他的信息显示
4.登录QQ
- 似乎有人建议不要使用自动登录,所以建议每次都直接使用login命令来登录。注意,login后面的所有参数都需要加:
login <QQ> <密码> <登录方式>
- 然后使用sakura那个扫码登录就好啦!!!
祝大家顺利登录!!
-
各个项目的 readme.md 讲得已经很详细,再不明白那就没必要使用了。。