158 lines
5.2 KiB
JavaScript
158 lines
5.2 KiB
JavaScript
// # Source: https://github.com/sudojia/AutoTaskScript/blob/script/src/wx_mini/sudojia_tebu.js
|
||
// # Raw: https://raw.githubusercontent.com/sudojia/AutoTaskScript/script/src/wx_mini/sudojia_tebu.js
|
||
// # Repo: sudojia/AutoTaskScript
|
||
// # Path: src/wx_mini/sudojia_tebu.js
|
||
// # UploadedAt: 2025-04-28T19:26:13+08:00
|
||
// # SHA256: ec94d58d647e7020b4f5f0029f6372c4841caf77fcbf31492f45bde577052371
|
||
// # Category: 微信小程序/抓包版
|
||
// # Evidence: appid/openid/session_key/encryptedData等小程序字段
|
||
//
|
||
|
||
/**
|
||
* 特步会员中心小程序
|
||
*
|
||
* 抓包 URL:https://mall-mobile-v6.vecrp.com 获取请求头 token
|
||
* export TEBU_TOKEN = 'eyJhxxxxxxxxxxxxxxxx'
|
||
* 多账号用 & 或换行
|
||
*
|
||
* @author Telegram@sudojia
|
||
* @site https://blog.imzjw.cn
|
||
* @date 2024/07/20
|
||
* @lastModifyTime: 2024/11/2
|
||
*
|
||
* const $ = new Env('特步会员中心')
|
||
* cron: 26 10 * * *
|
||
*/
|
||
const initScript = require('../utils/initScript')
|
||
const moment = require("moment");
|
||
const {$, notify, sudojia, checkUpdate} = initScript('特步会员中心');
|
||
const tbList = process.env.TEBU_TOKEN ? process.env.TEBU_TOKEN.split(/[\n&]/) : [];
|
||
let message = '';
|
||
// 接口地址
|
||
const baseUrl = 'https://mall-mobile-v6.vecrp.com'
|
||
// 店铺ID
|
||
const shopId = '100656040';
|
||
// 活动ID
|
||
let activityId;
|
||
// 请求头
|
||
const headers = {
|
||
"user-agent": sudojia.getRandomUserAgent(),
|
||
'ts': Date.now(),
|
||
'Content-Type': 'application/json;charset=UTF-8',
|
||
'appid': 'wx12e1cb3b09a0e6f0',
|
||
'Referer': 'https://servicewechat.com/wx12e1cb3b09a0e6f0/132/page-frame.html',
|
||
'Accept-Language': 'zh-CN,zh;q=0.9'
|
||
};
|
||
|
||
!(async () => {
|
||
await checkUpdate($.name, tbList);
|
||
console.log(`\n已随机分配 User-Agent\n\n${headers['user-agent'] || headers['User-Agent']}`);
|
||
for (let i = 0; i < tbList.length; i++) {
|
||
const index = i + 1;
|
||
headers.token = tbList[i];
|
||
console.log(`\n*****第[${index}]个${$.name}账号*****`);
|
||
message += `📣====${$.name}账号[${index}]====📣\n`;
|
||
await main();
|
||
await $.wait(sudojia.getRandomWait(2000, 2500));
|
||
}
|
||
if (message) {
|
||
await notify.sendNotify(`「${$.name}」`, `${message}`);
|
||
}
|
||
})().catch((e) => $.logErr(e)).finally(() => $.done());
|
||
|
||
async function main() {
|
||
await getUserInfo();
|
||
await $.wait(sudojia.getRandomWait(1200, 2000));
|
||
await getActivityId();
|
||
await $.wait(sudojia.getRandomWait(1200, 2000));
|
||
await sign();
|
||
await $.wait(sudojia.getRandomWait(1200, 2000));
|
||
await getMyBonusLogs();
|
||
}
|
||
|
||
/**
|
||
* 获取用户信息
|
||
*
|
||
* @return {Promise<void>}
|
||
*/
|
||
async function getUserInfo() {
|
||
try {
|
||
const data = await sudojia.sendRequest(`${baseUrl}/mobile/customer/initMy?shopId=${shopId}`, 'get', headers);
|
||
if (!data.success) {
|
||
return console.error(data.msg);
|
||
}
|
||
const info = data.result.customer;
|
||
const hiddenMobile = `${info.mobile.slice(0, 3)}***${info.mobile.slice(-3)}`;
|
||
console.log(`${info.customerName}(${hiddenMobile})`);
|
||
message += `${info.customerName}(${info.mobile})\n`;
|
||
} catch (e) {
|
||
console.error(`获取用户信息时发生异常:${e}`);
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 获取活动ID
|
||
*
|
||
* @returns {Promise<void>}
|
||
*/
|
||
async function getActivityId() {
|
||
try {
|
||
const data = await sudojia.sendRequest(`${baseUrl}/mobile/customer/queryMobilePersonCenterTemplateByShopId?shopId=${shopId}`, 'get', headers);
|
||
if (!data.success) {
|
||
return console.error(data.msg);
|
||
}
|
||
const component = data.result.views.find(item => item.componentId === 'WHXG8614883');
|
||
if (!component) {
|
||
return console.warn('未找到 componentId 为 WHXG8614883');
|
||
}
|
||
const getActivityId = component.defaultConfig.img.find(img => img.link && img.link.path === '/pages/ehd/activities/signIn/index');
|
||
if (!getActivityId) {
|
||
return console.warn('未找到 activityId');
|
||
}
|
||
activityId = getActivityId.link.id;
|
||
console.log(`activityId 已更新:${activityId}`);
|
||
} catch (e) {
|
||
console.error(`获取活动ID时发生异常:${e}`);
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 签到
|
||
*
|
||
* @return {Promise<void>}
|
||
*/
|
||
async function sign() {
|
||
try {
|
||
const data = await sudojia.sendRequest(`${baseUrl}/mobile/activity/sign/sign`, 'post', headers, {
|
||
"shopId": shopId,
|
||
"activityId": activityId,
|
||
"signDate": moment().format('YYYY-MM-DD')
|
||
});
|
||
if (!data.success) {
|
||
return console.error(data.msg);
|
||
}
|
||
console.log(`签到成功,积分+${data.result.integral}`);
|
||
message += `签到成功,积分+${data.result.integral}\n`;
|
||
} catch (e) {
|
||
console.error(`签到时发生异常:${e}`);
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 获取积分详细
|
||
*
|
||
* @return {Promise<void>}
|
||
*/
|
||
async function getMyBonusLogs() {
|
||
try {
|
||
const data = await sudojia.sendRequest(`${baseUrl}/mobile/customer/getMyAllPoint?shopId=${shopId}`, 'get', headers);
|
||
if (!data.success) {
|
||
return console.error(data.msg);
|
||
}
|
||
console.log(`当前积分:${data.result[0].score}`);
|
||
message += `当前积分:${data.result[0].score}\n\n`;
|
||
} catch (e) {
|
||
console.error(`获取积分时发生异常:${e}`);
|
||
}
|
||
}
|