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开头。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容