解决 node 使用 oicq 登录 QQ 提示" [温馨提示]当前QQ版本过低,请升级至最新版本后再登录。点击进入下载页面"
最近再尝试实现一个自己的 QQ 机器人,尝试用 node 来做实现,找到了 oicq 来做 QQ 的管理。
node 使用 oicq 登录 QQ 失败,提示如下:
[2023-01-04T21:43:50.973] [MARK] [Android:2982716591] - ----------
[2023-01-04T21:43:50.975] [MARK] [Android:2982716591] - Package Version: oicq@2.3.1 (Released on 2022/6/21)
[2023-01-04T21:43:50.976] [MARK] [Android:2982716591] - ----------
[2023-01-04T21:43:51.262] [MARK] [Android:2982716591] - 123.151.48.171:8080 connected
[2023-01-04T21:43:51.444] [MARK] [Android:2982716591] - 收到滑动验证码,请访问以下地址完成滑动,并从网络响应中取出ticket输入:***********(获取ticket的地址)
输入ticket:
*******(你输入的ticket)
[2023-01-04T21:44:14.035] [ERROR] [Android:2982716591] - [温馨提示]当前QQ版本过低,请升级至最新版本后再登录。点击进入下载页面
解决办法
修改 oicq 的 device.js 文件
找到 node_modules/oicq/lib/core/device.js 文件,修改内容如下:
const mobile = {
id: "com.tencent.mobileqq",
name: "A8.9.15.9425",
version: "8.9.15.9425",
ver: "8.9.15",
sign: Buffer.from([166, 183, 69, 191, 36, 162, 194, 119, 82, 119, 22, 246, 243, 110, 182, 141]),
buildtime: 1640921786,
appid: 16,
subid: 537138832,
bitmap: 150470524,
sigmap: 16724722,
sdkver: "6.0.0.2494",
display: "Android",
};
修改完成后再重新登录就成功了,我是做了这一步就成功了(这是我第一次登录).
2023年2月25日
过了一段时间后 token失效后重新登录又开始失败了,还是提示:
[温馨提示]当前QQ版本过低,请升级至最新版本后再登录。点击进入下载页面(错误码:235)
原因&如何解决:
oicq默认生成的设备信息是完全根据qq号来的,所以默认生成的设备被风控了就会一直被风控。因此需要修改 ~/.oicq/<qq号>/device-<qq号>.json 里面的信息,主要是改一下imei,避免风控,所以随便修改imei的几个数字,再重新登录认证能成功登录了。
2023年4月2日
今天又去 Linux 服务器重新登陆 QQ, 通过网页滑动验证码获取ticket输入后报错提示:
[禁止登录]你当前使用的QQ版本过低,请前往QQ官网im.qq.com下载最新版QQ后重试。(错误码:45)
然后有尝试了下本地 windows 登陆,通过网页滑动验证码获取ticket输入后依然报错:
[安全提醒]当前网络不稳定,登录失败。推荐使用常用设备或通过手机号登录。(错误码:237)
原因&如何解决:
原因是 QQ 更新了登陆协议,而 oicq 库未更新,暂时没找到解决办法,只能考虑换个 QQ 机器人框架来做,等后续有结果了再来更新。
借助go-cqhttp登录成功后替换device.json文件与token文件
使用go-cqhttp成功登录账号之后将其生成的device.json文件与token文件复制到oicq的data目录下成功登陆了,值得注意的是应当把两个文件分别命名为 device-{uid}.json 与 token (无后缀),希望能帮到你