我的上一篇博客 《检测本地是否登录了指定QQ》 中介绍了通过QQ官方页面来获取已登陆QQ信息的方法,
通过对QQ页面中js文件的研究,我们可以更进一步的获取到更多信息!
下面我们就来一步一步分析下,
首先来看一下上次文章中提到的js中的一个关键函数:
function hummer_loaduin(){
q_aUinList.length=0;
var P=q_hummerQtrl.DoOperation(1,g_vOptData);
if(null==P)
{ return }
try{
var M=P.GetArray("PTALIST");
var T=M.GetSize();
var O="";
var F=document.getElementById("list_uin");
for(var U=0;U<T;U++)
{
var C=M.GetData(U);
var R=C.GetDWord("dwSSO_Account_dwAccountUin");
var G="";
var J=C.GetByte("cSSO_Account_cAccountType");
var S=R;
if(J==1)
{
try{
G=C.GetArray("SSO_Account_AccountValueList");
S=G.GetStr(0)
}
catch(Q)
{}
}
var K=0;
try{
K=C.GetWord("wSSO_Account_wFaceIndex")
}
catch(Q)
{K=0}
var L="";
try{
L=C.GetStr("strSSO_Account_strNickName")
}
catch(Q)
{L=""}
var D=C.GetBuf("bufGTKey_PTLOGIN");
var E=C.GetBuf("bufST_PTLOGIN");
var I="";
var A=E.GetSize();
for(var N=0;N<A;N++)
{
var B=E.GetAt(N).toString("16");
if(B.length==1)
{B="0"+B}
I+=B
}
var H={uin:R,name:S,type:J,face:K,nick:L,key:I};
q_aUinList[U]=H
}
switch(q_aUinList.length)
{
case 0:ptui_reportAttr(77430,false);break;
case 1:ptui_reportAttr(77431,false);break;
default:ptui_reportAttr(77432,false)
}
}
catch(Q){}
}
q_aUinList.length=0;
var P=q_hummerQtrl.DoOperation(1,g_vOptData);
if(null==P)
{ return }
try{
var M=P.GetArray("PTALIST");
var T=M.GetSize();
var O="";
var F=document.getElementById("list_uin");
for(var U=0;U<T;U++)
{
var C=M.GetData(U);
var R=C.GetDWord("dwSSO_Account_dwAccountUin");
var G="";
var J=C.GetByte("cSSO_Account_cAccountType");
var S=R;
if(J==1)
{
try{
G=C.GetArray("SSO_Account_AccountValueList");
S=G.GetStr(0)
}
catch(Q)
{}
}
var K=0;
try{
K=C.GetWord("wSSO_Account_wFaceIndex")
}
catch(Q)
{K=0}
var L="";
try{
L=C.GetStr("strSSO_Account_strNickName")
}
catch(Q)
{L=""}
var D=C.GetBuf("bufGTKey_PTLOGIN");
var E=C.GetBuf("bufST_PTLOGIN");
var I="";
var A=E.GetSize();
for(var N=0;N<A;N++)
{
var B=E.GetAt(N).toString("16");
if(B.length==1)
{B="0"+B}
I+=B
}
var H={uin:R,name:S,type:J,face:K,nick:L,key:I};
q_aUinList[U]=H
}
switch(q_aUinList.length)
{
case 0:ptui_reportAttr(77430,false);break;
case 1:ptui_reportAttr(77431,false);break;
default:ptui_reportAttr(77432,false)
}
}
catch(Q){}
}