<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    空間站

    北極心空

      BlogJava :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
      15 Posts :: 393 Stories :: 160 Comments :: 0 Trackbacks
    [聲明:僅供學(xué)習(xí)探討之用,對(duì)于使用本文代碼所造成之影響,本文作者不負(fù)任何法律和連帶責(zé)任]
    最近,看到qq上不少好友的頭像前都有個(gè)小火炬,自己也想要一個(gè),遂行..
    結(jié)果發(fā)現(xiàn),需要登陸網(wǎng)頁(yè) http://huoju.icoke.qq.com/ 去自己‘搶’火炬去,而且我試驗(yàn)多次,也沒(méi)辦法搶到,只有靠‘機(jī)器’來(lái)?yè)屃?...
    言歸正傳,經(jīng)過(guò)分析,如果想搶到火炬,需要激發(fā)網(wǎng)頁(yè)上的‘立即爭(zhēng)奪’按鈕,獲取網(wǎng)頁(yè)代碼:

    ##按鈕部分代碼

    <tr>
    <td height="67" align="center"><a id="rob" href="#" onclick="return rob_torch();"> ... </td>
    </tr>

    由此可知,如函數(shù)rob_torch()有關(guān),下載此網(wǎng)頁(yè)相關(guān)的javascript(JS)代碼,找出rob_torch()函數(shù)如下所示:

    function rob_torch()
    {
        if (Cookie.getCookie("tobtorchcookie") == null)
        {
            var ntime = new Date();
            var stime = new Date(ntime.getYear(), ntime.getMonth(), ntime.getDate(), ntime.getHours(), ntime.getMinutes(), ntime.getSeconds()+25);
            Cookie.setCookie("tobtorchcookie", "ok", stime);
        }
        else
        {
            alert("抱歉,您的操作過(guò)于頻繁,請(qǐng)于25秒后重試。");
            return false;
        }
        if (arrDelay.num == 0)
        {
            alert("目前沒(méi)有活動(dòng)資格可供爭(zhēng)奪,請(qǐng)耐心等候!");
            return false;
        }
        var vers = getQQVersion();
        if (vers == -1)
        {
            return false;
        }
        if (vers < 1777 || vers >= 2007)
        {
            alert("您當(dāng)前的版本不支持活動(dòng)資格爭(zhēng)奪,請(qǐng)到http://im.qq.com下載安裝官方2007II正式版或2008賀歲版QQ客戶(hù)端。");
            return false;
        }        
        JsonLoader.load('http://app.icoke.qq.com/icoke/torchdelay.php?'+Math.random(),function()
            {
                if (typeof(numJson) != undefined)
                {
                    var url = "tencent://LargeSizedActivity/?HandleID=3&PUIN=&TorchUIN="+numJson[1];
                    $("rob").href = url;
                    window.open(url, "robtorchiframe", "location=no");
                    return true;
                }
                else
                {
                    ;
                }
        });
        return false;
    }

    其中大部分都是驗(yàn)證,不是很重要,我們注意到JsonLoader.load這個(gè)函數(shù)調(diào)用,其中有兩個(gè)參數(shù),一個(gè)是原url地址,另一個(gè)是回調(diào)函數(shù)內(nèi)容,我們先看到這個(gè)回調(diào)函數(shù)會(huì)調(diào)用url地址tencent://LargeSizedActivity/?HandleID=3&PUIN=&TorchUIN=XXX其中XXX經(jīng)過(guò)后來(lái)分析,是一個(gè)號(hào)碼,火炬號(hào)碼$("rob").href = url;講網(wǎng)頁(yè)中的變量rob賦值為這個(gè)剛剛生成的url地址,然后由window.open()來(lái)調(diào)用這個(gè)鏈接,后來(lái)分析這個(gè)tencent協(xié)議需要調(diào)用一個(gè)qq客戶(hù)端程序,暫時(shí)不知,由這個(gè)客戶(hù)端程序去處理url地址請(qǐng)求。
    再返回來(lái)查看JsonLoad對(duì)象的load函數(shù),代碼如下:

    var JsonLoader = {
        load: function(sUrl, fCallback)
        {
            var _script = document.createElement("script");
            _script.setAttribute("type", "text/javascript");
            _script.setAttribute("src", sUrl);
            document.getElementsByTagName("head")[0].appendChild(_script);
            if (!!document.all)
            {
                _script.onreadystatechange = function()
                {
                    if (this.readyState=="loaded" || this.readyState=="complete")
                    {
                        fCallback();
                    }
                };
            }
            else
            {
                _script.onload = function()
                {
                    fCallback();
                };
            }
        },
    .............

    這個(gè),我們截取了一部分,其主要意思是根據(jù)情況,調(diào)用load的第二個(gè)參數(shù),回調(diào)函數(shù)。
    這樣,我們就知道了,我們只需要激發(fā)這個(gè)tencent的協(xié)議調(diào)用就可以激發(fā)按鈕事件了....
    現(xiàn)在的問(wèn)題就是我們?nèi)绾稳カ@得上文中的XXX,即火炬號(hào)碼,由上述代碼rob_torch()函數(shù)中的url = "tencent://LargeSizedActivity/?HandleID=3&PUIN=&TorchUIN="+numJson[1],我們發(fā)現(xiàn),這個(gè)XXX變量numjSon[1]同函數(shù)delay_refresh()中的arrDelay.delayqq的值是一樣的,所以我們就直接每次通過(guò)調(diào)用delay_refresh()函數(shù)來(lái)更新獲得當(dāng)前放出來(lái)的火炬的延遲編號(hào)。

    function delay_refresh()
    {
        var url = 'http://huoju.icoke.qq.com/huojuicoke/datajs/torch_delay2.js?'+Math.random();
        AsynLoader.load(url,
                 {
                    method:'get',
                    onSuccess: function(xmlHttp)
                    {
                        arrDelay = eval("(" + xmlHttp.responseText + ")");
                        $("torch_num").innerHTML = arrDelay.num;
                        if ($("torch_total") != null)
                        {
                            $("torch_total").innerHTML = formatNum(arrDelay.total_count);
                        }
                        var url = "tencent://LargeSizedActivity/?HandleID=3&PUIN=&TorchUIN="+arrDelay.delayqq;
                        $("rob").href = url;
                    },
                    onFailure: function()
                    { }
        });

    后面進(jìn)一步分析得知,此頁(yè)面每隔一定時(shí)間調(diào)用這個(gè)fresh函數(shù)去刷新獲取當(dāng)前釋放出來(lái)的火炬編號(hào),一段時(shí)間只釋放一個(gè)編號(hào),我們可以頻繁調(diào)用這個(gè)刷新函數(shù),然后在這個(gè)火炬被釋放的第一時(shí)間,獲取這個(gè)火炬的編號(hào),然后調(diào)用tencent協(xié)議url請(qǐng)求去獲取獲取,這樣,一旦有火炬被釋放出來(lái),就可以很快的去'搶',比自己用手去點(diǎn)要快多了,本代碼沒(méi)有考慮異常情況,而且實(shí)現(xiàn)也不是很完善....不想繼續(xù)完善了,因?yàn)楸緛?lái)是用于分析和學(xué)習(xí),所以沒(méi)必要繼續(xù)了....
    經(jīng)過(guò)測(cè)試,機(jī)器就是比人快...哈哈,以下是python實(shí)現(xiàn)的而代碼,再次提醒,對(duì)于代碼造成的任何影響,本作者不附帶任何責(zé)任。

    import urllib,webbrowser,time
    import random
    import re

    regx = re.compile('\"[0-9]*\"') #分析獲取火炬編號(hào)的模式

    #用于記錄原來(lái)的火炬編號(hào),如果兩次獲取的火炬編號(hào)一致,則不激發(fā)獲取火炬的事件

    old=''

    num=999 #試驗(yàn)999次

    fresh_url='http://huoju.icoke.qq.com/huojuicoke/datajs/torch_delay2.js?'

    get_url='tencent://LargeSizedActivity/?HandleID=3&PUIN=&TorchUIN='

    while num-- <= 0:
        net=urllib.urlopen(fresh_url) #刷新釋放的火炬
        data=net.read()
        m_list=re.findall(regx,data) #獲取火炬編號(hào)
        if old != m_list[0]:
            webbrowser.open(get_url + str(m_list[0])) #激發(fā)獲取火炬事件
        time.sleep(1) #stop 1 second

    posted on 2008-04-01 19:22 蘆葦 閱讀(438) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): 其他
    主站蜘蛛池模板: 狠狠综合亚洲综合亚洲色| 久久这里只精品国产免费10| 亚洲黄片手机免费观看| 国产精品网站在线观看免费传媒| 亚洲成a人片77777群色| 亚洲国产精品一区二区第四页| 99免费观看视频| 又硬又粗又长又爽免费看| 亚洲特级aaaaaa毛片| 亚洲国产精品尤物YW在线观看| 亚洲av无码国产精品色在线看不卡| yy6080久久亚洲精品| 亚洲人成电影网站免费| 日本三级在线观看免费| 美女被吸屁股免费网站| 亚洲精品综合在线影院| 7777久久亚洲中文字幕蜜桃| 国产成人毛片亚洲精品| 国产精品久久免费视频| 永久免费视频网站在线观看| 在线观看免费视频网站色| 美女羞羞喷液视频免费| 男女猛烈无遮掩视频免费软件| 亚洲码欧美码一区二区三区| 亚洲老熟女@TubeumTV| 亚洲婷婷综合色高清在线| 亚洲人成小说网站色| 精品特级一级毛片免费观看| 亚洲高清视频在线| 国产精品亚洲а∨无码播放麻豆| 一个人看www免费高清字幕| 亚洲AV无码一区二区大桥未久| 涩涩色中文综合亚洲| 女bbbbxxxx另类亚洲| 中文字幕免费在线视频| 亚洲精品黄色视频在线观看免费资源| 色偷偷亚洲第一综合| 久久免费观看视频| A片在线免费观看| 在线观看无码AV网站永久免费 | 亚洲欧美自偷自拍另类视|