QQ机器人


=Start=

缘由:

整理一下最近做的QQ机器人相关的资料,方便需要的同学参考。

正文:

参考解答:
1、酷Q

以前:基于 SmartQQ 协议(2019年1月3日该协议已废弃);
现在:基于 手机QQ 协议;

以前的很多QQ机器人都是通过 WebQQ(SmartQQ协议) 和QQ进行的交互(在GitHub上可以搜到很多),但当2019年1月3日该协议废弃之后,现在还可用的基本都是基于酷Q来实现的QQ机器人。

酷Q 扮演着「无头 QQ 客户端」的角色,它进行实际的QQ消息、通知、请求的接收和发送,更多功能需要在它的基础上安装“应用/插件”来实现。接下来我们介绍一个简单易用的酷Q插件。

2、CoolQ HTTP API 插件

此插件通过 HTTP 或 WebSocket 对酷 Q 的事件进行上报以及接收请求来调用酷 Q 的 DLL 接口,从而可以使用其它语言编写酷 Q 插件。支持 Windows 7 和 Windows Server 2008 及更新版本,也可以运行在 Wine、Docker。

该插件起到的主要是接收、解析、转发QQ消息的作用。

3、简单使用样例

情形一:Windows系统

①下载——去「[发布]酷Q Air」页面下载酷Q Air;

②解压——下载完请解压后再从解压出来的文件中打开主程序,请不要直接从解压软件中打开。

③登录QQ——初次使用时软件会下载需要的程序文件,更新完成后,AIR版会直接进入登录界面,PRO版会进入提示授权界面,如果你已经有授权码,复制后粘贴到授权栏就可以进入登录界面了。

安装CoolQ HTTP API 插件——先到 Releases 页面下载最新的 cpk 文件放到 酷Q 的 app 文件夹;(在登录成功后会看到你机器人的头像)右键单击该头像以显示酷Q的主菜单,然后在其中的「应用管理」处可以在此进行应用的管理,启用对应的插件即可。

注意!如果 酷Q 启动时报错说插件加载失败,或者系统弹窗提示缺少 DLL 文件,则需要安装 VC++ 2017 运行库一定要装 x86 也就是 32 位版本!),如果你的系统是 Windows 7 或 Windows Server 2008、或者安装 VC++ 2017 运行库之后仍然加载失败,则还需要安装 通用 C 运行库更新,在这个链接里选择你系统对应的版本下载安装即可。如果此时还加载失败,请尝试重启系统。

接收/发送QQ消息——在启用插件后,它将开启一个 HTTP 服务器来接收请求,默认监听 0.0.0.0:5700,首次启用会生成一个默认配置文件,在 酷Q 的 data\app\io.github.richardchien.coolqhttpapi\config 文件夹中,文件名为 <user_id>.json<user_id> 为登录的 QQ 号),使用 JSON 格式填写。关于配置项的说明,见 配置

  • 接收。酷Q 收到的消息、事件会被 POST 到配置文件中指定的 post_url,为空则不上报。
  • 发送。通过 http://192.168.1.123:5700/ 即可调用 酷Q 的函数,例如 http://192.168.1.123:5700/send_private_msg?user_id=123456&message=你好,注意这里的 192.168.1.123 要换成你自己电脑的 IP,如果在本地跑,可以用 127.0.0.1user_id 也要换成你想要发送到的 QQ 号。具体的 API 列表见 API 描述。如果需要使用 HTTPS 来访问,见 HTTPS

情形二:Linux/Mac系统

