2019-09-22今日头条as、cp加密数据获取

终于算是了解了一点这些函数的构成和怎么寻找了

function i() {

        var t = ascp.getHoney()

          , i = "";

        window.TAC && (i = TAC.sign(s.params.max_behot_time)),

        s.params = _.extend({}, s.params, {

            as: t.as,

            cp: t.cp,

            max_behot_time: s.params.max_behot_time,

            _signature: i

        })

    }

如上,这个表示定义了一个i 函数,大括号里面都是i函数的内容,然后定义了一个变量 t = ascp.getHoney(),就是说将 ascp.getHoney()函数的值,赋值给了t,然后我么可以看到后面as和cp是t中的两个参数,所以基本上可以确定t中是包含as和cp两个参数的。所以我们进入函数 ascp.getHoney()中,得到如下结果:

var i = {};

    i.getHoney = function() {

        var t = Math.floor((new Date).getTime() / 1e3)

          , i = t.toString(16).toUpperCase()

          , s = md5(t).toString().toUpperCase();

        if (8 != i.length)

            return {

                as: "479BB4B7254C150",

                cp: "7E0AC8874BB0985"

            };

        for (var e = s.slice(0, 5), a = s.slice(-5), o = "", n = 0; 5 > n; n++)

            o += e[n] + i[n];

        for (var c = "", l = 0; 5 > l; l++)

            c += i[l + 3] + a[l];

        return {

            as: "A1" + o + i.slice(-3),

            cp: i.slice(0, 3) + c + "E1"

        }

    }

注意,要想定义一个function函数,一定要有函数的名字,可以添加或者不添加参数,函数的两种定义方法:

function a(){  }       、  a = function(){  },所以从上面可以看出,我们实际上要的函数名是 i.getHoney ,并且可以看到as和cp是直接就return了,所以调用该代码,就可以得到:

with open("t.js",'r')as f1:

js = f1.read()

ctx = execjs.compile(js)

getHoney = ctx.call('i.getHoney')

print(getHoney)

注意的是,call(“函数名”),就行了

如果需要md5加密,还需要var md5 =require('md5-node'),放在js开头。

你可能感兴趣的:(2019-09-22今日头条as、cp加密数据获取)