0x00 前言
8月4号最新更新:
最近没鼓捣Q群机器人,也没在意它的运行情况,今天鼓捣了一下发现连不上酷Q接口…
百度了一下,原来是腾讯为了推广自己的机器人,封杀了其他第三方机器人。。。酷Q也不幸遇难。唉!
最近对机器人产生了挺大的兴趣(主要因为两部galgame),偶然间也在一个QQ群里看到一个较为智能的机器人,所以我也想拥有一个QQ机器人,也就有了这篇博文。
#ATRI天下第一!
[宇宙没有永恒的事物,所以哀叹事物的终结也毫无意义,在迎来终结之前,怎样度过这段时间才是最重要的]
0x01 信息搜集
一番Google以后得知,由于QQ的消息都是会经过加密的,所以除非搞清楚QQ的某些协议和加密算法,不然自己去实现获取QQ的消息是有很大难度的。
又得知目前的QQ机器人大部分都是用一款名为酷Q的软件来实现的,主要是因为它通过神奇的方式搞清楚了QQ的协议。
在网页QQ(webqq,于19年3月去世)还在世的时候,它采用的是webqq协议,据说比较容易获取和发送消息。
而现在QQ采用的是smartqq协议,具体是怎样的我也不清楚,或者说即便知道了也很难理解。
既然存在有酷Q这个软件,那么就可以利用这个软件当做一个跳板来制作属于自己的机器人了。
目前的酷Q有 酷Q air
、酷Q pro
。
air版本目前免费,但是相对应的,功能就比pro少,比如一些发图片、发语音的功能就需要pro版才可以实现。
酷Q可以在Mac、Linux、Windows平台上运行,在Windows上主要是运行其exe文件,而在Mac和Linux上,则可以用docker的形式来运行酷Q,这也就意味着,酷Q可以挂到服务器上24小时运行。
酷Q有它自己的社区,在社区里面可以下载到各种酷Q使用者自己开发的插件,当然有些高质量插件也是要收费的,不过还是免费、开源的插件居多。
0x02 安装酷Q
由于我打算把酷Q挂到服务器上,所以这里我下载的docker版本。
由于酷Q docker还是挺大的,我用docker的默认镜像下了许久也才下载了一小部分,所以这里先用一下docker的加速器。
使用docker镜像加速器
可以选用的加速器有网易的、阿里云的、七牛云的 等等等等…
1 | 网易:https://hub-mirror.c.163.com/ |
获取到加速器地址以后修改配置文件。
1 | vi /etc/docker/daemon.json |
这里以使用网易加速器为例
1 | sudo mkdir -p /etc/docker |
保存退出
重启docker服务
1 | service docker restart |
拉取并安装酷Q docker
1 | docker pull coolq/wine-coolq #拉取酷Qdocker,时间可能会久一些 |
拉取成功以后输入docker images
可以看到coolq/wine-coolq
的实例
1 | mkdir /root/coolq-data # 任意路径均可,创建一个文件夹用于存放酷Q数据 |
然后运行酷Q镜像,由于要安装到服务器上,所以选择后台运行的方式。
1 | docker run --name=coolq -d -p 8080:9000 -p 5700:5700 -v /root/coolq-data:/home/user/coolq -e VNC_PASSWD=12345678 -e COOLQ_ACCOUNT=123456 coolq/wine-coolq |
参数 | 作用 |
---|---|
-p 8080:9000 | 把8080改到任意端口,用于使用浏览器连接docker的桌面 |
-p 5700:5700 | 把前一个5700改成任意端口,用于连接酷Q的HTTP API |
-v /root/coolq-data | 改成之前新建的文件夹,用于做文件夹储存位置的映射 |
VNC_PASSWD=12345678 | 可以自己设置密码,用于连接docker的远程桌面 |
COOLQ_ACCOUNT=123456 | 登录的机器人的QQ号 |
运行命令以后,当看到[CQDaemon] Started CoolQ
即为运行成功。
这时候访问http://你的服务器IP:你的端口
即可看到noVNC登陆,输入刚刚设置的VNC密码即可登陆VNC看到docker远程桌面。如果访问不成功的话, 可以看后面的 0x04常见问题:
然后就是登陆你的机器人QQ了
待会可能会出现这个提示
选择拒绝本次网页验证
即可
登上以后可以看到自己机器人QQ的头像,会以悬浮窗的形式出现。
右键悬浮窗以后就会有各种功能,悬浮窗默认显示消息速度,也可以自行设置显示什么。
如果不小心把这个显示悬浮窗的对勾给勾掉的话,也可以通过右键点击这个蓝色的圈来替代悬浮窗。
0x03 安装插件
社区里面下载到的插件大都是cpk文件。
将下载到的插件存放于/coolq/app/文件夹内即可。
我尝试了一下自带的图灵机器人插件,对话什么的体验都挺棒,可惜只能免费体验3天。
安装CQHTTP核心插件
有一个插件名为CQHTTP,这应该算是一个核心插件吧,有了它就可以自己开发各种插件了,它提供较为全面的API,包括私聊、群聊、加好友、群踢人、群禁言等等等等…
将其放到/coolq/app/文件夹以后来到docker远程桌面进行启用。
右键悬浮窗-应用管理-找到HTTP API-启用。
启用以后会在/coolq/data/app/io.github.richardchien.coolqhttpapi/config/
文件夹内生成你登陆的QQ号.json
文件。
编辑该文件,在"post_url"
一项后面填入http://127.0.0.1:你前面设置的HTTP API的端口(默认5700)
。
以我前面设置的 -p 5700:5700为例,那么我填好后的形式应该为"post_url": "http://127.0.0.1:5700"
填好以后保存退出。
其API文档如下:
可以写个py脚本测试一下。
1 | #coding:utf-8 |
发现返回<Response [200]>
,而且我的大号收到了来自QQ机器人的hhhhh
消息,这个应该是需要加了好友才行。
其他API也可以自行测试。
不过发群聊有可能会因为刚挂到服务器,算是异地登录而失败,即便返回的也是200状态码,但依然收不到消息。
其他插件
粗略逛了逛社区,发现几个还是挺不错的免费插件
还有挺多宠物系统、还有一些游戏系统,自行发现吧。
0x04 常见问题
浏览器中访问docker远程桌面失败
问题描述:
访问http://你的服务器IP:你的端口
失败,但是通过localhost是可以正常访问的
问题解决方案:
由于通过localhost可以正常访问,说明不是部署问题,那么考虑到应该是服务器的端口是禁止访问的。
以阿里云服务器为例:可以在控制台打开对应端口,具体操作看下面参考链接
安装好的插件在docker远程桌面显示不全
问题描述:
安装好的插件,在docker远程桌面显示不全,总是缺右侧的一部分,导致许多插件无法正常使用(无法按到如 保存配置 等按钮),把插件往左拖拽依然显示不全。
比如 smile娱乐 插件:
只能显示到这样,拖拽到左侧也依然只能显示这些。
而完整的插件界面应该是这样的。
这样就导致这个插件无法保存、无法关闭(只能靠重启docker…555)而影响了插件的正常使用。
问题解决方案:
这个问题困扰我好几天了,各种Google也无果,酷Q社区的求助帖也看了好多,也没有对应症状。。。而且酷Q社区发求助帖需要权限…
直到昨天我突发灵感,会不会和docker远程桌面的分辨率有关呢?这个远程桌面分辨率确实有点小。
按照灵感,我通过命令行的形式设置了分辨率
在docker远程桌面启动命令行
通过命令xrandr
查看支持的分辨率。
然后随便选一个吧,1024×768应该就可以,不需要太大。
由于1024×768是第一个,所以xrandr -s 11
来选择第一个分辨率。
设置好分辨率以后,再打开那个插件的配置界面,就能完整显示了!
0x05 写在最后
杂谈
个人觉得开发一些插件用来完善自己的机器人是非常有趣的,可能我还是爱开发更多一点吧。
虽然这只是一个QQ机器人,跟ATRI这种高性能机器人还差得远呢。
但ATRI有可能是有生之年系列,或者有生之年世上已经有这样的机器人被生产制造出来了,但我可能买不起555
科技飞速发展,谁又能预料到未来是什么模样的呢?
也正是这种未知与神秘,才让生活充满了乐趣吧。