MiraiSignHandler —— Mirai对接Sign签名服务器,解决code=45登录失败和签名风控检测
注意:Mirai-2.15.0的FixProtocolVersion已经内置了对签名服务器的支持,已经不再需要本项目进行支持维护,请查阅官方相关文档。本贴已弃用
这是什么?
最近腾讯加大了对Bot的管控,Mirai几乎全军覆没 code=45
不过好在已经有大神完美破解了code=45的Sign签名验证
因为Mirai官方一直没有更新,自己又比较急着用,所以我就先下手为强了
目前本人已经成功越过code=45,Bot已完美正常工作
使用方式:
1.下载并使用mirai-core-all-2.15.0-抢先体验版
因为官方的mirai还没有支持Sign签名功能,说会在2.15.0正式版支持,但大家可能急着用,因此这里构建了抢先体验版可以立刻下载
在官方发布2.15.0正式版之后,就不需要使用我的抢先体验版了
2.添加本插件所需的前置库
gson
为了处理Json数据,使用gson作为前置,请将其放到libs里
FixProtocolVersion-1.8.4-魔改版
不同QQ版本签名不同,这里支持了8.9.58,也就是FixProtocolVersion-1.8.4的协议版本。
但因为FixProtocolVersion自带了一个energy(tlv544),对接后完全使用签名认证服务器的energy签名,不用FixProtocolVersion带的,防止冲突,请下载使用我魔改过移除了energy的FixProtocolVersion
3.搭建签名认证服务器
参见此处:https://github.com/fuqiuluo/unidbg-fetch-qsign
需使用txlibs为8.9.58的这两个
端口需要设定为11053(插件代码里写的端口)
4.下载和安装我的修复插件
MiraiSignHandler.jar
添加到前置,在Bot运行之前加入以下代码:
FixProtocolVersion.update(); //先执行FixProtocolVersion的修复,我的插件才能获取正确的协议版本
MiraiSignHandler.register();
5.运行Mirai
需要以ANDROID_PHONE协议运行,使用密码登录
你应该会看到后台在运行过程中多了很多getSign/getEnergy fire/response的日志,fire说明触发需要签名,response说明签名结果获得,如果都有说明你的程序已经正常工作
常见问题解答:
Q:我没能搭建好签名认证服务器/签名认证服务器工作不正常或崩溃
A:请联系项目unidbg-fetch-qsign的作者而不是我,我是本插件的作者,但不是unidbg-fetch-qsign的作者
Q:可以支持mirai-console或者其他的吗?
A:可以,但我会在2.15.0正式版发布后再做支持
Q:你一定保证我折腾之后能登录上去吗?
A:我能告诉你我的code=45已经解决了,毫无疑问是有效果的。但没人能保证你一定登的上去,这要看tx的心情
Q:源码会发到github上吗?
A:会,但是还是那个原因,我会在官方更新2.15.0正式版之后再发源码到github
Q:为什么都登录完了还一直在刷Sign的日志
A:因为在正常发消息过程中,偶尔也会出现签名验证去检查风控你,这就是为什么某些Bot运行着突然就被踢下线或无法发送消息出去的缘故
Q:通过code=45登录验证之后,一个小时后被冻结了
A:这是很正常的,TX还会检测你的聊天信息,像机器人的时候就会把你冻结掉,你可以人工解冻,在这之后再次被冻结的概率会明显降低
Q:能更换其他登陆协议吗?
A:目前只支持安卓手机登陆,因为txlibs是从安卓QQ的apk里拿的
Q:能更换其他协议版本吗?
A:可以,首先你要修改Mirai的使用协议版本(如FixProtocolVersion更新导致的版本变化),然后请自行更换签名服务器里的txlibs为对应正确版本的才能登录(去QQ官方下载手机QQ.apk,然后把里面的libs so文件拿出来放到签名服务器下面)。本插件会自动获取当前协议版本运行。