Akamai JS _abck sensor_data 源码解读第三天 搞定函数体第一部分 检测电脑所有的信息(9)

众所周知  耐克nick 阿迪adidas 德州仪器(TI ti.com)  得捷电子(digikey )贸泽电子(mouser)等较大的芯片 购物之类的网站都引入了akamai的js防机器人识别系统,现在最新的akamai版本是1.7,如果想实现http抢购,那么破解akamai的js 实现sensor_data 然后换取相关有用的_abck是必须的,然后模拟tsl(模拟浏览器怎么发送请求的 不是简单的python go php等)使用个requests就可以的,然后发送相关的数据,那么问题就解决了。
 

其中 第一部分的函数体 200来行到底是干啥的呢,慢慢分析 如下文

if (function(t) {
    var a = {};
    t[_ac[195]] = a,
    a[_ac[261]] = function() {
        var t = bmak[_ac[408]]();
        return !(!~t[_ac[74]](_ac[326]) || !(~t[_ac[74]](_ac[298]) || ~t[_ac[74]](_ac[463]) || ~t[_ac[74]](_ac[38])))
    }
    ,
    a[_ac[155]] = _ac[109],
    a[_ac[713]] = !1,
    a[_ac[628]] = _ac[109],
    a[_ac[61]] = _ac[109],
    a[_ac[752]] = {},
    a[_ac[333]] = -999999,
    a[_ac[7]] = function() {
        a[_ac[752]] = {}
    }
    ,
    a[_ac[205]] = function() {
        a[_ac[713]] = !0;
        try {
            var t = 0;
            t = Date[_ac[82]] ? Date[_ac[82]]() : +new Date;
            var e = a[_ac[35]]();
            a[_ac[155]] = e[_ac[518]](/\"/g, _ac[277]);
            var n = 0;
            n = Date[_ac[82]] ? Date[_ac[82]]() : +new Date,
            a[_ac[333]] = n - t
        } catch (t) {}
    }
    ,
    a[_ac[92]] = function() {
        return (new Date)[_ac[757]]()
    }
    ,
    a[_ac[35]] = function() {
        var t = screen[_ac[98]] ? screen[_ac[98]] : -1
          , e = screen[_ac[722]] ? screen[_ac[722]] : -1
          , n = navigator[_ac[454]] ? navigator[_ac[454]] : -1
          , o = navigator[_ac[578]] ? navigator[_ac[578]]() : -1
          , m = navigator[_ac[258]] ? navigator[_ac[258]] : -1
          , r = _ac[783];
        r = bmak[_ac[614]] ? bmak[_ac[729]] ? a[_ac[140]]() : a[_ac[150]]() : _ac[270];
        return [a[_ac[382]](_ac[625]), a[_ac[382]](_ac[487]), r, a[_ac[83]](), a[_ac[54]](), a[_ac[158]](), a[_ac[1]](), a[_ac[92]](), a[_ac[174]](), t, e, n, o, m][_ac[179]](_ac[640])
    }
    ,
    a[_ac[480]] = [_ac[46], _ac[756], _ac[512], _ac[709], _ac[677], _ac[272], _ac[129], _ac[377], _ac[373], _ac[708], _ac[549], _ac[719], _ac[588], _ac[748], _ac[593], _ac[495], _ac[560], _ac[802], _ac[127], _ac[460], _ac[435], _ac[43], _ac[673], _ac[507], _ac[641], _ac[293], _ac[500]],
    a[_ac[83]] = function() {
        if (void 0 === navigator[_ac[196]])
            return null;
        for (var t = a[_ac[480]][_ac[798]], e = _ac[388], n = 0; n < t; n++) {
            var o = a[_ac[480]][n];
            void 0 !== navigator[_ac[196]][o] && (e = e + _ac[226] + n)
        }
        return e
    }
    ,
    a[_ac[382]] = function(t) {
        try {
            if (void 0 !== a[_ac[752]][_ac[382]])
                return a[_ac[752]][_ac[382]];
            var e = -1;
            if (!a[_ac[261]]()) {
                var n = document[_ac[149]](_ac[382]);
                if (n[_ac[104]] = 280,
                n[_ac[654]] = 60,
                n[_ac[363]][_ac[684]] = _ac[621],
                _ac[554] == typeof n[_ac[458]]) {
                    var o = n[_ac[458]](_ac[472]);
                    o[_ac[580]] = _ac[309],
                    o[_ac[352]](100, 5, 80, 50),
                    o[_ac[580]] = _ac[182],
                    o[_ac[139]] = _ac[192],
                    o[_ac[75]](t, 10, 40),
                    o[_ac[59]] = _ac[41],
                    o[_ac[558]](80, 10, 20, 0, Math[_ac[365]], !1),
                    o[_ac[238]]();
                    var m = n[_ac[208]]();
                    e = 0;
                    for (var r = 0; r < m[_ac[798]]; r++) {
                        e = (e << 5) - e + m[_ac[776]](r),
                        e &= e
                    }
                    e = e[_ac[687]]();
                    var i = document[_ac[149]](_ac[382]);
                    i[_ac[104]] = 16,
                    i[_ac[654]] = 16;
                    var c = i[_ac[458]](_ac[472]);
                    c[_ac[139]] = _ac[617],
                    a[_ac[628]] = Math[_ac[744]](1e3 * Math[_ac[70]]())[_ac[687]](),
                    c[_ac[75]](a[_ac[628]], 1, 12);
                    for (var b = i[_ac[208]](), d = 0, s = 0; s < b[_ac[798]]; s++) {
                        d = (d << 5) - d + b[_ac[776]](s),
                        d &= d
                    }
                    a[_ac[61]] = d[_ac[687]]()
                }
            }
            return e
        } catch (t) {
            return _ac[232]
        }
    }
    ,
    a[_ac[140]] = function() {
        var t = 200
          , e = bmak[_ac[138]]()
          , n = [];
        if (!a[_ac[261]]() && document[_ac[42]]) {
            var o = [_ac[338], _ac[781]]
              , m = [0, 0]
              , r = [0, 0]
              , i = document[_ac[149]](_ac[313]);
            i[_ac[363]][_ac[28]] = _ac[108];
            var c;
            for (c = 0; c < o[_ac[798]]; c++) {
                var b = document[_ac[149]](_ac[351]);
                b[_ac[630]] = _ac[227],
                b[_ac[363]][_ac[99]] = _ac[456],
                b[_ac[363]][_ac[22]] = o[c],
                i[_ac[743]](b)
            }
            for (document[_ac[42]][_ac[743]](i),
            c = 0; c < i[_ac[730]][_ac[798]]; c++)
                b = i[_ac[730]][c],
                m[c] = b[_ac[206]],
                r[c] = b[_ac[629]];
            if (document[_ac[42]][_ac[318]](i),
            bmak[_ac[138]]() - e > t)
                return _ac[388];
            var d = [_ac[170], _ac[55], _ac[467], _ac[534], _ac[230], _ac[803], _ac[346], _ac[483], _ac[242], _ac[52], _ac[405], _ac[464], _ac[711], _ac[32], _ac[735], _ac[509], _ac[40], _ac[618], _ac[632], _ac[561], _ac[596], _ac[734], _ac[471], _ac[234], _ac[644], _ac[566], _ac[680], _ac[265], _ac[686], _ac[60], _ac[793], _ac[638], _ac[661], _ac[396], _ac[290], _ac[587], _ac[21], _ac[364], _ac[537], _ac[381], _ac[747], _ac[658], _ac[447], _ac[633], _ac[260]]
              , s = document[_ac[149]](_ac[313]);
            s[_ac[363]][_ac[28]] = _ac[108];
            for (var k = [], l = 0; l < d[_ac[798]]; l++) {
                var u = document[_ac[149]](_ac[313]);
                for (c = 0; c < o[_ac[798]]; c++) {
                    var b = document[_ac[149]](_ac[351]);
                    b[_ac[630]] = _ac[227],
                    b[_ac[363]][_ac[99]] = _ac[456],
                    b[_ac[363]][_ac[22]] = d[l] + _ac[226] + o[c],
                    u[_ac[743]](b)
                }
                s[_ac[743]](u)
            }
            if (bmak[_ac[138]]() - e > t)
                return _ac[388];
            document[_ac[42]][_ac[743]](s);
            for (var l = 0; l < s[_ac[730]][_ac[798]]; l++) {
                var _ = !1
                  , u = s[_ac[730]][l];
                for (c = 0; c < u[_ac[730]][_ac[798]]; c++) {
                    var b = u[_ac[730]][c];
                    if (b[_ac[206]] !== m[c] || b[_ac[629]] !== r[c]) {
                        _ = !0;
                        break
                    }
                }
                if (_ && k[_ac[102]](l),
                bmak[_ac[138]]() - e > t)
                    break
            }
            document[_ac[42]][_ac[318]](s),
            n = k[_ac[449]]()
        }
        return n[_ac[179]](_ac[226])
    }
    ,
    a[_ac[150]] = function() {
        var t = [];
        if (!a[_ac[261]]() && document[_ac[42]]) {
            var e = [_ac[457], _ac[338], _ac[781]]
              , n = [0, 0, 0]
              , o = [0, 0, 0]
              , m = document[_ac[149]](_ac[351]);
            m[_ac[630]] = _ac[227],
            m[_ac[363]][_ac[99]] = _ac[456];
            var r;
            for (r = 0; r < e[_ac[798]]; r++)
                m[_ac[363]][_ac[22]] = e[r],
                document[_ac[42]][_ac[743]](m),
                n[r] = m[_ac[206]],
                o[r] = m[_ac[629]],
                document[_ac[42]][_ac[318]](m);
            for (var i = [_ac[170], _ac[55], _ac[467], _ac[534], _ac[230], _ac[803], _ac[346], _ac[483], _ac[242], _ac[52], _ac[405], _ac[464], _ac[711], _ac[32], _ac[735], _ac[509], _ac[40], _ac[618], _ac[632], _ac[561], _ac[596], _ac[734], _ac[471], _ac[234], _ac[644], _ac[566], _ac[680], _ac[265], _ac[686], _ac[60], _ac[793], _ac[638], _ac[661], _ac[396], _ac[290], _ac[587], _ac[21], _ac[364], _ac[537], _ac[381], _ac[747], _ac[658], _ac[447], _ac[633], _ac[260]], c = [], b = 0; b < i[_ac[798]]; b++) {
                var d = !1;
                for (r = 0; r < e[_ac[798]]; r++)
                    if (m[_ac[363]][_ac[22]] = i[b] + _ac[226] + e[r],
                    document[_ac[42]][_ac[743]](m),
                    m[_ac[206]] === n[r] && m[_ac[629]] === o[r] || (d = !0),
                    document[_ac[42]][_ac[318]](m),
                    d) {
                        c[_ac[102]](b);
                        break
                    }
            }
            t = c[_ac[449]]()
        }
        return t[_ac[179]](_ac[226])
    }
    ,
    a[_ac[174]] = function() {
        return _ac[554] == typeof window[_ac[695]] || _ac[554] == typeof window[_ac[576]] || _ac[554] == typeof window[_ac[590]]
    }
    ,
    a[_ac[1]] = function() {
        return !!a[_ac[357]]()
    }
    ,
    a[_ac[54]] = function() {
        return !!a[_ac[701]]()
    }
    ,
    a[_ac[158]] = function() {
        return !!a[_ac[659]]()
    }
    ,
    a[_ac[701]] = function() {
        try {
            return !!window[_ac[145]]
        } catch (t) {
            return !1
        }
    }
    ,
    a[_ac[659]] = function() {
        try {
            return !!window[_ac[581]]
        } catch (t) {
            return !1
        }
    }
    ,
    a[_ac[357]] = function() {
        return !!window[_ac[706]]
    }
}(bmak),

其实就是检测了电脑的各种信息 小到字体 大到存储 插件 等等14个吧 然后增加了几个属性

分析完成后其实就是下面几行代码

    var a = {};
    t.fpcf = a,     //给bmak  和 t 都挂在 属性 fpcf = {}
    a.sf4               = false,          //主要是看下是手机 还是 mac  iPhone  因为是电脑 直接返回false
    a.fpValstr          = "-1",
    a.fpValCalculated   = !1,
    a.rVal              = "-1",
    a.rCFP              = "-1",
    a.cache             = {},
    a.td                = -999999,
    a.clearCache        = function() {a.cache = {}},
    a.fpVal             = function() {
        a.fpValCalculated = !0;             //改为true了
        var t = +new Date;
        a.fpValstr =a.data();  //这个信息自己去分析吧,就是指纹信息然后json.";"了下,感觉还不行还特么的字符串替换了么
        var n =  +new Date;
        a.td = n - t
    },

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值