MENU

Tg收发微信——EFB2(官方安装方法)

April 2, 2021 • Read: 471 • 技术

Tg 收发微信——EFB2(官方安装方法)

1.关于以前写的一篇

上一篇文章:利用 Telegram 收发微信——EFB2.0 中使用的是 Docker 方法安装,其实也没有多么的方便,而且由于今晚帮一位哥们安装,走 docker 安了一遍到最后报错如下

老方法报错

前面一堆报错,最后关键是:

"catbaron.sticker2img"is not foung

搜索后,解决方案也有,戳这:Sticker2Img: A middleware for EFB),但是前一篇采用 docker 方式安装后,再进行上面 github 里的操作仍然不行。于是干脆直接找相关官方文档来看,毕竟也好长时间没折腾了。其实整个过程意外的简单,而且后续更新升级也容易。

一些简介性内容就直接搬以前的了。优点和缺点我会讲的更详细一些。

2.简介

2.1EH Forwarder Bot(EFB)

EH Forwarder Bot(EFB) 是一个可扩展的开源聊天平台隧道 Bot 框架,目前支持在 Telegram 上收发微信、QQ、Facebook Message 信息,支持文字、语音、图片、视频、表情互通,虽有一些功能限制但可用性良好

简单来说,收发原理是:
Tg 端消息——Telegram bot —— EFB ——微信网页版 ≈ 微信——微信消息
TG 与微信之间并无联系,但使用了 TG 机器人(2.1)EFB 项目微信网页版(2.2),即可实现互通

2.1 TG 机器人

你可以把 Telegram bot 理解为 QQ 群中某些机器人,在群聊中他能实现入群审核、自动回复等,只不过我们要自己创建机器人,并使用而已(很简单,不复杂 ……)

2.2 关于微信网页版

由于手机 APP 及 PC 桌面版的大量使用,现在已经很少有人使用网页版了
本项目需要调用微信网页版,警告如下!警告如下!警告如下!(重要的事说三遍!)

微信会对使用第三方客户端登录微信网页版的用户实行封禁,就是无法再使用网页版登录网页版微信!根据经验微信账号较老的用户封禁率似乎不高。

PS:我的微信号大概是 2013 年创建的,目前使用 EFB 近三年无封禁


使用或考虑购买 VPS 以前,首先尝试登录微信网页版,扫码看是否会出现以下提示:

网页封禁

否则 ,当你买好 VPS,弄了半天,到最后终于扫码成功时出现以下提示,直接 GG(这也是我帮老哥鼓捣,自己最后折腾了好几次基础环境后,封禁提示才看到)

最后封禁


因此,网页版微信不同于 windows、mac、android 平板,如网页版被封禁,请默默关掉本页,并说一句:张小龙,sm 玩意儿

3.能实现的功能及优点

综合考虑微信的功能,对比 EFB 项目,其功能及优缺点如下:

3.1 功能

1.文字消息的收发
2.图片的收发
3.视频的读取(从 tg 发视频,对方收到的是文件)
4.语音的接收(从 tg 发语音,对方收到的是文件)
5.传送文件

3.2 优点

1.消息云同步,文字,语音,图片,视频,发送的链接,文件都可以保存在 tg 云端,这个,可是好的太多太多太多了,任何时候你都可以去翻翻某个群、某个好友以前给你发过的东西

消息云端

2.消息几乎无延迟,对比 Gcmformojo,tg 发消息很快,没有卡顿,就像你正常聊 tg 一样,也几乎没有消息发送失败的情况
3.耗电,明显优于微信毒瘤。tg 自带 gcm,如果你需要,可以不留 tg 后台,由 gcm 拉起通知
4.无需挂梯,以往 Gcmformojo 有的地区需要挂飞机才能收发,而 tg 自带一个代理功能,能够正常使用 TG 即可通过其代理收发微信
5.TG 支持的消息功能,将会“镜像”的同步于微信,比如~最近~ TG ~刚更新~的延迟、定时发送消息的功能

定时发送

6.tg 表情包支持,另外注意不要发送涉黄、政治敏感的表情包,避免被微信屏蔽或封禁

贴纸

7.公众号信息也能推送,而且 TG 自带应用内浏览器,也能方便的查看公众号推送的文章

8.多客户端支持,tg 支持客户端,如 mac os、ios、andorid、windows、linux,你完全可以用于取代微信各种版本。而且,tg 轻量速度快

9.分组功能,比如工作群可以全部收到 TG 的文件夹功能下,通过不同选项标签直接展示所有工作群消息

