//参数只能为数字的
var g_version=encodeURIComponent("201309220930");
var g_pt_version=encodeURIComponent("10047");//发布版本号
var g_qtarget=encodeURIComponent("-1");
var isLoadVC = false;
var g_appid =encodeURIComponent("501004106");
var g_uin = 0;
var g_domain = encodeURIComponent("qq.com");
var g_target = encodeURIComponent("_self");
var g_https = true;
var g_low_login=encodeURIComponent("0");
var g_login_sig=encodeURIComponent("2mK7RUAmDy6JI3tSvPOs3PkLas*mM6g2bqffMx6dIvs11MiWf8mMDkPhm0UW3htZ"); //安全参数
var g_daid=encodeURIComponent("164");//业务隔离id
var g_regmaster=encodeURIComponent("");//双登陆态
var g_forget="http://ptlogin2.qq.com/ptui_forgetpwd";
咱们能够经过var g_login_sig的值获得login_sig。css
ptui_checkVC('0','!XLF','\x00\x00\x00\x00\x02\x0b\x88\xe6');
返回的值有三个,第一个0表示不须要验证码,1表示须要验证码。当第一个为0的时候,第二个参数为验证码,第三个参数为uin,能够理解为验证码标识吧。
若是须要验证码,请求返回的是:
ptuiCB('0','0','http://ptlogin4.web2.qq.com/check_sig?pttype=1&uin=34310374&service=login&nodirect=0
&ptsig=DhJ8N-3qER1eSKmIoHFix*0LcUQN1IqG7XASHP1RzxE_&s_url=
http%3A%2F%2Fw.qq.com%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',
'0','登陆成功!', '飞无痕落无声');
返回的结果的第三个值,是须要继续302的一个地址
继续请求这个地址,这个地址主要的做用是赋值cookie和跳转。
请求完毕后,接着进行第二次登录。
第二次登录
第二次登录是一个post请求,请求的参数以下
{"retcode":0,"result":{"uin":34310374,"cip":2084660302,"index":1075,"port":47529,"status":"online","vfwebqq"
:"1571c0e077478cad6b3a36c159a1845f391ce90909f155be3022f1
c87
42b60f526354e2513105467",
"psessionid":"83
68046764001d636f6e6e7365727665725f77656271714031302e3133332e34312e383400003d8800001e
a00162020b88e66d
0000000a406771476958665165796d000000281571c0e077478cad6b3a36c159a1845f391ce90909f155be3022f1c8742b60f526354e2513105467"
,
"user_state":0,"f":0}}
retcode为0表是登陆成功了,后面的psessionid等参数再后面获取qq联系人和发消息会用到,下篇文章会讲到。
至此,SmartQQ登陆完毕,这里面要主要的到时用HttpWebRequest的时候遇到cookie跨域的时候,某些cookie会访问不到,必须手动修改cookie的域,这个问题折腾了很多时间,腾讯的cookie是好几个子域的。
点击下载代码,欢迎你们交流和期待下面的文章,that'all。