webQQ3.0协议 webqq3.0

通过firebug等工具,可以很直观的分析出来,webqq3的登录过程如下:(假设qq号为888888)
1、GET:http://ptlogin2.qq.com/check?appid=1003903&uin=888888
通过分析,其中appid大部分是1003903,可以固定为这个。

服务器返回如下格式:
ptui_checkVC('0','!ZLE');//不需要图片验证码,红字为验证码,不需要用户输入ptui_checkVC('1', *'95ab7db15e5ab17f50f25d33598259e83ccc098c4af2f8a4')//需要验证码,红色为获取验证码图片的信息

2、GET:http://captcha.qq.com/getimage?aid=1003903&uin=888888&vc_type=95ab7db15e5ab17f50f25d33598259e83ccc098c4af2f8a4
这时返回验证码图片

3、第一次登陆握手:
 http://ptlogin2.qq.com/login?u=888888&p=密码&verifycode=验证码&remenber_uin=1&aid=1003903&u1=http://web3.qq.com/loginproxy.html&h=1&ptredirect=0&ptlang=2052&from_ui=1&pttype=1&dumy=&fp=loginerroralert

  密码是经过多次md5转换后的值,转换函数我放到在最后。验证码如果需要图片的话,就是图片上的字符,否则就是那个!开头的字符串,后面红色的是ajax的跳转信息,必须要。
  这次登陆,相当于试探登陆,并非真正的登陆,服务器返回有以下几种格式:ptuiCB('0','0', *'http://web2.qq.com/loginproxy.html?strong=true','0','登录成功!');
ptuiCB('4','0','','0','您输入的验证码有误,请重试。');
ptuiCB('3','0','','0','您输入的密码有误,请重试。');


4、真正的登陆,这次登陆是独占是登陆,也就是说,另一地方正在使用的同一账号,会被挤下线。
POST:http://d.web2.qq.com/channel/login2//这就是web3.0的登陆地址
 post数据:{"status":""online"","ptwebqq":"","passwd_sig":"","clientid":""}//登录信息 online也就是我在线上,共有六种信息后面两个东西是cookie里的东西,在上面的登陆步骤中,会得到的
 

这次登陆,返回的cookies中,有两个东西必须保存起来,算是通信密钥吧,从qq上线到离线的整个周期,都需要:
vfwebqq 和 psessionid

到现在,登陆完毕。

在以后的整个过程中,会发现,所有的通信内容都是都是提交JSON与获取JSON数据,很方便处理。

下面贴上md5换算的js函数:



var chrsz=8;var mode=32;var hexcase=1;
function preprocess(A){ var B=""; B+=A.verifycode.value; B=B.toUpperCase(); A.p.value=md5(md5_3(A.p.value)+B); return true;}
function md5_3(B){ var A=new Array; A=core_md5(str2binl(B),B.length*chrsz); A=core_md5(A,16*chrsz); A=core_md5(A,16*chrsz); returnbinl2hex(A);}
function md5(A){ return hex_md5(A);}
function hex_md5(A){ returnbinl2hex(core_md5(str2binl(A),A.length*chrsz));}


function str_hmac_md5(A,B){ returnbinl2str(core_hmac_md5(A,B));}

