微信网页版接口

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
using System.Threading;
using System.Net;
using System.IO;
using System.Drawing;
using System.Xml;
using System.Text.RegularExpressions;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System.Security.Cryptography;
using System.Collections; 


namespace WxBean
{
    class WxUtils
    {
        //自身数据
        SelfBean selfData;
        //联系人数据
        List<FriendBean> friends;
        //最近人数据
        List<FriendBean> currentData;
        string url_params="";
        string message="";
        string skey="";
        string wxsid="";
        string wxuin="";
        string pass_ticket="";
        string isgrayscale="";
        string SyncKey="";
        string syncCheckKey = "";
        string uuid="";
        string webwx_data_ticket="";
        string pic_url = "https://wx2.qq.com/cgi-bin/mmwebwx-bin/webwxgetmsgimg";
        string pic_url_qq = "https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxgetmsgimg";
        string vidoe_url = "https://wx2.qq.com/cgi-bin/mmwebwx-bin/webwxgetvideo";
        string vidoe_url_qq = "https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxgetvideo";
        string cookie = "pgv_pvi=6709982208; webwxuvid=eac6c967c1de446c73c08acc64904546218df93ddfedacbf78aeb8150ab77b8f76c2abd11d782cf5b59b46ffb9ca213e; pgv_si=s1867008000; ";
        private static WxUtils Instance = new WxUtils();
        List<MessageBean> lastMessage = new List<MessageBean>();//上一次的数据记录


        private WxUtils()
        {


        }


        public static WxUtils getInstance()
        {
            return Instance;
        }




        //获取自身的信息
        public SelfBean getSelfConfig()
        {
            return selfData;
        }


        //设置好友列表
        public void setFriendContacts(List<FriendBean> friends)
        {
            this.friends = friends;
        }


        //获取好友列表
        public List<FriendBean> getFriendContacts()
        {
            return friends;
        }


        //返回cookie给别人用
        public string getCookieData()
        {
            return cookie;
        }




        //这个是获取二维码,保扩先获取uuid在
        public Bitmap getWx_Code()
        {
            uuid = getUUID();
            if (uuid == null)
                return null;
            return getQR_Code(uuid);
        }


        //获取UUID
        private string getUUID()
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://login.weixin.qq.com/jslogin?appid=wx782c26e4c19acffb&redirect_uri=https%3A%2F%2Fwx.qq.com%2Fcgi-bin%2Fmmwebwx-bin%2Fwebwxnewloginpage&fun=new&lang=zh_CN&_=" + getTimeStap());
            request.Method = "GET";
            request.ContentType = "text/html;charset=UTF-8";


            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            Stream myResponseStream = response.GetResponseStream();
            StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.UTF8);
            string retString = myStreamReader.ReadToEnd();
            myStreamReader.Close();
            myResponseStream.Close();
            string[] results = retString.Split(new char[] { ';' });
            if (results[0].IndexOf("200") > -1)
            {
                string tempReuslt = results[1];
                tempReuslt = tempReuslt.Replace("window.QRLogin.uuid = ", "");
                tempReuslt = tempReuslt.Replace("\"", "");
                tempReuslt = tempReuslt.Replace(" ", "");
                return tempReuslt;


            }
            else
            {
                return null;
            }
        }


        //获取时间戳
        public string getTimeStap()
        {
            DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1, 0, 0, 0, 0));


            DateTime nowTime = DateTime.Now;


            long unixTime = (long)Math.Round((nowTime - startTime).TotalMilliseconds, MidpointRounding.AwayFromZero);
            return unixTime + "";
        }




        //获取二维码(这获取的图片是200*200的)
        private Bitmap getQR_Code(string param)
        {
            if (param == null)
                return null;
            string url = "https://login.weixin.qq.com/qrcode/" + param;
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
            request.Method = "GET";
            request.ContentType = "text/html;charset=UTF-8";


            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            Stream myResponseStream = response.GetResponseStream();
            Bitmap image = new Bitmap(myResponseStream);
            myResponseStream.Close();
            Bitmap result = GetImageThumb(image, new Size(200, 200));
            return result;
        }


        //压缩图片
        public Bitmap GetImageThumb(Bitmap mg, Size newSize)
        {
            double ratio = 0d;
            double myThumbWidth = 0d;
            double myThumbHeight = 0d;
            int x = 0;
            int y = 0;
            Bitmap bp;
            if ((mg.Width / Convert.ToDouble(newSize.Width)) > (mg.Height /
            Convert.ToDouble(newSize.Height)))
                ratio = Convert.ToDouble(mg.Width) / Convert.ToDouble(newSize.Width);
            else
                ratio = Convert.ToDouble(mg.Height) / Convert.ToDouble(newSize.Height);
            myThumbHeight = Math.Ceiling(mg.Height / ratio);
            myThumbWidth = Math.Ceiling(mg.Width / ratio);
            Size thumbSize = new Size((int)newSize.Width, (int)newSize.Height);
            bp = new Bitmap(newSize.Width, newSize.Height);
            x = (newSize.Width - thumbSize.Width) / 2;
            y = (newSize.Height - thumbSize.Height);
            System.Drawing.Graphics g = Graphics.FromImage(bp);
            g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
            g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
            g.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality;
            Rectangle rect = new Rectangle(x, y, thumbSize.Width, thumbSize.Height);
            g.DrawImage(mg, rect, 0, 0, mg.Width, mg.Height, GraphicsUnit.Pixel);
            return bp;
        }




        //等待验证
        public string wait_login()
        {
            string url = "https://login.weixin.qq.com/cgi-bin/mmwebwx-bin/login?tip=0&uuid=" + uuid + "&_=" + getTimeStap();
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
            request.Method = "GET";
            request.ContentType = "text/html;charset=UTF-8";


            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            Stream myResponseStream = response.GetResponseStream();
            StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.UTF8);
            string retString = myStreamReader.ReadToEnd();
           myStreamReader.Close();
            myResponseStream.Close();
            string[] result = retString.Split(new char[] { ';' });
            string code_result = result[0].Replace("window.code=", "");
            if (code_result != "200")
                return null;
            else
            {
                string url_result = result[1].Replace("window.redirect_uri=", "");
                url_result = url_result.Replace("\"", "");
                url_result = url_result.Replace(" ", "");
                url_result = url_result.Replace("\n", "");
                url_params = url_result;
                return "success";
            }
        }




        //获取cookie
        private string getCookie()
        {
            //string url = "https://wx2.qq.com/cgi-bin/mmwebwx-bin/webwxnewloginpage?" + url_params + "&fun=new";
            string url = url_params + "&fun=new";
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
            request.Method = "GET";
            request.ContentType = "text/html;charset=UTF-8";
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            string data = response.GetResponseHeader("Set-Cookie");
            string[] temps = Regex.Split(data, "GMT,", RegexOptions.IgnoreCase);
            int len = temps.Length;
            cookie += "wxpluginkey="+getTimeStap()+"; ";
            for (int i = 0; i < len; i++)
            {
                string temp = temps[i];
                int index = temp.IndexOf(";");


                cookie += temp.Substring(0, index + 1) + " ";
            }
            cookie += "mm_lang=zh_CN; MM_WX_NOTIFY_STATE=1; MM_WX_SOUND_STATE=1";
            decodeData_ticket(temps);


            Stream myResponseStream = response.GetResponseStream();
            StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.UTF8);
            string retString = myStreamReader.ReadToEnd();
            myStreamReader.Close();
            myResponseStream.Close();
            XmlDocument doc = new XmlDocument();
            doc.LoadXml(retString);
     
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值