0%

EH Forwarder Bot 2 安装

EH Forwarder Bot 是一个消息框架,本文将主要讲 efb v2 微信 和 电报 互通功能。更详细的介绍 请查看 官方档案: efb 项目

以下这段引用来自 efb官方 微信模块 文档 [EFB wechat doc](https://github.com/blueset/efb-wechat-
slave/blob/master/README.rst) :

自 2016 年中旬以来,陆续有用户报告其微信网页版登录被腾讯封禁。 表现为用任何方式登录微信网页版提示「当前登录环境异常。为了你的账号安全,暂时不能登录 Web 微信。你可 以通过手机客户端或 Windows 微信登录」 或类似的提示。只 有不到半数的用户在封禁后通过各种方式恢复,但仍有相当数量的 用户还没有被解封。该封禁不影响其他客户端的登录。目前封禁的原因尚不明确。

如果你对网页版登录有要求的话,请慎用此 Channel。详细的相关信息请参见 项目 Wiki。

免责声明: 如果你使用本教程,搭建 efb ,使用中的任何 损失(包括账号被封禁等) 与 本文的作者无关。如果你不能确定是否能够承受后果,请不要使用本教程。如果你使用本教程 ,就是确定一切后果由您自己承担。如果不认同以上观点,请 不要使用本教程

因为我目前只用过 debian ubuntu contos fedora alpine 而 efb2 在 alpine 和 ubuntu17.10+ 上最容易安装,所以本篇教程将讲解 在 alpine 和 ubuntu 17.10 + 上使用 efb

这里将列出 efb 所需要的依赖

python3.6+
numpy
yaml
pillow
ffmpeg
libmagic
libwebp

ubuntu 的话 我将使用 vps 进行演示,alpine 我将使用 Docker ,理论上支持所有支持 docker 的操作系统

首先您需要有墙外的 vps 如果您们自行解决 telegram 的访问,那也可以用墙内的 linux 服务器。

首先申请 bot api

**以下这段信息引用自 efb 作者博客:[1a23](https://blog.1a23.com/2017/01/09/EFB-How-to-Send-
and-Receive-Messages-from-WeChat-on-Telegram-zh-CN/) **

Telegram Bot 是 EFB(Telegram 主端)的出口,也是呈献给用户的渠道。我们在这里使用了 Telegram 官方的 Bot API,
以最大化利用 Telegram Bot 所提供的各种便利功能。

要创建一个新的 Bot,要先向 @BotFather 发起会话。发送指令 /newbot 以启动向导。期间,你需要指定这个 Bot 的名称与用户名(用户名必须以 bot 结尾)。完毕之后 @BotFather会提供给你一个密钥(Token),妥善保存这个密钥。请注意,为保护您的隐私及信息安全, 请不要向任何人提供你的 Bot 用户名及密钥,这可能导致聊天信息泄露等各种风险。

接下来还要对刚刚启用的 Bot 进行进一步的配置:允许 Bot 读取非指令信息、允许将 Bot 添加进群组、以及提供指令列表。

发送 /setprivacy 到 @BotFather,选择刚刚创建好的 Bot 用户名,然后选择 “Disable”.

发送 /setjoingroups 到 @BotFather,选择刚刚创建好的 Bot 用户名,然后选择 “Enable”.

发送 /setcommands 到 @BotFather,选择刚刚创建好的 Bot 用户名,然后发送如下内容:

  1. link - 将会话绑定到

  2. chat - 生成会话头

  3. recog - 回复语音消息以进行识别

  4. extra - 获取更多功能

bot申请好后,请记住你的 Token ,然后到 @iloli_bot 处获取你的 ID 。 发送 /myid 给 @iloli_bot ,他会返回一串数字 ,那就是你的 ID

把你申请到的 Token 和你的 ID 保存好 接下来会用到

ubuntu 安装 efb 2

更新软件源

sudo apt update

安装 efb 2 所需依赖和本次教程所需的工具

sudo apt install -y python3 python3-pip python3-pil python3-setuptools python3-numpy python3-yaml python3-requests ffmpeg libmagic-dev libwebp-dev nano screen

pip 安装 efb2 主体和模块

sudo pip3 install ehforwarderbot efb-telegram-master efb-wechat-slave

到这里 efb2 就安装完成了

创建配置文件

创建 模块 配置文件夹 :

mkdir -p ~/.ehforwarderbot/profiles/default/

编辑模块配置文件 : nano ~/.ehforwarderbot/profiles/default/config.yaml 写入以下内容。内容写入后,按 CTRL + x 退出,退出的时候回提示是否保存,按 y 确认保存,然后再按一下回车退出nano。

master_channel: blueset.telegram
slave_channels:
- blueset.wechat 

创建 efb2 telegram 模块文件夹