因为酷Q是Windows上的一个应用,所以可以在Windows系统上运行会比较简单直接。但借助于 Docker 我们也可以在大部分操作系统下使用最新版本的 酷Q 。(不过要注意的是:由于 wine 技术原理为 Windows 系统,实现与原生系统尚有差距,部分应用运行或有兼容性问题。

①先安装docker

②在安装 docker 后,在命令行中键入以下命令下载 酷Q Docker 镜像:

docker pull coolq/wine-coolq

下载后,在任意目录创建一个空文件夹,用于持久化存放 酷Q 数据:

mkdir /root/coolq-data # 任意路径均可

然后运行 酷Q 镜像:
docker run -ti –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

其中部分参数根据自己的需求替换,参见下表:

参数含义参数示例
远程监听端口8080
数据存放位置/root/coolq-data
远程访问密码12345678
机器人帐号123456

运行如果没有报错,则说明已启动成功。此时,在浏览器中访问 http://你的服务器IP:你的端口 即可看到远程操作登录页面,输入密码,即可看到 酷Q Air 的登录界面啦。 在登录后,右键点击悬浮窗 -> 昵称 -> 勾选「自动登录」,即可保证 酷Q 能自动登录。 

【查看运行状况】

docker logs coolq

【启动/停止服务】

docker start coolq
docker stop coolq

③安装CoolQ HTTP API 插件 ④接收/发送QQ消息  在本地起一个简单的HTTP Server,监听在配置文件中设置的post_url地址,就可以在本地查看QQ收到的消息了。一个简单的Python Flask HTTP Server如下: 

#!/usr/bin/env python
# coding=utf-8

from flask import Flask, render_template, request

app = Flask(__name__)

@app.route("/", methods = ['POST','GET'])
def idx():
    if request.method == "POST":
        print( 'Headers: {0}'.format(request.headers) )
        print( 'Data: {0}'.format(request.get_data()) )
        return 'POST'

    if request.method == "GET":
        print( 'Headers: {0}'.format(request.headers) )
        print( 'Data: {0}'.format(request.get_data()) )
        return 'GET'

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5702, debug=True)
参考链接:

=END=

,

