Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

为一个基于 efb v2 的公众号抓取输出方案提供支持 #2172

Closed
yefoenix opened this issue May 19, 2019 · 34 comments · Fixed by #2205
Closed

为一个基于 efb v2 的公众号抓取输出方案提供支持 #2172

yefoenix opened this issue May 19, 2019 · 34 comments · Fixed by #2205
Labels
RSS enhancement New feature or request to existing RSS

Comments

@yefoenix
Copy link
Contributor

yefoenix commented May 19, 2019

这是一个什么样的功能?

对当前的 Telegram Channel 路由进行针对公众号的专门修改,使其能够将文章链接输出为 item link,为基于 efb v2 的公众号抓取输出方案提供支持

这个功能可以解决什么问题?

获得一个不依赖第三方,可自助搭建且极低延时的公众号抓取输出方案

具体描述

EH Forwarder Bot (EFB) 使用 Python 3 编写的聊天平台隧道 Bot 框架,支持 docker 安装,其 V2 版本实现了收取公众号推送并自动发布到 Telegram Channel的功能。通过将其与 rsshub 的联用,可以实现公众号的实时抓取输出。
使用本方案需要用户拥有一个闲置且可以使用 Web 版微信的微信号,并拥有可以安装 EFB V2 的服务器。

  1. 安装 EFB 并成功登录微信 (具体操作可参考 https://hub.docker.com/r/lzyyauto/efb2whttps://blog.colyn.im/a-byte-of-ehb2/
  2. 建立一个用于转发公众号的公开的 tg Channel. 例: https://t.me/s/lifeweek
  3. 将 EFB bot 设置为 Channel 管理员,微信号关注公众号,并用「手动绑定」的方式将公众号的会话与 Channel 绑定
  4. 通过 rsshub 的tg channel 抓取功能,目前可实现如下抓取效果:https://rsshub.app/telegram/channel/lifeweek

作为这个方案的最后一步,希望能够对当前的 Telegram Channel 路由进行针对公众号的专门修改,使其能够将文章链接输出为 item link,并实现全文抓取(可参考 wemp 路由)。
可考虑将修改后的路由定义为 /wechat/tgchannel/:id
或在现有 tg channnel 的路由上增加一个mode ,即 /telegram/channel/:id/wechat

@DIYgod DIYgod added the RSS enhancement New feature or request to existing RSS label May 19, 2019
@yefoenix
Copy link
Contributor Author

补充:#2208 更新后,可将不同的公众号绑定于同一个 tg 频道,通过 filter_author 过滤出不同公众号

@davidlauhn
Copy link

为什么需要是闲置的微信号?在用的不行吗?手头能登录网页版的就一个号,新号都不能登录网页版了,233

@yefoenix
Copy link
Contributor Author

@davidlauhn 当然也可以,但是这意味着你不能用这个号登录pc/mac版微信了

@davidlauhn
Copy link

@yefoenix 那没关系,反正不登录PC/MAC版,哈哈~

@fucao
Copy link

fucao commented Jun 22, 2019

请问怎么通过 filter_author 过滤出不同公众号,是在网址上添加吗?能用这个链接说明下吗?https://rsshub.app/wechat/tgchannel/lifeweek

@yefoenix
Copy link
Contributor Author

@fucao 不能……因为这个频道只绑定了一个公众号

@fucao
Copy link

fucao commented Jun 22, 2019

假如绑定了多个公众号,该怎么更改链接呢。弄到这最后一步了,不会改

@yefoenix
Copy link
Contributor Author

@fucao rsshub的文档里有讲filter_author用法,注意要做一下转义

@fucao
Copy link

fucao commented Jun 22, 2019

@yefoenix 哦哦,好像会弄了

@yefoenix
Copy link
Contributor Author

@fucao 你这个频道里目前没有caoz的内容啊,换个雾满拦江就能看到效果了

@sandplan
Copy link

请问
1.将 EFB bot 设置为 Channel 管理员 EFB bot是哪个啊?
2.「手动绑定」的方式将公众号的会话与 Channel 绑定 怎么手动绑定啊?
3.VPS重启了之后要重新第一步的扫码吗?

@raining1123
Copy link

请问#2208里提到的全文抓取问题解决了没有?看到enhance非常激动,但是没看到怎么实现,是要修改下路由?

@yefoenix
Copy link
Contributor Author

@raining1123 已经实现了,更新rsshub程序就好了。

@davidlauhn
Copy link

有没有遇到网页版微信半夜掉线的问题?已经持续10来天了,每天半夜掉线

@silsuer
Copy link

silsuer commented Jul 30, 2020

有没有遇到网页版微信半夜掉线的问题?已经持续10来天了,每天半夜掉线

@davidlauhn 请问掉线之后如何重新登录?我使用efb2w,容器关闭后重新开启,扫描二维码显示登录成功,但是没有任何反应,电脑版微信也没有被挤掉,也无法接受消息,只能重新启动一个新的容器,但是这样的话,之前绑定的公众号就会丢失掉。需要重新手动绑定,很麻烦

@davidlauhn
Copy link

有没有遇到网页版微信半夜掉线的问题?已经持续10来天了,每天半夜掉线

@davidlauhn 请问掉线之后如何重新登录?我使用efb2w,容器关闭后重新开启,扫描二维码显示登录成功,但是没有任何反应,电脑版微信也没有被挤掉,也无法接受消息,只能重新启动一个新的容器,但是这样的话,之前绑定的公众号就会丢失掉。需要重新手动绑定,很麻烦

已经不用了,总是掉线,都忘了怎么弄的了,抱歉

@silsuer
Copy link

silsuer commented Aug 1, 2020

谢谢两位了,工作需要,我打算不绑定,用telegram bot api试试能不能拿到聊天记录了,每天早上登录一次就登录一次吧(捂脸)

@flowerhood
Copy link

过滤的方法还是没搞懂,我的channel号是https://t.me/s/darhcenssr,能帮忙看看怎么添加过滤条件吗。我是在链接后添加了?filter_author=caoz%E7%9A%84%E6%A2%A6%E5%91%93,但订阅源没有更新

你好,现在微信好像不能用web网页登陆了,你的efbv2方案还能正常运行吗?

@flowerhood
Copy link

这是一个什么样的功能?

对当前的 Telegram Channel 路由进行针对公众号的专门修改,使其能够将文章链接输出为 item link,为基于 efb v2 的公众号抓取输出方案提供支持

这个功能可以解决什么问题?

获得一个不依赖第三方,可自助搭建且极低延时的公众号抓取输出方案

具体描述

EH Forwarder Bot (EFB) 使用 Python 3 编写的聊天平台隧道 Bot 框架,支持 docker 安装,其 V2 版本实现了收取公众号推送并自动发布到 Telegram Channel的功能。通过将其与 rsshub 的联用,可以实现公众号的实时抓取输出。
使用本方案需要用户拥有一个闲置且可以使用 Web 版微信的微信号,并拥有可以安装 EFB V2 的服务器。

  1. 安装 EFB 并成功登录微信 (具体操作可参考 https://hub.docker.com/r/lzyyauto/efb2whttps://blog.colyn.im/a-byte-of-ehb2/
  2. 建立一个用于转发公众号的公开的 tg Channel. 例: https://t.me/s/lifeweek
  3. 将 EFB bot 设置为 Channel 管理员,微信号关注公众号,并用「手动绑定」的方式将公众号的会话与 Channel 绑定
  4. 通过 rsshub 的tg channel 抓取功能,目前可实现如下抓取效果:https://rsshub.app/telegram/channel/lifeweek

作为这个方案的最后一步,希望能够对当前的 Telegram Channel 路由进行针对公众号的专门修改,使其能够将文章链接输出为 item link,并实现全文抓取(可参考 wemp 路由)。
可考虑将修改后的路由定义为 /wechat/tgchannel/:id
或在现有 tg channnel 的路由上增加一个mode ,即 /telegram/channel/:id/wechat

你好,我安装了efbv2,但是网页版微信好像微信官方不让登陆了,用电脑版微信能代替网页版捆绑微信公众号实现与电报的连接输出吗?

@iT-Boyer
Copy link

docker 安装efb2w 配置了telegram的信息,当微信扫码登陆之后,efb2w异常了。

efb2w                  |   File "/usr/local/lib/python3.6/site-packages/efb_wechat_slave/__init__.py", line 521, in authenticate

efb2w                  |     logout_callback=self.exit_callback)

efb2w                  |   File "/usr/local/lib/python3.6/site-packages/efb_wechat_slave/wxpy/api/bot.py", line 87, in __init__

efb2w                  |     loginCallback=login_callback, exitCallback=logout_callback

efb2w                  |   File "/usr/local/lib/python3.6/site-packages/itchat/components/register.py", line 29, in auto_login

efb2w                  |     loginCallback=loginCallback, exitCallback=exitCallback):

