• 关于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%3A%2F%2Fweb3.qq.com%2Floginproxy.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函数:

    /*
    调用方式:
    md5(md5_3("qq号码")+"验证码")
    */



    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);
        
    return binl2hex(A);
    }

    function md5(A){
        
    return hex_md5(A);
    }

    function hex_md5(A){
        
    return binl2hex(core_md5(str2binl(A),A.length*chrsz));
    }



    function str_hmac_md5(A,B){
        
    return binl2str(core_hmac_md5(A,B));
    }


    function core_md5(K,F){
        K[F
    >>5]|=128<<((F)%32);
        K[(((F
    +64)>>>9)<<4)+14]=F;
        
    var J=1732584193;
        
    var I=-271733879;
        
    var H=-1732584194;
        
    var G=271733878;
        
    for(var C=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){
        
    return safe_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){
        
    return md5_cmn((B&G)|((~B)&F),C,B,A,E,D);
    }

    function md5_gg(C,B,G,F,A,E,D){
        
    return md5_cmn((B&F)|(G&(~F)),C,B,A,E,D);
    }

    function md5_hh(C,B,G,F,A,E,D){
        
    return md5_cmn(B^G^F,C,B,A,E,D);
    }

    function md5_ii(C,B,G,F,A,E,D){
        
    return md5_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);
        }
        
    var A=Array(16),D=Array(16);
        
    for(var B=0;B<16;B++){
            A[B]
    =E[B]^909522486;
            D[B]
    =E[B]^1549556828;
        }
        
    var G=core_md5(A.concat(str2binl(F)),512+F.length*chrsz);
        
    return core_md5(D.concat(G),512+128);
    }

    function safe_add(A,D){
        
    var C=(A&65535)+(D&65535);
        
    var B=(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();
        
    var A=(1<<chrsz)-1;
        
    for(var B=0;B<D.length*chrsz;B+=chrsz){
            C[B
    >>5]|=(D.charCodeAt(B/chrsz)&A)<<(B%32);
        }
        
    return C;
    }

    function binl2str(C){
        
    var D="";
        
    var A=(1<<chrsz)-1;
        
    for(var B=0;B<C.length*32;B+=chrsz){
            D
    +=String.fromCharCode((C[B>>5]>>>(B%32))&A);
        }
        
    return D;
    }

    function binl2hex(C){
        
    var B=hexcase?"0123456789ABCDEF":"0123456789abcdef";
        
    var D="";
        
    for(var A=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;
    }

    就这些吧。。。。。敬礼~

  • 相关阅读:
    【统计学】第七章
    【统计学】第六章
    【统计学】第五章
    【统计学】第四章
    【统计学】第三章
    【统计学】第二章
    MYSQL基础
    股票数据Scrapy爬虫
    Scrapy爬虫基本使用
    Scrapy爬虫框架
  • 原文地址:https://www.cnblogs.com/hangxin1940/p/2037088.html
Copyright © 2020-2023  润新知