微信客户端.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. 2014ACM/ICPC亚洲区域赛牡丹江站现场赛-K ( ZOJ 3829 ) Known Notation

    Known Notation Time Limit: 2 Seconds      Memory Limit: 65536 KB Do you know reverse Polish notation ...

  2. ArcGIS For Flex给定两个

    1.错误叙述性说明 2.错误原因 3.解决方案 版权声明:本文博客原创文章,博客,未经同意,不得转载.

  3. Android-IA Power Manager (S3)

    Sleep and wake up

  4. openwrt教程 第一章 物联网&openwrt开发概述

    1.1 我们的宗旨 互联网.移动互联网的时代已经过去,物联网的时代已经来临!2014年,是物联网元年,2016年,物联网将达到高潮!为了迎接该潮流,我们工作室(F403科技创意室:http://f40 ...

  5. Lichee(两) 在sun4i_crane该平台下编译

    让我们先来回顾一下编译命令 $ cd workdir/lichee $ ./build.sh -p sun4i_crane -k 3.0  lichee文件夹下的build.sh #!/bin/bas ...

  6. Android点滴---ViewHolder通用,优雅写法

    近期在做项目时,又要写 ViewHolder. 突然想到网上看看有没什么好的写法! 不知道你是不是也烦透了写那些没有技术含量的ViewHolder 看看这些.也许会有收获! 然后就找到了以下两篇文章( ...

  7. Oracle SQL Developer使用

    原文 Oracle SQL Developer使用 比较:   Plsqldev:第三方的,启动软件时快,执行sql查询时很慢 Sqldeveloper:oracle公司的,启动软件时慢,执行sql查 ...

  8. [Web Chart系列之五] 6. 实战draw2d之ConnectionRouter

    前言 ConnectionRouter 的作用是定义连线的展示样式. 是直线连接还是曲线连接(好像也是基于Bezier曲线) 位于包: draw2d.layout.connection 下. 常见的有 ...

  9. J2SE基础:1.类和对象基础

    什么是对象 在Java语言,全部的人,事物或者模块都是一个对象. 同样的对象具有一些同样的特性. 狗,猫,蛇3个对象(动物的对象) 苹果,梨,桔子3个对象(水果的对象) 什么是类 能够将现实生活中的对 ...

  10. Mysql学习笔记(一)数据类型

    原文:Mysql学习笔记(一)数据类型 学习内容: Mysql基本数据类型. 1.数字类型.. i.整型     Mysql数据类型             含义(有符号)     tinyint(m ...