OneBot Web WeChat 端
kecrily opened this issue · comments
- 状态:关闭
- 相关 PR:无
摘要
社群曾在 #82 讨论过 WeChat 端的实现,现在已有开源项目绕过 Web WeChat 的账号登录注册时间限制,OneBot WeChat 端已具备技术条件和可行性。
- 实现:wechaty/wechaty
- 原理:wechaty/puppet-wechat#127
- 摘要:通过伪造 UOS 端微信的
header
进行绕过限制 - 注意:如需安装 UOS 端微信进行实际测试,请注意其目前仅支持 UOS 专业版,但可通过 wechat-uos-makefile 项目在 Arch 系统上进行安装测试,该实现并不受系统限制。
- 摘要:通过伪造 UOS 端微信的
- 源码:wechaty/puppet-wechat#129
动机
WeChat 是**大陆境内常用的 IM 软件之一,以往因为 WeChat 的风控相较 QQ 更为严格,在 Web WeChat 的账号登录受注册时间限制,开源的 Web WeChat 实现几近报废,导致 WeChat Bot 缺位,仅存在闭源收费的 PC 实现或 hook 注入实现。现已存在可行、持久的实现方式应在 OneBot 各端实现上进行补充。
具体描述
WeChat 与 OneBot 兼容规范进行的修改和描述,其 Web WeChat 端接口参考 wechaty/wechaty 所给文档及 Urinx/WeixinBot 所示接口和示例数据,OneBot 规范依据 V12 草案。
此处将 WeChat Api 中字段与 OneBot 对应,Web WeChat 端中不存在的消息段类型/事件数据字段此处不列,后续可根据其他平台(设备) WeChat 端开源实现进行扩展,而其实际消息段类型/事件数据字段也可能与此不符,因其全凭第三方文档,仍需复核。
消息段类型
消息段类型 | OneBot | 备注 | |
---|---|---|---|
未知 | Unknown | ❌ | |
文件 | Attachment | ❌ | |
语音 | Audio | record | |
推荐好友 | Contact | contact | |
QQ 表情 | Emoticon | 此类型名称应进行去平台中心化更改,并可将 QQ 端与 WeChat 端共存类似或相同表情采用同一 id ,拟定类型名「表情」 |
|
图片 | Image | image | |
纯文本 | Text | text | |
短视频 | Video | video | 此类型名称应进行去平台中心化更改,并非所有平台均存在时长限制,拟定类型名「视频」 |
链接 | Url | ❌ | 纯文本链接应作为新的类型,QQ 端纯文本类型可能会被解析成 xml,而 Telegram 端则亦有 Preview 预览实现,拟定类型字段名 preview = bool |
图片消息
事件数据字段 | OneBot | 备注 | |
---|---|---|---|
长度 | length | ❌ | |
高度 | hdlength | ❌ |
语音消息
事件数据字段 | OneBot | 备注 | |
---|---|---|---|
结束标记 | endflag | ❌ | 功能未知 |
取消标记 | cancelflag | ❌ | 功能未知 |
转发标记 | forwardflag | ❌ | 功能未知 |
语音格式 | voiceformat | ❌ | |
语音长度 | voicelength | ❌ | |
长度 | length | ❌ | 功能未知 |
bufid | bufid | ❌ | 功能未知 |
客户端消息 id | clientmsgid | ❌ | 功能未知 |
视频消息
事件数据字段 | OneBot | 备注 | |
---|---|---|---|
长度 | length | ❌ | |
高度 | hdlength | ❌ |
位置消息
WeChat 的位置消息属于纯文本消息,内容即链接 http://weixin.qq.com/cgi-bin/redirectforward?args=xxx
推荐好友
事件数据字段 | OneBot | 备注 | |
---|---|---|---|
被推荐人 | UserName | id | |
省份 | Province | ❌ | |
城市 | City | ❌ | |
Scene | Scene | ❌ | 功能未知 |
QQ 号 | QQNum | ❌ | |
内容 | Content | ❌ | 功能未知 |
微信号 | Alias | ❌ | |
OpCode | OpCode | ❌ | 功能未知 |
签名 | Signature | ❌ | |
Ticket | Ticket | ❌ | 功能未知 |
性别 | Sex | ❌ | |
昵称 | NickName | ❌ | |
AttrStatus | AttrStatus | ❌ | 功能未知 |
验证标识 | VerifyFlag | ❌ | 功能未知 |
音乐分享
事件数据字段 | OneBot | 备注 | |
---|---|---|---|
头图 | thumburl | ❌ | |
音频 | lowdataurl/dataurl | audio | |
链接 | url | url | |
应用 ID | appid | ❌ |
事件数据字段
消息事件
事件数据字段 | OneBot | 备注 | |
---|---|---|---|
时间 | CreateTime | time | |
接收者 ID | FromUserName | self_id | |
发送者 ID | ToUserName | user_id | |
类型 | MsgType | post_type |
局限
Web WeChat 端接口/事件并不完整。
替代方案
备注
因我并无对 Web WeChat 的实现进行具体研究,以及对 OneBot 的原理不甚了解。这导致可能出现一些问题,欢迎讨论。
随时非法入侵计算机系统罪伺候
web其实还好 用现成的轮子应该没什么风险
这个 RFC 暂时 pending,等 v12 基本成型之后再考虑,不过同时可以作为 v12 设计时的参考
\ OneBot for LLLLAAARRRKKKKKKKKKK /
我要顺带重构我的机器人的用户系统了,要兼容多平台 √
在最新的 OneBot 12 标准中,已经不再包含平台特定的内容了,但提供了一些扩展规则,允许不同平台的实现按需扩展,本 issue 也许可以为以后微信平台 OneBot 实现提供一些参考,目前先 close 了