efb2w                  |   File "/usr/local/lib/python3.6/site-packages/itchat/components/hotreload.py", line 54, in load_login_status

efb2w                  |     self.loginInfo['User'] = templates.User(self.loginInfo['User'])

efb2w                  | KeyError: 'User'

2021-10-19 07:55:08,927 [Level 99]: ehforwarderbot.__main__ (__main__.init; __main__.py:85)

efb2w                  |      Initializing slave blueset.wechat... 

efb2w exited with code 137

@startnothings
Copy link

原先的 docker 镜像不可用了,在更新了,目前可用。

为什么要使用此方案

  1. 其他抓取微信公众号文章的方案由于反爬严格等原因目前基本不可用。
  2. 微信公众号最新的推送文章能较快的获取到。

为什么不使用此方案

  1. 需要抓取公众号的历史文章,此方案只能抓取实时推送的文章,对之前的文章无能为力。
  2. 需要抓取全文,此方案只能抓取链接,点链接打开浏览器才能看到全文。
  3. 微信号被腾讯拉入黑名单,或者微信号已经在 PC / mac 上登录。

操作步骤

  1. 设置好用于转发消息的 telegram 机器人
    1. 登录 telegram
    2. @Botfather 发起会话
    3. /newbot 新建一个机器人用来转发微信公众号的消息
    4. 指定这个机器人的名称与用户名(用户名必须以 bot 结尾)
    5. 获取到 token 并保存下来(后面会用到)
    6. 发送 /setprivacy 到 @Botfather,选择刚刚创建好的 Bot 用户名,然后选择 “Disable”.
    7. 发送 /setjoingroups 到 @Botfather,选择刚刚创建好的 Bot 用户名,然后选择 “Enable”.
    8. 发送 /setcommands 到 @Botfather,选择刚刚创建好的 Bot 用户名,然后发送如下内容:
