Skip to main content

WeChat Slave Channel for EH Forwarder Bot, based on WeChat Web API.

Project description

PyPI release Translate this project Banner This project proudly supports #SayNoToWeChat campaign.

README in other languages.

Channel ID: blueset.wechat

EWS 是兼容 EH Forwarder Bot 的微信从端,基于逆向工程的微信网页版、修改版 wxpy 和 ItChat

本项目的部分代码修改自 youfou/wxpylittlecodersh/ItChat

Alpha 版本

本项目目前仍是 Alpha 版本,仍不稳定,且功能可能随时变更。

使用前须知

自 2016 年中旬以来,陆续有用户报告其微信网页版登录被腾讯封禁。表现为用任何方式登录微信网页版提示「当前登录环境异常。为了你的账号安全,暂时不能登录 Web 微信。你可以通过手机客户端或 Windows 微信登录」或类似的提示。大部分用户会在封禁后一天到三个月内解封,不同用户的解封耗时不同。该封禁不影响其他客户端的登录。目前封禁的原因尚不明确。

与此同时,有现象表明 2016 年中旬以来新注册的微信用户不能够使用微信网页版。在初次使用之前,请先访问微信网页版并确认您可以正常使用此功能。若您的账号不能使用该功能,请尝试换用其他账号尝试。

如果你对网页版登录有要求的话,请慎用此信道。详细的相关信息请参见 issue #7

软件依赖

  • Python >= 3.6

  • EH Forwarder Bot >= 2.0.0

  • ffmpeg

  • libmagic

  • pillow

安装与启用

  1. 安装如上所要求的二进制依赖

  2. 安装

    pip3 install efb-wechat-slave
  3. 在当前配置文件夹(Profile)的 config.yaml 中启用 EWS。

    当前配置文件夹的位置会根据用户的设定而改变。

    (EFB 2.0.0a1 中,默认的配置文件夹位于 ~/.ehforwarderbot/profiles/default)

其他的安装方式

EWS 同时存在由社区提供的其他安装方式,包括:

可选的配置文件

EWS 支持使用可选的配置文件来启用实验功能。配置文件存储于 <当前配置文件夹>/blueset.wechat/config.yaml

配置文件例

# 实验功能
# 使用本段来调整实验功能的设置。请注意实验功能随时可能变更或失效。
# 详细说明见下文。
flags:
    option_one: 10
    option_two: false
    option_three: "foobar"

常见问题

  • 如何切换已登录的微信账号? 请登出当前的账号,并使用其他的微信手机登录。

  • 如何登录两个微信账号? 请在 EFB 配置文件中指定不同的实例 ID。

  • EWS 稳定吗? EWS 依赖于上游项目 ItChat 以及微信网页版的协议。根据 ItChat FAQ 的说明,在满足以下情况的条件下,微信登录能够保持数个月稳定登录:

    • 服务器有稳定的网络连接,并且

    • 保持手机客户端长期在线。

已知问题

  • 就于微信网页版的工作原理,目前对于没有名称的会话、以及重名的会话支持较差,可能会有消息传递错误等问题。

  • 同理,部分情况下变更名称的会话会被视为全新的会话,而「旧会话」随即消失。

  • 仅支持微信网页版所支持的功能以及消息类型,即
    • 没有朋友圈

    • 没有红包

    • 不能发语音

    • 不能发位置

    • ……等等诸如此类

  • 部分文件、图片、表情等多媒体文件会被网页版微信截断,即收不到任何数据, 尤以表情为甚。因此造成的偶发现象,会提醒用户使用移动客户端查看。

实验功能

