某漫画站 JavaScript 脚本分析
大概是用 Webpack
给 JavaScript
加了混淆和压缩,逆向还原即可。
原脚本
原脚本解密生成中间脚本,再通过 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。
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步