更新于 08-17 12:04

This commit is contained in:
root
2021-08-17 12:04:49 -04:00
parent 1906f6b483
commit e51c557879
19 changed files with 3363 additions and 3603 deletions
+3
View File
@@ -183,5 +183,8 @@
#大乐透 #大乐透
15 6 * * * node /scripts/jd_DrawEntrance.js >> /scripts/logs/jd_DrawEntrance.log 2>&1 15 6 * * * node /scripts/jd_DrawEntrance.js >> /scripts/logs/jd_DrawEntrance.log 2>&1
0 8,12 * * * node /scripts/jd_crowdfunding_wish.js >> /scripts/logs/jd_crowdfunding_wish.log 2>&1
8 8 * * * node /scripts/jd_shop_sign.js >> /scripts/logs/jd_shop_sign.log 2>&1
##############可选脚本############## ##############可选脚本##############
+285 -254
View File
@@ -2,75 +2,69 @@
京东手机狂欢城活动 京东手机狂欢城活动
活动时间: 2021-8-9至2021-8-28 活动时间: 2021-8-9至2021-8-28
活动入口:暂无 [活动地址](https://carnivalcity.m.jd.com) 活动入口:暂无 [活动地址](https://carnivalcity.m.jd.com)
往期奖励: 往期奖励:
a、第1名可获得实物手机一部 a、第1名可获得实物手机一部
b、 每日第2-10000名,可获得50个京豆 b、 每日第2-10000名,可获得50个京豆
c、 每日第10001-30000名可获得20个京豆 c、 每日第10001-30000名可获得20个京豆
脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js 脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js
===================quantumultx================ ===================quantumultx================
[task_local] [task_local]
#京东手机狂欢城 #京东手机狂欢城
0 0-18/6 * * * jd_5g.js, tag=京东手机狂欢城, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/jd.png, enabled=true 0 0-18/6 * * * jd_carnivalcity.js, tag=京东手机狂欢城, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/jd.png, enabled=true
=====================Loon================ =====================Loon================
[Script] [Script]
cron "0 0-18/6 * * *" script-path=jd_5g.js, tag=京东手机狂欢城 cron "0 0-18/6 * * *" script-path=jd_carnivalcity.js, tag=京东手机狂欢城
====================Surge================ ====================Surge================
京东手机狂欢城 = type=cron,cronexp=0 0-18/6 * * *,wake-system=1,timeout=3600,script-path=gua_carnivalcity.js 京东手机狂欢城 = type=cron,cronexp=0 0-18/6 * * *,wake-system=1,timeout=3600,script-path=jd_carnivalcity.js
============小火箭========= ============小火箭=========
5G狂欢城 = type=cron,script-path=jd_5g.js, cronexpr="0 0,6,12,18 * * *", timeout=3600, enable=true 5G狂欢城 = type=cron,script-path=jd_carnivalcity.js, cronexpr="0 0,6,12,18 * * *", timeout=3600, enable=true
*/ */
const jd_heplers = require("./utils/JDHelpers.js"); const jd_helpers = require("./utils/JDHelpers.js");
const jd_env = require("./utils/JDEnv.js"); const jd_env = require("./utils/JDEnv.js");
const $ = jd_env.env("京东手机狂欢城"); const $ = jd_env.env("京东手机狂欢城");
const notify = $.isNode() ? require("./sendNotify") : ""; const notify = $.isNode() ? require("./sendNotify") : "";
//Node.js用户请在jdCookie.js处填写京东ck; //Node.js用户请在jdCookie.js处填写京东ck;
const jdCookieNode = $.isNode() ? require("./jdCookie.js") : ""; const jdCookieNode = $.isNode() ? require('./jdCookie.js') : '';
//IOS等用户直接用NobyDa的jd cookie //IOS等用户直接用NobyDa的jd cookie
let cookiesArr = [], let cookiesArr = [], cookie = '', message = '', allMessage = '';
cookie = "",
message = "",
allMessage = "";
if ($.isNode()) { if ($.isNode()) {
Object.keys(jdCookieNode).forEach((item) => { Object.keys(jdCookieNode).forEach((item) => {
cookiesArr.push(jdCookieNode[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 = () => {};
if (JSON.stringify(process.env).indexOf("GITHUB") > -1) process.exit(0); if (JSON.stringify(process.env).indexOf('GITHUB') > -1) process.exit(0)
} else { } else {
cookiesArr = [$.getdata("CookieJD"), $.getdata("CookieJD2"), ...jd_heplers.jsonParse($.getdata("CookiesJD") || "[]").map((item) => item.cookie)].filter((item) => !!item); cookiesArr = [$.getdata("CookieJD"), $.getdata("CookieJD2"), ...jd_helpers.jsonParse($.getdata("CookiesJD") || "[]").map((item) => item.cookie)].filter((item) => !!item);
} }
let inviteCodes = []; let inviteCodes = [];
$.shareCodesArr = []; $.shareCodesArr = [];
const JD_API_HOST = "https://api.m.jd.com/api"; const JD_API_HOST = 'https://api.m.jd.com/api';
const activeEndTime = "2021/08/28 00:00:00+08:00"; //活动结束时间 const activeEndTime = '2021/08/28 00:00:00+08:00';//活动结束时间
let nowTime = new Date().getTime() + new Date().getTimezoneOffset()*60*1000 + 8*60*60*1000; let nowTime = new Date().getTime() + new Date().getTimezoneOffset()*60*1000 + 8*60*60*1000;
!(async () => { !(async () => {
if (!cookiesArr[0]) { 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; return;
} }
$.temp = []; $.temp = [];
if (nowTime > new Date(activeEndTime).getTime()) { if (nowTime > new Date(activeEndTime).getTime()) {
//活动结束后弹窗提醒 //活动结束后弹窗提醒
$.msg($.name, "活动已结束", `该活动累计获得京豆:${$.jingBeanNum}\n请删除此脚本\n咱江湖再见`); $.msg($.name, '活动已结束', `该活动累计获得京豆:${$.jingBeanNum}\n请删除此脚本\n咱江湖再见`);
if ($.isNode()) await notify.sendNotify($.name + "活动已结束", `请删除此脚本\n咱江湖再见`); if ($.isNode()) await notify.sendNotify($.name + '活动已结束', `请删除此脚本\n咱江湖再见`);
return; return
} }
await requireConfig();
for (let i = 0; i < cookiesArr.length; i++) { for (let i = 0; i < cookiesArr.length; i++) {
if (cookiesArr[i]) { if (cookiesArr[i]) {
cookie = 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; $.index = i + 1;
$.isLogin = true; $.isLogin = true;
$.nickName = ""; $.nickName = '';
$.jingBeanNum = 0;//累计获得京豆 $.jingBeanNum = 0;//累计获得京豆
$.integralCount = 0;//累计获得积分 $.integralCount = 0;//累计获得积分
$.integer = 0;//当天获得积分 $.integer = 0;//当天获得积分
@@ -78,9 +72,9 @@ let nowTime = new Date().getTime() + new Date().getTimezoneOffset() * 60 * 1000
$.num = 0;//当天排名 $.num = 0;//当天排名
$.beans = 0;//本次运行获得京豆数量 $.beans = 0;//本次运行获得京豆数量
$.blockAccount = false;//黑号 $.blockAccount = false;//黑号
message = ""; message = '';
console.log(`\n开始【京东账号${$.index}${$.nickName || $.UserName}\n`); console.log(`\n开始【京东账号${$.index}${$.nickName || $.UserName}\n`);
getUA(); getUA()
await shareCodesFormat(); await shareCodesFormat();
await JD818(); await JD818();
} }
@@ -89,8 +83,8 @@ let nowTime = new Date().getTime() + new Date().getTimezoneOffset() * 60 * 1000
if (cookiesArr[i]) { if (cookiesArr[i]) {
cookie = cookiesArr[i]; cookie = cookiesArr[i];
$.canHelp = true;//能否助力 $.canHelp = true;//能否助力
$.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1])
if (cookiesArr && cookiesArr.length >= 1 && $.canHelp) { if ((cookiesArr && cookiesArr.length >= 1) && $.canHelp) {
console.log(`\n先自己账号内部相互邀请助力\n`); console.log(`\n先自己账号内部相互邀请助力\n`);
for (let item of $.temp) { for (let item of $.temp) {
console.log(`\n${$.UserName} 去参助力 ${item}`); console.log(`\n${$.UserName} 去参助力 ${item}`);
@@ -103,34 +97,33 @@ let nowTime = new Date().getTime() + new Date().getTimezoneOffset() * 60 * 1000
} }
} }
if ($.canHelp) { if ($.canHelp) {
console.log(`\n\n如果有剩余助力机会,则给作者以及随机码助力`); console.log(`\n\n如果有剩余助力机会,则给作者以及随机码助力`)
await doHelp(); await doHelp();
} }
} }
} }
// console.log(JSON.stringify($.temp)) // console.log(JSON.stringify($.temp))
if (allMessage) { if (allMessage) {
//NODE端,默认每月一日运行进行推送通知一次
if ($.isNode()) { if ($.isNode()) {
await notify.sendNotify($.name, allMessage, { url: JD_API_HOST }); await notify.sendNotify($.name, allMessage, { url: "https://carnivalcity.m.jd.com" });
$.msg($.name, "", allMessage); $.msg($.name, '', allMessage);
} }
} }
})() })()
.catch((e) => { .catch((e) => {
$.log("", `${$.name}, 失败! 原因: ${e}!`, ""); $.log('', `${$.name}, 失败! 原因: ${e}!`, '')
}) })
.finally(() => { .finally(() => {
$.done(); $.done();
}); })
async function JD818() { async function JD818() {
try { try {
await indexInfo();//获取任务 await indexInfo();//获取任务
await supportList();//助力情况 await supportList();//助力情况
await getHelp();//获取邀请码 await getHelp();//获取邀请码
if ($.blockAccount) return; if ($.blockAccount) return
await indexInfo(true); //获取任务 // await indexInfo(true);//获取任务
await doHotProducttask();//做热销产品任务 await doHotProducttask();//做热销产品任务
await doBrandTask();//做品牌手机任务 await doBrandTask();//做品牌手机任务
await doBrowseshopTask();//逛好货街,做任务 await doBrowseshopTask();//逛好货街,做任务
@@ -140,109 +133,109 @@ async function JD818() {
await getListIntegral(); await getListIntegral();
await getListJbean(); await getListJbean();
await check();//查询抽奖记录(未兑换的,发送提醒通知); await check();//查询抽奖记录(未兑换的,发送提醒通知);
await showMsg(); await showMsg()
} catch (e) { } catch (e) {
$.logErr(e); $.logErr(e)
} }
} }
async function doHotProducttask() { async function doHotProducttask() {
$.hotProductList = $.hotProductList.filter((v) => !!v && v["status"] === "1"); $.hotProductList = $.hotProductList.filter(v => !!v && v['status'] === "1");
if ($.hotProductList && $.hotProductList.length) console.log(`开始 【浏览热销手机产品】任务,需等待6秒`); if ($.hotProductList && $.hotProductList.length) console.log(`开始 【浏览热销手机产品】任务,需等待6秒`)
for (let item of $.hotProductList) { for (let item of $.hotProductList) {
await doBrowse(item["id"], "", "hot", "browse", "browseHotSku"); await doBrowse(item['id'], "", "hot", "browse", "browseHotSku");
await $.wait(1000 * 6); await $.wait(1000 * 6);
if ($.browseId) { if ($.browseId) {
await getBrowsePrize($.browseId); await getBrowsePrize($.browseId)
} }
} }
} }
//做任务 API //做任务 API
function doBrowse(id = "", brandId = "", taskMark = "hot", type = "browse", logMark = "browseHotSku") { function doBrowse(id = "", brandId = "", taskMark = "hot", type = "browse", logMark = "browseHotSku") {
$.browseId = ""; $.browseId = ''
return new Promise((resolve) => { return new Promise(resolve => {
const body = { brandId: `${brandId}`, id: `${id}`, taskMark: `${taskMark}`, type: `${type}`, logMark: `${logMark}` }; const body = {"brandId":`${brandId}`,"id":`${id}`,"taskMark":`${taskMark}`,"type":`${type}`,"logMark":`${logMark}`};
const options = taskPostUrl("/khc/task/doBrowse", body); const options = taskPostUrl('/khc/task/doBrowse', body)
$.post(options, (err, resp, data) => { $.post(options, (err, resp, data) => {
try { try {
if (err) { if (err) {
console.log(`${JSON.stringify(err)}`); console.log(`${JSON.stringify(err)}`)
console.log(`${$.name} API请求失败,请检查网路重试`); console.log(`${$.name} API请求失败,请检查网路重试`)
} else { } else {
console.log(`doBrowse 做${taskMark}任务:${data}`); console.log(`doBrowse 做${taskMark}任务:${data}`);
data = JSON.parse(data); data = JSON.parse(data);
if (data && data["code"] === 200) { if (data && data['code'] === 200) {
$.browseId = data["data"]["browseId"] || ""; $.browseId = data['data']['browseId'] || "";
} else { } else {
console.log(`doBrowse异常`); console.log(`doBrowse异常`);
} }
} }
} catch (e) { } catch (e) {
$.logErr(e, resp); $.logErr(e, resp)
} finally { } finally {
resolve(); resolve();
} }
}); })
}); })
} }
//领取奖励 //领取奖励
function getBrowsePrize(browseId, brandId = "") { function getBrowsePrize(browseId, brandId = '') {
return new Promise((resolve) => { return new Promise(resolve => {
const body = { browseId: browseId, brandId: `${brandId}` }; const body = {"browseId":browseId, "brandId":`${brandId}`};
const options = taskPostUrl("/khc/task/getBrowsePrize", body); const options = taskPostUrl('/khc/task/getBrowsePrize', body)
$.post(options, (err, resp, data) => { $.post(options, (err, resp, data) => {
try { try {
if (err) { if (err) {
console.log(`${JSON.stringify(err)}`); console.log(`${JSON.stringify(err)}`)
console.log(`${$.name} API请求失败,请检查网路重试`); console.log(`${$.name} API请求失败,请检查网路重试`)
} else { } else {
console.log(`getBrowsePrize 领取奖励 结果:${data}`); console.log(`getBrowsePrize 领取奖励 结果:${data}`);
data = JSON.parse(data); data = JSON.parse(data);
if (data && data["code"] === 200) { if (data && data['code'] === 200) {
if (data["data"]["jingBean"]) $.beans += data["data"]["jingBean"]; if (data['data']['jingBean']) $.beans += data['data']['jingBean'];
} }
} }
} catch (e) { } catch (e) {
$.logErr(e, resp); $.logErr(e, resp)
} finally { } finally {
resolve(data); resolve(data);
} }
}); })
}); })
} }
// 关注 // 关注
function followShop(browseId, brandId = "") { function followShop(browseId, brandId = '') {
return new Promise((resolve) => { return new Promise(resolve => {
const body = { id: `${browseId}`, brandId: `${brandId}` }; const body = {"id":`${browseId}`, "brandId":`${brandId}`};
const options = taskPostUrl("/khc/task/followShop", body); const options = taskPostUrl('/khc/task/followShop', body)
$.post(options, (err, resp, data) => { $.post(options, (err, resp, data) => {
try { try {
if (err) { if (err) {
console.log(`${JSON.stringify(err)}`); console.log(`${JSON.stringify(err)}`)
console.log(`${$.name} API请求失败,请检查网路重试`); console.log(`${$.name} API请求失败,请检查网路重试`)
} else { } else {
console.log(`followShop 领取奖励 结果:${data}`); console.log(`followShop 领取奖励 结果:${data}`);
data = JSON.parse(data); data = JSON.parse(data);
if (data && data["code"] === 200) { if (data && data['code'] === 200) {
if (data["data"]["jingBean"]) $.beans += data["data"]["jingBean"]; if (data['data']['jingBean']) $.beans += data['data']['jingBean'];
} }
} }
} catch (e) { } catch (e) {
$.logErr(e, resp); $.logErr(e, resp)
} finally { } finally {
resolve(data); resolve(data);
} }
}); })
}); })
} }
async function doBrandTask() { async function doBrandTask() {
for (let brand of $.brandList) { for (let brand of $.brandList) {
await brandTaskInfo(brand["brandId"]); await brandTaskInfo(brand['brandId']);
} }
} }
function brandTaskInfo(brandId) { function brandTaskInfo(brandId) {
const body = { brandId: `${brandId}` }; const body = {"brandId":`${brandId}`};
const options = taskPostUrl("/khc/index/brandTaskInfo", body); const options = taskPostUrl('/khc/index/brandTaskInfo', body)
$.skuTask = []; $.skuTask = [];
$.shopTask = []; $.shopTask = [];
$.meetingTask = []; $.meetingTask = [];
@@ -251,62 +244,62 @@ function brandTaskInfo(brandId) {
$.post(options, async (err, resp, data) => { $.post(options, async (err, resp, data) => {
try { try {
if (err) { if (err) {
console.log(`${JSON.stringify(err)}`); console.log(`${JSON.stringify(err)}`)
console.log(`${$.name} API请求失败,请检查网路重试`); console.log(`${$.name} API请求失败,请检查网路重试`)
} else { } else {
data = $.toObj(data); data = $.toObj(data);
if (data.code === 200) { if (data.code === 200) {
let brandId = data["data"]["brandId"]; let brandId = data['data']['brandId'];
$.skuTask = data["data"]["skuTask"] || []; $.skuTask = data['data']['skuTask'] || [];
$.shopTask = data["data"]["shopTask"] || []; $.shopTask = data['data']['shopTask'] || [];
$.meetingTask = data["data"]["meetingTask"] || []; $.meetingTask = data['data']['meetingTask'] || [];
$.questionTask = data["data"]["questionTask"] || []; $.questionTask = data['data']['questionTask'] || [];
let flag = true; let flag = true
for (let sku of $.shopTask.filter((vo) => !!vo && vo["status"] !== "4")) { for (let sku of $.shopTask.filter(vo => !!vo && vo['status'] !== '4')){
if (flag) console.log(`\n开始做 品牌手机 【${data["data"]["brandName"]}】 任务`); if(flag) console.log(`\n开始做 品牌手机 【${data['data']['brandName']}】 任务`)
if (flag) flag = false; if(flag) flag = false
console.log(`开始浏览 1-F 关注 任务 ${sku["name"]}`); console.log(`开始浏览 1-F 关注 任务 ${sku['name']}`);
if (sku["status"] == 3) { if(sku['status'] == 3){
await followShop(sku["id"], brandId); await followShop(sku['id'], brandId);
} else if (sku["status"] == 8) { }else if(sku['status'] == 8){
await doBrowse(sku["id"], brandId, "brand", "follow", "browseShop"); await doBrowse(sku['id'], brandId, "brand", "follow", "browseShop");
await $.wait(1000 * 6); await $.wait(1000 * 6);
if ($.browseId) await getBrowsePrize($.browseId, brandId); if ($.browseId) await getBrowsePrize($.browseId, brandId);
}else{ }else{
console.log(`未知任务状态 ${sku["status"]}`); console.log(`未知任务状态 ${sku['status']}`)
} }
} }
flag = true; flag = true
for (let sku of $.skuTask.filter((vo) => !!vo && vo["status"] !== "4")) { for (let sku of $.skuTask.filter(vo => !!vo && vo['status'] !== '4')){
if (flag) console.log(`\n开始做 品牌手机 【${data["data"]["brandName"]}】 任务`); if(flag) console.log(`\n开始做 品牌手机 【${data['data']['brandName']}】 任务`)
if (flag) flag = false; if(flag) flag = false
console.log(`开始浏览 2-F 单品区 任务 ${sku["name"]}`); console.log(`开始浏览 2-F 单品区 任务 ${sku['name']}`);
await doBrowse(sku["id"], brandId, "brand", "presell", "browseSku"); await doBrowse(sku['id'], brandId, "brand", "presell", "browseSku");
await $.wait(1000 * 6); await $.wait(1000 * 6);
if ($.browseId) await getBrowsePrize($.browseId, brandId); if ($.browseId) await getBrowsePrize($.browseId, brandId);
} }
flag = true; flag = true
for (let sku of $.meetingTask.filter((vo) => !!vo && vo["status"] !== "4")) { for (let sku of $.meetingTask.filter(vo => !!vo && vo['status'] !== '4')){
if (flag) console.log(`\n开始做 品牌手机 【${data["data"]["brandName"]}】 任务`); if(flag) console.log(`\n开始做 品牌手机 【${data['data']['brandName']}】 任务`)
if (flag) flag = false; if(flag) flag = false
console.log(`开始浏览 3-F 综合区 任务 ${sku["name"]},需等待10秒`); console.log(`开始浏览 3-F 综合区 任务 ${sku['name']},需等待10秒`);
await doBrowse(sku["id"], brandId, "brand", "meeting", "browseVenue"); await doBrowse(sku['id'], brandId, "brand", "meeting", "browseVenue");
await $.wait(10500); await $.wait(10500);
if ($.browseId) await getBrowsePrize($.browseId, brandId); if ($.browseId) await getBrowsePrize($.browseId, brandId);
} }
flag = true; flag = true
if ($.questionTask.hasOwnProperty("id") && $.questionTask["result"] === "0") { if ($.questionTask.hasOwnProperty('id') && $.questionTask['result'] === '0') {
if (flag) console.log(`\n开始做 品牌手机 【${data["data"]["brandName"]}】 任务`); if(flag) console.log(`\n开始做 品牌手机 【${data['data']['brandName']}】 任务`)
if (flag) flag = false; if(flag) flag = false
console.log(`开始做答题任务 ${$.questionTask["question"]}`); console.log(`开始做答题任务 ${$.questionTask['question']}`);
let result = 0; let result = 0;
for (let i = 0; i < $.questionTask["answers"].length; i++) { for (let i = 0; i < $.questionTask['answers'].length; i ++) {
if ($.questionTask["answers"][i]["right"]) { if ($.questionTask['answers'][i]['right']) {
result = i + 1;//正确答案 result = i + 1;//正确答案
} }
} }
if (result !== 0) { if (result !== 0) {
await doQuestion(brandId, $.questionTask["id"], result); await doQuestion(brandId, $.questionTask['id'], result);
} }
} }
} else { } else {
@@ -318,47 +311,47 @@ function brandTaskInfo(brandId) {
} finally { } finally {
resolve(data); resolve(data);
} }
}); })
}); });
} }
function doQuestion(brandId, questionId, result) { function doQuestion(brandId, questionId, result) {
return new Promise((resolve) => { return new Promise(resolve => {
const body = { brandId: `${brandId}`, questionId: `${questionId}`, result: result }; const body = {"brandId":`${brandId}`,"questionId":`${questionId}`,"result":result};
const options = taskPostUrl("/khc/task/doQuestion", body); const options = taskPostUrl('/khc/task/doQuestion', body)
$.post(options, (err, resp, data) => { $.post(options, (err, resp, data) => {
try { try {
if (err) { if (err) {
console.log(`${JSON.stringify(err)}`); console.log(`${JSON.stringify(err)}`)
console.log(`${$.name} API请求失败,请检查网路重试`); console.log(`${$.name} API请求失败,请检查网路重试`)
} else { } else {
console.log(`doQuestion 领取答题任务奖励 结果:${data}`); console.log(`doQuestion 领取答题任务奖励 结果:${data}`);
data = JSON.parse(data); data = JSON.parse(data);
if (data && data["code"] === 200) { if (data && data['code'] === 200) {
if (data["data"]["jingBean"]) $.beans += data["data"]["jingBean"]; if (data['data']['jingBean']) $.beans += data['data']['jingBean'];
} }
} }
} catch (e) { } catch (e) {
$.logErr(e, resp); $.logErr(e, resp)
} finally { } finally {
resolve(data); resolve(data);
} }
}); })
}); })
} }
//逛好货街,做任务 //逛好货街,做任务
async function doBrowseshopTask() { async function doBrowseshopTask() {
$.browseshopList = $.browseshopList.filter((v) => !!v && v["status"] === "6"); $.browseshopList = $.browseshopList.filter(v => !!v && v['status'] === "6");
if ($.browseshopList && $.browseshopList.length) console.log(`\n开始 【逛好货街,做任务】,需等待10秒`); if ($.browseshopList && $.browseshopList.length) console.log(`\n开始 【逛好货街,做任务】,需等待10秒`)
for (let shop of $.browseshopList) { for (let shop of $.browseshopList) {
await doBrowse(shop["id"], "", "browseShop", "browse", "browseShop"); await doBrowse(shop['id'], "", "browseShop", "browse", "browseShop");
await $.wait(10000); await $.wait(10000);
if ($.browseId) { if ($.browseId) {
await getBrowsePrize($.browseId); await getBrowsePrize($.browseId)
} }
} }
} }
function indexInfo(flag = false) { function indexInfo(flag = false) {
const options = taskPostUrl(`/khc/index/indexInfo`, {}); const options = taskPostUrl(`/khc/index/indexInfo`, {})
$.hotProductList = []; $.hotProductList = [];
$.brandList = []; $.brandList = [];
$.browseshopList = []; $.browseshopList = [];
@@ -366,16 +359,16 @@ function indexInfo(flag = false) {
$.post(options, async (err, resp, data) => { $.post(options, async (err, resp, data) => {
try { try {
if (err) { if (err) {
console.log(`${JSON.stringify(err)}`); console.log(`${JSON.stringify(err)}`)
console.log(`${$.name} API请求失败,请检查网路重试`); console.log(`${$.name} API请求失败,请检查网路重试`)
} else { } else {
data = $.toObj(data); data = $.toObj(data);
if (data.code === 200) { if (data.code === 200) {
$.hotProductList = data["data"]["hotProductList"]; $.hotProductList = data['data']['hotProductList'];
$.brandList = data["data"]["brandList"]; $.brandList = data['data']['brandList'];
$.browseshopList = data["data"]["browseshopList"]; $.browseshopList = data['data']['browseshopList'];
} else { } else {
console.log(`异常:${JSON.stringify(data)}`); console.log(`异常:${JSON.stringify(data)}`)
} }
} }
} catch (e) { } catch (e) {
@@ -383,23 +376,23 @@ function indexInfo(flag = false) {
} finally { } finally {
resolve(); resolve();
} }
}); })
}); });
} }
//获取助力信息 //获取助力信息
function supportList() { function supportList() {
const options = taskPostUrl("/khc/index/supportList", {}); const options = taskPostUrl('/khc/index/supportList', {})
return new Promise( (resolve) => { return new Promise( (resolve) => {
$.post(options, async (err, resp, data) => { $.post(options, async (err, resp, data) => {
try { try {
if (err) { if (err) {
console.log(`${JSON.stringify(err)}`); console.log(`${JSON.stringify(err)}`)
console.log(`${$.name} API请求失败,请检查网路重试`); console.log(`${$.name} API请求失败,请检查网路重试`)
} else { } else {
data = JSON.parse(data); data = JSON.parse(data);
if (data.code === 200) { if (data.code === 200) {
console.log(`助力情况:${data["data"]["supportedNums"]}/${data["data"]["supportNeedNums"]}`); console.log(`助力情况:${data['data']['supportedNums']}/${data['data']['supportNeedNums']}`);
message += `邀请好友助力:${data["data"]["supportedNums"]}/${data["data"]["supportNeedNums"]}\n`; message += `邀请好友助力:${data['data']['supportedNums']}/${data['data']['supportNeedNums']}\n`
} }
} }
} catch (e) { } catch (e) {
@@ -407,30 +400,30 @@ function supportList() {
} finally { } finally {
resolve(); resolve();
} }
}); })
}); });
} }
//积分抽奖 //积分抽奖
function lottery() { function lottery() {
const options = taskPostUrl("/khc/record/lottery", {}); const options = taskPostUrl('/khc/record/lottery', {})
return new Promise( (resolve) => { return new Promise( (resolve) => {
$.post(options, async (err, resp, data) => { $.post(options, async (err, resp, data) => {
try { try {
if (err) { if (err) {
console.log(`${JSON.stringify(err)}`); console.log(`${JSON.stringify(err)}`)
console.log(`${$.name} API请求失败,请检查网路重试`); console.log(`${$.name} API请求失败,请检查网路重试`)
} else { } else {
data = JSON.parse(data); data = JSON.parse(data);
if (data.code === 200) { if (data.code === 200) {
if (data.data.prizeId !== 8) { if (data.data.prizeId !== 8) {
//已中奖 //已中奖
const url = "https://carnivalcity.m.jd.com/#/integralDetail"; const url = 'https://carnivalcity.m.jd.com/#/integralDetail';
console.log(`积分抽奖获得:${data.data.prizeName}`); console.log(`积分抽奖获得:${data.data.prizeName}`);
message += `积分抽奖获得:${data.data.prizeName}\n`; message += `积分抽奖获得:${data.data.prizeName}\n`;
$.msg($.name, "", `京东账号 ${$.index} ${$.nickName || $.UserName}\n积分抽奖获得:${data.data.prizeName}\n兑换地址:${url}`, { "open-url": url }); $.msg($.name, '', `京东账号 ${$.index} ${$.nickName || $.UserName}\n积分抽奖获得:${data.data.prizeName}\n兑换地址:${url}`, { 'open-url': url });
if ($.isNode()) await notify.sendNotify($.name, `京东账号 ${$.index} ${$.nickName || $.UserName}\n积分抽奖获得:${data.data.prizeName}\n兑换地址:${url}`); if ($.isNode()) await notify.sendNotify($.name, `京东账号 ${$.index} ${$.nickName || $.UserName}\n积分抽奖获得:${data.data.prizeName}\n兑换地址:${url}`);
} else { } else {
console.log(`积分抽奖结果:${data["data"]["prizeName"]}}`); console.log(`积分抽奖结果:${data['data']['prizeName']}}`);
} }
} }
} }
@@ -439,31 +432,31 @@ function lottery() {
} finally { } finally {
resolve(); resolve();
} }
}); })
}); });
} }
//查询抽奖记录(未兑换的) //查询抽奖记录(未兑换的)
function check() { function check() {
const options = taskPostUrl("/khc/record/convertRecord", { pageNum: 1 }); const options = taskPostUrl('/khc/record/convertRecord', { pageNum: 1 })
return new Promise( (resolve) => { return new Promise( (resolve) => {
$.post(options, async (err, resp, data) => { $.post(options, async (err, resp, data) => {
try { try {
if (err) { if (err) {
console.log(`${JSON.stringify(err)}`); console.log(`${JSON.stringify(err)}`)
console.log(`${$.name} API请求失败,请检查网路重试`); console.log(`${$.name} API请求失败,请检查网路重试`)
} else { } else {
data = JSON.parse(data); data = JSON.parse(data);
let str = ""; let str = '';
if (data.code === 200) { if (data.code === 200) {
for (let obj of data.data) { for (let obj of data.data) {
if (obj.hasOwnProperty("fillStatus") && obj.fillStatus !== true) { if (obj.hasOwnProperty('fillStatus') && obj.fillStatus !== true) {
str += JSON.stringify(obj); str += JSON.stringify(obj);
} }
} }
} }
if (str.length > 0) { if (str.length > 0) {
const url = "https://api.m.jd.com/api/#/integralDetail"; const url = 'https://carnivalcity.m.jd.com/#/integralDetail';
$.msg($.name, "", `京东账号 ${$.index} ${$.nickName || $.UserName}\n积分抽奖获得:${str}\n兑换地址:${url}`, { "open-url": url }); $.msg($.name, '', `京东账号 ${$.index} ${$.nickName || $.UserName}\n积分抽奖获得:${str}\n兑换地址:${url}`, { 'open-url': url });
if ($.isNode()) await notify.sendNotify($.name, `京东账号 ${$.index} ${$.nickName || $.UserName}\n积分抽奖获得:${str}\n兑换地址:${url}`); if ($.isNode()) await notify.sendNotify($.name, `京东账号 ${$.index} ${$.nickName || $.UserName}\n积分抽奖获得:${str}\n兑换地址:${url}`);
} }
} }
@@ -472,77 +465,77 @@ function check() {
} finally { } finally {
resolve(); resolve();
} }
}); })
}); });
} }
function myRank() { function myRank() {
return new Promise((resolve) => { return new Promise(resolve => {
const options = taskPostUrl("/khc/rank/myPastRanks", {}); const options = taskPostUrl("/khc/rank/myPastRanks", {});
$.post(options, async (err, resp, data) => { $.post(options, async (err, resp, data) => {
try { try {
if (err) { if (err) {
console.log(`${JSON.stringify(err)}`); console.log(`${JSON.stringify(err)}`)
console.log(`${$.name} API请求失败,请检查网路重试`); console.log(`${$.name} API请求失败,请检查网路重试`)
} else { } else {
data = JSON.parse(data); data = JSON.parse(data);
if (data.code === 200) { if (data.code === 200) {
if (data.data && data.data.length) { if (data.data && data.data.length) {
for (let i = 0; i < data.data.length; i++) { for (let i = 0; i < data.data.length; i++) {
$.date = data.data[i]["date"]; $.date = data.data[i]['date'];
if (data.data[i].status === "1") { if (data.data[i].status === '1') {
console.log(`开始领取往期奖励【${data.data[i]["prizeName"]}`); console.log(`开始领取往期奖励【${data.data[i]['prizeName']}`)
let res = await saveJbean($.date); let res = await saveJbean($.date);
// console.log('领奖结果', res) // console.log('领奖结果', res)
if (res && res.code === 200) { if (res && res.code === 200) {
$.beans += Number(res.data); $.beans += Number(res.data);
console.log(`${data.data[i]["date"]}日 【${res.data}】京豆奖励领取成功`); console.log(`${data.data[i]['date']}日 【${res.data}】京豆奖励领取成功`)
} else { } else {
console.log(`往期奖励领取失败:${JSON.stringify(res)}`); console.log(`往期奖励领取失败:${JSON.stringify(res)}`);
} }
await $.wait(500); await $.wait(500);
} else if (data.data[i].status === "3") { } else if (data.data[i].status === '3') {
console.log(`${data.data[i]["date"]}日 【${data.data[i]["prizeName"]}】往期京豆奖励已领取~`); console.log(`${data.data[i]['date']}日 【${data.data[i]['prizeName']}】往期京豆奖励已领取~`)
} else { } else {
console.log(`${data.data[i]["date"]}日 【${data.data[i]["status"]}】往期京豆奖励,今日争取进入前30000名哦~`); console.log(`${data.data[i]['date']}日 【${data.data[i]['status']}】往期京豆奖励,今日争取进入前30000名哦~`)
} }
} }
} }
} }
} }
} catch (e) { } catch (e) {
$.logErr(e, resp); $.logErr(e, resp)
} finally { } finally {
resolve(data); resolve(data);
} }
}); })
}); })
} }
//领取往期奖励API //领取往期奖励API
function saveJbean(date) { function saveJbean(date) {
return new Promise((resolve) => { return new Promise(resolve => {
const body = "date=" + date; const body = {"date":`${date}`};
const options = taskPostUrl("/khc/rank/getRankJingBean", body); const options = taskPostUrl('/khc/rank/getRankJingBean', body)
$.post(options, (err, resp, data) => { $.post(options, (err, resp, data) => {
try { try {
// console.log('领取京豆结果', data); // console.log('领取京豆结果', data);
if (err) { if (err) {
console.log(`${JSON.stringify(err)}`); console.log(`${JSON.stringify(err)}`)
console.log(`${$.name} API请求失败,请检查网路重试`); console.log(`${$.name} API请求失败,请检查网路重试`)
} else { } else {
data = JSON.parse(data); data = JSON.parse(data);
} }
} catch (e) { } catch (e) {
$.logErr(e, resp); $.logErr(e, resp)
} finally { } finally {
resolve(data); resolve(data);
} }
}); })
}); })
} }
async function doHelp() { async function doHelp() {
console.log(`\n开始助力好友`); console.log(`\n开始助力好友`);
for (let i in $.newShareCodes) { for (let i in $.newShareCodes) {
let item = $.newShareCodes[i]; let item = $.newShareCodes[i]
if (!item) continue; if (!item) continue;
const helpRes = await toHelp(item.trim()); const helpRes = await toHelp(item.trim());
if (helpRes.data.status === 5) { if (helpRes.data.status === 5) {
@@ -550,45 +543,45 @@ async function doHelp() {
break; break;
}else if (helpRes.data.status === 4){ }else if (helpRes.data.status === 4){
console.log(`该助力码[${item}]已达上限`); console.log(`该助力码[${item}]已达上限`);
$.newShareCodes[i] = ""; $.newShareCodes[i] = ''
} }
} }
} }
//助力API //助力API
function toHelp(code = "ca5cb827-4f0d-4133-85cc-9059ef8588e0") { function toHelp(code = "576faa38-201c-4fc3-aef8-913d4994c32b") {
return new Promise((resolve) => { return new Promise(resolve => {
const body = { shareId: `${code}` }; const body = {"shareId":`${code}`};
const options = taskPostUrl("/khc/task/doSupport", body); const options = taskPostUrl('/khc/task/doSupport', body)
$.post(options, (err, resp, data) => { $.post(options, (err, resp, data) => {
try { try {
if (err) { if (err) {
console.log(`${JSON.stringify(err)}`); console.log(`${JSON.stringify(err)}`)
console.log(`${$.name} API请求失败,请检查网路重试`); console.log(`${$.name} API请求失败,请检查网路重试`)
} else { } else {
console.log(`助力结果:${data}`); console.log(`助力结果:${data}`);
data = JSON.parse(data); data = JSON.parse(data);
if (data && data["code"] === 200) { if (data && data['code'] === 200) {
if (data["data"]["status"] === 6) console.log(`助力成功\n`); if (data['data']['status'] === 6) console.log(`助力成功\n`)
if (data["data"]["jdNums"]) $.beans += data["data"]["jdNums"]; if (data['data']['jdNums']) $.beans += data['data']['jdNums'];
} }
} }
} catch (e) { } catch (e) {
$.logErr(e, resp); $.logErr(e, resp)
} finally { } finally {
resolve(data); resolve(data);
} }
}); })
}); })
} }
//获取邀请码API //获取邀请码API
function getHelp() { function getHelp() {
return new Promise((resolve) => { return new Promise(resolve => {
const options = taskPostUrl("/khc/task/getSupport", {}); const options = taskPostUrl("/khc/task/getSupport", {});
$.post(options, async (err, resp, data) => { $.post(options, async (err, resp, data) => {
try { try {
if (err) { if (err) {
console.log(`${JSON.stringify(err)}`); console.log(`${JSON.stringify(err)}`)
console.log(`${$.name} API请求失败,请检查网路重试`); console.log(`${$.name} API请求失败,请检查网路重试`)
} else { } else {
data = JSON.parse(data); data = JSON.parse(data);
if (data.code === 200) { if (data.code === 200) {
@@ -597,29 +590,29 @@ function getHelp() {
$.temp.push(data.data.shareId); $.temp.push(data.data.shareId);
} else { } else {
console.log(`获取邀请码失败:${JSON.stringify(data)}`); console.log(`获取邀请码失败:${JSON.stringify(data)}`);
if (data.code === 1002) $.blockAccount = true; if (data.code === 1002 || data.code === 1001) $.blockAccount = true;
} }
} }
} catch (e) { } catch (e) {
$.logErr(e, resp); $.logErr(e, resp)
} finally { } finally {
resolve(data); resolve(data);
} }
}); })
}); })
} }
//获取当前活动总京豆数量 //获取当前活动总京豆数量
function getListJbean() { function getListJbean() {
return new Promise((resolve) => { return new Promise(resolve => {
const body = { const body = {
pageNum: ``, pageNum: ``
}; }
const options = taskPostUrl("/khc/record/jingBeanRecord", body); const options = taskPostUrl("/khc/record/jingBeanRecord", body);
$.post(options, async (err, resp, data) => { $.post(options, async (err, resp, data) => {
try { try {
if (err) { if (err) {
console.log(`${JSON.stringify(err)}`); console.log(`${JSON.stringify(err)}`)
console.log(`${$.name} API请求失败,请检查网路重试`); console.log(`${$.name} API请求失败,请检查网路重试`)
} else { } else {
data = JSON.parse(data); data = JSON.parse(data);
if (data.code === 200) { if (data.code === 200) {
@@ -630,25 +623,25 @@ function getListJbean() {
} }
} }
} catch (e) { } catch (e) {
$.logErr(e, resp); $.logErr(e, resp)
} finally { } finally {
resolve(data); resolve(data);
} }
}); })
}); })
} }
//查询累计获得积分 //查询累计获得积分
function getListIntegral() { function getListIntegral() {
return new Promise((resolve) => { return new Promise(resolve => {
const body = { const body = {
pageNum: ``, pageNum: ``
}; }
const options = taskPostUrl("/khc/record/integralRecord", body); const options = taskPostUrl("/khc/record/integralRecord", body);
$.post(options, async (err, resp, data) => { $.post(options, async (err, resp, data) => {
try { try {
if (err) { if (err) {
console.log(`${JSON.stringify(err)}`); console.log(`${JSON.stringify(err)}`)
console.log(`${$.name} API请求失败,请检查网路重试`); console.log(`${$.name} API请求失败,请检查网路重试`)
} else { } else {
data = JSON.parse(data); data = JSON.parse(data);
if (data.code === 200) { if (data.code === 200) {
@@ -664,23 +657,23 @@ function getListIntegral() {
} }
} }
} catch (e) { } catch (e) {
$.logErr(e, resp); $.logErr(e, resp)
} finally { } finally {
resolve(data); resolve(data);
} }
}); })
}); })
} }
//查询今日累计积分与排名 //查询今日累计积分与排名
function getListRank() { function getListRank() {
return new Promise((resolve) => { return new Promise(resolve => {
const options = taskPostUrl("/khc/rank/dayRank", {}); const options = taskPostUrl("/khc/rank/dayRank", {});
$.post(options, async (err, resp, data) => { $.post(options, async (err, resp, data) => {
try { try {
if (err) { if (err) {
console.log(`${JSON.stringify(err)}`); console.log(`${JSON.stringify(err)}`)
console.log(`${$.name} API请求失败,请检查网路重试`); console.log(`${$.name} API请求失败,请检查网路重试`)
} else { } else {
data = JSON.parse(data); data = JSON.parse(data);
if (data.code === 200) { if (data.code === 200) {
@@ -697,71 +690,109 @@ function getListRank() {
} }
} }
} catch (e) { } catch (e) {
$.logErr(e, resp); $.logErr(e, resp)
} finally { } finally {
resolve(data); resolve(data);
} }
}); })
}); })
} }
function updateShareCodesCDN(url = 'https://cdn.jsdelivr.net/gh/smiek2221/updateTeam@master/shareCodes/jd_cityShareCodes.json') {
return new Promise(resolve => {
$.get({url , headers:{"User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1")}, timeout: 200000}, async (err, resp, data) => {
try {
if (err) {
console.log(`${JSON.stringify(err)}`)
console.log(`${$.name} API请求失败,请检查网路重试`)
} else {
$.updatePkActivityIdRes = JSON.parse(data);
}
} catch (e) {
$.logErr(e, resp)
} finally {
resolve();
}
})
})
}
//格式化助力码 //格式化助力码
function shareCodesFormat() { function shareCodesFormat() {
return new Promise(async (resolve) => { return new Promise(async resolve => {
// console.log(`第${$.index}个京东账号的助力码:::${$.shareCodesArr[$.index - 1]}`) // console.log(`第${$.index}个京东账号的助力码:::${$.shareCodesArr[$.index - 1]}`)
$.newShareCodes = []; $.newShareCodes = [];
if ($.shareCodesArr[$.index - 1]) { if ($.shareCodesArr[$.index - 1]) {
$.newShareCodes = $.shareCodesArr[$.index - 1].split("@"); $.newShareCodes = $.shareCodesArr[$.index - 1].split('@');
} else { } else {
// console.log(`由于您第${$.index}个京东账号未提供shareCode,将采纳本脚本自带的助力码\n`) // console.log(`由于您第${$.index}个京东账号未提供shareCode,将采纳本脚本自带的助力码\n`)
const tempIndex = $.index > inviteCodes.length ? inviteCodes.length - 1 : $.index - 1; const tempIndex = $.index > inviteCodes.length ? (inviteCodes.length - 1) : ($.index - 1);
$.newShareCodes = (inviteCodes[tempIndex] && inviteCodes[tempIndex].split("@")) || []; $.newShareCodes = inviteCodes[tempIndex] && inviteCodes[tempIndex].split('@') || [];
if ($.updatePkActivityIdRes && $.updatePkActivityIdRes.length) $.newShareCodes = [...$.updatePkActivityIdRes, ...$.newShareCodes]; if ($.updatePkActivityIdRes && $.updatePkActivityIdRes.length) $.newShareCodes = [...$.updatePkActivityIdRes, ...$.newShareCodes];
} }
// console.log(`第${$.index}个京东账号将要助力的好友${JSON.stringify($.newShareCodes)}`)
resolve(); resolve();
}); })
}
function requireConfig() {
return new Promise(resolve => {
console.log(`开始获取${$.name}配置文件\n`);
let shareCodes = [];
if ($.isNode()) {
if (process.env.JD818_SHARECODES) {
if (process.env.JD818_SHARECODES.indexOf('\n') > -1) {
shareCodes = process.env.JD818_SHARECODES.split('\n');
} else {
shareCodes = process.env.JD818_SHARECODES.split('&');
}
}
}
console.log(`${cookiesArr.length}个京东账号\n`);
$.shareCodesArr = [];
if ($.isNode()) {
Object.keys(shareCodes).forEach((item) => {
if (shareCodes[item]) {
$.shareCodesArr.push(shareCodes[item])
}
})
}
console.log(`您提供了${$.shareCodesArr.length}个账号的${$.name}助力码\n`);
resolve()
})
} }
function taskPostUrl(a,t = {}) { function taskPostUrl(a,t = {}) {
const body = $.toStr({ ...t, apiMapping: `${a}` }); const body = $.toStr({...t,"apiMapping":`${a}`})
return { return {
url: `${JD_API_HOST}`, url: `${JD_API_HOST}`,
body: `appid=guardian-starjd&functionId=carnivalcity_jd_prod&body=${body}&t=${Date.now()}&loginType=2`, body: `appid=guardian-starjd&functionId=carnivalcity_jd_prod&body=${body}&t=${Date.now()}&loginType=2`,
headers: { headers: {
Accept: "application/json, text/plain, */*", "Accept": "application/json, text/plain, */*",
"Accept-Encoding": "gzip, deflate, br", "Accept-Encoding": "gzip, deflate, br",
"Accept-Language": "zh-cn", "Accept-Language": "zh-cn",
Connection: "keep-alive", "Connection": "keep-alive",
"Content-Type": "application/x-www-form-urlencoded", "Content-Type": "application/x-www-form-urlencoded",
Origin: "https://carnivalcity.m.jd.com", "Origin": "https://carnivalcity.m.jd.com",
Referer: "https://carnivalcity.m.jd.com/", "Referer": "https://carnivalcity.m.jd.com/",
Cookie: cookie, "Cookie": cookie,
"User-Agent": $.UA, "User-Agent": $.UA,
}, }
}; }
} }
async function showMsg() { async function showMsg() {
if ($.beans) { if ($.beans) {
allMessage += `京东账号${$.index} ${$.nickName || $.UserName}\n本次运行获得:${ allMessage += `京东账号${$.index} ${$.nickName || $.UserName}\n本次运行获得:${$.beans}京豆\n${message}活动地址:https://carnivalcity.m.jd.com${$.index !== cookiesArr.length ? '\n\n' : ''}`
$.beans
}京豆\n${message}活动地址:https://carnivalcity.m.jd.com/#/home?shareId=ddd345fb-57bb-4ece-968b-7bf4c92be7cc&t=${Date.now()}${$.index !== cookiesArr.length ? "\n\n" : ""}`;
} }
$.msg($.name, `京东账号${$.index} ${$.nickName || $.UserName}`, `${message}具体详情点击弹窗跳转后即可查看`, { $.msg($.name, `京东账号${$.index} ${$.nickName || $.UserName}`, `${message}具体详情点击弹窗跳转后即可查看`, {"open-url": "https://carnivalcity.m.jd.com"});
"open-url": "https://carnivalcity.m.jd.com/#/home?shareId=ddd345fb-57bb-4ece-968b-7bf4c92be7cc&t=" + Date.now(),
});
} }
function getUA(){ function getUA(){
$.UA = `jdapp;iPhone;10.0.10;14.3;${randomString( $.UA = `jdapp;iPhone;10.0.10;14.3;${randomString(40)};network/wifi;model/iPhone12,1;addressid/4199175193;appBuild/167741;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`
40
)};network/wifi;model/iPhone12,1;addressid/4199175193;appBuild/167741;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`;
} }
function randomString(e) { function randomString(e) {
e = e || 32; e = e || 32;
let t = "abcdef0123456789", let t = "abcdef0123456789", a = t.length, n = "";
a = t.length, for (i = 0; i < e; i++)
n = ""; n += t.charAt(Math.floor(Math.random() * a));
for (i = 0; i < e; i++) n += t.charAt(Math.floor(Math.random() * a)); return n
return n;
} }
+27 -48
View File
File diff suppressed because one or more lines are too long
+89 -99
View File
File diff suppressed because one or more lines are too long
+21 -82
View File
File diff suppressed because one or more lines are too long
+106
View File
@@ -0,0 +1,106 @@
/*
签到领现金兑换
需要填写exchangeAccounts参数,兑换多少取决于app内显示,默认为所有账号兑换10红包,部分账号会出现参数错误的提示。指定账号+金额应这样填写 export exchangeAccounts="pt_pin1@2&pt_pin2@10"
0 0 * * * jd_cash_exchange.js
*/
const jd_helpers = require("./utils/JDHelpers.js");
const jd_env = require("./utils/JDEnv.js");
const $ = jd_env.env("签到领现金兑换");
const ua = `jdltapp;iPhone;3.1.0;${Math.ceil(Math.random() * 4 + 10)}.${Math.ceil(Math.random() * 4)};${randomString(40)}`;
let cookiesArr = [];
var exchangeAccounts = process.env.exchangeAccounts ?? "";
let amount = 10;
!(async () => {
if (exchangeAccounts) {
v = exchangeAccounts.split("&");
exchangeAccounts = {};
for (var i of v) {
j = i.split("@");
exchangeAccounts[j[0]] = j[1] ? +j[1] : 10;
}
}
await requireConfig();
for (let i = 0; i < cookiesArr.length; i++) {
if (cookiesArr[i]) {
cookie = cookiesArr[i];
pt_pin = cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1];
amount = 0;
if (exchangeAccounts) {
amount = exchangeAccounts[pt_pin];
if (!amount) continue;
}
exchange(cookie, amount, pt_pin);
}
}
await $.wait(3000);
})();
function exchange(cookie, amount, pt_pin) {
body = "";
if (amount == 2) {
body = `adid=41CBA646-6EA3-4E79-8623-680F74A5FD7D&body={"type":"2","amount":"200"}&build=167724&client=apple&clientVersion=10.0.6&d_brand=apple&d_model=iPhone10,4&eid=eidI56d7812024s3J0UGWUp+RVK4+9/EY14sMidFB85YSXDSHPI9r07frvvGbXtVFQYuMENUoWFIARXaAYlZNGDyc8dfGQqd42Fer11K0PRjAQjbTBp5&isBackground=N&joycious=79&lang=zh_CN&networkType=wifi&networklibtype=JDNetworkBaseAF&openudid=96ca9290eae9f41770e2c16fd4d07c67eb06b445&osVersion=14.4.2&partner=apple&rfs=0000&scope=10&screen=750*1334&sign=1be417384d1ffccde3dbf6a207277706&st=1625756188161&sv=111&uemps=0-0&uts=0f31TVRjBSsqndu4/jgUPz6uymy50MQJCNy5Ou1kywjunNJYhK2mQzTDwvkNHz8d6J9JA+AN8f7dHT8E/pp+/K+s+/hw3ktfXf7rIWQ3qVqjrVZ8RJpuJJq5WCCsy0wGM2uum+4ppHaNVwnSBrL/ZniFeKJAAxcyCaBFHBfNkP1t3YA8CtB8pQTjm5pvQ/eWyy8qqiBgfB+iPthLx1deRA==&uuid=hjudwgohxzVu96krv/T6Hg==`;
} else {
amount = 10;
body = `adid=A23D8ECF-B992-477E-BA88-A5E7680DD8F6&body={"type":"2","amount":"1000"}&build=167638&client=apple&clientVersion=9.5.0&eid=eidI5E4E0119RTBCMkMxNEMtNjgxQi00NQ==20v8iy1ivQ9DClEjHXmgvcd5v2MhcsarbJkOkdI5EZKIlK2CiFmfRE6MG017DU87QAHcuwoYwkjGXGws&isBackground=N&joycious=61&lang=zh_CN&networkType=wifi&networklibtype=JDNetworkBaseAF&openudid=3245ad3d16ab2153c69f9ca91cd2e931b06a3bb8&osVersion=13.6.1&rfs=0000&scope=11&screen=1242*2208&sign=427a28328d1650d4c553c1cfdf25744c&st=1618885128891&sv=100&uemps=0-0&uts=0f31TVRjBSsqndu4/jgUPz6uymy50MQJ/+MrMjk4y13kWuMN4VaxQad1iD1QgEcDK/YYLWTuOPAd1akjd5yd8GStO+tvG+FdogNDbDiKjvQgXieBZsBtY63e8GaM2SFD74E/SCZQOKBCgUHo9/gWatL87O9NO0DFzwx44pkT4mA7/S1gDn01AyEbB70wvtsnPtixLxroKuYYDIBNepnJLQ==&uuid=hjudwgohxzVu96krv/T6Hg==`;
}
$.post(
{
url: "https://api.m.jd.com/client.action?functionId=cash_getRedPacket",
headers: {
Cookie: cookie,
Accept: "*/*",
Connection: "keep-alive",
"Accept-Encoding": "gzip, deflate, br",
"User-Agent": ua,
"Accept-Language": "zh-Hans-CN;q=1",
Host: "api.m.jd.com",
"Content-Type": "application/x-www-form-urlencoded",
},
body: body,
},
(err, resp, data) => {
try {
data = JSON.parse(data);
if (data.data) {
if (data.data.bizMsg.indexOf("success") != -1) {
data.data.bizMsg = `成功兑换${amount}元红包`;
notify.sendNotify(`签到领现金账号 ${decodeURIComponent(pt_pin)}`, data.data.bizMsg);
}
}
if (data.errorMessage) {
console.log(data.errorMessage);
}
} catch (e) {
$.logErr("Error: ", e, resp);
}
}
);
}
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"), ...jd_helpers.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;
}
+152 -60
View File
File diff suppressed because one or more lines are too long
+14 -15
View File
File diff suppressed because one or more lines are too long
+163 -105
View File
File diff suppressed because one or more lines are too long
+17 -41
View File
File diff suppressed because one or more lines are too long
+322
View File
@@ -0,0 +1,322 @@
/*
cron "0 8,12 * * *" jd_crowdfunding_wish.js
*/
const jd_helpers = require("./utils/JDHelpers.js");
const jd_env = require("./utils/JDEnv.js");
const $ = jd_env.env("京东众筹许愿池");
const notify = $.isNode() ? require("./sendNotify") : "";
const jdCookieNode = $.isNode() ? require("./jdCookie.js") : "";
let timestamp = Date.now();
let cookiesArr = [],
cookie = "",
message;
a = "";
let allMessage = "";
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"), ...jd_helpers.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/",
{
"open-url": "https://bean.m.jd.com/",
}
);
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;
message = "";
console.log(`\n******开始【京东账号${$.index}${$.UserName}*********\n`);
await task();
}
}
if ($.isNode() && allMessage && !process.env.CROWDFUNDING_WISH_NOTIFY_CONTROL) {
await notify.sendNotify(`${$.name}`, `${allMessage}`);
}
})()
.catch((e) => {
$.log("", `${$.name}, 失败! 原因: ${e}!`, "");
})
.finally(() => {
$.done();
});
function showMsg() {
return new Promise((resolve) => {
$.log($.name, "", `京东账号${$.index}${$.nickName}\n${message}`);
resolve();
});
}
function task() {
return new Promise(async (resolve) => {
let options = {
url: `https://api.m.jd.com/client.action`,
body: `functionId=healthyDay_getHomeData&body={"appId":"1E1NXxq0","taskToken":"","channelId":1}&client=wh5&clientVersion=1.0.0`,
headers: {
Origin: "https://h5.jd.com",
Host: "api.m.jd.com",
"User-Agent":
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 UBrowser/5.6.12150.8 Safari/537.36",
Cookie: cookie,
},
};
$.post(options, async (err, resp, data) => {
try {
data = JSON.parse(data);
if (data.data.bizMsg == "success") {
$.log(`===============存货金币===============`);
$.log(`${data.data.result.userInfo.userScore}`);
userScore = data.data.result.userInfo.userScore;
$.log(`===============抽奖需要===============`);
$.log(`${data.data.result.userInfo.scorePerLottery}`);
scorePerLottery = data.data.result.userInfo.scorePerLottery;
tasklist = data.data.result.taskVos;
$.log(`===============去做任务===============`);
$.log(`===============浏览并关注众筹频道===============`);
tk = tasklist[0].shoppingActivityVos[0].taskToken;
taskId = tasklist[0].taskId;
await dotask(tk, taskId, 0);
await dotask(tk, taskId, 1);
await dotask(tk, taskId, 0);
$.log(`===============浏览众筹频道===============`);
tk = tasklist[1].shoppingActivityVos[0].taskToken;
taskId = tasklist[1].taskId;
await dotask(tk, taskId, 0);
await dotask(tk, taskId, 1);
await $.wait(15000);
await dotask(tk, taskId, 0);
$.log(`===============每浏览商品10s可获得200金币===============`);
tk = tasklist[2].productInfoVos[0].taskToken;
taskId = tasklist[2].taskId;
item = tasklist[2].productInfoVos[0].itemId;
await dotask(tk, taskId, 0, item);
await dotask(tk, taskId, 1, item);
await $.wait(11000);
await dotask(tk, taskId, 0, item);
tk = tasklist[2].productInfoVos[1].taskToken;
taskId = tasklist[2].taskId;
item = tasklist[2].productInfoVos[1].itemId;
await dotask(tk, taskId, 0, item);
await dotask(tk, taskId, 1, item);
await $.wait(11000);
await dotask(tk, taskId, 0, item);
tk = tasklist[2].productInfoVos[2].taskToken;
taskId = tasklist[2].taskId;
item = tasklist[2].productInfoVos[2].itemId;
await dotask(tk, taskId, 0, item);
await dotask(tk, taskId, 1, item);
await $.wait(11000);
await dotask(tk, taskId, 0, item);
tk = tasklist[2].productInfoVos[3].taskToken;
item = tasklist[2].productInfoVos[3].itemId;
taskId = tasklist[2].taskId;
await dotask(tk, taskId, 0, item);
await dotask(tk, taskId, 1, item);
await $.wait(11000);
await dotask(tk, taskId, 0, item);
tk = tasklist[2].productInfoVos[4].taskToken;
item = tasklist[2].productInfoVos[4].itemId;
taskId = tasklist[2].taskId;
await dotask(tk, taskId, 0, item);
await dotask(tk, taskId, 1, item);
await $.wait(11000);
await dotask(tk, taskId, 0, item);
$.log(`===============邀请一个好友助力可获得300金币===============`);
tk = tasklist[3].assistTaskDetailVo.taskToken;
taskId = tasklist[3].taskId;
yqm = tasklist[3].assistTaskDetailVo.itemId;
$.log(`邀请码${yqm}\n正在取随机CK互相助力3次`);
for (let i = 0; i < 3; i++) {
await help(tk, taskId, 0, yqm);
await help(tk, taskId, 1, yqm);
await help(tk, taskId, 0, yqm);
}
$.log(`===============关注店铺可获得200金币===============`);
tk = tasklist[4].followShopVo[0].taskToken;
item = tasklist[4].followShopVo[0].itemId;
taskId = tasklist[4].taskId;
await dotask(tk, taskId, 0, item);
await dotask(tk, taskId, 1, item);
await dotask(tk, taskId, 0, item);
tk = tasklist[4].followShopVo[1].taskToken;
item = tasklist[4].followShopVo[1].itemId;
taskId = tasklist[4].taskId;
await dotask(tk, taskId, 0, item);
await dotask(tk, taskId, 1, item);
await dotask(tk, taskId, 0, item);
tk = tasklist[4].followShopVo[2].taskToken;
item = tasklist[4].followShopVo[2].itemId;
taskId = tasklist[4].taskId;
await dotask(tk, taskId, 0, item);
await dotask(tk, taskId, 1, item);
await dotask(tk, taskId, 0, item);
$.log(`===============连续签到===============`);
tk = tasklist[5].simpleRecordInfoVo.taskToken;
item = tasklist[5].simpleRecordInfoVo.itemId;
taskId = tasklist[5].taskId;
await dotask(tk, taskId, 0, item);
await dotask(tk, taskId, 1, item);
await dotask(tk, taskId, 0, item);
await getLottery();
cj = $.userScore / 500;
cj = parseInt(cj);
if (cj > 0) {
for (let i = 0; i < cj; i++) {
await getLottery();
}
}
} else if (data.data.bizMsg !== "success") {
console.log(data.msg);
}
} catch (e) {
$.logErr(e, resp);
} finally {
resolve();
}
});
});
}
function help(taskToken, taskId, actionType, itemId) {
return new Promise(async (resolve) => {
let options = {
url: `https://api.m.jd.com/client.action`,
body: `functionId=harmony_collectScore&body={"appId":"1E1NXxq0","taskToken":"${taskToken}","taskId":${taskId},"itemId":"${itemId}","actionType":${actionType}}&client=wh5&clientVersion=1.0.0`,
headers: {
Origin: "https://h5.jd.com",
Host: "api.m.jd.com",
"User-Agent":
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 UBrowser/5.6.12150.8 Safari/537.36",
Cookie: ck2,
},
};
$.post(options, async (err, resp, data) => {
try {
data = JSON.parse(data);
const bizMsg = data?.data?.bizMsg;
if (bizMsg == "success") {
$.log(`===============任务完成===============`);
console.log(bizMsg);
$.log(`获得${data.data.result.userScore}`);
} else if (bizMsg !== "success") {
console.log(bizMsg);
}
} catch (e) {
$.logErr(e, resp);
} finally {
resolve();
}
});
});
}
function dotask(taskToken, taskId, actionType, itemId) {
return new Promise(async (resolve) => {
let options = {
url: `https://api.m.jd.com/client.action`,
body: `functionId=harmony_collectScore&body={"appId":"1E1NXxq0","taskToken":"${taskToken}","taskId":${taskId},"itemId":"${itemId}","actionType":${actionType}}&client=wh5&clientVersion=1.0.0`,
headers: {
Origin: "https://h5.jd.com",
Host: "api.m.jd.com",
"User-Agent":
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 UBrowser/5.6.12150.8 Safari/537.36",
Cookie: cookie,
},
};
$.post(options, async (err, resp, data) => {
try {
data = JSON.parse(data);
if (data.data.bizMsg == "success") {
$.log(`===============任务完成===============`);
console.log(data.data.bizMsg);
$.log(`获得${data.data.result.userScore}`);
} else if (data.data.bizMsg !== "success") {
console.log(data.data.bizMsg);
}
} catch (e) {
$.logErr(e, resp);
} finally {
resolve();
}
});
});
}
function getLottery() {
return new Promise(async (resolve) => {
let options = {
url: `https://api.m.jd.com/client.action`,
body: `functionId=interact_template_getLotteryResult&body={"appId":"1E1NXxq0"}&client=wh5&clientVersion=1.0.0`,
headers: {
Origin: "https://h5.jd.com",
Host: "api.m.jd.com",
"User-Agent":
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 UBrowser/5.6.12150.8 Safari/537.36",
Cookie: cookie,
},
};
$.post(options, async (err, resp, data) => {
try {
data = JSON.parse(data);
if (data.data.bizMsg == "success") {
$.userScore = data.data.result.userScore;
$.bizMsg = data.data.bizMsg;
$.log(`===============开始抽奖===============`);
if (data.data.result.userAwardsCacheDto.jBeanAwardVo) {
$.log(data.data.result.userAwardsCacheDto.jBeanAwardVo.prizeName);
allMessage += `京东账号${$.index}-${
$.nickName || $.UserName
}\n抽奖京豆: ${
data.data.result.userAwardsCacheDto.jBeanAwardVo.quantity
}${$.index !== cookiesArr.length ? "\n\n" : "\n\n"}`;
} else $.log(`啥都没抽到`);
} else if (data.data.bizMsg !== "success") {
console.log(data.data.bizMsg);
}
} catch (e) {
$.logErr(e, resp);
} finally {
resolve();
}
});
});
}
+23 -41
View File
File diff suppressed because one or more lines are too long
+499 -659
View File
File diff suppressed because it is too large Load Diff
+18 -805
View File
File diff suppressed because one or more lines are too long
+126 -137
View File
File diff suppressed because one or more lines are too long
+385 -415
View File
File diff suppressed because one or more lines are too long
+271 -369
View File
File diff suppressed because one or more lines are too long
+339
View File
@@ -0,0 +1,339 @@
/*
店铺签到各类店铺签到有新的店铺直接添加token即可
*/
const jd_helpers = require('./utils/JDHelpers.js');
const jd_env = require('./utils/JDEnv.js');
const $ = jd_env.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;
const JD_API_HOST = 'https://api.m.jd.com/api?appid=interCenter_shopSign';
let activityId = '';
let vender = '';
let num = 0;
let shopname = '';
const token = [
'020E4A5B75AE493CDF3020628CA72FDE', // 3天,10豆;5天,20豆;7天,35豆;
'ACD7EB42FB65AF1A447AEB329235DE04', // 每日,3豆;15天,100豆;
'5BB2C6C6332AD842011240152F7550EB', // 每日,6豆;7天,100豆;
'6C6B2702DDAAEDEBE5E68E41B6264CF6', // 每日,5豆;7天,200积分;
'CDC56C42F64CA34677E5894F28AF4871', // 每日,100分;1天,200分、2豆;2天,1000分、25-3券;
'2075567CC6ED0F30EAFFCF901F6C486D', // 每日,2豆;10天,100豆;
'CAF5BA5BF6B8317E282FCBF9F5C00B0E', // 每日,2豆;5天,10豆;10天,20豆;15天,25豆;
'A133DE5D8D1A5A612F49CBE1D9BCE7AA', // 每日,2豆;20天,5元e卡;
'E9E4861F0B12E5E483C949C818E3EAB8', // 每日,1豆;10天,20豆;20天,50豆;
'83E9B38C310EB5D26657977EF8FECA0F', // 7天,20积分;15天,30豆;
'7DE1E4B12326576BF7C5D347CC909451', // 每日,10豆;7天,100豆;
'513B43DB672C8C7B0D975DB75328A131', // 每日,5豆;26天,88豆;
'9BABD41E5674FD5791963D5366BEC634', // 每日,1豆;5天,10豆;21天,100豆;
'EFFD0BF4069A8B6882A55FB07ACDA60F', // 10天,30豆;20天,60豆;30天,100豆;
];
//IOS等用户直接用NobyDa的jd 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 {
let cookiesData = $.getdata('CookiesJD') || '[]';
cookiesData = jd_helpers.jsonParse(cookiesData);
cookiesArr = cookiesData.map((item) => item.cookie);
cookiesArr.reverse();
cookiesArr.push(...[$.getdata('CookieJD2'), $.getdata('CookieJD')]);
cookiesArr.reverse();
cookiesArr = cookiesArr.filter((item) => item !== '' && item !== null && item !== undefined);
}
!(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 dpqd();
if (i < 1) {
await showMsg();
}
}
}
})()
.catch((e) => {
$.log('', `${$.name}, 失败! 原因: ${e}!`, '');
})
.finally(() => {
$.done();
});
//开始店铺签到
async function dpqd() {
for (var j = 0; j < token.length; j++) {
num = j + 1;
if (token[j] == '') {
continue;
}
await getvenderId(token[j]);
if (vender == '') {
continue;
}
await getvenderName(vender);
await getActivityInfo(token[j], vender);
await signCollectGift(token[j], vender, activityId);
await taskUrl(token[j], vender);
}
}
//获取店铺ID
function getvenderId(token) {
return new Promise((resolve) => {
const options = {
url: `https://api.m.jd.com/api?appid=interCenter_shopSign&t=${Date.now()}&loginType=2&functionId=interact_center_shopSign_getActivityInfo&body={%22token%22:%22${token}%22,%22venderId%22:%22%22}&jsonp=jsonp1000`,
headers: {
accept: '*/*',
'accept-encoding': 'gzip, deflate, br',
'accept-language': 'zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7',
cookie: cookie,
referer: 'https://h5.m.jd.com/',
'User-Agent': `Mozilla/5.0 (Linux; U; Android 10; zh-cn; MI 8 Build/QKQ1.190828.002) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/79.0.3945.147 Mobile Safari/537.36 XiaoMi/MiuiBrowser/13.5.40`,
},
};
$.get(options, (err, resp, data) => {
try {
if (err) {
console.log(`\n${$.name}: API查询请求失败 ‼️‼️`);
$.logErr(err);
} else {
//console.log(data)
data = JSON.parse(/{(.*)}/g.exec(data)[0]);
if (data.code == 402) {
vender = '';
console.log(`` + num + `个店铺签到活动已失效`);
message += `` + num + `个店铺签到活动已失效\n`;
} else {
vender = data.data.venderId;
}
}
} catch (e) {
$.logErr(e, resp);
} finally {
resolve(data);
}
});
});
}
//获取店铺名称
function getvenderName(venderId) {
return new Promise((resolve) => {
const options = {
url: `https://wq.jd.com/mshop/QueryShopMemberInfoJson?venderId=${venderId}`,
headers: {
accept: '*/*',
'accept-encoding': 'gzip, deflate, br',
'accept-language': 'zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7',
cookie: cookie,
'User-Agent': `Mozilla/5.0 (Linux; U; Android 10; zh-cn; MI 8 Build/QKQ1.190828.002) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/79.0.3945.147 Mobile Safari/537.36 XiaoMi/MiuiBrowser/13.5.40`,
},
};
$.get(options, (err, resp, data) => {
try {
if (err) {
console.log(`\n${$.name}: API查询请求失败 ‼️‼️`);
$.logErr(err);
} else {
//console.log(data)
data = JSON.parse(data);
shopName = data.shopName;
console.log(`` + shopName + ``);
message += `` + shopName + ``;
}
} catch (e) {
$.logErr(e, resp);
} finally {
resolve(data);
}
});
});
}
//获取店铺活动信息
function getActivityInfo(token, venderId) {
return new Promise((resolve) => {
const options = {
url: `${JD_API_HOST}&t=${Date.now()}&loginType=2&functionId=interact_center_shopSign_getActivityInfo&body={%22token%22:%22${token}%22,%22venderId%22:${venderId}}&jsonp=jsonp1005`,
headers: {
accept: 'accept',
'accept-encoding': 'gzip, deflate',
'accept-language': 'zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7',
cookie: cookie,
referer: `https://h5.m.jd.com/babelDiy/Zeus/2PAAf74aG3D61qvfKUM5dxUssJQ9/index.html?token=${token}&sceneval=2&jxsid=16178634353215523301&cu=true&utm_source=kong&utm_medium=jingfen&utm_campaign=t_2009753434_&utm_term=fa3f8f38c56f44e2b4bfc2f37bce9713`,
'User-Agent': `Mozilla/5.0 (Linux; U; Android 10; zh-cn; MI 8 Build/QKQ1.190828.002) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/79.0.3945.147 Mobile Safari/537.36 XiaoMi/MiuiBrowser/13.5.40`,
},
};
$.get(options, (err, resp, data) => {
try {
if (err) {
// console.log(data)
console.log(`\n${$.name}: API查询请求失败 ‼️‼️`);
$.logErr(err);
} else {
//console.log(data)
data = JSON.parse(/{(.*)}/g.exec(data)[0]);
activityId = data.data.id;
//console.log(data)
let mes = '';
for (let i = 0; i < data.data.continuePrizeRuleList.length; i++) {
const level = data.data.continuePrizeRuleList[i].level;
const discount = data.data.continuePrizeRuleList[i].prizeList[0].discount;
mes += '签到' + level + '天,获得' + discount + '豆';
}
//console.log(message+mes+'\n')
//message += mes+'\n'
}
} catch (e) {
$.logErr(e, resp);
} finally {
resolve(data);
}
});
});
}
//店铺签到
function signCollectGift(token, venderId, activitytemp) {
return new Promise((resolve) => {
const options = {
url: `${JD_API_HOST}&t=${Date.now()}&loginType=2&functionId=interact_center_shopSign_signCollectGift&body={%22token%22:%22${token}%22,%22venderId%22:688200,%22activityId%22:${activitytemp},%22type%22:56,%22actionType%22:7}&jsonp=jsonp1004`,
headers: {
accept: 'accept',
'accept-encoding': 'gzip, deflate',
'accept-language': 'zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7',
cookie: cookie,
referer: `https://h5.m.jd.com/babelDiy/Zeus/2PAAf74aG3D61qvfKUM5dxUssJQ9/index.html?token=${token}&sceneval=2&jxsid=16178634353215523301&cu=true&utm_source=kong&utm_medium=jingfen&utm_campaign=t_2009753434_&utm_term=fa3f8f38c56f44e2b4bfc2f37bce9713`,
'User-Agent': `Mozilla/5.0 (Linux; U; Android 10; zh-cn; MI 8 Build/QKQ1.190828.002) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/79.0.3945.147 Mobile Safari/537.36 XiaoMi/MiuiBrowser/13.5.40`,
},
};
$.get(options, (err, resp, data) => {
try {
if (err) {
console.log(`\n${$.name}: API查询请求失败 ‼️‼️`);
$.logErr(err);
} else {
//console.log(data)
data = JSON.parse(/{(.*)}/g.exec(data)[0]);
}
} catch (e) {
$.logErr(e, resp);
} finally {
resolve(data);
}
});
});
}
//店铺获取签到信息
function taskUrl(token, venderId) {
return new Promise((resolve) => {
const options = {
url: `${JD_API_HOST}&t=${Date.now()}&loginType=2&functionId=interact_center_shopSign_getSignRecord&body={%22token%22:%22${token}%22,%22venderId%22:${venderId},%22activityId%22:${activityId},%22type%22:56}&jsonp=jsonp1006`,
headers: {
accept: 'application/json',
'accept-encoding': 'gzip, deflate, br',
'accept-language': 'zh-CN,zh;q=0.9',
cookie: cookie,
referer: `https://h5.m.jd.com/`,
'user-agent': `Mozilla/5.0 (Linux; U; Android 10; zh-cn; MI 8 Build/QKQ1.190828.002) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/79.0.3945.147 Mobile Safari/537.36 XiaoMi/MiuiBrowser/13.5.40`,
},
};
$.get(options, (err, resp, data) => {
try {
if (err) {
console.log(`\n${$.name}: API查询请求失败 ‼️‼️`);
$.logErr(err);
} else {
//console.log(data)
data = JSON.parse(/{(.*)}/g.exec(data)[0]);
console.log(`已签到:` + data.data.days + ``);
message += `已签到:` + data.data.days + `\n`;
}
} catch (e) {
$.logErr(e, resp);
} finally {
resolve(data);
}
});
});
}
async function showMsg() {
if ($.isNode() && !process.env.SHOP_SIGN_NOTIFY_CONTROL) {
$.msg($.name, '', `【京东账号${$.index}${$.nickName}\n${message}`);
await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName}`, `【京东账号${$.index}${$.nickName}\n${message}`);
}
}
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': `jdapp;android;9.3.5;10;3353234393134326-3673735303632613;network/wifi;model/MI 8;addressid/138719729;aid/3524914bc77506b1;oaid/274aeb3d01b03a22;osVer/29;appBuild/86390;psn/Mp0dlaZf4czQtfPNMEfpcYU9S/f2Vv4y|2255;psq/1;adk/;ads/;pap/JA2015_311210|9.3.5|ANDROID 10;osv/10;pv/2039.1;jdv/0|androidapp|t_335139774|appshare|QQfriends|1611211482018|1611211495;ref/com.jingdong.app.mall.home.JDHomeFragment;partner/jingdong;apprpd/Home_Main;eufv/1;jdSupportDarkMode/0;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/045230 Mobile Safari/537.36`,
},
};
$.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;
}
$.nickName = (data['base'] && data['base'].nickname) || $.UserName;
} else {
console.log(`京东服务器返回空数据`);
}
}
} catch (e) {
$.logErr(e, resp);
} finally {
resolve();
}
});
});
}
+150 -120
View File
File diff suppressed because one or more lines are too long