收发消息"/>
C#实现smartQQ 扫码登录分析自动收发消息
前几天看到群里有个机器人大家各种玩,本人刚好也是做软件,心想别人能做自己闲着没事也做个试试。废话不多说直接进入正题,第一次发帖写的不好的地方大家可以一起探讨。首先访问smartQQ 的最新地址:。
腾讯可能考虑的安全方便所以现在只能用手机扫描二维码再授权登录。之前输入用户名密码那种形式显然是不行了。不多说还是直接抓包分析吧:
[img=/upload/201603/29/1459241519_565250.jpg][/img]
本人是用的火狐来进行抓包分析,当然大家也可以用其他的浏览器,这个是看个人喜好了,抓包发现浏览器会不停的发送请求
=10&remember_uin=1&login2qq=1&aid=501004106&u1=.html?login2qq=1&webqq_type=10&ptredirect=0&ptlang=2052&daid=164&from_ui=1&pttype=1&dumy=&fp=loginerroralert&action=0-2-252603&mibao_css=m_webqq&t=undefined&g=1&js_type=0&js_ver=10152&login_sig=&pt_randsalt=0
直接上代码吧,本人是用C#写的,大家也可以用其他语言做做,为什么用C#呢,第一当然是会用,第二嘛就是做cs界面比较方便。贴一些代码供大家参考一下
这个是获取二维码的方法,好像也没什么好多说的,唯一需要注意的是必须将返回的cookie保留
public static void get_logincs()
{
string url = "=164&target=self&style=16&mibao_css=m_webqq&appid=501004106&enable_qlogin=0&no_verifyimg=1&s_url=http%3A%2F%2Fw.qq%2Fproxy.html&f_url=loginerroralert&strong_login=1&login_state=10&t=20131024001";
HttpWebResponse res = null;
Encoding myEncoding = Encoding.UTF8;
Stream st = null;
StreamReader sr = null;
HttpWebRequest req = null;
try
{
req = (HttpWebRequest)WebRequest.Create(url);
req.KeepAlive = true;
req.Method = "GET";
req.AllowAutoRedirect = true;
req.CookieContainer = CookieContainers;
req.ContentType = "application/x-www-form-urlencoded";
req.UserAgent = IE7;
req.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
req.Timeout = 20000;
req.Referer = "";
if (!string.IsNullOrEmpty(""))
{
req.Host = "";
}
req.Headers.Add("X-Requested-With", "XMLHttpRequest");
if (!string.IsNullOrEmpty(""))
{
req.Headers.Add("Origin", "");
}
System.Net.ServicePointManager.ServerCertificateValidationCallback += (se, cert, chain, sslerror) =>
{
return true;
};
if (req.GetResponse() != null)
{
res = (HttpWebResponse)req.GetResponse();
st = res.GetResponseStream();
if (res.ContentEncoding.ToLower().Contains("gzip"))
{
st = new GZipStream(st, CompressionMode.Decompress);
}
sr = new StreamReader(st, myEncoding);
if (res.Cookies.Count > 0)
{
addcookeis(res.Cookies);
}
}
}
catch (WebException ex)
{
string error = string.Empty;
if (ex.Response != null)
{
res = (HttpWebResponse)ex.Response;
st = res.GetResponseStream();
sr = new StreamReader(st, myEncoding);
error = sr.ReadToEnd();
}
}
}
这个是第一次登录操作,也需要把返回的cookie保存:
public static Stream get_imgshow()
{
string url = "=501004106&e=0&l=M&s=5&d=72&v=4&t=0.20737422284902096";
//HttpWebRequest req = (HttpWebRequest)WebRequest.Create(new Uri(url));
HttpWebResponse res = null;
Encoding myEncoding = Encoding.UTF8;
Stream st = null;
StreamReader sr = null;
HttpWebRequest req = null;
try
{
req = (HttpWebRequest)WebRequest.Create(url);
req.KeepAlive = true;
req.Method = "GET";
req.AllowAutoRedirect = true;
req.CookieContainer = CookieContainers;
req.ContentType = "application/x-www-form-urlencoded";
req.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:43.0) Gecko/20100101 Firefox/43.0";
req.Accept = "*/*";
req.Timeout = 20000;
req.Headers.Add("X-HttpWatch-RID", " 46990-10314");
req.Headers.Add("Accept-Language", "zh-Hans-CN,zh-Hans;q=0.8,en-US;q=0.5,en;q=0.3");
req.Referer = "=164&target=self&style=16&mibao_css=m_webqq&appid=501004106&enable_qlogin=0&no_verifyimg=1&s_url=http%3A%2F%2Fw.qq%2Fproxy.html&f_url=loginerroralert&strong_login=1&login_state=10&t=20131024001";
if (!string.IsNullOrEmpty(""))
{
req.Host = "";
}
req.Headers.Add("X-Requested-With", "XMLHttpRequest");
if (!string.IsNullOrEmpty(""))
{
req.Headers.Add("Origin", "");
}
req.CookieContainer.Add(qq2016.c1);
//System.Net.ServicePointManager.ServerCertificateValidationCallback += (se, cert, chain, sslerror) =>
//{
// return true;
//};
if (req.GetResponse() != null)
{
res = (HttpWebResponse)req.GetResponse();
st = res.GetResponseStream();
//if (res.ContentEncoding.ToLower().Contains("gzip"))
//{
// st = new GZipStream(st, CompressionMode.Decompress);
//}
sr = new StreamReader(st, myEncoding);
if (res.Cookies.Count > 0)
{
addcookeis(res.Cookies);
}
}
return st;
}
catch (WebException ex)
{
string error = string.Empty;
if (ex.Response != null)
{
res = (HttpWebResponse)ex.Response;
st = res.GetResponseStream();
sr = new StreamReader(st, myEncoding);
error = sr.ReadToEnd();
}
return st;
}
}
未验证返回值是ptuiCB('66','0','','0','二维码未失效。(1974472612)', '');
授权后返回
ptuiCB('0','0','=1&uin=3259629949&service=ptqrlogin&nodirect=0&ptsigx=09dfc7cf023d1d3d2e296372461715bde0bf526018aeb13620ccca5db93af0e11a657550d10fb856756b2ddfae36c2b84e5d4652178b2f49619f26cadd96fce1&s_url=http%3A%2F%2Fw.qq%2Fproxy.html%3Flogin2qq%3D1%26webqq_type%3D10&f_url=&ptlang=2052&ptredirect=100&aid=501004106&daid=164&j_later=0&low_login_hour=0®master=0&pt_login_type=3&pt_aid=0&pt_aaid=16&pt_light=0&pt_3rd_aid=0','0','登录成功!', '11111');
这样就完成了第一次get登录。
今天先到这里吧,改天再上post登录的分析
更多推荐
C#实现smartQQ 扫码登录分析自动收发消息
发布评论