【转】【完全开源】微信客户端.NET版
目录
说明
前两天比较闲,研究了一下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协议,开源有益,多谢点赞!
【转】【完全开源】微信客户端.NET版的更多相关文章
- 微信网页版APP - 网页微信客户端电脑版体验
微信网页版很早就出来了,解决了很多人上班不能玩手机的问题.微信电脑版-网页微信客户端,直接安装在桌面的微信网页版,免去了开浏览器的麻烦.双击就启动了,和其他的应用程序一样:运行过程中可以隐藏在桌面右下 ...
- 【完全开源】微信客户端.NET版
目录 说明 功能 原理步骤 一些参考 说明 前两天比较闲,研究了一下web版微信.因为之前看过一篇博客讲微信web协议的,后来尝试分析了一下,半途中发现其实没什么意义,但又不想半途而废,所以最后做出了 ...
- vue仿微信网页版|vue+web端聊天室|仿微信客户端vue版
一.项目介绍 基于Vue2.5.6+Vuex+vue-cli+vue-router+vue-gemini-scrollbar+swiper+elementUI等技术混合架构开发的仿微信web端聊天室— ...
- NET版微信客户端.
微信客户端.NET版 目录 说明 功能 原理步骤 一些参考 说明 前两天比较闲,研究了一下web版微信.因为之前看过一篇博客讲微信web协议的,后来尝试分析了一下,半途中发现其实没什么意义,但又不想半 ...
- 在 Ubuntu 上使用微信客户端
原文地址: http://www.myzaker.com/article/5979115d1bc8e08c30000071/ 在这个快速信息交互时代,无论是工作还是生活,都需要频繁的网络社交,而在中国 ...
- 微信支付.NET版开发总结(JS API),好多坑,适当精简
前2天,做一个手机网页的微信支付的项目,费了好些周折,记录一下.接下来,按照开发步骤,细数一下,我遇到的那些坑. [坑1]官方邮件中下载的demo只有PHP版本,其他版本没有给链接.可能让人误以为只有 ...
- 微信支付.NET版开发总结(JS API),好多坑,适当精简。
前2天,做一个手机网页的微信支付的项目,费了好些周折,记录一下.接下来,按照开发步骤,细数一下,我遇到的那些坑. [坑1]官方邮件中下载的demo只有PHP版本,其他版本没有给链接.可能让人误以为只有 ...
- 微信客户端+微信公众平台+新浪云SAE+Arduino+WS100(控制LED)
第一步:准备 1.智能手机微信客户端或微信电脑版 2.注册微信公众平台 https://mp.weixin.qq.com 3.注册新浪账号 http://www.sinacloud.com 4.拥有一 ...
- 微信客户端+微信公众平台+新浪云SAE+Arduino+WS100(控制LED)
第一步:准备 1.智能手机微信客户端或微信电脑版 2.注册微信公众平台 https://mp.weixin.qq.com 3.注册新浪账号 http://www.sinacloud.com 4.拥有一 ...
随机推荐
- python学习笔记----面向对象
面向对象 类:成员变量(属性) 方法(操作成员变量) 出一个场景:玩过游戏.主人公,进入了一个场景,有10个小怪物是一样的.有攻击力,血(100格).如果小怪物有多个数值需要管理,小怪物的血量.小怪物 ...
- 警惕 MySql 更新 sql 的 WHERE 从句中的 IN() 子查询时出现的性能陷阱
警惕 MySql 更新 sql 的 WHERE 从句中的 IN() 子查询时出现的性能陷阱 以下文章来源:https://blog.csdn.net/defonds/article/details/4 ...
- Win10下VirtualBox安装流程
一.VirtualBox简介 VirtualBox 是一款开源的虚拟机软件,最初由美国SUN公司开发,后来SUN被Oracle收购,VirtualBox 更名为Oracle VirtualBox .不 ...
- 【读书笔记】segment routing mpls数据平面-2
- es 服务器搭建
安装jdk,原系统安装的openjava 参考https://www.cnblogs.com/Dylansuns/p/6974272.html注意配置/etc/profile 时,要注意自己安装的是哪 ...
- ORA-12541:TNS:无监听程序
1.OracleServiceORCL确认已经在服务中启动 2.OracleOraDb11g_home1TNSListener确认已经在服务中启动 3.服务端listener.ora和tnsnames ...
- css,html备忘录
1.background:url()#000 ;代表当图片不够充满容器时,用黑色填满. 2.height:inherit;继承父级元素的高度. 当子元素给了绝对定位,父元素不给相对定位,子元素也能适配 ...
- selenium使用技巧
标签(空格分隔): selenium 我们进行selenium的时候,就是通过webdriver,对浏览器做一些操作的: webdriver,除了find操作,之外还有哪些方法和属性呢? 1.获取当前 ...
- Oracle主从同步、双向同步的配置
(本教程展示了Windows环境的oracle数据库主从同步,Linux环境一样也可以) (把主数据库obpm 和从数据库orcl 用实际的数据库名给替换掉) (配置主从同步后,再配置双向同步,可能会 ...
- 解决Oracle数据库空间不足问题
//查询表空间的大小以及文件路径地址select tablespace_name, file_id, file_name,round(bytes/(1024*1024),0) total_space ...