《“QQ机器人”》 有 7 条评论

  1. 丢失msvcp140.dll,msvcp110.dll问题解决
    https://blog.csdn.net/lhh08hasee/article/details/79270949
    `
    windows 2008 无法启动此程序 因为丢失 msvcp140.dll

    所有msvcp类文件都是微软VC++运行库的文件,140版本号代表是VC++2015的文件,缺少这个就安装VC++2015一般即可解决;

    如果是32位程序出现这个提示就安装x86版VC++2015,64位程序就安装x64版;
    安装哪个版本跟你的系统是否64位版并没有关系!是要看调用VC++的那个程序本身是32位还是64位!比如64位的系统安装了32位的游戏,就需要相应安装32位的VC++。

    如果不知道运行的程序是32位还是64位可以两个版本都装,不影响。
    `

    Visual C++ Redistributable for Visual Studio 2015
    https://www.microsoft.com/en-US/download/details.aspx?id=48145
    https://www.microsoft.com/zh-cn/download/details.aspx?id=48145

    最新Apache安装丢失VCRUNTIME140.DLL的解决办法
    https://my.oschina.net/chinacion/blog/647641

  2. A complete and graceful API for Wechat. 微信个人号接口、微信机器人及命令行微信,三十行即可自定义个人号机器人。
    https://github.com/littlecodersh/ItChat

    Python网页微信API
    https://github.com/liuwons/wxBot

    微信公共帐号自动回复机器人 A Node.js robot for wechat.
    https://github.com/node-webot/weixin-robot

    基于 php 7 的 web 微信机器人(The best wechat robot base on web api!)
    https://github.com/Hanson/vbot
    http://create.hanc.cc/vbot/

  3. Python实现微信防撤回
    https://mp.weixin.qq.com/s/3uhEIslW4kvCVhBsAFNXFQ
    `
    1.微信撤回消息实现原理
    我们先来了解一下微信撤回消息的原理:
    其实微信撤回消息原理就是操作者在点击撤回的时候,客户端会自动发一条系统消息:“xxx撤回了一条消息”,然后对方app端收到消息后解析,替换原消息,改个显示的样式即可

    2.找到被撤回消息
    根据抓取正常消息和撤回消息的内容我们发现规则:撤回消息中会包含之前被撤回的那条消息的msgid,那我们只要找到之前那条消息就可以了,而wxpy模块默认为我们缓存了最近的200条消息,所以我们只要遍历这些历史消息然后比较msgid就可以找到被撤回的那条消息啦!
    如果你微信消息太过频繁,2分钟之内消息数量超过200,则可以将max_history设置大些。
    `
    https://github.com/pig6/wxrobot
    https://wxpy.readthedocs.io/zh/latest

  4. 一键提取微信聊天记录,生成HTML、Word文档永久保存,还能生成微信年度聊天报告
    https://mp.weixin.qq.com/s/d7K6np7wd3kPLONKikGe5Q
    `
    不知道生活中你有没有遇到过这种情况,聊天记录不完整,有的在手机上,有的在电脑上,搜索起来很烦。那有没有一种办法可以把微信聊天记录统一呢?当然是有的。下面,就让我们一起来看一下怎么操作。

    注意要先把微信聊天记录从手机迁移到电脑哟。迁移时要保证电脑和手机所处同一个局域网。操作步骤:手机微信->我的->设置->聊天->聊天记录迁移与备份->迁移-> 迁移到电脑微信(迁移完成后重启电脑微信让它重新加载聊天记录)

    安卓: 手机微信->我->设置->聊天->聊天记录迁移与备份->迁移-> 迁移到电脑微信(迁移完成后重启微信)否则
    iOS: 手机微信->我->设置->通用->聊天记录迁移与备份->迁移-> 迁移到电脑微信(迁移完成后重启微信)否则
    迁移而不是备份、迁移而不是备份、迁移而不是备份;手机微信发起迁移功能、手机微信发起迁移功能、手机微信发起迁移功能;迁移完成后重启微信、迁移完成后重启微信、迁移完成后重启微信,重要的事情说三遍
    `

    我把我和我老婆从认识到现在的聊天记录跑了个词云出来
    https://www.v2ex.com/t/999939

    https://github.com/LC044/WeChatMsg
    https://github.com/fuqiuai/wordCloud
    https://github.com/silsuer/wordcloud

    微信聊天记录只是备份就太无聊了,一键生成属于自己的词云图,让我们玩点有意思的
    https://mp.weixin.qq.com/s/kS1De6DpNqX_4M_0WTkdhA
    `
    # 原理
    制作其实是用了Python的wordcloud库,把解码出来的微信聊天记录,当成数据文本,跑了一遍,根据统计的词频,生成词云图。
    `

  5. 获取微信账号信息(昵称/账号/手机/邮箱/数据库密钥/wxid);PC微信数据库读取、解密脚本;聊天记录查看工具;聊天记录导出为html(包含语音图片)。支持多账户信息获取,支持所有微信版本。
    https://github.com/xaoyaoo/PyWxDump
    `
    更新计划【由于家里有事,这些计划(除8、9、10)将会在12.30号前统一更新】

    1.每个人聊天记录分析,生成词云。
    2.分析每个人每天的聊天数量,生成折线图(天-聊天数量)
    3.分析不同的人的月聊天数量,年聊天数量,生成折线图
    4.生成年度可视化报告
    5.创建GUI图形界面,方便使用
    8.增加企业微信的支持
    9.增加获取实时聊天记录的功能
    10.聊天记录关键字搜索 或者按时间点搜索列出所有的联系人记录就nice了
    11.增加好友的信息获取

    如有问题,请先查看:FAQ 是否有答案。

    # 利用场景

    1. 钓鱼攻击(通过钓鱼控到的机器通常都是登录状态)
    2. 渗透到运维机器(有些运维机器会日常登录自己的微信)
    3. 某些工作需要取证(数据库需要拷贝到本地)
    4. 自行备份(日常备份自己留存)
    5. 等等……………
    `

回复 hi 取消回复

您的电子邮箱地址不会被公开。 必填项已用*标注