微信客户端.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协议,开源有益,多谢点赞!

作者:周见智

NET版微信客户端.的更多相关文章

  1. 微信电脑版-微信for windows客户端发布

    12月份微信Windows版客户端1.0 Alpha推出,昨天微信for windows 1.0客户端(测试版)发布更新,超过三亿人使用的聊天应用,现在登录Windows桌面.你可以在Windows上 ...

  2. 微信团队分享:iOS版微信是如何防止特殊字符导致的炸群、APP崩溃的?

    本文来自微信开发团队yanyang的技术分享. 1.引言 相信大家都遇到过一段特殊文本可以让iOS设备所有app闪退的经历.前段时间大年初一,又出现某个印度语字符引起iOS11系统奔溃,所幸iOS版微 ...

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

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

  4. 微信网页版APP - 网页微信客户端电脑版体验

    微信网页版很早就出来了,解决了很多人上班不能玩手机的问题.微信电脑版-网页微信客户端,直接安装在桌面的微信网页版,免去了开浏览器的麻烦.双击就启动了,和其他的应用程序一样:运行过程中可以隐藏在桌面右下 ...

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

    [转][完全开源]微信客户端.NET版 目录 说明 功能 原理步骤 一些参考 说明 前两天比较闲,研究了一下web版微信.因为之前看过一篇博客讲微信web协议的,后来尝试分析了一下,半途中发现其实没什 ...

  6. 微信电脑版微信1.1 for Windows更新 可@人/转发撤回消息/可播小视频

    微信电脑版微信1.1 for Windows发布更新了,版本号为1.1.0.18,群聊可@人/可转发撤回消息/可播小视频,功能越来越接近微信手机版了. 本次更新的一些新特点: 群聊中可以@人. 消息可 ...

  7. Android学习之路——简易版微信为例(三)

    最近好久没有更新博文,一则是因为公司最近比较忙,另外自己在Android学习过程和简易版微信的开发过程中碰到了一些绊脚石,所以最近一直在学习充电中.下面来列举一下自己所走过的弯路: (1)本来打算前端 ...

  8. Android学习之路——简易版微信为例(二)

    1 概述 从这篇博文开始,正式进入简易版微信的开发.深入学习前,想谈谈个人对Android程序开发一些理解,不一定正确,只是自己的一点想法.Android程序开发不像我们在大学时候写C控制台程序那样, ...

  9. 微信客户端+微信公众平台+新浪云SAE+Arduino+WS100(控制LED)

    第一步:准备 1.智能手机微信客户端或微信电脑版 2.注册微信公众平台 https://mp.weixin.qq.com 3.注册新浪账号 http://www.sinacloud.com 4.拥有一 ...

随机推荐

  1. java中HashMap在多线程环境下引起CPU100%的问题解决(转)

    最近项目中出现了Tomcat占用CPU100%的情况,原以为是代码中出现死循环,后台使用jstack做了dump,发现是系统中不合理使用HashMap导致出现了死循环(注意不是死锁). 产生这个死循环 ...

  2. HDU 1241 :Oil Deposits

    Oil Deposits Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Tot ...

  3. Balsamiq Mockups注册码

    Name: personalKey: eJzzzU/OLi0odswsqilILSrOz0vMqbFEAjXONYY1fu6ufgA/CA4X Name: helloWorldKey: eJzzzU/ ...

  4. 用python调用R做数据分析-准备工作

    0.R的介绍 R是自由软件,不带不论什么担保.在某些条件下你能够将其自由散布,用'license()'或'licence()'来看散布的具体条件. R是个合作计划.有很多人为之做出了贡献,用'cont ...

  5. 百度经纬度和google经纬度互转

    原文:百度经纬度和google经纬度互转 百度地图的坐标转换,由于百度地图在GCJ02协议的基础上又做了一次处理,变为 BD09协议的坐标,以下是坐标的转化方式,可以方便和其他平台转化 private ...

  6. Visual Studio跨平台开发实战(4) - Xamarin Android基本控制项介绍

    原文 Visual Studio跨平台开发实战(4) - Xamarin Android基本控制项介绍 前言 不同于iOS,Xamarin 在Visual Studio中针对Android,可以直接设 ...

  7. Yii 控制dropdownlist / select 控件的宽度和 option 的宽度

    默认情况下, option的宽度会由options中最宽的元素决定,并且同时决定着select控件的宽度 在Yii中,如果需要自定义select控件的宽度,可以用 htmlOptions定义,如下: ...

  8. mac_Mac环境下怎样编写HTML代码?

    在Mac环境下,使用默认的文本编辑器编写的HTML的源代码, 使用不同的浏览器打开后,依旧还是显示源代码 推荐使用UltraEdit,问题就迎刃而解了

  9. IOS_多线程_ASI_AFN_UIWebView

    H:/0730/00_多线程4票种_ViewController.h // // ViewController.h // 卖票 // // Created by apple on 13-7-29. / ...

  10. "Cannot find entry symbol nable-stdcll-fixup; defaulting to 00401000" 解决方案

    在使用Qt 4.7.3, Qt 4.7.2 ,Qt 4.7.1(mingw 4.6.2 )的时候都会有一个问题无法编译通过,即用Qt Creator 编译的时候会发生一个错误 "Cannot ...