目录

  • 说明
  • 功能
  • 原理步骤
  • 一些参考

说明

前两天比较闲,研究了一下web版微信。因为之前看过一篇博客讲微信web协议的,后来尝试分析了一下,半途中发现其实没什么意义,但又不想半途而废,所以最后做出了一个这样子的demo。功能比较少,跟官方客户端功能差不多(其实要差一些:))。大概原理就是使用WebRequest请求数据,demo中代码写得比较乱,但是关键地方都有注释。先看一下截图:

 

 

代码已经上传到github,有需要的可以看一下:

源码下载

功能

能做:

  • 二维码登录;
  • 加载最近联系人;
  • 加载所有好友;
  • 聊天;
  • 查看好友信息。

不能做:

  • 不能收发复杂消息(实际上除了字符串之外都不能,表情我没有解析,你如果发送[拥抱],别人还是能收到正确的表情);
  • 不能看朋友圈;
  • 懒得写了,其他功能都不能。

原理步骤

打开 wx.qq.com ,按F12,然后手机扫描二维码登录,一切过程都能看到:

过程大概如下:

  1. 访问url获取回话ID;
  2. 根据会话ID获取二维码;
  3. 显示二维码;
  4. 循环判断二维码是否已被扫描(如果已经扫描,是否已点击“登录”);
  5. 如果用户点击了手机上的“登录”,服务器会返回一个特定的url,访问该url,服务器会返回登录相关的cookie(保存cookie到本地);
  6. 初始化微信(初始化的时候,会返回一部分最近联系人);
  7. 加载全部好友;
  8. 根据需要加载好友头像等等;
  9. 循环判断服务器上是否有数据更新(比如收到了别人的消息);
  10. 如果有更新,则同步数据;
  11. 返回第9步。

每步需要的具体url我就不详说了,网上有。我代码中也有(只是有点烂)。

一些参考

源码中用到了一些开源代码和一些工具:

  • Webkit.NET(用于聊天框、自带的Webbrowser兼容不行);
  • json.net(解析服务器返回的json数据)
  • chrome(浏览器 按F12 大家都懂的)

注:登录后一段时间,数据同步经常出现1205错误,导致接收不到别人发过来的消息,该错误暂时还未解决,下次找到原因了再更新。

所有源码均遵循MIT协议,开源有益,多谢点赞!

作者:周见智 
出处:http://www.cnblogs.com/xiaozhi_5638/ 
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

分类: .NET Framework,Windows Forms
本文转自周见智博客博客园博客,原文链接:http://www.cnblogs.com/xiaozhi_5638/p/4923811.html,如需转载请自行联系原作者

【完全开源】微信客户端.NET版相关推荐

  1. 类网页版微信客户端.NET版

    目录 说明 功能 原理步骤 一些参考 说明 前两天比较闲,研究了一下web版微信.因为之前看过一篇博客讲微信web协议的,后来尝试分析了一下,半途中发现其实没什么意义,但又不想半途而废,所以最后做出了 ...

  2. vue仿微信网页版|vue+web端聊天室|仿微信客户端vue版

    一.项目介绍 基于Vue2.5.6+Vuex+vue-cli+vue-router+vue-gemini-scrollbar+swiper+elementUI等技术混合架构开发的仿微信web端聊天室- ...

  3. react仿微信web版聊天室|仿微信客户端react版

    基于react+react-dom+react-router-dom+redux+react-redux+webpack+nodeJs等技术混合开发的手机端仿微信界面聊天室--reactChatRoo ...

  4. mac 微信客户端破解版下载地址

    http://www.9553.com/mac/mac_6498.html

  5. 网页版登录入口_企业微信网页版怎么登录?企业微信客户端和网页版有什么区别?...

    文丨语鹦企服私域管家原创,未经授权不得转载 企业微信有网页版也有客户端,很多小伙伴可能搞不清,今天语鹦企服就带你一起看看,企业微信客户端和网页版有什么区别?以及如何登录使用. ▎企业微信网页版: 与微 ...

  6. 适合编程初学者的开源项目:小游戏2048(微信小程序版)

    目标 为编程初学者打造入门学习项目,使用各种主流编程语言来实现. 2048游戏规则 一共16个单元格,初始时由2或者4构成. 1.手指向一个方向滑动,所有格子会向那个方向运动. 2.相同数字的两个格子 ...

  7. crmeb打通版开源微信公众号小程序商城框架源码

    crmeb是什么? crmeb是一套客户管理加电商营销系统,基于ThinkPhp6.0+Vue采用前后端分离模式开发,前后台都具有非常标准的API接口,是一款非常优秀的开源微信端及小程序商城框架,能够 ...

  8. 网页版linux客户端,网页版微信将关闭,Linux开发者哭惨

    原标题:网页版微信将关闭,Linux开发者哭惨 微信目前已经成为了大部分人的通讯方式之一,尤其是在职场人士之间,超过了QQ的地位.而最近微信网页端已经逐渐被关停,部分用户已经出现了无法登陆的情况. 在 ...

  9. 开源leaflet地图组件的微信小程序版——leafletwx

    leafletwx开源地址:leafletwx leaflet库的微信小程序版(使用小程序原生组件view+image显示瓦片,并非web-view方式) leafletwx在leaflet的基础上开 ...

最新文章

  1. 图片在容器里垂直居中
  2. 组策略部署软件----将部署的软件分类
  3. 肺部ct重建_肺部CT血管分割及三维重建
  4. zip与zip(*)
  5. D - Let's Watch Football(数学 思维)
  6. 删除 多个表_合并汇总多个工作簿多个工作表,删除修改新增更新内容只需刷新...
  7. php无嵌套遍历多维数组,不递归怎么遍历多维数组(维数不定)
  8. 获取数据库内容放入下拉框中
  9. Confluence 6 SQL 异常的问题解决
  10. opencv转单通道python_在OpenCv(Python)中查找单通道图像的目录
  11. 计算机关机后耗电问题,笔记本电脑关机后电池还会耗电怎么解决
  12. 冰点下载器手机版apk_冰点文库下载器app下载
  13. 简单html倒计时器代码,js简单倒计时实现代码
  14. 如何更改itunes备份位置_itunes备份路径是什么,如何修改itunes备份路径
  15. 【电脑操作】【鼠标】无线鼠标无反应怎么办?
  16. 别瞎学了,我的MySQL学习之路(超详细超硬核)
  17. 四川省内江市启动公共视频监控三期建设
  18. springboot生成条形码并直接输出显示
  19. ce修改植物大战僵尸阳光
  20. OSI 七层网络结构

热门文章

  1. iframe中跨域页面访问parent的方法
  2. linux vim 配置文件(高亮+自动缩进+行号+折叠+优化)
  3. Intelligent Factorial Factorization LightOJ - 1035(水题)
  4. bzoj1207: [HNOI2004]打鼹鼠
  5. android 不能接收组播数据,但能够发送组播数据
  6. tomcat做成服务
  7. .net framework 2.0 Silent install(.net framework 静默安装)
  8. IS2009制作Oracle 静默安装包(二) 感谢空白先生特许授权
  9. SQL Server返回当前实例系统日期和时间的函数
  10. 第三方免费开放API 获取用户IP 并查询其地理位置