Update jd_beauty.js

This commit is contained in:
Faker 2022-09-04 23:27:26 +08:00
parent 01a4214c5b
commit 9950cb2037

View File

@ -1,24 +1,20 @@
/* /*
美丽研究院 美丽研究院
修复+尽量优化为同步执行,减少并发,说不定就减小黑号概率了呢? 修复+尽量优化为同步执行,减少并发,说不定就减小黑号概率了呢?
https://raw.githubusercontent.com/aTenb/jdOpenSharePicker/master/jd_beautyStudy.js
更新时间:2021-12-03 更新时间:2021-12-03
来源 Dylan 来源 Dylan
定时自定义集中访问可能炸
活动入口京东app首页-美妆馆-底部中间按钮 活动入口京东app首页-美妆馆-底部中间按钮
#随机定时运行一次 定时自定义集中访问可能炸
*/ */
const $ = new Env('美丽研究院'); const $ = new Env('美丽研究院');
const notify = $.isNode() ? require('./sendNotify') : ''; const notify = $.isNode() ? require('./sendNotify') : '';
const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; const jdCookieNode = $.isNode() ? require('./jdCookie.js') : '';
const WebSocket = require('ws'); const WebSocket = require('ws');
const UA = process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT) const UA = process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)
const JD_API_HOST = 'https://api.m.jd.com/client.action';
$.accountCheck = true; $.accountCheck = true;
$.init = false; $.init = false;
let cookiesArr = [], cookie = '', message; let cookiesArr = [], cookie = '', message;
function oc(fn, defaultVal) { function oc(fn, defaultVal) {
try { try {
return fn() return fn()
@ -26,7 +22,6 @@ function oc(fn, defaultVal) {
return undefined return undefined
} }
} }
if ($.isNode()) { if ($.isNode()) {
Object.keys(jdCookieNode).forEach((item) => { Object.keys(jdCookieNode).forEach((item) => {
cookiesArr.push(jdCookieNode[item]) cookiesArr.push(jdCookieNode[item])
@ -35,7 +30,7 @@ if ($.isNode()) {
} 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);
} }
const JD_API_HOST = 'https://api.m.jd.com/client.action';
!(async () => { !(async () => {
if (!cookiesArr[0]) { if (!cookiesArr[0]) {
$.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/', {"open-url": "https://bean.m.jd.com/"}); $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/', {"open-url": "https://bean.m.jd.com/"});
@ -55,7 +50,7 @@ if ($.isNode()) {
$.nickName = ''; $.nickName = '';
message = ''; message = '';
$.token = ''; $.token = '';
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/`, {"open-url": "https://bean.m.jd.com/"}); $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/`, {"open-url": "https://bean.m.jd.com/"});
@ -66,7 +61,9 @@ if ($.isNode()) {
continue continue
} }
await accountCheck(); await accountCheck();
await $.wait(10000) while (!$.hasDone) {
await $.wait(3000)
}
if ($.accountCheck) { if ($.accountCheck) {
await jdBeauty(); await jdBeauty();
} }
@ -85,12 +82,12 @@ if ($.isNode()) {
async function accountCheck() { async function accountCheck() {
$.hasDone = false; $.hasDone = false;
console.log(`***检测账号是否黑号***`); //console.log(`***检测账号是否黑号***`);
await getIsvToken() await getIsvToken()
await $.wait(10000) await $.wait(10000)
await getIsvToken2() await getIsvToken2()
await $.wait(10000) await $.wait(10000)
await getAuth() await getToken()
await $.wait(10000) await $.wait(10000)
if (!$.token) { if (!$.token) {
console.log(`\n\n提示请尝试换服务器ip或者设置"xinruimz-isv.isvjcloud.com"域名直连或者自定义UA再次尝试(环境变量JD_USER_AGENT)\n\n`) console.log(`\n\n提示请尝试换服务器ip或者设置"xinruimz-isv.isvjcloud.com"域名直连或者自定义UA再次尝试(环境变量JD_USER_AGENT)\n\n`)
@ -105,9 +102,9 @@ async function accountCheck() {
client.onopen = async () => { client.onopen = async () => {
console.log(`美容研究院服务器连接成功`); console.log(`美容研究院服务器连接成功`);
client.send('{"msg":{"type":"action","args":{"source":1},"action":"_init_"}}'); client.send('{"msg":{"type":"action","args":{"source":1},"action":"_init_"}}');
await $.wait(20000); await $.wait(10000);
client.send(`{"msg":{"type":"action","args":{"source":1},"action":"get_user"}}`); client.send(`{"msg":{"type":"action","args":{"source":1},"action":"get_user"}}`);
await $.wait(20000); await $.wait(10000);
}; };
client.onmessage = async function (e) { client.onmessage = async function (e) {
if (e.data !== 'pong' && e.data && safeGet(e.data)) { if (e.data !== 'pong' && e.data && safeGet(e.data)) {
@ -146,6 +143,7 @@ async function jdBeauty() {
async function mr() { async function mr() {
$.coins = 0 $.coins = 0
let positionList = ['b1', 'h1', 's1', 'b2', 'h2', 's2'] let positionList = ['b1', 'h1', 's1', 'b2', 'h2', 's2']
let positionList2 = ['b2', 'h2', 's2']
$.tokens = [] $.tokens = []
$.pos = [] $.pos = []
$.helpInfo = [] $.helpInfo = []
@ -167,18 +165,24 @@ async function mr() {
await $.wait(10000); await $.wait(10000);
} }
console.log(`\n========生产任务相关========\n`) console.log(`\n========生产任务相关========\n`)
for (let help of helpInfo) {
client.send(help);
}
await $.wait(3000)
client.send(`{"msg":{"type":"action","args":{},"action":"get_produce_material"}}`) client.send(`{"msg":{"type":"action","args":{},"action":"get_produce_material"}}`)
await $.wait(20000); await $.wait(10000);
// 获得正在生产的商品信息 // 获得正在生产的商品信息
client.send('{"msg":{"type":"action","args":{},"action":"product_producing"}}') client.send('{"msg":{"type":"action","args":{},"action":"product_producing"}}')
await $.wait(20000); await $.wait(10000);
// 获得库存
client.send(`{"msg":{"type":"action","args":{},"action":"get_package"}}`)
// 获得可生成的商品列表 // 获得可生成的商品列表
client.send(`{"msg":{"type":"action","args":{"page":1,"num":10},"action":"product_lists"}}`) client.send(`{"msg":{"type":"action","args":{"page":1,"num":10},"action":"product_lists"}}`)
await $.wait(20000); await $.wait(10000);
// 获得原料生产列表 // 获得原料生产列表
for (let pos of positionList) { for (let pos of positionList) {
client.send(`{"msg":{"type":"action","args":{"position":"${pos}"},"action":"produce_position_info_v2"}}`) client.send(`{"msg":{"type":"action","args":{"position":"${pos}"},"action":"produce_position_info_v2"}}`)
await $.wait(20000); await $.wait(10000);
} }
console.log(`\n========日常任务相关========`) console.log(`\n========日常任务相关========`)
client.send(`{"msg":{"type":"action","args":{},"action":"check_up"}}`) client.send(`{"msg":{"type":"action","args":{},"action":"check_up"}}`)
@ -192,7 +196,7 @@ async function mr() {
await $.wait(50000); await $.wait(50000);
//最后做时间最久的日常任务 //最后做时间最久的日常任务
client.send(`{"msg":{"type":"action","args":{},"action":"shop_products"}}`) client.send(`{"msg":{"type":"action","args":{},"action":"shop_products"}}`)
await $.wait(20000); await $.wait(10000);
} }
}; };
client.onclose = () => { client.onclose = () => {
@ -201,7 +205,10 @@ async function mr() {
$.init = true; $.init = true;
$.hasDone = true; $.hasDone = true;
for (let i = 0; i < $.pos.length && i < $.tokens.length; ++i) { for (let i = 0; i < $.pos.length && i < $.tokens.length; ++i) {
$.helpInfo.push(`{"msg":{"type":"action","args":{"inviter_id":"${$.userInfo.id}","position":"${$.pos[i]}","token":"${$.tokens[i]}"},"action":"employee"}}`) client.send(`{"msg":{"type":"action","args":{"inviter_id":"${$.userInfo.id}"},"action":"employee_get_user"}}`);
$.helpInfo.push(`{"msg":{"type":"action","args":{"inviter_id":"${$.userInfo.id}","position":"${$.pos[i]}","token":"${$.tokens[i]}"},"action":"employee_v2"}}`)
client.send(`{"msg":{"type":"action","args":{"inviter_id":"${$.userInfo.id}","position":"${$.pos[i]}"},"action":"employee_speed_v2"}}`);
client.send(`{"msg":{"action":"write","type":"action","args":{"action_type":3,"channel":2,"source_app":2}}}`);
} }
}; };
client.onmessage = async function (e) { client.onmessage = async function (e) {
@ -216,9 +223,9 @@ async function mr() {
// 去签到 // 去签到
console.log(`去做签到任务`) console.log(`去做签到任务`)
client.send(`{"msg":{"type":"action","args":{},"action":"sign_in"}}`) client.send(`{"msg":{"type":"action","args":{},"action":"sign_in"}}`)
await $.wait(20000); await $.wait(10000);
client.send(`{"msg":{"action":"write","type":"action","args":{"action_type":1,"channel":2,"source_app":2}}}`) client.send(`{"msg":{"action":"write","type":"action","args":{"action_type":1,"channel":2,"source_app":2}}}`)
await $.wait(20000); await $.wait(10000);
} }
break break
case "get_user": case "get_user":
@ -228,7 +235,7 @@ async function mr() {
console.log(`去做新手任务`) console.log(`去做新手任务`)
for (let i = $.userInfo.step; i < 15; ++i) { for (let i = $.userInfo.step; i < 15; ++i) {
client.send(`{"msg":{"type":"action","args":{},"action":"newcomer_update"}}`) client.send(`{"msg":{"type":"action","args":{},"action":"newcomer_update"}}`)
await $.wait(20000); await $.wait(10000);
} }
} else } else
$.init = true; $.init = true;
@ -281,11 +288,14 @@ async function mr() {
} }
await $.wait(10000); await $.wait(10000);
} }
for (let i = $.taskState.meetingplace_view; i < $.taskState.mettingplace_count; ++i) { if ($.taskState.meetingplace_view.length <= vo.data.meetingplaces.length) {
console.log(`去做第${i + 1}次浏览会场任务`) for (let vc of vo.data.meetingplaces) {
client.send(`{"msg":{"type":"action","args":{"source":1},"action":"meetingplace_view"}}`) console.log(`去做第${vc.name}浏览会场任务`)
await $.wait(10000); client.send(`{"msg":{"type":"action","args":{"source":1,"meetingplace_id":${vc.id}},"action":"meetingplace_view"}}`)
await $.wait(2500)
} }
}
if ($.taskState.today_answered === 0) { if ($.taskState.today_answered === 0) {
console.log(`去做每日问答任务`) console.log(`去做每日问答任务`)
client.send(`{"msg":{"type":"action","args":{"source":1},"action":"get_question"}}`) client.send(`{"msg":{"type":"action","args":{"source":1},"action":"get_question"}}`)
@ -356,7 +366,7 @@ async function mr() {
client.send(`{"msg":{"type":"action","args":{"position":"${vo.data.position}","material_id":${ma.id}},"action":"material_produce_v2"}}`) client.send(`{"msg":{"type":"action","args":{"position":"${vo.data.position}","material_id":${ma.id}},"action":"material_produce_v2"}}`)
await $.wait(5000); await $.wait(5000);
} else { } else {
ma = $.material.base[1]['items'][positionList.indexOf(vo.data.position)] ma = $.material.base[1]['items'][positionList2.indexOf(vo.data.position)]
if (ma) { if (ma) {
console.log(`else去生产${ma.name}`) console.log(`else去生产${ma.name}`)
client.send(`{"msg":{"type":"action","args":{"position":"${vo.data.position}","material_id":${ma.id}},"action":"material_produce_v2"}}`) client.send(`{"msg":{"type":"action","args":{"position":"${vo.data.position}","material_id":${ma.id}},"action":"material_produce_v2"}}`)
@ -402,7 +412,7 @@ async function mr() {
case "product_lists": case "product_lists":
let need_material = [] let need_material = []
if (vo.code === '200' || vo.code === 200) { if (vo.code === '200' || vo.code === 200) {
$.products = vo.data.filter(vo=>vo.level===$.level) $.products = vo.data.filter(vo=>vo.level===$.level-1)
console.log(`========可生产商品信息========`) console.log(`========可生产商品信息========`)
for (let product of $.products) { for (let product of $.products) {
let num = Infinity let num = Infinity
@ -431,6 +441,7 @@ async function mr() {
console.log(`${product.name}】可生产份数大于0去生产`) console.log(`${product.name}】可生产份数大于0去生产`)
//product_produce 产品研发里的生产 //product_produce 产品研发里的生产
client.send(`{"msg":{"type":"action","args":{"product_id":${product.id},"amount":${num}},"action":"product_produce"}}`) client.send(`{"msg":{"type":"action","args":{"product_id":${product.id},"amount":${num}},"action":"product_produce"}}`)
client.send(`{"msg":{"type":"action","args":{"product_id":${product.id},"amount":${num}},"action":"once_completion"}}`)
await $.wait(10000); await $.wait(10000);
} else { } else {
console.log(msg) console.log(msg)
@ -494,9 +505,9 @@ async function mr() {
for (let benefit of vo.data) { for (let benefit of vo.data) {
if (benefit.type === 1) { //type 1 是京豆 if (benefit.type === 1) { //type 1 是京豆
//console.log(`benefit:${JSON.stringify(benefit)}`); //console.log(`benefit:${JSON.stringify(benefit)}`);
if(benefit.description === "1 京豆" && parseInt(benefit.day_exchange_count) < 10 && $.total > benefit.coins){ if(benefit.description === "1 京豆" && parseInt(benefit.day_exchange_count) < 5 && $.total > benefit.coins){
$timenum = parseInt($.total / benefit.coins); $timenum = parseInt($.total / benefit.coins);
if ($timenum > 10) $timenum = 10; if ($timenum > 5) $timenum = 5;
console.log(`\n可兑换${$timenum}次京豆:`) console.log(`\n可兑换${$timenum}次京豆:`)
for (let i = 0; i < $timenum; i++){ for (let i = 0; i < $timenum; i++){
client.send(`{"msg":{"type":"action","args":{"benefit_id":${benefit.id}},"action":"to_exchange"}}`); client.send(`{"msg":{"type":"action","args":{"benefit_id":${benefit.id}},"action":"to_exchange"}}`);
@ -518,7 +529,7 @@ async function mr() {
break break
case "to_exchange": case "to_exchange":
if(oc(() => vo.data.coins)){ if(oc(() => vo.data.coins)){
console.log(`兑换${vo.data.coins/-1000}京豆成功`) console.log(`兑换${vo.data.coins/-10000}京豆成功`)
}else{ }else{
console.log(`兑换京豆失败`) console.log(`兑换京豆失败`)
} }
@ -526,15 +537,15 @@ async function mr() {
case "get_produce_material": case "get_produce_material":
$.material = vo.data $.material = vo.data
break break
case "to_employee": //case "to_employee":
console.log(`雇佣助力码【${oc(() => vo.data.token)}`) // console.log(`雇佣助力码【${oc(() => vo.data.token)}】`)
if(oc(() => vo.data.token)){ // if(oc(() => vo.data.token)){
$.tokens.push(vo.data.token) // $.tokens.push(vo.data.token)
}else{ // }else{
console.log(`not exist:${oc(() => vo.data)}`) // console.log(`not exist:${oc(() => vo.data)}`)
} // }
break // break
case "employee": case "employee_v2":
console.log(`${vo.msg}`) console.log(`${vo.msg}`)
break break
} }
@ -564,7 +575,7 @@ function getIsvToken() {
if (safeGet(data)) { if (safeGet(data)) {
data = JSON.parse(data); data = JSON.parse(data);
$.isvToken = data['tokenKey']; $.isvToken = data['tokenKey'];
console.log(`isvToken:${$.isvToken}`); //console.log(`isvToken:${$.isvToken}`);
} }
} }
} catch (e) { } catch (e) {
@ -577,18 +588,24 @@ function getIsvToken() {
} }
async function getIsvToken2() { async function getIsvToken2() {
for (let i=0; i<3; i++){
var body = await getSignfromDY('isvObfuscator',{"id":"","url":"https://xinruimz-isv.isvjcloud.com"})
if(body) break;
await $.wait(5000)
}
let config = { let config = {
url: 'https://api.m.jd.com/client.action?functionId=isvObfuscator', url: 'https://api.m.jd.com/client.action?functionId=isvObfuscator',
body: await getSignfromDY('isvObfuscator',{"id":"","url":"https://xinruimz-isv.isvjcloud.com"}), body: `${$.Signz}`,
headers: { headers: {
'Host': 'api.m.jd.com', 'Host': 'api.m.jd.com',
'accept': '*/*', 'accept': '*/*',
'user-agent': UA, 'user-agent': UA,
'accept-language': 'zh-Hans-JP;q=1, en-JP;q=0.9, zh-Hant-TW;q=0.8, ja-JP;q=0.7, en-US;q=0.6', //'accept-language': 'zh-Hans-JP;q=1, en-JP;q=0.9, zh-Hant-TW;q=0.8, ja-JP;q=0.7, en-US;q=0.6',
'content-type': 'application/x-www-form-urlencoded', //'content-type': 'application/x-www-form-urlencoded',
'Cookie': cookie 'Cookie': cookie
} }
} }
return new Promise(resolve => { return new Promise(resolve => {
$.post(config, async (err, resp, data) => { $.post(config, async (err, resp, data) => {
try { try {
@ -599,7 +616,7 @@ async function getIsvToken2() {
if (safeGet(data)) { if (safeGet(data)) {
data = JSON.parse(data); data = JSON.parse(data);
$.token2 = data['token'] $.token2 = data['token']
console.log(`token2:${$.token2}`); //console.log(`token2:${$.token2}`);
} }
} }
} catch (e) { } catch (e) {
@ -611,47 +628,35 @@ async function getIsvToken2() {
}) })
} }
function getSignfromDY(functionId, body) { function getSignfromDY(functionId, body) {
var strsign = ''; let data={'fn':functionId,'body':JSON.stringify(body)};
let data = `functionId=${functionId}&body=${encodeURIComponent(JSON.stringify(body))}` let optionsions={'url':'https://api.nolanstore.top/sign','body':JSON.stringify(data),'headers':{"Content-Type": "application/json"},'timeout':30000};
return new Promise((resolve) => { return new Promise(async resolve=>{
let opt = { $.post(optionsions,(err,resp,data)=>{
url: "https://jd.nbplay.xyz/dylan/getsign",
body: data,
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
}
,timeout: 30000
}
$.post(opt, async(err, resp, data) => {
try{ try{
if (data){ if(err){
data = JSON.parse(data); console.log(''+JSON.stringify(err));
if (data && data.code == 0) { console.log($.name+' getSign API请求失败请检查网路重试');
console.log("连接DY服务成功" );
if (data.data){
strsign = data.data || '';
}
if (strsign != ''){
resolve(strsign);
}
else
console.log("签名获取失败,换个时间再试.");
}else{ }else{
console.log(data.msg); data=JSON.parse(data);
if((typeof data==='object')&&data&&data.body){
$.Signz=data.body ||'';
} else {
console.log('获取服务失败~~');
}
} }
}else{console.log('连接连接DY服务失败重试。。。')}
}catch(e){ }catch(e){
$.logErr(e,resp); $.logErr(e,resp);
}finally {
resolve(strsign);
} }
}) finally{
}) resolve(data);
} }
function getAuth() { });
});
};
function getToken() {
let config = { let config = {
url: 'https://xinruimz-isv.isvjcloud.com/api/auth', url: 'https://xinruimz-isv.isvjcloud.com/api/auth',
body: JSON.stringify({"token":$.token2,"source":"01"}), body: JSON.stringify({"token":$.token2,"source":"01","channel":"meizhuangguandibudaohang"}),
headers: { headers: {
'Host': 'xinruimz-isv.isvjcloud.com', 'Host': 'xinruimz-isv.isvjcloud.com',
'Accept': 'application/x.jd-school-island.v1+json', 'Accept': 'application/x.jd-school-island.v1+json',
@ -662,7 +667,7 @@ function getAuth() {
'user-agent': UA, 'user-agent': UA,
'Referer': 'https://xinruimz-isv.isvjcloud.com/logined_jd/', 'Referer': 'https://xinruimz-isv.isvjcloud.com/logined_jd/',
'Authorization': 'Bearer undefined', 'Authorization': 'Bearer undefined',
'Cookie': `IsvToken=${$.isvToken};` 'Cookie': `IsvToken=${$.token2};`
} }
} }
return new Promise(resolve => { return new Promise(resolve => {
@ -675,7 +680,7 @@ function getAuth() {
if (safeGet(data)) { if (safeGet(data)) {
data = JSON.parse(data); data = JSON.parse(data);
$.token = data.access_token $.token = data.access_token
console.log(`$.token ${$.token}`) //console.log(`$.token ${$.token}`)
} }
} }
} catch (e) { } catch (e) {