Continue seeded Qinglong script collection
This commit is contained in:
212
脚本库/微信小程序/抓包版/胖哥俩肉蟹煲/2025-04-28_sudojia_pangGe_19db4d10.js
Normal file
212
脚本库/微信小程序/抓包版/胖哥俩肉蟹煲/2025-04-28_sudojia_pangGe_19db4d10.js
Normal file
@@ -0,0 +1,212 @@
|
||||
// # Source: https://github.com/sudojia/AutoTaskScript/blob/script/src/wx_mini/sudojia_pangGe.js
|
||||
// # Raw: https://raw.githubusercontent.com/sudojia/AutoTaskScript/script/src/wx_mini/sudojia_pangGe.js
|
||||
// # Repo: sudojia/AutoTaskScript
|
||||
// # Path: src/wx_mini/sudojia_pangGe.js
|
||||
// # UploadedAt: 2025-04-28T19:26:13+08:00
|
||||
// # SHA256: 19db4d1002cbd86af9c859c214179cec890991b2ff09fa43a9cd787e4e90889c
|
||||
// # Category: 微信小程序/抓包版
|
||||
// # Evidence: appid/openid/session_key/encryptedData等小程序字段
|
||||
//
|
||||
|
||||
/**
|
||||
* #小程序://胖哥俩肉蟹煲/R6ANaXRZmnBeLSB
|
||||
*
|
||||
* 抓包 Host:https://saash5.namek.com.cn 获取请求头 token
|
||||
* export PANG_GE_TOKEN = '1158xxxxxxxxxx'
|
||||
* 多账号用 & 或换行
|
||||
*
|
||||
* @author Telegram@sudojia
|
||||
* @site https://blog.imzjw.cn
|
||||
* @date 2024/09/03
|
||||
*
|
||||
* const $ = new Env('胖哥俩肉蟹煲')
|
||||
* cron: 19 6 * * *
|
||||
*/
|
||||
const initScript = require('../utils/initScript')
|
||||
const {$, notify, sudojia, checkUpdate} = initScript('胖哥俩肉蟹煲');
|
||||
const pangGeList = process.env.PANG_GE_TOKEN ? process.env.PANG_GE_TOKEN.split(/[\n&]/) : [];
|
||||
// 消息推送
|
||||
let message = '';
|
||||
// 接口地址
|
||||
const baseUrl = 'https://saash5.namek.com.cn'
|
||||
// 请求头
|
||||
const headers = {
|
||||
'deviceWidth': '414',
|
||||
'clientVersionType': '1',
|
||||
'serviceId': 'namek-saas-web-page',
|
||||
'accessPageType': '2',
|
||||
'pageCatetory': '2',
|
||||
'guidePageType': '13',
|
||||
'deviceHeight': '780',
|
||||
'clientVersion': '3.13.8',
|
||||
'tenantId': 24,
|
||||
'User-Agent': sudojia.getRandomUserAgent(),
|
||||
'Content-Type': 'application/json;charset=UTF-8',
|
||||
'Accept-Encoding': 'gzip, deflate, br',
|
||||
'Referer': 'https://servicewechat.com/wxe61905cae01a6c7d/81/page-frame.html',
|
||||
'Accept-Language': 'zh-CN,zh;q=0.9'
|
||||
};
|
||||
|
||||
!(async () => {
|
||||
await checkUpdate($.name, pangGeList);
|
||||
console.log(`\n已随机分配 User-Agent\n\n${headers['user-agent'] || headers['User-Agent']}`);
|
||||
for (let i = 0; i < pangGeList.length; i++) {
|
||||
const index = i + 1;
|
||||
console.log(`\n*****第[${index}]个${$.name}账号*****`);
|
||||
headers.token = pangGeList[i]
|
||||
const member = await checkLogin();
|
||||
if (!member) {
|
||||
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();
|
||||
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(2000, 2500));
|
||||
await checkInStatus();
|
||||
await $.wait(sudojia.getRandomWait(2000, 2500));
|
||||
await getUserPoints();
|
||||
}
|
||||
|
||||
/**
|
||||
* 检测登录状态
|
||||
*
|
||||
* @returns {Promise<*>}
|
||||
*/
|
||||
async function checkLogin() {
|
||||
try {
|
||||
const data = await sudojia.sendRequest(`${baseUrl}//api/v1/member/info/byToken?tenantId=24&agreementVer=`, 'get', getSignHeader());
|
||||
if (0 !== data.header.code) {
|
||||
console.error(data.header.message);
|
||||
return;
|
||||
}
|
||||
return data.body.member;
|
||||
} catch (e) {
|
||||
console.error(`检测登录状态接口请求失败,请检查网络问题:`, e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取用户信息
|
||||
*
|
||||
* @return {Promise<*>}
|
||||
*/
|
||||
async function getUserInfo() {
|
||||
try {
|
||||
const data = await sudojia.sendRequest(`${baseUrl}//api/v1/member/index/personal?needPoints=1&needBalance=0&needCouponCount=1&needActivityCount=1&needFrozenState=0`, 'get', getSignHeader());
|
||||
if (0 !== data.header.code) {
|
||||
return console.error('获取用户信息失败 ->', data.header.message);
|
||||
}
|
||||
$.userId = data.body.member.id;
|
||||
const {nickname, phone} = data.body.member;
|
||||
const hiddenMobile = `${phone.slice(0, 3)}***${phone.slice(-3)}` || '18888888888';
|
||||
console.log(`${nickname}(${hiddenMobile})`);
|
||||
message += `${nickname}(${phone})\n`;
|
||||
} catch (e) {
|
||||
console.error(`获取用户信息接口请求失败,请检查网络问题:`, e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 检测签到状态
|
||||
*
|
||||
* @returns {Promise<void>}
|
||||
*/
|
||||
async function checkInStatus() {
|
||||
try {
|
||||
const data = await sudojia.sendRequest(`${baseUrl}//api/v1/ope/checkin/100135/member?totalSignDayList=`, 'get', getSignHeader());
|
||||
if (0 !== data.header.code) {
|
||||
return console.error('获取签到状态失败 ->', data.header.message);
|
||||
}
|
||||
console.log(`已连续签到[${data.body.signContinuedCount}]天, 累计签到[${data.body.signTotalCount}]天`);
|
||||
message += `已连续签到[${data.body.signContinuedCount}]天, 累计签到[${data.body.signTotalCount}]天\n`;
|
||||
if (data.body.isSignToday) {
|
||||
console.log(`今日已签到!`);
|
||||
message += `今日已签到!\n`;
|
||||
return;
|
||||
}
|
||||
console.log('开始签到...');
|
||||
await $.wait(sudojia.getRandomWait(1200, 2000));
|
||||
await sign();
|
||||
} catch (e) {
|
||||
console.error(`获取签到状态接口请求失败,请检查网络问题:`, e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 签到
|
||||
*
|
||||
* @returns {Promise<void>}
|
||||
*/
|
||||
async function sign() {
|
||||
try {
|
||||
const data = await sudojia.sendRequest(`${baseUrl}//api/v1/ope/checkin/member/sign`, 'post', getSignHeader());
|
||||
if (0 !== data.header.code) {
|
||||
return console.error('签到失败 ->', data.header.message);
|
||||
}
|
||||
console.log(`签到成功,积分+${data.body.getPoint}`);
|
||||
message += `签到成功\n`;
|
||||
} catch (e) {
|
||||
console.error(`签到接口请求失败,请检查网络问题:`, e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取用户积分
|
||||
*
|
||||
* @returns {Promise<void>}
|
||||
*/
|
||||
async function getUserPoints() {
|
||||
try {
|
||||
const data = await sudojia.sendRequest(`${baseUrl}//api/v1/member/115824951/points/changed/list?startIndex=0&pageCount=20&shopId=24&memberId=${$.userId}`, 'get', getSignHeader());
|
||||
if (0 !== data.header.code) {
|
||||
return console.error('获取积分失败 ->', data.header.message);
|
||||
}
|
||||
console.log(`当前积分:${data.body.points}`);
|
||||
message += `当前积分:${data.body.points}\n\n`;
|
||||
} catch (e) {
|
||||
console.error(`获取积分接口请求失败,请检查网络问题:`, e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成随机字符串
|
||||
*
|
||||
* @returns {string}
|
||||
*/
|
||||
function genNonce() {
|
||||
const digits = `174088${Math.floor(100000 + Math.random() * 900000)}`;
|
||||
const letters = Array.from({length: 16}, () =>
|
||||
String.fromCharCode(Math.random() < 0.5 ?
|
||||
Math.floor(Math.random() * 26) + 65 :
|
||||
Math.floor(Math.random() * 26) + 97
|
||||
)
|
||||
).join('');
|
||||
return digits + letters;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取签名请求头
|
||||
*
|
||||
* @returns {{deviceWidth: string, clientVersionType: string, "User-Agent": string, Referer: string, sign: string, "Accept-Encoding": string, clientVersion: string, nonce: string, pageCatetory: string, deviceHeight: string, tenantId: number, "Accept-Language": string, serviceId: string, accessPageType: string, guidePageType: string, "Content-Type": string, timestamp: number}}
|
||||
*/
|
||||
function getSignHeader() {
|
||||
const timestamp = Date.now();
|
||||
const nonceStr = genNonce();
|
||||
return {
|
||||
...headers,
|
||||
'timestamp': timestamp,
|
||||
'nonce': nonceStr,
|
||||
'sign': sudojia.md5(`nonce=${nonceStr}&tenantId=24×tamp=${timestamp}&token=${headers.token}udHw9173SheXhd`),
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user