function core_md5(K,F){ K[F>>5]|=128<<((F)2); K[(((F+64)>>>9)<<4)+14]=F; var J=1732584193; var I=-271733879; var H=-1732584194; var G=271733878; for(varC=0;C<K.length;C+=16){ var E=J; var D=I; var B=H; var A=G; J=md5_ff(J,I,H,G,K[C+0],7,-680876936); G=md5_ff(G,J,I,H,K[C+1],12,-389564586); H=md5_ff(H,G,J,I,K[C+2],17,606105819); I=md5_ff(I,H,G,J,K[C+3],22,-1044525330); J=md5_ff(J,I,H,G,K[C+4],7,-176418897); G=md5_ff(G,J,I,H,K[C+5],12,1200080426); H=md5_ff(H,G,J,I,K[C+6],17,-1473231341); I=md5_ff(I,H,G,J,K[C+7],22,-45705983); J=md5_ff(J,I,H,G,K[C+8],7,1770035416); G=md5_ff(G,J,I,H,K[C+9],12,-1958414417); H=md5_ff(H,G,J,I,K[C+10],17,-42063); I=md5_ff(I,H,G,J,K[C+11],22,-1990404162); J=md5_ff(J,I,H,G,K[C+12],7,1804603682); G=md5_ff(G,J,I,H,K[C+13],12,-40341101); H=md5_ff(H,G,J,I,K[C+14],17,-1502002290); I=md5_ff(I,H,G,J,K[C+15],22,1236535329); J=md5_gg(J,I,H,G,K[C+1],5,-165796510); G=md5_gg(G,J,I,H,K[C+6],9,-1069501632); H=md5_gg(H,G,J,I,K[C+11],14,643717713); I=md5_gg(I,H,G,J,K[C+0],20,-373897302); J=md5_gg(J,I,H,G,K[C+5],5,-701558691); G=md5_gg(G,J,I,H,K[C+10],9,38016083); H=md5_gg(H,G,J,I,K[C+15],14,-660478335); I=md5_gg(I,H,G,J,K[C+4],20,-405537848); J=md5_gg(J,I,H,G,K[C+9],5,568446438); G=md5_gg(G,J,I,H,K[C+14],9,-1019803690); H=md5_gg(H,G,J,I,K[C+3],14,-187363961); I=md5_gg(I,H,G,J,K[C+8],20,1163531501); J=md5_gg(J,I,H,G,K[C+13],5,-1444681467); G=md5_gg(G,J,I,H,K[C+2],9,-51403784); H=md5_gg(H,G,J,I,K[C+7],14,1735328473); I=md5_gg(I,H,G,J,K[C+12],20,-1926607734); J=md5_hh(J,I,H,G,K[C+5],4,-378558); G=md5_hh(G,J,I,H,K[C+8],11,-2022574463); H=md5_hh(H,G,J,I,K[C+11],16,1839030562); I=md5_hh(I,H,G,J,K[C+14],23,-35309556); J=md5_hh(J,I,H,G,K[C+1],4,-1530992060); G=md5_hh(G,J,I,H,K[C+4],11,1272893353); H=md5_hh(H,G,J,I,K[C+7],16,-155497632); I=md5_hh(I,H,G,J,K[C+10],23,-1094730640); J=md5_hh(J,I,H,G,K[C+13],4,681279174); G=md5_hh(G,J,I,H,K[C+0],11,-358537222); H=md5_hh(H,G,J,I,K[C+3],16,-722521979); I=md5_hh(I,H,G,J,K[C+6],23,76029189); J=md5_hh(J,I,H,G,K[C+9],4,-640364487); G=md5_hh(G,J,I,H,K[C+12],11,-421815835); H=md5_hh(H,G,J,I,K[C+15],16,530742520); I=md5_hh(I,H,G,J,K[C+2],23,-995338651); J=md5_ii(J,I,H,G,K[C+0],6,-198630844); G=md5_ii(G,J,I,H,K[C+7],10,1126891415); H=md5_ii(H,G,J,I,K[C+14],15,-1416354905); I=md5_ii(I,H,G,J,K[C+5],21,-57434055); J=md5_ii(J,I,H,G,K[C+12],6,1700485571); G=md5_ii(G,J,I,H,K[C+3],10,-1894986606); H=md5_ii(H,G,J,I,K[C+10],15,-1051523); I=md5_ii(I,H,G,J,K[C+1],21,-2054922799); J=md5_ii(J,I,H,G,K[C+8],6,1873313359); G=md5_ii(G,J,I,H,K[C+15],10,-30611744); H=md5_ii(H,G,J,I,K[C+6],15,-1560198380); I=md5_ii(I,H,G,J,K[C+13],21,1309151649); J=md5_ii(J,I,H,G,K[C+4],6,-145523070); G=md5_ii(G,J,I,H,K[C+11],10,-1120210379); H=md5_ii(H,G,J,I,K[C+2],15,718787259); I=md5_ii(I,H,G,J,K[C+9],21,-343485551); J=safe_add(J,E); I=safe_add(I,D); H=safe_add(H,B); G=safe_add(G,A); } if(mode==16){ return Array(I,H); }else{ return Array(J,I,H,G); }}
function md5_cmn(F,C,B,A,E,D){ returnsafe_add(bit_rol(safe_add(safe_add(C,F),safe_add(A,D)),E),B);}
function md5_ff(C,B,G,F,A,E,D){ returnmd5_cmn((B&G)|((~B)&F),C,B,A,E,D);}
function md5_gg(C,B,G,F,A,E,D){ returnmd5_cmn((B&F)|(G&(~F)),C,B,A,E,D);}
function md5_hh(C,B,G,F,A,E,D){ returnmd5_cmn(B^G^F,C,B,A,E,D);}
function md5_ii(C,B,G,F,A,E,D){ returnmd5_cmn(G^(B|(~F)),C,B,A,E,D);}
function core_hmac_md5(C,F){ var E=str2binl(C); if(E.length>16){ E=core_md5(E,C.length*chrsz); } varA=Array(16),D=Array(16); for(varB=0;B<16;B++){ A[B]=E[B]^909522486; D[B]=E[B]^1549556828; } varG=core_md5(A.concat(str2binl(F)),512+F.length*chrsz); returncore_md5(D.concat(G),512+128);}
function safe_add(A,D){ varC=(A&65535)+(D&65535); varB=(A>>16)+(D>>16)+(C>>16); return(B<<16)|(C&65535);}
function bit_rol(A,B){ return(A<<B)|(A>>>(32-B));}
function str2binl(D){ var C=Array(); varA=(1<<chrsz)-1; for(varB=0;B<D.length*chrsz;B+=chrsz){ C[B>>5]|=(D.charCodeAt(B/chrsz)&A)<<(B2); } return C;}
webQQ3.0协议 webqq3.0
function binl2str(C){ var D=""; varA=(1<<chrsz)-1; for(varB=0;B<C.length*32;B+=chrsz){ D+=String.fromCharCode((C[B>>5]>>>(B2))&A); } return D;}
function binl2hex(C){ varB=hexcase?"0123456789ABCDEF":"0123456789abcdef"; var D=""; for(varA=0;A<C.length*4;A++){ D+=B.charAt((C[A>>2]>>((A%4)*8+4))&15)+B.charAt((C[A>>2]>>((A%4)*8))&15); } return D;}

  

