【完全开源】微信客户端.NET版
2023-02-18 16:36:54 时间
目录
前两天比较闲,研究了一下web版微信。因为之前看过一篇博客讲微信web协议的,后来尝试分析了一下,半途中发现其实没什么意义,但又不想半途而废,所以最后做出了一个这样子的demo。功能比较少,跟官方客户端功能差不多(其实要差一些:))。大概原理就是使用WebRequest请求数据,demo中代码写得比较乱,但是关键地方都有注释。先看一下截图:
代码已经上传到github,有需要的可以看一下:
能做:
- 二维码登录;
- 加载最近联系人;
- 加载所有好友;
- 聊天;
- 查看好友信息。
不能做:
- 不能收发复杂消息(实际上除了字符串之外都不能,表情我没有解析,你如果发送[拥抱],别人还是能收到正确的表情);
- 不能看朋友圈;
- 懒得写了,其他功能都不能。
打开 wx.qq.com ,按F12,然后手机扫描二维码登录,一切过程都能看到:
过程大概如下:
- 访问url获取回话ID;
- 根据会话ID获取二维码;
- 显示二维码;
- 循环判断二维码是否已被扫描(如果已经扫描,是否已点击“登录”);
- 如果用户点击了手机上的“登录”,服务器会返回一个特定的url,访问该url,服务器会返回登录相关的cookie(保存cookie到本地);
- 初始化微信(初始化的时候,会返回一部分最近联系人);
- 加载全部好友;
- 根据需要加载好友头像等等;
- 循环判断服务器上是否有数据更新(比如收到了别人的消息);
- 如果有更新,则同步数据;
- 返回第9步。
每步需要的具体url我就不详说了,网上有。我代码中也有(只是有点烂)。
源码中用到了一些开源代码和一些工具:
- Webkit.NET(用于聊天框、自带的Webbrowser兼容不行);
- json.net(解析服务器返回的json数据)
- chrome(浏览器 按F12 大家都懂的)
注:登录后一段时间,数据同步经常出现1205错误,导致接收不到别人发过来的消息,该错误暂时还未解决,下次找到原因了再更新。
所有源码均遵循MIT协议,开源有益,多谢点赞!
相关文章
- 中秋节,华为云AI送上超级大月亮制作教程,体验赢开发者键鼠套装
- VLDB'22 HiEngine极致RTO论文解读
- 强扩展、强一致、高可用…GaussDB成为游戏行业的心头爱
- 推理网络精度不达标,5个方法轻松搞定
- 一文带你认知定时消息发布RocketMQ
- 手把手教你君正X2000开发板的OpenHarmony环境搭建
- 遥居前列!华为云GaussDB再获行业权威验证
- 云图说丨初识分布式消息服务Kafka版
- Karmada v1.3:更优雅 更精准 更高效
- CodeLab:一款让你体验丝滑般的云化JupyterLab
- OpenHarmony3.0如何轻松连接华为云IoT设备接入平台?
- GaussDB(for Redis)双活容灾支持4大应用场景,为业务安全保驾护航
- 大规模数据如何实现数据的高效追溯?
- 百万奖池角逐,华为云IoT边缘带你看懂“边缘计算开发者大赛”
- 如何用AscendCL的接口开发网络模型推理场景下应用?
- 天呐,我居然可以隔空作画了
- 从零教你使用MindStudio进行Pytorch离线推理全流程
- 一文带你认识AscendCL
- 从原理剖析带你理解Stream
- 不信谣不传谣,亲自动手验证ModelBox推理是否真的“高性能”