以下内容仅供学习用,请勿用于其它用途,由此引起的责任本人概不负责
==============================================================
1.首先要拿到返回的验证码,即返回的url中的方法ptui_checkVC('0','!AEX')中的那个!AEX, 最为登录连接里面的一个参数。具体的连接可以通过抓包来分析。如下:
http://ptlogin2.qq.com/check?uin=(你的登录id,如果是QQ号,直接写,如果是用户名,则为@你的用户名)&appid=46000101(固定值,从页面源码中可以获得)&r=0.6708040986412029(随机值,Math.random()获得) 但是这个r值和获得验证码很有关系。因为验证码是有一定的有效时间的。如果不一致那么就会验证失败。
具体的代码可以在login_v.js中获得。
2. 登录密码的编码方式不一样!!!!!!通过如下两个串可以看出
http://ptlogin2.qq.com/login?u=@someone&p=0237B72DCE67D2866EF71E36112B5349&verifycode=!DDY&aid=46000101&u1=http%3A%2F%2Ft.qq.com&ptredirect=1&h=1&from_ui=1&dumy=&fp=loginerroralert
http://ptlogin2.qq.com/login?u=@someone&p=216B6ADAC19678197C97AB1844154422&verifycode=!2ZC&aid=46000101&u1=http%3A%2F%2Ft.qq.com&ptredirect=1&h=1&from_ui=1&dumy=&fp=loginerroralert
其计算方法可以在login_v.js中得出来
if (E[A].name == "p") {
var F = "";
F += E.verifycode.value;
F = F.toUpperCase();
B += md5(md5_3(E.p.value) + F);
}
其中verifycode为第一步中传入的值,也可以在连接中得出。B为最后得到的连接,如上两个所示
那么关键就是要得到MD5()和MD5_3()的函数是什么了。幸运的是这些代码在login_v.js这个文件华中有。那么剩下的就是编码了。有两个方法,一个是通过java改写这两段代码,另一个方法就是利用javascript引擎自动调用这些js代码,本着学习的态度可以用第一个方法。本着偷懒+节约开发时间+浪费执行时间+增加代码灵活性的态度可以采用第二个方法。
3. 其次要通过ping.js里的函数计算出cookie里面其他的项
有如下几个项的值要获取到:
a)pgv_pvid 是通过如下方法按时间随机生成
var curDate = new Date();
var curMs = curDate.getUTCMilliseconds();
pvidtmp = (Math.round(Math.random() * 2147483647) * curMs) % 10000000000;
pvUserid = pvidtmp;
pvNewUser = 1;
pgvRealSetCookie("pgv_pvid=" + pvidtmp);
b)pgv_flv=10.2 r152 浏览器flash版本固定值
c) pgv_info=ssid 通过如下方法按照时间生成
var curDate = new Date();
var curMs = curDate.getUTCMilliseconds();
ssid = "s" + (Math.round(Math.random() * 2147483647) * curMs) % 10000000000;
pgvSetSessionCookie("ssid", ssid);
d) pgv_r_cookie通过如下方法按时间随机生成
var pvDate = new Date();
pgvRealSetCookie("pgv_r_cookie=" + pvDate.getYear() % 100 + (pvDate.getUTCMonth() + 1) + pvDate.getUTCDate() + pvDate.getUTCMilliseconds() + Math.round(Math.random() * 100000));