爱华网本文地址 » http://www.413yy.cn/a/25101017/350263.html

更多阅读

ActionScript3.0基础教程 actionscript2.0和3.0

增强Flash和ActionScript开发技能的唯一办法就是实践!何为程序?程序是一系列的指令集合或步骤。每一步涉及对某一段信息或数据的处理。第一章 ActionScript3.0简介基于Flash平台交互应用的关键就是“体验”。添加声音,视频,动画的能

通用电气 工业4.0 “工业4.0来了”,我们怎么办?

时下工业4.0的概念被媒体炒得火热,被学院派专家教授演绎的淋漓尽致。企业界似乎一夜之间被忽悠的不知所以然,诚惶诚恐寝食难安明天的饭碗在哪里。工业4.0好像近在咫尺,如同一场暴风雨马上要来临。人无远虑必有近忧,未雨绸缪总比坐以待

企业2.0 企业2.0 与大数据

系列专题:大数据营销     2006年,哈佛商学院教授(现任麻省理工大学教授)安德鲁·P.麦卡菲(Andrew P.McAfee)在斯隆管理论坛上第一次提出企业2.0(Enterprise 2.0)的概念,意指Web 2.0会给企业管理模式带来根本性的变化。虽然学术界对此有

大众点评:Web2.0到LBS2.0

   Web2.0已经不足以描述大众点评了,尽管在过去好几年的时间里,它一直是生活服务类2.0的翘楚。  今年年初的时候,投资大众点评网的光速创投董事总经理宓群就注意到,大众点评的手机端流量已经超过了PC 端流量。而今年8月的数据显

csol神器时代2.0 便利店2.0时代

 “新型零售业需要的不是经济学,而是心理学。”铃木敏文用这句话创造了24小时营业的7-11,以及便利店文化。   当便利店发展到今天,它已经不仅仅是直面顾客的“心理学”,还有一整套支持它的经济学系统。便利店已经变成我们生活中最重

声明:《webQQ3.0协议 webqq3.0》为网友爺傷風敗俗分享!如侵犯到您的合法权益请联系我们删除