Qsign和Gocqhttp的时代已经结束了
因为腾讯如此长久的围杀堵截,加之官方接口的推出,实际上目前第三方bot都不是您最好的选择,这篇教程将最后将xzhouqd/qsign的使用方式简单梳理,其中会包含部分并不准确但是方便您理解的描述。

如何安装Docker?

如果您是Windows用户,您该怎样安装docker?

如果您是Windows用户,那么请回去看《使用docker在Windows系统环境下部署qsign》这篇文章,其中告诉了您如何安装docker,但是因为各种原因,老版本的协议有可能也会让您的qsign失效,建议从8.9.63协议开始尝试,失败后升级协议直到可以正常登录。
至于linux用户请百度“如何安装docker”,您都用linux了不会这都不会吧.jpg。

如果您使用 8.9.63 ~ 8.9.73 版本的协议

根据xzhouqd/qsign的镜像tag与包含协议txlib情况:

core-1.1.9 core-1.1.8 core-1.1.7b2 core-1.1.7 core-1.1.6 core-1.1.5 core-1.1.4
8.9.63 Included Included Included Included Included Included Included
8.9.68 Included Included Included Included Included Included Included
8.9.70 Use 8.9.71 Use 8.9.71 Use 8.9.71 Included Included N/A N/A
8.9.71 Included Included Included N/A N/A N/A N/A
8.9.73 Included Included Included N/A N/A N/A N/A
3.5.1 Included N/A N/A N/A N/A N/A N/A
3.5.2 Included N/A N/A N/A N/A N/A N/A

您可以自行选择想使用的协议版本,使用形如下所示的命令部署您的容器:

1
docker run -d --restart=always --name qsign -p {host_port}:8080 -e BASE_PATH=/srv/qsign/qsign/txlib/{version} xzhouqd/qsign:core-{core-ver}

--restart=always参数为“一直重启”,会使容器在关闭、停止后自动重启;
--name qsign会将容器名命名为qsign
-p {host_port}:8080用于指定主机端口与容器端口的映射关系,左侧为主机端口,右侧为容器端口;
-e BASE_PATH=/srv/qsign/qsign/txlib/{version}用于指定一个环境变量,在这则是用于指定您所想使用的协议版本;
xzhouqd/qsign:core-{core-ver}用于指定您所想使用的核心版本号;
其中,需要注意的是{host_port}{version}{core-ver}三处,您需要自己填写合适的数值,例如:

1
docker run -d --restart=always --name qsign -p 8080:8080 -e BASE_PATH=/srv/qsign/qsign/txlib/8.9.71 xzhouqd/qsign:core-1.1.9

这条命令将创建一个在后台以守护进程方式运行,退出时总是重新启动,容器名称 “qsign”,容器的端口 8080 映射到主机的端口 8080,使用 8.9.71 版本协议, 1.1.9 版本核心的qsign的Docker进程,具体配置项请去查看xzhouqd/qsign所提供的默认配置。
以下是一些比较重要的配置项

1
2
3
4
5
6
7
8
9
10
11
12
"server": {
"host": "0.0.0.0",
"port": 8080
},
"key": "114514",
"auto_register": false,
"protocol": {
"package_name": "com.tencent.mobileqq",
"qua": "V1_AND_SQ_8.9.63_4194_YYB_D",
"version": "8.9.63",
"code": "4194"
},

您在对接gocq时,需要将gocq的配置文件中的对应配置修改,这一部分具体操作本教程不再赘述,一般情况改为如下即可:

1
2
3
4
sign-servers: 
- url: 'http://your_ip:your_port' # 主签名服务器地址, 必填
key: '114514' # 签名服务器所需要的apikey, 如果签名服务器的版本在1.1.0及以下则此项无效
authorization: '-' # authorization 内容, 依服务端设置,如 'Bearer xxxx'

如果您使用 8.9.80 ~ 8.9.85 版本的协议

如果您在尝试 8.9.63 ~ 8.9.73 版本的协议都无法登录时,您也许就该使用更高版本的协议来运行您的qsign,这并不能完全解决风控或冻结,但是也许可以让您正常登录一段时间。
因为 8.9.80 ~ 8.9.85 版本的协议并未被包含在xzhouqd/qsign所提供的txlib中,所以您需要通过传入txlib的方式来部署qsign。
接下来您将使用形如下所示的命令部署您的容器:

1
docker run -d --restart=always --name qsign -p {host_port}:{internal_port} -e BASE_PATH={internal_abs_base_path} -v {host_abs_txlib_path}:{internal_abs_base_path} xzhouqd/qsign:core-{core-ver}

BASE_PATH={internal_abs_base_path}在此处可以直接视为BASE_PATH=/srv/qsign/qsign/txlib/{version}
-v {host_abs_txlib_path}:{internal_abs_base_path}这个参数会将您指定的路径建立映射,使得您自己的txlib可以传入容器内部使用。
在此我默认您使用的是linux系统环境下的root账户,您应该先运行

1
2
mkdir /root/qsign/txlib
cd /root/qsign/txlib

这条命令将在/root/qsign/路径下创建名为txlib的文件夹并且让您切换到那个目录,如果您没有现成的txlib请接着运行:

如果您已经有了现成的txlib,请忽略这一步,并手动将txlib内的协议文件夹置入 /root/qsign/txlib 路径下。

1
2
3
4
5
6
7
8
9
git clone https://github.com/RikoNeko/qsign-txlib.git
cd qsign-txlib
rm .gitattributes
rm -rf .git
rm README.md
mv * ../
mv .* ../
cd ..
rm -rf qsign-txlib

这将下载您可能需要的协议包,需要一段时间完成后运行 cd /root/qsign/txlib确保路径正确,运行 ls 应该会存在:

1
3.5.1  3.5.2  8.9.58  8.9.63  8.9.68  8.9.70  8.9.71  8.9.73  8.9.80  8.9.83  8.9.85

这些文件夹,接下来您需要将{host_port},{internal_port},{internal_abs_base_path},{host_abs_txlib_path},{internal_abs_base_path},{core-ver}替换为合适的数值,例如:

1
docker run -d --restart=always --name qsign -p 8080:8080 -e BASE_PATH=/srv/qsign/qsign/txlib/8.9.83 -v /root/qsign/txlib:/srv/qsign/qsign/txlib xzhouqd/qsign:core-1.1.9

这条命令将创建一个在后台以守护进程方式运行,退出时总是重新启动,容器名称 “qsign”,容器的端口 8080 映射到主机的端口 8080,将主机的 /root/qsign/txlib 目录挂载到容器的 /srv/qsign/qsign/txlib 目录,使用 8.9.83 版本协议, 1.1.9 版本核心的qsign的Docker进程,具体配置项请修改 /root/qsign/txlib 目录下您所使用的协议版本对应的目录。

在一切完成后,请去qsign-txlib或者您自己所使用的txlib中找到您使用的协议版本对应的文件夹,将其中的 android_pad.json 的内容复制,接着在您的gocq目录下的/data/versions下新建 6.json ,粘贴您刚才复制到内容,将 protocol_type 字段的值改为 6 ,保存并尝试启动gocq。

使用docker ps查看容器运行状态,如果步骤正确,那么现在您的容器已经成功运行了,至于gocq如何使用qsign请自行解决。