link - 将会话绑定到 
chat - 生成会话头 
recog - 回复语音消息以进行识别 
extra - 获取更多功能
  1. 向 @get_id_bot 发起会话,获取自己 telegram 账号的 ID(网上有很多机器人都提供这项服务)

  2. 建立一个 telegram chat,将之前的机器人拉入内并设置为管理员

  3. 安装 EFB 并成功登录微信。

    1. 安装 docker
    2. 拉取镜像 docker pull bugji/efb2w
    3. 修改配置 vim ~/efb2w/blueset.telegram/config.yaml

配置文件

token: "12345678:1a2b3c4d5e6g7h8i9j"
#替换为你在 @BotFather 处获得的 token
admins:
- 102938475
#后面的数字替换为你在 @get_id_bot 处获得的 id
  1. 运行 docker run --name=efb2w -v ~/efb2w/blueset.telegram/:/root/.ehforwarderbot/profiles/default/blueset.telegram/ bugji/efb2w

  2. 微信扫描二维码登录

  3. 向机器人发送对话 /link,绑定需要抓取的微信公众号到新建的 telegram 群中

  4. 通过 rsshub 的tg channel 抓取功能,目前可实现如下抓取效果:https://rsshub.app/telegram/channel/lifeweek

@Crayon-ShinChan
Copy link
Contributor

感觉最难的是有一个能够登陆 web 的微信号,我的两个微信号都不可以,有一个很早就注册了,也不知道什么样的微信号可以。

@iT-Boyer
Copy link

  1. 拉取镜像 docker pull bugji/efb2w

docker 镜像找不到了。

$ docker pull bugji/efb2w
Using default tag: latest
 Error response from daemon: manifest for bugji/efb2w:latest not found: manifest unknown: manifest unknown

@212-mei
Copy link

212-mei commented Apr 10, 2022

  1. 拉取镜像 docker pull bugji/efb2w

docker 镜像找不到了。

$ docker pull bugji/efb2w
Using default tag: latest
 Error response from daemon: manifest for bugji/efb2w:latest not found: manifest unknown: manifest unknown

你好, 如果你的微信可以登陆web端的微信的话,可以在Github搜索efb-wechat的开源项目并且尝试搭建;否则,你也可以联系我,我可以为你提供你一个方法,免费的。qq:1115211238

@THU-Pieris
Copy link

2. bugji/efb2w

要带tag。

docker pull bugji/efb2w:v2

但我不建议用docker安装。建议跟着官方教程走:
https://github.com/ehForwarderBot/efb-wechat-slave

@iT-Boyer
Copy link

https://web.wechat.com/ 刚验证帐号无法登录web。这样就没办法使用efb了吗?

@212-mei
Copy link

212-mei commented Apr 10, 2022

https://web.wechat.com/ 刚验证帐号无法登录web。这样就没办法使用efb了吗?

很遗憾,去年是可以的,今年腾讯更新了,不能登录web暂时无法使用efb,目前efb-wechat作者正在想其他的办法,可能未来几个月或者几年会有其他的办法。

@UoUoio
Copy link

UoUoio commented Aug 24, 2022

https://web.com/刚验证账号无法登录web。

很遗憾,去年可能是的,今年腾讯更新了,不能登录网络暂时无法使用 efb,目前 efb-wechat 的作者正在想其他的办法,可能未来或几周会有其他的办法。

或许可以使用UOS协议呢?,UOS协议和网页版协议只差了一个参数,多拼接一个参数就行了

@dangehub
Copy link

UOS已经可以随便登录了,EFB全面复活

@raining1123
Copy link

UOS已经可以随便登录了,EFB全面复活

统信吗?

@yy4382
Copy link
Contributor

yy4382 commented Jan 27, 2023

UOS已经可以随便登录了,EFB全面复活

可以详细说说吗

@UoUoio
Copy link

UoUoio commented Jan 28, 2023

UOS已经可以随便登录了,EFB全面复活

可以详细说说吗

https://github.com/UoUoio/WeChat-API-UoUo
上次全面复活后 又沉寂了一段时间 已经很久不搞微信相关的了,大家可以看下这是我之前基于网页版项目升级的UOS协议

@Crabbit-F
Copy link

请问这个方案现在还能用吗?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
RSS enhancement New feature or request to existing RSS
Projects
None yet
Development

Successfully merging a pull request may close this issue.