基于C#简单实现的微信网页版接口
一、想法来源
作为程序员,对自己工具不满,就要去改造,对于微信已经厌恶极久了。总有人不合时宜的发语音,总有老板无时无刻的艾特,总有微商群发各种消息。重点是不能忍受语音。当现有客户端不能满足要求,心中无限郁闷,想着做一个客户端,去回怼那些发语音的人。
二、初期准备
最开始想从手机微信客户端动手,奈何抓包看的我头疼,后来想到用Fiddler(比较友好易用)去抓微信网页版,就开始了各种抓包之旅。
三、目录接口
因为是第一次写类似的类库,中间迭代重写了好几次,主要包含CommonTools.dll,HttpHelper.dll跟一个WeChatCore.dll,第一个工具包,提供简单工具类,例如一些扩展方法处理(不包含业务逻辑的),还有一些简单的日志记录之类的。第二个工具包就是简单的http请求,做了一个简单的封装。WeChatCore.dll是核心业务dll主要目录结构如下:
主要目录结构
首先Common文件夹下包含有
Common
包含此三个工具类,
CommonMethodCallBackHandlers.cs提供一些方法回调,比如收到信息,发送信息,登录,扫码等等一系列交互回调。
MethodsHelper.cs主要是一些产生微信协议随机字段跟字符串的帮助方法。
NotifyPropertyChanged.cs是一个属性变化通知方法,用来当某个字段属性变化时,执行某个动作,在下载头像中有用到。
此目录下三个类中重点关注下CommonMethodCallBackHandlers类,因为它直接决定了数据传输跟交互。
控件
这个是最早的一个头像下载控件,继承自Image,后来就没有用它
基础定义
Data文件夹本来是要放置一个登陆后的id的,但是后来工作忙了就没有实现。DefineClass是一系列的定义方法。CommonDefine.cs包含有一些基本的数据定义比如cookie缓存之类的,之所以放到这,我不想http部分承担太多业务层,ConfigDefine.cs配置日志,自动回复等本地存储的根路径。DirectoryDefine.cs主要是创建一些基础的目录,比如声音,图像,视频之类的。LogPathDefine.cs主要是一些日志存储路径。UrlDefine.cs包含了所有的请求Url的定义。
实体类
百分之九十九为微信交互协议生成的实体类,注意一个类MsgEntity.cs 为自定义外部交互信息类,所有你想要的信息操作都在这里。
枚举类
主要是一些基本数据的枚举,待补充。
引用和默认头像
主要是引用的一些外部dll跟党头像没有下载下来时候的默认图像。
主体业务类
内部结构
其中包含一系列的静态方法,直接调用即可。
初始化方法如下
调用方式
先注册一系列的回调函数,然后调用WeChat.InitInitWeChatRobot();此方法最好放到异步线程中调用,主线程会卡死界面。
第一次瞎写,你们还是看代码吧、、、
地址
https://gitee.com/tangmanger/WeChatCore
git
https://gitee.com/tangmanger/WeChatCore.git
https://gitee.com/tangmanger/EasyWeChatClient.git (简单例子)
最近有点忙已经很久没来的及更新这个了
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
PostgreSQL 11 新特性解读: 增加对JIT(just-in-time)编译的支持提升分析型SQL执行效率
关于 JIT PostgreSQL 11 版本的一个重量级新特性是引入了 JIT (Just-in-Time) 编译来加速SQL中的表达式计算效率。 JIT 表达式的编译使用LLVM项目编译器的架构来提升在WHERE条件、指定列表、聚合以及一些内部操作表达式的编译执行。 使用 JIT 必须在首先编译安装 LLVM ,之后编译安装 PostgreSQL 时设置 --with-llvm 选项,本文主要包括两部分,如下: CentOS7 编译安装 LLVM。 CentOS7 编译安装PostgreSQL 11,启用并演示 JIT。 JIT 使用场景 JIT 常用于CPU密集型SQL(分析统计SQL),执行很快的SQL使用JIT由于产生一定开销,反而可能引起性能下降。 手册 Release说明 Add Just-in-Time (JIT) compilation of some parts of query plans to improve execution speed (Andres Freund) This feature requires LLVM to be available. I...
- 下一篇
前端杂谈: DOM event 原理
前端杂谈: DOM event 原理 DOM 事件是前端开发者习以为常的东西. 事件的监听和触发使用起来都非常方便, 但是他们的原理是什么呢? 浏览器是怎样处理 event绑定和触发的呢? 让我们通过实现一个简单的event 处理函数, 来详细了解一下. 首先, 如何注册 event ? 这个相比大家都很清楚了, 有三种注册方式: html 标签中注册 <button onclick="alert('hello!');">Say Hello!</button> 给 DOM 节点的 onXXX 属性赋值 document.getElementById('elementId').onclick = function() { console.log('I clicked it!') } 使用 addEventListener() 注册事件 (好处是能注册多个 event handler) document.getElementById('elementId').addEventListener( 'click', function() { console.log('I...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS6,CentOS7官方镜像安装Oracle11G