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);
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);