This commit is contained in:
Faker 2022-04-06 15:02:38 +08:00
parent b88fd522e4
commit 2acf16aff7
14 changed files with 11174 additions and 473 deletions

BIN
.DS_Store vendored Normal file

Binary file not shown.

321
function/TS_USER_AGENTS.ts Normal file
View File

@ -0,0 +1,321 @@
import axios from "axios"
import {Md5} from "ts-md5"
import * as dotenv from "dotenv"
import {existsSync, readFileSync} from "fs"
import {sendNotify} from './sendNotify'
dotenv.config()
let fingerprint: string | number, token: string = '', enCryptMethodJD: any
const USER_AGENTS: Array<string> = [
"jdapp;android;10.0.2;10;network/wifi;Mozilla/5.0 (Linux; Android 10; ONEPLUS A5010 Build/QKQ1.191014.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045230 Mobile Safari/537.36",
"jdapp;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",
"jdapp;android;10.0.2;9;network/4g;Mozilla/5.0 (Linux; Android 9; Mi Note 3 Build/PKQ1.181007.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/045131 Mobile Safari/537.36",
"jdapp;android;10.0.2;10;network/wifi;Mozilla/5.0 (Linux; Android 10; GM1910 Build/QKQ1.190716.003; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045230 Mobile Safari/537.36",
"jdapp;android;10.0.2;9;network/wifi;Mozilla/5.0 (Linux; Android 9; 16T Build/PKQ1.190616.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/044942 Mobile Safari/537.36",
"jdapp;iPhone;10.0.2;13.6;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 13_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1",
"jdapp;iPhone;10.0.2;13.6;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 13_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1",
"jdapp;iPhone;10.0.2;13.5;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 13_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1",
"jdapp;iPhone;10.0.2;14.1;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1",
"jdapp;iPhone;10.0.2;13.3;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 13_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1",
"jdapp;iPhone;10.0.2;13.7;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 13_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1",
"jdapp;iPhone;10.0.2;14.1;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1",
"jdapp;iPhone;10.0.2;13.3;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 13_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1",
"jdapp;iPhone;10.0.2;13.4;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 13_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1",
"jdapp;iPhone;10.0.2;14.3;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1",
"jdapp;android;10.0.2;9;network/wifi;Mozilla/5.0 (Linux; Android 9; MI 6 Build/PKQ1.190118.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/044942 Mobile Safari/537.36",
"jdapp;android;10.0.2;11;network/wifi;Mozilla/5.0 (Linux; Android 11; Redmi K30 5G Build/RKQ1.200826.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045511 Mobile Safari/537.36",
"jdapp;iPhone;10.0.2;11.4;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 11_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15F79",
"jdapp;android;10.0.2;10;;network/wifi;Mozilla/5.0 (Linux; Android 10; M2006J10C Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045230 Mobile Safari/537.36",
"jdapp;android;10.0.2;10;network/wifi;Mozilla/5.0 (Linux; Android 10; M2006J10C Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045230 Mobile Safari/537.36",
"jdapp;android;10.0.2;10;network/wifi;Mozilla/5.0 (Linux; Android 10; ONEPLUS A6000 Build/QKQ1.190716.003; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045224 Mobile Safari/537.36",
"jdapp;android;10.0.2;9;network/wifi;Mozilla/5.0 (Linux; Android 9; MHA-AL00 Build/HUAWEIMHA-AL00; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/044942 Mobile Safari/537.36",
"jdapp;android;10.0.2;8.1.0;network/wifi;Mozilla/5.0 (Linux; Android 8.1.0; 16 X Build/OPM1.171019.026; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/044942 Mobile Safari/537.36",
"jdapp;android;10.0.2;8.0.0;network/wifi;Mozilla/5.0 (Linux; Android 8.0.0; HTC U-3w Build/OPR6.170623.013; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/044942 Mobile Safari/537.36",
"jdapp;iPhone;10.0.2;14.0.1;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_0_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1",
"jdapp;android;10.0.2;10;network/wifi;Mozilla/5.0 (Linux; Android 10; LYA-AL00 Build/HUAWEILYA-AL00L; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045230 Mobile Safari/537.36",
"jdapp;iPhone;10.0.2;14.2;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1",
"jdapp;iPhone;10.0.2;14.3;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1",
"jdapp;iPhone;10.0.2;14.2;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1",
"jdapp;android;10.0.2;8.1.0;network/wifi;Mozilla/5.0 (Linux; Android 8.1.0; MI 8 Build/OPM1.171019.026; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/045131 Mobile Safari/537.36",
"jdapp;android;10.0.2;10;network/wifi;Mozilla/5.0 (Linux; Android 10; Redmi K20 Pro Premium Edition Build/QKQ1.190825.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045227 Mobile Safari/537.36",
"jdapp;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",
"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",
"jdapp;android;10.0.2;11;network/wifi;Mozilla/5.0 (Linux; Android 11; Redmi K20 Pro Premium Edition Build/RKQ1.200826.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045513 Mobile Safari/537.36",
"jdapp;android;10.0.2;10;network/wifi;Mozilla/5.0 (Linux; Android 10; MI 8 Build/QKQ1.190828.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045227 Mobile Safari/537.36",
"jdapp;iPhone;10.0.2;14.1;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1",
]
function TotalBean(cookie: string) {
return {
cookie: cookie,
isLogin: true,
nickName: ''
}
}
function getRandomNumberByRange(start: number, end: number) {
return Math.floor(Math.random() * (end - start) + start)
}
let USER_AGENT = USER_AGENTS[getRandomNumberByRange(0, USER_AGENTS.length)]
async function getBeanShareCode(cookie: string) {
let {data}: any = await axios.post('https://api.m.jd.com/client.action',
`functionId=plantBeanIndex&body=${encodeURIComponent(
JSON.stringify({version: "9.0.0.1", "monitor_source": "plant_app_plant_index", "monitor_refer": ""})
)}&appid=ld&client=apple&area=5_274_49707_49973&build=167283&clientVersion=9.1.0`, {
headers: {
Cookie: cookie,
Host: "api.m.jd.com",
Accept: "*/*",
Connection: "keep-alive",
"User-Agent": USER_AGENT
}
})
if (data.data?.jwordShareInfo?.shareUrl)
return data.data.jwordShareInfo.shareUrl.split('Uuid=')![1]
else
return ''
}
async function getFarmShareCode(cookie: string) {
let {data}: any = await axios.post('https://api.m.jd.com/client.action?functionId=initForFarm', `body=${encodeURIComponent(JSON.stringify({"version": 4}))}&appid=wh5&clientVersion=9.1.0`, {
headers: {
"cookie": cookie,
"origin": "https://home.m.jd.com",
"referer": "https://home.m.jd.com/myJd/newhome.action",
"User-Agent": USER_AGENT,
"Content-Type": "application/x-www-form-urlencoded"
}
})
if (data.farmUserPro)
return data.farmUserPro.shareCode
else
return ''
}
async function requireConfig(check: boolean = false): Promise<string[]> {
let cookiesArr: string[] = []
const jdCookieNode = require('../jdCookie.js')
let keys: string[] = Object.keys(jdCookieNode)
for (let i = 0; i < keys.length; i++) {
let cookie = jdCookieNode[keys[i]]
if (!check) {
cookiesArr.push(cookie)
} else {
if (await checkCookie(cookie)) {
cookiesArr.push(cookie)
} else {
let username = decodeURIComponent(jdCookieNode[keys[i]].match(/pt_pin=([^;]*)/)![1])
console.log('Cookie失效', username)
await sendNotify('Cookie失效', '【京东账号】' + username)
}
}
}
console.log(`${cookiesArr.length}个京东账号\n`)
return cookiesArr
}
async function checkCookie(cookie) {
await wait(1000)
try {
let {data}: any = await axios.get(`https://api.m.jd.com/client.action?functionId=GetJDUserInfoUnion&appid=jd-cphdeveloper-m&body=${encodeURIComponent(JSON.stringify({"orgFlag": "JD_PinGou_New", "callSource": "mainorder", "channel": 4, "isHomewhite": 0, "sceneval": 2}))}&loginType=2&_=${Date.now()}&sceneval=2&g_login_type=1&callback=GetJDUserInfoUnion&g_ty=ls`, {
headers: {
'authority': 'api.m.jd.com',
'user-agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_1 like Mac OS X) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.0 Mobile/14E304 Safari/602.1',
'referer': 'https://home.m.jd.com/',
'cookie': cookie
}
})
data = JSON.parse(data.match(/GetJDUserInfoUnion\((.*)\)/)[1])
return data.retcode === '0';
} catch (e) {
return false
}
}
function wait(timeout: number) {
return new Promise(resolve => {
setTimeout(resolve, timeout)
})
}
async function requestAlgo(appId: number = 10032) {
fingerprint = generateFp()
return new Promise<void>(async resolve => {
let {data}: any = await axios.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': USER_AGENT,
'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'
},
})
if (data['status'] === 200) {
token = data.data.result.tk
let enCryptMethodJDString = data.data.result.algo
if (enCryptMethodJDString) enCryptMethodJD = new Function(`return ${enCryptMethodJDString}`)()
} else {
console.log(`fp: ${fingerprint}`)
console.log('request_algo 签名参数API请求失败:')
}
resolve()
})
}
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)
}
function getJxToken(cookie: string, phoneId: string = '') {
function generateStr(input: number) {
let src = 'abcdefghijklmnopqrstuvwxyz1234567890'
let res = ''
for (let i = 0; i < input; i++) {
res += src[Math.floor(src.length * Math.random())]
}
return res
}
if (!phoneId)
phoneId = generateStr(40)
let timestamp = Date.now().toString()
let nickname = cookie.match(/pt_pin=([^;]*)/)![1]
let jstoken = Md5.hashStr('' + decodeURIComponent(nickname) + timestamp + phoneId + 'tPOamqCuk9NLgVPAljUyIHcPRmKlVxDy')
return {
'strPgtimestamp': timestamp,
'strPhoneID': phoneId,
'strPgUUNum': jstoken
}
}
function randomString(e: number, word?: number) {
e = e || 32
let t = word === 26 ? "012345678abcdefghijklmnopqrstuvwxyz" : "0123456789abcdef", a = t.length, n = ""
for (let i = 0; i < e; i++)
n += t.charAt(Math.floor(Math.random() * a))
return n
}
function o2s(arr: object, title: string = '') {
title ? console.log(title, JSON.stringify(arr)) : console.log(JSON.stringify(arr))
}
function randomNumString(e: number) {
e = e || 32
let t = '0123456789', a = t.length, n = ""
for (let i = 0; i < e; i++)
n += t.charAt(Math.floor(Math.random() * a))
return n
}
function randomWord(n: number = 1) {
let t = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', a = t.length
let rnd: string = ''
for (let i = 0; i < n; i++) {
rnd += t.charAt(Math.floor(Math.random() * a))
}
return rnd
}
function obj2str(obj: object) {
return JSON.stringify(obj)
}
async function getDevice() {
let {data} = await axios.get('https://betahub.cn/api/apple/devices/iPhone', {
headers: {
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36'
}
})
data = data[getRandomNumberByRange(0, 16)]
return data.identifier
}
async function getVersion(device: string) {
let {data} = await axios.get(`https://betahub.cn/api/apple/firmwares/${device}`, {
headers: {
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36'
}
})
data = data[getRandomNumberByRange(0, data.length)]
return data.firmware_info.version
}
async function jdpingou() {
let device: string, version: string;
device = await getDevice();
version = await getVersion(device);
return `jdpingou;iPhone;5.19.0;${version};${randomString(40)};network/wifi;model/${device};appBuild/100833;ADID/;supportApplePay/1;hasUPPay/0;pushNoticeIsOpen/0;hasOCPay/0;supportBestPay/0;session/${getRandomNumberByRange(10, 90)};pap/JA2019_3111789;brand/apple;supportJDSHWK/1;Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148`
}
function get(url: string, prarms?: string, headers?: any) {
return axios.get(url, {
params: prarms,
headers: headers
})
.then(res => {
if (typeof res.data === 'string' && res.data.match(/^jsonpCBK/)) {
return JSON.parse(res.data.match(/jsonpCBK.?\(([\w\W]*)\);/)[1])
} else {
return res.data
}
})
.catch(err => {
console.log(err?.response?.status, err?.response?.statusText)
});
}
function post(url: string, prarms?: string | object, headers?: any): Promise<any> {
return axios.post(url, prarms, {
headers: headers
})
.then(res => res.data)
.catch(err => {
console.log(err?.response?.status, err?.response?.statusText)
});
}
export default USER_AGENT
export {
TotalBean,
getBeanShareCode,
getFarmShareCode,
requireConfig,
wait,
getRandomNumberByRange,
requestAlgo,
getJxToken,
randomString,
o2s,
randomNumString,
getShareCodePool,
randomWord,
obj2str,
jdpingou,
get,
post
}

