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 用户名,然后发送如下内容:
link - 将会话绑定到
chat - 生成会话头
recog - 回复语音消息以进行识别
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
开始聊天
更多高端玩法 请查阅 :