Mrs4s / go-cqhttp

cqhttp的golang实现,轻量、原生跨平台.
GNU Affero General Public License v3.0
10.39k stars 1.63k forks source link

[Bug]: 1.2.0版本gocq在linux下出现:invalid byte: U+002F '/' #2476

Open okashi-ya opened 1 year ago

okashi-ya commented 1 year ago

请确保您已阅读以上注意事项,并勾选下方的确认框。

go-cqhttp 版本

1.2.0

运行环境

Linux

运行架构

AMD64

连接方式

WebSocket (反向)

使用协议

6 | aPad

重现步骤

1.docker pull xzhouqd/qsign:core-1.1.9 拉取最新镜像 2.docker run -d --restart=always --name qsign -p 8000:8080 -e BASE_PATH=/srv/qsign/qsign/txlib/8.9.73 xzhouqd/qsign:core-1.1.9 使用8.9.73协议 3.启动gocq(linux下其存在于单独的一个容器中) 4.查看log

期望的结果是什么?

正确签名

实际的结果是什么?

qsign侧的签名无报错但仅有几条日志,而后gocq就报错

简单的复现代码/链接(可选)

No response

日志记录(可选)

**linux**下qsign侧日志:

Using base path /srv/qsign/qsign/txlib/8.9.73
FEBond sum = 7680
Load Package = Protocol(qua=V1_AND_SQ_8.9.73_4416_YYB_D, version=8.9.73, code=4416, packageName=com.tencent.mobileqq)
...
...
...
15:59:30.388 [DefaultDispatcher-worker-1] INFO ktor.application - Responding at http://0.0.0.0:8080
15:59:45.689 [eventLoopGroupProxy-3-1] DEBUG io.netty.buffer.AbstractByteBuf - -Dio.netty.buffer.checkAccessible: true
15:59:45.689 [eventLoopGroupProxy-3-1] DEBUG io.netty.buffer.AbstractByteBuf - -Dio.netty.buffer.checkBounds: true
15:59:45.690 [eventLoopGroupProxy-3-1] DEBUG io.netty.util.ResourceLeakDetectorFactory - Loaded default ResourceLeakDetector: io.netty.util.ResourceLeakDetector@55ccab54
15:59:45.741 [eventLoopGroupProxy-3-1] DEBUG io.netty.util.Recycler - -Dio.netty.recycler.maxCapacityPerThread: 4096
15:59:45.741 [eventLoopGroupProxy-3-1] DEBUG io.netty.util.Recycler - -Dio.netty.recycler.ratio: 8
15:59:45.741 [eventLoopGroupProxy-3-1] DEBUG io.netty.util.Recycler - -Dio.netty.recycler.chunkSize: 32
15:59:45.741 [eventLoopGroupProxy-3-1] DEBUG io.netty.util.Recycler - -Dio.netty.recycler.blocking: false
15:59:45.741 [eventLoopGroupProxy-3-1] DEBUG io.netty.util.Recycler - -Dio.netty.recycler.batchFastThreadLocalOnly: true
----------------
到这里gocq就会报错然后后续就无了

**linux**下gocq侧日志:

2023-10-13 00:06:35] [INFO]: 当前版本:v1.2.0 
[2023-10-13 00:06:35] [INFO]: 将使用 device.json 内的设备信息运行Bot. 
[2023-10-13 00:06:35] [INFO]: 使用签名服务器:http://192.168.174.130:8000 
[2023-10-13 00:06:35] [WARNING]: 自动注册实例已关闭,请配置 sign-server 端自动注册实例以保持正常签名 
[2023-10-13 00:06:35] [INFO]: 开始尝试登录并同步消息... 
[2023-10-13 00:06:35] [INFO]: 使用协议: Android Pad 8.9.63.11390 
[2023-10-13 00:06:35] [INFO]: 每 30 分钟将刷新一次签名 token 
[2023-10-13 00:06:35] [INFO]: 从文件 data/versions/6.json 读取协议版本 Android Pad 8.9.73.11945. 
[2023-10-13 00:06:37] [INFO]: Protocol -> connect to server: 183.47.99.24:8080 
[2023-10-13 00:06:37] [WARNING]: 获取T544 sign时出现错误: encoding/hex: invalid byte: U+002F '/' (data: /custom_energy?data=810_9&salt=00000000001095cc922c0de46b240c9bd8d839d40e4f000a362e302e302e323535330000000900000000&uin=210215127&android_id=8d4915579b3e3361&guid=95cc922c0de46b240c9bd8d839d40e4f) 
[2023-10-13 00:06:37] [WARNING]: token 已过期, 总丢失 token 次数为 1 
[2023-10-13 00:06:37] [INFO]: 正在刷新 token 
[2023-10-13 00:06:37] [WARNING]: 刷新 token 出现错误: code=1, msg: Uin is not registered.. server: http://192.168.174.130:8000 
[2023-10-13 00:06:37] [WARNING]: 登录失败: 登录失败,请前往QQ官网im.qq.com下载最新版QQ后重试,或通过问题反馈与我们联系。 Code: 45 
[2023-10-13 00:06:37] [WARNING]: 你的账号被限制登录, 请配置 SignServer 后重试 
[2023-10-13 00:06:37] [INFO]: 按 Enter 继续.... 

**该问题仅出现于linux上,在windows平台使用最新版qsign+gocq1.2.0+两端协议8.9.73是可以正常签名的**
**经测试应该与协议版本无关,尝试8.9.63,8.9.71,和8.9.73在linux上均是签名到同一位置报同样错误**

补充说明(可选)

No response

okashi-ya commented 1 year ago

另外我本地有一个5db03c7的dev版本,可以正常签名8.9.63(linux下不会报错),但是8.9.73好像会直接挂掉 不过现在8.9.63已经被废了,登不上去了,会直接要我下载最新QQ(报45错误)

YumeMichi commented 1 year ago

gocq作者团队已经无力维护了,建议迁移到其他项目。 https://github.com/Mrs4s/go-cqhttp/issues/2471

目前gocq就是运气好能用,运气不好就这样了。我自己的机器人8.9.63还能上,我朋友用的手表协议还苟着。

okashi-ya commented 1 year ago

gocq作者团队已经无力维护了,建议迁移到其他项目。 #2471

目前gocq就是运气好能用,运气不好就这样了。我自己的机器人8.9.63还能上,我朋友用的手表协议还苟着。

我linux的服务器没图形界面而且就2G内存,Shamrock跑不起。。。chronocat还是等他们协议完善了再说吧 幸亏挂的是副bot号,我调低了版本可以正常签名但是会45,换一个号就不会,可能是被盯上了吧,哎

1umine commented 1 year ago

没有注册实例,qsign配置里的auto_register改成 true应该就好了

ASAServer commented 1 year ago

我遇到过68协议报这个错误,改成70协议就好了。

mmlhl commented 1 year ago

gocq作者团队已经无力维护了,建议迁移到其他项目。 #2471

目前gocq就是运气好能用,运气不好就这样了。我自己的机器人8.9.63还能上,我朋友用的手表协议还苟着。

我linux的服务器没图形界面而且就2G内存,Shamrock跑不起。。。chronocat还是等他们协议完善了再说吧 幸亏挂的是副bot号,我调低了版本可以正常签名但是会45,换一个号就不会,可能是被盯上了吧,哎

可以试试复制device.json里面的AndroidID,然后删除device.json,重新生成,将ID改成原来的。我每次被封都会45。每次这样都可以