zoukankan      html  css  js  c++  java
  • 【完全开源】微信客户端.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协议,开源有益,多谢点赞!

  • 相关阅读:
    php发送http请求带json格式数据
    a标签跳转,打开一个新页面
    echarts图例多行显示,并且全部对齐
    原子性,有序性,可见性
    winds消息大全
    C#中的结构体和对象区别
    装饰者模式
    hashMapp
    linux 定时任务
    windsServer2008设置定时重启
  • 原文地址:https://www.cnblogs.com/xiaozhi_5638/p/4923811.html
Copyright © 2011-2022 走看看