C# 微信网页协议 代码记录

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace WxServer
{
    public class 微信登陆类
    {

        /// <summary>
        /// 获取UUID
        /// </summary>
        /// <returns></returns>
        public static string UUID()
        {
            string appid = "wx782c26e4c19acffb";
            try
            {
                string getUUID_url = "https://login.weixin.qq.com/jslogin?appid=" + appid;//UUID的URL地址
                byte[] bytes = Http.网页请求.WebRequest(getUUID_url, "GET", "");//GET提交并返回数据
                string uuid = Encoding.UTF8.GetString(bytes).Split(new string[] { "\"" }, StringSplitOptions.None)[1];//从返回的Byte中提取出UUID参数
                return uuid;//得到UUID
            }
            catch
            {
                return null;
            }

        }

        /// <summary>
        /// 获取二维码图片
        /// </summary>
        /// <returns></returns>
        public static byte[] showQrCode(string uuid)
        {
            try
            {
                if (uuid != null)
                {
                    string showQrCode_url = "https://login.weixin.qq.com/qrcode/" + uuid;//二维码请求URL
                    byte[] bytes = Http.网页请求.WebRequest(showQrCode_url + "?t=webwx", "GET", "");//GET提交并返回数据
                    return bytes;
                }
                else
                {
                    return null;
                }
            }
            catch
            {
                return null;
            }
        }
        /// <summary>
        /// 检查是否登陆
        /// </summary>
        /// <returns></returns>
        public static object waitForLogin(string uuid)
        {
            try
            {
                string waitForLogin_url = "https://login.weixin.qq.com/cgi-bin/mmwebwx-bin/login?loginicon=true&uuid=" + uuid;
                byte[] bytes = Http.网页请求.WebRequest(waitForLogin_url, "GET", "");//GET提交并返回数据
                string login_ini = Encoding.UTF8.GetString(bytes);//BYTE转换为字符串
                if (login_ini.Contains("201"))//返回201说明在手机端已扫描,还没点击确认登陆
                {
                    string base64_image = login_ini.Split(new string[] { "\'" }, StringSplitOptions.None)[1].Split(',')[1];//从返回数据中提取出头像
                    byte[] base64_image_bytes = Convert.FromBase64String(base64_image);//头像字符转转换成Byte
                    return base64_image_bytes;
                }
                else
                if (login_ini.Contains("=200"))//返回200说明手机端已点击确认,并返回跳转地址
                {
                    string redirect_url = login_ini.Split(new string[] { "\"" }, StringSplitOptions.None)[1];//从返回数据中提取出跳转地址
                    return redirect_url;
                }
                else
                {
                    return null;
                }
            }
            catch
            {
                return null;
            }
        }
        /// <summary>
        /// 访问登陆地址获取参数
        /// </summary>
        /// <param name="login_redirect"></param>
        public static void Login(string login_redirect)
        {
            try
            {
                byte[] bytes = Http.网页请求.WebRequest(login_redirect + "&fun=new&version=v2&lang=zh_CN", "GET", "");//GET提交请求并返回数据
                string message = Encoding.UTF8.GetString(bytes);//从数组转换成字符串
                WXConfig.skey = message.Split(new string[] { "skey" }, StringSplitOptions.None)[1].TrimStart('>').TrimEnd('<', '/');//从字符串中提取skey
                WXConfig.uin = message.Split(new string[] { "wxuin" }, StringSplitOptions.None)[1].TrimStart('>').TrimEnd('<', '/');//从字符串中提取wxuin
                WXConfig.sid = message.Split(new string[] { "wxsid" }, StringSplitOptions.None)[1].TrimStart('>').TrimEnd('<', '/');//从字符串中提取wxsid
                WXConfig.pass_ticket = message.Split(new string[] { "pass_ticket" }, StringSplitOptions.None)[1].TrimStart('>').TrimEnd('<', '/');//从字符串中提取pass_ticket
                Console.WriteLine("skey=>>" + WXConfig.skey);
                Console.WriteLine("uin=>>" + WXConfig.uin);
                Console.WriteLine("sid=>>" + WXConfig.sid);
                Console.WriteLine("pass_ticket=>>" + WXConfig.pass_ticket);
            }
            catch
            {

            }
        }
    }
}



联系人 URL:https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxgetcontact

VerifyFlag:8 公从号 个人
VerifyFlag:24 公众号 企业
VerifyFlag:56 系统
VerifyFlag:0 好友

            try
            {
                string getContact_url = "https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxgetcontact?pass_ticket={0}&r={1}&seq=0&skey={2}";

                foreach (CookieItem s in HttpCookieHelper.GetCookieList(Http.网页请求.Cookie))
                {
                    if (s.Key.Contains("webwxuvid"))
                    {
                        Cookies += HttpCookieHelper.CookieFormat(s.Key, s.Value);
                    }
                    if (s.Key.Contains("webwx_auth_ticket"))
                    {
                        Cookies += HttpCookieHelper.CookieFormat(s.Key, s.Value);
                    }
                    if (s.Key.Contains("webwx_data_ticket"))
                    {
                        Cookies += HttpCookieHelper.CookieFormat(s.Key, s.Value);
                    }
                }

                Cookies += "wxuin=" + WXConfig.uin;
                Cookies += ";wxloadtime=" + wxloadtime;
                Cookies += ";last_wxuin=" + WXConfig.uin;
                Cookies += ";wxsid=" + WXConfig.sid;
                Cookies += ";mm_lang=zh_CN";
                Http.网页请求.Cookie = Cookies;
                getContact_url = getContact_url.Replace("{0}", WXConfig.pass_ticket).Replace("{1}", Time()).Replace("{2}", WXConfig.skey);
                byte[] bytes = Http.网页请求.WebRequest(getContact_url, "GET", "");
                string getContact_str = Encoding.UTF8.GetString(bytes);
                WriterText.Save(getContact_str);
                JObject contact_result = JsonConvert.DeserializeObject(getContact_str) as JObject;
                return contact_result;
            }
            catch
            {
                return null;
            }




  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值