mkdir -p ~/.ehforwarderbot/profiles/default/blueset.telegram

编辑 nano ~/.ehforwarderbot/profiles/default/blueset.telegram/config.yaml 写入以下内容。内容写入后,按 CTRL + x 退出,退出的时候回提示是否保存,按 y 确认保存,然后再按一下回车退出nano。

token: "12345678:1a2b3c4d5e6g7h8i9j"
# " "内替换为你在 @BotFather 处获得的 token
admins:
- 102938475
# - 后面的数字替换为你在 @iloli_bot 处获得的 id

保存退出就可以 运行 efb2了

开始登录

第一次在终端执行

ehforwarderbot

然后调整终端 大小,调整到能正常扫描二维码的大小后按 CTRL + c 键结束进程

最后执行

screen ehforwarderbot

然后就可以扫码登录了

登录后请直接关闭终端,退出终端的话会导致 screen 关闭

关闭终端后 如果想查看 日志 或结束进程 在终端输入 screen -r 进入 screen 。 屏幕上正在打印的就是日志 按 CTRL + d 键关闭进程

systemd 自启动

如果不想,每次启动都手动运行的话,建议设置一个自启动脚本运行 efb2,如果不是比较了解 systemd 的话建议使用 screen 启动 efb 。如果使用 ststemd 启动 efb 的话就不需要再使用 screen 了。如果已经使用了 screen 运行了 efb2 请先退出,然后再使用 systemd 运行 efb2

使用 sudo nano /etc/systemd/system/efb2.service 创建 efb 的自启动脚本,并写入以下内容 。内容写入后按 CTRL + x 退出 按 y 确认保存,按回车退出 nano。

[Unit]
Description=efb2 Service
After=network.target
Wants=network.target

[Service]
Type=simple
PIDFile=/var/run/efb2.pid
ExecStart=/usr/local/bin/ehforwarderbot
Restart=on-failure
User=root
# 用户修改为你创建配置文件的用户,这里我用的 root 用户
Group=root
# 用户组更改为 你创建配置文件的用户所在组,一般与用户同名 这里我用的 root 组

[Install]
WantedBy=multi-user.target

脚本创建好后就是启动 efb 登录了

启动 efb2:

sudo systemctl start efb2.service

打印日志文件

journalctl -f -u efb2.service

日志文件打印后我们打开最后一个网页链接,类似于这样 https://login.weixin.qq.com/qrcode/1a2b3c4d== 链接打开后,扫描网页上的二维码,然后确认网页登录。

登录成功后按 CTRL + c 键退出日志打印

然后设置 efb2 的开机自启动

sudo systemctl enable efb2.service

到这里 efb2 的自启动就设置完成了,下次服务器重启就不需要再手动运行 efb 2了。

Alpine 安装 efb 2

因为很少有 主机商提供 alpine 的镜像,所以我们需要用到 Docker 来运行 Alpine

Docker的安装 请参考 : docker 第三方中文教程

如果只是使用 efb2 的话,不用深入了解。安装好就行了。不 过我个人建议,学习一下。这样的话如果以后遇到,软件依赖 操作系统环境的问题能很轻松的解决。

进入正题

新建一个文件夹 用来装 Dockerfile :

mkdir alpine

进入文件夹:

cd alpine

新建一个文件并命名为 Dockerfile

vim Dockerfile

在终端输入 :set paste 按回车 ,再按 i 进入编辑模式 ,并且以下代码段复制进去 :

# A VM like docker container based on alpine  
# see https://hub.docker.com/r/phuslu/alpine/  
  
