`Tips:
小贴士
第三方签名服务 的作用是
尽量避免 code=45
的出现和减少消息风控
fix-protocol-version 1.9.0+ 已经实现了第三方签名服务的对接
并且 mirai-console 和 mirai-core 都支持使用
使用方法详见 README
mirai-login-solver-sakura
处理滑块及其他验证,服务器使用需要做一些配置
使用方法详见 README
09月24日
开始出现即使已经使用签名服务
仍要求强制要求提升版本的情况,
code=45, title=禁止登录, message=登录失败,请前往QQ官网im.qq.com下载最新版QQ后重试,或通过问题反馈与我们联系。, errorInfo=)
。
你可以尝试更换签名服务或者更新协议版本。
注意,fix-protocol-version
插件更新协议的来源 protocol-versions,
其最新的协议版本是 8.9.63
。
8.9.73
等版本在其PR中,有待验视合并,亦缺乏测试。
请自行斟酌是否下载使用。
08月10日
本次更新是作总结
-
目前登录的机制下需要 签名服务 用来应对 code=45
和 消息风控
- 没有签名服务的情况下 Mirai 无法正常登录和使用
- Mirai 不会提供内置的签名服务,但提供了接入第三方服务的接口
- 已知的签名服务只支持
ANDROID_PHONE
/ ANDROID_PAD
协议
- 登录协议的版本和签名服务器要相互匹配
-
对接签名服务 fix-protocol-version
-
处理滑块及其他验证 mirai-login-solver-sakura
- 滑块验证,短信验证 是否出现取决于服务器要求,一般出现于第一次登录或者登录缓存失效的情况下
- 滑块验证可能会连续要求多次验证,
- 完成了滑块验证还是出现
code=237
, 这可能是因为服务器认为本次验证可信度太低(可能是操作超时或被检测出环境有问题)
- 迁移登录缓存(IP有变动)可能会导致缓存失效,出现需要重新验证的情况
下面的内容因管理不慎过于凌乱,仅作历史内容参阅
07月19日
https://github.com/cssxsh/fix-protocol-version/releases/tag/v1.9.8
加了点处理,避免自动登录失败把 mirai 关了
原因可以看这个
https://github.com/mamoe/mirai/issues/2740
07月18日
https://github.com/cssxsh/fix-protocol-version/releases/tag/v1.9.7
修复 KFCFactory SPI 加载的问题
07月13日
关于 Request timeout
请看这个 https://github.com/fuqiuluo/unidbg-fetch-qsign/issues/120
https://github.com/cssxsh/fix-protocol-version/releases/tag/v1.9.5
修复一些问题,并且把 RequestToken 设置为暂停
07月11日
mirai 2.15.0 正式版已发布 https://github.com/mamoe/mirai/releases/tag/v2.15.0
https://github.com/cssxsh/fix-protocol-version/releases/tag/v1.9.4
适配 mirai 2.15.0
可选第三方签名服务 (配置文件 KFCFactory.json)
https://github.com/fuqiuluo/unidbg-fetch-qsign
https://github.com/kiliokuara/magic-signer-guide
07月10日
https://github.com/cssxsh/fix-protocol-version/releases/tag/v1.9.3
适配 mirai 2.15.0-dev-105
可选第三方签名服务 (配置文件 KFCFactory.json)
https://github.com/fuqiuluo/unidbg-fetch-qsign
https://github.com/kiliokuara/magic-signer-guide
07月05日
https://github.com/cssxsh/fix-protocol-version/releases/tag/v1.8.5 无法启动,已于 v1.8.6 修复
https://github.com/cssxsh/fix-protocol-version/releases/tag/v1.8.6
适配 mirai 2.15.0-dev-105 和 unidbg-fetch-qsign 1.1.3
unidbg-fetch-qsign 仍有问题没有修复,请谨慎使用
06月29日
unidbg-fetch-qsign 服务有 冻结/封号 风险,请自行斟酌是否使用
https://github.com/Mrs4s/go-cqhttp/discussions/2245
https://github.com/cssxsh/fix-protocol-version/releases/tag/unidbg-fetch-qsign
06月24日
8.8.88
遭到大规模风控,表现为 code=40
/code=45
目前的情况
ANDROID_PHONE(8.9.58.11170)
, ANDROID_PAD(8.9.58.11170)
缺少 tlv544 和 sign
code=45
ANDROID(8.8.88)
,
被大规模检测
code=40
/code=45
ANDROID_WATCH
密码登录 code=238
, 也就是被禁止密码登录
可以扫码登录,但扫码登录需要局域网
并且扫码登录之后有定期消息风控
06月23日
code=16
删掉 bots/.../cache
code=235
删掉 bots/.../device.json
老生常谈的问题为啥总有人重复问
扫码登录(ANDROID_WATCH) 之后发不出消息是已知且目前无法解决的问题
不要再问怎么办了
fix-protocol-version v1.8.3
只是修复了一些可能的问题,不清楚有没有影响
开始严查 8.8.88
版本的登录了,祝各位好运
06月21日
v2.15.0-RC 已发布
你可以使用 mcl 更新到 2.15.0-RC
了,参考 https://mirai.mamoe.net/topic/2061
2.15.0-RC
包含了 2.15.0-dev-98
的更新内容
所以也可以配合 fix-protocol-version v1.8.0 以 8.8.88 版本协议进行登录
如果你发现日志的 ANDROID_PAD 版本不是 8.8.88
那么可以尝试使用 protocol sync ANDROID_PAD
同步协议内容
06月12日
fix-protocol-version v1.7.1
- 添加 windows x86 支持
- 降低 linux glibc 版本需要至 2.23
你可以通过 strings /lib/x86_64-linux-gnu/libc.so.6 | grep GLIBC_
查看你的linux系统支持那些版本
https://github.com/cssxsh/fix-protocol-version/actions/runs/5241043307
https://github.com/cssxsh/fix-protocol-version/actions/runs/5241784161
https://github.com/cssxsh/fix-protocol-version/actions/runs/5276674247
06月11日
fix-protocol-version v1.7.0
更新了,姑且加上解决 code=45
需要的部分东西,目前配合 8.8.88 + 2.15.0-dev-98 可以登录
使用方法:
到 https://github.com/cssxsh/fix-protocol-version/actions/runs/5233985323 下载整合包 console-runtime
使用登陆协议 ANDROID_PAD
06月10日
隔壁 8.8.88 协议版本 解决方法的原理是把协议回退到 没有 code=45
检查的版本
code=45
的原理是检查协议流程中的一些签名加密部分,mirai 目前没有实现,所以大概率报 code=45
ANDROID_WATCH 能扫码登录的原理也是类似的,他根本不检查 code=45
需要检查的东西,所以不会触发 code=45
fix-protocol-version 只是修改协议的版本信息,并没有修改协议实现细节,所以他无法从根本上解决 code=45
只能用于处理 code=235
,不要在TM问为什么 fix-protocol-version 为什么不能解决 code=45
了,每次更新帖子都在强调,但是TM每次都还是有人问。
姑且在 https://github.com/cssxsh/fix-protocol-version/releases/tag/v1.6.0 中加入
protocol sync <type>
命令用以同步协议
例如 protocol sync ANDROID_PAD
可以将 ANDROID_PAD
同步到 8.8.88
但是慎用,8.8.88 协议版本可能会让本来能正常登录的账号炸掉,
并且 8.8.88 可能会触发 code=235
所以建议尝试的时候单独开一个实例。
PS: 某人写的 6/3 的更新属实鸡肋, 风控严重的号无法解除45,不严重的号又不触发45,只有轻微风控的号才可能有用。
06月03日
据反馈,已在 2.15.0-M1 版本出现 code=45 依旧无法使用此方法登录。
originally posted at #2671
请尝试使用 60d360b
或之后的 snapshot 构建,并使用 ANDROID_PHONE 协议登录。
针对 mirai-console
使用者(通过 mirai-console-loader
或其他启动方式)
以最新构建为例,访问 mirai snapshot 仓库,下载 mirai-core
, mirai-core-api
和 mirai-core-utils
的版本为 2.15.0-dev-97
的构建文件。
下载好后,按照如下步骤操作:
- 首先删除 mirai-console 根目录下的
libs
目录的所有文件。
- 打开
config.json
,将 net.mamoe:mirai-core-all
,net.mamoe:mirai-console-terminal
和 net.mamoe:mirai-console
的版本改为 2.15.0-M1
。
- 启动一次 mirai-console-loader,等待其下载库文件。
- 下载完成后(即已经出现 mirai 的 logo)立刻强制关闭 mirai-console-loader。
- 将在 snapshot 仓库下载好的 jar 放入
libs
目录中。
- 删除所有的
sha1
文件。
- 删除原先的
mirai-console-2.15.0-M1-all.jar
文件。
- 用任何压缩软件(如 Bandizip)打开原先的
mirai-core-all-2.15.0-M1-all.jar
,删除其中的 net/mamoe/mirai
包文件夹。
操作完成后,libs
中的内容应该和如下图片相同:
- 删除
bots
下的登录缓存。
- 通过以下方式启动:
java -D"file.encoding=utf-8" -cp "./libs/*" net.mamoe.mirai.console.terminal.MiraiConsoleTerminalLoader
启动成功后尝试使用 ANDROID_PHONE
协议登录,其他协议与稳定版相同,仅更新了手机协议。
注意:
- 每一个 snapshot 版本仅保留一个月,若发现此评论中的构建已被删除,请自动替换为最新构建的版本号。
- mirai 构建的文件没有签名校验,所以可以直接删除 jar 中的类。
- snapshot 构建没有依赖,所以借用原先包含依赖的
mirai-core-all
中的依赖。
针对基于 mirai-core
开发的开发者
查看 UsingSnapshots.md
其他信息
mirai snapshot 构建仓库:https://repo.mirai.mamoe.net/
获取 dev 分支最新构建依赖版本号的方法:
05月03日
fix-protocol-version
已更新
https://github.com/cssxsh/fix-protocol-version/tree/v1.5.0
它现在也会在 2.15+
下工作
再次强调此次插件仅用于处理 code=235
问题
另外, 登录前请删掉(备份) bot/.../device.json
因为 code=235
code=45
会拉黑设备信息
04月23日
有用户表示可用通过官方最新版安卓客户端登录挂机让 code=45
退化到 code=235
目前的两套比较稳妥的解决方案
- 密码登录
登录前请删掉(备份) bot/.../device.json
因为 code=235
code=45
会拉黑设备信息
mirai-login-solver-sakura
在服务器使用请添加 jvm 参数 -Dmirai.no-desktop=true
- 扫码登录
mirai 2.15
+ mirai-console-dev-qrlogin
+ ANDROID_WATCH
注意扫码登录只支持 ANDROID_WATCH
和 MACOS
协议, 并且会少收到很多事件
目前 2.15.0-M1
有 BUG,会导致 IllegalProducerStateException
(修复没这么快,建议回退 2.14)
另外直接使用 mirai-core 2.15
的开发者可以调用相关API扫码登录,不需要 mirai-console-dev-qrlogin
mirai-console-dev-qrlogin
只是把相关API封装成 mirai-console 可用的命令
再次声明,目前 mirai 只有 密码登录
和 扫码登录
没有所谓的 验证码登录
和 短信登录
只有 密码登录
中出现了 验证码验证
和 短信验证
至于出现什么验证是不可控的,取决于服务器的要求
他可能出现 验证码验证
+短信验证
,也可能只出现 短信验证
,也可能只出现 验证码验证
还可能什么也不出现
最近在更新 Mirai 的文档,有建议的可用来提一提
https://github.com/mamoe/mirai/pull/2639
04月15日
目前常见code
的总结
-
code=45
重度版本验证
目前无法处理 (PR 中有正在提交的解决方案,可自行关注)
ANDROID_PHONE
ANDROID_PAD
IPAD
MACOS
全部阵亡,都会有可能触发
-
code=235
轻度版本验证
升级至 mirai 2.15
或者 (mirai 2.14
+ fix-protocol-version) 可以一定程度解决
注意要删除 bots/.../device.json
文件,让其重新生成,不然仍有可能因 device.json
被拉黑而触发
-
code=237
比较常见于滑块验证处理不慎
建议配合 mirai-login-solver-sakura 处理登录, 服务器使用方法请自行查阅其 readme
-
code=238
出现于 ANDROID_WATCH
协议
他会提示你必须走扫码登录,实际上就是禁止手表协议密码登录了
关于扫码登录,ANDROID_WATCH
协议会要求在同一局域网。对于服务器来说,
你可以尝试搭建一个工具,让手机的流量
走服务器的网络
。这样就能模拟局域网的情况。
fix-protocol-version 更新了新版本 v1.4.0
再次强调 fix-protocol-version
而且只会在 2.14
下工作
他本来就是临时性的修复,不能解决所有问题
真正的修复要等 2.15
的发布
03月30日
QQ的登录方式只有三种
- 密码登录
- 扫码登录 (mirai 2.15 实现)
- 手机号登录 (未实现)
由于密码登录很容易被腾讯识别为疑似盗号之类的
比如因为服务器IP被检测为异地登陆
所以TX会要求滑块之类的人机验证
这是是TX要求,不是mirai故意要你滑块
所以不存在什么 滑块登录
,只有密码登录
中出现了滑块验证
fix-protocol-version
而且只会在 2.14
下工作(readme 明明说的很清楚是临时性修复)
而且只解决 code=235
问题
扫码登录只支持 ANDROID_WATCH
和 MACOS
协议
扫码登录亦有扫码登录的风控
目前已知有
ANDROID_WATCH
要求在同一网络(局域网)下扫码
MACOS
报 code=235
(这个要求最新的 NT QQ
的版本信息,目前无法提供)
03月26日
mirai
2.15.0-M1 已推出,包含扫码登录功能,但还没有设计对应的登录指令
如果你在使用第三方插件体验扫码登录,出现问题请优先回复到第三方
fix-protocol-version
只适用于 2.14
下 处理各种协议的 code=235
问题
03月12日
fix-protocol-version
于 v1.2.0
更新了 MACOS
协议
https://github.com/cssxsh/fix-protocol-version/releases/tag/v1.2.0
出现 code=45
/ code=238
问题的可以尝试切换到 MACOS
协议
03月09日
出现 code=45
风控 意味着你的QQ被限制只能在最新版手Q上登录
此风控是针对 ANDROID_PHONE
和 ANDROID_PAD
的
Mirai 目前支持的的登录方式只有 密码登录
(不叫滑块登录)
期间出现 滑块验证
是正常情况(这是QQ要求的人机检测,无法避免)
45
/235
/237
/238
他们都是密码登录被风控导致的问题
(好好看日志就知道,它们都有一个前缀 WrongPasswordException
)
至于 扫码登录
他已经在日程中了
具体可以关注 https://github.com/mamoe/mirai/pull/2502
03月08日
出现了新的风控 code=238
(禁止密码登录,强制要求扫码或者短信)
此风控是针对 ANDROID_WATCH
和 MACOS
的
临时修复插件 fix-protocol-version
此插件可以尝试用来解决 ANDROID_PHONE
或者 ANDROID_PAD
的 code=235
风控
03月07日
以最近的情况来看,QQ在督促用户更新客户端
表现情况为 code=235
关于对版本信息的更新已在日程中
你可以使用 临时修复插件 fix-protocol-version
02月28日
QQ又加强了风控检测
code=45
属于更加严重的登录风控,建议使用手机客户端
挂一下机器人,最好能正常聊天之类的
45
, 235
, 237
都属于登录风控
235
, 237
是疑似有问题
45
是确定有问题
你可以在以前没登录的电脑上使用密码登录
试试看,也会有类似的提示
code=6
是一定程度锁定了账号,例如,新注册的账号被要求先在手机客户端
上登陆
02月14日
若使用 mirai 版本低于 2.14.0,
在服务器上使用 mirai-login-solver-sakura 时需要 添加参数 jvm 参数 -Dmirai.no-desktop=true
,
如果你使用 mcl 启动,你只需要编辑脚本 mcl.cmd
或 mcl
的内容, 在 -jar
的前面加上 -Dmirai.no-desktop=true
例如 %JAVA_BINARY% -Dmirai.no-desktop=true -jar
若使用 mirai 2.14.0 及以上则不需要添加此参数
PS: 只有本地局域网才能配合APP进行扫码
第三方登录器: https://github.com/MrXiaoM/Aoki
使用真实的设备信息生成 device.json
可以在登录后将 bots
文件夹导出,以供其他环境使用
与之相比 mirai-device-generator 是模拟生成
登录风控 (code=235
和 code=237
) 不是单一因素导致的,亦不能靠单一手段直接100%
解决
包括的因素有
- IP地址,一个IP地址登录过多的账号,
或者已经被腾讯拉黑
或者和你常用的IP差距过大,你比如本地登录在广州,又迁移到服务器登录在上海
- 登录尝试次数过多
- 长期没用使用安卓之类的官方客户端登录机器人账号 (别问,问就是腾讯想提高用户的客户端安装率)
02月12日
QQ最近加强了登录风控检测,
如果账号删除 cache 后,仍多次重复出现 code=235
, code=237
那么你的账号很有可能被风控了,无法使用密码登录账号。
有用户表示 ANDROID_WATCH
这个协议比较容易触发短信验证
还有用户表示可以 尝试修改密码
之后重新尝试登录
至于为什么很长一段时间都能很正常的登上,那是因为
第一次登录成功之后会有快速登录缓存,也就不会走密码登录流程
快速登录会有以下日志
I/Bot.12345: Saved account secrets to local cache for fast login.
但 02-10 上午,腾讯服务器大规模宕机,导致几乎所有人的登录缓存都失效了。
目前最新的 mirai 版本为 2.14.0
01月20日
目前最新的登录修复版本为 2.14.0-RC
如果有以下登录问题
net.mamoe.mirai.internal.utils.crypto.DecryptionFailedException...
code=6, title=登录失败, message=服务连接中,请稍后再试。(0x6)...
你可以尝试上升级到 2.14.0-RC
参考: https://mirai.mamoe.net/topic/1653
最好使用 mirai-login-solver-sakura 完成登录验证
以上为 2023 年
12月18日
https://github.com/KasukuSakura/mirai-login-solver-sakura
TxCaptchaHelper 的 后继产品,另外的一整套验证处理工具,优化和方便处理各种验证码。
出现 code=237, title=安全提醒, message=当前网络不稳定
错误
请尝试以下方法步骤解决
- 删除
bots/.../
下全部文件
- 保持机器人账号手机端QQ登录
- 在手机端QQ
设置/账号安全/登陆设备管理
中将历史设备删除
10月26日
出现 code=235, title=温馨提示, message=当前QQ版本 过低
错误
请尝试以下方法步骤解决
- 升级到 2.13.0-RC(2) https://mirai.mamoe.net/topic/1653
- 修改登录协议. 自动登录默认的登陆协议是 ANDROID_PHONE, 可以改成 ANDROID_PAD
可以用指令 /autoLogin setConfig 12345 protocol ANDROID_PAD
修改自动登录的协议
如果你是手动登录, 就附加协议参数 /login 12345 xxxx ANDROID_PAD
除了 ANDROID_PAD
协议之外 MACOS
, IPAD
协议也是可用的
- 保持机器人账号手机端QQ登录
- 登录之后完成滑块,之后一般会弹设备验证或者短信验证
- 如果还是报版本过低,尝试删除
bots/.../device.json
,让mirai 重新生成 设备信息, 重启之后,重复步骤 4(想要生成更可靠的信息可以使用 mirai-device-generator )
- 补充说明, 手机端QQ
设置/账号安全/登陆设备管理
中有登录安全相关设置,可以调整之后再尝试
9月21日
可以尝试通过下面这个插件生成更可靠的设备信息,记得要先把旧的设备信息 device.json
删除
https://github.com/cssxsh/mirai-device-generator
MiraiAndroid 出现 设备授权获取失败
,可以尝试清除 device.json
, 再重新尝试
9月8日
现在我也不知道什么情况了,反正MiraiAndroid导出的文件可能存在一些问题。建议还是通过滑动验证码登录
7月5日更新
滑动验证助手已经修复
以上为 2022 年
10-29
如果你正在使用苹果系列的手机,使用最原始的方法来解决滑动验证码
9月6日更新
滑行验证助手已失效,请使用MiraiAndroid
https://install.appcenter.ms/users/mzdluo123/apps/miraiandroid/distribution_groups/release
8月3日更新
滑动验证助手(TxCaptchaHelper)新增高速下载地址
https://install.appcenter.ms/users/mzdluo123/apps/txcaptchahelper/distribution_groups/public
7月3日更新
如果你在使用MiraiAndroid进行登录时也遇到了无限要求验证码的问题,请在菜单内重置设备文件或者清除应用数据
6月23日 更新
十分不建议在服务器上进行首次登录
6月22日更新
只要你遇到了各种导致你无法登录的奇奇怪怪的问题都可以按照下面的步骤来操作,以下操作无效请在下面回复,新开贴的不予回复
6月7日更新
Error(title=禁止登录, message=当前上网环境异常,请更换网络环境或在常用设备上登录或稍后再试。, errorInfo=)
删除 device.json
, 对于 mirai-console
位于 bots/**/
内
6月6日更新
所有问题都能使用这个方式解决
先到这里下载MiraiAndroid https://github.com/mzdluo123/MiraiAndroid/releases/
下载之后安装到你的手机上,并且完成登录;登录方法在主屏幕右上角的自动登录里,登录过程中需要验证请在通知栏内点击通知完成验证
登录成功后到左边菜单内找到高级功能,选择你得账号之后导出设备文件(device.json)发送到电脑,并覆盖电脑版文件即可成功登陆
6月3日更新
无法进行设备锁验证的解决方案
临时解决方案: 把 UnsafeDevice 要求设备锁验证提供的链接中的verify
改成qrcode
即可得到一个二维码,使用手机qq扫描二维码完成设备锁验证
以上为 2021 年
无法进行滑动验证码验证的解决方案
请使用 https://github.com/mzdluo123/TxCaptchaHelper
项目来手动完成验证码,必须使用手机
手动完成验证码的方法:
https://github.com/project-mirai/mirai-login-solver-selenium
https://docs.mirai.mamoe.net/mirai-login-solver-selenium/
请注意,必须将手动完成教程里的方式添加 JVM 属性 mirai.slider.captcha.supported (添加参数 -Dmirai.slider.captcha.supported) ,然后将显示的网页url复制到手机完成操作```
code_text