码上爬第十三题【协程+ob混淆】

  1. 第一步:翻页抓包,观察数据接口,分析哪些参数需要逆向,如图所示:
    在这里插入图片描述
    在这里插入图片描述
  2. 第二步:跟栈分析,定位加密位置,如图所示:
    在这里插入图片描述
    在这里插入图片描述
  3. 第三步:最后就是扣功能函数了,没啥特别的坑,代码如下:

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())
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值