前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Wechaty Gateway 使用教程

Wechaty Gateway 使用教程

作者头像
XRSec
发布2023-08-23 14:45:00
5370
发布2023-08-23 14:45:00
举报
文章被收录于专栏:XRSec.BlogXRSec.Blog

声明

  1. wechaty 属于开源工具,并没有太多的义务帮你解决问题
  2. 大家也多是一步一步学习的,工具做好了基本也潜水了
  3. 所以请尝试自己查找资料
  4. 我喜欢go嘛

提问的艺术

  1. 其实 wechaty官网 已经很详细了,这里有很多的文档可供参考
  2. 使用谷歌语法 wechaty go xp
  3. 使用 Github 搜索 org:wechaty roomInvitation
  4. 请将你的问题,代码,错误日志一起提交到 issues
  5. 希望你能接受上面的说法,感谢

关于架构

代码语言:javascript
复制
flowchart LR
    Polyglot-->Python
    Polyglot-->Go
    Polyglot -->Rust
    Python-->Grpc
    Go-->Grpc
    Rust-->Grpc
    Grpc-->Puppet
    Puppet-->Padlocal
    Puppet-->Wechat4U
    Puppet-->XP
    Padlocal-->微信
    Wechat4U-->微信
    XP-->微信

Wechat4U

  • 首先确定你能不能使用网页版登录
  • Wechat4U Token 不需要钱,随机生成就好
  • 下面这一套不需要 docker,安装简单
代码语言:javascript
复制
flowchart LR
    Polyglot-->Python
    Polyglot-->Go
    Polyglot -->Rust
    Python-->Grpc
    Go-->Grpc
    Rust-->Grpc
    Grpc-->Gateway{Gateway}-->Wechat4U
    Wechat4U-->微信

Gateway

代码语言:javascript
复制
npm install -g wechaty wechaty-puppet-wechat4u
# npm --registry https://registry.npm.taobao.org install -g wechaty wechaty-puppet-wechat4u

export WECHATY_PUPPET="wechaty-puppet-wechat4u"
export WECHATY_TOKEN="d6e8b1c7-6fcd-4e32-b3f6-8d1e73388458"
# export WECHATY_TOKEN=$(curl -s https://www.uuidgenerator.net/api/version4)

export WECHATY_PUPPET_SERVICE_TOKEN="insecure_d6e8b1c7-6fcd-4e32-b3f6-8d1e73388458"
# export WECHATY_PUPPET_SERVICE_TOKEN="insecure_$(curl -s https://www.uuidgenerator.net/api/version4)"

export WECHATY_LOG="verbose"
export WECHATY_PUPPET_SERVER_PORT="25000"
export WECHATY_PUPPET_SERVICE_NO_TLS_INSECURE_SERVER=true

wechaty gateway --puppet ${WECHATY_PUPPET} --port ${WECHATY_PUPPET_SERVER_PORT} --token ${WECHATY_PUPPET_SERVICE_TOKEN} --puppet-token ${WECHATY_TOKEN}

上面这一堆麻烦的东西就是网关啦,希望你能使用它来作为你的常用工具

wechaty 会在当前目录生成 Gateway.memory-card.json 有了这个文件就不需要总是重新登陆了

Polyglot

代码语言:javascript
复制
// 其他的官网 demo 照抄就OK,这个使用的是 go-wechaty
// demo: https://github.com/wechaty/go-wechaty/blob/master/examples/ding-dong-bot.go
 var bot = wechaty.NewWechaty(wechaty.WithPuppetOption(wp.Option{
  Token: "insecure_d6e8b1c7-6fcd-4e32-b3f6-8d1e73388458",
  Endpoint: "127.0.0.1:25000",
  Timeout: time.Second * 10,
 }))

XP

  • 相比而言,padLocal 协议更稳定
  • XP Token 不需要钱,随机生成就好
  • 下面这一套不需要 docker,安装简单
  • 安装微信
  • Demo : Go-wechaty-Bot - 欢迎下载体验、踢出宝贵的修复建议
代码语言:javascript
复制
flowchart LR
    Polyglot-->Python
    Polyglot-->Go
    Polyglot -->Rust
    Python-->Grpc
    Go-->Grpc
    Rust-->Grpc
    Grpc-->Gateway{Gateway}-->XP
    XP-->微信

