介绍
2021-01-18 爆出 QQ 事件,但是一部分人的生活中没办法离开QQ,毕竟是国内使用率仅次于 WeChat 的聊天软件。网上第一时间出现了好几种基于火绒
的防扫描办法,但是终归治标不治本,你耐不住扫描更多和其不相干的文件。与其留着一颗定时炸弹,但是又不能彻底抛弃,不如换个办法。EFB-QQ-Slave,基于EH Forwarder Bot的 QQ 从端,转发 QQ 信息到 Telegram。我之前写了EFB WeChat Slave Channel的相关部署教程,今天就来说说 QQ 的部署指南(防 QQ 指南)。
相关阅读:QQ 正在尝试读取你的浏览记录 [原创]关于 QQ 读取 Chrome 历史记录的澄清
官方项目
-
efb-qq-slave 实现项目
-
ehForwarderBot 主要项目
-
Onebot Kotlin 实现插件
-
mirai-console QQ管理端
-
mirai QQ主要项目
部署教程
本项目不像 EFB WeChat Slave 有先决限制条件,任何人只要 QQ 可以正常使用,均可以使用。
-
linux 服务器一台
-
windows 桌面机一台(需要用来登录QQ)
-
折腾的心(马化腾司马) 一颗
Telegram bot 申请
如果之前有部署过 EFB WeChat Slave 的孩子们,就不需要这一步了,可以直接跳过。
作为一款 telegram 的项目 肯定是通过 bot 来实现控制和使用的(大误
-
获取 个人 telegram 账号 id 在 telegram 中搜索 @WooMaiBot 点我直达 发送
/id
其中的
chat
下方的第一个id
内的数字为 个人 id - 在 telegram 搜索 Botfather ([或者点我直达](https://t.me/BotFather)) 和他对话 发送一下内容 一行一次对话
/start /newbot
-
这时候给你的 bot 起个名字吧 比如说
squirrelWeChat
-
接着他会让你给 bot 起一个id (第一个只是显示名称 可以修改 id 不可修改 唯一) 必须以 bot 作为结尾比如说
squirrelWeChat_bot
- 这个时候会就出现 api 把那一串 数字:英文 123123123:asdfasdf 的保存下来或者不保存继续
-
因为更好的使用群组聊天功能,所以需要开启允许将 Bot 添加进群组,给机器人发送指令
/setjoingroups
选择enable
设置 Bot 隐私权限,默认 Bot 可能无法接收非/开头的消息,所以需要设置隐私权限。向该机器人发送指令
/setprivacy
选择刚刚创建的机器人 选Disable
。 -
最后你的 bot 怎么能没有命令呢。发送
/setcommand
然后在发送以下内容:help - 显示命令列表. link - 将远程会话绑定到 Telegram 群组 chat - 生成会话头 recog - 回复语音消息以进行识别 info - 显示当前 Telegram 聊天的信息. unlink_all - 将所有远程会话从 Telegram 群组解绑. update_info - 更新群组名称和头像 extra - 获取更多功能
到这一步 telegram bot 的设置就完成了
头像的话,自己找一个就行~
ubuntu/debian 部署教程
首先,你得有一台装有 ubuntu/debian 的小鸡(其实 openwrt 都能跑貌似,但是我不会…)然后安装依赖 (我这个教程依赖装的有点多.为了确保不报错?
-
请确保你有 root 权限 并执行一下代码来安装依赖
sudo su apt full-upgrade -y apt install git nano python3 python3-pip python3-setuptools python3-yaml ffmpeg libcairo2-dev libcairo2 openjdk-11-jre -y python3 -m pip install --upgrade pip python3 -m pip install --upgrade Pillow
-
现在安装主体
pip3 install ehforwarderbot pip3 install efb-telegram-master pip3 install -U git+https://github.com/milkice233/efb-qq-slave
-
再多一嘴,如果你爱折腾,喜欢最新版(功能多
bug可能也多修复可能也快~
可以用一下代码安装 开发版apt install git -y pip3 install git+https://github.com/blueset/ehforwarderbot.git pip3 install git+https://github.com/ehForwarderBot/efb-telegram-master pip3 install -U git+https://github.com/milkice233/efb-qq-slave
到这一步 相关依赖就安装完成了
CentOS 部署教程
内容大差不差的,就是依赖名字的问题,剩下的照抄ubuntu、debian的内容即可。
yum update
yum install python3 python3-pip python3-pil python3-setuptools python3-yaml python3-requests ffmpeg git cairo cairo-devel nano java-11-openjdk -y
Linux 配置文件
接着是配置文件,需要新建两个文件夹,用来存放配置文件,执行以下代码
mkdir -p /root/.ehforwarderbot/profiles/default/
mkdir -p /root/.ehforwarderbot/profiles/default/blueset.telegram
mkdir -p /root/.ehforwarderbot/profiles/default/milkice.qq
default/config.yaml 配置文件
修改第一个配置文件,直接粘贴进入编辑模式:
nano /root/.ehforwarderbot/profiles/default/config.yaml
个人配置文件中,直接复制粘贴进去:
master_channel: blueset.telegram
slave_channels:
- milkice.qq
#这一部分为插件,更多功能请查看文档
目前 QQ 不支持撤回,也不支持修改。更多内容请看常见问题
default/blueset.telegram/config.yaml 配置文件
修改第二个配置文件,直接粘贴进入编辑模式:
nano /root/.ehforwarderbot/profiles/default/blueset.telegram/config.yaml
最主要的分为三个部分
-
token:上边的api
-
admins:上边的个人id
-
flags:实验性功能
修改token
、admins
,直接粘贴进去修改 crtl+x
退出并保存
token: "" #在""中间 填入你之前找botfather申请的api
admins:
- 1234 #把数字修改为你的个人 telegram id 在上方获取过
#- 1279136259 #如果,想要多个账号使用同一个微信,可在这里加入第二个id或者多个id,去掉开头的#
flags:
send_image_as_file: true
#将所有图像消息作为文件发送,以防止主动报文的图像压缩.需要更多的流量,可以关闭,改为false
default_media_prompt: text
#图片/视频/文件消息没有标题时的占位符文本.
因为 telegram 对于中文的搜索支持,简直相当于没有,所以我开启了最后那个功能。这样在检索某人发送的同一类型的内容时,会变得十分方便,之所以不使用图像模式,是因为 telegram 的搜索对 emoji 的支持也不是很友好。
default/milkice.qq/config.yaml 配置文件
示例配置文件如下:
Client: CoolQ # 指定要使用的 QQ 客户端(此处为CoolQ)
CoolQ:
type: HTTP # 指定 efb-qq-slave 与 酷Q 通信的方式 现阶段仅支持HTTP
access_token: ac0f790e1fb74ebcaf45da77a6f9de47
api_root: http://127.0.0.1:5700/ # 酷Q API接口地址/端口
host: 127.0.0.1 # efb-qq-slave 所监听的地址用于接收消息
port: 8000 # 同上
is_pro: true # 若为酷Q Pro则为true,反之为false
air_option: # 包含于 air_option 的配置选项仅当 is_pro 为 false 时才有效
upload_to_smms: true # 将来自 EFB主端(通常是Telegram) 的图片上传到 sm.ms 服务器并以链接的形式发送到 QQ 端
目前只支持http模式,access_token
/port
可以修改为任意,但是请和plugins/setting.yml
中保持一致,下边会说。
下载 mirai-linux 模块,获取 device.json
重点,如果你的服务器不是在本地,那么请不要使用服务器获取 device.json。会导致下列报错,解决办法请看Windows操作指南如果服务器在本地可以忽略本提示
Login failed: Mirai 无法完成滑块验证. 使用协议 ANDROID_PHONE 强制要求滑块验证, 请更换协议后重试
可以从阿里云云效Maven查询最新模块,直接上下载地址(截至2021-01-18更新),下载三个java包,直接执行下列代码:
wget -P 123 https://maven.aliyun.com/repository/public/net/mamoe/mirai-console-terminal/2.0.0/mirai-console-terminal-2.0.0-all.jar
wget -P 123 https://maven.aliyun.com/repository/public/net/mamoe/mirai-console/2.0.0/mirai-console-2.0.0-all.jar
wget -P 123 https://maven.aliyun.com/repository/public/net/mamoe/mirai-core-all/2.0.0-dev-2/mirai-core-all-2.0.0-dev-2-all.jar
进入123
目录,执行java -cp "./*" net.mamoe.mirai.console.terminal.MiraiConsoleTerminalLoader
,如下图输入login QQ号码 QQ密码
进行登录,并把回执的网址粘贴到电脑浏览器进行验证登录。
登录成功后,立即退出,123
目录中出现device.json
文件,保存好后边要用到。
Windows 操作指南
java 环境
根据教程安装javaWindows 10 配置Java 环境变量选择相应版本安装并配置环境变量。之后有时间我在写一下这一部分的教程。
下载 mirai-windows 模块
可以从阿里云云效Maven查询最新模块,直接上下载地址(截至2021-01-18更新),下载三个java包:
https://maven.aliyun.com/repository/public/net/mamoe/mirai-console-terminal/2.0.0/mirai-console-terminal-2.0.0-all.jar
https://maven.aliyun.com/repository/public/net/mamoe/mirai-console/2.0.0/mirai-console-2.0.0-all.jar
https://maven.aliyun.com/repository/public/net/mamoe/mirai-core-all/2.0.0-dev-2/mirai-core-all-2.0.0-dev-2-all.jar
登录QQ
将下载的三个java包放在任意一个文件夹,随便一个非中文目录最好,例如123
。并在地址栏输入powershell.exe
之后回车运行。
在打开的powershell
中输入下列代码来启动 mirai
java -cp ./* net.mamoe.mirai.console.terminal.MiraiConsoleTerminalLoader
并在命令行中输入 login qq号码 qq密码
如下图:
此时会出现报错,如下图,点击设备锁验证
,选择任意认证方式验证。验证成功后在小框 回车返回登录界面。
可以关闭powershell
,重点此时123
目录下多出一个device.json
文件,保存好后边要用。windows 操作到此结束。
device.json 生成
有个项目,我没用过,提供个参考,生成device.json。
efq 部署教程
修正单独使用 kotlin
,直接使用jre
即可。
部署 OneBot kotlin
验证java
是否可用,输入下列代码:
java -version
如图便是正确配置环境变量,版本不一定一样。
接着下载OneBot kotlin,执行下列代码:
wget https://github.com/yyuueexxiinngg/onebot-kotlin/releases/download/0.3.4/onebot-kotlin-0.3.4-all.jar
在同一目录下,运行java -jar onebot-kotlin-0.3.4-all.jar
不要登录,直接退出!,将上边获取到的device.json
,放入当前目录下config/OneBot/
,此时文件夹中有两个文件,分别为device.json
/settings.yml
。
如果你之前的device.json
是没有变更位置那么一句命令直接复制过来:cp ~/123/device.json ~/config/OneBot/device.json
。
config/OneBot/settings。yml 配置文件
修改settings.yml
内容为下列:
proxy: ''
bots:
此处修改为你的qq号码:
cacheImage: false
cacheRecord: false
heartbeat:
enable: false
interval: 15000
http:
enable: true
host: 127.0.0.1
port: 5700
accessToken: ac0f790e1fb74ebcaf45da77a6f9de47
postUrl: 'http://127.0.0.1:8000'
postMessageFormat: array
#这里修改为array
secret: ''
# 上报超时时间, 单位毫秒, 须大于0才会生效
timeout: 0
ws_reverse:
- enable: false
postMessageFormat: string
reverseHost: 127.0.0.1
reversePort: 8080
accessToken: ''
reversePath: '/ws'
reverseApiPath: '/api'
reverseEventPath: '/event'
useUniversal: true
useTLS: false
reconnectInterval: 3000
ws:
enable: false
postMessageFormat: string
wsHost: 0.0.0.0
wsPort: 6700
accessToken: ''
同 accessToken 修改为一致,保存并退出。
启动 efq
返回之前保存onebot-kotlin-0.3.4-all.jar
的目录,再次运行java -jar onebot-kotlin-0.3.4-all.jar
,正常登录QQ,此时应该可以直接登录,而不会提示报错。
再次打开一个ssh窗口,运行ehforwarderbot
,查看登录情况,正常应该无报错。
使用介绍
-
在终端中 输入
ehforwarderbot
进行登录 -
接着和你 之前申请的bot 对话 发送
/start
-
/chat
为 和谁对话 具体使用为/chat 松小鼠
或/chat 松小
此命令会搜索最近联系人中带有相关字符的联系人 因为加载的问题 长时间不联系的人可能不太好找 -
/link
为 绑定对话到某个群组 你可以新建群组来绑定 群聊/私聊 到特定群组 具有搜索功能同上条 具体使用为/link 松小
之后选择绑定或者静音 记着要给 bot 管理员权限 -
/rm
为 撤回某条消息 和微信的规则是一样的 2 分钟内 具体使用为回复要撤回的内容 发送/rm
-
/extra
主要为掉线重新登录 或者 强制刷新对话列表使用 -
/update_info
为当前的群组更新 微信信息 在群组中使用 可以更新群聊头像为群组成员 群组名称为微信群聊名称
到此就可以退出运行的 efb ctrl+c
然后输入 回车
退出 实在不行多按几次
为什么???你总不能一直开着终端吧?要是网络不稳定 efb 就关闭了 这个时候 往下看吧
进程守护 后台运行
进程守护 可以确保 efb 在后台运行
-
直接上代码
cd /etc/systemd/system/ nano efb.service
-
进入编辑界面后 复制粘贴下列代码
ctrl+x
保存退出[Unit] Description=ehforwarderbot After=network.target [Install] WantedBy=multi-user.target [Service] Type=simple WorkingDirectory=/root ExecStart=/usr/local/bin/ehforwarderbot Restart=always
此处需要注意 如果想要运行多个 efb 查看 文档 并修改守护文件
-
输入
nano qq.service
编写 qq 守护,并输入下列内容注意文中修改的地方[Unit] Description=mirai qq After=network.target [Install] WantedBy=multi-user.target [Service] Type=simple WorkingDirectory=你onebot-kotlin-0.3.4-all.jar所在的位置 ExecStart=这个地方输入which java获取 然后加上 onebot-kotlin-0.3.4-all.jar --account 123456789 --password 123456 Restart=always
更多启动选项请看 接受的参数
-
接着 输入以下代码启动 efb、qq和开机自启 efb、qq
#重新加载进程守护 systemctl daemon-reload #进程守护 启动qq systemctl start qq.service #进程守护 启动efb systemctl start efb.service #进程守护 开机自启efb systemctl enable efb.service #进程守护 开机自启qq systemctl enable qq.service
-
想要关闭 或者 查看当前状态 可以使用一下代码
#进程守护 停止efb systemctl stop efb.service #进程守护 关闭开机自启efb systemctl disable efb.service #查看当前 efb 状态 systemctl status efb.service #实时查看 efb 守护日志 journalctl -f -u efb.service
常见问题
分离 WeChat 和 QQ
新建配置文件,分别启动不同的插件
master_channel: blueset.telegram
slave_channels:
- milkice.qq 这个地方,每个配置文件写的不一样就行了
- blueset.wechat 这个地方,每个配置文件写的不一样就行了
#这一部分为插件,更多功能请查看文档
efb 讨论相关
Github Discussions (论坛/社区) 主要 讨论社区
Telegram 频道群组入口请从此处进入
赞助/支持 EFB
mirai 讨论相关
目前支持的协议
消息相关
- 文字
- 原生表情
- 商城表情
- 戳一戳
- 图片 (自定义表情)
- XML,JSON 等富文本消息
- 长消息(5000 字符 + 50 图片)
- 引用回复
- 合并转发
- 撤回
- 提及群员
- 提及全体成员
- 语音
- 闪照
- 撤回群员消息
- 自定义消息
群相关
- 群列表
- 成员列表
- 群员权限
- 禁言
- 全体禁言
- 群公告管理
- 群设置(自动审批、入群公告、坦白说、成员邀请、匿名聊天)
- 处理入群申请
- 移除群员
好友相关
- 完整好友列表
- 处理新好友申请
- 删除好友
其他客户端
- 同步其他客户端的消息
- 向其他客户端发送消息
不会支持的协议
- 金钱相关,如点赞、收付款
- 敏感操作,如主动添加好友、主动加入群、主动邀请好友加群
- 安全相关,获取账号登录凭证(token,cookie 等)
缺点
efq 的项目是基于 Android 的 api,所以无法手机同时登录。
- 本文链接:https://blog.shzxm.com/2021/01/18/%E8%BD%AC%E7%A7%BBqq%E5%88%B0telegram/
- 版权声明:本博客所有文章除特别声明外,均默认采用 许可协议。
若没有本文 Issue,您可以使用 Comment 模版新建。
GitHub IssuesGitHub Discussions