This commit is contained in:
Faker 2022-04-02 17:19:14 +08:00
parent bf06cbb307
commit b88fd522e4
2 changed files with 97 additions and 84 deletions

View File

@ -20,7 +20,7 @@ cron "2 0-23/4 * * *" script-path=jd_cash.js,tag=签到领现金
============小火箭=========
签到领现金 = type=cron,script-path=jd_cash.js, cronexpr="2 0-23/4 * * *", timeout=3600, enable=true
*/
const $ = new Env('签到领现金潘达接口版');
const $ = new Env('签到领现金_Panda');
const notify = $.isNode() ? require('./sendNotify') : '';
//Node.js用户请在jdCookie.js处填写京东ck;
const jdCookieNode = $.isNode() ? require('./jdCookie.js') : '';
@ -41,6 +41,13 @@ if ($.isNode()) {
}
const JD_API_HOST = 'https://api.m.jd.com/client.action';
let allMessage = '';
let jdPandaToken = '';
jdPandaToken = $.isNode() ? (process.env.gua_cleancart_PandaToken ? process.env.gua_cleancart_PandaToken : `${jdPandaToken}`) : ($.getdata('gua_cleancart_PandaToken') ? $.getdata('gua_cleancart_PandaToken') : `${jdPandaToken}`);
if (!jdPandaToken) {
console.log('请填写Panda获取的Token,变量是gua_cleancart_PandaToken');
return;
}
!(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"});
@ -115,7 +122,7 @@ async function appindex(info=false) {
}
$.signMoney = data.data.result.totalMoney;
// console.log(`您的助力码为${data.data.result.invitedCode}`)
console.log(`\n【京东账号${$.index}${$.UserName})的${$.name}好友互助码】${data.data.result.invitedCode}\n`);
console.log(`\n【京东账号${$.index}${$.UserName})的好友互助码】${data.data.result.invitedCode}\n`);
let helpInfo = {
'inviteCode': data.data.result.invitedCode,
'shareDate': data.data.result.shareDate
@ -282,13 +289,26 @@ function getSignfromPanda(functionId, body) {
'Accept': '*/*',
"accept-encoding": "gzip, deflate, br",
'Content-Type': 'application/json',
'Authorization': 'Bearer ' + jdPandaToken
},
timeout: 30000
}
$.post(url, async(err, resp, data) => {
try {
data = JSON.parse(data);
strsign=data.data.sign;
if (data && data.code == 200) {
lnrequesttimes = data.request_times;
console.log("连接Panda服务成功当前Token使用次数为" + lnrequesttimes);
if (data.data.sign)
strsign = data.data.sign || '';
if (strsign != '')
resolve(strsign);
else
console.log("签名获取失败,可能Token使用次数上限或被封.");
} else {
console.log("签名获取失败.");
}
}catch (e) {
$.logErr(e, resp);

View File

@ -1,12 +1,12 @@
/*
清空购物车
清空购物车_Panda接口专用版
更新时间2021-10-27
因其他脚本会加入商品到购物车故此脚本用来清空购物车
包括预售
需要算法支持
默认不执行 如需要请添加环境变量
gua_cleancart_Run="true"
gua_cleancart_SignUrl="" # 算法url
gua_cleancart_PandaToken="" # PanDaToken
1.@&@ 前面加数字 指定账号pin
@ -35,12 +35,12 @@ pin3@&@不清空👉该pin不清空
防止没指定的账号购物车全清空
*/
let jdSignUrl = '' // 算法url
let jdSignUrl = 'https://api.jds.codes/jd/sign'
let jdPandaToken = ''
let cleancartRun = 'false'
let cleancartProducts = ''
let isSignError = false;
const $ = new Env('清空购物车');
let lnrequesttimes=0
const $ = new Env('清空购物车_Panda');
const jdCookieNode = $.isNode() ? require('./jdCookie.js') : '';
const notify = $.isNode() ? require('./sendNotify') : '';
//IOS等用户直接用NobyDa的jd cookie
@ -57,12 +57,16 @@ if ($.isNode()) {
message = ''
jdSignUrl = $.isNode() ? (process.env.gua_cleancart_SignUrl ? process.env.gua_cleancart_SignUrl : `${jdSignUrl}`) : ($.getdata('gua_cleancart_SignUrl') ? $.getdata('gua_cleancart_SignUrl') : `${jdSignUrl}`);
jdPandaToken = $.isNode() ? (process.env.gua_cleancart_PandaToken ? process.env.gua_cleancart_PandaToken : `${jdPandaToken}`) : ($.getdata('gua_cleancart_PandaToken') ? $.getdata('gua_cleancart_PandaToken') : `${jdPandaToken}`);
cleancartRun = $.isNode() ? (process.env.gua_cleancart_Run ? process.env.gua_cleancart_Run : `${cleancartRun}`) : ($.getdata('gua_cleancart_Run') ? $.getdata('gua_cleancart_Run') : `${cleancartRun}`);
cleancartProducts = $.isNode() ? (process.env.gua_cleancart_products ? process.env.gua_cleancart_products : `${cleancartProducts}`) : ($.getdata('gua_cleancart_products') ? $.getdata('gua_cleancart_products') : `${cleancartProducts}`);
if (!jdPandaToken) {
console.log('请填写Panda获取的Token,变量是gua_cleancart_PandaToken');
return;
}
let productsArr = []
let cleancartProductsAll = []
for (let i of cleancartProducts && cleancartProducts.split('|-|')) {
@ -92,6 +96,9 @@ for (let i in productsArr) {
console.log('脚本停止\n请添加环境变量[gua_cleancart_products]\n清空商品\n内容规则看脚本文件')
return
}
if(jdSignUrl.indexOf("://jd.smiek.tk/") > -1) {
return
}
$.out = false
for (let i = 0; i < cookiesArr.length; i++) {
cookie = cookiesArr[i];
@ -123,25 +130,7 @@ async function run(){
try{
let msg = ''
let signBody = `{"homeWishListUserFlag":"1","userType":"0","updateTag":true,"showPlusEntry":"2","hitNewUIStatus":"1","cvhv":"049591","cartuuid":"hjudwgohxzVu96krv/T6Hg==","adid":""}`
let body = await GetjdSign('cartClearQuery', signBody)
if (isSignError) {
console.log(`Sign获取失败,等待2秒后再次尝试...`)
await $.wait(2 * 1000);
isSignError = false;
body = await GetjdSign('cartClearQuery', signBody);
}
if (isSignError) {
console.log(`Sign获取失败,等待2秒后再次尝试...`)
await $.wait(2 * 1000);
isSignError = false;
body = await GetjdSign('cartClearQuery', signBody);
}
if (isSignError) {
console.log(`Sign获取失败,等待2秒后再次尝试...`)
await $.wait(2 * 1000);
isSignError = false;
body = await GetjdSign('cartClearQuery', signBody);
}
let body = await jdSign('cartClearQuery', signBody)
if($.out) return
if(!body){
console.log('获取不到算法')
@ -189,27 +178,7 @@ async function run(){
msg += `清空${operNum}件商品|没有找到要清空的商品\n`
}else{
let clearBody = `{"homeWishListUserFlag":"1","userType":"0","updateTag":false,"showPlusEntry":"2","hitNewUIStatus":"1","cvhv":"049591","cartuuid":"hjudwgohxzVu96krv/T6Hg==","operations":${$.toStr(operations,operations)},"adid":"","coord_type":"0"}`
isSignError = false;
clearBody = await GetjdSign('cartClearRemove', clearBody);
if (isSignError) {
console.log(`Sign获取失败,等待2秒后再次尝试...`)
await $.wait(2 * 1000);
isSignError = false;
clearBody = await GetjdSign('cartClearRemove', clearBody);
}
if (isSignError) {
console.log(`Sign获取失败,等待2秒后再次尝试...`)
await $.wait(2 * 1000);
isSignError = false;
clearBody = await GetjdSign('cartClearRemove', clearBody);
}
if (isSignError) {
console.log(`Sign获取失败,等待2秒后再次尝试...`)
await $.wait(2 * 1000);
isSignError = false;
clearBody = await GetjdSign('cartClearRemove', clearBody);
}
clearBody = await jdSign('cartClearRemove', clearBody)
if($.out) return
if(!clearBody){
console.log('获取不到算法')
@ -295,40 +264,64 @@ function jdApi(functionId,body) {
})
}
function GetjdSign(functionid, body) {
return new Promise(async resolve => {
let data = {
"functionId": functionid,
"body": body,
"client": "apple",
"clientVersion": "10.1.0"
}
let HostArr = ['jdsign.cf', 'signer.nz.lu']
let Host = HostArr[Math.floor((Math.random() * HostArr.length))]
let options = {
url: `https://cdn.nz.lu/ddo`,
body: JSON.stringify(data),
headers: {
Host,
"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: 15000
}
$.post(options, (err, resp, data) => {
try {
if (err) {
console.log(`${JSON.stringify(err)}`);
isSignError = true;
//console.log(`${$.name} getSign API请求失败请检查网路重试`)
} else {}
} catch (e) {
$.logErr(e, resp)
}
finally {
resolve(data);
}
})
})
function jdSign(fn, body) {
let sign = '';
let flag = false;
try {
const fs = require('fs');
if (fs.existsSync('./gua_encryption_sign.js')) {
const encryptionSign = require('./gua_encryption_sign');
sign = encryptionSign.getSign(fn, body)
} else {
flag = true
}
sign = sign.data && sign.data.sign && sign.data.sign || ''
} catch (e) {
flag = true
}
if (!flag)
return sign
if (!jdSignUrl.match(/^https?:\/\//)) {
console.log('请填写算法url')
$.out = true
return ''
}
return new Promise((resolve) => {
let url = {
url: jdSignUrl,
body: `{"fn":"${fn}","body":${body}}`,
followRedirect: false,
headers: {
'Accept': '*/*',
"accept-encoding": "gzip, deflate, br",
'Content-Type': 'application/json',
'Authorization': 'Bearer ' + jdPandaToken
},
timeout: 30000
}
$.post(url, async(err, resp, data) => {
try {
data = JSON.parse(data);
if (data && data.code == 200) {
lnrequesttimes = data.request_times;
console.log("连接Panda服务成功当前Token使用次数为" + lnrequesttimes);
if (data.data.sign)
sign = data.data.sign || '';
if (sign != '')
resolve(sign);
else
console.log("签名获取失败,可能Token使用次数上限或被封.");
} else {
console.log("签名获取失败.");
}
} catch (e) {
$.logErr(e, resp);
}
finally {
resolve('')
}
})
})
}