JS逆向学习(小白级别)(最新)-中国空气质量在线监测平台数据数据的获取

说明

        (所有脚本仅供学习交流使用,请勿用于商业用途和非法用途,如作他用所造成的一切后果和法律责任一概与本人无关,如有侵权请联系我删除)

案例介绍

        今天我们学习一下中国空气质量在线监测平台的js逆向,话不多说上图了。如图所示我们想要获取上海空气质量的的历史统计数据。(链接

        我们正常f12打开调试工具,如图所示我们可以看见网站做了识别不让你进行调试,右键也是不可以的,怎么解决?

 

        我们直接在浏览器中的设置打开开发者工具,就可以成功打开调试工具。

        成功打开调试工具后发现网站还是识别到了直接认定非法监测加debugger,常规方法在debugger处右键然后永不再此处暂停,发现还是没有数据。

         然后研究了一下发现他只能识别到在一个页面的调试,如果我们把调试页面单独页面展示就可以了,具体如图所示

         我们发现调试页面独立出来就可以调试了,但是还有debugger,我们直接在debugger处右键然后永不再此处暂停,然后刷新一下页面就ok了

         我们可以发现我们已经可以调试并且可以找到数据获取的接口,发现接口进行了参数加密和结果加密。(注意网站有缓存如果找不到这个接口,就清理一下cookie,或者换一个时间月份的数据就行了

 参数加密

        我们直接把接口链接加到XHR/提取断点,来寻找加密函数在哪里(不清楚可以看一下:烯牛数据

        链接加好了刷新页面是不行的,我们清理一下cookie,或者换一个时间月份点击就行了。就将出现这页面没有看到我们想要的加密参数怎么办?我们直接进行跟栈,我们可以发现到sSPnfjolBsGjl66hUEw8栈比较特殊,点击进去看看。(正常要一个一个向下找的,我就直接按照找到处理)

         然后我们就可以惊奇的发现pKmSFk8这个好像就是我们要找的加密参数,那么poPBVxzNuafY8Yu这个函数就是他生成加密的函数,我们直接打开Visual Studio Code开始补环境吧。

        简单的就是缺少了什么函数就去js文件中找将函数都补全,然后运行就可以看见我们已经成功将参数加密了,唯一变的就是oBDNNVgaDf字典中的一个地区和时间,想要什么地区什么时间的数据改一下就行了。

结果的解密

        我们上边已经解决了参数的加密,接下来我们开始拿着加密后的参数去解密吧。我们可以看见pKmSFk8这个参数在下面的data中就用到了,并且success明显是成功的意思,那么这个函数可能就是解密的函数了,加上断点一看没错就是我们想要的数据,直接开始扣代码吧。

         我们可以看见上一步获取好的参数,就是dGHdO,再下运行一下就可以发现,经过dxvERkeEvHbS函数后就变成我们想要的数据了,那么我们开始补环境。

         补全环境后,结果也拿到了展示一下

·        在pycharm中完整运行一下 结果展示

代码展示(部分,参数部分)

       有些函数没有用到可以删除

const CryptoJS = require('crypto-js');

function poPBVxzNuafY8Yu(m0fhOhhGL, oNLhNQ){
    var aMFs = '3c9208efcfb2f5b843eec8d96de6d48a';
    var cVWG2 = 'WEB';
    var t5GECZQ = new Date().getTime();

    var pKmSFk8 = {
      appId: aMFs,
      method: m0fhOhhGL,
      timestamp: t5GECZQ,
      clienttype: cVWG2,
      object: oNLhNQ,
      secret: hex_md5(aMFs + m0fhOhhGL + t5GECZQ + cVWG2 + JSON.stringify(osZ34YC04S(oNLhNQ)))
    };
    pKmSFk8 = BASE64encrypt(JSON.stringify(pKmSFk8));
    pKmSFk8 = AESencrypt(pKmSFk8, acky6QolJSJi, acixHVhiNqmK);
    return pKmSFk8;
}
function AESencrypt(text, key, iv) {
  var secretkey = (CryptoJS.MD5(key).toString()).substr(16, 16);
  var secretiv = (CryptoJS.MD5(iv).toString()).substr(0, 16);
  // console.log('real key:', secretkey);
  // console.log('real iv:', secretiv);
  secretkey = CryptoJS.enc.Utf8.parse(secretkey);
  secretiv = CryptoJS.enc.Utf8.parse(secretiv);
  var result = CryptoJS.AES.encrypt(text, secretkey, {
    iv: secretiv,
    mode: CryptoJS.mode.CBC,
    padding: CryptoJS.pad.Pkcs7
  });
  return result.toString();
}
function hex_md5(s) {
  return rstr2hex(rstr_md5(str2rstr_utf8(s)))
}
function rstr2hex(input) {
  try {
      hexcase
  } catch (e) {
      hexcase = 0
  }
  var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef";
  var output = "";
  var x;
  for (var i = 0; i < input.length; i++) {
      x = input.charCodeAt(i);
      output += hex_tab.charAt((x >>> 4) & 0x0F) + hex_tab.charAt(x & 0x0F)
  }
  return output
}
function rstr_md5(s) {
  return binl2rstr(binl_md5(rstr2binl(s), s.length * 8))
}
function osZ34YC04S(obj){
  var newObject = {};
  Object.keys(obj).sort().map(function(key){
      newObject[key] = obj[key];
  });
  return newObject;
}
function str2rstr_utf8(input) {
  var output = "";
  var i = -1;
  var x, y;
  while (++i < input.length) {
      x = input.charCodeAt(i);
      y = i + 1 < input.length ? input.charCodeAt(i + 1) : 0;
      if (0xD800 <= x && x <= 0xDBFF && 0xDC00 <= y && y <= 0xDFFF) {
          x = 0x10000 + ((x & 0x03FF) << 10) + (y & 0x03FF);
          i++
      }
      if (x <= 0x7F)
          output += String.fromCharCode(x);
      else if (x <= 0x7FF)
          output += String.fromCharCode(0xC0 | ((x >>> 6) & 0x1F), 0x80 | (x & 0x3F));
      else if (x <= 0xFFFF)
          output += String.fromCharCode(0xE0 | ((x >>> 12) & 0x0F), 0x80 | ((x >>> 6) & 0x3F), 0x80 | (x & 0x3F));
      else if (x <= 0x1FFFFF)
          output += String.fromCharCode(0xF0 | ((x >>> 18) & 0x07), 0x80 | ((x >>> 12) & 0x3F), 0x80 | ((x >>> 6) & 0x3F), 0x80 | (x & 0x3F))
  }
  return output
}
function binl2rstr(input) {
  var output = "";
  for (var i = 0; i < input.length * 32; i += 8)
      output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xFF);
  return output
}
function binl_md5(x, len) {
  x[len >> 5] |= 0x80 << ((len) % 32);
  x[(((len + 64) >>> 9) << 4) + 14] = len;
  var a = 1732584193;
  var b = -271733879;
  var c = -1732584194;
  var d = 271733878;
  for (var i = 0; i < x.length; i += 16) {
      var olda = a;
      var oldb = b;
      var oldc = c;
      var oldd = d;
      a = md5_ff(a, b, c, d, x[i + 0], 7, -680876936);
      d = md5_ff(d, a, b, c, x[i + 1], 12, -389564586);
      c = md5_ff(c, d, a, b, x[i + 2], 17, 606105819);
      b = md5_ff(b, c, d, a, x[i + 3], 22, -1044525330);
      a = md5_ff(a, b, c, d, x[i + 4], 7, -176418897);
      d = md5_ff(d, a, b, c, x[i + 5], 12, 1200080426);
      c = md5_ff(c, d, a, b, x[i + 6], 17, -1473231341);
      b = md5_ff(b, c, d, a, x[i + 7], 22, -45705983);
      a = md5_ff(a, b, c, d, x[i + 8], 7, 1770035416);
      d = md5_ff(d, a, b, c, x[i + 9], 12, -1958414417);
      c = md5_ff(c, d, a, b, x[i + 10], 17, -42063);
      b = md5_ff(b, c, d, a, x[i + 11], 22, -1990404162);
      a = md5_ff(a, b, c, d, x[i + 12], 7, 1804603682);
      d = md5_ff(d, a, b, c, x[i + 13], 12, -40341101);
      c = md5_ff(c, d, a, b, x[i + 14], 17, -1502002290);
      b = md5_ff(b, c, d, a, x[i + 15], 22, 1236535329);
      a = md5_gg(a, b, c, d, x[i + 1], 5, -165796510);
      d = md5_gg(d, a, b, c, x[i + 6], 9, -1069501632);
      c = md5_gg(c, d, a, b, x[i + 11], 14, 643717713);
      b = md5_gg(b, c, d, a, x[i + 0], 20, -373897302);
      a = md5_gg(a, b, c, d, x[i + 5], 5, -701558691);
      d = md5_gg(d, a, b, c, x[i + 10], 9, 38016083);
      c = md5_gg(c, d, a, b, x[i + 15], 14, -660478335);
      b = md5_gg(b, c, d, a, x[i + 4], 20, -405537848);
      a = md5_gg(a, b, c, d, x[i + 9], 5, 568446438);
      d = md5_gg(d, a, b, c, x[i + 14], 9, -1019803690);
      c = md5_gg(c, d, a, b, x[i + 3], 14, -187363961);
      b = md5_gg(b, c, d, a, x[i + 8], 20, 1163531501);
      a = md5_gg(a, b, c, d, x[i + 13], 5, -1444681467);
      d = md5_gg(d, a, b, c, x[i + 2], 9, -51403784);
      c = md5_gg(c, d, a, b, x[i + 7], 14, 1735328473);
      b = md5_gg(b, c, d, a, x[i + 12], 20, -1926607734);
      a = md5_hh(a, b, c, d, x[i + 5], 4, -378558);
      d = md5_hh(d, a, b, c, x[i + 8], 11, -2022574463);
      c = md5_hh(c, d, a, b, x[i + 11], 16, 1839030562);
      b = md5_hh(b, c, d, a, x[i + 14], 23, -35309556);
      a = md5_hh(a, b, c, d, x[i + 1], 4, -1530992060);
      d = md5_hh(d, a, b, c, x[i + 4], 11, 1272893353);
      c = md5_hh(c, d, a, b, x[i + 7], 16, -155497632);
      b = md5_hh(b, c, d, a, x[i + 10], 23, -1094730640);
      a = md5_hh(a, b, c, d, x[i + 13], 4, 681279174);
      d = md5_hh(d, a, b, c, x[i + 0], 11, -358537222);
      c = md5_hh(c, d, a, b, x[i + 3], 16, -722521979);
      b = md5_hh(b, c, d, a, x[i + 6], 23, 76029189);
      a = md5_hh(a, b, c, d, x[i + 9], 4, -640364487);
      d = md5_hh(d, a, b, c, x[i + 12], 11, -421815835);
      c = md5_hh(c, d, a, b, x[i + 15], 16, 530742520);
      b = md5_hh(b, c, d, a, x[i + 2], 23, -995338651);
      a = md5_ii(a, b, c, d, x[i + 0], 6, -198630844);
      d = md5_ii(d, a, b, c, x[i + 7], 10, 1126891415);
      c = md5_ii(c, d, a, b, x[i + 14], 15, -1416354905);
      b = md5_ii(b, c, d, a, x[i + 5], 21, -57434055);
      a = md5_ii(a, b, c, d, x[i + 12], 6, 1700485571);
      d = md5_ii(d, a, b, c, x[i + 3], 10, -1894986606);
      c = md5_ii(c, d, a, b, x[i + 10], 15, -1051523);
      b = md5_ii(b, c, d, a, x[i + 1], 21, -2054922799);
      a = md5_ii(a, b, c, d, x[i + 8], 6, 1873313359);
      d = md5_ii(d, a, b, c, x[i + 15], 10, -30611744);
      c = md5_ii(c, d, a, b, x[i + 6], 15, -1560198380);
      b = md5_ii(b, c, d, a, x[i + 13], 21, 1309151649);
      a = md5_ii(a, b, c, d, x[i + 4], 6, -145523070);
      d = md5_ii(d, a, b, c, x[i + 11], 10, -1120210379);
      c = md5_ii(c, d, a, b, x[i + 2], 15, 718787259);
      b = md5_ii(b, c, d, a, x[i + 9], 21, -343485551);
      a = safe_add(a, olda);
      b = safe_add(b, oldb);
      c = safe_add(c, oldc);
      d = safe_add(d, oldd)
  }
  return Array(a, b, c, d)
}
function hex_md5(s) {
  return rstr2hex(rstr_md5(str2rstr_utf8(s)))
}
function rstr2hex(input) {
  try {
      hexcase
  } catch (e) {
      hexcase = 0
  }
  var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef";
  var output = "";
  var x;
  for (var i = 0; i < input.length; i++) {
      x = input.charCodeAt(i);
      output += hex_tab.charAt((x >>> 4) & 0x0F) + hex_tab.charAt(x & 0x0F)
  }
  return output
}
function rstr_md5(s) {
  return binl2rstr(binl_md5(rstr2binl(s), s.length * 8))
}
function str2rstr_utf8(input) {
  var output = "";
  var i = -1;
  var x, y;
  while (++i < input.length) {
      x = input.charCodeAt(i);
      y = i + 1 < input.length ? input.charCodeAt(i + 1) : 0;
      if (0xD800 <= x && x <= 0xDBFF && 0xDC00 <= y && y <= 0xDFFF) {
          x = 0x10000 + ((x & 0x03FF) << 10) + (y & 0x03FF);
          i++
      }
      if (x <= 0x7F)
          output += String.fromCharCode(x);
      else if (x <= 0x7FF)
          output += String.fromCharCode(0xC0 | ((x >>> 6) & 0x1F), 0x80 | (x & 0x3F));
      else if (x <= 0xFFFF)
          output += String.fromCharCode(0xE0 | ((x >>> 12) & 0x0F), 0x80 | ((x >>> 6) & 0x3F), 0x80 | (x & 0x3F));
      else if (x <= 0x1FFFFF)
          output += String.fromCharCode(0xF0 | ((x >>> 18) & 0x07), 0x80 | ((x >>> 12) & 0x3F), 0x80 | ((x >>> 6) & 0x3F), 0x80 | (x & 0x3F))
  }
  return output
}
function binl2rstr(input) {
  var output = "";
  for (var i = 0; i < input.length * 32; i += 8)
      output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xFF);
  return output
}
function binl_md5(x, len) {
  x[len >> 5] |= 0x80 << ((len) % 32);
  x[(((len + 64) >>> 9) << 4) + 14] = len;
  var a = 1732584193;
  var b = -271733879;
  var c = -1732584194;
  var d = 271733878;
  for (var i = 0; i < x.length; i += 16) {
      var olda = a;
      var oldb = b;
      var oldc = c;
      var oldd = d;
      a = md5_ff(a, b, c, d, x[i + 0], 7, -680876936);
      d = md5_ff(d, a, b, c, x[i + 1], 12, -389564586);
      c = md5_ff(c, d, a, b, x[i + 2], 17, 606105819);
      b = md5_ff(b, c, d, a, x[i + 3], 22, -1044525330);
      a = md5_ff(a, b, c, d, x[i + 4], 7, -176418897);
      d = md5_ff(d, a, b, c, x[i + 5], 12, 1200080426);
      c = md5_ff(c, d, a, b, x[i + 6], 17, -1473231341);
      b = md5_ff(b, c, d, a, x[i + 7], 22, -45705983);
      a = md5_ff(a, b, c, d, x[i + 8], 7, 1770035416);
      d = md5_ff(d, a, b, c, x[i + 9], 12, -1958414417);
      c = md5_ff(c, d, a, b, x[i + 10], 17, -42063);
      b = md5_ff(b, c, d, a, x[i + 11], 22, -1990404162);
      a = md5_ff(a, b, c, d, x[i + 12], 7, 1804603682);
      d = md5_ff(d, a, b, c, x[i + 13], 12, -40341101);
      c = md5_ff(c, d, a, b, x[i + 14], 17, -1502002290);
      b = md5_ff(b, c, d, a, x[i + 15], 22, 1236535329);
      a = md5_gg(a, b, c, d, x[i + 1], 5, -165796510);
      d = md5_gg(d, a, b, c, x[i + 6], 9, -1069501632);
      c = md5_gg(c, d, a, b, x[i + 11], 14, 643717713);
      b = md5_gg(b, c, d, a, x[i + 0], 20, -373897302);
      a = md5_gg(a, b, c, d, x[i + 5], 5, -701558691);
      d = md5_gg(d, a, b, c, x[i + 10], 9, 38016083);
      c = md5_gg(c, d, a, b, x[i + 15], 14, -660478335);
      b = md5_gg(b, c, d, a, x[i + 4], 20, -405537848);
      a = md5_gg(a, b, c, d, x[i + 9], 5, 568446438);
      d = md5_gg(d, a, b, c, x[i + 14], 9, -1019803690);
      c = md5_gg(c, d, a, b, x[i + 3], 14, -187363961);
      b = md5_gg(b, c, d, a, x[i + 8], 20, 1163531501);
      a = md5_gg(a, b, c, d, x[i + 13], 5, -1444681467);
      d = md5_gg(d, a, b, c, x[i + 2], 9, -51403784);
      c = md5_gg(c, d, a, b, x[i + 7], 14, 1735328473);
      b = md5_gg(b, c, d, a, x[i + 12], 20, -1926607734);
      a = md5_hh(a, b, c, d, x[i + 5], 4, -378558);
      d = md5_hh(d, a, b, c, x[i + 8], 11, -2022574463);
      c = md5_hh(c, d, a, b, x[i + 11], 16, 1839030562);
      b = md5_hh(b, c, d, a, x[i + 14], 23, -35309556);
      a = md5_hh(a, b, c, d, x[i + 1], 4, -1530992060);
      d = md5_hh(d, a, b, c, x[i + 4], 11, 1272893353);
      c = md5_hh(c, d, a, b, x[i + 7], 16, -155497632);
      b = md5_hh(b, c, d, a, x[i + 10], 23, -1094730640);
      a = md5_hh(a, b, c, d, x[i + 13], 4, 681279174);
      d = md5_hh(d, a, b, c, x[i + 0], 11, -358537222);
      c = md5_hh(c, d, a, b, x[i + 3], 16, -722521979);
      b = md5_hh(b, c, d, a, x[i + 6], 23, 76029189);
      a = md5_hh(a, b, c, d, x[i + 9], 4, -640364487);
      d = md5_hh(d, a, b, c, x[i + 12], 11, -421815835);
      c = md5_hh(c, d, a, b, x[i + 15], 16, 530742520);
      b = md5_hh(b, c, d, a, x[i + 2], 23, -995338651);
      a = md5_ii(a, b, c, d, x[i + 0], 6, -198630844);
      d = md5_ii(d, a, b, c, x[i + 7], 10, 1126891415);
      c = md5_ii(c, d, a, b, x[i + 14], 15, -1416354905);
      b = md5_ii(b, c, d, a, x[i + 5], 21, -57434055);
      a = md5_ii(a, b, c, d, x[i + 12], 6, 1700485571);
      d = md5_ii(d, a, b, c, x[i + 3], 10, -1894986606);
      c = md5_ii(c, d, a, b, x[i + 10], 15, -1051523);
      b = md5_ii(b, c, d, a, x[i + 1], 21, -2054922799);
      a = md5_ii(a, b, c, d, x[i + 8], 6, 1873313359);
      d = md5_ii(d, a, b, c, x[i + 15], 10, -30611744);
      c = md5_ii(c, d, a, b, x[i + 6], 15, -1560198380);
      b = md5_ii(b, c, d, a, x[i + 13], 21, 1309151649);
      a = md5_ii(a, b, c, d, x[i + 4], 6, -145523070);
      d = md5_ii(d, a, b, c, x[i + 11], 10, -1120210379);
      c = md5_ii(c, d, a, b, x[i + 2], 15, 718787259);
      b = md5_ii(b, c, d, a, x[i + 9], 21, -343485551);
      a = safe_add(a, olda);
      b = safe_add(b, oldb);
      c = safe_add(c, oldc);
      d = safe_add(d, oldd)
  }
  return Array(a, b, c, d)
}
function rstr2binl(input) {
  var output = Array(input.length >> 2);
  for (var i = 0; i < output.length; i++)
      output[i] = 0;
  for (var i = 0; i < input.length * 8; i += 8)
      output[i >> 5] |= (input.charCodeAt(i / 8) & 0xFF) << (i % 32);
  return output
}
function md5_ff(a, b, c, d, x, s, t) {
  return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t)
}
function md5_cmn(q, a, b, x, s, t) {
  return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s), b)
}
function safe_add(x, y) {
  var lsw = (x & 0xFFFF) + (y & 0xFFFF);
  var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
  return (msw << 16) | (lsw & 0xFFFF)
}
function bit_rol(a, b) {
  return a << b | a >>> 32 - b
}
function md5_gg(a, b, c, d, x, s, t) {
  return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t)
}
function md5_hh(a, b, c, d, x, s, t) {
  return md5_cmn(b ^ c ^ d, a, b, x, s, t)
}
function md5_ii(a, b, c, d, x, s, t) {
  return md5_cmn(c ^ (b | (~d)), a, b, x, s, t)
}
function golmOACJkTUULBcU(key, period) {
  if (typeof period === 'undefined') {
      period = 0;
  }
  var d = DESencrypt(key);
  d = BASE64encrypt(key);
  var data = localStorageUtilgetValue(key);
  if (data) { // 判断是否过期
      const time = data.time;
      const current = new Date().getTime();
      if (new Date().getHours() >= 0 && new Date().getHours() < 5 && period > 1) {
          period = 1;
      }
      if (current - (period * 60 * 60 * 1000) > time) { // 更新
         data = null;
      }
      // 防止1-5点用户不打开页面,跨天的情况
      if (new Date().getHours() >= 5 && new Date(time).getDate() !== new Date().getDate() && period === 24) {
         data = null;
      }
  }
  return data;
}
function DESencrypt(text, key, iv){
  var secretkey = (CryptoJS.MD5(key).toString()).substr(0, 16);
  var secretiv = (CryptoJS.MD5(iv).toString()).substr(24, 8);
  secretkey = CryptoJS.enc.Utf8.parse(secretkey);
  secretiv = CryptoJS.enc.Utf8.parse(secretiv);
  var result = CryptoJS.DES.encrypt(text, secretkey, {
    iv: secretiv,
    mode: CryptoJS.mode.CBC,
    padding: CryptoJS.pad.Pkcs7
  });
  return result.toString();
}
function BASE64encrypt(text) {
  var b = new Base64();
  return b.encode(text);
}
function Base64() {
  _keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
  this.encode = function(a) {
      var c, d, e, f, g, h, i, b = "", j = 0;
      for (a = _utf8_encode(a); j < a.length; )
          c = a.charCodeAt(j++),
          d = a.charCodeAt(j++),
          e = a.charCodeAt(j++),
          f = c >> 2,
          g = (3 & c) << 4 | d >> 4,
          h = (15 & d) << 2 | e >> 6,
          i = 63 & e,
          isNaN(d) ? h = i = 64 : isNaN(e) && (i = 64),
          b = b + _keyStr.charAt(f) + _keyStr.charAt(g) + _keyStr.charAt(h) + _keyStr.charAt(i);
      return b
  }
  ,
  this.decode = function(a) {
      var c, d, e, f, g, h, i, b = "", j = 0;
      for (a = a.replace(/[^A-Za-z0-9\+\/\=]/g, ""); j < a.length; )
          f = _keyStr.indexOf(a.charAt(j++)),
          g = _keyStr.indexOf(a.charAt(j++)),
          h = _keyStr.indexOf(a.charAt(j++)),
          i = _keyStr.indexOf(a.charAt(j++)),
          c = f << 2 | g >> 4,
          d = (15 & g) << 4 | h >> 2,
          e = (3 & h) << 6 | i,
          b += String.fromCharCode(c),
          64 != h && (b += String.fromCharCode(d)),
          64 != i && (b += String.fromCharCode(e));
      return b = _utf8_decode(b)
  }
  ,
  _utf8_encode = function(a) {
      var b, c, d;
      for (a = a.replace(/\r\n/g, "\n"),
      b = "",
      c = 0; c < a.length; c++)
          d = a.charCodeAt(c),
          128 > d ? b += String.fromCharCode(d) : d > 127 && 2048 > d ? (b += String.fromCharCode(192 | d >> 6),
          b += String.fromCharCode(128 | 63 & d)) : (b += String.fromCharCode(224 | d >> 12),
          b += String.fromCharCode(128 | 63 & d >> 6),
          b += String.fromCharCode(128 | 63 & d));
      return b
  }
  ,
  _utf8_decode = function(a) {
      for (var b = "", c = 0, d = c1 = c2 = 0; c < a.length; )
          d = a.charCodeAt(c),
          128 > d ? (b += String.fromCharCode(d),
          c++) : d > 191 && 224 > d ? (c2 = a.charCodeAt(c + 1),
          b += String.fromCharCode((31 & d) << 6 | 63 & c2),
          c += 2) : (c2 = a.charCodeAt(c + 1),
          c3 = a.charCodeAt(c + 2),
          b += String.fromCharCode((15 & d) << 12 | (63 & c2) << 6 | 63 & c3),
          c += 3);
      return b
  }
}
function localStorageUtilgetValue(name) {
  var text = localStorage.getItem(name);
  var result = null;
  if (text) {
    text = AES.decrypt(text, aes_local_key, aes_local_iv);
    text = BASE64.decrypt(text);
    result = JSON.parse(text);
  }
  return result;
}
function hanshu(m0fhOhhGL,oBDNNVgaDf){

    const pKmSFk8 = poPBVxzNuafY8Yu(m0fhOhhGL, oBDNNVgaDf);
    return pKmSFk8
}

const acky6QolJSJi = 'dLRSzDrm8xkryEyL'
const acixHVhiNqmK  = 'fex6AA4zRfVrSPmr'
const m0fhOhhGL = 'GETDAYDATA';
const oBDNNVgaDf = {
    "city": "北京",
    "month": "201507"
}

console.log(hanshu(m0fhOhhGL,oBDNNVgaDf))

结语

        想要获取数据或者是想要学习完整代码的,请点赞留言,每天10点都会回复消息的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值