Skip to content

基于 WcfRust 在 Mac 上开发微信机器人

发表时间:Thu Feb 15 2024 18:12:07 GMT+0800 (中国标准时间)

TEQuant https://mmbiz.qpic.cn/mmbiz_jpg/XaSOeHibHicMHmVepTOd7icn4HXJa81nW14sAUdp8IfvTNjXIzjLo1z9Rpy3VO8nqKib7zw4cjYQttiaKJGiaC6c2cJA/0?wx_fmt=jpeg

WcfRustWeChatFerry 的 HTTP 客户端,基于 Rust 开发。目前 WcfRust 已经实现了 Python 客户端的(几乎)所有接口,建议替换 wcfhttp

项目地址:https://github.com/lich0821/wcf-client-rust

查克开发 WcfRust 主要是为了学习 Rust,所以代码可能还不成熟(但功能应该是没问题的),接下来会边学习边优化,欢迎各位大佬提供建议。

背景

众所周知(好吧,我吹牛了),我的主力开发工具是一台 MacBookPro;有一台 Windows Server 跑机器人;再一台 Win10 虚拟机做开发调试。

![](image\基于 WcfRust 在 Mac 上开发微信机器人\0.png)

MBP

一般应用,我习惯在 Mac 上开发。现在有这么一个场景:Windows Server 上启动了 WcfRust,需要配置一个回调,来处理消息。

最直接的方案肯定是在 Windows Server 上面直接做开发调试,然后回调服务器就是 localhost 了。但 Windows Server 真的好难用……

另外一种比较容易想到的方法,是找一台在 Windows Server 同一局域网的机器;或者有公网地址的机器,来做开发,回调服务器就是该机器的 IP 地址了。但这就用不上我尊贵的 MacBookPro 了。

于是就有了第三种方案,让 Windows Server,访问不在同一局域网里,且没有公网 IP 的 MacBookPro 的一个 HTTP 服务。这真的是没事儿找事儿啊。

不过吧,没事儿找事儿的事儿我干多了,所以路熟,一下子就想到了方案,趁机卖弄一下。

下面我就开始表演了。

端口转发简介

首先介绍一下端口转发,顾名思义,就是将网络流量从一个地址和端口转发到另一个地址和端口。

通过 SSH 端口转发,我们可以利用 SSH 的加密通道来保护数据传输的安全,实现数据的安全访问和传输。

SSH 的端口转发有三种:动态端口转发、本地端口转发和远程端口转发。

动态端口转发

动态端口转发:智能代理。

动态端口转发是 SSH 端口转发最灵活的形式,它允许我们创建一个本地的 SOCKS 代理服务器。通过配置我们的应用程序或浏览器使用这个 SOCKS 代理,所有通过代理的流量都会被安全地转发到 SSH 服务器,然后由 SSH 服务器转发到目的地。这种方式非常适合需要安全浏览或访问控制网络资源的情况。

ssh -D 1080 user@remote-server.com

上述命令在本地机器上创建了一个监听端口 1080 的 SOCKS 代理,通过它可以安全访问 remote-server.com 能访问的网络资源。

机智的朋友,是不是突然想到了某种特殊用途?

本地端口转发

本地端口转发:安全隧道。

本地端口转发允许我们将本地机器上的一个端口转发到远程服务器上的指定端口。这是一种单向的端口转发,适合当我们想安全访问一个远程服务(如数据库、Web 应用等)但该服务不对外开放时使用。

我经常用这种方法“回家”,访问家里服务器的资源。

ssh -L 9000:localhost:3306 user@remote-server.com

这个命令创建了一个隧道,把本地的 9000 端口的流量转发到 remote-server.com 上的 3306 端口,让我们像访问本地资源一样访问远程 MySQL 数据库。

远程端口转发

远程端口转发:也是安全隧道,但让没有公网 IP 的内网服务被“看见”。

远程端口转发是端口转发的另一种形式,它允许我们将远程机器上的一个端口转发到本地机器上的指定端口。这种方式适用于我们想将内网服务暴露给外网访问,但又不想直接在路由器上做端口映射的场景。

ssh -R 8080:localhost:8000 user@remote-server.com

通过上述命令,我们可以将本地的 Web 服务器(假设监听在 8000 端口)通过 remote-server.com 的 8080 端口对外提供服务,从而实现内网穿透。

好了,借助远程端口转发,我就可以愉快地耍酷了——在 Mac 上开发微信机器人。

后台回复 WCF 一起搞🤖

阅读原文

上次更新于: