Files
qinglong/脚本库/微信小程序/抓包版/爷爷不泡茶/2025-04-28_sudojia_paotea_de12e346.js
2026-05-24 05:33:05 +00:00

193 lines
6.6 KiB
JavaScript
Raw Permalink 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_paotea.js
// # Raw: https://raw.githubusercontent.com/sudojia/AutoTaskScript/script/src/wx_mini/sudojia_paotea.js
// # Repo: sudojia/AutoTaskScript
// # Path: src/wx_mini/sudojia_paotea.js
// # UploadedAt: 2025-04-28T19:26:13+08:00
// # SHA256: de12e346ca529ef4c36c1c7951d8ec880a5533c32c8634970af203665aee2afe
// # Category: 微信小程序/抓包版
// # Evidence: appid/openid/session_key/encryptedData等小程序字段
//
/**
* 爷爷不泡茶
* #小程序://爷爷不泡茶/gv0jvm4SRgYkqMJ
*
* 抓包 Hosthttps://webapi.qmai.cn 获取请求头 qm-user-token
* export PAO_TEA_TOKEN = 'token#activityId&token2&token3'
* 多账号用 & 或换行
*
* @author Telegram@sudojia
* @site https://blog.imzjw.cn
* @date 2024/10/03
*
* const $ = new Env('爷爷不泡茶')
* cron: 30 9 * * *
*/
const initScript = require('../utils/initScript')
const {$, notify, sudojia, checkUpdate} = initScript('爷爷不泡茶');
const paoTeaList = process.env.PAO_TEA_TOKEN ? process.env.PAO_TEA_TOKEN.split(/[\n&]/) : [];
let message = '';
// 接口地址
const baseUrl = 'https://webapi.qmai.cn'
// AppId
const appId = 'wx3423ef0c7b7f19af';
// 请求头
const headers = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 MicroMessenger/7.0.20.1781(0x6700143B) NetType/WIFI MiniProgramEnv/Windows WindowsWechat/WMPF WindowsWechat(0x63090a1b)XWEB/11097',
'Content-Type': 'application/json',
'store-id': '216652',
'qm-from': 'wechat',
'scene': '1145',
'referer': `https://servicewechat.com/${appId}/49/page-frame.html`
}
!(async () => {
await checkUpdate($.name, paoTeaList);
for (let i = 0; i < paoTeaList.length; i++) {
let activityId;
const [token, firstActivityId] = paoTeaList[i].split('#');
activityId = firstActivityId || (paoTeaList[0].split('#')[1] || '1078694295517364225');
const index = i + 1;
headers['qm-user-token'] = token;
console.log(`\n*****第[${index}]个${$.name}账号*****`);
const isLogin = await checkLogin();
if (!isLogin) {
console.error(`Token 已失效`);
await notify.sendNotify(`「Token失效通知」`, `${$.name}账号[${index}] Token 已失效,请重新登录获取 Token\n\n`);
continue;
}
message += `📣====${$.name}账号[${index}]====📣\n`;
await $.wait(sudojia.getRandomWait(800, 1200));
await main(activityId);
await $.wait(sudojia.getRandomWait(2000, 2500));
}
if (message) {
await notify.sendNotify(`${$.name}`, `${message}`);
}
})().catch((e) => $.logErr(e)).finally(() => $.done());
async function main(activityId) {
await queryNewSign(activityId);
await $.wait(sudojia.getRandomWait(1000, 1500));
await querySignDays(activityId);
await $.wait(sudojia.getRandomWait(1000, 1500));
await pointsInfo();
}
/**
* 检测 Token
*
* @returns {Promise<*>}
*/
async function checkLogin() {
try {
const data = await sudojia.sendRequest(`${baseUrl}/web/catering2-apiserver/crm/customer-center?appid=${appId}`, 'get', headers);
return data.status;
} catch (e) {
console.error(`检测 Token 时发生异常:${e}`);
}
}
/**
* 查询新版签到
*
* @return {Promise<void>}
*/
async function queryNewSign(activityId) {
try {
const data = await sudojia.sendRequest(`${baseUrl}/web/cmk-center/sign/userSignStatistics`, 'post', headers, {
"activityId": activityId,
"appid": appId
});
if (data.status) {
const {signStatus} = data.data;
if (1 === signStatus) {
console.log(`今天已经签到过了`);
message += `今天已经签到过了\n`;
return;
}
await $.wait(sudojia.getRandomWait(3e3, 5e3));
await newSign(activityId);
}
} catch (e) {
console.error('查询签到接口请求失败:', e);
}
}
/**
* 签到
*
* @return {Promise<void>}
*/
async function newSign(activityId) {
try {
const times = new Date().getTime();
const data = await sudojia.sendRequest(`${baseUrl}/web/cmk-center/sign/takePartInSign`, 'post', headers, {
"activityId": activityId,
"storeId": 216652,
"timestamp": times,
"appid": appId
});
if (data.status) {
message += `签到成功\n`;
console.log(`签到成功`);
} else {
console.error('签到失败:', data.message);
}
} catch (e) {
console.error('签到接口请求失败:', e);
}
}
async function querySignDays(activityId) {
try {
const data = await sudojia.sendRequest(`${baseUrl}/web/cmk-center/sign/userSignStatistics`, 'post', headers, {
"activityId": activityId,
"appid": appId
});
if (!data.status) {
return console.error(`获取签到天数失败:${data}`);
}
let {signDays, rewardList} = data.data;
console.log(`已连续签到[${signDays}]天`);
let found = false;
for (const reward of rewardList) {
if (reward.signNum > signDays) {
const daysToNextStage = reward.signNum - signDays;
const rewardName = reward.rewardList[0].rewardName;
console.log(`下一阶段奖励[${rewardName}]还需签到[${daysToNextStage}]天`);
message += `下一阶段奖励[${rewardName}]还需签到[${daysToNextStage}]天\n`;
found = true;
break;
}
}
if (!found) {
console.log("已达到所有签到奖励阶段!");
}
} catch (e) {
console.error('查询新版接口请求失败:', e);
}
}
/**
* 积分查询
*
* @return {Promise<void>}
*/
async function pointsInfo() {
try {
const data = await sudojia.sendRequest(`${baseUrl}/web/catering/crm/points-info`, 'post', headers, {
appid: appId
});
if (data.status) {
const {soonExpiredPoints, totalPoints, expiredTime} = data.data;
message += `当前积分:${totalPoints}\n`;
console.log(`当前积分:${totalPoints}`);
soonExpiredPoints > 0 ? message += `${soonExpiredPoints}积分将在${expiredTime}失效\n\n`
: message += `暂无过期积分\n\n`;
}
} catch (e) {
console.error('积分查询接口请求失败:', e);
}
}