zoukankan      html  css  js  c++  java
  • WPF 微信 MVVM 【续】修复部分用户无法获取列表

    看过我WPF 微信 MVVM这篇文章的朋友,应该知道我里面提到了我有一个小号是无法获取列表的,始终也没找到原因。

    前两天经过GitHub上h4dex大神的指导,知道了原因,是因为微信在登录以后,web微信采取了不同的域名来兼容各种用户。

    下面是大神提供的js代码和C#代码

    function ()
    {
        var e = location.host,
        t = 'weixin.qq.com',
        o = 'file.wx.qq.com',
        n = 'webpush.weixin.qq.com';
        e.indexOf('wx2.qq.com') >  - 1 ? (t = 'weixin.qq.com', o = 'file2.wx.qq.com', n = 'webpush2.weixin.qq.com')
         : e.indexOf('qq.com') >  - 1 ? (t = 'weixin.qq.com', o = 'file.wx.qq.com', n = 'webpush.weixin.qq.com')
         : e.indexOf('web1.wechat.com') >  - 1 ? (t = 'wechat.com', o = 'file1.wechat.com', n = 'webpush1.wechat.com')
         : e.indexOf('web2.wechat.com') >  - 1 ? (t = 'wechat.com', o = 'file2.wechat.com', n = 'webpush2.wechat.com')
         : e.indexOf('wechat.com') >  - 1 ? (t = 'wechat.com', o = 'file.wechat.com', n = 'webpush.wechat.com')
         : e.indexOf('web1.wechatapp.com') >  - 1 ? (t = 'wechatapp.com', o = 'file1.wechatapp.com', n = 'webpush1.wechatapp.com')
        : (t = 'wechatapp.com', o = 'file.wechatapp.com', n = 'webpush.wechatapp.com');
    }
    js
    public object LoginCheck()
    {
        if(this.string_0 != null)
        {
            string[] strArray = new string[6];
            strArray[0] = this.string_7;
            strArray[1] = this.string_0;
            strArray[2] = "&tip=0&r=";
            TimeSpan span = (TimeSpan)(DateTime.Now.ToUniversalTime() - new DateTime(0x7b2, 1, 1));
            long totalMilliseconds = (long) span.TotalMilliseconds;
            strArray[3] = totalMilliseconds.ToString();
            strArray[4] = "&_=";
            span = (TimeSpan)(DateTime.Now.ToUniversalTime() - new DateTime(0x7b2, 1, 1));
            strArray[5] = ((long) span.TotalMilliseconds).ToString();
            byte[] bytes = this.httpService_0.SendGetRequest(string.Concat(strArray));
            string str2 = Encoding.UTF8.GetString(bytes);
            if(str2.Contains("=201"))
            {
                string s = str2.Split(new string[] { "'" }, StringSplitOptions.None)[1].Split(new char[] { ',' })[1];
                byte[] buffer = Convert.FromBase64String(s);
                MemoryStream stream = new MemoryStream(buffer, 0, buffer.Length);
                stream.Write(buffer, 0, buffer.Length);
                return Image.FromStream(stream);
            }
            if(str2.Contains("=200"))
            {
                string str3 = str2.Split(new string[] { """ }, StringSplitOptions.None)[1];
                string domain = CheckData.Getdomain(str3);
                if(domain.IndexOf("wx2.qq.com") > -1)
                {
                    this.string_1 = "https://wx2.qq.com/";
                    this.string_2 = "https://wx2.qq.com";
                    this.string_4 = "https://file2.wx.qq.com";
                    this.string_3 = "https://webpush2.weixin.qq.com";
                    return str3;
                }
                if(domain.IndexOf("qq.com") > -1)
                {
                    this.string_2 = "https://wx.qq.com";
                    this.string_4 = "https://file.wx.qq.com";
                    this.string_3 = "https://webpush.weixin.qq.com";
                    return str3;
                }
                if(domain.IndexOf("web1.wechat.com") > -1)
                {
                    this.string_2 = "https://web.wechat.com";
                    this.string_4 = "https://file1.wechat.com";
                    this.string_3 = "https://webpush1.wechat.com";
                    return str3;
                }
                if(domain.IndexOf("web2.wechat.com") > -1)
                {
                    this.string_2 = "https://web.wechat.com";
                    this.string_4 = "https://file2.wechat.com";
                    this.string_3 = "https://webpush2.wechat.com";
                    return str3;
                }
                if(domain.IndexOf("wechat.com") > -1)
                {
                    this.string_2 = "https://web.wechat.com";
                    this.string_4 = "https://file.wechat.com";
                    this.string_3 = "https://webpush.wechat.com";
                    return str3;
                }
                if(domain.IndexOf("web1.wechatapp.com") > -1)
                {
                    this.string_2 = "https://web.wechatapp.com";
                    this.string_4 = "https://file1.wechatapp.com";
                    this.string_3 = "https://webpush1.wechatapp.com";
                    return str3;
                }
                this.string_2 = "https://web.wechatapp.com";
                this.string_4 = "https://file.wechatapp.com";
                this.string_3 = "https://webpush.wechatapp.com";
                return str3;
            }
        }
        return null;
    }
    C#

    根据其方法,我进行了修改,可以实现登录以后的后续操作了。

    如图,就是小号登录以后,可以获取列表了

    修改后的代码已上传GitHub

  • 相关阅读:
    Javascript+css 实现网页换肤功能
    pdf版电子书
    网络编辑日常工作流程大观
    实例构造器和类型构造器的一些比较
    详解在Win2003安装光盘中集成SCSI驱动
    css学习日记
    Asp.net开发常用DOS命令
    hosts表的作用
    对于Redis中设置了过期时间的Key,你需要知道这些内容
    为什么领导不喜欢提拔老实人?退休的领导说出了实话
  • 原文地址:https://www.cnblogs.com/ZXdeveloper/p/6231935.html
Copyright © 2011-2022 走看看