终于算是了解了一点这些函数的构成和怎么寻找了
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开头。
网友评论