且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

基于C#简单实现的微信网页版接口

更新时间:2022-08-15 07:58:33

​​一、想法来源

  ​      作为程序员,对自己工具不满,就要去改造,对于微信已经厌恶极久了。总有人不合时宜的发语音,总有老板无时无刻的艾特,总有微商群发各种消息。重点是不能忍受语音。​当现有客户端不能满足要求,心中无限郁闷,想着做一个客户端,去回怼那些发语音的人。

二、初期准备​

       最开始想从手机微信客户端动手​,奈何抓包看的我头疼,后来想到用Fiddler(比较友好易用)去抓微信网页版,就开始了各种抓包之旅。

三、目录接口​

        因为是第一次​写类似的类库,中间迭代重写了好几次,主要包含CommonTools.dll,HttpHelper.dll跟一个WeChatCore.dll,第一个工具包,提供简单工具类,例如一些扩展方法处理(不包含业务逻辑的),还有一些简单的日志记录之类的。第二个工具包就是简单的http请求,做了一个简单的封装。WeChatCore.dll是核心业务dll主要目录结构如下:

基于C#简单实现的微信网页版接口主要目录结构

​​首先Common文件夹下包含有

基于C#简单实现的微信网页版接口Common

​包含此三个工具类,

CommonMethodCallBackHandlers.cs提供一些方法回调,比如收到信息,发送信息,登录,扫码等等一系列交互回调。

MethodsHelper​.cs主要是一些产生微信协议随机字段跟字符串的帮助方法。

NotifyPropertyChanged.cs是一个属性变化通知方法,用来当某个字段属性变化时,执行某个动作,在下载头像中有用到。​

​此目录下三个类中重点关注下CommonMethodCallBackHandlers类,因为它直接决定了数据传输跟交互。

基于C#简单实现的微信网页版接口控件

​这个是最早的一个头像下载控件,继承自Image​,后来就没有用它

基于C#简单实现的微信网页版接口基础定义

​​Data文件夹本来是要放置一个登陆后的id的,但是后来工作忙了就没有实现。DefineClass是一系列的定义方法。CommonDefine.cs包含有一些基本的数据定义比如cookie缓存之类的,之所以放到这,我不想http部分承担太多业务层,ConfigDefine.cs配置日志,自动回复等本地存储的根路径。DirectoryDefine​.cs主要是创建一些基础的目录,比如声音,图像,视频之类的。LogPathDefine.cs主要是一些日志存储路径。UrlDefine.cs包含了所有的请求Url的定义。

基于C#简单实现的微信网页版接口实体类

​百分之九十九为微信交互协议生成的实体类,注意一个类MsgEntity.cs  为自定义外部交互信息类,所有你想要的信息操作都在这里。​

基于C#简单实现的微信网页版接口枚举类

​主要是一些基本数据的枚举,待补充。

基于C#简单实现的微信网页版接口引用和默认头像

​主要是引用的一些外部dll跟党头像没有下载下来时候的默认图像。

基于C#简单实现的微信网页版接口主体业务类

基于C#简单实现的微信网页版接口内部结构

​其中包含一系列的静态方法,直接调用即可。

初始化方法如下

基于C#简单实现的微信网页版接口调用方式

​​先注册一系列的回调函数,然后调用WeChat.InitInitWeChatRobot();此方法***放到异步线程中调用,主线程会卡死界面。

第一次瞎写,你们还是看代码吧、、、​

地址

https://gitee.com/tangmanger/WeChatCore

git


https://gitee.com/tangmanger/WeChatCore.git ​

https://gitee.com/tangmanger/EasyWeChatClient.git (简单例子)​​​​​

最近有点忙已经很久没来的及更新这个了