7681
function/jinli_log.ts Normal file

File diff suppressed because it is too large Load Diff

View File

@ -6,10 +6,17 @@ const { readFile } = require('fs/promises');
const path = require('path'); const path = require('path');
const qlDir = '/ql'; const qlDir = '/ql';
const authFile = path.join(qlDir, 'config/auth.json'); const fs = require('fs');
let Fileexists = fs.existsSync('/ql/data/config/auth.json');
let authFile="";
if (Fileexists)
authFile="/ql/data/config/auth.json"
else
authFile="/ql/config/auth.json"
//const authFile = path.join(qlDir, 'config/auth.json');
const api = got.extend({ const api = got.extend({
prefixUrl: 'http://localhost:5600', prefixUrl: 'http://127.0.0.1:5600',
retry: { limit: 0 }, retry: { limit: 0 },
}); });
@ -80,6 +87,27 @@ module.exports.updateEnv = async (cookie, eid, remarks) => {
return body; return body;
}; };
module.exports.updateEnv11 = async (cookie, eid, remarks) => {
const token = await getToken();
const body = await api({
method: 'put',
url: 'api/envs',
params: { t: Date.now() },
json: {
name: 'JD_COOKIE',
value: cookie,
id: eid,
remarks,
},
headers: {
Accept: 'application/json',
authorization: `Bearer ${token}`,
'Content-Type': 'application/json;charset=UTF-8',
},
}).json();
return body;
};
module.exports.DisableCk = async (eid) => { module.exports.DisableCk = async (eid) => {
const token = await getToken(); const token = await getToken();
const body = await api({ const body = await api({
@ -112,21 +140,48 @@ module.exports.EnableCk = async (eid) => {
return body; return body;
}; };
module.exports.getstatus = async (eid) => { module.exports.getstatus = async(eid) => {
const envs = await this.getEnvs(); const envs = await this.getEnvs();
var tempid = 0;
for (let i = 0; i < envs.length; i++) { for (let i = 0; i < envs.length; i++) {
if(envs[i]._id==eid){ tempid = 0;
if (envs[i]._id) {
tempid = envs[i]._id;
}
if (envs[i].id) {
tempid = envs[i].id;
}
if (tempid == eid) {
return envs[i].status; return envs[i].status;
} }
} }
return 99; return 99;
}; };
module.exports.getEnvById = async (eid) => { module.exports.getEnvById = async(eid) => {
const envs = await this.getEnvs();
var tempid = 0;
for (let i = 0; i < envs.length; i++) {
tempid = 0;
if (envs[i]._id) {
tempid = envs[i]._id;
}
if (envs[i].id) {
tempid = envs[i].id;
}
if (tempid == eid) {
return envs[i].value;
}
}
return "";
};
module.exports.getEnvByPtPin = async (Ptpin) => {
const envs = await this.getEnvs(); const envs = await this.getEnvs();
for (let i = 0; i < envs.length; i++) { for (let i = 0; i < envs.length; i++) {
if(envs[i]._id==eid){ var tempptpin = decodeURIComponent(envs[i].value.match(/pt_pin=([^; ]+)(?=;?)/) && envs[i].value.match(/pt_pin=([^; ]+)(?=;?)/)[1]);
return envs[i].value; if(tempptpin==Ptpin){
return envs[i];
} }
} }
return ""; return "";

File diff suppressed because it is too large Load Diff

828
jd_carnivalcity.js Normal file

File diff suppressed because one or more lines are too long

373
jd_carnivalcity_help.js Normal file

File diff suppressed because one or more lines are too long

262
jd_cash_wx.js Normal file

File diff suppressed because one or more lines are too long

36
jd_fan.js Normal file

File diff suppressed because one or more lines are too long

View File

@ -1,38 +1,33 @@
/** /**
* - * const $ = new Env('京东-锦鲤红包');
* *
* cron: 1 0,6,18 * * * * cron: 1 0,18 * * *
* CK1 HW.ts -> * HW大佬7
* CK2n -> HW.ts
*
* https://github.com/JDHelloWorld/jd_scripts
*
*/ */
import axios from 'axios'; import axios from 'axios';
import {logs} from './utils/jinli_log'; import {logs} from './function/jinli_log';
import {sendNotify} from './sendNotify'; import {getRandomNumberByRange, getshareCodeHW, o2s, randomString, requireConfig, wait} from "./function/TS_USER_AGENTS";
import {getRandomNumberByRange, getshareCodeHW, o2s, randomString, requireConfig, wait} from "./TS_USER_AGENTS";
let cookie: string = '', cookiesArr: string[] = [], res: any = '', UserName: string, UA: string = '' let cookie: string = '', res: any = '', UserName: string, UA: string = ''
let shareCodesSelf: string[] = [], shareCodes: string[] = [], shareCodesHW: string[] = [], fullCode: string[] = [] let shareCodesSelf: string[] = [], shareCodes: string[] = [], fullCode: string[] = []
let min: number[] = [0.02, 0.12, 0.3, 0.6, 0.7, 0.8, 1, 2], log: string = '' let min: number[] = [0.02, 0.12, 0.3, 0.6, 0.7, 0.8, 1, 2], log: string = '', logIndex: number = 10
!(async () => { !(async () => {
cookiesArr = await requireConfig(false); let cookiesArr: string[] = await requireConfig(false);
await join()
await getShareCodeSelf()
await help()
await open()
})()
async function getShareCodeSelf() {
for (let [index, value] of cookiesArr.entries()) { for (let [index, value] of cookiesArr.entries()) {
if(index < 7){
try { try {
cookie = value; cookie = value;
UserName = decodeURIComponent(cookie.match(/pt_pin=([^;]*)/)![1]) UserName = decodeURIComponent(cookie.match(/pt_pin=([^;]*)/)![1])
console.log(`\n开始【京东账号${index + 1}${UserName}\n`); console.log(`\n开始【京东账号${index + 1}${UserName}\n`);
UA = `jdltapp;iPhone;3.1.0;${Math.ceil(Math.random() * 4 + 10)}.${Math.ceil(Math.random() * 4)};${randomString(40)}` UA = `jdltapp;iPhone;3.1.0;${Math.ceil(Math.random() * 4 + 10)}.${Math.ceil(Math.random() * 4)};${randomString(40)}`
log = logs[getRandomNumberByRange(0, logs.length - 1)]
let random = log.match(/"random":"(\d+)"/)[1], log1 = log.match(/"log":"(.*)"/)[1]
res = await api('h5launch', {"followShop": 0, "random": random, "log": log1, "sceneid": "JLHBhPageh5"})
console.log('活动初始化:', res.data.result.statusDesc)
await wait(1000)
res = await api('h5activityIndex', {"isjdapp": 1}) res = await api('h5activityIndex', {"isjdapp": 1})
console.log('红包ID', res.data.result.redpacketInfo.id) console.log('红包ID', res.data.result.redpacketInfo.id)
shareCodesSelf.push(res.data.result.redpacketInfo.id) shareCodesSelf.push(res.data.result.redpacketInfo.id)
@ -41,30 +36,51 @@ async function getShareCodeSelf() {
console.log(e) console.log(e)
} }
} }
console.log('内部助力:', shareCodesSelf) }
}
async function join() { await wait(2000)
console.log('内部助力:', shareCodesSelf)
for (let [index, value] of cookiesArr.entries()) { for (let [index, value] of cookiesArr.entries()) {
try { try {
cookie = value; cookie = value;
UserName = decodeURIComponent(cookie.match(/pt_pin=([^;]*)/)![1]) UserName = decodeURIComponent(cookie.match(/pt_pin=([^;]*)/)![1])
console.log(`\n开始【京东账号${index + 1}${UserName}\n`); shareCodes = Array.from(new Set([...shareCodesSelf]))
for (let code of shareCodes) {
if (!fullCode.includes(code)) {
UA = `jdltapp;iPhone;3.1.0;${Math.ceil(Math.random() * 4 + 10)}.${Math.ceil(Math.random() * 4)};${randomString(40)}` UA = `jdltapp;iPhone;3.1.0;${Math.ceil(Math.random() * 4 + 10)}.${Math.ceil(Math.random() * 4)};${randomString(40)}`
log = logs[getRandomNumberByRange(0, logs.length - 1)] log = logs[getRandomNumberByRange(0, logs.length - 1)]
let random = log.match(/"random":"(\d+)"/)[1], log1 = log.match(/"log":"(.*)"/)[1] let random = log.match(/"random":"(\d+)"/)[1], log1 = log.match(/"log":"(.*)"/)[1]
res = await api('h5launch', {"followShop": 0, "random": random, "log": log1, "sceneid": "JLHBhPageh5"}) console.log(`账号${index + 1} ${UserName} 去助力 ${code} ${shareCodesSelf.includes(code) ? '*内部*' : ''}`)
console.log('活动初始化:', res.data.result.statusDesc)
res = await api('jinli_h5assist', {"redPacketId": code, "followShop": 0, "random": random, "log": log1, "sceneid": "JLHBhPageh5"})
o2s(res, 'jinli_h5assist')
if (res.data.result.status === 0) {
console.log('助力成功:', parseFloat(res.data.result.assistReward.discount))
await wait(1000) await wait(1000)
break
} else if (res.data.result.status === 3) {
console.log('今日助力次数已满')
break
} else {
console.log('助力结果:', res.data.result.statusDesc)
if (res.data.result.statusDesc === '啊偶TA的助力已满开启自己的红包活动吧~') {
fullCode.push(code)
}
}
await wait(1000)
} else {
console.log(`Code ${code} 已被助满`)
}
}
} catch (e) { } catch (e) {
console.log(e) console.log(e)
} }
} }
}
async function open() {
for (let [index, value] of cookiesArr.entries()) { for (let [index, value] of cookiesArr.entries()) {
if(index < 7){
try { try {
cookie = value cookie = value
UserName = decodeURIComponent(cookie.match(/pt_pin=([^;]*)/)![1]) UserName = decodeURIComponent(cookie.match(/pt_pin=([^;]*)/)![1])
@ -125,9 +141,6 @@ async function open() {
for (let t of res.data.result.redpacketConfigFillRewardInfo) { for (let t of res.data.result.redpacketConfigFillRewardInfo) {
if (t.packetStatus === 2) { if (t.packetStatus === 2) {
console.log(`红包${j}已拆过,获得`, t.packetAmount) console.log(`红包${j}已拆过,获得`, t.packetAmount)
if (!min.includes(t.packetAmount)) {
await sendNotify('锦鲤红包', `账号${index + 1} ${UserName}\n${t.packetAmount}`)
}
} else if (t.packetStatus === 1) { } else if (t.packetStatus === 1) {
console.log(`红包${j}可拆`) console.log(`红包${j}可拆`)
res = await api('h5receiveRedpacketAll', {"random": random, "log": log1, "sceneid": "JLHBhPageh5"}) res = await api('h5receiveRedpacketAll', {"random": random, "log": log1, "sceneid": "JLHBhPageh5"})
@ -138,61 +151,15 @@ async function open() {
} }
j++ j++
} }
} catch (e) { }
catch (e) {
console.log(e) console.log(e)
} }
await wait(1000) await wait(1000)
} }
}
async function help() {
for (let [index, value] of cookiesArr.entries()) {
try {
cookie = value;
UserName = decodeURIComponent(cookie.match(/pt_pin=([^;]*)/)![1])
if (shareCodesHW.length === 0) {
shareCodesHW = await getshareCodeHW('jlhb')
} }
// 2 4 9 12 })()
if (index === 0 || cookiesArr.length === 2) { // 红包1需2个助力
shareCodes = Array.from(new Set([...shareCodesHW, ...shareCodesSelf]))
} else {
shareCodes = Array.from(new Set([...shareCodesSelf, ...shareCodesHW]))
}
if (cookiesArr.length > 5 && cookiesArr.length < 8 && index > 4) { // 红包3需要7个助力
shareCodes = Array.from(new Set([...shareCodesHW, ...shareCodesSelf]))
}
for (let code of shareCodes) {
if (!fullCode.includes(code)) {
UA = `jdltapp;iPhone;3.1.0;${Math.ceil(Math.random() * 4 + 10)}.${Math.ceil(Math.random() * 4)};${randomString(40)}`
log = logs[getRandomNumberByRange(0, logs.length - 1)]
let random = log.match(/"random":"(\d+)"/)[1], log1 = log.match(/"log":"(.*)"/)[1]
console.log(`账号${index + 1} ${UserName} 去助力 ${code} ${shareCodesSelf.includes(code) ? '*内部*' : ''}`)
res = await api('jinli_h5assist', {"redPacketId": code, "followShop": 0, "random": random, "log": log1, "sceneid": "JLHBhPageh5"})
o2s(res, 'jinli_h5assist')
if (res.data.result.status === 0) {
console.log('助力成功:', parseFloat(res.data.result.assistReward.discount))
await wait(1000)
break
} else if (res.data.result.status === 3) {
console.log('今日助力次数已满')
break
} else {
console.log('助力结果:', res.data.result.statusDesc)
if (res.data.result.statusDesc === '啊偶TA的助力已满开启自己的红包活动吧~') {
fullCode.push(code)
}
}
await wait(1000)
}
}
} catch (e) {
console.log(e)
}
}
}
async function api(fn: string, body: object, retry: number = 0) { async function api(fn: string, body: object, retry: number = 0) {
let {data} = await axios.post(`https://api.m.jd.com/api?appid=jinlihongbao&functionId=${fn}&loginType=2&client=jinlihongbao&clientVersion=10.2.4&osVersion=AndroidOS&d_brand=Xiaomi&d_model=Xiaomi`, `body=${encodeURIComponent(JSON.stringify(body))}`, { let {data} = await axios.post(`https://api.m.jd.com/api?appid=jinlihongbao&functionId=${fn}&loginType=2&client=jinlihongbao&clientVersion=10.2.4&osVersion=AndroidOS&d_brand=Xiaomi&d_model=Xiaomi`, `body=${encodeURIComponent(JSON.stringify(body))}`, {
@ -205,14 +172,14 @@ async function api(fn: string, body: object, retry: number = 0) {
"User-Agent": UA, "User-Agent": UA,
} }
}) })
await wait(2000) await wait(5000)
if (data.rtn_code === 403 && retry < 3) { if (data.rtn_code === 403 && retry < 3) {
console.log('retry...') console.log('retry...')
await wait(1000) await wait(1000)
log = logs[getRandomNumberByRange(0, logs.length - 1)] log = logs[getRandomNumberByRange(0, logs.length - 1)]
body['random'] = log.match(/"random":"(\d+)"/)[1] body['random'] = log.match(/"random":"(\d+)"/)[1]
body['log'] = log.match(/"log":"(.*)"/)[1] body['log'] = log.match(/"log":"(.*)"/)[1]
await wait(3000) await wait(5000)
await api(fn, body, ++retry) await api(fn, body, ++retry)
} }
return data return data

View File

@ -1,6 +1,6 @@
/* /*
种豆得豆 脚本更新地址https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_plantBean.js 种豆得豆 脚本更新地址jd_plantBean.js
更新时间2022-03-19 更新时间2021-08-20
活动入口京东APP我的-更多工具-种豆得豆 活动入口京东APP我的-更多工具-种豆得豆
已支持IOS京东多账号,云端多京东账号 已支持IOS京东多账号,云端多京东账号
脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js 脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js
@ -10,20 +10,20 @@
=====================================Quantumult X================================= =====================================Quantumult X=================================
[task_local] [task_local]
1 7-21/2 * * * https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_plantBean.js, tag=种豆得豆, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jdzd.png, enabled=true 1 7-21/2 * * * https://raw.githubusercontent.com/KingRan/JDJB/main/jd_plantBean.js, tag=种豆得豆, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jdzd.png, enabled=true
=====================================Loon================================ =====================================Loon================================
[Script] [Script]
cron "1 7-21/2 * * *" script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_plantBean.js,tag=京东种豆得豆 cron "1 7-21/2 * * *" script-path=https://raw.githubusercontent.com/KingRan/JDJB/main/jd_plantBean.js,tag=京东种豆得豆
======================================Surge========================== ======================================Surge==========================
京东种豆得豆 = type=cron,cronexp="1 7-21/2 * * *",wake-system=1,timeout=3600,script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_plantBean.js 京东种豆得豆 = type=cron,cronexp="1 7-21/2 * * *",wake-system=1,timeout=3600,script-path=https://raw.githubusercontent.com/KingRan/JDJB/main/jd_plantBean.js
====================================小火箭============================= ====================================小火箭=============================
京东种豆得豆 = type=cron,script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_plantBean.js, cronexpr="1 7-21/2 * * *", timeout=3600, enable=true 京东种豆得豆 = type=cron,script-path=https://raw.githubusercontent.com/KingRan/JDJB/main/jd_plantBean.js, cronexpr="1 7-21/2 * * *", timeout=3600, enable=true
*/ */
const $ = new Env('种豆得豆互助版'); const $ = new Env('种豆得豆');
//Node.js用户请在jdCookie.js处填写京东ck; //Node.js用户请在jdCookie.js处填写京东ck;
//ios等软件用户直接用NobyDa的jd cookie //ios等软件用户直接用NobyDa的jd cookie
let jdNotify = true;//是否开启静默运行。默认true开启 let jdNotify = true;//是否开启静默运行。默认true开启
@ -43,20 +43,8 @@ let randomCount = $.isNode() ? 20 : 5;
let num; let num;
let llerror=false; let llerror=false;
$.newShareCode = []; $.newShareCode = [];
let NowHour = new Date().getHours(); let NowHour = new Date().getHours();
let llhelp=true; let lnrun = 0;
if ($.isNode() && process.env.CC_NOHELPAFTER8) {
console.log(NowHour);
if (process.env.CC_NOHELPAFTER8=="true"){
if (NowHour>8){
llhelp=false;
console.log(`现在是9点后时段不启用互助....`);
}
}
}
!(async () => { !(async () => {
await requireConfig(); await requireConfig();
if (!cookiesArr[0]) { if (!cookiesArr[0]) {
@ -83,19 +71,14 @@ if ($.isNode() && process.env.CC_NOHELPAFTER8) {
message = ''; message = '';
subTitle = ''; subTitle = '';
option = {}; option = {};
lnrun++;
await jdPlantBean(); await jdPlantBean();
await showMsg(); if(lnrun == 3){
} console.log(`\n【访问接口次数达到3次休息一分钟.....】\n`);
} await $.wait(60*1000);
if(llhelp){ lnrun = 0;
for (let j = 0; j < cookiesArr.length; j++) {
if (cookiesArr[j]) {
cookie = cookiesArr[j];
$.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1])
$.index = j + 1;
//await shareCodesFormat();
await doHelp()
} }
//await showMsg();
} }
} }
if ($.isNode() && allMessage) { if ($.isNode() && allMessage) {
@ -111,33 +94,8 @@ async function jdPlantBean() {
try { try {
console.log(`获取任务及基本信息`) console.log(`获取任务及基本信息`)
await plantBeanIndex(); await plantBeanIndex();
if ($.plantBeanIndexResult.errorCode === 'PB101') { if(llerror)
console.log(`\n活动太火爆了,还是去买买买吧!\n`) return;
return
}
if ($.plantBeanIndexResult.errorCode) {
console.log(`获取任务及基本信息出错10秒后重试\n`)
await $.wait(10000);
await plantBeanIndex();
if ($.plantBeanIndexResult.errorCode === 'PB101') {
console.log(`\n活动太火爆了,还是去买买买吧!\n`)
return
}
}
if ($.plantBeanIndexResult.errorCode) {
console.log(`获取任务及基本信息出错30秒后重试\n`)
await $.wait(30000);
await plantBeanIndex();
if ($.plantBeanIndexResult.errorCode === 'PB101') {
console.log(`\n活动太火爆了,还是去买买买吧!\n`)
return
}
}
if ($.plantBeanIndexResult.errorCode) {
console.log(`获取任务及基本信息失败,活动异常,换个时间再试试吧....`)
console.log("错误代码;"+$.plantBeanIndexResult.errorCode)
return
}
for (let i = 0; i < $.plantBeanIndexResult.data.roundList.length; i++) { for (let i = 0; i < $.plantBeanIndexResult.data.roundList.length; i++) {
if ($.plantBeanIndexResult.data.roundList[i].roundState === "2") { if ($.plantBeanIndexResult.data.roundList[i].roundState === "2") {
num = i num = i
@ -159,21 +117,29 @@ async function jdPlantBean() {
subTitle = `【京东昵称】${$.plantBeanIndexResult.data.plantUserInfo.plantNickName}`; subTitle = `【京东昵称】${$.plantBeanIndexResult.data.plantUserInfo.plantNickName}`;
message += `【上期时间】${roundList[num - 1].dateDesc.replace('上期 ', '')}\n`; message += `【上期时间】${roundList[num - 1].dateDesc.replace('上期 ', '')}\n`;
message += `【上期成长值】${roundList[num - 1].growth}\n`; message += `【上期成长值】${roundList[num - 1].growth}\n`;
await $.wait(1000);
await receiveNutrients();//定时领取营养液 await receiveNutrients();//定时领取营养液
await $.wait(2000);
await doTask();//做日常任务 await doTask();//做日常任务
await $.wait(5000);
// await doEgg(); // await doEgg();
await stealFriendWater(); await stealFriendWater();
await $.wait(2000);
await doCultureBean(); await doCultureBean();
await $.wait(1000);
await doGetReward(); await doGetReward();
await $.wait(1000);
await showTaskProcess(); await showTaskProcess();
await $.wait(1000);
await plantShareSupportList(); await plantShareSupportList();
await $.wait(1000);
} else { } else {
console.log(`种豆得豆-初始失败: ${JSON.stringify($.plantBeanIndexResult)}`); console.log(`种豆得豆-初始失败: ${JSON.stringify($.plantBeanIndexResult)}`);
} }
} catch (e) { } catch (e) {
$.logErr(e); $.logErr(e);
const errMsg = `京东账号${$.index} ${$.nickName || $.UserName}\n任务执行异常,请检查执行日志 ‼️‼️`; const errMsg = `京东账号${$.index} ${$.nickName || $.UserName}\n任务执行异常,请检查执行日志 ‼️‼️`;
if ($.isNode()) await notify.sendNotify(`${$.name}`, errMsg); // if ($.isNode()) await notify.sendNotify(`${$.name}`, errMsg);
$.msg($.name, '', `${errMsg}`) $.msg($.name, '', `${errMsg}`)
} }
} }
@ -209,6 +175,8 @@ async function doGetReward() {
} }
async function doCultureBean() { async function doCultureBean() {
await plantBeanIndex(); await plantBeanIndex();
if(llerror)
return;
if ($.plantBeanIndexResult && $.plantBeanIndexResult.code === '0') { if ($.plantBeanIndexResult && $.plantBeanIndexResult.code === '0') {
const plantBeanRound = $.plantBeanIndexResult.data.roundList[num] const plantBeanRound = $.plantBeanIndexResult.data.roundList[num]
if (plantBeanRound.roundState === '2') { if (plantBeanRound.roundState === '2') {
@ -296,6 +264,7 @@ async function doTask() {
console.log(`\n开始做 ${item.taskName}任务`); console.log(`\n开始做 ${item.taskName}任务`);
// $.receiveNutrientsTaskRes = await receiveNutrientsTask(item.taskType); // $.receiveNutrientsTaskRes = await receiveNutrientsTask(item.taskType);
await receiveNutrientsTask(item.taskType); await receiveNutrientsTask(item.taskType);
await $.wait(3000);
console.log(`${item.taskName}任务结果:${JSON.stringify($.receiveNutrientsTaskRes)}\n`); console.log(`${item.taskName}任务结果:${JSON.stringify($.receiveNutrientsTaskRes)}\n`);
} }
if (item.taskType === 3) { if (item.taskType === 3) {
@ -307,23 +276,24 @@ async function doTask() {
} }
await shopTaskList(); await shopTaskList();
const { data } = $.shopTaskListRes; const { data } = $.shopTaskListRes;
let goodShopListARR = [],moreShopListARR = [], shopList = []; let goodShopListARR = [], moreShopListARR = [], shopList = [];
if (!data.goodShopList) {
data.goodShopList = [];
}
if (!data.moreShopList) {
data.moreShopList = [];
}
const { goodShopList, moreShopList } = data; const { goodShopList, moreShopList } = data;
if (goodShopList) {
for (let i of goodShopList) { for (let i of goodShopList) {
if (i.taskState === '2') { if (i.taskState === '2') {
goodShopListARR.push(i); goodShopListARR.push(i);
} }
} }
}
if (moreShopList) {
for (let j of moreShopList) { for (let j of moreShopList) {
if (j.taskState === '2') { if (j.taskState === '2') {
moreShopListARR.push(j); moreShopListARR.push(j);
} }
} }
}
shopList = goodShopListARR.concat(moreShopListARR); shopList = goodShopListARR.concat(moreShopListARR);
for (let shop of shopList) { for (let shop of shopList) {
const { shopId, shopTaskId } = shop; const { shopId, shopTaskId } = shop;
@ -336,7 +306,7 @@ async function doTask() {
console.log(`shopRes结果:${JSON.stringify(shopRes)}`); console.log(`shopRes结果:${JSON.stringify(shopRes)}`);
if (shopRes && shopRes.code === '0') { if (shopRes && shopRes.code === '0') {
if (shopRes.data && shopRes.data.nutrState && shopRes.data.nutrState === '1') { if (shopRes.data && shopRes.data.nutrState && shopRes.data.nutrState === '1') {
unFinishedShopNum--; unFinishedShopNum --;
} }
} }
if (unFinishedShopNum <= 0) { if (unFinishedShopNum <= 0) {
@ -437,6 +407,8 @@ async function doTask() {
function showTaskProcess() { function showTaskProcess() {
return new Promise(async resolve => { return new Promise(async resolve => {
await plantBeanIndex(); await plantBeanIndex();
if(llerror)
return;
$.taskList = $.plantBeanIndexResult.data.taskList; $.taskList = $.plantBeanIndexResult.data.taskList;
if ($.taskList && $.taskList.length > 0) { if ($.taskList && $.taskList.length > 0) {
console.log(" 任务 进度"); console.log(" 任务 进度");
@ -447,42 +419,6 @@ function showTaskProcess() {
resolve() resolve()
}) })
} }
//助力好友
async function doHelp() {
console.log(`开始账号内互助`);
$.newShareCode = [...(jdPlantBeanShareArr || [])]
for (let plantUuid of $.newShareCode) {
console.log(`${$.UserName}开始助力: ${plantUuid}`);
if (!plantUuid) continue;
if (plantUuid === $.myPlantUuid) {
console.log(`\n跳过自己的plantUuid\n`)
continue
}
await helpShare(plantUuid);
if ($.helpResult && $.helpResult.code === '0') {
// console.log(`助力好友结果: ${JSON.stringify($.helpResult.data.helpShareRes)}`);
if ($.helpResult.data.helpShareRes) {
if ($.helpResult.data.helpShareRes.state === '1') {
console.log(`助力好友${plantUuid}成功`)
console.log(`${$.helpResult.data.helpShareRes.promptText}\n`);
} else if ($.helpResult.data.helpShareRes.state === '2') {
console.log('您今日助力的机会已耗尽,已不能再帮助好友助力了\n');
break;
} else if ($.helpResult.data.helpShareRes.state === '3') {
console.log('该好友今日已满9人助力/20瓶营养液,明天再来为Ta助力吧\n')
} else if ($.helpResult.data.helpShareRes.state === '4') {
console.log(`${$.helpResult.data.helpShareRes.promptText}\n`)
} else {
console.log(`助力其他情况:${JSON.stringify($.helpResult.data.helpShareRes)}`);
}
}
} else {
console.log(`助力好友失败: ${JSON.stringify($.helpResult)}`);
}
}
}
function showMsg() { function showMsg() {
$.log(`\n${message}\n`); $.log(`\n${message}\n`);
jdNotify = $.getdata('jdPlantBeanNotify') ? $.getdata('jdPlantBeanNotify') : jdNotify; jdNotify = $.getdata('jdPlantBeanNotify') ? $.getdata('jdPlantBeanNotify') : jdNotify;
@ -592,24 +528,39 @@ async function helpShare(plantUuid) {
console.log(`助力结果的code:${$.helpResult && $.helpResult.code}`); console.log(`助力结果的code:${$.helpResult && $.helpResult.code}`);
} }
async function plantBeanIndex() { async function plantBeanIndex() {
$.plantBeanIndexResult = await request('plantBeanIndex');//plantBeanIndexBody llerror=false;
} $.plantBeanIndexResult = await request('plantBeanIndex'); //plantBeanIndexBody
//格式化助力码 if ($.plantBeanIndexResult.errorCode === 'PB101') {
function shareCodesFormat() { console.log(`\n活动太火爆了,还是去买买买吧!\n`)
return new Promise(async resolve => { llerror=true;
console.log(`${$.index}个京东账号的助力码:${$.shareCodesArr[$.index - 1]}`) return
newShareCodes = []; }
if ($.shareCodesArr[$.index - 1]) { if ($.plantBeanIndexResult.errorCode) {
newShareCodes = $.shareCodesArr[$.index - 1].split('@'); console.log(`获取任务及基本信息出错10秒后重试\n`)
} else { await $.wait(10000);
// console.log(`由于您第${$.index}个京东账号未提供shareCode,将采纳本脚本自带的助力码\n`) $.plantBeanIndexResult = await request('plantBeanIndex');
const tempIndex = $.index > shareCodes.length ? (shareCodes.length - 1) : ($.index - 1); if ($.plantBeanIndexResult.errorCode === 'PB101') {
newShareCodes = shareCodes[tempIndex].split('@'); console.log(`\n活动太火爆了,还是去买买买吧!\n`)
llerror=true;
return
}
}
if ($.plantBeanIndexResult.errorCode) {
console.log(`获取任务及基本信息出错30秒后重试\n`)
await $.wait(30000);
$.plantBeanIndexResult = await request('plantBeanIndex');
if ($.plantBeanIndexResult.errorCode === 'PB101') {
console.log(`\n活动太火爆了,还是去买买买吧!\n`)
llerror=true;
return
}
}
if ($.plantBeanIndexResult.errorCode) {
console.log(`获取任务及基本信息失败,活动异常,换个时间再试试吧....`)
console.log("错误代码;" + $.plantBeanIndexResult.errorCode)
llerror=true;
return
} }
console.log(`${$.index}个京东账号将要助力的好友${JSON.stringify(newShareCodes)}`)
resolve();
})
} }
function requireConfig() { function requireConfig() {
return new Promise(resolve => { return new Promise(resolve => {
@ -639,7 +590,7 @@ function requireConfig() {
}) })
} else { } else {
if ($.getdata('jd_plantbean_inviter')) $.shareCodesArr = $.getdata('jd_plantbean_inviter').split('\n').filter(item => !!item); 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`); //console.log(`\nBoxJs设置的${$.name}好友邀请码:${$.getdata('jd_plantbean_inviter') ? $.getdata('jd_plantbean_inviter') : '暂无'}\n`);
} }
// console.log(`\n种豆得豆助力码::${JSON.stringify($.shareCodesArr)}`); // console.log(`\n种豆得豆助力码::${JSON.stringify($.shareCodesArr)}`);
//console.log(`您提供了${$.shareCodesArr.length}个账号的种豆得豆助力码\n`); //console.log(`您提供了${$.shareCodesArr.length}个账号的种豆得豆助力码\n`);
@ -653,7 +604,7 @@ function requestGet(function_id, body = {}) {
body["monitor_source"] = "plant_app_plant_index"; body["monitor_source"] = "plant_app_plant_index";
body["monitor_refer"] = ""; body["monitor_refer"] = "";
return new Promise(async resolve => { return new Promise(async resolve => {
await $.wait(2000); await $.wait(5000);
const option = { const option = {
url: `${JD_API_HOST}?functionId=${function_id}&body=${escape(JSON.stringify(body))}&appid=ld`, url: `${JD_API_HOST}?functionId=${function_id}&body=${escape(JSON.stringify(body))}&appid=ld`,
headers: { headers: {
@ -731,7 +682,7 @@ function TotalBean() {
} }
function request(function_id, body = {}) { function request(function_id, body = {}) {
return new Promise(async resolve => { return new Promise(async resolve => {
await $.wait(2000); await $.wait(5000);
$.post(taskUrl(function_id, body), (err, resp, data) => { $.post(taskUrl(function_id, body), (err, resp, data) => {
try { try {
if (err) { if (err) {

493
jd_plantBean_help.js Normal file

File diff suppressed because one or more lines are too long

211
jd_xs_zzl.js Normal file

File diff suppressed because one or more lines are too long

View File

@ -1,13 +1,30 @@
/* /*
* @Author: lxk0301 https://gitee.com/lxk0301
* @Date: 2020-08-19 16:12:40
* @Last Modified by: whyour
* @Last Modified time: 2021-5-1 15:00:54
* sendNotify 推送通知功能 * sendNotify 推送通知功能
* @param text 通知头 * @param text 通知头
* @param desp 通知体 * @param desp 通知体
* @param params 某些推送通知方式点击弹窗可跳转, { url: 'https://abc.com' } * @param params 某些推送通知方式点击弹窗可跳转, { url: 'https://abc.com' }
* @param author 作者仓库等信息 `本通知 Byhttps://github.com/whyour/qinglong` * @param author 作者仓库等信息 `本通知 Byhttps://github.com/whyour/qinglong`
部分变量设置
## 拆分通知
export BEANCHANGE_PERSENT="10"
## 如果通知标题在此变量里面存在(&隔开),则用屏蔽不发送通知
export NOTIFY_SKIP_LIST="京东CK检测&京东资产变动"
## 当接收到发送CK失效通知和Ninja 运行通知时候执行子线程任务
export NOTIFY_CKTASK="jd_CheckCK.js"
## 如果此变量(&隔开)的关键字在通知内容里面存在,则屏蔽不发送通知.
export NOTIFY_SKIP_TEXT="忘了种植&异常"
## 屏蔽任务脚本的ck失效通知
export NOTIFY_NOCKFALSE="true"
## 服务器空数据等错误不触发通知
export CKNOWARNERROR="true"
## 屏蔽青龙登陆成功通知登陆失败不屏蔽
export NOTIFY_NOLOGINSUCCESS="true"
## 通知底部显示
export NOTIFY_AUTHOR="来源于https://github.com/KingRan/KR"
## 增加NOTIFY_AUTHOR_BLANK 环境变量控制不显示底部信息
export NOTIFY_AUTHOR_BLANK="true"
## 增加NOTIFY_AUTOCHECKCK为true才开启通知脚本内置的自动禁用过期ck
export NOTIFY_AUTOCHECKCK=true
*/ */
//详细说明参考 https://github.com/ccwav/QLScript2. //详细说明参考 https://github.com/ccwav/QLScript2.
const querystring = require('querystring'); const querystring = require('querystring');
@ -183,10 +200,9 @@ if (process.env.NOTIFY_SHOWNAMETYPE) {
if (ShowRemarkType == "4") if (ShowRemarkType == "4")
console.log("检测到显示备注名称,格式为: 备注"); console.log("检测到显示备注名称,格式为: 备注");
} }
async function sendNotify(text, desp, params = {}, author = '\n\n本通知 By ccwav Mod', strsummary = "") { async function sendNotify(text, desp, params = {}, author = '\n\n本通知 By https://github.com/KingRan/KR',strsummary="") {
console.log(`开始发送通知...`); console.log(`开始发送通知...`);
//NOTIFY_FILTERBYFILE代码来自Ca11back.
if (process.env.NOTIFY_FILTERBYFILE) { if (process.env.NOTIFY_FILTERBYFILE) {
var no_notify = process.env.NOTIFY_FILTERBYFILE.split('&'); var no_notify = process.env.NOTIFY_FILTERBYFILE.split('&');
if (module.parent.filename) { if (module.parent.filename) {
@ -202,7 +218,6 @@ async function sendNotify(text, desp, params = {}, author = '\n\n本通知 By cc
} }
} }
} }
try { try {
//Reset 变量 //Reset 变量
UseGroupNotify = 1; UseGroupNotify = 1;
@ -1375,7 +1390,7 @@ async function sendNotify(text, desp, params = {}, author = '\n\n本通知 By cc
} }
if (allCode) { if (allCode) {
desp += '\n' + '\n' + "ccwav格式化后的互助码:" + '\n' + allCode; desp += '\n' + '\n' + "格式化后的互助码:" + '\n' + allCode;
} }
} }
} }
@ -1462,7 +1477,6 @@ async function sendNotify(text, desp, params = {}, author = '\n\n本通知 By cc
$.Remark += Tempinfo; $.Remark += Tempinfo;
} }
} }
desp = desp.replace(new RegExp(`${$.UserName}|${$.nickName}`, 'gm'), $.Remark); desp = desp.replace(new RegExp(`${$.UserName}|${$.nickName}`, 'gm'), $.Remark);
strsummary = strsummary.replace(new RegExp(`${$.UserName}|${$.nickName}`, 'gm'), $.Remark); strsummary = strsummary.replace(new RegExp(`${$.UserName}|${$.nickName}`, 'gm'), $.Remark);
//额外处理2nickName不包含星号但是确实是手机号 //额外处理2nickName不包含星号但是确实是手机号
@ -1491,7 +1505,7 @@ async function sendNotify(text, desp, params = {}, author = '\n\n本通知 By cc
} }
console.log("处理完成,开始发送通知..."); console.log("处理完成,开始发送通知...");
if (strAllNotify) { if (strAllNotify) {
desp = strAllNotify + "\n" + desp; desp = strAllNotify+"\n" + desp;
} }
} }
} catch (error) { } catch (error) {
@ -1556,7 +1570,7 @@ async function sendNotify(text, desp, params = {}, author = '\n\n本通知 By cc
tgBotNotify(text, desp), //telegram 机器人 tgBotNotify(text, desp), //telegram 机器人
ddBotNotify(text, desp), //钉钉机器人 ddBotNotify(text, desp), //钉钉机器人
qywxBotNotify(text, desp), //企业微信机器人 qywxBotNotify(text, desp), //企业微信机器人
qywxamNotify(text, desp, strsummary), //企业微信应用消息推送 qywxamNotify(text, desp,strsummary), //企业微信应用消息推送
iGotNotify(text, desp, params), //iGot iGotNotify(text, desp, params), //iGot
gobotNotify(text, desp), //go-cqhttp gobotNotify(text, desp), //go-cqhttp
gotifyNotify(text, desp), //gotify gotifyNotify(text, desp), //gotify
@ -1569,7 +1583,7 @@ function getuuid(strRemark, PtPin) {
if (strRemark) { if (strRemark) {
var Tempindex = strRemark.indexOf("@@"); var Tempindex = strRemark.indexOf("@@");
if (Tempindex != -1) { if (Tempindex != -1) {
console.log(PtPin + ": 检测到NVJDC的一对一格式,瑞思拜~!"); console.log(PtPin+": 检测到NVJDC的一对一格式,瑞思拜~!");
var TempRemarkList = strRemark.split("@@"); var TempRemarkList = strRemark.split("@@");
for (let j = 1; j < TempRemarkList.length; j++) { for (let j = 1; j < TempRemarkList.length; j++) {
if (TempRemarkList[j]) { if (TempRemarkList[j]) {
@ -1633,6 +1647,7 @@ function getQLinfo(strCK, intcreated, strTimestamp, strRemark) {
} }
} }
return strReturn return strReturn
} }