RSS订阅微信公众号--基于 EFB 和 Telegram
要用到微信的网页版,以前苦于微信网页版登录被禁止,一直没有成功搭建。最近微信上线了新的功能,扫码直接传输文件,发现使用了这个功能之后,即可登录微信网页版。
需要用到个人的VPS,模仿
ZMonster
提供的程序和方法。
首先参照 小众软件 ,利用EFB关联Telegram和微信
拉取 EFB 镜像
docker pull royx/docker-efb
配置 Telegram Bot 机器人
EFB 目前实现的 Telegram 与 微信 互通的原理是这样的:
Telegram bot > EFB > 微信网页版 > 微信
所以我们先来配置 Telegram bot:
- 在 Telegram 里搜索 @ botfather 并和他对话
- 对 @botfather 说话,输入 /newbot
- 给你的机器人 bot 起个名字
- 继续给机器人起用户名,和上面的名字可以相同,但必须以 bot 结尾
- 获得机器人 Token,下图红色部分,一会要用到
设置 bot 隐私权限
bot 可能会接收不了非 “/” 开头的消息,所以需要设置一下,让 bot 接收全部内容:
继续与 @botfather 对话,输入 /setprivacy,选择刚刚创建的机器人,点击 Disable
获得 Telegram ID
再和另外一个机器人 @ get_id_bot 对话,点击 start 即可获得你的 Telegram ID,一串数字(Chat ID)。
至此,Telegram 的配置完成,我们得到两个重要的数字:token、Telegram ID
配置 EFB
这里是最简单的一份配置文件,
master_channel = 'plugins.eh_telegram_master', 'TelegramChannel'
slave_channels = [('plugins.eh_wechat_slave', 'WeChatChannel')]
eh_telegram_master = {
"token": "12345678:QWFPGJLUYarstdheioZXCVBKM",
"admins": [13456782],
"bing_speech_api": ["xxx", "xxx"],
"baidu_speech_api": {
"app_id": 0,
"api_key": "xxx",
"secret_key": "xxx"
}
}
保存在文件夹中,例如/root/efb/config.py ,注意把上面 token以及 admins 冒号后面的部分替换成刚刚获得的 token 和 Chat ID。
即:下面的红色部分:
“token”: “12345678:QWFPGJLUYarstdheioZXCVBKM”,
“admins”: [13456782],
**注意 **xxx 部分可以自己申请,也可以参考 官方提供 的内容。
再新建一个 tgdata.db 文件:
touch tgdata.db
至此,EFB 的配置完成,我们得到两个文件: config.py、tgdata.db,在这里我们举例将这两个文件保存在 /root/efb/config.py 和 /root/efb/tgdata.db 这两个位置。
通过 Docker 运行 EFB
docker run -d --restart=always --name=ehforwarderbot -v /root/efb/config.py:/opt/ehForwarderBot/config.py -v /root/efb/tgdata.db:/opt/ehForwarderBot/plugins/eh_telegram_master/tgdata.db royx/docker-efb
所有安装、配置、运行已完成。
登录微信
docker logs ehforwarderbot
在屏幕上,你会看到一个二维码,用微信扫描,登录,大功告成。
绑定公众号
首先在 Telegram 中创建一个新的群组,比如“微信.公众号”,然后将你的机器人邀请进来。根创建的bot对话:/link 晚点LatePost
EFB 会自动帮你搜索微信联系人,并显示搜索结果,点击你需要的联系人名:
再点击 Link,此时 Telegram 会弹出联系人选单,选择刚刚创建的群组,即完成了微信联系人与 Telegram 群组的绑定。
现在已经这个公众号所发布的文章不光会发送打bot上,也会转发到这个群组,重复操作,可以绑定多个公众号。
安装 Huginn
docker安装非常方便:docker run -it -p 3000:3000 -v /root/huginn/mysql-data:/var/lib/mysql huginn/huginn
根据服务器不同,搭建时间可能略长,多等一会。
这里最好做好域名的设置,因为有些客户端不支持80以外的端口。
访问域名,认的用户名为admin,密码为password,登录。
在Scenarios选择导入,导入ZMonster编写的配置文件,每个公众号都用一个特定的配置。
推荐使用ZMonster大神的
项目
生成,安装之后,运行zs-rss gen-wx-scenario -n name t -i postlate -o postlate.json
其中name是自定义的公众号名称,postlate是设定的id,体现在链接里,postlate.json是定义的配置名称,运行后将会在运行目录下生成postlate.json。
创建好 Huginn Scenario 后,点击进入“微信公众号 Webhooks”这个 Agent,获取 webhooks 链接,比如:https://myhuginn.com/users/1/web_requests/318/4SXo3X2T2X7HCDjv
创建数据库
zs-rss create-db
这条命令会在 $HOME/.zs/data 目录下新建一个数据文件 rss.db,注意给予写权限。
在 $HOME/.zs/config 目录下新建配置文件 rss.json,写入刚才获得的 webhooks 链接,如{ "huginn_webhooks": { "default": "https://myhuginn.com/users/1/web_requests/372/d742b76e", "晚点LatePost": "https://myhuginn.com/users/1/web_requests/372/4SXo3X2T2X7HCDjv" } }
这个配置的意思是,公众号“晚点LatePost”的更新发送到一个 webhooks,其他的发送到另外的 webhooks。如果每个公众号都要输出一个 RSS,那么就需要为每个公众号都设置一个 webhooks 链接;如果有多个公众号想要合并输出一个 RSS,那么可以不设置 webhooks 而使用 default 对应的 webhooks。
定时更新
7,17,27,37,47,57 * * * * zs-rss fetch-wx-articles -n 微信.公众号 >> log.txt */10 * * * * zs-rss send-wx-articles >> log.txt
具体的时间频率可以自己调整。
其中第一条定时任务需要 Telegram 的授权认证,具体来说是需要在 $HOME/.zs/config/telegram.json 中有如下内容{ "api_id": "561071", "api_hash": "22691769c5decd501fd49d96ecff58e3", "session": "AUTHENTICATION SESSION CODE" }
其中 “api_id” 和 “api_hash” 可以在
https://my.telegram.org/
上获取,而 session 的值会在第一次运行时生成并自动写入到上面的配置文件里。
转到电报页面之后,新建app,填好各项之后,即可获得。
订阅的链接在Huginn面板中,可以放到rss里。
在arm64的机器上可以用akyakya/efb-v2和zhorvath83/huginn来代替,用法一样,部署文档里里写的很清楚。