豆瓣讀書搜索頁的 window.__DATA__ 的解密:https://www.jianshu.com/p/ac8b81950a73
豆瓣的 音樂搜索 和 讀書搜索,返回的網頁源碼都有 window.__DATA__ ,這是 js 加密 之後的數據
具體分析 參考 :https://www.jianshu.com/p/ac8b81950a73
根據 參考博客 修改 模塊 的源碼,修改之前需要備份下,但是畢竟修改的是模塊的源碼,萬一弄錯了好改回來。敲代碼最忌不懂、亂改還不保留,這樣很招人煩的,尤其團隊合作時。
這裏使用兩種方法可以在不修改模塊源碼的情況下正確執行
方法 1: test_nodejs_1
需要安裝 nodejs 環境
這個是通過 subprocess 執行 node 命令,來執行 js 代碼文件,通過命令行傳遞需要的參數,但是一個問題,參數短的時候還可以,如果參數太長,會執行報錯。可以把程序中的 keyword 註釋的放開,然後看下執行結果。
方法 2 :test_nodejs_2 (這個貌似沒有 方法 1 的問題,推薦使用這個)
需要安裝:pip install nodejs
python-nodejs 的 github地址:https://github.com/markfinger/python-nodejs
douban.py 源碼:
import re
import os
import json
import requests
import subprocess
from nodejs.bindings import node_run
current_dir = os.path.dirname(os.path.realpath(__file__))
keyword = '魏新雨 戀人心'
# keyword = '黑客帝國'
url = f'https://search.douban.com/music/subject_search?search_text={keyword}&cat=1003'
r = requests.get(url)
data = re.findall(r'window.__DATA__ = "(.*?)";', r.content.decode('utf-8'))[0]
def test_nodejs_1():
print(len(data))
result = subprocess.check_output(f"node {current_dir}/main.js {data}", shell=True)
data_dict = json.loads(result.decode('utf-8'))
print(json.dumps(data_dict, indent=4, ensure_ascii=False))
def test_nodejs_2():
print(len(data))
stderr, stdout = node_run(f"{current_dir}/main.js", data)
data_dict = json.loads(stdout)
print(json.dumps(data_dict, indent=4, ensure_ascii=False))
if __name__ == '__main__':
# test_nodejs_1()
test_nodejs_2()
pass
main.js 源碼:
參考:https://github.com/SergioJune/Spider-Crack-JS/tree/master/douban
// var r = "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";
var r = "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";
var i = 16
var Q = 4096
var p = {
start: 2,
end: 7
}
var K = {}
K.read = function (t, e, r, n, o) {
var i, a, s = 8 * o - n - 1,
u = (1 << s) - 1,
c = u >> 1,
f = -7,
l = r ? o - 1 : 0,
h = r ? -1 : 1,
p = t[e + l];
for (l += h,
i = p & (1 << -f) - 1,
p >>= -f,
f += s; f > 0; i = 256 * i + t[e + l],
l += h,
f -= 8)
;
for (a = i & (1 << -f) - 1,
i >>= -f,
f += n; f > 0; a = 256 * a + t[e + l],
l += h,
f -= 8)
;
if (0 === i)
i = 1 - c;
else {
if (i === u)
return a ? NaN : 1 / 0 * (p ? -1 : 1);
a += Math.pow(2, n),
i -= c
}
return (p ? -1 : 1) * a * Math.pow(2, i - n)
}
K.write = function (t, e, r, n, o, i) {
var a, s, u, c = 8 * i - o - 1,
f = (1 << c) - 1,
l = f >> 1,
h = 23 === o ? Math.pow(2, -24) - Math.pow(2, -77) : 0,
p = n ? 0 : i - 1,
d = n ? 1 : -1,
m = e < 0 || 0 === e && 1 / e < 0 ? 1 : 0;
for (e = Math.abs(e),
isNaN(e) || e === 1 / 0 ? (s = isNaN(e) ? 1 : 0,
a = f) : (a = Math.floor(Math.log(e) / Math.LN2),
e * (u = Math.pow(2, -a)) < 1 && (a--,
u *= 2),
e += a + l >= 1 ? h / u : h * Math.pow(2, 1 - l),
e * u >= 2 && (a++,
u /= 2),
a + l >= f ? (s = 0,
a = f) : a + l >= 1 ? (s = (e * u - 1) * Math.pow(2, o),
a += l) : (s = e * Math.pow(2, l - 1) * Math.pow(2, o),
a = 0)); o >= 8; t[r + p] = 255 & s,
p += d,
s /= 256,
o -= 8)
;
for (a = a << o | s,
c += o; c > 0; t[r + p] = 255 & a,
p += d,
a /= 256,
c -= 8)
;
t[r + p - d] |= 128 * m
}
encry2arr_from = function (t, e, r) { // 1 39 50 66
return from_a(null, t, e, r)
}
function hash(e) {
return "string" == typeof e && (e = encry2arr_from(e)), to_string.call((0, o_default)(e, 41405), 16).replace(/^0+/, "")
}
function to_number() {
return 65536 * this._a16 + this._a00
}
function to_string(t) {
t = t || 10;
var e = new i_i(t);
if (!gt.call(this, e))
return to_number.call(this).toString(t);
for (var r = clone.call(this), n = new Array(64), o = 63; o >= 0 && (div.call(r, e),
n[o] = to_number.call(r.remainder).toString(t), gt.call(r, e)); o--);
return n[o - 1] = to_number.call(r).toString(t),
n.join("")
}
gt = function (t) {
return this._a48 > t._a48 || !(this._a48 < t._a48) && (this._a32 > t._a32 || !(this._a32 < t._a32) && (this._a16 > t._a16 || !(this._a16 < t._a16) && this._a00 > t._a00))
}
function div(t) {
for (var e = clone.call(t), r = -1; !lt.call(this, e);)
shiftLeft.call(e, 1, !0),
r++;
for (this.remainder = clone.call(this),
this._a00 = 0,
this._a16 = 0,
this._a32 = 0,
this._a48 = 0; r >= 0; r--)
shiftRight.call(e, 1),
lt.call(this.remainder, e) || (subtract(this.remainder, e),
r >= 48 ? this._a48 |= 1 << r - 48 : r >= 32 ? this._a32 |= 1 << r - 32 : r >= 16 ? this._a16 |= 1 << r - 16 : this._a00 |= 1 << r);
return this
}
function eq(t) {
return this._a48 == t._a48 && this._a00 == t._a00 && this._a32 == t._a32 && this._a16 == t._a16
}
function lt(t) {
return this._a48 < t._a48 || !(this._a48 > t._a48) && (this._a32 < t._a32 || !(this._a32 > t._a32) && (this._a16 < t._a16 || !(this._a16 > t._a16) && this._a00 < t._a00))
}
function shiftLeft(t, e) {
return t %= 64,
t >= 48 ? (this._a48 = this._a00 << t - 48,
this._a32 = 0,
this._a16 = 0,
this._a00 = 0) : t >= 32 ? (t -= 32,
this._a48 = this._a16 << t | this._a00 >> 16 - t,
this._a32 = this._a00 << t & 65535,
this._a16 = 0,
this._a00 = 0) : t >= 16 ? (t -= 16,
this._a48 = this._a32 << t | this._a16 >> 16 - t,
this._a32 = 65535 & (this._a16 << t | this._a00 >> 16 - t),
this._a16 = this._a00 << t & 65535,
this._a00 = 0) : (this._a48 = this._a48 << t | this._a32 >> 16 - t,
this._a32 = 65535 & (this._a32 << t | this._a16 >> 16 - t),
this._a16 = 65535 & (this._a16 << t | this._a00 >> 16 - t),
this._a00 = this._a00 << t & 65535),
e || (this._a48 &= 65535),
this
}
var t = {
'getState': function (e) {
return a(e)
},
'dispatch': function o() {
return p
}
}
var Ut = {
"$UID": "j",
"$defaultRootUID": 4,
"$keys": "z",
"$vals": "k",
"crypto": {
"decrypt": function n(t, e) {
return r_decrypt(t, e)
},
"encrypt": function r(e) {
var r = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "hjasbdn2ih823rgwudsde7e2dhsdhas";
"string" == typeof r && (r = [].map.call(r, function (t) {
return t.charCodeAt(0)
}));
for (var n, o = [], i = 0, a = new t(e.length), s = 0; s < 256; s++)
o[s] = s;
for (s = 0; s < 256; s++)
i = (i + o[s] + r[s % r.length]) % 256,
n = o[s],
o[s] = o[i],
o[i] = n;
s = 0,
i = 0;
for (var u = 0; u < e.length; u++)
s = (s + 1) % 256,
i = (i + o[s]) % 256,
n = o[s],
o[s] = o[i],
o[i] = n,
a[u] = e[u] ^ o[(o[s] + o[i]) % 256];
return a
}
},
"getRealUID": function (t) {
if (t >= p.start) {
var e = p.end - p.start;
if (t < p.end)
return t + e;
if (t < p.end + e)
return t - e
}
return t
},
"getType": function o(t) {
return Object.prototype.toString.call(t).slice(8, -1)
}
}
function from_a(t, e, r, n) { // 2 38 51 65
return false ? h(t, e, r, n) : "string" == typeof e ? f(t, e, r) : p(t, e)
}
function f(t, e, r) { // 3 5 18 22 37 52 54 58 62 64
var n = 0 | y(e, r);
t = o_19(t, n);
var a = write(t, e, r);
return a !== n && (t = t.slice(0, a)),
t
}
function y(t, e) { // 6 8 17 55 57
if (false)
return t.length;
if (false)
return t.byteLength;
"string" != typeof t && (t = "" + t);
var r = t.length;
if (0 === r)
return 0;
for (var n = !1;;)
switch (e) {
case "ascii":
case "latin1":
case "binary":
return r;
case "utf8":
case "utf-8":
case void 0:
return Y(t).length;
case "ucs2":
case "ucs-2":
case "utf16le":
case "utf-16le":
return 2 * r;
case "hex":
return r >>> 1;
case "base64":
return V(t).length;
default:
if (n)
return Y(t).length;
e = ("" + e).toLowerCase(),
n = !0
}
}
function toByteArray(t) { // 13 30 32
var f = {
43: 62,
45: 62,
47: 63,
48: 52,
49: 53,
50: 54,
51: 55,
52: 56,
53: 57,
54: 58,
55: 59,
56: 60,
57: 61,
65: 0,
66: 1,
67: 2,
68: 3,
69: 4,
70: 5,
71: 6,
72: 7,
73: 8,
74: 9,
75: 10,
76: 11,
77: 12,
78: 13,
79: 14,
80: 15,
81: 16,
82: 17,
83: 18,
84: 19,
85: 20,
86: 21,
87: 22,
88: 23,
89: 24,
90: 25,
95: 63,
97: 26,
98: 27,
99: 28,
100: 29,
101: 30,
102: 31,
103: 32,
104: 33,
105: 34,
106: 35,
107: 36,
108: 37,
109: 38,
110: 39,
111: 40,
112: 41,
113: 42,
114: 43,
115: 44,
116: 45,
117: 46,
118: 47,
119: 48,
120: 49,
121: 50,
122: 51,
}
var e, r, o, i, a, s, u = t.length;
a = n_is_4(t),
s = new Uint8Array(3 * u / 4 - a),
o = a > 0 ? u - 4 : u;
var c = 0;
for (e = 0,
r = 0; e < o; e += 4,
r += 3)
i = f[t.charCodeAt(e)] << 18 | f[t.charCodeAt(e + 1)] << 12 | f[t.charCodeAt(e + 2)] << 6 | f[t.charCodeAt(e + 3)],
s[c++] = i >> 16 & 255,
s[c++] = i >> 8 & 255,
s[c++] = 255 & i;
return 2 === a ? (i = f[t.charCodeAt(e)] << 2 | f[t.charCodeAt(e + 1)] >> 4,
s[c++] = 255 & i) : 1 === a && (i = f[t.charCodeAt(e)] << 10 | f[t.charCodeAt(e + 1)] << 4 | f[t.charCodeAt(e + 2)] >> 2,
s[c++] = i >> 8 & 255,
s[c++] = 255 & i),
s
}
function V(t) { // 9 13 16 25 29 33
return toByteArray(q(t))
}
function q(t) { // 10 12 26 28
if (t = z(t).replace(/[^+\/0-9A-Za-z-_]/g, ""),
t.length < 2)
return "";
for (; t.length % 4 != 0;)
t += "=";
return t
}
function z(t) { // 11 27
return t.trim ? t.trim() : t.replace(/^\s+|\s+$/g, "")
}
function n_is_4(t) { // 14 31
var e = t.length;
if (e % 4 > 0)
throw new Error("Invalid string. Length must be a multiple of 4");
return "=" === t[e - 2] ? 2 : "=" === t[e - 1] ? 1 : 0
}
function i(t) { // 15
var e, r, o, i, a, s, u = t.length;
a = n(t),
s = new Uint8Array(3 * u / 4 - a),
o = a > 0 ? u - 4 : u;
var c = 0;
for (e = 0,
r = 0; e < o; e += 4,
r += 3)
i = f[t.charCodeAt(e)] << 18 | f[t.charCodeAt(e + 1)] << 12 | f[t.charCodeAt(e + 2)] << 6 | f[t.charCodeAt(e + 3)],
s[c++] = i >> 16 & 255,
s[c++] = i >> 8 & 255,
s[c++] = 255 & i;
return 2 === a ? (i = f[t.charCodeAt(e)] << 2 | f[t.charCodeAt(e + 1)] >> 4,
s[c++] = 255 & i) : 1 === a && (i = f[t.charCodeAt(e)] << 10 | f[t.charCodeAt(e + 1)] << 4 | f[t.charCodeAt(e + 2)] >> 2,
s[c++] = i >> 8 & 255,
s[c++] = 255 & i),
s
}
function o_19(t, e) { // 19 21 59 61
return true ? (t = new Uint8Array(e),
t.__proto__ = Uint8Array.prototype) : (null === t && (t = new i(e)),
t.length = e),
t
}
function Y(t, e) {
e = e || 1 / 0;
for (var r, n = t.length, o = null, i = [], a = 0; a < n; ++a) {
if ((r = t.charCodeAt(a)) > 55295 && r < 57344) {
if (!o) {
if (r > 56319) {
(e -= 3) > -1 && i.push(239, 191, 189);
continue
}
if (a + 1 === n) {
(e -= 3) > -1 && i.push(239, 191, 189);
continue
}
o = r;
continue
}
if (r < 56320) {
(e -= 3) > -1 && i.push(239, 191, 189),
o = r;
continue
}
r = 65536 + (o - 55296 << 10 | r - 56320)
} else
o && (e -= 3) > -1 && i.push(239, 191, 189);
if (o = null,
r < 128) {
if ((e -= 1) < 0)
break;
i.push(r)
} else if (r < 2048) {
if ((e -= 2) < 0)
break;
i.push(r >> 6 | 192, 63 & r | 128)
} else if (r < 65536) {
if ((e -= 3) < 0)
break;
i.push(r >> 12 | 224, r >> 6 & 63 | 128, 63 & r | 128)
} else {
if (!(r < 1114112))
throw new Error("Invalid code point");
if ((e -= 4) < 0)
break;
i.push(r >> 18 | 240, r >> 12 & 63 | 128, r >> 6 & 63 | 128, 63 & r | 128)
}
}
return i
}
function write_E(t, e, r, n) {
return X(Y(e, t.length - r), t, r, n)
}
function write(k, t, e, r, n) { // 23 37 63
if (void 0 === e)
n = "utf8",
r = k.length,
e = 0;
else if (void 0 === r && "string" == typeof e)
n = e,
r = k.length,
e = 0;
else {
if (!isFinite(e))
throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");
e |= 0,
isFinite(r) ? (r |= 0,
void 0 === n && (n = "utf8")) : (n = r,
r = void 0)
}
var o = k.length - e;
if ((void 0 === r || r > o) && (r = o),
t.length > 0 && (r < 0 || e < 0) || e > this.length)
throw new RangeError("Attempt to write outside buffer bounds");
n || (n = "utf8");
for (var i = !1;;)
switch (n) {
case "hex":
return _(k, t, e, r);
case "utf8":
case "utf-8":
return write_E(k, t, e, r);
case "ascii":
return A(k, t, e, r);
case "latin1":
case "binary":
return C(k, t, e, r);
case "base64":
return S_24(k, t, e, r);
case "ucs2":
case "ucs-2":
case "utf16le":
case "utf-16le":
return x(k, t, e, r);
default:
if (i)
throw new TypeError("Unknown encoding: " + n);
n = ("" + n).toLowerCase(),
i = !0
}
}
function S_24(t, e, r, n) { // 24 34 36
return X(V(e), t, r, n)
}
function X(t, e, r, n) { // 35
for (var o = 0; o < n && !(o + r >= e.length || o >= t.length); ++o)
e[o + r] = t[o];
return o
}
function a_slice(k, t, e) { // 42 44 46 115 126 132 138 144 148
var r = k.length;
t = ~~t,
e = void 0 === e ? r : ~~e,
t < 0 ? (t += r) < 0 && (t = 0) : t > r && (t = r),
e < 0 ? (e += r) < 0 && (e = 0) : e > r && (e = r),
e < t && (e = t);
var n;
if (true)
n = k.subarray(t, e),
n.__proto__ = k.prototype;
else {
var o = e - t;
n = new i(o, void 0);
for (var a = 0; a < o; ++a)
n[a] = this[a + t]
}
return n
}
function c(t, e) {
if (undefined,
t = o_19(t, e < 0 ? 0 : 0 | e), !true)
for (var r = 0; r < e; ++r)
t[r] = 0;
return t
}
function allocUnsafe(t) {
return c(null, t)
}
function a_68_copy(k, t, e, r, n) {
if (r || (r = 0),
n || 0 === n || (n = k.length),
e >= t.length && (e = t.length),
e || (e = 0),
n > 0 && n < r && (n = r),
n === r)
return 0;
if (0 === t.length || 0 === k.length)
return 0;
if (e < 0)
throw new RangeError("targetStart out of bounds");
if (r < 0 || r >= k.length)
throw new RangeError("sourceStart out of bounds");
if (n < 0)
throw new RangeError("sourceEnd out of bounds");
n > k.length && (n = k.length),
t.length - e < n - r && (n = t.length - e + r);
var o, a = n - r;
if (k === t && r < e && e < n)
for (o = a - 1; o >= 0; --o)
t[o + e] = k[o + r];
else if (a < 1e3 || !true)
for (o = 0; o < a; ++o)
t[o + e] = k[o + r];
else
Uint8Array.prototype.set.call(t, k.subarray(r, r + a), e);
return a
}
function concat(t, e) { // 48 68
if (false)
throw new TypeError('"list" argument must be an Array of Buffers');
if (0 === t.length)
return i.alloc(0);
var r;
if (void 0 === e)
for (e = 0,
r = 0; r < t.length; ++r)
e += t[r].length;
var n = allocUnsafe(e),
o = 0;
for (r = 0; r < t.length; ++r) {
var a = t[r];
a_68_copy(a, n, o),
o += a.length
}
return n
}
function a(e) { // 70 92 94
return "string" == typeof e && (e = t.from(e)), (0,
h.default)(e, 41405).toString(16).replace(/^0+/, "")
}
function i_update(t, e, r) {
if (!(true || this instanceof i_update))
return new i(t, e, r);
if ("number" == typeof t) {
if ("string" == typeof e)
throw new Error("If encoding is specified then the first argument must be a string");
return c(this, t)
}
return a_g_Bt(this, t, e, r)
}
function r_e(n) {
if (r[n])
return r[n].exports;
var o = r[n] = {
i: n,
l: !1,
exports: {}
};
return t[n].call(o.exports, o, o.exports, e),
o.l = !0,
o.exports
}
function update(kkk, t) { // 88
var r, o = "string" == typeof t;
o && (t = n(t),
o = !1,
r = !0),
"undefined" != typeof ArrayBuffer && t instanceof ArrayBuffer && (r = !0,
t = new Uint8Array(t));
var i = 0,
c = t.length,
f = i + c;
if (0 == c)
return kkk;
if (kkk.total_len += c,
0 == kkk.memsize && (kkk.memory = o ? "" : r ? new Uint8Array(32) : new i_update(32)),
kkk.memsize + c < 32)
return o ? kkk.memory += t : r ? kkk.memory.set(t.subarray(0, c), kkk.memsize) : a_68_copy(t, kkk.memory, kkk.memsize, 0, c),
kkk.memsize += c,
kkk;
if (kkk.memsize > 0) {
o ? kkk.memory += t.slice(0, 32 - kkk.memsize) : r ? kkk.memory.set(t.subarray(0, 32 - kkk.memsize), kkk.memsize) : t.copy(kkk.memory, kkk.memsize, 0, 32 - kkk.memsize);
var l = 0;
if (o) {
var h;
h = a(kkk.memory.charCodeAt(l + 1) << 8 | kkk.memory.charCodeAt(l), kkk.memory.charCodeAt(l + 3) << 8 | kkk.memory.charCodeAt(l + 2), kkk.memory.charCodeAt(l + 5) << 8 | kkk.memory.charCodeAt(l + 4), kkk.memory.charCodeAt(l + 7) << 8 | kkk.memory.charCodeAt(l + 6)),
kkk.v1.add(h.multiply(u)).rotl(31).multiply(s),
l += 8,
h = a(kkk.memory.charCodeAt(l + 1) << 8 | kkk.memory.charCodeAt(l), kkk.memory.charCodeAt(l + 3) << 8 | kkk.memory.charCodeAt(l + 2), kkk.memory.charCodeAt(l + 5) << 8 | kkk.memory.charCodeAt(l + 4), kkk.memory.charCodeAt(l + 7) << 8 | kkk.memory.charCodeAt(l + 6)),
kkk.v2.add(h.multiply(u)).rotl(31).multiply(s),
l += 8,
h = a(kkk.memory.charCodeAt(l + 1) << 8 | kkk.memory.charCodeAt(l), kkk.memory.charCodeAt(l + 3) << 8 | kkk.memory.charCodeAt(l + 2), kkk.memory.charCodeAt(l + 5) << 8 | kkk.memory.charCodeAt(l + 4), kkk.memory.charCodeAt(l + 7) << 8 | kkk.memory.charCodeAt(l + 6)),
kkk.v3.add(h.multiply(u)).rotl(31).multiply(s),
l += 8,
h = a(kkk.memory.charCodeAt(l + 1) << 8 | kkk.memory.charCodeAt(l), kkk.memory.charCodeAt(l + 3) << 8 | kkk.memory.charCodeAt(l + 2), kkk.memory.charCodeAt(l + 5) << 8 | kkk.memory.charCodeAt(l + 4), kkk.memory.charCodeAt(l + 7) << 8 | kkk.memory.charCodeAt(l + 6)),
kkk.v4.add(h.multiply(u)).rotl(31).multiply(s)
} else {
var h;
h = a(kkk.memory[l + 1] << 8 | kkk.memory[l], kkk.memory[l + 3] << 8 | kkk.memory[l + 2], kkk.memory[l + 5] << 8 | kkk.memory[l + 4], kkk.memory[l + 7] << 8 | kkk.memory[l + 6]),
kkk.v1.add(h.multiply(u)).rotl(31).multiply(s),
l += 8,
h = a(kkk.memory[l + 1] << 8 | kkk.memory[l], kkk.memory[l + 3] << 8 | kkk.memory[l + 2], kkk.memory[l + 5] << 8 | kkk.memory[l + 4], kkk.memory[l + 7] << 8 | kkk.memory[l + 6]),
kkk.v2.add(h.multiply(u)).rotl(31).multiply(s),
l += 8,
h = a(kkk.memory[l + 1] << 8 | kkk.memory[l], kkk.memory[l + 3] << 8 | kkk.memory[l + 2], kkk.memory[l + 5] << 8 | kkk.memory[l + 4], kkk.memory[l + 7] << 8 | kkk.memory[l + 6]),
kkk.v3.add(h.multiply(u)).rotl(31).multiply(s),
l += 8,
h = a(kkk.memory[l + 1] << 8 | kkk.memory[l], kkk.memory[l + 3] << 8 | kkk.memory[l + 2], kkk.memory[l + 5] << 8 | kkk.memory[l + 4], kkk.memory[l + 7] << 8 | kkk.memory[l + 6]),
kkk.v4.add(h.multiply(u)).rotl(31).multiply(s)
}
i += 32 - kkk.memsize,
kkk.memsize = 0,
o && (kkk.memory = "")
}
if (i <= f - 32) {
var p = f - 32;
do {
if (o) {
var h;
h = a(t.charCodeAt(i + 1) << 8 | t.charCodeAt(i), t.charCodeAt(i + 3) << 8 | t.charCodeAt(i + 2), t.charCodeAt(i + 5) << 8 | t.charCodeAt(i + 4), t.charCodeAt(i + 7) << 8 | t.charCodeAt(i + 6)),
kkk.v1.add(h.multiply(u)).rotl(31).multiply(s),
i += 8,
h = a(t.charCodeAt(i + 1) << 8 | t.charCodeAt(i), t.charCodeAt(i + 3) << 8 | t.charCodeAt(i + 2), t.charCodeAt(i + 5) << 8 | t.charCodeAt(i + 4), t.charCodeAt(i + 7) << 8 | t.charCodeAt(i + 6)),
kkk.v2.add(h.multiply(u)).rotl(31).multiply(s),
i += 8,
h = a(t.charCodeAt(i + 1) << 8 | t.charCodeAt(i), t.charCodeAt(i + 3) << 8 | t.charCodeAt(i + 2), t.charCodeAt(i + 5) << 8 | t.charCodeAt(i + 4), t.charCodeAt(i + 7) << 8 | t.charCodeAt(i + 6)),
kkk.v3.add(h.multiply(u)).rotl(31).multiply(s),
i += 8,
h = a(t.charCodeAt(i + 1) << 8 | t.charCodeAt(i), t.charCodeAt(i + 3) << 8 | t.charCodeAt(i + 2), t.charCodeAt(i + 5) << 8 | t.charCodeAt(i + 4), t.charCodeAt(i + 7) << 8 | t.charCodeAt(i + 6)),
kkk.v4.add(h.multiply(u)).rotl(31).multiply(s)
} else {
var h;
h = a(t[i + 1] << 8 | t[i], t[i + 3] << 8 | t[i + 2], t[i + 5] << 8 | t[i + 4], t[i + 7] << 8 | t[i + 6]),
kkk.v1.add(h.multiply(u)).rotl(31).multiply(s),
i += 8,
h = a(t[i + 1] << 8 | t[i], t[i + 3] << 8 | t[i + 2], t[i + 5] << 8 | t[i + 4], t[i + 7] << 8 | t[i + 6]),
kkk.v2.add(h.multiply(u)).rotl(31).multiply(s),
i += 8,
h = a(t[i + 1] << 8 | t[i], t[i + 3] << 8 | t[i + 2], t[i + 5] << 8 | t[i + 4], t[i + 7] << 8 | t[i + 6]),
kkk.v3.add(h.multiply(u)).rotl(31).multiply(s),
i += 8,
h = a(t[i + 1] << 8 | t[i], t[i + 3] << 8 | t[i + 2], t[i + 5] << 8 | t[i + 4], t[i + 7] << 8 | t[i + 6]),
kkk.v4.add(h.multiply(u)).rotl(31).multiply(s)
}
i += 8
} while (i <= p)
}
return i < f && (o ? kkk.memory += t.slice(i) : r ? kkk.memory.set(t.subarray(i, f), kkk.memsize) : t.copy(kkk.memory, kkk.memsize, i, f),
kkk.memsize = f - i),
kkk
}
function digest(kkk) { // 90
var a = i_i // 這些加密數據有用
,
s = a("11400714785074694791"),
u = a("14029467366897019727"),
c = a("1609587929392839161"),
f = a("9650029242287828579"),
l = a("2870177450012600261");
var t, e, r = kkk.memory,
n = "string" == typeof r,
o = 0,
i = kkk.memsize,
h = new i_i;
for (kkk.total_len >= 32 ? (t = kkk.v1.clone().rotl(1),
t.add(kkk.v2.clone().rotl(7)),
t.add(kkk.v3.clone().rotl(12)),
t.add(kkk.v4.clone().rotl(18)),
t.xor(kkk.v1.multiply(u).rotl(31).multiply(s)),
t.multiply(s).add(f),
t.xor(kkk.v2.multiply(u).rotl(31).multiply(s)),
t.multiply(s).add(f),
t.xor(kkk.v3.multiply(u).rotl(31).multiply(s)),
t.multiply(s).add(f),
t.xor(kkk.v4.multiply(u).rotl(31).multiply(s)),
t.multiply(s).add(f)) : t = add(kkk.seed.clone(), l),
add(t, s_this(kkk.total_len, h)); o <= i - 8;)
n ? a_a.call(h, r.charCodeAt(o + 1) << 8 | r.charCodeAt(o), r.charCodeAt(o + 3) << 8 | r.charCodeAt(o + 2), r.charCodeAt(o + 5) << 8 | r.charCodeAt(o + 4), r.charCodeAt(o + 7) << 8 | r.charCodeAt(o + 6)) : a_a.call(h, r[o + 1] << 8 | r[o], r[o + 3] << 8 | r[o + 2], r[o + 5] << 8 | r[o + 4], r[o + 7] << 8 | r[o + 6]),
multiply(rotl.call(multiply(h, u), 31), s),
add(multiply(rotl.call(xor.call(t, h), 27), s), f),
o += 8;
for (o + 4 <= i && (n ? h.fromBits(r.charCodeAt(o + 1) << 8 | r.charCodeAt(o), r.charCodeAt(o + 3) << 8 | r.charCodeAt(o + 2), 0, 0) : h.fromBits(r[o + 1] << 8 | r[o], r[o + 3] << 8 | r[o + 2], 0, 0),
t.xor(multiply(h, s)).rotl(23).multiply(u).add(c),
o += 4); o < i;)
h.fromBits(n ? r.charCodeAt(o++) : r[o++], 0, 0, 0),
t.xor(h.multiply(l)).rotl(11).multiply(s);
return e = shiftRight.call(clone.call(t), 33),
multiply(xor.call(t, e), u),
e = shiftRight.call(clone.call(t), 29),
multiply(xor.call(t, e), c),
e = shiftRight.call(clone.call(t), 32),
xor.call(t, e),
i_this.call(kkk, kkk.seed),
t
}
function clone() {
return new i_i(this._a00, this._a16, this._a32, this._a48)
}
function shiftRight(t) {
return t %= 64,
t >= 48 ? (this._a00 = this._a48 >> t - 48,
this._a16 = 0,
this._a32 = 0,
this._a48 = 0) : t >= 32 ? (t -= 32,
this._a00 = 65535 & (this._a32 >> t | this._a48 << 16 - t),
this._a16 = this._a48 >> t & 65535,
this._a32 = 0,
this._a48 = 0) : t >= 16 ? (t -= 16,
this._a00 = 65535 & (this._a16 >> t | this._a32 << 16 - t),
this._a16 = 65535 & (this._a32 >> t | this._a48 << 16 - t),
this._a32 = this._a48 >> t & 65535,
this._a48 = 0) : (this._a00 = 65535 & (this._a00 >> t | this._a16 << 16 - t),
this._a16 = 65535 & (this._a16 >> t | this._a32 << 16 - t),
this._a32 = 65535 & (this._a32 >> t | this._a48 << 16 - t),
this._a48 = this._a48 >> t & 65535),
this
}
function o_default() { // 71 87 89 91
return 2 == arguments.length ? digest(update(new o_default(arguments[1]), arguments[0])) : this instanceof o_default ? void i_this.call(this, arguments[0]) : new o(arguments[0])
}
function i_this(t) { // 72
var s = {
'remainder': null,
'_a00': 51847,
'_a16': 34283,
'_a32': 31153,
'_a48': 40503,
'clone': function () {
return new i_i(this._a00, this._a16, this._a32, this._a48)
}
}
var u = {
'remainder': null,
'_a00': 60239,
'_a16': 10196,
'_a32': 44605,
'_a48': 49842
}
return this.seed = new i_a(t),
this.v1 = add(add(this.seed.clone(), s), u),
this.v2 = add(this.seed.clone(), u),
this.v3 = this.seed.clone(),
this.v4 = subtract(this.seed.clone(), s),
this.total_len = 0,
this.memsize = 0,
this.memory = null,
this
}
function subtract(a, t) {
return add(a, negate(clone.call(t)))
}
function negate(a) {
var t = 1 + (65535 & ~a._a00);
return a._a00 = 65535 & t,
t = (65535 & ~a._a16) + (t >>> 16),
a._a16 = 65535 & t,
t = (65535 & ~a._a32) + (t >>> 16),
a._a32 = 65535 & t,
a._a48 = ~a._a48 + (t >>> 16) & 65535,
a
}
function i_i(t, e, r, n) {
return this instanceof i_i ? (this.remainder = null,
"string" == typeof t ? i_u.call(this, t, e) : void 0 === e ? s_this.call(this, t) : void a_a.apply(this, arguments)) : new i_i(t, e, r, n)
}
function i_u(t, e) {
e = e || 10,
this._a00 = 0,
this._a16 = 0,
this._a32 = 0,
this._a48 = 0;
for (var r = c[e] || new i_i(Math.pow(e, 5)), n = 0, o = t.length; n < o; n += 5) {
var a = Math.min(5, o - n),
s = parseInt(t.slice(n, n + a), e);
add(multiply(this, a < 5 ? new i_i(Math.pow(e, a)) : r), new i_i(s))
}
return this
}
function multiply(k, t) {
var e = k._a00,
r = k._a16,
n = k._a32,
o = k._a48,
i = t._a00,
a = t._a16,
s = t._a32,
u = t._a48,
c = e * i,
f = c >>> 16;
f += e * a;
var l = f >>> 16;
f &= 65535,
f += r * i,
l += f >>> 16,
l += e * s;
var h = l >>> 16;
return l &= 65535,
l += r * a,
h += l >>> 16,
l &= 65535,
l += n * i,
h += l >>> 16,
h += e * u,
h &= 65535,
h += r * s,
h &= 65535,
h += n * a,
h &= 65535,
h += o * i,
k._a00 = 65535 & c,
k._a16 = 65535 & f,
k._a32 = 65535 & l,
k._a48 = 65535 & h,
k
}
function i_a(t, e, r, n) { // 73 75 78 80
return this.remainder = null,
this._a00 = 65535 & t,
this._a16 = t >>> 16,
this._a32 = 0,
this._a48 = 0,
this.clone = function () { // 77 81
return new i_i(this._a00, this._a16, this._a32, this._a48)
},
this
}
function s_this(t, k) { // 74
if (k)
return k._a00 = 65535 & t,
k._a16 = t >>> 16,
k._a32 = 0,
k._a48 = 0,
k
return this._a00 = 65535 & t,
this._a16 = t >>> 16,
this._a32 = 0,
this._a48 = 0,
this
}
function rotl(t) {
if (0 == (t %= 64))
return this;
if (t >= 32) {
var e = this._a00;
if (this._a00 = this._a32,
this._a32 = e,
e = this._a48,
this._a48 = this._a16,
this._a16 = e,
32 == t)
return this;
t -= 32
}
var r = this._a48 << 16 | this._a32,
n = this._a16 << 16 | this._a00,
o = r << t | n >>> 32 - t,
i = n << t | r >>> 32 - t;
return this._a00 = 65535 & i,
this._a16 = i >>> 16,
this._a32 = 65535 & o,
this._a48 = o >>> 16,
this
}
function xor(t) {
return this._a00 ^= t._a00,
this._a16 ^= t._a16,
this._a32 ^= t._a32,
this._a48 ^= t._a48,
this
}
function a_a(t, e, r, n) { // 79
return void 0 === r ? (this._a00 = 65535 & t,
this._a16 = t >>> 16,
this._a32 = 65535 & e,
this._a48 = e >>> 16,
this) : (this._a00 = 0 | t,
this._a16 = 0 | e,
this._a32 = 0 | r,
this._a48 = 0 | n,
this)
}
function add(a, t) { // 83 85
var e = a._a00 + t._a00,
r = e >>> 16;
r += a._a16 + t._a16;
var n = r >>> 16;
n += a._a32 + t._a32;
var o = n >>> 16;
return o += a._a48 + t._a48,
a._a00 = 65535 & e,
a._a16 = 65535 & r,
a._a32 = 65535 & n,
a._a48 = 65535 & o,
a
}
function r_decrypt(e) {
var r = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "hjasbdn2ih823rgwudsde7e2dhsdhas";
"string" == typeof r && (r = [].map.call(r, function (t) {
return t.charCodeAt(0)
}));
for (var n, o = [], i = 0, a = new i_update(e.length), s = 0; s < 256; s++)
o[s] = s;
for (s = 0; s < 256; s++)
i = (i + o[s] + r[s % r.length]) % 256,
n = o[s],
o[s] = o[i],
o[i] = n;
s = 0,
i = 0;
for (var u = 0; u < e.length; u++)
s = (s + 1) % 256,
i = (i + o[s]) % 256,
n = o[s],
o[s] = o[i],
o[i] = n,
a[u] = e[u] ^ o[(o[s] + o[i]) % 256];
return a
}
function Bt(t) {
var e = {}
e.maxObjectSize = 1e8,
e.maxObjectCount = 32768,
e.parseFile = function (t, e) {
function r(t) {
var r, n = null;
try {
r = parseBuffer(t)
} catch (t) {
n = t
}
e(n, r)
}
return n.isBuffer(t) ? r(t) : void f.readFile(t, function (t, n) {
return t ? e(t) : void r(n)
})
}
function r(e) {
var r = x[e],
n = t[r],
o = (240 & n) >> 4,
i = 15 & n,
a = {
offset: r,
type: n,
objType: o,
objInfo: i,
tableOffset: e
};
switch (o) {
case 0:
return f(a);
case 1:
return h(a);
case 8:
return p(a);
case 2:
return d(a);
case 3:
return m(a);
case 6:
return y(a);
case 4:
return g(a);
case 5:
return g(a, !0);
case 10:
return v(a);
case 13:
return b(a);
default:
throw new Error(2, o.toString(16))
}
}
function f(t) {
var e = t.objInfo,
r = t.objType;
switch (e) {
case 0:
return null;
case 8:
return !1;
case 9:
return !0;
case 15:
return null;
default:
throw new Error(3, r.toString(16))
}
}
function h(r) {
var n = r.offset,
o = r.objInfo,
i = Math.pow(2, o);
if (i > 4)
return u_h_Bt(a_slice(t, n + 1, n + 1 + i));
if (i < e.maxObjectSize)
return a_h_Bt(a_slice(t, n + 1, n + 1 + i));
throw new Error("4 " + i + " " + e.maxObjectSize)
}
function p(r) {
var n = r.offset,
a = r.objInfo,
s = a;
if (s < e.maxObjectSize)
return o({}, l, i(t.slice(n + 1, n + 1 + s)));
throw new Error("4 " + s + " " + e.maxObjectSize)
}
function d(r) {
var n = r.offset,
o = r.objInfo,
i = Math.pow(2, o);
if (!(i < e.maxObjectSize))
throw new Error("4 " + i + " " + e.maxObjectSize);
var a = t.slice(n + 1, n + 1 + i);
return 4 === i ? readFloatBE.call(a, 0) : 8 === i ? readDoubleBE.call(a, 0) : void 0
}
function m(e) {
var r = e.offset,
n = e.objInfo;
3 != n && console.error(5, n);
var o = t.slice(r + 1, r + 9);
return new Date(9783072e5 + 1e3 * o.readDoubleBE(0))
}
function y(r) {
var n = r.offset,
o = r.objInfo,
a = 1,
s = o;
if (15 == o) {
var u = t[n + 1],
c = (240 & u) / 16;
1 != c && console.error(6, c);
var f = 15 & u,
l = Math.pow(2, f);
a = 2 + l,
s = i(t.slice(n + 2, n + 2 + l))
}
if (s < e.maxObjectSize)
return t.slice(n + a, n + a + s);
throw new Error("4 " + s + " " + e.maxObjectSize)
}
function g(r, o) {
var a = r.offset,
s = r.objInfo;
o = o || 0;
var u = "utf8",
f = s,
l = 1;
if (15 == s) {
var h = t[a + 1],
p = (240 & h) / 16;
if (1 != p)
throw new Error("7 " + p);
var d = 15 & h,
m = Math.pow(2, d);
l = 2 + m,
f = i_Bt(a_slice(t, a + 2, a + 2 + m))
}
if ((f *= o + 1) < e.maxObjectSize) {
var y = new i_update(a_slice(t, a + l, a + l + f));
return o && (y = c_g_Bt(y),
u = "ucs2"),
to_string_g_Bt.call(y, u)
}
throw new Error("4 " + f + " " + e.maxObjectSize)
}
function v(n) {
var o = n.offset,
a = n.objInfo,
s = a,
u = 1;
if (15 == a) {
var c = t[o + 1],
f = (240 & c) / 16;
var l = 15 & c,
h = Math.pow(2, l);
u = 2 + h,
s = i_Bt(a_slice(t, o + 2, o + 2 + h))
}
for (var p = [], d = 0; d < s; d++) {
var m = i_Bt(a_slice(t, o + u + d * E, o + u + (d + 1) * E));
p[d] = r(m)
}
return p
}
function b(n) {
var o = n.offset,
a = n.objInfo,
s = (n.tableOffset,
a),
u = 1;
if (15 == a) {
var c = t[o + 1],
f = (240 & c) / 16;
1 != f && console.error(9, f);
var l = 15 & c,
h = Math.pow(2, l);
u = 2 + h,
s = i(a_slice(t, o + 2, o + 2 + h))
}
if (2 * s * E > e.maxObjectSize)
throw new Error(4);
for (var p = {}, d = 0; d < s; d++) {
var m = i_Bt(a_slice(t, o + u + d * E, o + u + (d + 1) * E)),
y = i_Bt(a_slice(t, o + u + s * E + d * E, o + u + s * E + (d + 1) * E)),
g = r(m),
v = r(y);
p[g] = v
}
return p
}
var w = a_slice(t, t.length - 32, t.length),
_ = readUInt8.call(w, 6),
E = readUInt8.call(w, 7),
A = s_Bt(w, 8),
C = s_Bt(w, 16),
S = s_Bt(w, 24);
for (var x = [], O = 0; O < A; O++) {
var T = a_slice(t, S + O * _, S + (O + 1) * _);
x[O] = i_Bt(T, 0)
}
return r(C)
}
function readUInt8(t, e) {
return this[t]
}
function s_Bt(t, e) {
return readUInt32BE.call(a_slice(t, e, e + 8), 4, 8)
}
function readUInt32BE(t, e) {
return e || I(t, 4, this.length),
16777216 * this[t] + (this[t + 1] << 16 | this[t + 2] << 8 | this[t + 3])
}
function i_Bt(t, e) {
e = e || 0;
for (var r = 0, n = e; n < t.length; n++)
r <<= 8,
r |= 255 & t[n];
return r
}
function a_g_Bt(t, e, r, n) {
if ("number" == typeof e)
throw new TypeError('"value" argument must not be a number');
return "undefined" != typeof ArrayBuffer && e instanceof ArrayBuffer ? h(t, e, r, n) : "string" == typeof e ? f(t, e, r) : p_a(t, e)
}
function p_a(t, e) {
if (true) {
var r = 0 | e.length;
return t = o_19(t, r),
0 === t.length ? t : (a_68_copy(e, t, 0, 0, r),
t)
}
if (e) {
if ("undefined" != typeof ArrayBuffer && e.buffer instanceof ArrayBuffer || "length" in e)
return "number" != typeof e.length || G(e.length) ? o(t, 0) : l(t, e);
if ("Buffer" === e.type && J(e.data))
return l(t, e.data)
}
throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.")
}
function c_g_Bt(t) {
for (var e = t.length, r = 0; r < e; r += 2) {
var n = t[r];
t[r] = t[r + 1],
t[r + 1] = n
}
return t
}
function to_string_g_Bt() {
var t = 0 | this.length;
return 0 === t ? "" : 0 === arguments.length ? T(this, 0, t) : g_to_string.apply(this, arguments)
}
function g_to_string(t, e, r) {
var n = !1;
if ((void 0 === e || e < 0) && (e = 0),
e > this.length)
return "";
if ((void 0 === r || r > this.length) && (r = this.length),
r <= 0)
return "";
if (r >>>= 0,
e >>>= 0,
r <= e)
return "";
for (t || (t = "utf8");;)
switch (t) {
case "hex":
return N(this, e, r);
case "utf8":
case "utf-8":
return T_g(this, e, r);
case "ascii":
return k(this, e, r);
case "latin1":
case "binary":
return R(this, e, r);
case "base64":
return O(this, e, r);
case "ucs2":
case "ucs-2":
case "utf16le":
case "utf-16le":
return j_g(this, e, r);
default:
if (n)
throw new TypeError("Unknown encoding: " + t);
t = (t + "").toLowerCase(),
n = !0
}
}
function j_g(t, e, r) {
for (var n = a_slice(t, e, r), o = "", i = 0; i < n.length; i += 2)
o += String.fromCharCode(n[i] + 256 * n[i + 1]);
return o
}
function T_g(t, e, r) {
r = Math.min(t.length, r);
for (var n = [], o = e; o < r;) {
var i = t[o],
a = null,
s = i > 239 ? 4 : i > 223 ? 3 : i > 191 ? 2 : 1;
if (o + s <= r) {
var u, c, f, l;
switch (s) {
case 1:
i < 128 && (a = i);
break;
case 2:
u = t[o + 1],
128 == (192 & u) && (l = (31 & i) << 6 | 63 & u) > 127 && (a = l);
break;
case 3:
u = t[o + 1],
c = t[o + 2],
128 == (192 & u) && 128 == (192 & c) && (l = (15 & i) << 12 | (63 & u) << 6 | 63 & c) > 2047 && (l < 55296 || l > 57343) && (a = l);
break;
case 4:
u = t[o + 1],
c = t[o + 2],
f = t[o + 3],
128 == (192 & u) && 128 == (192 & c) && 128 == (192 & f) && (l = (15 & i) << 18 | (63 & u) << 12 | (63 & c) << 6 | 63 & f) > 65535 && l < 1114112 && (a = l)
}
}
null === a ? (a = 65533,
s = 1) : a > 65535 && (a -= 65536,
n.push(a >>> 10 & 1023 | 55296),
a = 56320 | 1023 & a),
n.push(a),
o += s
}
return P_T(n)
}
function P_T(t) {
var e = t.length;
if (e <= Q)
return String.fromCharCode.apply(String, t);
for (var r = "", n = 0; n < e;)
r += String.fromCharCode.apply(String, a_slice(t, n, n += Q));
return r
}
function a_h_Bt(t, e, r) {
return e = e || 0,
r = r || t.length - e,
readIntBE.call(t, e, r)
}
function u_h_Bt(t, e) {
return e = e || 0,
readInt32BE.call(t.slice(e, e + 8), 4, 8)
}
function readIntBE(t, e, r) {
t |= 0,
e |= 0,
r || undefined;
for (var n = e, o = 1, i = this[t + --n]; n > 0 && (o *= 256);)
i += this[t + --n] * o;
return o *= 128,
i >= o && (i -= Math.pow(2, 8 * e)),
i
}
function readFloatBE(t, e) {
return e || undefined,
K.read(this, t, !1, 23, 4)
}
function readDoubleBE(t, e) {
return e || undefined,
K.read(this, t, !1, 52, 8)
}
function kt(t) {
var i = Ut;
function n(e) {
if (1 === Object.keys(e).length && void 0 !== e[i.$UID])
return o(e[i.$UID]);
if (i.$vals in e) {
var t = e[i.$keys],
n = e[i.$vals];
return t ? t.reduce(function (e, t, i) {
return e[o(t)] = r(n[i]),
e
}, {}) : n.map(function (e) {
return o(e)
})
}
return Object.keys(e).reduce(function (t, n) {
var o = e[n];
return t[n] = r(o),
t
}, {})
}
function r(t) {
return "Object" === (0,
i.getType)(t) ? n(t) : "Array" === (0,
i.getType)(t) ? t.map(function (e) {
return r(e)
}) : t instanceof i_update ? (0 === t[t.length - 1] && (t = t.slice(0, t.length - 1)),
t.toString()) : t
}
function o(e) {
return r(t[(0,
i.getRealUID)(e)])
}
return o(arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : (0,
i.getRealUID)(i.$defaultRootUID))
}
function n_n(r) {
return e_e(t)(r_r)(r)
}
function e_e(e) {
return function (e) {
return function (t) {
var n = Object.keys(t)[0],
r = Ut.crypto.decrypt(t[n], n);
return e(r)
}
}
}
function r_r(r) {
return e_e_decrypt(t)(e_e_decrypt_n)(r)
}
function e_e_decrypt(e) {
return function (e) {
return function (t) {
return e(Bt(t))
}
}
}
// function ee_decrypt{
// return
// }
function e_e_decrypt_n(r) {
return playload(t)(e_playload)(r)
}
function playload(e) {
return function (e) {
return function (t) {
return e({
type: "INIT",
payload: kt(t)
})
}
}
}
function e_playload(r) {
return r
}
function decrypt(r) {
var a = encry2arr_from(r, "base64") // 0
,
s = Math.max(Math.floor((a.length - 2 * i) / 3), 0) // 40
,
u = a_slice(a, s, s + i); // 41
a = concat([a_slice(a, 0, s), a_slice(a, s + i)]); // 43 45 47
var c_data = hash(concat([u, encry2arr_from("")])); // 49 67 69
var l = {}
l[c_data] = a
var data = n_n((l = {}, l[c_data] = a, l))
// console.log(data)
// console.log(data.payload.items[0])
var d_temp = data.payload.items
var ret_val = JSON.stringify(d_temp)
return ret_val
}
// console.log(decrypt(r))
// NodeJS獲取命令行後面的參數
// 假設有如下的命令行 node test.js arg1 arg2 arg3,
// 現在想在test.js中獲取後面的參數arg1、arg2、arg3…
// var arguments = process.argv.splice(2);
// process是一個全局對象,argv返回的是一組包含命令行參數的數組。
// 第一項爲”node”,第二項爲執行的js的完整路徑,後面是附加在命令行後的參數
var arguments = process.argv.splice(2)
// console.log(arguments[0])
console.log(decrypt(arguments[0]))