【完全开源】微信客户端.NET版

目录

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

说明

前两天比较闲,研究了一下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协议,开源有益,多谢点赞!

时间: 2024-12-20 13:00:45

【完全开源】微信客户端.NET版的相关文章

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

一.项目介绍 基于Vue2.5.6+Vuex+vue-cli+vue-router+vue-gemini-scrollbar+swiper+elementUI等技术混合架构开发的仿微信web端聊天室——vueWebChat,实现了发送消息.表情(动图),图片.视频预览,右键菜单.截屏.截图可直接粘贴至文本框进行发送. 二.技术框架 MVVM框架:Vue2.5.6 状态管理:Vuex 页面路由:Vue-router iconfont图标:阿里巴巴字体图标库 自定义滚动条:vue-gemini-sc

网页设置只能在手机微信客户端访问,禁止在电脑端访问包括微信电脑版

<script type="text/javascript"> function checkFlag(){ var userType=navigator.userAgent; var Agents=["Android","iPhone","SymbianOS","Windows Phone","iPad","iPod"]; var flag=false;

微信支付.NET版开发总结,好多坑

前2天,做一个手机网页的微信支付的项目,费了好些周折,记录一下. [坑1]官方邮件中下载的demo只有PHP版本,其他版本没有给链接.可能让人误以为只有PHP版本,事实上,各种版本都有. 拿到了腾讯发给客户的,微信支付商户资料,邮件中提示:证书的详细使用方案,请查看微信支付开发接口文档.根据邮件微信支付开发接口文档的链接,定向到一个新的邮件附件,里面的内容: 3. 使用公众号发起支付请求 使用JS API在微信的网页中发起支付请求,详细方法见文档中有关JS API的章节. 微信支付接口文档及de

微信开发本地调试工具(模拟微信客户端)

微信部署需要依靠80端口,如何快速有效的调试本地微信开发程序, 捷微团队(jeewx-java微信开源系统),采用微信开发调试工具, 供本地开发测试: 第一个参数:http://localhost:8080/jeewx/wechatController.do?wechat 第二个参数:微信公众账号的原始ID 微信开发调试功能.rar 69.42 KB, 阅读权限: 10, 下载次数: 19 微信开发本地调试工具(模拟微信客户端),布布扣,bubuko.com

捷微jeewx , 免费开源微信公众账号开发平台

敏捷微信开发平台,简称"捷微", 捷微jeewx是一款免费开源的微信公众账号管理系统. 官方QQ群:  287090836 官网:    http://www.jeewx.com 平台介绍: 一.简介 jeewx是一个开源,高效,简洁的微信开发平台,采用JAVA语言基于jeecg这个企业级快速开发框架实现的. jeewx的目的是最大化的简化微信开发的流程,使用开发者能把最好的精力放到微信具体业务开发,并能以最快的时间完成.把一些常规而频繁的工作交由jeewx来处理即可,平台兼备的代码生

新版一元云购源码 1元购网站 一元夺宝源码微信商城手机版建站

新版一元云购源码 1元购网站 一元夺宝源码微信商城手机版建站,有10多年的技术团队开发定制,打造,需要定制,私聊我,谢谢. 全局功能:系统设置通过系统设置,可设置网页版.手机版.微信版.APP的基本信息,比如名称.Logo.文章.邮箱.短信.支付接口等.01全局功能:自定义界面系统目前已开源,支持自定义模版和标签文案修改,一个兼职程序员即可修改模版和任何文案,可高度化修改为站长想要的样子.02全局功能:SEO优化针对模版里的每个单页面,进行了全面的优化,从Sitemap.关键词.描述.图片ALT

开源中国客户端侧滑菜单效果实现

欢迎关注左上角Android技术分享公众号(小红人). 这篇文章将记录一些关于DrawerLayout的基本用法,我想关于DrawerLayout的用法也许有不少不够了解,这也是比较正常的事情,因为DrawerLayout作为Android组件是Google后来在android中添加的,在android.support.v4包下. 这里用开源中国手机客户端的截图来说明一下,这个DrawerLayout抽屉式布局是什么样子的. 好,大家已经看到了,当我们手指在屏幕左侧向右滑动时候,就会有一个抽屉式

微信支付.NET版开发总结(JS API),好多坑,适当精简

前2天,做一个手机网页的微信支付的项目,费了好些周折,记录一下.接下来,按照开发步骤,细数一下,我遇到的那些坑. [坑1]官方邮件中下载的demo只有PHP版本,其他版本没有给链接.可能让人误以为只有PHP版本,事实上,各种版本都有. 拿到了腾讯发给客户的,微信支付商户资料,邮件中提示:证书的详细使用方案,请查看微信支付开发接口文档.根据邮件微信支付开发接口文档的链接,定向到一个新的邮件附件,里面的内容: 3. 使用公众号发起支付请求 使用JS API在微信的网页中发起支付请求,详细方法见文档中

微信支付.NET版开发总结(JS API),好多坑,适当精简。

前2天,做一个手机网页的微信支付的项目,费了好些周折,记录一下.接下来,按照开发步骤,细数一下,我遇到的那些坑. [坑1]官方邮件中下载的demo只有PHP版本,其他版本没有给链接.可能让人误以为只有PHP版本,事实上,各种版本都有. 拿到了腾讯发给客户的,微信支付商户资料,邮件中提示:证书的详细使用方案,请查看微信支付开发接口文档.根据邮件微信支付开发接口文档的链接,定向到一个新的邮件附件,里面的内容: 3. 使用公众号发起支付请求 使用JS API在微信的网页中发起支付请求,详细方法见文档中