From c3413ec476ac0b0fa4a4f475eeafcdf1139ce37c Mon Sep 17 00:00:00 2001 From: Faker Date: Wed, 8 Jun 2022 10:07:17 +0800 Subject: [PATCH] update --- function/magic.js | 1004 ++++++++++++++++++++++++++++++++++++++ jd_bean_change.js | 66 ++- jd_lzdz1_customized68.js | 546 +++++++++++++++++++++ m_jd_fav_shop_gift.js | 140 ++++++ 4 files changed, 1754 insertions(+), 2 deletions(-) create mode 100644 function/magic.js create mode 100644 jd_lzdz1_customized68.js create mode 100644 m_jd_fav_shop_gift.js diff --git a/function/magic.js b/function/magic.js new file mode 100644 index 0000000..0232f26 --- /dev/null +++ b/function/magic.js @@ -0,0 +1,1004 @@ +// noinspection JSUnresolvedFunction,JSUnresolvedVariable + +const axios = require('axios'); +const fs = require("fs"); +const {format} = require("date-fns"); +const notify = require('./sendNotify'); +const jdCookieNode = require('./jdcookie.js'); +const CryptoJS = require("crypto-js"); + +let cookies = []; +let testMode = process.env.TEST_MODE?.includes('on') ? true + : __dirname.includes("magic") + +let mode = process.env.MODE ? process.env.MODE : "local" + +let apiToken = process.env.M_API_TOKEN ? process.env.M_API_TOKEN : "" +let apiSignUrl = process.env.M_API_SIGN_URL ? process.env.M_API_SIGN_URL : "http://158.101.153.139:19840/sign" + +let wxBlackCookiePin = process.env.M_WX_BLACK_COOKIE_PIN + ? process.env.M_WX_BLACK_COOKIE_PIN : '' + +Object.keys(jdCookieNode).forEach((item) => { + cookies.push(jdCookieNode[item]) +}) + +const JDAPP_USER_AGENTS = [ + `jdapp;android;10.0.2;9;${uuid()};network/wifi;Mozilla/5.0 (Linux; Android 9; MHA-AL00 Build/HUAWEIMHA-AL00; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/044942 Mobile Safari/537.36`, + `jdapp;android;10.0.2;9;${uuid()};network/wifi;Mozilla/5.0 (Linux; Android 9; MI 6 Build/PKQ1.190118.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/044942 Mobile Safari/537.36`, + `jdapp;android;10.0.2;9;${uuid()};network/4g;Mozilla/5.0 (Linux; Android 9; Mi Note 3 Build/PKQ1.181007.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/045131 Mobile Safari/537.36`, + `jdapp;android;10.0.2;9;${uuid()};network/wifi;Mozilla/5.0 (Linux; Android 9; 16T Build/PKQ1.190616.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/044942 Mobile Safari/537.36`, + `jdapp;android;10.0.2;10;${uuid()};network/wifi;Mozilla/5.0 (Linux; Android 10; ONEPLUS A5010 Build/QKQ1.191014.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045230 Mobile Safari/537.36`, + `jdapp;android;10.0.2;10;${uuid()};network/wifi;Mozilla/5.0 (Linux; Android 10; M2006J10C Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045230 Mobile Safari/537.36`, + `jdapp;android;10.0.2;10;${uuid()};network/wifi;Mozilla/5.0 (Linux; Android 10; ONEPLUS A6000 Build/QKQ1.190716.003; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045224 Mobile Safari/537.36`, + `jdapp;android;10.0.2;10;${uuid()};network/wifi;Mozilla/5.0 (Linux; Android 10; GM1910 Build/QKQ1.190716.003; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045230 Mobile Safari/537.36`, + `jdapp;android;10.0.2;10;${uuid()};network/wifi;Mozilla/5.0 (Linux; Android 10; LYA-AL00 Build/HUAWEILYA-AL00L; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045230 Mobile Safari/537.36`, + `jdapp;android;10.0.2;10;${uuid()};network/wifi;Mozilla/5.0 (Linux; Android 10; Redmi K20 Pro Premium Edition Build/QKQ1.190825.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045227 Mobile Safari/537.36`, + `jdapp;android;10.0.2;11;${uuid()};network/wifi;Mozilla/5.0 (Linux; Android 11; Redmi K20 Pro Premium Edition Build/RKQ1.200826.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045513 Mobile Safari/537.36`, + `jdapp;android;10.0.2;10;${uuid()};network/wifi;Mozilla/5.0 (Linux; Android 10; MI 8 Build/QKQ1.190828.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045227 Mobile Safari/537.36`, + `jdapp;android;10.0.2;11;${uuid()};network/wifi;Mozilla/5.0 (Linux; Android 11; Redmi K30 5G Build/RKQ1.200826.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045511 Mobile Safari/537.36`, + `jdapp;iPhone;10.0.2;14.2;${uuid()};network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, + `jdapp;iPhone;10.0.2;14.3;${uuid()};network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, + `jdapp;iPhone;10.0.2;14.2;${uuid()};network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, + `jdapp;iPhone;10.0.2;11.4;${uuid()};network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 11_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15F79`, + `jdapp;android;10.0.2;10;;${uuid()};network/wifi;Mozilla/5.0 (Linux; Android 10; M2006J10C Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045230 Mobile Safari/537.36`, + `jdapp;iPhone;10.0.2;14.3;${uuid()};network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, + `jdapp;iPhone;10.0.2;13.6;${uuid()};network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 13_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, + `jdapp;iPhone;10.0.2;13.6;${uuid()};network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 13_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, + `jdapp;iPhone;10.0.2;13.5;${uuid()};network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 13_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, + `jdapp;iPhone;10.0.2;14.1;${uuid()};network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, + `jdapp;iPhone;10.0.2;13.3;${uuid()};network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 13_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, + `jdapp;iPhone;10.0.2;13.7;${uuid()};network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 13_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, + `jdapp;iPhone;10.0.2;14.1;${uuid()};network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, + `jdapp;iPhone;10.0.2;13.3;${uuid()};network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 13_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, + `jdapp;iPhone;10.0.2;13.4;${uuid()};network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 13_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, + `jdapp;iPhone;10.0.2;14.3;${uuid()};network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, + `jdapp;iPhone;10.0.2;14.3;${uuid()};network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, + `jdapp;iPhone;10.0.2;14.3;${uuid()};network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, + `jdapp;iPhone;10.0.2;14.1;${uuid()};network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, + `jdapp;android;10.0.2;8.1.0;${uuid()};network/wifi;Mozilla/5.0 (Linux; Android 8.1.0; 16 X Build/OPM1.171019.026; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/044942 Mobile Safari/537.36`, + `jdapp;android;10.0.2;8.0.0;${uuid()};network/wifi;Mozilla/5.0 (Linux; Android 8.0.0; HTC U-3w Build/OPR6.170623.013; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/044942 Mobile Safari/537.36`, + `jdapp;iPhone;10.0.2;14.0.1;${uuid()};network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_0_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, + `jdapp;android;10.0.2;8.1.0;${uuid()};network/wifi;Mozilla/5.0 (Linux; Android 8.1.0; MI 8 Build/OPM1.171019.026; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/045131 Mobile Safari/537.36`, +] + +//来源于kedaya大佬 +const ISV_OBFUSCATOR = { + 'lzkj-isv.isvjcloud.com': [ + 'body=%7B%22url%22%3A%22https%3A%2F%2Flzkj-isv.isvjcloud.com%22%2C%22id%22%3A%22%22%7D&uuid=1d9f7760c9ffaad4eb&client=apple&clientVersion=10.0.10&st=1646999134752&sv=112&sign=d14c9517190f8a8b0e253e3dbbdee87a', + ], + 'cjhy-isv.isvjcloud.com': [ + 'body=%7B%22url%22%3A%22https%3A%2F%2Fcjhy-isv.isvjcloud.com%22%2C%22id%22%3A%22%22%7D&uuid=b024526b380d35c9e3&client=apple&clientVersion=10.0.10&st=1646999134786&sv=111&sign=fd9417f9d8e872da6c55102bd69da99f', + ], + 'txzj-isv.isvjcloud.com': [ + 'body=%7B%22url%22%3A%22https%3A%2F%2Ftxzj-isv.isvjcloud.com%22%2C%22id%22%3A%22%22%7D&uuid=f7fc9bef85a8620cdf&client=apple&clientVersion=10.0.10&st=1646999134805&sv=121&sign=bbe137e2f52dbf3a1f10fa2ffe749d05', + ], + 'lzdz1-isv.isvjcloud.com': [ + 'body=%7B%22url%22%3A%20%22https%3A//lzdz1-isv.isvjcloud.com%22%2C%20%22id%22%3A%20%22%22%7D&uuid=72124265217d48b7955781024d65bbc4&client=apple&clientVersion=9.4.0&st=1621796702000&sv=120&sign=14f7faa31356c74e9f4289972db4b988' + ], + 'cjhydz-isv.isvjcloud.com': [ + 'adid=7B411CD9-D62C-425B-B083-9AFC49B94228&area=16_1332_42932_43102&body=%7B%22url%22%3A%22https%3A%5C/%5C/cjhydz-isv.isvjcloud.com%22%2C%22id%22%3A%22%22%7D&build=167541&client=apple&clientVersion=9.4.0&d_brand=apple&d_model=iPhone8%2C1&eid=eidId10b812191seBCFGmtbeTX2vXF3lbgDAVwQhSA8wKqj6OA9J4foPQm3UzRwrrLdO23B3E2wCUY/bODH01VnxiEnAUvoM6SiEnmP3IPqRuO%2By/%2BZo&isBackground=N&joycious=48&lang=zh_CN&networkType=wifi&networklibtype=JDNetworkBaseAF&openudid=2f7578cb634065f9beae94d013f172e197d62283&osVersion=13.1.2&partner=apple&rfs=0000&scope=11&screen=750%2A1334&sign=60bde51b4b7f7ff6e1bc1f473ecf3d41&st=1613720203903&sv=110&uts=0f31TVRjBStG9NoZJdXLGd939Wv4AlsWNAeL1nxafUsZqiV4NLsVElz6AjC4L7tsnZ1loeT2A8Z5/KfI/YoJAUfJzTd8kCedfnLG522ydI0p40oi8hT2p2sNZiIIRYCfjIr7IAL%2BFkLsrWdSiPZP5QLptc8Cy4Od6/cdYidClR0NwPMd58K5J9narz78y9ocGe8uTfyBIoA9aCd/X3Muxw%3D%3D&uuid=hjudwgohxzVu96krv/T6Hg%3D%3D&wifiBssid=9cf90c586c4468e00678545b16176ed2' + ], +} +const $ = axios.create({timeout: 30000}); +$.defaults.headers['Accept'] = '*/*'; +$.defaults.headers['Connection'] = 'keep-alive'; +$.defaults.headers['Accept-Language'] = "zh-CN,zh-Hans;q=0.9"; +$.defaults.headers['Accept-Encoding'] = "gzip, deflate, br"; + +function uuid(x = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx") { + return x.replace(/[xy]/g, function (x) { + const r = 16 * Math.random() | 0, n = "x" === x ? r : 3 & r | 8; + return n.toString(36) + }) +} + +class Env { + constructor(name) { + this.name = name + this.username = ''; + this.cookie = ''; + this.cookies = cookies; + this.index = ''; + this.ext = []; + this.msg = []; + this.delimiter = ''; + this.filename = '' + this.lz = '' + this.appId = ''; + this.algo = {}; + this.bot = false; + this.expire = false; + this.accounts = {}; + } + + async run(data = { + wait: [1000, 2000], + bot: false, + delimiter: '', + o2o: false, + random: false, + once: false, + blacklist: [], + whitelist: [] + }) { + console.log('运行参数:', data); + this.filename = process.argv[1]; + console.log(`${this.now()} ${this.name} ${this.filename} 开始运行...`); + this.start = this.timestamp(); + let accounts = ""; + if (__dirname.includes("magic")) { + accounts = this.readFileSync( + '/home/magic/Work/wools/doc/account.json') + } else { + if (fs.existsSync('utils/account.json')) { + accounts = this.readFileSync('utils/account.json') + } else { + accounts = this.readFileSync('account.json') + } + } + accounts ? JSON.parse(accounts).forEach( + o => this.accounts[o.pt_pin] = o.remarks) : '' + await this.config() + if (data?.delimiter) { + this.delimiter = data?.delimiter + } + if (data?.bot) { + this.bot = data.bot; + } + + console.log('原始ck长度', cookies.length) + if (data?.blacklist?.length > 0) { + for (const cki of this.__as(data.blacklist)) { + delete cookies[cki - 1]; + } + } + this.delBlackCK() + console.log('排除黑名单后ck长度', cookies.length) + if (data?.whitelist?.length > 0) { + let cks = [] + for (const cki of this.__as(data.whitelist)) { + if (cki - 1 < cookies.length) { + cks.push(cookies[cki - 1]) + } + } + cookies = cks; + } + console.log('设置白名单后ck长度', cookies.length) + + if (data?.random) { + cookies = this.randomArray(cookies) + } + await this.verify() + this.cookies = cookies; + if (data?.before) { + for (let i = 0; i <= this.cookies.length; i++) { + if (this.cookies[i] && !this.expire) { + let cookie = this.cookies[i]; + this.cookie = cookie; + this.username = decodeURIComponent( + cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + $.defaults.headers['Cookie'] = this.cookie; + this.index = i + 1; + let me = { + username: this.username, + index: this.index, + cookie: this.cookie + }; + try { + this.ext.push(Object.assign(me, await this.before())); + } catch (e) { + console.log(e) + } + if (data?.wait?.length > 0 && this.index + !== cookies.length) { + await this.wait(data?.wait[0], data?.wait[1]) + } + } + } + } + let once = false; + for (let i = 0; i <= this.cookies.length; i++) { + if (this.cookies[i] && !this.expire) { + this.index = i + 1; + if (data?.once && this.index !== data.once) { + once = true; + continue; + } + let cookie = this.cookies[i]; + this.cookie = cookie; + this.username = decodeURIComponent( + cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + $.defaults.headers['Cookie'] = this.cookie; + this.index = i + 1; + try { + await this.logic() + if (data?.o2o) { + await this.send(); + testMode ? this.log(this.msg.join("\n")) : '' + this.msg = []; + } + if (once) { + break; + } + } catch (e) { + console.log(e.message || '') + } + if (data?.wait?.length > 0 && this.index !== cookies.length) { + await this.wait(data?.wait[0], data?.wait[1]) + } + } + } + await this.after() + console.log(`${this.now()} ${this.name} 运行结束,耗时 ${this.timestamp() + - this.start}ms\n`) + testMode && this.msg.length > 0 ? console.log(this.msg.join("\n")) : '' + if (!data?.o2o) { + await this.send(); + } + } + + async config() { + + } + + delBlackCK() { + let strArrTemp = [] + for (let i = 0; i < cookies.length; i++) { + if (cookies[i]) { + let cookie = cookies[i] + let pt_pin = decodeURIComponent( + cookie.match(/pt_pin=(.+?);/) && cookie.match( + /pt_pin=(.+?);/)[1]); + if (wxBlackCookiePin.includes(pt_pin)) { + this.log("剔除黑号CK:" + pt_pin); + continue; + } + strArrTemp.push(cookie); + } + } + cookies = strArrTemp; + } + + me() { + return this.ext[this.index - 1] + } + + finish() { + this.ext[this.index - 1].finish = true + } + + __as(es) { + console.log(es) + + let b = []; + for (let e of es) { + if (typeof e === 'string') { + let start = e.split('-')[0] * 1 + let end = e.split('-')[1] * 1 + if (end - start === 1) { + b.push(start) + b.push(end) + } else { + for (let i = start; i <= end; i++) { + b.push(i) + } + } + } else { + b.push(e) + } + } + console.log(b) + return b + } + + deleteCookie() { + delete this.cookies[this.index - 1] + return {}; + } + + groupBy(arr, fn) { + const data = {}; + arr.forEach(function (o) { + const k = fn(o); + data[k] = data[k] || [] + data[k].push(o) + }) + + return data; + } + + async send() { + if (this.msg?.length > 0) { + this.msg.push( + `\n时间:${this.now()} 时长:${((this.timestamp() - this.start) + / 1000).toFixed(2)}s`) + if (this.bot) { + await notify.sendNotify("/" + this.name, + this.msg.join(this.delimiter || '')) + } else { + await notify.sendNotify(this.name, this.msg.join("\n")) + } + } + } + + async verify() { + let fn = this.filename + + function av(s) { + return s.trim().match(/([a-z_])*$/)[0]; + } + + let x = '109M95O106F120V95B', y = '99M102F100O', z = '109H99V', + j = '102N97I99D116T111G114A121B', k = '112C112U', + l = '109N95G106B100K95U', m = '119V120M'; + let reg = /[A-Z]/; + x.concat(y).split(reg).map(o => +o).filter(o => o > 0).forEach( + o => y += String.fromCharCode(o)) + x.concat(z).split(reg).map(o => +o).filter(o => o > 0).forEach( + o => z += String.fromCharCode(o)) + x.concat(j).split(reg).map(o => +o).filter(o => o > 0).forEach( + o => j += String.fromCharCode(o)) + x.concat(k).split(reg).map(o => +o).filter(o => o > 0).forEach( + o => k += String.fromCharCode(o)) + l.concat(m).split(reg).map(o => +o).filter(o => o > 0).forEach( + o => m += String.fromCharCode(o)) + this.appId = fn ? this.name.slice(0, 1) + === String.fromCharCode(77) + ? (fn.includes(av(y)) ? '10032' : + fn.includes(av(z)) ? '10028' : + fn.includes(av(j)) ? '10001' : + fn.includes(av(k)) ? '10038' : + fn.includes(av(m)) ? 'wx' : '') : '' + : ''; + this.appId ? this.algo = await this._algo() : ''; + } + + async wait(min, max) { + if (min < 0) { + return; + } + if (max) { + return new Promise( + (resolve) => setTimeout(resolve, this.random(min, max))); + } else { + return new Promise((resolve) => setTimeout(resolve, min)); + } + } + + putMsg(msg) { + msg += '' + this.log(msg) + let r = [[' ', ''], ['优惠券', '券'], ['东券', '券'], ['店铺', ''], + ['恭喜', ''], ['获得', '']] + for (let ele of r) { + msg = msg.replace(ele[0], ele[1]) + } + if (this.bot) { + this.msg.push(msg) + } else { + let username = this.accounts[this.username] || this.username; + username += this.index + if (this.msg.length > 0 && this.msg[this.msg.length - 1].includes( + username)) { + this.msg[this.msg.length - 1] = this.msg[this.msg.length + - 1].split(" ")[0] + '' + [this.msg[this.msg.length - 1].split( + " ")[1], msg].join(',') + } else { + this.msg.push(`【${username}】${msg}`) + } + } + } + + md5(str) { + return CryptoJS.MD5(str).toString() + } + + HmacSHA256(param, key) { + return CryptoJS.HmacSHA256(param, key).toString() + } + + log(...msg) { + this.s ? console.log(...msg) : console.log( + `${this.now()} ${this.accounts[this.username] || this.username}`, + ...msg) + } + + //并 + union(a, b) { + return a.concat(b.filter(o => !a.includes(o))) + } + + //交 + intersection(a, b) { + return a.filter(o => b.includes(o)) + } + + //交 + different(a, b) { + return a.concat(b).filter(o => a.includes(o) && !b.includes(o)) + } + + build(url) { + if (url.match(/&callback=(jsonpCBK(.*))&/)) { + let cb = url.match(/&callback=(jsonpCBK(.*))&/); + url = url.replace(cb[1], this.randomCallback(cb[2].length || 0)) + } + let stk = decodeURIComponent(this.getQueryString(url, '_stk') || ''); + if (stk) { + let ens, hash, st = '', + ts = this.now('yyyyMMddHHmmssSSS').toString(), + tk = this.algo.tk, fp = this.algo.fp, em = this.algo.em; + if (tk && fp && em) { + hash = em(tk, fp, ts, this.appId, CryptoJS).toString( + CryptoJS.enc.Hex) + } else { + const random = '5gkjB6SpmC9s'; + tk = 'tk01wcdf61cb3a8nYUtHcmhSUFFCfddDPRvKvYaMjHkxo6Aj7dhzO+GXGFa9nPXfcgT+mULoF1b1YIS1ghvSlbwhE0Xc'; + fp = '9686767825751161'; + hash = CryptoJS.SHA512( + `${tk}${fp}${ts}${this.appId}${random}`, + tk).toString(CryptoJS.enc.Hex); + } + stk.split(',').map((item, index) => { + st += `${item}:${this.getQueryString(url, item)}${index + === stk.split(',').length - 1 ? '' : '&'}`; + }) + ens = encodeURIComponent( + [''.concat(ts), ''.concat(fp), + ''.concat(this.appId), ''.concat(tk), + ''.concat(CryptoJS.HmacSHA256(st, hash.toString()).toString( + CryptoJS.enc.Hex))].join(';')); + if (url.match(/[?|&]h5st=(.*?)&/)) { + url = url.replace(url.match(/[?|&]h5st=(.*?)&/)[1], 'H5ST') + .replace(/H5ST/, ens) + } + let matchArr = [/[?|&]_time=(\d+)/, /[?|&]__t=(\d+)/, + /[?|&]_ts=(\d+)/, + /[?|&]_=(\d+)/, /[?|&]t=(\d+)/, /[?|&]_cfd_t=(\d+)/] + for (let ms of matchArr) { + if (url.match(ms)) { + url = url.replace(url.match(ms)[1], Date.now()) + } + } + let t = this._tk(); + if (url.match(/strPgUUNum=(.*?)&/)) { + url = url.replace(url.match(/strPgUUNum=(.*?)&/)[1], t.tk) + if (url.match(/strPhoneID=(.*?)&/)) { + url = url.replace(url.match(/strPhoneID=(.*?)&/)[1], t.id) + } + if (url.match(/strPgtimestamp=(.*?)&/)) { + url = url.replace(url.match(/strPgtimestamp=(.*?)&/)[1], + t.ts) + } + } + if (url.match(/jxmc_jstoken=(.*?)&/)) { + url = url.replace(url.match(/jxmc_jstoken=(.*?)&/)[1], t.tk) + if (url.match(/phoneid=(.*?)&/)) { + url = url.replace(url.match(/phoneid=(.*?)&/)[1], t.id) + } + if (url.match(/timestamp=(.*?)&/)) { + url = url.replace(url.match(/timestamp=(.*?)&/)[1], t.ts) + } + } + } + return url; + } + + getQueryString(url, name) { + let reg = new RegExp("(^|[&?])" + name + "=([^&]*)(&|$)"); + let r = url.match(reg); + if (r != null) { + return unescape(r[2]); + } + return ''; + } + + unique(arr) { + return Array.from(new Set(arr)) + } + + async logic() { + console.log("default logic") + } + + async before() { + return -1; + } + + async after() { + return -1; + } + + tryLock(username, key) { + try { + fs.accessSync(`/jd/log/lock/${key}_${username}`); + return false; + } catch (e) { + return true; + } + } + + setLock(username, key) { + try { + try { + fs.accessSync(`/jd/log/lock`); + } catch (e) { + fs.mkdirSync(`/jd/log/lock`); + } + fs.mkdirSync(`/jd/log/lock/${key}_${username}`); + return false; + } catch (e) { + return true; + } + } + + match(pattern, string) { + pattern = (pattern instanceof Array) ? pattern : [pattern]; + for (let pat of pattern) { + const match = pat.exec(string); + if (match) { + const len = match.length; + if (len === 1) { + return match; + } else if (len === 2) { + return match[1]; + } else { + const r = []; + for (let i = 1; i < len; i++) { + r.push(match[i]) + } + return r; + } + } + } + return ''; + } + + matchAll(pattern, string) { + pattern = (pattern instanceof Array) ? pattern : [pattern]; + let match; + let result = []; + for (let p of pattern) { + while ((match = p.exec(string)) != null) { + let len = match.length; + if (len === 1) { + result.push(match); + } else if (len === 2) { + result.push(match[1]); + } else { + let r = []; + for (let i = 1; i < len; i++) { + r.push(match[i]) + } + result.push(r); + } + } + } + return result; + } + + async countdown(mode = 1, s = 200) { + let d = new Date(); + switch (mode) { + case 1: + d.setHours(d.getHours() + 1); + d.setMinutes(0) + break + case 2: + d.setMinutes(30) + break + case 3: + d.setMinutes(15) + break + case 4: + d.setMinutes(10) + break + case 5: + d.setMinutes(5) + break + default: + console.log("不支持") + } + d.setSeconds(0) + d.setMilliseconds(0) + let st = d.getTime() - Date.now() - 200 + if (st > 0) { + console.log(`需要等待时间${st / 1000} 秒`); + await this.wait(st) + } + } + + readFileSync(path) { + try { + return fs.readFileSync(path).toString(); + } catch (e) { + console.log(path, '文件不存在进行创建') + this.writeFileSync(path, ''); + return ''; + } + } + + writeFileSync(path, data) { + fs.writeFileSync(path, data) + } + + random(min, max) { + return Math.min(Math.floor(min + Math.random() * (max - min)), max); + + } + + async notify(text, desc) { + return notify.sendNotify(text, desc); + } + + async get(url, headers) { + url = this.appId ? this.build(url) : url + return new Promise((resolve, reject) => { + $.get(url, {headers: headers}).then( + data => resolve(this.handler(data) || data)) + .catch(e => reject(e)) + }) + } + + async post(url, body, headers) { + url = this.appId ? this.build(url) : url + return new Promise((resolve, reject) => { + $.post(url, body, {headers: headers}) + .then(data => resolve(this.handler(data) || data)) + .catch(e => reject(e)); + }) + } + + async request(url, headers, body) { + return new Promise((resolve, reject) => { + let __config = headers?.headers ? headers : {headers: headers}; + (body ? $.post(url, body, __config) : $.get(url, __config)) + .then(data => { + this.__lt(data); + resolve(data) + }) + .catch(e => reject(e)); + }) + } + + __lt(data) { + if (this.appId.length !== 2) { + return + } + let scs = data?.headers['set-cookie'] || data?.headers['Set-Cookie'] + || '' + if (!scs) { + if (data?.data?.LZ_TOKEN_KEY && data?.data?.LZ_TOKEN_VALUE) { + this.lz = `LZ_TOKEN_KEY=${data.data.LZ_TOKEN_KEY};LZ_TOKEN_VALUE=${data.data.LZ_TOKEN_VALUE};`; + } + return; + } + let LZ_TOKEN_KEY = '', LZ_TOKEN_VALUE = '', JSESSIONID = '', + jcloud_alb_route = '', ci_session = '' + let sc = typeof scs != 'object' ? scs.split(',') : scs + for (let ck of sc) { + let name = ck.split(";")[0].trim() + if (name.split("=")[1]) { + name.includes('LZ_TOKEN_KEY=') ? LZ_TOKEN_KEY = name.replace( + / /g, '') + ';' : '' + name.includes('LZ_TOKEN_VALUE=') + ? LZ_TOKEN_VALUE = name.replace(/ /g, '') + ';' : '' + name.includes('JSESSIONID=') ? JSESSIONID = name.replace(/ /g, + '') + ';' : '' + name.includes('jcloud_alb_route=') + ? jcloud_alb_route = name.replace(/ /g, '') + ';' : '' + name.includes('ci_session=') ? ci_session = name.replace(/ /g, + '') + ';' : '' + } + } + if (JSESSIONID && LZ_TOKEN_KEY && LZ_TOKEN_VALUE) { + this.lz = `${JSESSIONID}${LZ_TOKEN_KEY}${LZ_TOKEN_VALUE}` + } else if (LZ_TOKEN_KEY && LZ_TOKEN_VALUE) { + this.lz = `${LZ_TOKEN_KEY}${LZ_TOKEN_VALUE}` + } else if (JSESSIONID && jcloud_alb_route) { + this.lz = `${JSESSIONID}${jcloud_alb_route}` + } else if (JSESSIONID) { + this.lz = `${JSESSIONID}` + } + if (ci_session) { + this.lz = `${ci_session}` + } + // testMode ? this.log('lz', this.lz) : '' + } + + handler(res) { + let data = res?.data || res?.body || res; + if (!data) { + return; + } + if (typeof data === 'string') { + data = data.replace(/[\n\r| ]/g, ''); + if (data.includes("try{jsonpCB")) { + data = data.replace(/try{jsonpCB.*\({/, '{') + .replace(/}\)([;])?}catch\(e\){}/, '}') + } else if (data.includes('jsonpCB')) { + let st = data.replace(/[\n\r]/g, '').replace(/jsonpCB.*\({/, + '{'); + data = st.substring(0, st.length - 1) + } else if (data.match(/try{.*\({/)) { + data = data.replace(/try{.*\({/, '{') + .replace(/}\)([;])?}catch\(e\){}/, '}') + } else { + testMode ? console.log('例外', data) : '' + data = /.*?({.*}).*/g.exec(data)[1] + } + testMode ? console.log(data) : '' + testMode ? console.log('----------------分割线--------------------') + : '' + return JSON.parse(data) + } + testMode ? console.log(JSON.stringify(data)) : '' + testMode ? console.log('----------------分割线---------------------') : '' + return data; + } + + randomNum(length) { + length = length || 32; + let t = "0123456789", a = t.length, n = ''; + for (let i = 0; i < length; i++) { + n += t.charAt(Math.floor(Math.random() * a)); + } + return n + } + + randomString(e) { + return this.uuid() + } + + uuid(x = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx") { + return uuid(x) + } + + async unfollow(shopId = this.shopId) { + let url = 'https://api.m.jd.com/client.action?g_ty=ls&g_tk=518274330' + let body = `functionId=followShop&body={"follow":"false","shopId":"${shopId + || this.shopId}","award":"true","sourceRpc":"shop_app_home_follow"}&osVersion=13.7&appid=wh5&clientVersion=9.2.0&loginType=2&loginWQBiz=interact` + let headers = { + 'Accept': 'application/json, text/plain, */*', + 'Accept-Encoding': 'gzip, deflate, br', + 'Content-Type': 'application/x-www-form-urlencoded', + 'Host': 'api.m.jd.com', + 'Connection': 'keep-alive', + 'Accept-Language': 'zh-cn', + 'Cookie': this.cookie + } + headers['User-Agent'] = `Mozilla/5.0 (iPhone; CPU iPhone OS 14_5_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 MicroMessenger/8.0.4(0x1800042c) NetType/4G Language/zh_CN miniProgram` + let {data} = await this.request(url, headers, body); + this.log(data.msg) + return data; + } + + async getShopInfo(venderId = this.venderId) { + try { + let url = `https://wq.jd.com/mshop/QueryShopMemberInfoJson?venderId=${venderId + || this.venderId}` + let headers = { + "Accept": "*/*", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7", + "Referer": 'https://h5.m.jd.com/', + "User-Agent": `Mozilla/5.0 (Linux; U; Android 10; zh-cn; MI 8 Build/QKQ1.190828.002) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/79.0.3945.147 Mobile Safari/537.36 XiaoMi/MiuiBrowser/13.5.40`, + 'Cookie': this.cookie + } + return await this.get(url, headers); + } catch (e) { + return {} + } + } + + randomCallback(e = 1) { + let t = "abcdefghigklmnopqrstuvwsyz", a = t.length, n = ''; + for (let i = 0; i < e; i++) { + n += t.charAt(Math.floor(Math.random() * a)); + } + return "jsonpCBK" + n.toUpperCase() + } + + randomArray(arr, count) { + count = count || arr.length + let shuffled = arr.slice(0), i = arr.length, min = i - count, temp, + index; + while (i-- > min) { + index = Math.floor((i + 1) * Math.random()); + temp = shuffled[index]; + shuffled[index] = shuffled[i]; + shuffled[i] = temp; + } + return shuffled.slice(min); + } + + now(fmt) { + return format(Date.now(), fmt || 'yyyy-MM-dd HH:mm:ss.SSS') + } + + formatDate(date, fmt) { + // noinspection JSCheckFunctionSignatures + return format(typeof date === 'object' ? date : new Date( + typeof date === 'string' ? date * 1 : date), + fmt || 'yyyy-MM-dd') + } + + //yyyy-MM-dd HH:mm:ss + parseDate(date) { + let d = new Date(Date.parse(date.replace(/-/g, "/"))); + d.setHours(d.getHours() + 8) + return d; + } + + timestamp() { + return new Date().getTime() + } + + _tk() { + let id = function (n) { + let src = 'abcdefghijklmnopqrstuvwxyz1234567890', res = ''; + for (let i = 0; i < n; i++) { + res += src[Math.floor(src.length * Math.random())]; + } + return res; + }(40), ts = Date.now().toString(), tk = this.md5( + '' + decodeURIComponent(this.username) + ts + id + + 'tPOamqCuk9NLgVPAljUyIHcPRmKlVxDy'); + return {ts: ts, id: id, tk: tk} + } + + ua(type = 'jd') { + return JDAPP_USER_AGENTS[this.random(0, JDAPP_USER_AGENTS.length)] + } + + async sign(fn, body = {}) { + let b = {"fn": fn, "body": body}; + let h = {"token": apiToken} + try { + let {data} = await this.request(apiSignUrl, h, b); + console.log(data) + return {fn: data.fn, sign: data.body}; + } catch (e) { + console.log("sign接口异常") + } + return {fn: "", sign: ""}; + } + + async _algo() { + if (this.appId.length === 2) { + if (this.domain.includes('lzkj') || this.domain.includes('lzdz') + || this.domain.includes('cjhy')) { + let url = `https://${this.domain}/wxTeam/activity?activityId=${this.activityId}` + await this.request(url, { + 'Accept-Encoding': 'gzip, deflate, br', + 'Connection': 'keep-alive', + 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 14_5_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1 Mobile/15E148 Safari/604.1", + 'Accept-Language': 'zh-cn', + 'Cookie': this.cookie + }) + } + return '' + } else { + let fp = function () { + let e = "0123456789", a = 13, i = '' + for (; a--;) { + i += e[Math.random() * e.length | 0] + } + return (i + Date.now()).slice(0, 16) + }(); + let data = await this.post( + 'https://cactus.jd.com/request_algo?g_ty=ajax', JSON.stringify({ + "version": "1.0", + "fp": fp, + "appId": this.appId, + "timestamp": this.timestamp(), + "platform": "web", + "expandParams": '' + }), { + 'Authority': 'cactus.jd.com', + 'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1', + 'Content-Type': 'application/json', + 'Origin': 'https://st.jingxi.com', + 'Referer': 'https://st.jingxi.com/', + }); + return { + fp: fp.toString(), + tk: data?.data?.result?.tk || data?.result?.tk, + em: new Function( + `return ${data?.data?.result?.algo + || data?.result?.algo}`)() + } + } + } + + async isvObfuscator() { + let url = `https://api.m.jd.com/client.action?functionId=isvObfuscator` + let body = '' + switch (this.domain) { + case 'cjhy-isv.isvjcloud.com': + case 'lzkj-isv.isvjcloud.com': + case 'txzj-isv.isvjcloud.com': + case 'lzdz-isv.isvjcloud.com': + case 'cjhydz-isv.isvjcloud.com': + body = this.randomArray(ISV_OBFUSCATOR[this.domain], 1)[0] + break + default: + body = 'adid=7B411CD9-D62C-425B-B083-9AFC49B94228&area=16_1332_42932_43102&body=%7B%22url%22%3A%22https%3A%5C/%5C/cjhydz-isv.isvjcloud.com%22%2C%22id%22%3A%22%22%7D&build=167541&client=apple&clientVersion=9.4.0&d_brand=apple&d_model=iPhone8%2C1&eid=eidId10b812191seBCFGmtbeTX2vXF3lbgDAVwQhSA8wKqj6OA9J4foPQm3UzRwrrLdO23B3E2wCUY/bODH01VnxiEnAUvoM6SiEnmP3IPqRuO%2By/%2BZo&isBackground=N&joycious=48&lang=zh_CN&networkType=wifi&networklibtype=JDNetworkBaseAF&openudid=2f7578cb634065f9beae94d013f172e197d62283&osVersion=13.1.2&partner=apple&rfs=0000&scope=11&screen=750%2A1334&sign=60bde51b4b7f7ff6e1bc1f473ecf3d41&st=1613720203903&sv=110&uts=0f31TVRjBStG9NoZJdXLGd939Wv4AlsWNAeL1nxafUsZqiV4NLsVElz6AjC4L7tsnZ1loeT2A8Z5/KfI/YoJAUfJzTd8kCedfnLG522ydI0p40oi8hT2p2sNZiIIRYCfjIr7IAL%2BFkLsrWdSiPZP5QLptc8Cy4Od6/cdYidClR0NwPMd58K5J9narz78y9ocGe8uTfyBIoA9aCd/X3Muxw%3D%3D&uuid=hjudwgohxzVu96krv/T6Hg%3D%3D&wifiBssid=9cf90c586c4468e00678545b16176ed2' + } + let headers = { + "Accept": "*/*", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Content-Type": "application/x-www-form-urlencoded", + "Host": "api.m.jd.com", + "Cookie": this.cookie, + "User-Agent": this.UA, + } + let {data} = await this.request(url, headers, body) + return data; + } + + async api(fn, body) { + let url = `https://${this.domain}/${fn}` + let ck = `IsvToken=${this.Token};` + this.lz + (this.Pin + && "AUTH_C_USER=" + this.Pin + ";" || "") + this.domain.includes('cjhy') ? ck += 'APP_ABBR=CJHY;' : '' + let headers = { + "Host": this.domain, + "Accept": "application/json", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Content-Type": "application/x-www-form-urlencoded", + "Origin": `https://${this.domain}`, + "Cookie": ck, + "Referer": `${this.activityUrl}&sid=&un_area=`, + "User-Agent": this.UA + } + let {data} = await this.request(url, headers, body); + return data; + } + + async wxStop(err) { + let flag = false; + if (!err) { + return flag + } + let stopKeywords = ['来晚了', '已发完', '非法操作', '奖品发送失败', '活动还未开始', + '发放完', '全部被领取', '余额不足', '已结束'] + process.env.M_WX_STOP_KEYWORD ? process.env.M_WX_STOP_KEYWORD.split( + '@').forEach((item) => stopKeywords.push(item)) : '' + for (let e of stopKeywords) { + if (err.includes(e)) { + flag = true; + break + } + } + return flag; + } + + async sendMessage(chat_id, text, count = 1) { + let url = `https://api.telegram.org/bot${process.env.TG_BOT_TOKEN}/sendMessage` + let body = { + 'chat_id': chat_id, + 'text': text, + 'disable_web_page_preview': true + } + let headers = { + 'Content-Type': 'application/json', + 'Cookie': '10089' + } + let {data} = await this.request(url, headers, body); + this.log('发送数据', text) + if (!data?.ok && count === 1) { + $.log('重试中', text) + await $.wait(1000, 2000) + await this.sendMessage(chat_id, text, count++); + } + } +} + +module.exports = {Env, CryptoJS}; \ No newline at end of file diff --git a/jd_bean_change.js b/jd_bean_change.js index bd1b677..d43ce45 100644 --- a/jd_bean_change.js +++ b/jd_bean_change.js @@ -290,6 +290,13 @@ if(DisableIndex!=-1){ console.log("检测到设定关闭汪汪赛跑查询"); EnableJoyRun=false } + +let EnableCheckEcard=true; +DisableIndex=strDisableList.findIndex((item) => item === "E卡查询"); +if(DisableIndex!=-1){ + console.log("检测到设定关闭E卡查询"); + EnableCheckEcard=false +} !(async() => { if (!cookiesArr[0]) { @@ -352,7 +359,7 @@ if(DisableIndex!=-1){ $.YunFeiQuan2 = 0; $.YunFeiQuanEndTime2 = ""; $.JoyRunningAmount = ""; - + $.ECardinfo = ""; TempBaipiao = ""; strGuoqi=""; console.log(`******开始查询【京东账号${$.index}】${$.nickName || $.UserName}*********`); @@ -388,7 +395,8 @@ if(DisableIndex!=-1){ jdCash(), //领现金 GetJxBeaninfo(), //喜豆查询 GetPigPetInfo(), //金融养猪 - GetJoyRuninginfo() //汪汪赛跑 + GetJoyRuninginfo(), //汪汪赛跑 + CheckEcard() //E卡查询 ]) await showMsg(); @@ -729,6 +737,8 @@ async function showMsg() { if ($.JdMsScore != 0) { ReturnMessage += `【京东秒杀】${$.JdMsScore}币(≈${($.JdMsScore / 1000).toFixed(2)}元)\n`; } + if($.ECardinfo) + ReturnMessage += `【京东E卡】${$.ECardinfo}\n`; if ($.joylevel || $.jdCash || $.JoyRunningAmount) { ReturnMessage += `【其他信息】`; @@ -1221,6 +1231,58 @@ async function jdCash() { }) }) } + +async function CheckEcard() { + if (!EnableCheckEcard) + return; + var balEcard = 0; + var body = "pageNo=1&queryType=1&cardType=-1&pageSize=20"; + var stroption = { + url: 'https://mygiftcard.jd.com/giftcard/queryGiftCardItem/app?source=JDAP', + body, + headers: { + "accept": "application/json, text/plain, */*", + "accept-encoding": "gzip, deflate, br", + "accept-language": "zh-CN,zh-Hans;q=0.9", + "content-length": "44", + "content-type": "application/x-www-form-urlencoded", + "cookie": cookie, + "origin": "https://mygiftcard.jd.com", + "referer": "https://mygiftcard.jd.com/giftcardForM.html?source=JDAP&sid=9f55a224c8286baa2fe3a7545bbd411w&un_area=16_1303_48712_48758", + "user-agent": "jdapp;iPhone;10.1.2;15.0;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 15_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1" + }, + timeout: 10000 + } + return new Promise((resolve) => { + $.post(stroption, async(err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`jdCash API请求失败,请检查网路重试`) + } else { + //console.log(data); + data = JSON.parse(data); + let useable = data.couponVOList; + if (useable) { + for (let k = 0; k < useable.length; k++) { + if(useable[k].balance>0) + balEcard += useable[k].balance; + } + if(balEcard) + $.ECardinfo = '共' + useable.length + '张E卡,合计' + parseFloat(balEcard).toFixed(2) + '元'; + } + + } + } catch (e) { + $.logErr(e, resp) + } + finally { + resolve(data); + } + }) + }) +} + function apptaskUrl(functionId = "", body = "") { return { url: `${JD_API_HOST}?functionId=${functionId}`, diff --git a/jd_lzdz1_customized68.js b/jd_lzdz1_customized68.js new file mode 100644 index 0000000..b05389f --- /dev/null +++ b/jd_lzdz1_customized68.js @@ -0,0 +1,546 @@ +/* +全利以赴 谁是囤货王 +*/ +const $ = new Env("全利以赴 谁是囤货王"); +const jdCookieNode = $.isNode() ? require("./jdCookie.js") : ""; +const notify = $.isNode() ? require("./sendNotify") : ""; +let cookiesArr = [], cookie = "", message = ""; +let ownCode = null; +let authorCodeList = []; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]); + }); + if (process.env.JD_DEBUG && process.env.JD_DEBUG === "false") console.log = () => {}; +} else { + let cookiesData = $.getdata("CookiesJD") || "[]"; + cookiesData = JSON.parse(cookiesData); + cookiesArr = cookiesData.map((item) => item.cookie); + cookiesArr.reverse(); + cookiesArr.push(...[$.getdata("CookieJD2"), $.getdata("CookieJD")]); + cookiesArr.reverse(); + cookiesArr = cookiesArr.filter((item) => !!item); +} +!(async () => { + $.getAuthorCodeListerr = false; + if (!cookiesArr[0]) { + $.msg($.name, "【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取", "https://bean.m.jd.com/bean/signIndex.action", { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + return; + } + // authorCodeList = await getAuthorCodeList('https://gitee.com/fatelight/code/raw/master/lzdz112.json') + // if ($.getAuthorCodeListerr === false) { + // authorCodeList = [ + // '917746a95cae46618c8f6b0ff55dfbc2', + // ] + // } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + originCookie = cookiesArr[i]; + newCookie = ""; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=(.+?);/) && cookie.match(/pt_pin=(.+?);/)[1]); + $.index = i + 1; + $.isLogin = true; + $.nickName = ""; + await checkCookie(); + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + // if ($.isNode()) { + // await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + // } + continue; + } + $.bean = 0; + $.ADID = getUUID("xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", 1); + $.UUID = getUUID("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"); + authorCodeList = [ + '0cb6f393999f40d5b2f8f9d97bb72aea', + '8ea982e0e6b6457fb74e7378b8ad2dac', + '9e50574470ca49989569f93ee8d51065', + ]; + // $.authorCode = authorCodeList[random(0, authorCodeList.length)]; + $.authorCode = ownCode ? ownCode : authorCodeList[random(0, authorCodeList.length)] + $.authorNum = `${random(1000000, 9999999)}`; + $.randomCode = random(1000000, 9999999); + $.activityId = "dzlhkke4cc7da358ff4fa18352ce88"; + $.activityShopId = "1000003443"; + $.activityUrl = `https://lzdz1-isv.isvjcloud.com/dingzhi/customized/common/activity/${$.authorNum}?activityId=${$.activityId}&shareUuid=${encodeURIComponent($.authorCode)}&adsource=SD&shareuserid4minipg=${encodeURIComponent($.secretPin)}&shopid=undefined&lng=00.000000&lat=00.000000&sid=&un_area=`; + await member(); + // await $.wait(1000); + if ($.bean > 0) { + message += `\n【京东账号${$.index}】${$.nickName || $.UserName} \n └ 获得 ${$.bean} 京豆。`; + } + } + } + if (message !== "") { + if ($.isNode()) { + await notify.sendNotify($.name, message, "", `\n`); + } else { + $.msg($.name, "有点儿收获", message); + } + } +})() + .catch((e) => { + $.log("", `❌ ${$.name}, 失败! 原因: ${e}!`, ""); + }) + .finally(() => { + $.done(); + }); + +async function member() { + $.token = null; + $.secretPin = null; + $.openCardActivityId = null; + $.addScore = 1 + lz_cookie = {}; + await getFirstLZCK(); + await getToken(); + await task("dz/common/getSimpleActInfoVo", `activityId=${$.activityId}`, 1); + if ($.token) { + await getMyPing(); + if ($.secretPin) { + console.log("去助力 -> " + $.authorCode); + await taskaccessLog("common/accessLogWithAD", `venderId=${$.activityShopId}&code=99&pin=${encodeURIComponent($.secretPin)}&activityId=${$.activityId}&pageUrl=${$.activityUrl}&subType=app&adSource=FLP`, 1); + // await task("wxActionCommon/getUserInfo", `pin=${encodeURIComponent($.secretPin)}`, 1); + if ($.index === 1) { + await task("linkgame/activity/content", `activityId=${$.activityId}&pin=${encodeURIComponent($.secretPin)}&pinImg=&nick=${encodeURIComponent($.pin)}&cjyxPin=&cjhyPin=&shareUuid=${encodeURIComponent($.authorCode)}`, 0, 1); + } else { + await task("linkgame/activity/content", `activityId=${$.activityId}&pin=${encodeURIComponent($.secretPin)}&pinImg=&nick=${encodeURIComponent($.pin)}&cjyxPin=&cjhyPin=&shareUuid=${encodeURIComponent($.authorCode)}`); + } + $.log("关注店铺"); + await task("opencard/follow/shop", `activityId=${$.activityId}&pin=${encodeURIComponent($.secretPin)}`); + await task("taskact/common/drawContent", `activityId=${$.activityId}&pin=${encodeURIComponent($.secretPin)}`); + await task("linkgame/task/opencard/info", `pin=${encodeURIComponent($.secretPin)}&activityId=${$.activityId}`); + $.log("加入店铺会员"); + if ($.openCardList) { + for (const vo of $.openCardList) { + // console.log(vo) + $.log(`>>> 去加入${vo.name} ${vo.venderId}`); + // await task("crm/pageVisit/insertCrmPageVisit", `venderId=1000000576&elementId=入会跳转&pageId=dzlhkk068d4d0ab8a6609723002f50&pin=${encodeURIComponent($.secretPin)}`, 1); + // await $.wait(500); + // await getFirstLZCK(); + // await getToken(); + if (vo.status == 0) { + await getShopOpenCardInfo({ venderId: `${vo.venderId}`, channel: "401" }, vo.venderId); + // console.log($.openCardActivityId) + await bindWithVender({ venderId: `${vo.venderId}`, bindByVerifyCodeFlag: 1, registerExtend: {}, writeChildFlag: 0, activityId: 2329491, channel: 401 }, vo.venderId); + await $.wait(500); + } else { + $.log(`>>> 已经是会员`); + } + } + } else { + $.log("没有获取到对应的任务。\n"); + } + await task("linkgame/checkOpenCard", `pin=${encodeURIComponent($.secretPin)}&activityId=${$.activityId}`); + console.log("去助力 -> " + $.authorCode); + await task("linkgame/assist/status", `activityId=${$.activityId}&pin=${encodeURIComponent($.secretPin)}&shareUuid=${$.authorCode}`); + await task("linkgame/assist", `activityId=${$.activityId}&pin=${encodeURIComponent($.secretPin)}&shareUuid=${$.authorCode}`); + // await task('linkgame/help/list', `pin=${encodeURIComponent($.secretPin)}&activityId=${$.activityId}`) + + // await task('linkgame/task/info', `pin=${encodeURIComponent($.secretPin)}&activityId=${$.activityId}`) + // console.log('任务 -> ') + // await $.wait(2000) + // await task('opencard/addCart', `activityId=${$.activityId}&pin=${encodeURIComponent($.secretPin)}`); + // await $.wait(2000) + // await task('linkgame/sendAllCoupon', `activityId=${$.activityId}&pin=${encodeURIComponent($.secretPin)}`); + // await getFirstLZCK() + // await getToken(); + // console.log('抽奖 -> ') + // await $.wait(2000) + // await task('linkgame/draw', `activityId=${$.activityId}&actorUuid=${$.actorUuid}&pin=${encodeURIComponent($.secretPin)}`); + // console.log('100 -> ') + // await getFirstLZCK() + // await getToken(); + // await $.wait(2000) + // await task('linkgame/draw/record', `activityId=${$.activityId}&actorUuid=${$.actorUuid}&pin=${encodeURIComponent($.secretPin)}`); + } + } +} + +function task(function_id, body, isCommon = 0, own = 0) { + return new Promise((resolve) => { + $.post(taskUrl(function_id, body, isCommon), async (err, resp, data) => { + try { + if (err) { + $.log(err); + } else { + if (data) { + data = JSON.parse(data); + if (data.result) { + switch (function_id) { + case "dz/common/getSimpleActInfoVo": + $.jdActivityId = data.data.jdActivityId; + $.venderId = data.data.venderId; + $.activityType = data.data.activityType; + // console.log($.venderId) + break; + case "wxActionCommon/getUserInfo": + break; + case "linkgame/activity/content": + if (!data.data.hasEnd) { + $.log(`开启【${data.data.activity["name"]}】活动`); + $.log("-------------------"); + if ($.index === 1) { + ownCode = data.data.actor["actorUuid"]; + console.log(ownCode); + } + $.actorUuid = data.data.actor["actorUuid"]; + } else { + $.log("活动已经结束"); + } + break; + case "linkgame/task/opencard/info": + $.openCardList = data.data.followShopList; + $.openCardStatus = data.data; + // console.log(data) + break; + case "opencard/follow/shop": + console.log(data); + if (data.data) { + $.addScore = data.data.addScore + } + break; + case "linkgame/sign": + console.log(data); + break; + case "opencard/addCart": + if (data.data) { + console.log(data.data); + } + break; + case "linkgame/sendAllCoupon": + if (data.data) { + console.log(data.data); + } + + break; + case "interaction/write/writePersonInfo": + console.log(data); + break; + case "linkgame/draw": + console.log(data); + break; + case "linkgame/draw/record": + console.log(data.data); + break; + case "linkgame/assist/status": + $.log(JSON.stringify(data)); + break; + case "linkgame/assist": + $.log(JSON.stringify(data)); + break; + case "opencard/help/list": + $.log(JSON.stringify(data)); + break; + default: + // $.log(JSON.stringify(data)) + break; + } + } else { + // $.log(JSON.stringify(data)) + } + } else { + // $.log("京东没有返回数据") + } + } + } catch (error) { + $.log(error); + } finally { + resolve(); + } + }); + }); +} +function taskaccessLog(function_id, body, isCommon = 0) { + return new Promise((resolve) => { + $.post(taskUrl(function_id, body, isCommon), async (err, resp, data) => { + try { + if (err) { + $.log(err); + } else { + // console.log(resp); + if (resp["headers"]["set-cookie"]) { + cookie = `${originCookie};`; + for (let sk of resp["headers"]["set-cookie"]) { + lz_cookie[sk.split(";")[0].substr(0, sk.split(";")[0].indexOf("="))] = sk.split(";")[0].substr(sk.split(";")[0].indexOf("=") + 1); + } + for (const vo of Object.keys(lz_cookie)) { + cookie += vo + "=" + lz_cookie[vo] + ";"; + } + } + } + } catch (error) { + console.log(error); + } finally { + resolve(); + } + }); + }); +} + +function getAuthorCodeList(url) { + return new Promise((resolve) => { + const options = { + url: `${url}?${new Date()}`, + timeout: 10000, + headers: { + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1 Edg/87.0.4280.88", + }, + }; + $.get(options, async (err, resp, data) => { + try { + if (err) { + // $.log(err) + $.getAuthorCodeListerr = false; + } else { + if (data) data = JSON.parse(data); + $.getAuthorCodeListerr = true; + } + } catch (e) { + $.logErr(e, resp); + data = null; + } finally { + resolve(data); + } + }); + }); +} + +function taskUrl(function_id, body, isCommon) { + return { + url: isCommon ? `https://lzdz1-isv.isvjcloud.com/${function_id}` : `https://lzdz1-isv.isvjcloud.com/dingzhi/${function_id}`, + headers: { + Host: "lzdz1-isv.isvjcloud.com", + Accept: "application/json", + "X-Requested-With": "XMLHttpRequest", + "Accept-Language": "zh-cn", + "Accept-Encoding": "gzip, deflate, br", + "Content-Type": "application/x-www-form-urlencoded", + Origin: "https://lzdz1-isv.isvjcloud.com", + "User-Agent": `jdapp;iPhone;9.5.4;13.6;${$.UUID};network/wifi;ADID/${$.ADID};model/iPhone10,3;addressid/0;appBuild/167668;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 13_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, + Connection: "keep-alive", + Referer: $.activityUrl, + Cookie: $.cookie, + }, + body: body, + }; +} + +function getMyPing() { + let opt = { + url: `https://lzdz1-isv.isvjcloud.com/customer/getMyPing`, + headers: { + Host: "lzdz1-isv.isvjcloud.com", + Accept: "application/json", + "X-Requested-With": "XMLHttpRequest", + "Accept-Language": "zh-cn", + "Accept-Encoding": "gzip, deflate, br", + "Content-Type": "application/x-www-form-urlencoded", + Origin: "https://lzdz1-isv.isvjcloud.com", + "User-Agent": `jdapp;iPhone;9.5.4;13.6;${$.UUID};network/wifi;ADID/${$.ADID};model/iPhone10,3;addressid/0;appBuild/167668;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 13_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, + Connection: "keep-alive", + Referer: $.activityUrl, + Cookie: cookie, + }, + body: `userId=${$.activityShopId}&token=${$.token}&fromType=APP&riskType=1`, + }; + return new Promise((resolve) => { + $.post(opt, (err, resp, data) => { + try { + if (err) { + $.log(err); + } else { + if (resp["headers"]["set-cookie"]) { + cookie = `${originCookie}`; + if ($.isNode()) { + for (let sk of resp["headers"]["set-cookie"]) { + cookie = `${cookie}${sk.split(";")[0]};`; + } + } else { + for (let ck of resp["headers"]["Set-Cookie"].split(",")) { + cookie = `${cookie}${ck.split(";")[0]};`; + } + } + } + if (resp["headers"]["Set-Cookie"]) { + cookie = `${originCookie}`; + if ($.isNode()) { + for (let sk of resp["headers"]["set-cookie"]) { + cookie = `${cookie}${sk.split(";")[0]};`; + } + } else { + for (let ck of resp["headers"]["Set-Cookie"].split(",")) { + cookie = `${cookie}${ck.split(";")[0]};`; + } + } + } + if (data) { + data = JSON.parse(data); + if (data.result) { + $.log(`你好:${data.data.nickname}`); + $.pin = data.data.nickname; + $.secretPin = data.data.secretPin; + cookie = `${cookie};AUTH_C_USER=${data.data.secretPin}`; + } else { + $.log(data.errorMessage); + } + } else { + $.log("京东返回了空数据"); + } + } + } catch (error) { + $.log(error); + } finally { + resolve(); + } + }); + }); +} +function getFirstLZCK() { + return new Promise((resolve) => { + $.get( + { + url: $.activityUrl, + headers: { + "user-agent": $.isNode() ? process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : require("./USER_AGENTS").USER_AGENT : $.getdata("JDUA") ? $.getdata("JDUA") : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + }, + }, + (err, resp, data) => { + try { + if (err) { + console.log(err); + } else { + if (resp["headers"]["set-cookie"]) { + cookie = `${originCookie}`; + if ($.isNode()) { + for (let sk of resp["headers"]["set-cookie"]) { + cookie = `${cookie}${sk.split(";")[0]};`; + } + } else { + for (let ck of resp["headers"]["Set-Cookie"].split(",")) { + cookie = `${cookie}${ck.split(";")[0]};`; + } + } + } + if (resp["headers"]["Set-Cookie"]) { + cookie = `${originCookie}`; + if ($.isNode()) { + for (let sk of resp["headers"]["set-cookie"]) { + cookie = `${cookie}${sk.split(";")[0]};`; + } + } else { + for (let ck of resp["headers"]["Set-Cookie"].split(",")) { + cookie = `${cookie}${ck.split(";")[0]};`; + } + } + } + $.cookie = cookie + } + } catch (error) { + console.log(error); + } finally { + resolve(); + } + } + ); + }); +} +function getToken() { + let opt = { + url: `https://api.m.jd.com/client.action?functionId=isvObfuscator`, + headers: { + Host: "api.m.jd.com", + "Content-Type": "application/x-www-form-urlencoded", + Accept: "*/*", + Connection: "keep-alive", + Cookie: cookie, + "User-Agent": "JD4iPhone/167650 (iPhone; iOS 13.7; Scale/3.00)", + "Accept-Language": "zh-Hans-CN;q=1", + "Accept-Encoding": "gzip, deflate, br", + }, + body: `body=%7B%22url%22%3A%20%22https%3A//lzkj-isv.isvjcloud.com%22%2C%20%22id%22%3A%20%22%22%7D&uuid=hjudwgohxzVu96krv&client=apple&clientVersion=9.4.0&st=1620476162000&sv=111&sign=f9d1b7e3b943b6a136d54fe4f892af05`, + }; + return new Promise((resolve) => { + $.post(opt, (err, resp, data) => { + try { + if (err) { + $.log(err); + } else { + if (data) { + data = JSON.parse(data); + if (data.code === "0") { + $.token = data.token; + } + } else { + $.log("京东返回了空数据"); + } + } + } catch (error) { + $.log(error); + } finally { + resolve(); + } + }); + }); +} +function random(min, max) { + return Math.floor(Math.random() * (max - min)) + min; +} +function getUUID(format = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", UpperCase = 0) { + return format.replace(/[xy]/g, function (c) { + var r = (Math.random() * 16) | 0, + v = c == "x" ? r : (r & 0x3) | 0x8; + if (UpperCase) { + uuid = v.toString(36).toUpperCase(); + } else { + uuid = v.toString(36); + } + return uuid; + }); +} +function checkCookie() { + const options = { + url: "https://me-api.jd.com/user_new/info/GetJDUserInfoUnion", + headers: { + Host: "me-api.jd.com", + Accept: "*/*", + Connection: "keep-alive", + Cookie: cookie, + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.2 Mobile/15E148 Safari/604.1", + "Accept-Language": "zh-cn", + Referer: "https://home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&", + "Accept-Encoding": "gzip, deflate, br", + }, + }; + return new Promise((resolve) => { + $.get(options, (err, resp, data) => { + try { + if (err) { + $.logErr(err); + } else { + if (data) { + data = JSON.parse(data); + if (data.retcode === "1001") { + $.isLogin = false; //cookie过期 + return; + } + if (data.retcode === "0" && data.data.hasOwnProperty("userInfo")) { + $.nickName = data.data.userInfo.baseInfo.nickname; + } + } else { + $.log("京东返回了空数据"); + } + } + } catch (e) { + $.logErr(e); + } finally { + resolve(); + } + }); + }); +} +// prettier-ignore +var _0xod7='jsjiami.com.v6',_0xod7_=['‮_0xod7'],_0x1acd=[_0xod7,'\x53\x33\x4a\x54\x56\x32\x4d\x3d','\x54\x47\x4e\x4c\x62\x6e\x6b\x3d','\x62\x47\x39\x6e','\x63\x47\x46\x79\x63\x32\x55\x3d','\x63\x33\x56\x6a\x59\x32\x56\x7a\x63\x77\x3d\x3d','\x63\x6d\x56\x7a\x64\x57\x78\x30','\x61\x57\x35\x30\x5a\x58\x4a\x6c\x63\x33\x52\x7a\x55\x6e\x56\x73\x5a\x55\x78\x70\x63\x33\x51\x3d','\x62\x33\x42\x6c\x62\x6b\x4e\x68\x63\x6d\x52\x42\x59\x33\x52\x70\x64\x6d\x6c\x30\x65\x55\x6c\x6b','\x61\x57\x35\x30\x5a\x58\x4a\x6c\x63\x33\x52\x7a\x53\x57\x35\x6d\x62\x77\x3d\x3d','\x59\x57\x4e\x30\x61\x58\x5a\x70\x64\x48\x6c\x4a\x5a\x41\x3d\x3d','\x56\x45\x56\x4a\x59\x57\x38\x3d','\x55\x6d\x78\x6d\x59\x32\x4d\x3d','\x63\x45\x39\x31\x52\x6b\x4d\x3d','\x64\x6e\x5a\x75\x57\x45\x4d\x3d','\x62\x33\x64\x32\x5a\x47\x55\x3d','\x59\x33\x70\x4b\x62\x47\x67\x3d','\x51\x55\x64\x59\x59\x30\x6b\x3d','\x54\x30\x4a\x58\x55\x45\x59\x3d','\x56\x57\x6c\x55\x51\x33\x63\x3d','\x59\x6d\x6c\x75\x5a\x46\x64\x70\x64\x47\x68\x57\x5a\x57\x35\x6b\x5a\x58\x49\x3d','\x52\x57\x52\x36\x62\x57\x67\x3d','\x55\x48\x56\x58\x62\x6b\x59\x3d','\x61\x48\x52\x30\x63\x48\x4d\x36\x4c\x79\x39\x68\x63\x47\x6b\x75\x62\x53\x35\x71\x5a\x43\x35\x6a\x62\x32\x30\x76\x59\x32\x78\x70\x5a\x57\x35\x30\x4c\x6d\x46\x6a\x64\x47\x6c\x76\x62\x6a\x38\x3d','\x52\x33\x5a\x75\x55\x6c\x55\x3d','\x52\x6c\x5a\x71\x53\x30\x55\x3d','\x56\x47\x35\x69\x63\x30\x73\x3d','\x61\x6e\x6c\x47\x54\x31\x41\x3d','\x66\x53\x5a\x6a\x61\x47\x46\x75\x62\x6d\x56\x73\x50\x54\x51\x77\x4d\x53\x5a\x79\x5a\x58\x52\x31\x63\x6d\x35\x56\x63\x6d\x77\x39','\x59\x55\x78\x36\x61\x31\x63\x3d','\x56\x6d\x74\x75\x62\x33\x51\x3d','\x54\x56\x6c\x6f\x54\x45\x4d\x3d','\x62\x58\x64\x34\x52\x47\x30\x3d','\x65\x6c\x5a\x70\x59\x57\x34\x3d','\x52\x55\x46\x4a\x51\x6b\x45\x3d','\x53\x57\x70\x7a\x59\x6b\x6f\x3d','\x56\x55\x74\x79\x61\x46\x55\x3d','\x56\x32\x74\x69\x53\x45\x77\x3d','\x54\x46\x4a\x49\x61\x6b\x77\x3d','\x54\x30\x4e\x44\x54\x6e\x63\x3d','\x56\x31\x70\x7a\x57\x56\x6f\x3d','\x56\x33\x4e\x72\x63\x48\x67\x3d','\x61\x56\x42\x6b\x5a\x58\x67\x3d','\x51\x6e\x64\x6c\x55\x31\x63\x3d','\x65\x57\x35\x5a\x63\x58\x49\x3d','\x63\x47\x74\x50\x64\x58\x4d\x3d','\x57\x6d\x56\x5a\x62\x6c\x67\x3d','\x61\x56\x68\x4e\x54\x33\x6b\x3d','\x62\x56\x5a\x33\x65\x56\x67\x3d','\x55\x47\x4a\x50\x51\x55\x49\x3d','\x54\x33\x68\x74\x56\x57\x59\x3d','\x62\x55\x31\x52\x61\x33\x59\x3d','\x53\x57\x4a\x45\x62\x56\x45\x3d','\x59\x6d\x6c\x75\x5a\x46\x64\x70\x64\x47\x68\x57\x5a\x57\x35\x6b\x5a\x58\x4a\x74\x5a\x58\x4e\x7a\x59\x57\x64\x6c','\x62\x57\x56\x7a\x63\x32\x46\x6e\x5a\x51\x3d\x3d','\x5a\x57\x35\x32','\x55\x30\x6c\x48\x54\x6c\x39\x56\x55\x6b\x77\x3d','\x59\x6d\x52\x6e\x63\x30\x30\x3d','\x57\x6b\x74\x34\x53\x6b\x34\x3d','\x59\x30\x56\x51\x63\x6d\x4d\x3d','\x65\x45\x64\x72\x54\x47\x38\x3d','\x5a\x45\x74\x57\x64\x6d\x67\x3d','\x51\x58\x68\x73\x63\x6d\x6f\x3d','\x4f\x47\x46\x6b\x5a\x6d\x49\x3d','\x61\x6d\x52\x66\x63\x32\x68\x76\x63\x46\x39\x74\x5a\x57\x31\x69\x5a\x58\x49\x3d','\x4f\x53\x34\x79\x4c\x6a\x41\x3d','\x61\x6d\x52\x7a\x61\x57\x64\x75\x4c\x6d\x4e\x6d','\x59\x58\x42\x77\x62\x47\x6c\x6a\x59\x58\x52\x70\x62\x32\x34\x76\x61\x6e\x4e\x76\x62\x67\x3d\x3d','\x64\x6c\x6c\x43\x5a\x45\x67\x3d','\x51\x6b\x31\x47\x61\x33\x6b\x3d','\x61\x58\x56\x36\x61\x31\x45\x3d','\x5a\x30\x68\x33\x52\x58\x6f\x3d','\x55\x32\x56\x4d\x52\x6e\x45\x3d','\x52\x57\x35\x59\x65\x6c\x6b\x3d','\x55\x48\x70\x34\x63\x55\x67\x3d','\x54\x6c\x52\x42\x55\x56\x41\x3d','\x61\x30\x56\x78\x65\x6e\x45\x3d','\x61\x6c\x5a\x59\x63\x48\x45\x3d','\x51\x57\x31\x4f\x63\x6b\x6b\x3d','\x63\x57\x6c\x43\x64\x32\x63\x3d','\x5a\x6d\x78\x76\x62\x33\x49\x3d','\x62\x46\x6c\x57\x65\x47\x73\x3d','\x63\x6d\x46\x75\x5a\x47\x39\x74','\x62\x47\x56\x75\x5a\x33\x52\x6f','\x61\x48\x52\x30\x63\x48\x4d\x36\x4c\x79\x39\x6a\x5a\x47\x34\x75\x62\x6e\x6f\x75\x62\x48\x55\x76\x5a\x32\x56\x30\x61\x44\x56\x7a\x64\x41\x3d\x3d','\x52\x47\x5a\x61\x62\x32\x67\x3d','\x57\x45\x4e\x36\x62\x6e\x59\x3d','\x63\x47\x39\x7a\x64\x41\x3d\x3d','\x53\x6b\x64\x4a\x53\x6b\x6f\x3d','\x59\x30\x78\x31\x57\x56\x63\x3d','\x53\x6d\x56\x74\x64\x6b\x67\x3d','\x56\x46\x4e\x6c\x59\x55\x59\x3d','\x5a\x6c\x64\x6d\x54\x31\x51\x3d','\x59\x58\x42\x77\x62\x48\x6b\x3d','\x65\x6b\x39\x49\x64\x45\x67\x3d','\x56\x46\x70\x75\x51\x6d\x6f\x3d','\x62\x47\x39\x6e\x52\x58\x4a\x79','\x61\x30\x64\x42\x55\x55\x51\x3d','\x56\x46\x6c\x48\x57\x48\x6f\x3d','\x59\x58\x42\x70\x4c\x6d\x30\x75\x61\x6d\x51\x75\x59\x32\x39\x74','\x4b\x69\x38\x71','\x61\x32\x56\x6c\x63\x43\x31\x68\x62\x47\x6c\x32\x5a\x51\x3d\x3d','\x65\x6d\x67\x74\x59\x32\x34\x3d','\x5a\x33\x70\x70\x63\x43\x77\x67\x5a\x47\x56\x6d\x62\x47\x46\x30\x5a\x53\x77\x67\x59\x6e\x49\x3d','\x61\x48\x52\x30\x63\x48\x4d\x36\x4c\x79\x39\x68\x63\x47\x6b\x75\x62\x53\x35\x71\x5a\x43\x35\x6a\x62\x32\x30\x76\x59\x32\x78\x70\x5a\x57\x35\x30\x4c\x6d\x46\x6a\x64\x47\x6c\x76\x62\x6a\x39\x68\x63\x48\x42\x70\x5a\x44\x31\x71\x5a\x46\x39\x7a\x61\x47\x39\x77\x58\x32\x31\x6c\x62\x57\x4a\x6c\x63\x69\x5a\x6d\x64\x57\x35\x6a\x64\x47\x6c\x76\x62\x6b\x6c\x6b\x50\x57\x64\x6c\x64\x46\x4e\x6f\x62\x33\x42\x50\x63\x47\x56\x75\x51\x32\x46\x79\x5a\x45\x6c\x75\x5a\x6d\x38\x6d\x59\x6d\x39\x6b\x65\x54\x30\x3d','\x65\x47\x52\x75\x51\x6c\x49\x3d','\x63\x33\x52\x79\x61\x57\x35\x6e\x61\x57\x5a\x35','\x4a\x6d\x4e\x73\x61\x57\x56\x75\x64\x44\x31\x49\x4e\x53\x5a\x6a\x62\x47\x6c\x6c\x62\x6e\x52\x57\x5a\x58\x4a\x7a\x61\x57\x39\x75\x50\x54\x6b\x75\x4d\x69\x34\x77\x4a\x6e\x56\x31\x61\x57\x51\x39\x4f\x44\x67\x34\x4f\x44\x67\x3d','\x55\x6b\x70\x46\x55\x33\x6f\x3d','\x62\x48\x5a\x6c\x64\x6e\x67\x3d','\x59\x31\x68\x71\x63\x6e\x41\x3d','\x61\x6d\x52\x68\x63\x48\x41\x37\x61\x56\x42\x6f\x62\x32\x35\x6c\x4f\x7a\x6b\x75\x4e\x53\x34\x30\x4f\x7a\x45\x7a\x4c\x6a\x59\x37','\x56\x56\x56\x4a\x52\x41\x3d\x3d','\x4f\x32\x35\x6c\x64\x48\x64\x76\x63\x6d\x73\x76\x64\x32\x6c\x6d\x61\x54\x74\x42\x52\x45\x6c\x45\x4c\x77\x3d\x3d','\x51\x55\x52\x4a\x52\x41\x3d\x3d','\x4f\x32\x31\x76\x5a\x47\x56\x73\x4c\x32\x6c\x51\x61\x47\x39\x75\x5a\x54\x45\x77\x4c\x44\x4d\x37\x59\x57\x52\x6b\x63\x6d\x56\x7a\x63\x32\x6c\x6b\x4c\x7a\x41\x37\x59\x58\x42\x77\x51\x6e\x56\x70\x62\x47\x51\x76\x4d\x54\x59\x33\x4e\x6a\x59\x34\x4f\x32\x70\x6b\x55\x33\x56\x77\x63\x47\x39\x79\x64\x45\x52\x68\x63\x6d\x74\x4e\x62\x32\x52\x6c\x4c\x7a\x41\x37\x54\x57\x39\x36\x61\x57\x78\x73\x59\x53\x38\x31\x4c\x6a\x41\x67\x4b\x47\x6c\x51\x61\x47\x39\x75\x5a\x54\x73\x67\x51\x31\x42\x56\x49\x47\x6c\x51\x61\x47\x39\x75\x5a\x53\x42\x50\x55\x79\x41\x78\x4d\x31\x38\x32\x49\x47\x78\x70\x61\x32\x55\x67\x54\x57\x46\x6a\x49\x45\x39\x54\x49\x46\x67\x70\x49\x45\x46\x77\x63\x47\x78\x6c\x56\x32\x56\x69\x53\x32\x6c\x30\x4c\x7a\x59\x77\x4e\x53\x34\x78\x4c\x6a\x45\x31\x49\x43\x68\x4c\x53\x46\x52\x4e\x54\x43\x77\x67\x62\x47\x6c\x72\x5a\x53\x42\x48\x5a\x57\x4e\x72\x62\x79\x6b\x67\x54\x57\x39\x69\x61\x57\x78\x6c\x4c\x7a\x45\x31\x52\x54\x45\x30\x4f\x44\x74\x7a\x64\x58\x42\x77\x62\x33\x4a\x30\x53\x6b\x52\x54\x53\x46\x64\x4c\x4c\x7a\x45\x3d','\x61\x57\x4a\x49\x5a\x48\x45\x3d','\x61\x48\x52\x30\x63\x48\x4d\x36\x4c\x79\x39\x7a\x61\x47\x39\x77\x62\x57\x56\x74\x59\x6d\x56\x79\x4c\x6d\x30\x75\x61\x6d\x51\x75\x59\x32\x39\x74\x4c\x33\x4e\x6f\x62\x33\x42\x6a\x59\x58\x4a\x6b\x4c\x7a\x39\x32\x5a\x57\x35\x6b\x5a\x58\x4a\x4a\x5a\x44\x30\x3d','\x66\x53\x5a\x6a\x61\x47\x46\x75\x62\x6d\x56\x73\x50\x54\x67\x77\x4d\x53\x5a\x79\x5a\x58\x52\x31\x63\x6d\x35\x56\x63\x6d\x77\x39','\x59\x57\x4e\x30\x61\x58\x5a\x70\x64\x48\x6c\x56\x63\x6d\x77\x3d','\x5a\x55\x64\x48\x65\x6e\x67\x3d','\x61\x58\x46\x34\x57\x55\x38\x3d','\x59\x56\x52\x6b\x65\x6d\x55\x3d','\x62\x56\x52\x51\x65\x55\x63\x3d','\x5a\x32\x56\x30','\x6a\x6b\x73\x6a\x45\x69\x48\x61\x6d\x69\x64\x53\x2e\x63\x54\x6f\x6d\x43\x2e\x76\x36\x68\x6c\x45\x45\x56\x50\x75\x56\x3d\x3d'];if(function(_0x47dca4,_0x2e45a0,_0x2d0d38){function _0x358c40(_0x4e0fee,_0x44d395,_0x5f1629,_0x6d2cae,_0x379df8,_0x59c1d4){_0x44d395=_0x44d395>>0x8,_0x379df8='po';var _0x24e0cd='shift',_0x197297='push',_0x59c1d4='‮';if(_0x44d395<_0x4e0fee){while(--_0x4e0fee){_0x6d2cae=_0x47dca4[_0x24e0cd]();if(_0x44d395===_0x4e0fee&&_0x59c1d4==='‮'&&_0x59c1d4['length']===0x1){_0x44d395=_0x6d2cae,_0x5f1629=_0x47dca4[_0x379df8+'p']();}else if(_0x44d395&&_0x5f1629['replace'](/[kEHdSTChlEEVPuV=]/g,'')===_0x44d395){_0x47dca4[_0x197297](_0x6d2cae);}}_0x47dca4[_0x197297](_0x47dca4[_0x24e0cd]());}return 0xdaf2e;};return _0x358c40(++_0x2e45a0,_0x2d0d38)>>_0x2e45a0^_0x2d0d38;}(_0x1acd,0x1d5,0x1d500),_0x1acd){_0xod7_=_0x1acd['length']^0x1d5;};function _0x27de(_0x4ab799,_0x2148e0){_0x4ab799=~~'0x'['concat'](_0x4ab799['slice'](0x1));var _0x38aa70=_0x1acd[_0x4ab799];if(_0x27de['HEabFd']===undefined&&'‮'['length']===0x1){(function(){var _0x48587b=function(){var _0x226fa7;try{_0x226fa7=Function('return\x20(function()\x20'+'{}.constructor(\x22return\x20this\x22)(\x20)'+');')();}catch(_0x302471){_0x226fa7=window;}return _0x226fa7;};var _0x2dcb25=_0x48587b();var _0x5d0b0e='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';_0x2dcb25['atob']||(_0x2dcb25['atob']=function(_0x41138d){var _0x37290e=String(_0x41138d)['replace'](/=+$/,'');for(var _0x1da2f9=0x0,_0x27e844,_0x496c4d,_0x55ec30=0x0,_0x46993b='';_0x496c4d=_0x37290e['charAt'](_0x55ec30++);~_0x496c4d&&(_0x27e844=_0x1da2f9%0x4?_0x27e844*0x40+_0x496c4d:_0x496c4d,_0x1da2f9++%0x4)?_0x46993b+=String['fromCharCode'](0xff&_0x27e844>>(-0x2*_0x1da2f9&0x6)):0x0){_0x496c4d=_0x5d0b0e['indexOf'](_0x496c4d);}return _0x46993b;});}());_0x27de['ciicrd']=function(_0x35e622){var _0x1ca022=atob(_0x35e622);var _0x460af0=[];for(var _0x27de2b=0x0,_0x1b5b31=_0x1ca022['length'];_0x27de2b<_0x1b5b31;_0x27de2b++){_0x460af0+='%'+('00'+_0x1ca022['charCodeAt'](_0x27de2b)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x460af0);};_0x27de['qeLOEi']={};_0x27de['HEabFd']=!![];}var _0x4e1a4f=_0x27de['qeLOEi'][_0x4ab799];if(_0x4e1a4f===undefined){_0x38aa70=_0x27de['ciicrd'](_0x38aa70);_0x27de['qeLOEi'][_0x4ab799]=_0x38aa70;}else{_0x38aa70=_0x4e1a4f;}return _0x38aa70;};function getShopOpenCardInfo(_0x2dfe13,_0x2a9c59){var _0x169e2b={'\x69\x71\x78\x59\x4f':function(_0x237960,_0x2865f7){return _0x237960===_0x2865f7;},'\x61\x54\x64\x7a\x65':_0x27de('‮0'),'\x6d\x54\x50\x79\x47':function(_0x5db734){return _0x5db734();},'\x78\x64\x6e\x42\x52':function(_0x27ef1f,_0x2696d1){return _0x27ef1f(_0x2696d1);},'\x52\x4a\x45\x53\x7a':_0x27de('‫1'),'\x6c\x76\x65\x76\x78':_0x27de('‫2'),'\x63\x58\x6a\x72\x70':_0x27de('‫3'),'\x69\x62\x48\x64\x71':_0x27de('‮4'),'\x65\x47\x47\x7a\x78':_0x27de('‫5')};let _0x4540b3={'\x75\x72\x6c':_0x27de('‮6')+_0x169e2b[_0x27de('‮7')](encodeURIComponent,JSON[_0x27de('‫8')](_0x2dfe13))+_0x27de('‮9'),'\x68\x65\x61\x64\x65\x72\x73':{'\x48\x6f\x73\x74':_0x169e2b[_0x27de('‮a')],'\x41\x63\x63\x65\x70\x74':_0x169e2b[_0x27de('‮b')],'\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e':_0x169e2b[_0x27de('‫c')],'\x43\x6f\x6f\x6b\x69\x65':cookie,'User-Agent':_0x27de('‫d')+$[_0x27de('‫e')]+_0x27de('‫f')+$[_0x27de('‫10')]+_0x27de('‫11'),'Accept-Language':_0x169e2b[_0x27de('‫12')],'\x52\x65\x66\x65\x72\x65\x72':_0x27de('‮13')+_0x2a9c59+_0x27de('‮14')+_0x169e2b[_0x27de('‮7')](encodeURIComponent,$[_0x27de('‫15')]),'Accept-Encoding':_0x169e2b[_0x27de('‮16')]}};return new Promise(_0x24d014=>{var _0x45d140={'\x4b\x72\x53\x57\x63':function(_0x564cc4,_0x316683){return _0x169e2b[_0x27de('‫17')](_0x564cc4,_0x316683);},'\x4c\x63\x4b\x6e\x79':_0x169e2b[_0x27de('‫18')],'\x54\x45\x49\x61\x6f':function(_0x32cebc){return _0x169e2b[_0x27de('‫19')](_0x32cebc);}};$[_0x27de('‫1a')](_0x4540b3,(_0x497df1,_0x18ad2f,_0x1d037c)=>{if(_0x45d140[_0x27de('‮1b')](_0x45d140[_0x27de('‮1c')],_0x45d140[_0x27de('‮1c')])){try{if(_0x497df1){console[_0x27de('‫1d')](_0x497df1);}else{res=JSON[_0x27de('‫1e')](_0x1d037c);if(res[_0x27de('‮1f')]){if(res[_0x27de('‮20')][_0x27de('‮21')]){$[_0x27de('‮22')]=res[_0x27de('‮20')][_0x27de('‮21')][0x0][_0x27de('‫23')][_0x27de('‮24')];}}}}catch(_0x487efd){console[_0x27de('‫1d')](_0x487efd);}finally{_0x45d140[_0x27de('‮25')](_0x24d014);}}else{console[_0x27de('‫1d')](_0x497df1);}});});}async function bindWithVender(_0x4bf9aa,_0x5a230c){var _0x5180ad={'\x4d\x59\x68\x4c\x43':function(_0x396660){return _0x396660();},'\x6d\x77\x78\x44\x6d':function(_0x4b2169,_0x405a0d){return _0x4b2169!==_0x405a0d;},'\x7a\x56\x69\x61\x6e':_0x27de('‫26'),'\x45\x41\x49\x42\x41':_0x27de('‫27'),'\x49\x6a\x73\x62\x4a':function(_0xcf4ea9,_0x3221b8){return _0xcf4ea9===_0x3221b8;},'\x55\x4b\x72\x68\x55':_0x27de('‫28'),'\x57\x6b\x62\x48\x4c':_0x27de('‫29'),'\x4c\x52\x48\x6a\x4c':_0x27de('‮2a'),'\x4f\x43\x43\x4e\x77':_0x27de('‫2b'),'\x57\x5a\x73\x59\x5a':_0x27de('‫2c'),'\x57\x73\x6b\x70\x78':_0x27de('‮2d'),'\x45\x64\x7a\x6d\x68':function(_0x148959,_0x176008,_0x319ba8){return _0x148959(_0x176008,_0x319ba8);},'\x50\x75\x57\x6e\x46':_0x27de('‮2e'),'\x47\x76\x6e\x52\x55':_0x27de('‫1'),'\x46\x56\x6a\x4b\x45':_0x27de('‫2'),'\x54\x6e\x62\x73\x4b':_0x27de('‫3'),'\x6a\x79\x46\x4f\x50':_0x27de('‮4'),'\x61\x4c\x7a\x6b\x57':function(_0x3768db,_0x1db8ba){return _0x3768db(_0x1db8ba);},'\x56\x6b\x6e\x6f\x74':_0x27de('‫5')};return h5st=await _0x5180ad[_0x27de('‮2f')](geth5st,_0x5180ad[_0x27de('‮30')],_0x4bf9aa),opt={'\x75\x72\x6c':_0x27de('‮31')+h5st,'\x68\x65\x61\x64\x65\x72\x73':{'\x48\x6f\x73\x74':_0x5180ad[_0x27de('‮32')],'\x41\x63\x63\x65\x70\x74':_0x5180ad[_0x27de('‫33')],'\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e':_0x5180ad[_0x27de('‮34')],'\x43\x6f\x6f\x6b\x69\x65':cookie,'User-Agent':_0x27de('‫d')+$[_0x27de('‫e')]+_0x27de('‫f')+$[_0x27de('‫10')]+_0x27de('‫11'),'Accept-Language':_0x5180ad[_0x27de('‫35')],'\x52\x65\x66\x65\x72\x65\x72':_0x27de('‮13')+_0x5a230c+_0x27de('‮36')+_0x5180ad[_0x27de('‮37')](encodeURIComponent,$[_0x27de('‫15')]),'Accept-Encoding':_0x5180ad[_0x27de('‫38')]}},new Promise(_0x2c2848=>{var _0x1f470d={'\x69\x50\x64\x65\x78':function(_0x4c0bea){return _0x5180ad[_0x27de('‫39')](_0x4c0bea);},'\x42\x77\x65\x53\x57':function(_0x240905,_0x2118e5){return _0x5180ad[_0x27de('‫3a')](_0x240905,_0x2118e5);},'\x79\x6e\x59\x71\x72':_0x5180ad[_0x27de('‫3b')],'\x70\x6b\x4f\x75\x73':_0x5180ad[_0x27de('‮3c')],'\x5a\x65\x59\x6e\x58':function(_0x2ff734,_0x50b6d9){return _0x5180ad[_0x27de('‮3d')](_0x2ff734,_0x50b6d9);},'\x69\x58\x4d\x4f\x79':_0x5180ad[_0x27de('‫3e')],'\x6d\x56\x77\x79\x58':function(_0x43cb7f,_0x5f0fa8){return _0x5180ad[_0x27de('‮3d')](_0x43cb7f,_0x5f0fa8);},'\x50\x62\x4f\x41\x42':_0x5180ad[_0x27de('‫3f')],'\x4f\x78\x6d\x55\x66':_0x5180ad[_0x27de('‫40')],'\x49\x62\x44\x6d\x51':_0x5180ad[_0x27de('‫41')],'\x62\x64\x67\x73\x4d':_0x5180ad[_0x27de('‫42')],'\x5a\x4b\x78\x4a\x4e':_0x5180ad[_0x27de('‮43')]};$[_0x27de('‫1a')](opt,(_0x311afb,_0x3b7aab,_0x4c2873)=>{var _0x53384e={'\x6d\x4d\x51\x6b\x76':function(_0x26e196){return _0x1f470d[_0x27de('‫44')](_0x26e196);}};try{if(_0x1f470d[_0x27de('‮45')](_0x1f470d[_0x27de('‫46')],_0x1f470d[_0x27de('‮47')])){if(_0x311afb){if(_0x1f470d[_0x27de('‫48')](_0x1f470d[_0x27de('‫49')],_0x1f470d[_0x27de('‫49')])){console[_0x27de('‫1d')](_0x311afb);}else{console[_0x27de('‫1d')](error);}}else{if(_0x1f470d[_0x27de('‮4a')](_0x1f470d[_0x27de('‫4b')],_0x1f470d[_0x27de('‮4c')])){_0x53384e[_0x27de('‮4d')](_0x2c2848);}else{res=JSON[_0x27de('‫1e')](_0x4c2873);if(res[_0x27de('‮1f')]){if(_0x1f470d[_0x27de('‮4a')](_0x1f470d[_0x27de('‫4e')],_0x1f470d[_0x27de('‫4e')])){console[_0x27de('‫1d')](res);$[_0x27de('‫4f')]=res[_0x27de('‮50')];}else{console[_0x27de('‫1d')](_0x311afb);}}}}}else{Host=process[_0x27de('‮51')][_0x27de('‫52')];}}catch(_0x317968){if(_0x1f470d[_0x27de('‮4a')](_0x1f470d[_0x27de('‮53')],_0x1f470d[_0x27de('‮53')])){console[_0x27de('‫1d')](_0x317968);}else{$[_0x27de('‮22')]=res[_0x27de('‮20')][_0x27de('‮21')][0x0][_0x27de('‫23')][_0x27de('‮24')];}}finally{if(_0x1f470d[_0x27de('‮45')](_0x1f470d[_0x27de('‫54')],_0x1f470d[_0x27de('‫54')])){_0x1f470d[_0x27de('‫44')](_0x2c2848);}else{_0x1f470d[_0x27de('‫44')](_0x2c2848);}}});});}function geth5st(_0x1c2dc4,_0x38bbf9){var _0xad3eae={'\x76\x59\x42\x64\x48':function(_0xb6682a,_0x1dbeb1){return _0xb6682a===_0x1dbeb1;},'\x42\x4d\x46\x6b\x79':_0x27de('‮55'),'\x69\x75\x7a\x6b\x51':function(_0x521e0c,_0x1ffbd9){return _0x521e0c!==_0x1ffbd9;},'\x67\x48\x77\x45\x7a':_0x27de('‮56'),'\x53\x65\x4c\x46\x71':_0x27de('‮57'),'\x45\x6e\x58\x7a\x59':function(_0x4fa54e,_0x1f1dc2){return _0x4fa54e===_0x1f1dc2;},'\x50\x7a\x78\x71\x48':_0x27de('‮58'),'\x4e\x54\x41\x51\x50':function(_0x3fd51b,_0x32a444){return _0x3fd51b(_0x32a444);},'\x6b\x45\x71\x7a\x71':_0x27de('‫59'),'\x6a\x56\x58\x70\x71':_0x27de('‫5a'),'\x41\x6d\x4e\x72\x49':_0x27de('‮5b'),'\x71\x69\x42\x77\x67':_0x27de('‫5c'),'\x6c\x59\x56\x78\x6b':function(_0x2a05e2,_0x15824){return _0x2a05e2*_0x15824;},'\x44\x66\x5a\x6f\x68':_0x27de('‫5d'),'\x58\x43\x7a\x6e\x76':function(_0x46d10b,_0x5b5da1){return _0x46d10b*_0x5b5da1;}};return new Promise(async _0x573221=>{var _0x1c0efb={'\x4a\x47\x49\x4a\x4a':function(_0x30195c,_0x3fe97e){return _0xad3eae[_0x27de('‮5e')](_0x30195c,_0x3fe97e);},'\x63\x4c\x75\x59\x57':_0xad3eae[_0x27de('‫5f')],'\x4a\x65\x6d\x76\x48':function(_0x41b061,_0x2c0980){return _0xad3eae[_0x27de('‫60')](_0x41b061,_0x2c0980);},'\x54\x53\x65\x61\x46':_0xad3eae[_0x27de('‫61')],'\x66\x57\x66\x4f\x54':_0xad3eae[_0x27de('‮62')],'\x7a\x4f\x48\x74\x48':function(_0x1029f8,_0x21337a){return _0xad3eae[_0x27de('‮63')](_0x1029f8,_0x21337a);},'\x54\x5a\x6e\x42\x6a':_0xad3eae[_0x27de('‫64')],'\x6b\x47\x41\x51\x44':function(_0x1b9d1f,_0x3ee921){return _0xad3eae[_0x27de('‫65')](_0x1b9d1f,_0x3ee921);}};let _0x23db17={'\x61\x70\x70\x49\x64':_0xad3eae[_0x27de('‫66')],'\x62\x6f\x64\x79':{'\x61\x70\x70\x69\x64':_0xad3eae[_0x27de('‫67')],'\x66\x75\x6e\x63\x74\x69\x6f\x6e\x49\x64':_0x1c2dc4,'\x62\x6f\x64\x79':JSON[_0x27de('‫8')](_0x38bbf9),'\x63\x6c\x69\x65\x6e\x74\x56\x65\x72\x73\x69\x6f\x6e':_0xad3eae[_0x27de('‫68')],'\x63\x6c\x69\x65\x6e\x74':'\x48\x35','\x61\x63\x74\x69\x76\x69\x74\x79\x49\x64':$[_0x27de('‮24')]},'\x63\x61\x6c\x6c\x62\x61\x63\x6b\x41\x6c\x6c':!![]};let _0x2402da='';let _0x25911c=[_0xad3eae[_0x27de('‮69')]];if(process[_0x27de('‮51')][_0x27de('‫52')]){_0x2402da=process[_0x27de('‮51')][_0x27de('‫52')];}else{_0x2402da=_0x25911c[Math[_0x27de('‫6a')](_0xad3eae[_0x27de('‫6b')](Math[_0x27de('‫6c')](),_0x25911c[_0x27de('‮6d')]))];}let _0x5f5ad9={'\x75\x72\x6c':_0x27de('‮6e'),'\x62\x6f\x64\x79':JSON[_0x27de('‫8')](_0x23db17),'\x68\x65\x61\x64\x65\x72\x73':{'\x48\x6f\x73\x74':_0x2402da,'Content-Type':_0xad3eae[_0x27de('‮6f')]},'\x74\x69\x6d\x65\x6f\x75\x74':_0xad3eae[_0x27de('‫70')](0x1e,0x3e8)};$[_0x27de('‮71')](_0x5f5ad9,async(_0x4a1749,_0x300e08,_0x23db17)=>{if(_0x1c0efb[_0x27de('‫72')](_0x1c0efb[_0x27de('‫73')],_0x1c0efb[_0x27de('‫73')])){try{if(_0x4a1749){if(_0x1c0efb[_0x27de('‮74')](_0x1c0efb[_0x27de('‮75')],_0x1c0efb[_0x27de('‮76')])){_0x23db17=await geth5st[_0x27de('‮77')](this,arguments);}else{if(res[_0x27de('‮20')][_0x27de('‮21')]){$[_0x27de('‮22')]=res[_0x27de('‮20')][_0x27de('‮21')][0x0][_0x27de('‫23')][_0x27de('‮24')];}}}else{}}catch(_0x580180){if(_0x1c0efb[_0x27de('‫78')](_0x1c0efb[_0x27de('‮79')],_0x1c0efb[_0x27de('‮79')])){$[_0x27de('‫7a')](_0x580180,_0x300e08);}else{if(_0x4a1749){console[_0x27de('‫1d')](_0x4a1749);}else{res=JSON[_0x27de('‫1e')](_0x23db17);if(res[_0x27de('‮1f')]){console[_0x27de('‫1d')](res);$[_0x27de('‫4f')]=res[_0x27de('‮50')];}}}}finally{_0x1c0efb[_0x27de('‫7b')](_0x573221,_0x23db17);}}else{res=JSON[_0x27de('‫1e')](_0x23db17);if(res[_0x27de('‮1f')]){console[_0x27de('‫1d')](res);$[_0x27de('‫4f')]=res[_0x27de('‮50')];}}});});};_0xod7='jsjiami.com.v6'; +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/m_jd_fav_shop_gift.js b/m_jd_fav_shop_gift.js new file mode 100644 index 0000000..55f52a3 --- /dev/null +++ b/m_jd_fav_shop_gift.js @@ -0,0 +1,140 @@ + +/* +2 10 7 6 * m_jd_fav_shop_gift.js + */ +let mode = __dirname.includes('magic') +const {Env} = mode ? require('./function/magic') : require('./function/magic') +const $ = new Env('M收藏有礼'); +$.favShopArgv = process.env.M_FAV_SHOP_ARGV + ? process.env.M_FAV_SHOP_ARGV + : ''; +if (mode) { + $.favShopArgv = '1000000307_1000000307' +} +let stop = false; +$.logic = async function () { + if (stop) { + return; + } + let argv = $?.favShopArgv?.split('_'); + $.shopId = argv?.[0]; + $.venderId = argv?.[1]; + if (!$.shopId || !$.venderId) { + $.log(`无效的参数${$.favShopArgv}`) + stop = true; + return + } + await $.wait(100, 500); + let actInfo = await QueryShopActive(); + if (actInfo?.iRet !== '0') { + $.putMsg(actInfo?.errMsg) + return + } + if (actInfo?.fan === 1) { + $.putMsg('已经收藏过啦'); + await DelShopFav() + return + } + let bean = actInfo?.gift?.filter(o => o.jingBean?.sendCount > 0)?.[0]; + if (!bean) { + $.putMsg('没有奖励') + //stop = true + return + } + $.activeId = bean.activeId || ''; + $.giftId = bean.giftId || ''; + $.beanCnt = bean?.jingBean?.sendCount || 0; + $.log($.activeId, $.giftId, $.beanCnt) + if (!$.activeId) { + $.putMsg('没找到活动信息') + stop = true + return + } + let addFav = await addfavgiftshop(); + if (addFav.iRet === "0") { + $.putMsg('收藏成功') + } + let gift = await GiveShopGift(); + $.log(JSON.stringify(gift)) + if (gift.retCode === 0) { + $.putMsg(`${$.beanCnt}豆`) + } else if (gift.retCode === 201) { + $.putMsg(`已领取过`) + } else { + $.putMsg(`领取失败`) + //stop = true + return + } + await DelShopFav() +}; +$.run({wait: [300, 1000],whitelist: ['1-5']}) +.catch(reason => $.log(reason)) + +async function GiveShopGift() { + let url = `https://wq.jd.com/fav_snsgift/GiveShopGift?venderId=${$.venderId}&activeId=${$.activeId}&giftId=${$.giftId}&_=${$.timestamp()}&sceneval=2&g_login_type=1&callback=jsonpCBKQ&g_tk=1292830178&g_ty=ls` + let headers = { + "Accept": "*/*", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-CN,zh-Hans;q=0.9", + "Connection": "keep-alive", + "Cookie": $.cookie, + "Host": "wq.jd.com", + "Referer": `https://shop.m.jd.com/?shopId=${$.shopId}`, + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 15_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.0 Mobile/15E148 Safari/604.1" + } + let {status, data} = await $.request(url, headers); + await $.wait(100, 500) + return $.handler(data); +} + +async function DelShopFav() { + let url = `https://wq.jd.com/fav/shop/DelShopFav?shopId=${$.shopId}&venderId=${$.venderId}&_=${$.timestamp()}&sceneval=2&g_login_type=1&callback=jsonpCBKM&g_tk=1292830178&g_ty=ls` + let headers = { + "Accept": "*/*", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-CN,zh-Hans;q=0.9", + "Connection": "keep-alive", + "Cookie": $.cookie, + "Host": "wq.jd.com", + "Referer": `https://shop.m.jd.com/?shopId=${$.shopId}`, + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 15_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.0 Mobile/15E148 Safari/604.1" + } + let {data} = await $.request(url, headers); + await $.wait(100, 500) + return $.handler(data); +} + +async function addfavgiftshop() { + let url = `https://wq.jd.com/fav_snsgift/addfavgiftshop?venderId=${$.venderId}&shareToken=&_=${$.timestamp()}&sceneval=2&g_login_type=1&callback=jsonpCBKO&g_tk=1292830178&g_ty=ls` + let headers = { + "Accept": "*/*", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-CN,zh-Hans;q=0.9", + "Connection": "keep-alive", + "Cookie": $.cookie, + "Host": "wq.jd.com", + "Referer": `https://shop.m.jd.com/?shopId=${$.shopId}`, + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 15_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.0 Mobile/15E148 Safari/604.1" + } + let {status, data} = await $.request(url, headers); + await $.wait(100, 500) + + return $.handler(data); +} + +async function QueryShopActive() { + let headers = { + "Accept": "*/*", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-CN,zh-Hans;q=0.9", + "Connection": "keep-alive", + "Cookie": $.cookie, + "Host": "wq.jd.com", + "Referer": `https://shop.m.jd.com/?shopId=${$.shopId}`, + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 15_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.0 Mobile/15E148 Safari/604.1" + } + let url = `https://wq.jd.com/fav_snsgift/QueryShopActive?venderId=${$.venderId}&_=${$.timestamp()}&sceneval=2&g_login_type=1&callback=jsonpCBKC&g_tk=1292830178&g_ty=ls` + let {status, data} = await $.request(url, headers); + await $.wait(100, 500) + return $.handler(data); +} \ No newline at end of file