FROM alpine:3.7  
RUN \  
  apk update && \  
  apk upgrade && \  
  apk add --update --no-cache \  
    bash \  
    curl \  
    dcron \  
    dropbear \  
    iproute2 \  
    logrotate \  
    openrc \  
    openssh-client \  
    openssh-sftp-server \  
    openssl \  
    procps \  
    rsyslog \  
    tzdata \  
    xz && \  
  rm -rf /var/cache/apk/* && \  
  # add lastlog  
  touch /var/log/lastlog && \  
  # fake glibc for go binaries  
  mkdir /lib64 && \  
  ln -s /lib/libc.musl-x86_64.so.1 /lib64/ld-linux-x86-64.so.2 && \  
  # add /etc/init.d/timezone  
  echo $'#!/sbin/openrc-run\n\  
description="Sets the timezone of of the machine"\n\  
start()\n\  
{\n\  
        if test -n "$TZ" ; then\n\  
                ln -sf /usr/share/zoneinfo/$TZ /etc/localtime\n\  
                echo "$TZ" >  /etc/timezone\n\  
        fi\n\  
        return 0\n\  
}\n'\  
> /etc/init.d/timezone && \  
  chmod +x /etc/init.d/timezone && \  
  # hack openrc for docker  
  sed -i 's/#rc_sys=""/rc_sys="docker"/g' /etc/rc.conf && \  
  sed -i 's/^#\(rc_logger="YES"\)$/\1/' /etc/rc.conf && \  
  echo 'rc_provide="loopback net"' >> /etc/rc.conf && \  
  echo 'rc_env_allow="*"' >>/etc/rc.conf && \  
  sed -i '/tty/d' /etc/inittab && \  
  echo 'null::respawn:/usr/bin/tail -f /dev/null' >> /etc/inittab && \  
  sed -i 's/hostname $opts/# hostname $opts/g' /etc/init.d/hostname && \  
  sed -i 's/mount -t tmpfs/# mount -t tmpfs/g' /lib/rc/sh/init.sh && \  
  sed -i 's/cgroup_add_service /# cgroup_add_service /g' /lib/rc/sh/openrc-run.sh && \  
  rm -f /etc/init.d/hwclock \  
        /etc/init.d/hwdrivers \  
        /etc/init.d/modules \  
        /etc/init.d/modules-load \  
        /etc/init.d/modloop && \  
  # add auto-start services  
  rc-update add timezone default && \  
  rc-update add rsyslog default && \  
  rc-update add dcron default && \  
  rc-update add dropbear default && \  
  # root user settings  
  sed -i 's#root:/bin/ash#root:/bin/bash#' /etc/passwd && \  
  # set root password for ssh  
  echo root:youpasswd | chpasswd  
  
CMD ["init"]  

这段代码 基于 https://hub.docker.com/r/phuslu/alpine/ 进行修改, 代码倒数第二行 echo root:youpasswd | chpasswd ,youpasswd 可以修改为你想要的密码。

保存后,退出编辑器,按 ESC 键退出 编辑模式 输入 :wq 保存并退出。

在 docker 上安装 alpine

docker build -t alpine-ssh .

运行 docker内的 alpine

docker run -d -e "TZ=PRC" --name alpine-ssh-efb -p 30000:22 -h efb alpine-ssh

这样 容器内的 alpine 的 22 端口就被映射到宿主机的 30000 端口了 接,接下来退出终端 。连接到才安装的 alpine ,连接方式与普通链接方式相同,ssh 端口使用 映射端口 30000

连接到 alpine后,设置 sudo 。sudo 设置 请参考我的另一篇博文 sudo 安装与设置

接下来 退出终端 使用设置了 sudo 的用户登录。

登录好后,接下来就开始正式 安装 efb2 了

更新软件源

sudo apk update

安装 efb2 需要的必要组件

sudo apk add gcc python3 py3-numpy py3-yaml py3-pillow py3-requests ffmpeg libmagic libwebp vim screen

pip 安装 efb2 主体和模块

sudo pip3 install ehforwarderbot efb-telegram-master efb-wechat-slave

到这里 efb2 就安装完成了

创建配置文件

创建 模块 配置 :

mkdir -p ~/.ehforwarderbot/profiles/default/

编辑模块配置文件 : vim ~/.ehforwarderbot/profiles/default/config.yaml 写入以下内容

master_channel: blueset.telegram
slave_channels:
- blueset.wechat 

创建 efb2 telegram 模块文件夹

mkdir -p ~/.ehforwarderbot/profiles/default/blueset.telegram

编辑 vim ~/.ehforwarderbot/profiles/default/blueset.telegram/config.yaml 写入以下内容

token: "12345678:1a2b3c4d5e6g7h8i9j"
# " "内替换为你在 @BotFather 处获得的 token
admins:
- 102938475
# - 后面的数字替换为你在 @iloli_bot 处获得的 id

保存退出后就可以 运行 efb2了

开始登录

第一次在终端执行

ehforwarderbot

然后调整终端 大小,调整到能正常扫描二维码的大小后按 CTRL + c 键结束进程

最后执行

screen ehforwarderbot

然后就可以扫码登录了

登录后请直接关闭终端,退出终端的话会导致 screen 关闭

关闭终端后 如果想查看 日志 或结束进程 在终端输入 docker exec -it alpine-ssh-efb sh 进去实例,再输入screen -r 进入 screen 。 屏幕上正在打印的就是日志 按 CTRL + d 键关闭进程


常见问题

  • 服务器 不带 ipv4 —— 解决方法 使用带 ipv4 的服务器
  • python3 版本过低 —— 解决方法 升级 python 或者使用 python版本较新的发行版
  • 配置文件出错 —— 检解决方法 查配置文件格式是否和本教程演示的 格式相同 ,注意本教程创建的是两个配置文件

参考

efb 的基本使用

/link 连接回话到群组
/chat 开始聊天

更多高端玩法 请查阅 :

efb 项目
efb 文档