C#QQ空間爬蟲 並POST批量操作點贊評論回覆等 關鍵參數獲得qzonetoken g_tk

軟件下載

鏈接: https://pan.baidu.com/s/1IuLs-C7XQVlI42gdS4p7yQ 提取碼: 5vgt 

(因QQ空間升級,目前只能批量點贊。需IE11)

 

技術分析:先看一個範例

這是我手工評論別人BBBBBB的抓包。 

我想模擬POST發送,就要得到上面的所有參數。其它的直接可以得到,主要以下兩個參數

1.g_tk

點發表,跟蹤js在https://qzonestyle.gtimg.cn/ac/qzone/qzfl/qzfl_v8_2.1.65.js 的84行

使用js在線格式化工具https://tool.oschina.net/codeformat/js/,搜上面的位置xhr.send(transdata(data))定位到4776行。

找到xhr.open(opt.method, url + (url.indexOf("?") > -1 ? "&": "?") + "g_tk=" + QZFL.pluginsDefine.getACSRFToken(url), true);

 是通過url得到的。再看看url

url我複製出來 (數據部分我改了一點,規避隱私)

https://user.qzone.qq.com/proxy/domain/ic2.qzone.qq.com/cgi-bin/feeds/cgi_get_feeds_count.cgi?uin=345000007&rd=0.2626406599211087&g_tk=1795571289&qzonetoken=033c0d1897a7f70f9311725568e976502884aeb13f035f1f65699fe159ab10dab09d768c331c5936

直接訪問是返回這個。這樣操作沒什麼用,好奇看一下。

url是參數傳進來的,這裏沒有處理。

url中的各參數怎麼來的呢?

 

繼續向前

https://qzonestyle.gtimg.cn/qzone/v8/core/interface_mini.js

 QZONE.FrontPage.getACSRFToken = function(e) {
        e = QZFL.util.URI(e);
        var t;
        if (e) {
            if (e.host && e.host.indexOf("qzone.qq.com") > 0) {
                t = QZFL.cookie.get("p_skey")
            } else if (e.host && e.host.indexOf("qq.com") > 0) {
                t = QZFL.cookie.get("skey")
            }
        }
        if (!t) {
            try {
                t = parent.QZFL.cookie.get("p_skey") || ""
            } catch(e) {
                t = QZFL.cookie.get("p_skey") || ""
            }
        }
        if (!t) {
            t = QZFL.cookie.get("skey") || QZFL.cookie.get("rv2")
        }
        var n = 5381;
        for (var i = 0,
        o = t.length; i < o; ++i) {
            n += (n << 5) + t.charAt(i).charCodeAt()
        }
        return n & 2147483647
    };

裏的TCISD.pv.send(e, t, n)

然後進到圖片上傳

https://qzonestyle.gtimg.cn/qzone/app/v8/controls/photo_uploader/1.0_h5.31104.js?max_age=72000

define('app/v8/controls/photo_uploader/1.0',null,等

https://qzonestyle.gtimg.cn/ac/lib/seajs/sea-2.1.1.js

Y.test(f.readyState)&&(f.οnlοad=f.οnerrοr=f.onreadystatechange=等

https://qzonestyle.gtimg.cn/qzone/app/v8/controls/mood_poster/plugins/album_select/2.0.85825.js?max_age=72000

一步步,不再細寫了。

https://qzonestyle.gtimg.cn/qzone/app/v8/utils/base64_uploader/1.0.30906.js?max_age=72000

又回到https://qzonestyle.gtimg.cn/ac/qzone/qzfl/qzfl_v8_2.1.65.js

QZFL.ajaxPost=function(e,t,n){if(typeof t=="function"){n=t;t=null}n=extend({},def,typeof n=="function"?{onload:n}:n||{});

 

QZFL.ajaxGet=function(e,t,n){if(typeof t=="function"){n=t;t=null}n=extend({},def,typeof n=="function"?{onload:n}:n||{});

https://qzonestyle.gtimg.cn/qzone/v8/ic/comment.js

window.g_feeds_comment_time=new Date;if(t&&typeof t.sendAct=="function"){t.sendAct("qz_reply_"+P+"_v8")}}

https://qzonestyle.gtimg.cn/qzone/v8/ic/ic_feeds_monitor.js

if(e){FeedsPV._sendPV(e,FeedsPV.PV_ACT_DOMAIN)}}};t.sendAct=FeedsPV.sendAct
;t.updateSession=g;function F(e,t,i){var a={uin:QZONE.FP._t.g_iLoginUin,action:i,platform:1,appid_via:e+"_"+t};QZFL.pingSender("http://analy.qzone.qq.com/cgi-bin/apptrace?"+QZFL.util.genHttpParamString(a))}function L(e,t,i,a){var n="//h5.qzone.qq.com/report/md?"+"fromId=20

https://qzonestyle.gtimg.cn/qzone/v8/core/interface_mini.js

TCISD.pv=function(e,t,n){setTimeout(function(){

https://qzonestyle.gtimg.cn/qzone/v8/ic/comment.js

https://qzonestyle.gtimg.cn/qzone/app/v8/controls/commentBox/facade.50303.js?max_age=72000

超時退出登錄了。

 

2.qzonetoken

源碼中js已經給了,直接在控制檯打印看看。

對比完全一致。

發佈了331 篇原創文章 · 獲贊 142 · 訪問量 72萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章