This commit is contained in:
Faker
2022-08-10 02:41:37 +08:00
parent e0f32fa681
commit 3a7858903a
12 changed files with 146 additions and 1037 deletions

146
jd_xmf.js
View File

@@ -19,7 +19,7 @@ cron "30 3,20 * * *" script-path=jd_xmf.js, tag=京东小魔方
============小火箭=========
京东小魔方 = type=cron,script-path=jd_xmf.js, cronexpr="30 3,20 * * *", timeout=3600, enable=true
*/
const $ = new Env('京东小魔方-LingFeng自用版');
const $ = new Env('京东小魔方');
const notify = $.isNode() ? require('./sendNotify') : '';
//Node.js用户请在jdCookie.js处填写京东ck;
const jdCookieNode = $.isNode() ? require('./jdCookie.js') : '';
@@ -27,34 +27,16 @@ const jdCookieNode = $.isNode() ? require('./jdCookie.js') : '';
let cookiesArr = [], cookie = '';
var timestamp = Math.round(new Date().getTime()).toString();
$.shareCodes = [];
let jdLogUrl = process.env.JD_LOG_URL ?? ""
let logNums = process.env.LOG_NUMS ? Number(process.env.LOG_NUMS) : 100
let RabbitUrl = process.env.Rabbit_Url ?? ""; // logurl
let jdPandaToken = '';
let jdLogsArr=[];
jdPandaToken = $.isNode() ? (process.env.jdPandaToken ? process.env.jdPandaToken : `${jdPandaToken}`) : ($.getdata('jdPandaToken') ? $.getdata('jdPandaToken') : `${jdPandaToken}`);
// if (!jdPandaToken && !RabbitUrl){
// console.log(`请填写Panda获取的Token,变量是jdPandaToken 或者填写Rabbit获取的logurl变量是Rabbit_Url`)
// return;
// }
var logs;
let jdLogUrl = process.env.JD_LOG_URL ?? "http://106.126.11.114:5889/log"
!(async () => {
await requireConfig()
if(jdLogUrl){
let res = await getJdLogs(jdLogUrl)
jdLogsArr = [...jdLogsArr,...(res || [])]
}
if (jdLogsArr.length == 0){
console.log(`提醒: log为空,脚本停止运行!`)
return
}
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;
}
UUID = getUUID('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx');
UA = `jdapp;iPhone;10.0.8;14.6;${UUID};network/wifi;JDEbook/openapp.jdreader;model/iPhone9,2;addressid/2214222493;appBuild/168841;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/16E158;supportJDSHWK/1`;
for (let i = 0; i < cookiesArr.length; i++) {
UA = `jdapp;iPhone;10.0.8;14.6;${UUID};network/wifi;JDEbook/openapp.jdreader;model/iPhone9,2;addressid/2214222493;appBuild/168841;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/16E158;supportJDSHWK/1`;
if (cookiesArr[i]) {
cookie = cookiesArr[i];
$.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1])
@@ -73,16 +55,14 @@ var logs;
continue
}
await main()
await $.wait(1500)
}
}
})().catch((e) => { $.log('', `${$.name}, 失败! 原因: ${e}!`, '') }).finally(() => { $.done(); })
async function main() {
await getInteractionHomeInfo();
await $.wait(1500)
await $.wait(500)
await queryInteractiveInfo($.projectId)
await $.wait(1500)
if ($.taskList) {
for (const vo of $.taskList) {
if (vo.ext.extraType !== 'brandMemberList' && vo.ext.extraType !== 'assistTaskDetail') {
@@ -99,24 +79,21 @@ async function main() {
}
for (let vi of vo.ext.shoppingActivity ?? []) {
if (vi.status === 1) {
await $.wait(1500)
await doInteractiveAssignment($.projectId, vo.encryptAssignmentId, vi.advId, 1)
await doInteractiveAssignment($.projectId, vo.encryptAssignmentId, vi.advId, 1)
await $.wait(6000)
await doInteractiveAssignment($.projectId, vo.encryptAssignmentId, vi.advId, 0)
}
}
for (let vi of vo.ext.browseShop ?? []) {
if (vi.status === 1) {
await $.wait(1500)
await doInteractiveAssignment($.projectId, vo.encryptAssignmentId, vi.itemId, 1)
await doInteractiveAssignment($.projectId, vo.encryptAssignmentId, vi.itemId, 1)
await $.wait(6000)
await doInteractiveAssignment($.projectId, vo.encryptAssignmentId, vi.itemId, 0)
}
}
for (let vi of vo.ext.addCart ?? []) {
if (vi.status === 1) {
await $.wait(1500)
await doInteractiveAssignment($.projectId, vo.encryptAssignmentId, vi.itemId, 1)
await doInteractiveAssignment($.projectId, vo.encryptAssignmentId, vi.itemId, 1)
await $.wait(6000)
await doInteractiveAssignment($.projectId, vo.encryptAssignmentId, vi.itemId, 0)
}
@@ -134,8 +111,7 @@ async function main() {
async function doInteractiveAssignment(projectId, encryptAssignmentId, itemId, actionType) {
// logs = await getJinliLogs()
// let random = logs["random"].toString(),log =logs["log"].toString()
await $.wait(1500)
await getLog();
await getLog();
let body = { "encryptProjectId": projectId, "encryptAssignmentId": encryptAssignmentId, "sourceCode": "acexinpin0823", "itemId": itemId, "actionType": actionType, "completionFlag": "", "ext": {},"extParam":{"businessData":{"random":`${random}`},"signStr":`${log}`,"sceneid":"XMFhPageh5"} }
return new Promise(resolve => {
$.post(taskPostUrl("doInteractiveAssignment", body), async (err, resp, data) => {
@@ -222,7 +198,7 @@ function taskPostUrl(function_id, body) {
"Accept-Encoding": "gzip, deflate, br",
"Connection": "keep-alive",
"Accept": "application/json, text/plain, */*",
"User-Agent": UA,
"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",
"Referer": "https://h5.m.jd.com/babelDiy/Zeus/2bf3XEEyWG11pQzPGkKpKX2GxJz2/index.html",
"Cookie": cookie,
}
@@ -231,7 +207,7 @@ function taskPostUrl(function_id, body) {
function getJdLogs(url) {
return new Promise(resolve => {
const options = {
url: `${url}?${new Date()}&logNums=${logNums}`, "timeout": 10000, headers: {
url: `${url}?${new Date()}`, "timeout": 10000, headers: {
"User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1 Edg/87.0.4280.88"
}
};
@@ -261,115 +237,15 @@ function getJdLogs(url) {
})
})
}
function getJinliLogs() {
if (jdPandaToken && RabbitUrl){
let nums = Math.floor(Math.random() * 9)+1;
if (nums<5){
console.info('随机从panda接口获取log!')
return pandaLogs();
}else {
console.info('随机从rabbit接口获取log!')
return rabbitLogs();
}
}
if(jdPandaToken && !RabbitUrl){
console.info('进入panda接口获取log!')
return pandaLogs();
}
if(RabbitUrl && !jdPandaToken){
console.info('进入rabbit接口获取log!')
return rabbitLogs();
}
return '';
}
function pandaLogs(){
var logs = '';
return new Promise((resolve) => {
let url = {
url: "https://api.jds.codes/jd/log",
followRedirect: false,
headers: {
'Accept': '*/*',
"accept-encoding": "gzip, deflate, br",
'Content-Type': 'application/json',
'Authorization': 'Bearer ' + jdPandaToken
},
timeout: 30000
}
$.get(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)
logs = data.data || '';
//console.info(logs['random']+"----"+logs['log'])
if (logs != '')
resolve(logs);
else
console.log("签名获取失败,可能Token使用次数上限或被封.");
} else {
console.log("签名获取失败.");
}
}catch (e) {
$.logErr(e, resp);
}finally {
resolve(logs);
}
})
})
}
function rabbitLogs(){
var logs = '';
return new Promise((resolve) => {
let url = {
url:`${RabbitUrl}`,
followRedirect: false,
timeout: 30000
}
$.get(url, async(err, resp, data) => {
try {
data = JSON.parse(data);
if (data && data.status == 0) {
lnrequesttimes = data.request_times;
logs = {
random: data.random,
log: data.log
}
//console.info(logs['random']+"----"+logs['log'])
if (logs != '')
resolve(logs);
else
console.log("log获取失败.");
} else {
console.log("log获取失败.");
}
}catch (e) {
$.logErr(e, resp);
}finally {
resolve(logs);
}
})
})
}
async function requireConfig() {
return new Promise(resolve => {
const jdCookieNode = $.isNode() ? require('./jdCookie.js') : '';
const jdLogNode = $.isNode() ? require('./jdMsLogs.js') : '';
if ($.isNode()) {
Object.keys(jdCookieNode).forEach((item) => {
if (jdCookieNode[item]) {
cookiesArr.push(jdCookieNode[item])
}
})
Object.keys(jdLogNode).forEach((item) => {
if (jdLogNode[item]) {
jdLogsArr.push(jdLogNode[item])
}
})
if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {
};
} else {
@@ -380,7 +256,7 @@ async function requireConfig() {
})
}
async function getLog() {
var cuid = jdLogsArr[Math.floor((Math.random()*jdLogsArr.length))];
var cuid = await getJdLogs(jdLogUrl);
log = cuid["log"];
random = cuid["random"];
}