10.聚合聊天,emmm 如果你经常水在各种 tg 群的话,要转发个什么东西给微信的好朋友看,随手即可转达

11.消息静音设置,这可太方便了,某些特别吵的群,直接不通知,而某些群,需要午休的时候为了避免打扰到自己, 可以选择 tg 的“暂时屏蔽通知”功能,比微信简单粗暴的通知或不通知好太多了

自定义通知

3.3 缺点

1.语音通话、视频通话不支持,原因比较简单,微信利用自身 APP 实现,当然不能放到 TG 上实现,但是 TG 会发送一段文字,如:

微信团队: (不支持)
[Unsupported message, please check your phone.]

接收到这样的信息请及时打开手机微信查看是否有通话消息,有时还是会遗漏语音通话消息的

2.默认所有消息会通过你创建的 TG bot 发送给你,也就是你的好友 A,B,C 的消息都通过一个聊天窗口发送给你,刚开始会比较乱,但是通过 TG 的群组功能,可实现消息分流,但需要你手动创建群组 A,群组 B,群组 C 来分流消息

7.对方发来的定位信息能显示具体的地址和地图简略信息,但因为我国地图算法的加密,google 显示的当然不准确


那么,教程开始:

4.准备工作

1.一台能访问国外网站的 VPS 服务器,即要连通 Telegram(我目前在用 UFOVPS,稳定,香港双向 cn2 GIA,目前支持 国内支付渠道,如果有需要的可以用:我的推广链注册)(它是为了吸引用户,通过分享注册链的方式,如果你用我的链注册并充值 10 元以上,使用 30 天不退款,我会有一定佣金。算是对我的支持吧~)