以下的实验功能可能不稳定,并可能随时更改、删除。使用时请注意。

  • refresh_friends (bool) [默认值: false]

    每当请求会话列表时,强制刷新会话列表。

  • first_link_only (bool) [默认值: false]

    在收到多链接消息时,仅发送第一条链接。默认多链接会发送多条消息。

  • max_quote_length (int) [默认值: -1]

    引用消息中引文的长度限制。设置为 0 关闭引文功能。设置为 -1 则对引文长度不做限制。

  • qr_reload (str) [默认值: "master_qr_code"]

    重新登录时使用的登录方式: 选项:

    • "console_qr_code": 将二维码和提示输出到系统标准输出(stdout)。

    • "master_qr_code": 将二维码和提示发送到主端。 注意登录时二维码会频繁刷新,请注意二维码可能会导致刷屏。

  • on_log_out (str) [默认值: "command"]

    微信服务器将用户登出时的操作。 选项:

    • "idle": 仅通知用户。

    • "reauth": 通知用户,并立即开始重新登录。

    • "command": 通知用户,并等待用户启动重新登录过程。

  • imgcat_qr (bool) [默认值: false]

    使用 iTerm2 图像协议 显示二维码。本功能只适用于 iTerm2 用户。

  • delete_on_edit (bool) [默认值: false]

    以撤回并重新发送的方式代替编辑消息。默认禁止编辑消息。

  • app_shared_link_mode (str) [默认值:"ignore"]

    在收到第三方合作应用分享给微信的链接时,其附带的预览图以何种形式发送。

    • "ignore":忽略附带的缩略图

    • "upload":将缩略图上传到公开图床(https://sm.ms),并在日志中输出图片的删除链接。

    • "image":将消息以图片形式发送(不推荐)

  • puid_logs (str) [默认值:null]

    输出 PUID 相关日志到指定日志路径。请使用绝对路径。PUID 日志可能会根据会话数量和消息吞吐量而占用大量存储空间。

  • send_stickers_and_gif_as_jpeg (bool) [默认值: false]

    以 JPEG 图片方式发送自定义表情和 GIF,用于临时绕过微信网页版的自定义表情限制。详见 #48

  • system_chats_to_include (list of str) [默认值: [filehelper]]

    在默认会话列表中显示的特殊系统会话。其内容仅能为 filehelper(文件传输助手)、fmessage(朋友推荐消息)、newsapp(腾讯新闻)、weixin(微信团队)其中零到四个选项。

  • user_agent (str) [默认值: null]

    指定登陆网页版微信时所使用的「用户代理」(user agent)字符串。不指定则使用 itchat 提供的默认值。

vendor_specific

EWS 的 EFBChat 提供了以下的 vendor_specific 项目:

  • is_mp (bool) 该会话是否为公众号。

  • is_contact (bool) 不明。提取自 API。

  • is_blacklist_contact (bool) 该用户是否被加入黑名单。

  • is_conversation_contact (bool) 不明。提取自 API。

  • is_room_contact_del (bool) 不明。提取自 API。

  • is_room_owner (bool) 该用户是否为群组创建者。

  • is_brand_contact (bool) 不明。提取自 API。

  • is_sp_contact (bool) 不明。提取自 API。

  • is_shield_user (bool) 不明。提取自 API。

  • is_muted (bool) 该会话是否在微信中开启免打扰。

  • is_top (bool) 该会话是否在微信中被置顶。

  • has_photo_album (bool) 不明。提取自 API。

开源许可

EWS 使用了 GNU Affero General Public License 3.0 或更新版本作为其开源许可:

EFB WeChat Slave Channel: An master channel for EH Forwarder Bot.
Copyright (C) 2016 - 2019 Eana Hufwe, and the EFB WeChat Slave Channel contributors
All rights reserved.

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU Affero General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>.

翻译界面

EWS 启用了社区支持的本地化翻译。您可以将语言环境变量 (LANGUAGE, LC_ALL, LC_MESSAGESLANG) 设为一种已支持的语言。 同时,您也可以在我们的 Crowdin 项目里面将 EWS 翻译为您的语言。

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

efb-wechat-slave-2.0.0a35.tar.gz (119.1 kB view hashes)

Uploaded Source

Built Distribution

efb_wechat_slave-2.0.0a35-py3-none-any.whl (208.9 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page