Files
qinglong/脚本库/微信小程序/抓包版/老板电器服务微商城/2025-04-28_sudojia_laoban_9cdb46b6.js
2026-05-24 05:33:05 +00:00

342 lines
11 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// # Source: https://github.com/sudojia/AutoTaskScript/blob/script/src/wx_mini/sudojia_laoban.js
// # Raw: https://raw.githubusercontent.com/sudojia/AutoTaskScript/script/src/wx_mini/sudojia_laoban.js
// # Repo: sudojia/AutoTaskScript
// # Path: src/wx_mini/sudojia_laoban.js
// # UploadedAt: 2025-04-28T19:26:13+08:00
// # SHA256: 9cdb46b6f5c70e036f601d6f2178f0003a531075b88eeef7e8d8390fe7608823
// # Category: 微信小程序/抓包版
// # Evidence: appid/openid/session_key/encryptedData等小程序字段
//
/**
* 老板电器服务微商城
*
* 抓包 Hosthttps://vip.foxech.com 在请求 Body 参数中获取 openid 的值(不是在请求头哈)
* export LAOBAN_OPENID = 'tAXnPxxxxxxxxxxxxxxxx'
* 多账号用 & 或换行
*
* @author Telegram@sudojia
* @site https://blog.imzjw.cn
* @date 2024/07/19
*
* const $ = new Env('老板电器服务微商城')
* cron: 15 9 * * *
*/
const initScript = require('../utils/initScript')
const {$, notify, sudojia, checkUpdate} = initScript('老板电器服务微商城');
const lbList = process.env.LAOBAN_OPENID ? process.env.LAOBAN_OPENID.split(/[\n&]/) : [];
let message = '';
// 接口地址
const baseUrl = 'https://vip.foxech.com'
// 请求头
const headers = {
'Host': 'vip.foxech.com',
'User-Agent': sudojia.getRandomUserAgent(),
"xweb_xhr": "1",
'Content-Type': 'application/json',
'Accept': '*/*',
"Sec-Fetch-Site": "cross-site",
"Sec-Fetch-Mode": "cors",
"Sec-Fetch-Dest": "empty",
'Referer': 'https://servicewechat.com/wxc8c90950cf4546f6/157/page-frame.html',
};
!(async () => {
await checkUpdate($.name, lbList);
console.log(`\n已随机分配 User-Agent\n\n${headers['user-agent'] || headers['User-Agent']}`);
for (let i = 0; i < lbList.length; i++) {
const index = i + 1;
$.openId = lbList[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(1300, 2000));
await getSignWeek();
await $.wait(sudojia.getRandomWait(1300, 2000));
await doTask();
await $.wait(sudojia.getRandomWait(1300, 2000));
await getPoints();
}
/**
* 获取用户信息
*
* @return {Promise<void>}
*/
async function getUserInfo() {
try {
const data = await sudojia.sendRequest(`${baseUrl}/index.php/api/member/get_member_info`, 'post', headers, getToken());
if ('200' !== data.code) {
console.error(data.msg);
return;
}
const nickName = data.data.info.nickname;
const mobile = data.data.info.mobile;
console.log(`昵称:${nickName}`);
message += `${nickName}(${mobile})\n`;
} catch (e) {
console.error(`获取用户信息时发生异常:${e}`);
}
}
/**
* 获取每周签到状态
*
* @return {Promise<void>}
*/
async function getSignWeek() {
try {
const jsonData = getToken();
delete jsonData.is_need_sync;
const data = await sudojia.sendRequest(`${baseUrl}/index.php/api/member/get_sign_week`, 'post', headers, jsonData);
if ('200' !== data.code) {
console.error(data.msg);
return;
}
const {day: signDay, list: dataList} = data.data;
console.log(`已累计签到${signDay}`);
message += `已累计签到${signDay}\n`;
const nowDay = new Date().getFullYear() + String(new Date().getMonth() + 1).padStart(2, '0') + String(new Date().getDate()).padStart(2, '0');
const todayRecord = dataList.find(list => list.date === nowDay);
if (todayRecord) {
if (0 === todayRecord.is_sign) {
await $.wait(sudojia.getRandomWait(1000, 1500));
await userSign();
} else if (todayRecord.is_sign === 1) {
console.log('今日已经签到过了!');
message += '今日已经签到过了!\n';
}
} else {
console.error('todayRecord 数据为空');
}
if (signDay >= 7) {
await getSignPrizeList();
}
} catch (e) {
console.error(`获取每周签到状态时发生异常:${e}`);
}
}
/**
* 签到
*
* @return {Promise<void>}
*/
async function userSign() {
try {
const data = await sudojia.sendRequest(`${baseUrl}/index.php/api/member/user_sign`, 'post', headers, getToken());
if ('200' !== data.code) {
console.error(data.msg);
return;
}
console.log(`签到成功,积分+${data.data.score}`);
message += `签到成功,积分+${data.data.score}\n`;
} catch (e) {
console.error(`签到时发生异常:${e}`);
}
}
/**
* 获取连续签到奖励列表
*
* @return {Promise<void>}
*/
async function getSignPrizeList() {
try {
const jsonData = getToken();
delete jsonData.is_need_sync;
const data = await sudojia.sendRequest(`${baseUrl}/index.php/api/member/get_sign_prize_list`, 'post', headers, jsonData);
if ('200' !== data.code) {
console.error(data.msg);
return;
}
const {list: dataList} = data.data;
for (const list of dataList) {
await $.wait(sudojia.getRandomWait(1000, 1500));
switch (list.status) {
case 1:
console.log(`开始领取【${list.title}】积分奖励`);
await getSignPrize(list.id, list.title);
break;
case 2:
console.log(`${list.title}】奖励已经领取过了`);
break;
case 0:
console.log(`${list.title}】奖励还未达到指定天数,继续签到吧!`);
break;
}
}
} catch (e) {
console.error(`获取连续签到奖励列表时发生异常:${e}`);
}
}
/**
* 领取连续签到奖励
*
* @param id 奖励 id
* @param title 奖励标题
* @return {Promise<void>}
*/
async function getSignPrize(id, title) {
try {
const jsonData = getToken();
jsonData.id = id;
delete jsonData.is_need_sync;
const data = await sudojia.sendRequest(`${baseUrl}/index.php/api/member/get_sign_prize`, 'post', headers, jsonData);
if ('200' !== data.code) {
console.error(data.msg);
return;
}
console.log(`领取【${title}】奖励成功,积分+${data.data.score}`);
message += `领取【${title}】奖励成功,积分+${data.data.score}\n`;
} catch (e) {
console.error(`领取连续签到奖励时发生异常:${e}`);
}
}
/**
* 做任务
*
* @return {Promise<void>}
*/
async function doTask() {
const jsonData = getToken();
jsonData.page = 1;
jsonData.limit = 10000;
delete jsonData.is_need_sync;
const data = await sudojia.sendRequest(`${baseUrl}/index.php/api/member/get_member_score_mission_list`, 'post', headers, jsonData);
if ('200' !== data.code) {
console.error(data.msg);
return;
}
const taskList = data.data.list.filter(task => [7, 8, 12].includes(task.id));
for (const task of taskList) {
const {id, title, isOver} = task;
if (1 === isOver) {
console.log(`${title}任务已完成`);
continue;
}
console.log(`开始${title}任务...`);
await $.wait(sudojia.getRandomWait(1500, 2500));
await taskAction(id);
}
}
/**
* 根据任务 id 做任务
*
* @param id
* @return {Promise<void>}
*/
async function taskAction(id) {
switch (id) {
case 7:
// 浏览三个商品
await performListAction('get_goods_list');
break;
case 8:
// 逛秒杀, 待完善
console.log('秒杀任务好像关闭了,暂时注释');
// await performListAction('get_ms_list');
break;
case 12:
await performListAction('get_news_list');
break;
}
}
/**
* 获取要浏览的列表
*
* @param actionType
* @return {Promise<void>}
*/
async function performListAction(actionType) {
const types = {
'get_goods_list': {page: 1, limit: 20, category: 3},
// 'get_ms_list': {page: 1, limit: 20, category: 4},
'get_news_list': {page: 1, list: 20, category: 4, flag: 1}
};
const config = types[actionType];
const jsonData = getToken();
Object.assign(jsonData, config);
delete jsonData.is_need_sync;
const data = await sudojia.sendRequest(`${baseUrl}/index.php/api/common/${actionType}`, 'post', headers, jsonData);
const list = data.data.list;
for (let i = 0; i < 3; i++) {
const item = list[Math.floor(Math.random() * list.length)];
await detail(item.id, actionType);
}
}
/**
* 浏览任务
*
* @param id
* @param actionType
* @return {Promise<void>}
*/
async function detail(id, actionType) {
const jsonData = getToken();
jsonData.id = id;
delete jsonData.is_need_sync;
if ('get_goods_list' === actionType) {
jsonData.is_act = '';
}
const type = actionType.replace('list', 'detail');
const data = await sudojia.sendRequest(`${baseUrl}/index.php/api/common/${type}`, 'post', headers, jsonData);
await $.wait(sudojia.getRandomWait(5000, 6000));
const info = data.data.info;
console.log(`浏览${info.title}成功!`);
}
/**
* 获取积分
*
* @return {Promise<void>}
*/
async function getPoints() {
try {
const jsonData = getToken();
delete jsonData.is_need_sync
const data = await sudojia.sendRequest(`${baseUrl}/index.php/api/member/sync_crm_member_score`, 'post', headers, jsonData);
if ('200' !== data.code) {
console.error(data.msg);
return;
}
console.log(`当前积分:${data.data.userinfo.score}`);
message += `当前积分:${data.data.userinfo.score}\n\n`;
} catch (e) {
console.error(`获取积分时发生异常:${e}`);
}
}
/**
* 获取请求头参数
*
* @return {{openid: *, is_need_sync: number, timestamp: number, token: string}}
*/
function getToken() {
const currentTimestampMs = Date.now();
const rawString = `${currentTimestampMs}wqewq${$.openId}`;
return {
is_need_sync: 1,
timestamp: currentTimestampMs,
token: sudojia.md5(rawString),
openid: $.openId
}
}