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:0 好友VerifyFlag:56 系统
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; }