某漫画站 JavaScript 脚本分析

大概是用 WebpackJavaScript 加了混淆和压缩,逆向还原即可。

原脚本

原脚本解密生成中间脚本,再通过 eval 执行。

eval(function(p,a,c,k,e,r){e=function(c){return(c<62?'':e(parseInt(c/62)))+((c=c%62)>35?String.fromCharCode(c+29):c.toString(36))};if('0'.replace(0,e)==0){while(c--)r[e(c)]=k[c];k=[function(e){return r[e]||e}];e=function(){return'([013-9be-hjkqu-zA-Z]|[12]\\w)'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('3 15=[\'1u\',\'1v\',\'bind\',\'.comicContent-list\',\'\\h\\x20class=\\x22lazyload\\h/>\',\'16\',\'1w\',\'CBC\',\'1x\',\'innerHTML\',\'\\h\\1y=\\h\',\'1z\',\'decrypt\',\'string\',\'1A\',\'substring\',\'1B\',\'apply\',\'1C\',\'1D\',\'call\',\'1E\',\'create\',\'1F\',\'17\',\'clientHeight\',\'Base64\',\'createElement\',\'constructor\',\'Hex\',\'M\',\'object\',\'AES\',\'scrollY\',\'1\',\'1G\',\'1H\',\'url\',\'1I\',\'1J\',\'stringify\',\'1K\',\'1L\',\'.disPass\',\'onload\',\'scrollTo\',\'Pkcs7\',\'__esModule\',\'querySelector\',\'<img\\x20data-src=\\h\',\'1M\',\'pad\',\'.disData\',\'splice\',\'.disUrlSuffix\'];(1(j,18){3 N=1(1N){while(--1N){j[\'1G\'](j[\'1A\']())}};N(++18)}(15,0xfd));3 0=1(j,18){j=j-4;3 N=15[j];5 N};\'use strict\';3 1O=9 b===0(\'k\')&&9 b[\'iterator\']===0(\'0x26\')?1(1P){5 9 1P}:1(D){5 D&&9 b===\'1\'&&D[0(\'0x32\')]===b&&D!==b[\'1M\']?\'1B\':9 D};!1(O){1 19(E){e(3 F,x,1a=E[4],P=E[k],1Q=E[q],Q=4,R=[];Q<1a[0(\'S\')];Q++){x=1a[Q],f[0(\'1b\')][0(\'1R\')][0(\'T\')](y,x)&&y[x]&&R[0(\'q\')](y[x][4]),y[x]=4}e(F in P){f[0(\'1b\')][\'1x\'][0(\'T\')](P,F)&&(O[F]=P[F])}e(1c&&1c(E);R[\'M\'];){R[0(\'0x24\')]()()}5 u[0(\'q\')][0(\'0x27\')](u,1Q||[]),1d()}1 1d(){e(3 1e,G=4;G<u[0(\'S\')];G++){e(3 U=u[G],1f=!4,V=k;V<U[\'M\'];V++){3 1T=U[V];4!==y[1T]&&(1f=!k)}1f&&(u[0(\'0x14\')](G--,k),1e=6(6[\'s\']=U[4]))}5 1e}3 H={},y={2:4},u=[];1 6(z){A(H[z])5 H[z][0(\'W\')];3 B=H[z]={\'i\':z,\'l\':!k,\'1w\':{}};5 O[z][0(\'T\')](B[0(\'W\')],B,B[0(\'W\')],6),B[\'l\']=!4,B[0(\'W\')]}6[\'m\']=O,6[\'c\']=H,6[\'d\']=1(1g,1h,1U){6[\'o\'](1g,1h)||f[0(\'1V\')](1g,1h,{\'1W\':!4,\'get\':1U})},6[\'r\']=1(1i){0(\'1X\')!=9 b&&b[\'1H\']&&f[\'16\'](1i,b[0(\'1j\')],{\'1k\':\'Module\'}),f[0(\'1V\')](1i,0(\'1l\'),{\'1k\':!4})},6[\'t\']=1(7,I){A(k&I&&(7=6(7)),1Y&I)5 7;A(1m&I&&0(\'0x35\')==(9 7===\'1D\'?0(\'1X\'):1O(7))&&7&&7[0(\'1l\')])5 7;3 J=f[0(\'0x2c\')](1n);A(6[\'r\'](J),f[\'16\'](J,0(\'0x17\'),{\'1W\':!4,\'1k\':7}),q&I&&0(\'1Z\')!=9 7)e(3 1o in 7){6[\'d\'](J,1o,1(20){5 7[20]}[0(\'21\')](1n,1o))}5 J},6[\'n\']=1(K){3 X=K&&K[0(\'1l\')]?1(){5 K[\'1v\']}:1(){5 K};5 6[\'d\'](X,\'a\',X),X},6[\'o\']=1(22,23){5 f[0(\'1b\')][0(\'1R\')][0(\'T\')](22,23)},6[\'p\']=\'\';3 g=v[0(\'0x21\')]=v[\'1z\']||[],24=g[0(\'q\')][0(\'21\')](g);g[0(\'q\')]=19,g=g[\'slice\']();e(3 Y=4;Y<g[\'M\'];Y++){19(g[Y])}3 1c=24;u[0(\'q\')]([1Z,4]),1d()}({35:1 _(_0x7ca885,_0x1ae633,25){$(1(){3 8=25(Z),10=w[0(\'L\')](0(\'0x13\'))[0(\'Z\')](0(\'1p\')),26=(w[0(\'L\')](\'.disUrlPrefix\')[0(\'Z\')](0(\'1p\')),w[0(\'L\')](0(\'0x15\'))[0(\'Z\')](\'1L\'),w[0(\'L\')](0(\'0xa\'))[\'1J\'](0(\'1p\'))),27=10[0(\'28\')](4,11),29=10[0(\'28\')](11,10[0(\'S\')]),2a=8[\'1E\'][\'17\'][0(\'1q\')](26),2b=8[0(\'12\')][0(\'0x2e\')][\'1I\'](27),2c=1(2d){3 2e=8[0(\'12\')][0(\'0x33\')][0(\'1q\')](2d),2f=8[0(\'12\')][0(\'0x30\')][0(\'0x7\')](2e);5 8[0(\'0x36\')][0(\'0x22\')](2f,2a,{\'iv\':2b,\'1C\':8[0(\'0x28\')][0(\'0x1d\')],\'padding\':8[0(\'0x12\')][0(\'0xd\')]})[\'1F\'](8[0(\'12\')][\'17\'])[0(\'0x2d\')]()}(29),13=JSON[0(\'1q\')](2c),14=w[0(\'L\')](0(\'0x19\')),C=4;1 2g(){3 1r=w[0(\'2h\')](\'li\');1r[0(\'2j\')]=0(\'11\')+13[C][0(\'1m\')]+0(\'0x20\')+2k+0(\'2l\'),C++,14[\'1K\'](1r)}v[0(\'0xb\')]=1(){e(3 1s=4;1s<1j;1s++){2g()}setTimeout(1(){v[0(\'0xc\')](4,4)},0x64)},v[\'1u\']=1(){A(14[0(\'0x2f\')]/1j>v[0(\'4\')]){A(C>=13[0(\'S\')])5 void(v[0(\'0x16\')]=1(){5 1n});3 1t=w[0(\'2h\')](\'li\');1t[0(\'2j\')]=0(\'11\')+13[C][0(\'1m\')]+\'\\h\\1y=\\h\'+2k+0(\'2l\'),C++,14[0(\'1Y\')](1t)}}})}});',[],146,'_0x4b09|function||var|0x0|return|_0x43f62c|_0x27cd6a|_0x5ecbd2|typeof||Symbol|||for|Object|_0x8cdab8|x22||_0x248bf1|0x1||||||0x2||||_0x4f8e89|window|document|_0x39d89b|_0x4c4a78|_0x50c6ae|if|_0x5bdb99|_0x167b1b|_0x53db7f|_0x5a86a4|_0x30d17e|_0x39912b|_0x344a1c|_0x454650|_0x16a732|_0x23cd44|0xf|length|_0x4b097a|_0x294361|_0x3c84f3|_0x592454|_0x185ccb|0x34|0x2a|_0x454fc7|_0x2e4a05|0x1c|_0x19e70a|_0x4f6fac|0x6|_0x5692c2|0x10|0x2b|_0x569d2a|_0x899663|_0x2397|defineProperty|Utf8|_0x239756|_0x55eeac|_0x4f0b4e|0x11|_0x2b03dc|_0x5c1452|_0xe38c84|_0x39f3b1|_0xa97d48|_0x2e49bc|_0x1876f5|0x3|value|0xe|0x4|null|_0x26ee19|0x9|0x5|_0x4c700e|_0x56784a|_0x7fab78|onscroll|default|exports|hasOwnProperty|x20src|webpackJsonp|shift|symbol|mode|undefined|enc|toString|push|toStringTag|parse|getAttribute|append|contentKey|prototype|_0x455d11|_typeof|_0x11c531|_0x3ac924|0x1e||_0x2f9ce5|_0x106bb8|0x1b|enumerable|0x29|0x8|0x23|_0x5947ab|0x18|_0x43f70d|_0x1be0bc|_0x3a8919|_0x1e79e7|_0x32f0c9|_0x5d84da|0x25|_0x1ca9db|_0x59a9d1|_0x51b002|_0x445421|_0x56adab|_0x4baa6a|_0x273f5e|_0xb2158e|0x31||0x1f|URL_TYPEIMG|0x1a'.split('|'),0,{}))

中间脚本

通过 eval 执行的中间脚本如下。

'use strict';
var _typeof = typeof Symbol === _0x4b09('0x1') && typeof Symbol['iterator'] === _0x4b09('0x26') ? function(_0x11c531) {
    return typeof _0x11c531
}
: function(_0x53db7f) {
    return _0x53db7f && typeof Symbol === 'function' && _0x53db7f[_0x4b09('0x32')] === Symbol && _0x53db7f !== Symbol['prototype'] ? 'symbol' : typeof _0x53db7f
}
;
!function(_0x294361) {
    function _0x55eeac(_0x5a86a4) {
        for (var _0x30d17e, _0x39d89b, _0x4f0b4e = _0x5a86a4[0x0], _0x3c84f3 = _0x5a86a4[0x1], _0x3ac924 = _0x5a86a4[0x2], _0x592454 = 0x0, _0x185ccb = []; _0x592454 < _0x4f0b4e[_0x4b09('0x34')]; _0x592454++) {
            _0x39d89b = _0x4f0b4e[_0x592454],
            Object[_0x4b09('0x11')][_0x4b09('0x1e')][_0x4b09('0x2a')](_0x4c4a78, _0x39d89b) && _0x4c4a78[_0x39d89b] && _0x185ccb[_0x4b09('0x2')](_0x4c4a78[_0x39d89b][0x0]),
            _0x4c4a78[_0x39d89b] = 0x0
        }
        for (_0x30d17e in _0x3c84f3) {
            Object[_0x4b09('0x11')]['hasOwnProperty'][_0x4b09('0x2a')](_0x3c84f3, _0x30d17e) && (_0x294361[_0x30d17e] = _0x3c84f3[_0x30d17e])
        }
        for (_0x2b03dc && _0x2b03dc(_0x5a86a4); _0x185ccb['length']; ) {
            _0x185ccb[_0x4b09('0x24')]()()
        }
        return _0x4f8e89[_0x4b09('0x2')][_0x4b09('0x27')](_0x4f8e89, _0x3ac924 || []),
        _0x5c1452()
    }
    function _0x5c1452() {
        for (var _0xe38c84, _0x39912b = 0x0; _0x39912b < _0x4f8e89[_0x4b09('0x34')]; _0x39912b++) {
            for (var _0x454fc7 = _0x4f8e89[_0x39912b], _0x39f3b1 = !0x0, _0x2e4a05 = 0x1; _0x2e4a05 < _0x454fc7['length']; _0x2e4a05++) {
                var _0x2f9ce5 = _0x454fc7[_0x2e4a05];
                0x0 !== _0x4c4a78[_0x2f9ce5] && (_0x39f3b1 = !0x1)
            }
            _0x39f3b1 && (_0x4f8e89[_0x4b09('0x14')](_0x39912b--, 0x1),
            _0xe38c84 = _0x43f62c(_0x43f62c['s'] = _0x454fc7[0x0]))
        }
        return _0xe38c84
    }
    var _0x344a1c = {}
      , _0x4c4a78 = {
        2: 0x0
    }
      , _0x4f8e89 = [];
    function _0x43f62c(_0x50c6ae) {
        if (_0x344a1c[_0x50c6ae])
            return _0x344a1c[_0x50c6ae][_0x4b09('0x1c')];
        var _0x5bdb99 = _0x344a1c[_0x50c6ae] = {
            'i': _0x50c6ae,
            'l': !0x1,
            'exports': {}
        };
        return _0x294361[_0x50c6ae][_0x4b09('0x2a')](_0x5bdb99[_0x4b09('0x1c')], _0x5bdb99, _0x5bdb99[_0x4b09('0x1c')], _0x43f62c),
        _0x5bdb99['l'] = !0x0,
        _0x5bdb99[_0x4b09('0x1c')]
    }
    _0x43f62c['m'] = _0x294361,
    _0x43f62c['c'] = _0x344a1c,
    _0x43f62c['d'] = function(_0xa97d48, _0x2e49bc, _0x106bb8) {
        _0x43f62c['o'](_0xa97d48, _0x2e49bc) || Object[_0x4b09('0x1b')](_0xa97d48, _0x2e49bc, {
            'enumerable': !0x0,
            'get': _0x106bb8
        })
    }
    ,
    _0x43f62c['r'] = function(_0x1876f5) {
        _0x4b09('0x29') != typeof Symbol && Symbol['toStringTag'] && Object['defineProperty'](_0x1876f5, Symbol[_0x4b09('0x3')], {
            'value': 'Module'
        }),
        Object[_0x4b09('0x1b')](_0x1876f5, _0x4b09('0xe'), {
            'value': !0x0
        })
    }
    ,
    _0x43f62c['t'] = function(_0x27cd6a, _0x454650) {
        if (0x1 & _0x454650 && (_0x27cd6a = _0x43f62c(_0x27cd6a)),
        0x8 & _0x454650)
            return _0x27cd6a;
        if (0x4 & _0x454650 && _0x4b09('0x35') == (typeof _0x27cd6a === 'undefined' ? _0x4b09('0x29') : _typeof(_0x27cd6a)) && _0x27cd6a && _0x27cd6a[_0x4b09('0xe')])
            return _0x27cd6a;
        var _0x16a732 = Object[_0x4b09('0x2c')](null);
        if (_0x43f62c['r'](_0x16a732),
        Object['defineProperty'](_0x16a732, _0x4b09('0x17'), {
            'enumerable': !0x0,
            'value': _0x27cd6a
        }),
        0x2 & _0x454650 && _0x4b09('0x23') != typeof _0x27cd6a)
            for (var _0x26ee19 in _0x27cd6a) {
                _0x43f62c['d'](_0x16a732, _0x26ee19, function(_0x5947ab) {
                    return _0x27cd6a[_0x5947ab]
                }
                [_0x4b09('0x18')](null, _0x26ee19))
            }
        return _0x16a732
    }
    ,
    _0x43f62c['n'] = function(_0x23cd44) {
        var _0x19e70a = _0x23cd44 && _0x23cd44[_0x4b09('0xe')] ? function() {
            return _0x23cd44['default']
        }
        : function() {
            return _0x23cd44
        }
        ;
        return _0x43f62c['d'](_0x19e70a, 'a', _0x19e70a),
        _0x19e70a
    }
    ,
    _0x43f62c['o'] = function(_0x43f70d, _0x1be0bc) {
        return Object[_0x4b09('0x11')][_0x4b09('0x1e')][_0x4b09('0x2a')](_0x43f70d, _0x1be0bc)
    }
    ,
    _0x43f62c['p'] = '';
    var _0x8cdab8 = window[_0x4b09('0x21')] = window['webpackJsonp'] || []
      , _0x3a8919 = _0x8cdab8[_0x4b09('0x2')][_0x4b09('0x18')](_0x8cdab8);
    _0x8cdab8[_0x4b09('0x2')] = _0x55eeac,
    _0x8cdab8 = _0x8cdab8['slice']();
    for (var _0x4f6fac = 0x0; _0x4f6fac < _0x8cdab8['length']; _0x4f6fac++) {
        _0x55eeac(_0x8cdab8[_0x4f6fac])
    }
    var _0x2b03dc = _0x3a8919;
    _0x4f8e89[_0x4b09('0x2')]([0x23, 0x0]),
    _0x5c1452()
}({
    35: function _(_0x7ca885, _0x1ae633, _0x1e79e7) {
        $(function() {
            var _0x5ecbd2 = _0x1e79e7(0x6)
              , _0x5692c2 = document[_0x4b09('0xf')](_0x4b09('0x13'))[_0x4b09('0x6')](_0x4b09('0x9'))
              , _0x32f0c9 = (document[_0x4b09('0xf')]('.disUrlPrefix')[_0x4b09('0x6')](_0x4b09('0x9')),
            document[_0x4b09('0xf')](_0x4b09('0x15'))[_0x4b09('0x6')]('contentKey'),
            document[_0x4b09('0xf')](_0x4b09('0xa'))['getAttribute'](_0x4b09('0x9')))
              , _0x5d84da = _0x5692c2[_0x4b09('0x25')](0x0, 0x10)
              , _0x1ca9db = _0x5692c2[_0x4b09('0x25')](0x10, _0x5692c2[_0x4b09('0x34')])
              , _0x59a9d1 = _0x5ecbd2['enc']['Utf8'][_0x4b09('0x5')](_0x32f0c9)
              , _0x51b002 = _0x5ecbd2[_0x4b09('0x2b')][_0x4b09('0x2e')]['parse'](_0x5d84da)
              , _0x445421 = function(_0x56adab) {
                var _0x4baa6a = _0x5ecbd2[_0x4b09('0x2b')][_0x4b09('0x33')][_0x4b09('0x5')](_0x56adab)
                  , _0x273f5e = _0x5ecbd2[_0x4b09('0x2b')][_0x4b09('0x30')][_0x4b09('0x7')](_0x4baa6a);
                return _0x5ecbd2[_0x4b09('0x36')][_0x4b09('0x22')](_0x273f5e, _0x59a9d1, {
                    'iv': _0x51b002,
                    'mode': _0x5ecbd2[_0x4b09('0x28')][_0x4b09('0x1d')],
                    'padding': _0x5ecbd2[_0x4b09('0x12')][_0x4b09('0xd')]
                })['toString'](_0x5ecbd2[_0x4b09('0x2b')]['Utf8'])[_0x4b09('0x2d')]()
            }(_0x1ca9db)
              , _0x569d2a = JSON[_0x4b09('0x5')](_0x445421)
              , _0x899663 = document[_0x4b09('0xf')](_0x4b09('0x19'))
              , _0x167b1b = 0x0;
            function _0xb2158e() {
                var _0x4c700e = document[_0x4b09('0x31')]('li');
                _0x4c700e[_0x4b09('0x1f')] = _0x4b09('0x10') + _0x569d2a[_0x167b1b][_0x4b09('0x4')] + _0x4b09('0x20') + URL_TYPEIMG + _0x4b09('0x1a'),
                _0x167b1b++,
                _0x899663['append'](_0x4c700e)
            }
            window[_0x4b09('0xb')] = function() {
                for (var _0x56784a = 0x0; _0x56784a < 0x3; _0x56784a++) {
                    _0xb2158e()
                }
                setTimeout(function() {
                    window[_0x4b09('0xc')](0x0, 0x0)
                }, 0x64)
            }
            ,
            window['onscroll'] = function() {
                if (_0x899663[_0x4b09('0x2f')] / 0x3 > window[_0x4b09('0x0')]) {
                    if (_0x167b1b >= _0x569d2a[_0x4b09('0x34')])
                        return void (window[_0x4b09('0x16')] = function() {
                            return null
                        }
                        );
                    var _0x7fab78 = document[_0x4b09('0x31')]('li');
                    _0x7fab78[_0x4b09('0x1f')] = _0x4b09('0x10') + _0x569d2a[_0x167b1b][_0x4b09('0x4')] + '\x22\x20src=\x22' + URL_TYPEIMG + _0x4b09('0x1a'),
                    _0x167b1b++,
                    _0x899663[_0x4b09('0x8')](_0x7fab78)
                }
            }
        })
    }
});

还原字符串

中间脚本的字符串被替换成类似 _0x4b09('0x13') 的形式,可以通过正则进行还原。

import re

key=[
    "scrollY",
    "function",
    "push",
    "toStringTag",
    "url",
    "parse",
    "getAttribute",
    "stringify",
    "append",
    "contentKey",
    ".disPass",
    "onload",
    "scrollTo",
    "Pkcs7",
    "__esModule",
    "querySelector",
    "<img data-src=\"",
    "prototype",
    "pad",
    ".disData",
    "splice",
    ".disUrlSuffix",
    "onscroll",
    "default",
    "bind",
    ".comicContent-list",
    "\" class=\"lazyload\"/>",
    "defineProperty",
    "exports",
    "CBC",
    "hasOwnProperty",
    "innerHTML",
    "\" src=\"",
    "webpackJsonp",
    "decrypt",
    "string",
    "shift",
    "substring",
    "symbol",
    "apply",
    "mode",
    "undefined",
    "call",
    "enc",
    "create",
    "toString",
    "Utf8",
    "clientHeight",
    "Base64",
    "createElement",
    "constructor",
    "Hex",
    "length",
    "object",
    "AES"
]

def trans(raw):
    c=re.search('\'(.*?)\'',str(raw.group(0)))
    return "'"+key[eval(c.group(1))]+"'"

with open('decode.js','r') as f:
    with open('xdecode.js','w') as wf:
        s=f.read()
        ds=re.sub('_0x4b09\(.*?\)',trans,s)
        print(ds)
        wf.write(ds)

还原后的脚本

前半段是 Webpack 环境下 JavaScript 的初始化代码,后半段是标准的 AES 解密以及 DOM 元素的创建。

得到解密算法后就可以自己写脚本解析图片链接了

'use strict';
var _typeof = typeof Symbol === 'function' && typeof Symbol['iterator'] === 'symbol' ? function(_0x11c531) {
    return typeof _0x11c531
}
: function(_0x53db7f) {
    return _0x53db7f && typeof Symbol === 'function' && _0x53db7f['constructor'] === Symbol && _0x53db7f !== Symbol['prototype'] ? 'symbol' : typeof _0x53db7f
}
;
!function(_0x294361) {
    function _0x55eeac(_0x5a86a4) {
        for (var _0x30d17e, _0x39d89b, _0x4f0b4e = _0x5a86a4[0x0], _0x3c84f3 = _0x5a86a4[0x1], _0x3ac924 = _0x5a86a4[0x2], _0x592454 = 0x0, _0x185ccb = []; _0x592454 < _0x4f0b4e['length']; _0x592454++) {
            _0x39d89b = _0x4f0b4e[_0x592454],
            Object['prototype']['hasOwnProperty']['call'](_0x4c4a78, _0x39d89b) && _0x4c4a78[_0x39d89b] && _0x185ccb['push'](_0x4c4a78[_0x39d89b][0x0]),
            _0x4c4a78[_0x39d89b] = 0x0
        }
        for (_0x30d17e in _0x3c84f3) {
            Object['prototype']['hasOwnProperty']['call'](_0x3c84f3, _0x30d17e) && (_0x294361[_0x30d17e] = _0x3c84f3[_0x30d17e])
        }
        for (_0x2b03dc && _0x2b03dc(_0x5a86a4); _0x185ccb['length']; ) {
            _0x185ccb['shift']()()
        }
        return _0x4f8e89['push']['apply'](_0x4f8e89, _0x3ac924 || []),
        _0x5c1452()
    }
    function _0x5c1452() {
        for (var _0xe38c84, _0x39912b = 0x0; _0x39912b < _0x4f8e89['length']; _0x39912b++) {
            for (var _0x454fc7 = _0x4f8e89[_0x39912b], _0x39f3b1 = !0x0, _0x2e4a05 = 0x1; _0x2e4a05 < _0x454fc7['length']; _0x2e4a05++) {
                var _0x2f9ce5 = _0x454fc7[_0x2e4a05];
                0x0 !== _0x4c4a78[_0x2f9ce5] && (_0x39f3b1 = !0x1)
            }
            _0x39f3b1 && (_0x4f8e89['splice'](_0x39912b--, 0x1),
            _0xe38c84 = _0x43f62c(_0x43f62c['s'] = _0x454fc7[0x0]))
        }
        return _0xe38c84
    }
    var _0x344a1c = {}
      , _0x4c4a78 = {
        2: 0x0
    }
      , _0x4f8e89 = [];
    function _0x43f62c(_0x50c6ae) {
        if (_0x344a1c[_0x50c6ae])
            return _0x344a1c[_0x50c6ae]['exports'];
        var _0x5bdb99 = _0x344a1c[_0x50c6ae] = {
            'i': _0x50c6ae,
            'l': !0x1,
            'exports': {}
        };
        return _0x294361[_0x50c6ae]['call'](_0x5bdb99['exports'], _0x5bdb99, _0x5bdb99['exports'], _0x43f62c),
        _0x5bdb99['l'] = !0x0,
        _0x5bdb99['exports']
    }
    _0x43f62c['m'] = _0x294361,
    _0x43f62c['c'] = _0x344a1c,
    _0x43f62c['d'] = function(_0xa97d48, _0x2e49bc, _0x106bb8) {
        _0x43f62c['o'](_0xa97d48, _0x2e49bc) || Object['defineProperty'](_0xa97d48, _0x2e49bc, {
            'enumerable': !0x0,
            'get': _0x106bb8
        })
    }
    ,
    _0x43f62c['r'] = function(_0x1876f5) {
        'undefined' != typeof Symbol && Symbol['toStringTag'] && Object['defineProperty'](_0x1876f5, Symbol['toStringTag'], {
            'value': 'Module'
        }),
        Object['defineProperty'](_0x1876f5, '__esModule', {
            'value': !0x0
        })
    }
    ,
    _0x43f62c['t'] = function(_0x27cd6a, _0x454650) {
        if (0x1 & _0x454650 && (_0x27cd6a = _0x43f62c(_0x27cd6a)),
        0x8 & _0x454650)
            return _0x27cd6a;
        if (0x4 & _0x454650 && 'object' == (typeof _0x27cd6a === 'undefined' ? 'undefined' : _typeof(_0x27cd6a)) && _0x27cd6a && _0x27cd6a['__esModule'])
            return _0x27cd6a;
        var _0x16a732 = Object['create'](null);
        if (_0x43f62c['r'](_0x16a732),
        Object['defineProperty'](_0x16a732, 'default', {
            'enumerable': !0x0,
            'value': _0x27cd6a
        }),
        0x2 & _0x454650 && 'string' != typeof _0x27cd6a)
            for (var _0x26ee19 in _0x27cd6a) {
                _0x43f62c['d'](_0x16a732, _0x26ee19, function(_0x5947ab) {
                    return _0x27cd6a[_0x5947ab]
                }
                ['bind'](null, _0x26ee19))
            }
        return _0x16a732
    }
    ,
    _0x43f62c['n'] = function(_0x23cd44) {
        var _0x19e70a = _0x23cd44 && _0x23cd44['__esModule'] ? function() {
            return _0x23cd44['default']
        }
        : function() {
            return _0x23cd44
        }
        ;
        return _0x43f62c['d'](_0x19e70a, 'a', _0x19e70a),
        _0x19e70a
    }
    ,
    _0x43f62c['o'] = function(_0x43f70d, _0x1be0bc) {
        return Object['prototype']['hasOwnProperty']['call'](_0x43f70d, _0x1be0bc)
    }
    ,
    _0x43f62c['p'] = '';
    var _0x8cdab8 = window['webpackJsonp'] = window['webpackJsonp'] || []
      , _0x3a8919 = _0x8cdab8['push']['bind'](_0x8cdab8);
    _0x8cdab8['push'] = _0x55eeac,
    _0x8cdab8 = _0x8cdab8['slice']();
    for (var _0x4f6fac = 0x0; _0x4f6fac < _0x8cdab8['length']; _0x4f6fac++) {
        _0x55eeac(_0x8cdab8[_0x4f6fac])
    }
    var _0x2b03dc = _0x3a8919;
    _0x4f8e89['push']([0x23, 0x0]),
    _0x5c1452()
}({
    35: function _(_0x7ca885, _0x1ae633, _0x1e79e7) {
        $(function() {
            var _0x5ecbd2 = _0x1e79e7(0x6)
              , _0x5692c2 = document['querySelector']('.disData')['getAttribute']('contentKey')
              , _0x32f0c9 = (document['querySelector']('.disUrlPrefix')['getAttribute']('contentKey'),
            document['querySelector']('.disUrlSuffix')['getAttribute']('contentKey'),
            document['querySelector']('.disPass')['getAttribute']('contentKey'))
              , _0x5d84da = _0x5692c2['substring'](0x0, 0x10)
              , _0x1ca9db = _0x5692c2['substring'](0x10, _0x5692c2['length'])
              , _0x59a9d1 = _0x5ecbd2['enc']['Utf8']['parse'](_0x32f0c9)
              , _0x51b002 = _0x5ecbd2['enc']['Utf8']['parse'](_0x5d84da)
              , _0x445421 = function(_0x56adab) {
                var _0x4baa6a = _0x5ecbd2['enc']['Hex']['parse'](_0x56adab)
                  , _0x273f5e = _0x5ecbd2['enc']['Base64']['stringify'](_0x4baa6a);
                return _0x5ecbd2['AES']['decrypt'](_0x273f5e, _0x59a9d1, {
                    'iv': _0x51b002,
                    'mode': _0x5ecbd2['mode']['CBC'],
                    'padding': _0x5ecbd2['pad']['Pkcs7']
                })['toString'](_0x5ecbd2['enc']['Utf8'])['toString']()
            }(_0x1ca9db)
              , _0x569d2a = JSON['parse'](_0x445421)
              , _0x899663 = document['querySelector']('.comicContent-list')
              , _0x167b1b = 0x0;
            function _0xb2158e() {
                var _0x4c700e = document['createElement']('li');
                _0x4c700e['innerHTML'] = '<img data-src="' + _0x569d2a[_0x167b1b]['url'] + '" src="' + URL_TYPEIMG + '" class="lazyload"/>',
                _0x167b1b++,
                _0x899663['append'](_0x4c700e)
            }
            window['onload'] = function() {
                for (var _0x56784a = 0x0; _0x56784a < 0x3; _0x56784a++) {
                    _0xb2158e()
                }
                setTimeout(function() {
                    window['scrollTo'](0x0, 0x0)
                }, 0x64)
            }
            ,
            window['onscroll'] = function() {
                if (_0x899663['clientHeight'] / 0x3 > window['scrollY']) {
                    if (_0x167b1b >= _0x569d2a['length'])
                        return void (window['onscroll'] = function() {
                            return null
                        }
                        );
                    var _0x7fab78 = document['createElement']('li');
                    _0x7fab78['innerHTML'] = '<img data-src="' + _0x569d2a[_0x167b1b]['url'] + '\x22\x20src=\x22' + URL_TYPEIMG + '" class="lazyload"/>',
                    _0x167b1b++,
                    _0x899663['append'](_0x7fab78)
                }
            }
        })
    }
});

后记

已经有人通过抓包拿到了 所有的明文API

posted @ 2021-09-07 22:06  Byaidu  阅读(138)  评论(0编辑  收藏  举报