2.手机搭建需要 Juice ssh,这款软件,链接: https://pan.baidu.com/s/1bCGWe6 密码: sm1p
(手机端的设置具体参考我另外一篇教程靠前部分:链接: https://pan.baidu.com/s/1E2BvTKdGej0lSlkEwNHO_g 提取码: xhg2)

3.windows 搭建需要 xshell,请自行上网搜索

4.Telegram,主体软件。play 商店或去 apkpure 搜索下载

5.系统使用 Ubuntu 18.04 x64

5.主体教程

参考的文档:

官方文档

ehForwarderBot 遇到的那些坑,作者的博客,感谢这位大佬,很详细了,安装过程几乎都是搬运的他的。简洁了一点而已,在他的原文里还指出了大量官方插件等文档


5.1 配置 TG 机器人阶段

5.1.1 获取 Bot Token

1.在 Telegram 里, 对 @botfather 说话: /newbot
2.按照要求给 Bot 取名
3.获取 Bot Token 安全原因: Token 必须保密(这串 token 要记好,待会要用
4.允许 Bot 读取非指令信息,对 @botfather 说话: /setprivacy, 选择 disable
5.允许将 Bot 添加进群组,对 @botfather 说话: /setjoingroups, 选择 enable
6.允许 Bot 提供指令列表,对 @botfather 说话: /setcommands, 输入以下内容

help - 显示命令列表.
link - 将远程会话绑定到 Telegram 群组
chat - 生成会话头
recog - 回复语音消息以进行识别
info - 显示当前 Telegram 聊天的信息.
unlink_all - 将所有远程会话从 Telegram 群组解绑.
update_info - 更新群组名称和头像
extra - 获取更多功能

(复制以上内容一次性发给 botfather)

5.1.2 获取 Telegram 账户 ID

再和另外一个机器人 @get_id_bot 对话(也是搜索得到这个机器人),点击 start 即可获得你的 Telegram ID,一串数字(Chat ID)。

至此,Telegram 的配置完成,我们得到两个重要东西:token、Telegram ID待会要用

形如:

token——123456789:ABCDEFG1ABCDEFG1ABCDEFG1

Telegram ID——987654321

5.2VPS 搭建

5.2.1 依赖环境安装
sudo su
apt full-upgrade -y
apt install python3 python3-pip python3-setuptools python3-yaml ffmpeg  libcairo2-dev libcairo2 nano -y
python3 -m pip install --upgrade pip
python3 -m pip install --upgrade Pillow
5.2.2 安装 efb 主体
pip3 install ehforwarderbot
pip3 install efb-telegram-master 
pip3 install efb-wechat-slave
pip3 install --upgrade Pillow
5.2.3 贴纸插件

确保你安装成功 libcairo2,把 tg 的贴纸发送到微信

pip3 install "efb-telegram-master[tgs]"

5.3 配置文件

mkdir 是新建文件夹语法,nano 保存退出是 ctrl+x

根目录下:

mkdir -p /root/.ehforwarderbot/profiles/default/
mkdir -p /root/.ehforwarderbot/profiles/default/blueset.telegram
5.3.1 配置 default/config.yaml

上面第一行代码,创建了/root/.ehforwarderbot/profiles/default/目录,还是在根目录下:

nano /root/.ehforwarderbot/profiles/default/config.yaml

粘贴以下内容:

master_channel: blueset.telegram
slave_channels:
- blueset.wechat
flags: 
  delete_on_edit: true
5.3.2 配置 default/blueset.telegram/config.yaml

面第二行代码,创建了/root/.ehforwarderbot/profiles/default/blueset.telegram 目录,还是在根目录下:

nano /root/.ehforwarderbot/profiles/default/blueset.telegram/config.yaml

粘贴并修改以下内容:

token: "" #在""中间 填入你之前找botfather申请的api
admins:
- 1234 #把数字修改为你的个人 telegram id 在上方获取过
#- 1279136259 #如果,想要多个账号使用同一个微信,可在这里加入第二个id或者多个id,去掉开头的#
flags:
  send_image_as_file: true
  #将所有图像消息作为文件发送,以防止主动报文的图像压缩.需要更多的流量,可以关闭,改为false
  animated_stickers: true
  #启用对动画贴纸的实验性支持启用对动画贴纸的实验性支持,该依赖已包含在教程依赖
  default_media_prompt: text
  #图片/视频/文件消息没有标题时的占位符文本.

一个样例:

token: "123456789:ABCDEFG1ABCDEFG1ABCDEFG1" 
admins:
- 123456789
flags:
  send_image_as_file: true
  animated_stickers: true
  default_media_prompt: text

5.3 启动

根目录下:

ehforwarderbot

此时,扫码要使用手机后置摄像头,截图并在相册里选择二维码的方式会遭遇微信提示不能登录

6.使用你的 EFB 机器人

6.1 简单用起来吧

  • 和你之前申请的 bot 对话 发送 /start

其余常用命令:

  • /chat 为 和谁对话
  • /link 为 绑定对话到某个群组

下面使用一个例子来说明(假设你有一名叫李 AB 的好友)

  1. 首先在 Telegram 中创建一个新的群组,就用李 AB 这个名字,然后将你的机器人邀请进来,群组创建完毕。
  2. 回到你的机器人对话中,将梁 AB 的微信好友单独作为 TG 中的聊天对话框,就输入 /link 梁 A(不必输全名,机器人会检索含有此关键字的所有好友,然后选择 link,选择你刚刚创建的 梁 AB 这个群组,成功后,以后这个叫梁 AB 的好友发来的信息不会在机器人那显示了,而是在这个群组)
  3. 常聊的几个人、工作群、公众号、不常看的公众号单独建 TG 群,使消息分流,其余不常用的,使用机器人窗口接收
  • /rm 为 撤回某条消息 和微信的规则是一样的 2 分钟内 具体使用为回复要撤回的内容 发送 /rm
  • /extra 主要为掉线重新登录 或者 强制刷新对话列表使用
  • /update_info 为当前的群组更新 微信信息 在群组中使用 可以更新群聊头像为群组成员 群组名称为微信群聊名称

6.2 偶尔发现没有消息推送了怎么办?

虽说 EFB 能保持数月不掉线
但为延长续航,我用空调狗等 APP 冻结了微信,但是手机版微信不能长期不上线,有时候手机关机没电太久,也会导致 EFB 掉线,这时就需要到 VPS 服务器控制端,手动重启服务器,一般就能重连

以及更新 efb,见下

6.3 后台、更新、及我遇到的问题

6.3.2 后台

进程守护 可以确保 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 查看 文档 并修改守护文件

  • 接着 输入一下代码启动 efb 开机自启 efb

    #重新加载进程守护
    systemctl daemon-reload
    #进程守护 启动efb
    systemctl start efb.service
    #进程守护 开机自启efb
    systemctl enable efb.service
  • 想要关闭 或者 查看当前状态 可以使用一下代码

    #进程守护 停止efb
    systemctl stop efb.service
    #进程守护 关闭开机自启efb
    systemctl disable efb.service
    #查看当前 efb 状态
    systemctl status efb.service
    #实时查看 efb 守护日志
    journalctl -f -u efb.service
6.3.2 更新
pip3 install --upgrade ehforwarderbot
pip3 install --upgrade efb-telegram-master 
pip3 install --upgrade efb-wechat-slave
6.3.3 我遇到的问题

在帮别人安装时,ehforwarderbot 后,出现报错如下:

root@xxx:~# ehforwarderbot
……省略……
Traceback (most recent call last):
  File "/usr/local/bin/ehforwarderbot", line 8, in <module>
    sys.exit(main())
  File "/usr/local/lib/python3.6/dist-packages/ehforwarderbot/__main__.py", line 330, in main
    conf = config.load_config()
  File "/usr/local/lib/python3.6/dist-packages/ehforwarderbot/config.py", line 61, in load_config
    raise ValueError(_("\"{}\" is not found.").format(i))
ValueError: "blueset.wechat" is not found.

最后一句表明主体 efb-wechat-slave 并没有安装好,尝试再次安装

root@vultr:~# pip3 install efb-wechat-slave
Collecting efb-wechat-slave
  Using cached efb_wechat_slave-2.0.4-py3-none-any.whl (216 kB)
Collecting itchat>=1.3.10
  Using cached itchat-1.3.10-py2.py3-none-any.whl (39 kB)
Requirement already satisfied: cjkwrap in /usr/local/lib/python3.6/dist-packages (from efb-wechat-slave) (2.2)
Requirement already satisfied: ehforwarderbot>=2.0.0 in /usr/local/lib/python3.6/dist-packages (from efb-wechat-slave) (2.1.0)
Requirement already satisfied: python-magic in /usr/local/lib/python3.6/dist-packages (from efb-wechat-slave) (0.4.22)
Requirement already satisfied: typing-extensions in /usr/local/lib/python3.6/dist-packages (from efb-wechat-slave) (3.7.4.3)
Requirement already satisfied: pyqrcode in /usr/local/lib/python3.6/dist-packages (from efb-wechat-slave) (1.2.1)
Requirement already satisfied: bullet in /usr/local/lib/python3.6/dist-packages (from efb-wechat-slave) (2.2.0)
Requirement already satisfied: pillow in /usr/local/lib/python3.6/dist-packages (from efb-wechat-slave) (8.1.2)
Collecting PyYaml>=5.3
  Using cached PyYAML-5.4.1-cp36-cp36m-manylinux1_x86_64.whl (640 kB)
Requirement already satisfied: requests>=2.22.0 in /usr/local/lib/python3.6/dist-packages (from efb-wechat-slave) (2.25.1)
Requirement already satisfied: ruamel.yaml in /usr/local/lib/python3.6/dist-packages (from ehforwarderbot>=2.0.0->efb-wechat-slave) (0.17.2)
Requirement already satisfied: pypng in /usr/local/lib/python3.6/dist-packages (from itchat>=1.3.10->efb-wechat-slave) (0.0.20)
Requirement already satisfied: idna<3,>=2.5 in /usr/lib/python3/dist-packages (from requests>=2.22.0->efb-wechat-slave) (2.6)
Requirement already satisfied: chardet<5,>=3.0.2 in /usr/lib/python3/dist-packages (from requests>=2.22.0->efb-wechat-slave) (3.0.4)
Requirement already satisfied: urllib3<1.27,>=1.21.1 in /usr/lib/python3/dist-packages (from requests>=2.22.0->efb-wechat-slave) (1.22)
Requirement already satisfied: certifi>=2017.4.17 in /usr/lib/python3/dist-packages (from requests>=2.22.0->efb-wechat-slave) (2018.1.18)
Requirement already satisfied: ruamel.yaml.clib>=0.1.2 in /usr/local/lib/python3.6/dist-packages (from ruamel.yaml->ehforwarderbot>=2.0.0->efb-wechat-slave) (0.2.2)
Installing collected packages: PyYaml, itchat, efb-wechat-slave
  Attempting uninstall: PyYaml
    Found existing installation: PyYAML 3.12
ERROR: Cannot uninstall 'PyYAML'. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.

最后一句红字报错,翻译过来就是,错误:无法卸载“ PyYAML”。 这是一个 distutils 安装的项目,因此我们无法准确确定属于该文件的文件,这只会导致部分卸载。

pip 10 不再卸载 distutils 软件包。所以降级到 pip 8.1.1,根目录下:

sudo -H pip3 install pip==8.1.1

再次安装 efb-wechat-slave,安装代码见 5.2.2 部分,即成功。

7.EFB 讨论相关

Github Discussions (论坛/社区) 主要 讨论社区

Telegram 频道群组入口请从此处进入