This commit is contained in:
dylan 2023-06-11 00:11:35 +08:00
parent cec5b3bb2c
commit dd12b116ad
3 changed files with 222 additions and 497 deletions

View File

@ -1,8 +1,8 @@
/* /*
积分换话费 积分换话费
入口首页-生活·缴费-积分换话费 入口首页-生活·缴费-积分换话费
update20220530 update2023/6/10
20 7,19 * * * jd_dwapp.js 33 3,18 * * * jd_dwapp.js
*/ */
const $ = new Env('积分换话费'); const $ = new Env('积分换话费');
@ -13,248 +13,270 @@ CryptoJS = $.isNode() ? require('crypto-js') : CryptoJS;
//IOS等用户直接用NobyDa的jd cookie //IOS等用户直接用NobyDa的jd cookie
let cookiesArr = [], cookie = ''; let cookiesArr = [], cookie = '';
if ($.isNode()) { if ($.isNode()) {
Object.keys(jdCookieNode).forEach((item) => { cookiesArr.push(jdCookieNode[item]) }) Object.keys(jdCookieNode).forEach((item) => { cookiesArr.push(jdCookieNode[item]) })
if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { };
} else { } else {
cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item);
} }
!(async () => { !(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;
} }
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 = '';
message = ''; message = '';
await TotalBean(); await TotalBean();
console.log(`\n******开始【京东账号${$.index}${$.nickName || $.UserName}*********\n`); console.log(`\n******开始【京东账号${$.index}${$.nickName || $.UserName}*********\n`);
if (!$.isLogin) { if (!$.isLogin) {
$.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { "open-url": "https://bean.m.jd.com/bean/signIndex.action" });
if ($.isNode()) { if ($.isNode()) {
await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`);
} }
continue continue
} }
$.UUID = getUUID('xxxxxxxxxxxxxxxx'); $.UUID = getUUID('xxxxxxxxxxxxxxxx');
await main() await main()
}
} }
}
})().catch((e) => { $.log('', `${$.name}, 失败! 原因: ${e}!`, '') }).finally(() => { $.done(); }) })().catch((e) => { $.log('', `${$.name}, 失败! 原因: ${e}!`, '') }).finally(() => { $.done(); })
async function main() { async function main() {
$.log("去签到") $.log("去签到")
await usersign() await usersign()
await tasklist(); await tasklist();
if ($.tasklist) { if ($.tasklist) {
for (let i = 0; i < $.tasklist.length; i++) { for (let i of $.tasklist) {
console.log(`去领取${$.tasklist[i].taskDesc}任务`) if (i.viewStatus == 0) {
await taskrecord($.tasklist[i].id) console.log(`去做 ${i.taskDesc}`);
await $.wait(3000); await taskrecord(i.id);
console.log(`去领取积分`) await $.wait(3000);
await taskreceive($.tasklist[i].id) console.log(`去领积分`);
await taskreceive(i.id)
} else if (i.viewStatus == 2) {
console.log(`去领积分`);
await taskreceive(i.id);
} else if (i.viewStatus == 1) {
$.log(`${i.name} 已完成浏览`);
}
}
} }
}
} }
async function taskrecord(id) { async function taskrecord(id) {
enc = await sign(id + "1") enc = await sign(id + "1")
let body = { "id": id, "agentNum": "m", "taskType": 1, "followChannelStatus": "", ...enc } let body = { "id": id, "agentNum": "m", "taskType": 1, "followChannelStatus": "", ...enc }
return new Promise(resolve => { return new Promise(resolve => {
$.post(taskPostUrl("task/dwRecord", body), (err, resp, data) => { $.post(taskPostUrl("task/dwRecord", body), (err, resp, data) => {
try { try {
if (err) { if (err) {
console.log(`${err}`) console.log(`${err}`)
console.log(`${$.name} API请求失败请检查网路重试`) console.log(`${$.name} API请求失败请检查网路重试`)
} else { } else {
data = JSON.parse(data) data = JSON.parse(data)
if (data) { if (data) {
if (data.code === 200) { if (data.code === 200) {
if (data.data.dwUserTask) { if (data.data.dwUserTask) {
$.log(" 领取任务成功") $.log("----领取任务成功")
} else { } else {
$.log(" 此任务已经领取过了") $.log("----此任务已经领取过了")
} }
} else { } else {
console.log(JSON.stringify(data)) console.log(JSON.stringify(data))
}
}
}
} catch (e) {
$.logErr(e, resp)
} finally {
resolve(data);
} }
} })
}
} catch (e) {
$.logErr(e, resp)
} finally {
resolve(data);
}
}) })
})
} }
async function taskreceive(id) { async function taskreceive(id) {
enc = await sign(id) enc = await sign(id)
let body = { "id": id, ...enc } let body = { "id": id, ...enc }
return new Promise(resolve => { return new Promise(resolve => {
$.post(taskPostUrl("task/dwReceive", body), (err, resp, data) => { $.post(taskPostUrl("task/dwReceive", body), (err, resp, data) => {
try { try {
if (err) { if (err) {
console.log(`${err}`) console.log(`${err}`)
console.log(`${$.name} API请求失败请检查网路重试`) console.log(`${$.name} API请求失败请检查网路重试`)
} else { } else {
data = JSON.parse(data) data = JSON.parse(data)
if (data) { if (data) {
if (data.code === 200 && data.data.success) { if (data.code === 200 && data.data.success) {
console.log(` 领取任务积分:获得${data.data.giveScoreNum}`) console.log(`----领取成功:获得${data.data.giveScoreNum}积分`);
} else if (data.code === 200 && !data.data.success) { } else if (data.code === 200 && !data.data.success) {
console.log(" 积分已经领取完了") console.log("----积分已经领取完了");
} else { } else {
console.log(JSON.stringify(data)) console.log(JSON.stringify(data));
}
}
}
} catch (e) {
$.logErr(e, resp)
} finally {
resolve(data);
} }
} })
}
} catch (e) {
$.logErr(e, resp)
} finally {
resolve(data);
}
}) })
})
} }
async function usersign() { async function usersign() {
body = await sign() body = await sign()
return new Promise(resolve => { return new Promise(resolve => {
$.post(taskPostUrl("dwSign", body), (err, resp, data) => { $.post(taskPostUrl("dwSign", body), (err, resp, data) => {
try { try {
if (err) { if (err) {
console.log(`${err}`) console.log(`${err}`)
console.log(`${$.name} API请求失败请检查网路重试`) console.log(`${$.name} API请求失败请检查网路重试`)
} else { } else {
data = JSON.parse(data) data = JSON.parse(data);
if (data) { JSON.stringify(data);
if (data.code === 200) { if (data) {
console.log(`签到成功:获得积分${data.data.signInfo.signNum}\n`) if (data.code === 200) {
} else { console.log(`签到成功:获得积分${data.data.signInfo.signNum}`);
console.log("似乎签到完成了\n") $.log(`总积分:${data.data.totalNum}\n`);
} else {
console.log("似乎签到完成了\n");
}
}
}
} catch (e) {
$.logErr(e, resp)
} finally {
resolve(data);
} }
} })
}
} catch (e) {
$.logErr(e, resp)
} finally {
resolve(data);
}
}) })
})
} }
async function tasklist() { async function tasklist() {
body = await sign() body = await sign();
return new Promise(resolve => { body.channelSource = 'txzs';
$.post(taskPostUrl("task/dwList", body), (err, resp, data) => { let opt = {
try { url: `https://api.m.jd.com/user/color/task/dwList`,
if (err) { body: `appid=txsm-m&client=h5&functionId=dwapp_task_dwList&body=${encodeURIComponent(JSON.stringify(body))}`,
console.log(`${err}`) headers: {
console.log(`${$.name} API请求失败请检查网路重试`) "Origin": "https://txsm-m.jd.com",
} else { "Accept": "*/*",
data = JSON.parse(data) "User-Agent": `jdapp;iPhone;10.1.0;13.5;${$.UUID};network/wifi;model/iPhone11,6;addressid/4596882376;appBuild/167774;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 13_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`,
if (data) { "Referer": "https://txsm-m.jd.com/",
$.tasklist = data.data "Cookie": cookie,
}
} }
} catch (e) { }
$.logErr(e, resp)
} finally { return new Promise(resolve => {
resolve(data); $.post(opt, (err, resp, data) => {
} try {
if (err) {
console.log(`${err}`)
console.log(`${$.name} API请求失败请检查网路重试`)
} else {
data = JSON.parse(data)
if (data) {
$.tasklist = data.data
}
}
} catch (e) {
$.logErr(e, resp)
} finally {
resolve(data);
}
})
}) })
})
} }
function taskPostUrl(function_id, body) { function taskPostUrl(function_id, body) {
return { return {
url: `https://dwapp.jd.com/user/${function_id}`, url: `https://dwapp.jd.com/user/${function_id}`,
body: JSON.stringify(body), body: JSON.stringify(body),
headers: { headers: {
"Host": "dwapp.jd.com", "Host": "dwapp.jd.com",
"Origin": "https://prodev.m.jd.com", "Origin": "https://prodev.m.jd.com",
"Connection": "keep-alive", "Connection": "keep-alive",
"Accept": "*/*", "Accept": "*/*",
"User-Agent": `jdapp;iPhone;10.1.0;13.5;${$.UUID};network/wifi;model/iPhone11,6;addressid/4596882376;appBuild/167774;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 13_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, "User-Agent": `jdapp;iPhone;10.1.0;13.5;${$.UUID};network/wifi;model/iPhone11,6;addressid/4596882376;appBuild/167774;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 13_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`,
"Accept-Language": "zh-cn", "Accept-Language": "zh-cn",
"Referer": "https://prodev.m.jd.com/mall/active/eEcYM32eezJB7YX4SBihziJCiGV/index.html", "Referer": "https://prodev.m.jd.com/mall/active/eEcYM32eezJB7YX4SBihziJCiGV/index.html",
"Accept-Encoding": "gzip, deflate, br", "Accept-Encoding": "gzip, deflate, br",
"Content-Type": "application/json", "Content-Type": "application/json",
"Cookie": cookie, "Cookie": cookie,
}
} }
}
} }
function TotalBean() { function TotalBean() {
return new Promise(async resolve => { return new Promise(async resolve => {
const options = { const options = {
"url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`,
"headers": { "headers": {
"Accept": "application/json,text/plain, */*", "Accept": "application/json,text/plain, */*",
"Content-Type": "application/x-www-form-urlencoded", "Content-Type": "application/x-www-form-urlencoded",
"Accept-Encoding": "gzip, deflate, br", "Accept-Encoding": "gzip, deflate, br",
"Accept-Language": "zh-cn", "Accept-Language": "zh-cn",
"Connection": "keep-alive", "Connection": "keep-alive",
"Cookie": cookie, "Cookie": cookie,
"Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2",
"User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1")
}
}
$.post(options, (err, resp, data) => {
try {
if (err) {
console.log(`${JSON.stringify(err)}`)
console.log(`${$.name} API请求失败请检查网路重试`)
} else {
if (data) {
data = JSON.parse(data);
if (data['retcode'] === 13) {
$.isLogin = false; //cookie过期
return
} }
if (data['retcode'] === 0) {
$.nickName = (data['base'] && data['base'].nickname) || $.UserName;
} else {
$.nickName = $.UserName
}
} else {
console.log(`京东服务器返回空数据`)
}
} }
} catch (e) { $.post(options, (err, resp, data) => {
$.logErr(e, resp) try {
} finally { if (err) {
resolve(); console.log(`${JSON.stringify(err)}`)
} console.log(`${$.name} API请求失败请检查网路重试`)
} else {
if (data) {
data = JSON.parse(data);
if (data['retcode'] === 13) {
$.isLogin = false; //cookie过期
return
}
if (data['retcode'] === 0) {
$.nickName = (data['base'] && data['base'].nickname) || $.UserName;
} else {
$.nickName = $.UserName
}
} else {
console.log(`京东服务器返回空数据`)
}
}
} catch (e) {
$.logErr(e, resp)
} finally {
resolve();
}
})
}) })
})
} }
function getUUID(format = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', UpperCase = 0) { function getUUID(format = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', UpperCase = 0) {
return format.replace(/[xy]/g, function (c) { return format.replace(/[xy]/g, function (c) {
var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8); var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);
if (UpperCase) { if (UpperCase) {
uuid = v.toString(36).toUpperCase(); uuid = v.toString(36).toUpperCase();
} else { } else {
uuid = v.toString(36) uuid = v.toString(36)
} }
return uuid; return uuid;
}); });
} }
async function sign(en) { async function sign(en) {
time = new Date().getTime(); time = new Date().getTime();
let encStr = en || ''; let encStr = en || '';
const encTail = `${time}e9c398ffcb2d4824b4d0a703e38yffdd`; const encTail = `${time}e9c398ffcb2d4824b4d0a703e38yffdd`;
encStr = CryptoJS.MD5(encStr + encTail).toString() encStr = CryptoJS.MD5(encStr + encTail).toString()
return { "t": time, "encStr": encStr } return { "t": time, "encStr": encStr }
} }
// prettier-ignore // prettier-ignore

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long