Gateway

代码语言:javascript
复制
# 这些仅适用于 Windows,因为 xp 支持的是Windows版本微信
npm install -g wechaty wechaty-puppet-xp
# npm --registry https://registry.npm.taobao.org install -g wechaty wechaty-puppet-wechat4u

set WECHATY_PUPPET="wechaty-puppet-wechat4u"
set WECHATY_TOKEN="d6e8b1c7-6fcd-4e32-b3f6-8d1e73388458"
# set WECHATY_TOKEN=$(curl -s https://www.uuidgenerator.net/api/version4)

set WECHATY_PUPPET_SERVICE_TOKEN="insecure_d6e8b1c7-6fcd-4e32-b3f6-8d1e73388458"
# set WECHATY_PUPPET_SERVICE_TOKEN="insecure_$(curl -s https://www.uuidgenerator.net/api/version4)"

set WECHATY_LOG="verbose"
set WECHATY_PUPPET_SERVER_PORT="25000"
set WECHATY_PUPPET_SERVICE_NO_TLS_INSECURE_SERVER=true

wechaty gateway --puppet %WECHATY_PUPPET% --port %WECHATY_PUPPET_SERVER_PORT% --token %WECHATY_PUPPET_SERVICE_TOKEN% --puppet-token %WECHATY_TOKEN%

上面这一堆麻烦的东西就是网关啦,希望你能使用它来作为你的常用工具

Polyglot

代码语言:javascript
复制
// 其他的官网 demo 照抄就OK,这个使用的是 go-wechaty
// demo: https://github.com/wechaty/go-wechaty/blob/master/examples/ding-dong-bot.go
 var bot = wechaty.NewWechaty(wechaty.WithPuppetOption(wp.Option{
  Token: "insecure_d6e8b1c7-6fcd-4e32-b3f6-8d1e73388458",
  Endpoint: "127.0.0.1:25000",
  Timeout: time.Second * 10,
 }))

性能对比:

Gateway

代码语言:javascript
复制
func OnScan(ctx *wechaty.Context) {
  os.exit(0)
---------------------------------------
➜  time go run test.go
2022/04/13 22:09:40 PuppetService Start()
2022/04/13 22:09:42 PuppetService onGrpcStreamEvent({type:EVENT_TYPE_HEARTBEAT payload:{"data":"Wechaty Puppet gRPC stream connect successfully"}})
2022/04/13 22:09:42 PuppetService onGrpcStreamEvent({type:EVENT_TYPE_SCAN payload:{"qrcode":"https://login.weixin.qq.com/l/IeJ_ESMXqQ==","status":2}})
go run test.go  0.46s user 0.32s system 27% cpu 2.895 total

TypeScript

代码语言:javascript
复制
function onScan(payload: PUPPET.payloads.EventScan) {
  return process.exit(0);
---------------------------------------
time cross-env NODE_OPTIONS="--no-warnings --loader=ts-node/esm" node examples/1.ts
Puppet Version: 0.0.0<1.18.3>
Please wait... I'm trying to login in...

cross-env NODE_OPTIONS="--no-warnings --loader=ts-node/esm" node examples/1.t  0.40s user 0.13s system 54% cpu 0.975 total

因为大部分兄弟的微信是不能登录网页版而选的 XP 协议,所以我想说,XP 协议需要 Hook 微信进程,TypeScript 将需要更多的时间

设计思路

  • Viper 用来读取或者写入配置文件,包括 各种 token
  • go func() // 这里我并不理解这个,我以为他是 后台程序
  • strings.Replace 切割 @ 符号和机器人的名字,机器人的名字可以在 onlogin 的时候读取
  • 在 message 接收到消息的时候,如果匹配到了关键字,其实你可以把它放到后台继续执行的
  • 还有就是 xp 消息发送过于频繁怕触发微信的风控
  • golang 可以使用 air 热重启,typescript 使用 nodemon
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-04-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 声明
  • 提问的艺术
  • 关于架构
  • Wechat4U
  • Gateway
  • Polyglot
  • XP
  • Gateway
  • Polyglot
  • 性能对比:
  • Gateway
  • TypeScript
  • 设计思路
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档