- 第一步:翻页抓包,观察数据接口,分析哪些参数需要逆向,如图所示:
- 第二步:跟栈分析,定位加密位置,如图所示:
- 第三步:最后就是扣功能函数了,没啥特别的坑,代码如下:
js代码
function _0x1e5c29() {
var _0xee3b28 = [];
var _0x454710 = "0123456789abcdef";
for (var _0x20183e = 0; _0x20183e < 32; _0x20183e++) {
_0xee3b28[_0x20183e] = _0x454710["substr"](Math["floor"](Math["random"]() * 16), 1);
}
_0xee3b28[14] = "4";
_0xee3b28[19] = _0x454710["substr"](_0xee3b28[19] & 3 | 8, 1);
_0xee3b28[8] = _0xee3b28[13] = _0xee3b28[18] = _0xee3b28[23];
var _0x4b1861 = _0xee3b28["join"]('');
return _0x4b1861;
}
var mmm = function (_0x3d02a0) {
function _0x1dbdb9(_0x2a6028) {
if (_0x375c2e[_0x2a6028]) {
return _0x375c2e[_0x2a6028]["exports"];
}
var _0x32d6fc = _0x375c2e[_0x2a6028] = {
"i": _0x2a6028,
"l": false,
"exports": {}
};
_0x3d02a0[_0x2a6028]["call"](_0x32d6fc["exports"], _0x32d6fc, _0x32d6fc["exports"], _0x1dbdb9);
_0x32d6fc["l"] = true;
return _0x32d6fc["exports"];
}
var _0x375c2e = {};
_0x1dbdb9["m"] = _0x3d02a0;
_0x1dbdb9["c"] = _0x375c2e;
_0x1dbdb9["i"] = function (_0x24ef10) {
return _0x24ef10;
};
_0x1dbdb9["d"] = function (_0x27956f, _0x49b080, _0x1278a9) {
_0x1dbdb9["o"](_0x27956f, _0x49b080) || Object["defineProperty"](_0x27956f, _0x49b080, {
"configurable": false,
"enumerable": true,
"get": _0x1278a9
});
};
_0x1dbdb9["n"] = function (_0x374742) {
var _0x5da6bd = _0x374742 && _0x374742["__esModule"] ? function () {
return _0x374742["default"];
} : function () {
return _0x374742;
};
_0x1dbdb9["d"](_0x5da6bd, "a", _0x5da6bd);
return _0x5da6bd;
};
_0x1dbdb9["o"] = function (_0x1a3a4f, _0x4ac58f) {
return Object["prototype"]["hasOwnProperty"]["call"](_0x1a3a4f, _0x4ac58f);
};
_0x1dbdb9["p"] = '';
return _0x1dbdb9(_0x1dbdb9["s"] = 4);
}([
function (_0x5e5c2a, _0x2e9f47) {
var _0x46e5e1 = {
"utf8": {
"stringToBytes": function (_0x15daf1) {
return _0x46e5e1["bin"]["stringToBytes"](unescape(encodeURIComponent(_0x15daf1)));
},
"bytesToString": function (_0x51b8ea) {
return decodeURIComponent(escape(_0x46e5e1["bin"]["bytesToString"](_0x51b8ea)));
}
},
"bin": {
"stringToBytes": function (_0xbb4fdc) {
for (var _0x27f4b5 = [], _0x368fe0 = 0; _0x368fe0 < _0xbb4fdc["length"]; _0x368fe0++) {
_0x27f4b5["push"](255 & _0xbb4fdc["charCodeAt"](_0x368fe0));
}
return _0x27f4b5;
},
"bytesToString": function (_0x488932) {
for (var _0x4a4c41 = [], _0x3b39b4 = 0; _0x3b39b4 < _0x488932["length"]; _0x3b39b4++) {
_0x4a4c41["push"](String["fromCharCode"](_0x488932[_0x3b39b4]));
}
return _0x4a4c41["join"]('');
}
}
};
_0x5e5c2a["exports"] = _0x46e5e1;
},
function (_0x43b475, _0x568be1, _0x424828) {
!function () {
var _0x10d93f = _0x424828(2),
_0x59a113 = _0x424828(0)["utf8"],
_0x2e85b1 = _0x424828(3),
_0x5a292a = _0x424828(0)["bin"],
_0x202411 = function (_0x26d53b, _0x40dd99) {
_0x26d53b["constructor"] == String ? _0x26d53b = _0x40dd99 && "binary" === _0x40dd99["encoding"] ? _0x5a292a["stringToBytes"](_0x26d53b) : _0x59a113["stringToBytes"](_0x26d53b) : _0x2e85b1(_0x26d53b) ? _0x26d53b = Array["prototype"]["slice"]["call"](_0x26d53b, 0) : Array["isArray"](_0x26d53b) || (_0x26d53b = _0x26d53b["toString"]());
for (var _0x3c00c8 = _0x10d93f["bytesToWords"](_0x26d53b), _0x4b6cc4 = 8 * _0x26d53b["length"], _0x251a7f = 1732584193, _0xa16a85 = -271733879, _0x413855 = -1732584194, _0xb58270 = 271733878, _0x1cebcd = 0; _0x1cebcd < _0x3c00c8["length"]; _0x1cebcd++) {
_0x3c00c8[_0x1cebcd] = 16711935 & (_0x3c00c8[_0x1cebcd] << 8 | _0x3c00c8[_0x1cebcd] >>> 24) | 4278255360 & (_0x3c00c8[_0x1cebcd] << 24 | _0x3c00c8[_0x1cebcd] >>> 8);
}
_0x3c00c8[_0x4b6cc4 >>> 5] |= 128 << _0x4b6cc4 % 32;
_0x3c00c8[14 + (_0x4b6cc4 + 64 >>> 9 << 4)] = _0x4b6cc4;
for (var _0x395525 = _0x202411["_ff"], _0x5706b9 = _0x202411["_gg"], _0x43bc50 = _0x202411["_hh"], _0x322883 = _0x202411["_ii"], _0x1cebcd = 0; _0x1cebcd < _0x3c00c8["length"]; _0x1cebcd += 16) {
var _0x252e0b = _0x251a7f,
_0xacf563 = _0xa16a85,
_0x28faaf = _0x413855,
_0x16180c = _0xb58270;
_0x251a7f = _0x395525(_0x251a7f, _0xa16a85, _0x413855, _0xb58270, _0x3c00c8[_0x1cebcd + 0], 7, -680876936);
_0xb58270 = _0x395525(_0xb58270, _0x251a7f, _0xa16a85, _0x413855, _0x3c00c8[_0x1cebcd + 1], 12, -389564586);
_0x413855 = _0x395525(_0x413855, _0xb58270, _0x251a7f, _0xa16a85, _0x3c00c8[_0x1cebcd + 2], 17, 606105819);
_0xa16a85 = _0x395525(_0xa16a85, _0x413855, _0xb58270, _0x251a7f, _0x3c00c8[_0x1cebcd + 3], 22, -1044525330);
_0x251a7f = _0x395525(_0x251a7f, _0xa16a85, _0x413855, _0xb58270, _0x3c00c8[_0x1cebcd + 4], 7, -176418897);
_0xb58270 = _0x395525(_0xb58270, _0x251a7f, _0xa16a85, _0x413855, _0x3c00c8[_0x1cebcd + 5], 12, 1200080426);
_0x413855 = _0x395525(_0x413855, _0xb58270, _0x251a7f, _0xa16a85, _0x3c00c8[_0x1cebcd + 6], 17, -1473231341);
_0xa16a85 = _0x395525(_0xa16a85, _0x413855, _0xb58270, _0x251a7f, _0x3c00c8[_0x1cebcd + 7], 22, -45705983);
_0x251a7f = _0x395525(_0x251a7f, _0xa16a85, _0x413855, _0xb58270, _0x3c00c8[_0x1cebcd + 8], 7, 1770035416);
_0xb58270 = _0x395525(_0xb58270, _0x251a7f, _0xa16a85, _0x413855, _0x3c00c8[_0x1cebcd + 9], 12, -1958414417);
_0x413855 = _0x395525(_0x413855, _0xb58270, _0x251a7f, _0xa16a85, _0x3c00c8[_0x1cebcd + 10], 17, -42063);
_0xa16a85 = _0x395525(_0xa16a85, _0x413855, _0xb58270, _0x251a7f, _0x3c00c8[_0x1cebcd + 11], 22, -1990404162);
_0x251a7f = _0x395525(_0x251a7f, _0xa16a85, _0x413855, _0xb58270, _0x3c00c8[_0x1cebcd + 12], 7, 1804603682);
_0xb58270 = _0x395525(_0xb58270, _0x251a7f, _0xa16a85, _0x413855, _0x3c00c8[_0x1cebcd + 13], 12, -40341101);
_0x413855 = _0x395525(_0x413855, _0xb58270, _0x251a7f, _0xa16a85, _0x3c00c8[_0x1cebcd + 14], 17, -1502002290);
_0xa16a85 = _0x395525(_0xa16a85, _0x413855, _0xb58270, _0x251a7f, _0x3c00c8[_0x1cebcd + 15], 22, 1236535329);
_0x251a7f = _0x5706b9(_0x251a7f, _0xa16a85, _0x413855, _0xb58270, _0x3c00c8[_0x1cebcd + 1], 5, -165796510);
_0xb58270 = _0x5706b9(_0xb58270, _0x251a7f, _0xa16a85, _0x413855, _0x3c00c8[_0x1cebcd + 6], 9, -1069501632);
_0x413855 = _0x5706b9(_0x413855, _0xb58270, _0x251a7f, _0xa16a85, _0x3c00c8[_0x1cebcd + 11], 14, 643717713);
_0xa16a85 = _0x5706b9(_0xa16a85, _0x413855, _0xb58270, _0x251a7f, _0x3c00c8[_0x1cebcd + 0], 20, -373897302);
_0x251a7f = _0x5706b9(_0x251a7f, _0xa16a85, _0x413855, _0xb58270, _0x3c00c8[_0x1cebcd + 5], 5, -701558691);
_0xb58270 = _0x5706b9(_0xb58270, _0x251a7f, _0xa16a85, _0x413855, _0x3c00c8[_0x1cebcd + 10], 9, 38016083);
_0x413855 = _0x5706b9(_0x413855, _0xb58270, _0x251a7f, _0xa16a85, _0x3c00c8[_0x1cebcd + 15], 14, -660478335);
_0xa16a85 = _0x5706b9(_0xa16a85, _0x413855, _0xb58270, _0x251a7f, _0x3c00c8[_0x1cebcd + 4], 20, -405537848);
_0x251a7f = _0x5706b9(_0x251a7f, _0xa16a85, _0x413855, _0xb58270, _0x3c00c8[_0x1cebcd + 9], 5, 568446438);
_0xb58270 = _0x5706b9(_0xb58270, _0x251a7f, _0xa16a85, _0x413855, _0x3c00c8[_0x1cebcd + 14], 9, -1019803690);
_0x413855 = _0x5706b9(_0x413855, _0xb58270, _0x251a7f, _0xa16a85, _0x3c00c8[_0x1cebcd + 3], 14, -187363961);
_0xa16a85 = _0x5706b9(_0xa16a85, _0x413855, _0xb58270, _0x251a7f, _0x3c00c8[_0x1cebcd + 8], 20, 1163531501);
_0x251a7f = _0x5706b9(_0x251a7f, _0xa16a85, _0x413855, _0xb58270, _0x3c00c8[_0x1cebcd + 13], 5, -1444681467);
_0xb58270 = _0x5706b9(_0xb58270, _0x251a7f, _0xa16a85, _0x413855, _0x3c00c8[_0x1cebcd + 2], 9, -51403784);
_0x413855 = _0x5706b9(_0x413855, _0xb58270, _0x251a7f, _0xa16a85, _0x3c00c8[_0x1cebcd + 7], 14, 1735328473);
_0xa16a85 = _0x5706b9(_0xa16a85, _0x413855, _0xb58270, _0x251a7f, _0x3c00c8[_0x1cebcd + 12], 20, -1926607734);
_0x251a7f = _0x43bc50(_0x251a7f, _0xa16a85, _0x413855, _0xb58270, _0x3c00c8[_0x1cebcd + 5], 4, -378558);
_0xb58270 = _0x43bc50(_0xb58270, _0x251a7f, _0xa16a85, _0x413855, _0x3c00c8[_0x1cebcd + 8], 11, -2022574463);
_0x413855 = _0x43bc50(_0x413855, _0xb58270, _0x251a7f, _0xa16a85, _0x3c00c8[_0x1cebcd + 11], 16, 1839030562);
_0xa16a85 = _0x43bc50(_0xa16a85, _0x413855, _0xb58270, _0x251a7f, _0x3c00c8[_0x1cebcd + 14], 23, -35309556);
_0x251a7f = _0x43bc50(_0x251a7f, _0xa16a85, _0x413855, _0xb58270, _0x3c00c8[_0x1cebcd + 1], 4, -1530992060);
_0xb58270 = _0x43bc50(_0xb58270, _0x251a7f, _0xa16a85, _0x413855, _0x3c00c8[_0x1cebcd + 4], 11, 1272893353);
_0x413855 = _0x43bc50(_0x413855, _0xb58270, _0x251a7f, _0xa16a85, _0x3c00c8[_0x1cebcd + 7], 16, -155497632);
_0xa16a85 = _0x43bc50(_0xa16a85, _0x413855, _0xb58270, _0x251a7f, _0x3c00c8[_0x1cebcd + 10], 23, -1094730640);
_0x251a7f = _0x43bc50(_0x251a7f, _0xa16a85, _0x413855, _0xb58270, _0x3c00c8[_0x1cebcd + 13], 4, 681279174);
_0xb58270 = _0x43bc50(_0xb58270, _0x251a7f, _0xa16a85, _0x413855, _0x3c00c8[_0x1cebcd + 0], 11, -358537222);
_0x413855 = _0x43bc50(_0x413855, _0xb58270, _0x251a7f, _0xa16a85, _0x3c00c8[_0x1cebcd + 3], 16, -722521979);
_0xa16a85 = _0x43bc50(_0xa16a85, _0x413855, _0xb58270, _0x251a7f, _0x3c00c8[_0x1cebcd + 6], 23, 76029189);
_0x251a7f = _0x43bc50(_0x251a7f, _0xa16a85, _0x413855, _0xb58270, _0x3c00c8[_0x1cebcd + 9], 4, -640364487);
_0xb58270 = _0x43bc50(_0xb58270, _0x251a7f, _0xa16a85, _0x413855, _0x3c00c8[_0x1cebcd + 12], 11, -421815835);
_0x413855 = _0x43bc50(_0x413855, _0xb58270, _0x251a7f, _0xa16a85, _0x3c00c8[_0x1cebcd + 15], 16, 530742520);
_0xa16a85 = _0x43bc50(_0xa16a85, _0x413855, _0xb58270, _0x251a7f, _0x3c00c8[_0x1cebcd + 2], 23, -995338651);
_0x251a7f = _0x322883(_0x251a7f, _0xa16a85, _0x413855, _0xb58270, _0x3c00c8[_0x1cebcd + 0], 6, -198630844);
_0xb58270 = _0x322883(_0xb58270, _0x251a7f, _0xa16a85, _0x413855, _0x3c00c8[_0x1cebcd + 7], 10, 1126891415);
_0x413855 = _0x322883(_0x413855, _0xb58270, _0x251a7f, _0xa16a85, _0x3c00c8[_0x1cebcd + 14], 15, -1416354905);
_0xa16a85 = _0x322883(_0xa16a85, _0x413855, _0xb58270, _0x251a7f, _0x3c00c8[_0x1cebcd + 5], 21, -57434055);
_0x251a7f = _0x322883(_0x251a7f, _0xa16a85, _0x413855, _0xb58270, _0x3c00c8[_0x1cebcd + 12], 6, 1700485571);
_0xb58270 = _0x322883(_0xb58270, _0x251a7f, _0xa16a85, _0x413855, _0x3c00c8[_0x1cebcd + 3], 10, -1894986606);
_0x413855 = _0x322883(_0x413855, _0xb58270, _0x251a7f, _0xa16a85, _0x3c00c8[_0x1cebcd + 10], 15, -1051523);
_0xa16a85 = _0x322883(_0xa16a85, _0x413855, _0xb58270, _0x251a7f, _0x3c00c8[_0x1cebcd + 1], 21, -2054922799);
_0x251a7f = _0x322883(_0x251a7f, _0xa16a85, _0x413855, _0xb58270, _0x3c00c8[_0x1cebcd + 8], 6, 1873313359);
_0xb58270 = _0x322883(_0xb58270, _0x251a7f, _0xa16a85, _0x413855, _0x3c00c8[_0x1cebcd + 15], 10, -30611744);
_0x413855 = _0x322883(_0x413855, _0xb58270, _0x251a7f, _0xa16a85, _0x3c00c8[_0x1cebcd + 6], 15, -1560198380);
_0xa16a85 = _0x322883(_0xa16a85, _0x413855, _0xb58270, _0x251a7f, _0x3c00c8[_0x1cebcd + 13], 21, 1309151649);
_0x251a7f = _0x322883(_0x251a7f, _0xa16a85, _0x413855, _0xb58270, _0x3c00c8[_0x1cebcd + 4], 6, -145523070);
_0xb58270 = _0x322883(_0xb58270, _0x251a7f, _0xa16a85, _0x413855, _0x3c00c8[_0x1cebcd + 11], 10, -1120210379);
_0x413855 = _0x322883(_0x413855, _0xb58270, _0x251a7f, _0xa16a85, _0x3c00c8[_0x1cebcd + 2], 15, 718787259);
_0xa16a85 = _0x322883(_0xa16a85, _0x413855, _0xb58270, _0x251a7f, _0x3c00c8[_0x1cebcd + 9], 21, -343485551);
_0x251a7f = _0x251a7f + _0x252e0b >>> 0;
_0xa16a85 = _0xa16a85 + _0xacf563 >>> 0;
_0x413855 = _0x413855 + _0x28faaf >>> 0;
_0xb58270 = _0xb58270 + _0x16180c >>> 0;
}
return _0x10d93f["endian"]([_0x251a7f, _0xa16a85, _0x413855, _0xb58270]);
};
_0x202411["_ff"] = function (_0x39ccbe, _0x7dcee4, _0x2d1c0d, _0x208e16, _0x48cc7b, _0x10eea0, _0x1b42ef) {
var _0x5d1954 = _0x39ccbe + (_0x7dcee4 & _0x2d1c0d | ~_0x7dcee4 & _0x208e16) + (_0x48cc7b >>> 0) + _0x1b42ef;
return (_0x5d1954 << _0x10eea0 | _0x5d1954 >>> 32 - _0x10eea0) + _0x7dcee4;
};
_0x202411["_gg"] = function (_0x3a0f95, _0xb4f9cc, _0x1bc7ea, _0x2f9a1f, _0x6109f, _0x5a4075, _0x1c5742) {
var _0x2cac31 = _0x3a0f95 + (_0xb4f9cc & _0x2f9a1f | _0x1bc7ea & ~_0x2f9a1f) + (_0x6109f >>> 0) + _0x1c5742;
return (_0x2cac31 << _0x5a4075 | _0x2cac31 >>> 32 - _0x5a4075) + _0xb4f9cc;
};
_0x202411["_hh"] = function (_0x5d9dae, _0x5a66b5, _0x167cb2, _0x434b1b, _0x2cae6c, _0xce09a9, _0x12da9c) {
var _0x4c7e4e = _0x5d9dae + (_0x5a66b5 ^ _0x167cb2 ^ _0x434b1b) + (_0x2cae6c >>> 0) + _0x12da9c;
return (_0x4c7e4e << _0xce09a9 | _0x4c7e4e >>> 32 - _0xce09a9) + _0x5a66b5;
};
_0x202411["_ii"] = function (_0x56d426, _0x5c57da, _0x59666b, _0xc4df11, _0x50f86d, _0x1438dd, _0x165172) {
var _0x1cf89a = _0x56d426 + (_0x59666b ^ (_0x5c57da | ~_0xc4df11)) + (_0x50f86d >>> 0) + _0x165172;
return (_0x1cf89a << _0x1438dd | _0x1cf89a >>> 32 - _0x1438dd) + _0x5c57da;
};
_0x202411["_blocksize"] = 16;
_0x202411["_digestsize"] = 16;
_0x43b475["exports"] = function (_0x472566, _0x4f1898) {
if (void 0 === _0x472566 || null === _0x472566) {
throw new Error("Illegal argument " + _0x472566);
}
var _0x84db5 = _0x10d93f["wordsToBytes"](_0x202411(_0x472566, _0x4f1898));
return _0x4f1898 && _0x4f1898["asBytes"] ? _0x84db5 : _0x4f1898 && _0x4f1898["asString"] ? _0x5a292a["bytesToString"](_0x84db5) : _0x10d93f["bytesToHex"](_0x84db5);
};
}();
},
function (_0x29cd0a, _0x5848ca) {
!function () {
var _0xa5fc75 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",
_0xb35a1 = {
"rotl": function (_0x27f53d, _0x342d11) {
return _0x27f53d << _0x342d11 | _0x27f53d >>> 32 - _0x342d11;
},
"rotr": function (_0x2aa69f, _0x22dae7) {
return _0x2aa69f << 32 - _0x22dae7 | _0x2aa69f >>> _0x22dae7;
},
"endian": function (_0x3bad71) {
if (_0x3bad71["constructor"] == Number) {
return 16711935 & _0xb35a1["rotl"](_0x3bad71, 8) | 4278255360 & _0xb35a1["rotl"](_0x3bad71, 24);
}
for (var _0x1e5f02 = 0; _0x1e5f02 < _0x3bad71["length"]; _0x1e5f02++) {
_0x3bad71[_0x1e5f02] = _0xb35a1["endian"](_0x3bad71[_0x1e5f02]);
}
return _0x3bad71;
},
"randomBytes": function (_0x444f0b) {
for (var _0x5b2980 = []; _0x444f0b > 0; _0x444f0b--) {
_0x5b2980["push"](Math["floor"](256 * Math["random"]()));
}
return _0x5b2980;
},
"bytesToWords": function (_0x269366) {
for (var _0x10d887 = [], _0x2b1de3 = 0, _0x64fb45 = 0; _0x2b1de3 < _0x269366["length"]; _0x2b1de3++, _0x64fb45 += 8) {
_0x10d887[_0x64fb45 >>> 5] |= _0x269366[_0x2b1de3] << 24 - _0x64fb45 % 32;
}
return _0x10d887;
},
"wordsToBytes": function (_0x326eb9) {
for (var _0x860dbc = [], _0x19f72a = 0; _0x19f72a < 32 * _0x326eb9["length"]; _0x19f72a += 8) {
_0x860dbc["push"](_0x326eb9[_0x19f72a >>> 5] >>> 24 - _0x19f72a % 32 & 255);
}
return _0x860dbc;
},
"bytesToHex": function (_0x51f6c1) {
for (var _0x77badb = [], _0xc67024 = 0; _0xc67024 < _0x51f6c1["length"]; _0xc67024++) {
_0x77badb["push"]((_0x51f6c1[_0xc67024] >>> 4)["toString"](16));
_0x77badb["push"]((15 & _0x51f6c1[_0xc67024])["toString"](16));
}
return _0x77badb["join"]('');
},
"hexToBytes": function (_0x54861c) {
for (var _0x4504e3 = [], _0x2514de = 0; _0x2514de < _0x54861c["length"]; _0x2514de += 2) {
_0x4504e3["push"](parseInt(_0x54861c["substr"](_0x2514de, 2), 16));
}
return _0x4504e3;
},
"bytesToBase64": function (_0x5a750a) {
for (var _0x3368be = [], _0x2e4b23 = 0; _0x2e4b23 < _0x5a750a["length"]; _0x2e4b23 += 3) {
for (var _0x41e51a = _0x5a750a[_0x2e4b23] << 16 | _0x5a750a[_0x2e4b23 + 1] << 8 | _0x5a750a[_0x2e4b23 + 2], _0x329b65 = 0; _0x329b65 < 4; _0x329b65++) {
8 * _0x2e4b23 + 6 * _0x329b65 <= 8 * _0x5a750a["length"] ? _0x3368be["push"](_0xa5fc75["charAt"](_0x41e51a >>> 6 * (3 - _0x329b65) & 63)) : _0x3368be["push"]("=");
}
}
return _0x3368be["join"]('');
},
"base64ToBytes": function (_0x241683) {
_0x241683 = _0x241683["replace"](/[^A-Z0-9+\/]/gi, '');
for (var _0x43f52f = [], _0x435084 = 0, _0x3c668c = 0; _0x435084 < _0x241683["length"]; _0x3c668c = ++_0x435084 % 4) {
0 != _0x3c668c && _0x43f52f["push"]((_0xa5fc75["indexOf"](_0x241683["charAt"](_0x435084 - 1)) & Math["pow"](2, -2 * _0x3c668c + 8) - 1) << 2 * _0x3c668c | _0xa5fc75["indexOf"](_0x241683["charAt"](_0x435084)) >>> 6 - 2 * _0x3c668c);
}
return _0x43f52f;
}
};
_0x29cd0a["exports"] = _0xb35a1;
}();
},
function (_0x23e29b, _0x164906) {
function _0x47256a(_0x4dab9c) {
return !!_0x4dab9c["constructor"] && "function" == typeof _0x4dab9c["constructor"]["isBuffer"] && _0x4dab9c["constructor"]["isBuffer"](_0x4dab9c);
}
function _0x30c836(_0x140a6f) {
return "function" == typeof _0x140a6f["readFloatLE"] && "function" == typeof _0x140a6f["slice"] && _0x47256a(_0x140a6f["slice"](0, 0));
}
_0x23e29b["exports"] = function (_0x57568a) {
return null != _0x57568a && (_0x47256a(_0x57568a) || _0x30c836(_0x57568a) || !!_0x57568a["_isBuffer"]);
};
},
function (_0x28a94d, _0x24d55d, _0x2037bf) {
_0x28a94d["exports"] = _0x2037bf(1);
}]);
function get_r_s_t(page){
t = Date["parse"](new Date());
r = _0x1e5c29();
s = mmm(`{"page":"${page}"}` + r + t);
return {
't': t.toString(),
'r': r,
's': s
}
}
// 测试
for(i = 0; i < 10; i++){
console.log(get_r_s_t(1))
}
py代码
import asyncio, aiohttp, execjs
class AsyncSpider(object):
def __init__(self):
self.url = 'https://www.mashangpa.com/api/problem-detail/13/data/'
self.cookies = {
'sessionid':'5jcme0ghsrunwzrdonvwiwpm87nquvxx'
}
self.semaphore = asyncio.Semaphore(3)
with open('13.js', 'r', encoding='utf-8') as f:
self.js_code = execjs.compile(f.read())
async def fetch_page(self, session, page):
async with self.semaphore:
sign = self.js_code.call('get_r_s_t', page)
headers = {
'r': sign['r'],
's': sign['s'],
't': sign['t'],
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36',
}
data = '{"page":"'+str(page)+'"}'
async with session.post(self.url, headers = headers, cookies = self.cookies, data = data, timeout = 10) as res:
data = await res.json()
return data.get('current_array', [])
async def parse_all_pages(self):
total_sum = 0
async with aiohttp.ClientSession() as session:
tasks = [self.fetch_page(session, page) for page in range(1, 21)]
results = await asyncio.gather(*tasks)
for array in results:
if array:
total_sum += sum(array)
print(total_sum)
if __name__ == '__main__':
spider = AsyncSpider()
asyncio.run(spider.parse_all_pages())