前言
近期tx加大风控,此前能用的签名版本纷纷失效。基于NTQQ的方案逐渐出现,如Chronocat、Shamrock等,与之匹配的Red、Satori等协议也涌现出来。本文介绍一种简单的基于Chronocat和Red协议的云崽机器人部署方法,无需部署或配置签名服务。
如果你不想用TRSS或云崽,只想部署linux版chronocat,也可以参考本教程的第一部分。
写了一个简单的脚本,想尝鲜或者不想往下看的可以试试 curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash;
脚本不一定保证可用,需要Linux环境,提前装好Docker、pnpm和redis。服务器需要提前开放16340(登录页面,必需)和5500端口(satori端口,用于验证是否登陆成功,非必需)。
一、安装和部署Chronocat
优先参考官方文档 https://chronocat.vercel.app/install/
Chronocat官方文档还是比较清晰和完整的,如果是windows照着做就行了,安装LiteLoaderQQNT和chronocat插件,注意QQ版本。优先选择windows64版本,因为目前支持的最完善,例如linux还存在不支持转发等问题。
笔者没有windows服务器,这里选择了linux+docker的部署方式,镜像上选择了官方镜像chronoc/at。使用其他方式部署可以参考官方文档。并跳过本部分。
docker run -d \
--name chronocat \
--restart=always \
-p 16530:16530 \
-p 5500:5500 \
-p 16340:16340 \
-v ./config:/chrono/.chronocat/config \
-v ./qq:/chrono/.config/QQ \
chronoc/at
运行后,执行docker logs -f chronocat
查看日志。日志应该如下图所示:

其中有一些错误或警告可以忽略(来自开发者 https://github.com/chrononeko/bugtracker/issues/34)
然后就可以用浏览器访问图中的链接来进行扫码登录。需要注意的是,如果是非本机,需要将其中的127.0.0.1替换为你的ip或域名。页面如下图所示。

页面中输入框中的ip也需保证正确,如果非本机要将其中的127.0.0.1替换为你的ip或域名。然后点击Connect。

然后点击右侧空白的QRCode,会生成二维码,用手机扫描登录即可,和登录PC端NTQQ一样。手机端确认后,目前版本页面可能不会有任何反应,直接关掉就可以了。此时查看日志会打印几行,也不用管。
检测是否运行成功,可以访问Satori的端口即http://[ip或域名]:5500,如果看到下图所示页面就没问题了。

这时,一个PC端qq已经在容器内运行了。接下来的工作是通过ws-plugin将TRSS-Yunzai接入其中。
二、安装TRSS-Yunzai和WS-Plugin
TRSS-Yunzai文档:https://trss.me/Guide/Project/TRSS-Yunzai.html
安装方式和其他yunzai类似,照着TRSS-Yunzai Readme的步骤1、2、3、4执行即可,可以不与Choronocat安装在一起,但鉴于安全性不建议将Choronocat端口暴露于公网。但在第一步时,要注意我们需要ws-plugin( https://gitee.com/xiaoye12123/ws-plugin )来通过red协议连接到chronocat,因此要额外多安装一个ws插件,参考仓库readme或下面的命令(gitee github二选一)。其他插件建议按照教程运行完成后再自行安装。
#gitee
git clone --depth=1 https://gitee.com/xiaoye12123/ws-plugin.git ./plugins/ws-plugin/
pnpm install --filter=ws-plugin
#github
git clone --depth=1 https://github.com/xiaoye12123/ws-plugin.git ./plugins/ws-plugin/
pnpm install --filter=ws-plugin
TRSS脚本应该也行,我没试过。
三、连接TRSS-Yunzai和Chronocat
两种方法,一种是运行通过交互执行添加ws连接。另一种是直接修改ws-plugin的配置文件。不管哪种方式,都需要先拿到chronocat的token,token会在chronocat的配置文件中。如果和我一样用docker部署的,会在用户根目录/config/chronocat.yml中,如下所示,其中的 ef395675c276356895879c48e*****
就是我们需要的token,复制出来备用。
# yaml-language-server: $schema=https://chronocat.vercel.app/config-v0.schema.json
#
################################################################
# Chronocat 配置文件
################################################################
#
# 你好!
#
# 这是 Chronocat 的配置文件。Chronocat 的所有配置以及每个账号
# 的独立配置都存放在这个文件里。
#
# 这是 Chronocat 配置的文档:
# https://chronocat.vercel.app/config
# 如果还没有看过的话,请先看一下!
#
# 如果你现在并不是使用完整功能的编辑器编辑此文件的话,
# 我们推荐你使用一款完整功能的编辑器来编辑!
# 这样的编辑器在你不小心改错配置的时候会智能地给出提示。
# 想要了解更多请查看上面的文档 ↑
#
################################################################
# 全局配置
################################################################
#
# 下面的配置是通用的!如果你只登录一个账号,
# 那么只需修改下面这部分配置即可!
#
################################################################
# servers:服务配置
#
# 配置 Chronocat 开启的服务。需要尤其注意服务列表的格式哦~
servers:
# type:服务类型
#
# 开启 red 服务只需要指定 type 为 red 即可。
- type: red
# token:服务密码
#
# Chronocat 已经自动生成了随机密码。要妥善保存哦!
# 客户端使用服务时需要提供这个密码!
token: 'ef395675c276356895879c48e*****'
# port:服务端口
#
# Chronocat 开启 red 服务的端口,默认为 16530。
port: 16530
# 开启 satori 服务与上面相同,指定 type 为 satori 即可。
- type: satori
# 这里的 token 与上面的相同,
# 但你也可以进行更换,让每个服务使用不同的服务密码。
token: 'ef395675c276356895879c48e*****'
# satori 服务的默认端口为 5500。
port: 5500
#
方法一
执行node app后输出如下:

此时在终端中分别输入以下ws插件的指令。
1. #ws添加连接

2. chronocat,4

3. 127.0.0.1:16530,[token]然后就OK了
方法二
先不启动,直接编辑 plugins/ws-plugin/config/config/ws-config.yaml,参照提示在servers里添加一项,例如:
- name: chronocat
address: 127.0.0.1:16530
type: 4
accessToken: "token"
reconnectInterval: 5
maxReconnectAttempts: 0
uin: 机器人的qq号,手动填入
然后再node app,就会像下面一样:

恭喜!这就成功了。chronocat一直挂着即可,除非需要更新。Yunzai这边就和普通云崽一样随便安装插件了。