Continue seeded Qinglong script collection
This commit is contained in:
355
脚本库/微信小程序/抓包版/七彩虹商城/2025-04-28_sudojia_colorful_mall_5087394f.js
Normal file
355
脚本库/微信小程序/抓包版/七彩虹商城/2025-04-28_sudojia_colorful_mall_5087394f.js
Normal file
@@ -0,0 +1,355 @@
|
||||
// # Source: https://github.com/sudojia/AutoTaskScript/blob/script/src/wx_mini/sudojia_colorful_mall.js
|
||||
// # Raw: https://raw.githubusercontent.com/sudojia/AutoTaskScript/script/src/wx_mini/sudojia_colorful_mall.js
|
||||
// # Repo: sudojia/AutoTaskScript
|
||||
// # Path: src/wx_mini/sudojia_colorful_mall.js
|
||||
// # UploadedAt: 2025-04-28T19:26:13+08:00
|
||||
// # SHA256: 5087394f5b0263198225031c3d6e5559f2de251328e9b650c6e4a23cdd227300
|
||||
// # Category: 微信小程序/抓包版
|
||||
// # Evidence: appid/openid/session_key/encryptedData等小程序字段
|
||||
//
|
||||
|
||||
/**
|
||||
* 七彩虹商城小程序
|
||||
*
|
||||
* 退出登录后打开抓包再登录才会有此 URL
|
||||
* 退出登录后打开抓包再登录才会有此 URL
|
||||
* 退出登录后打开抓包再登录才会有此 URL
|
||||
*
|
||||
* 1. 抓包 URL:https://shop.skycolorful.com/api/User/DecryptPhoneNumber 获取请求体的 Json 数据,全选复制
|
||||
* 2. 到 JSON 在线工具网站 https://www.json.cn/jsonzip/ 粘贴 json 并压缩
|
||||
* JSON 必须是一行,不能换行 不能换行 不能换行
|
||||
* JSON 必须是一行,不能换行 不能换行 不能换行
|
||||
* JSON 必须是一行,不能换行 不能换行 不能换行
|
||||
*
|
||||
* export COLORFUL_TOKEN = '{"OpenId":"xxx","Iv":"xxx","EncryptedData":"iYC3xFxxx"}'
|
||||
* 多账号用 & 或换行
|
||||
*
|
||||
* @author Telegram@sudojia
|
||||
* @site https://blog.imzjw.cn
|
||||
* @date 2024/06/18
|
||||
* @lastModify 2025/01/20
|
||||
*
|
||||
* const $ = new Env('七彩虹商城')
|
||||
* cron: 14 12 * * *
|
||||
*/
|
||||
const initScript = require('../utils/initScript')
|
||||
const {$, notify, sudojia, checkUpdate} = initScript('七彩虹商城');
|
||||
const colorList = process.env.COLORFUL_TOKEN ? process.env.COLORFUL_TOKEN.split(/[\n&]/) : [];
|
||||
// 消息推送
|
||||
let message = '';
|
||||
// 接口地址
|
||||
const baseUrl = 'https://shop.skycolorful.com'
|
||||
// 请求头
|
||||
const headers = {
|
||||
'User-Agent': sudojia.getRandomUserAgent(),
|
||||
'Accept': '*/*',
|
||||
'source': 'Wx',
|
||||
'Content-Type': 'application/json',
|
||||
'Accept-Encoding': 'gzip, deflate, br',
|
||||
'referer': 'https://servicewechat.com/wx49018277e65fc3e1/61/page-frame.html',
|
||||
'Ticks': Date.now(),
|
||||
'requestId': uuidv4(),
|
||||
'AppSecret': 'MmI1YzAxZmItNzY0MC00MDFhLTgxODgtNDNhMTMxOTBhNjI2',
|
||||
'AppId': '815d8026-9a52-4445-a42c-a5443134232e',
|
||||
'Sign': getSign()
|
||||
};
|
||||
|
||||
!(async () => {
|
||||
await checkUpdate($.name, colorList);
|
||||
console.log(`\n已随机分配 User-Agent\n\n${headers['user-agent'] || headers['User-Agent']}`);
|
||||
for (let i = 0; i < colorList.length; i++) {
|
||||
const index = i + 1;
|
||||
console.log(`\n*****第[${index}]个${$.name}账号*****`);
|
||||
await getToken(JSON.parse(colorList[i]));
|
||||
await $.wait(sudojia.getRandomWait(1200, 2000));
|
||||
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();
|
||||
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 isSign();
|
||||
await $.wait(sudojia.getRandomWait(2000, 2500));
|
||||
await newSign();
|
||||
await $.wait(sudojia.getRandomWait(2000, 2500));
|
||||
await signDays();
|
||||
await $.wait(sudojia.getRandomWait(2000, 2500));
|
||||
await createComment();
|
||||
await $.wait(sudojia.getRandomWait(1000, 2000));
|
||||
await getUserPoint();
|
||||
}
|
||||
|
||||
async function getToken(bodyData) {
|
||||
try {
|
||||
const data = await sudojia.sendRequest(`${baseUrl}/api/User/DecryptPhoneNumber`, 'post', headers, bodyData);
|
||||
if (0 !== data.Code) {
|
||||
return console.error(data.Message);
|
||||
}
|
||||
headers.Authorization = `Bearer ${data.Data.Token}`;
|
||||
headers['X-Authorization'] = `Bearer ${data.Data.RefreshToken}`;
|
||||
console.log('Token 已更新');
|
||||
} catch (e) {
|
||||
console.error(`刷新 Token 时发生异常:${e}`);
|
||||
}
|
||||
}
|
||||
|
||||
async function checkLogin() {
|
||||
try {
|
||||
const data = await sudojia.sendRequest(`${baseUrl}/api/User/RefreshLoginTime`, 'post', headers, {"phone": ""});
|
||||
if (0 !== data.Code) {
|
||||
$.isLogin = false;
|
||||
return;
|
||||
}
|
||||
$.isLogin = true;
|
||||
console.log('Token 有效');
|
||||
} catch (e) {
|
||||
console.error('状态:', e.response.status);
|
||||
$.isLogin = false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取用户信息
|
||||
*
|
||||
* @return {Promise<*>}
|
||||
*/
|
||||
async function getUserInfo() {
|
||||
try {
|
||||
const data = await sudojia.sendRequest(`${baseUrl}/api/User/GetUserInfo`, 'get', headers);
|
||||
if (0 !== data.Code) {
|
||||
return console.error(data.Message);
|
||||
}
|
||||
$.mobile = data.Data.Mobile;
|
||||
const nickName = data.Data.NickName;
|
||||
const hiddenMobile = `${$.mobile.slice(0, 3)}***${$.mobile.slice(-3)}`;
|
||||
console.log(`${nickName}(${hiddenMobile})`);
|
||||
message += `${nickName}(${$.mobile})\n`
|
||||
} catch (e) {
|
||||
console.error(`获取用户信息时发生异常:${e}`);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取签到状态
|
||||
*
|
||||
* @return {Promise<void>}
|
||||
*/
|
||||
async function isSign() {
|
||||
try {
|
||||
const data = await sudojia.sendRequest(`${baseUrl}/api/User/IsSign`, 'get', headers);
|
||||
if (data.Code !== 0) {
|
||||
console.error(data.Message);
|
||||
return;
|
||||
}
|
||||
if (data.Data.IsSign) {
|
||||
console.log('今日已签到');
|
||||
message += `今日已签到\n`;
|
||||
return;
|
||||
}
|
||||
await $.wait(sudojia.getRandomWait(1200, 2000));
|
||||
await sign();
|
||||
} catch (e) {
|
||||
console.error(`获取签到状态接口时发生异常:${e}`);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 签到
|
||||
*
|
||||
* @return {Promise<void>}
|
||||
*/
|
||||
async function sign() {
|
||||
try {
|
||||
const data = await sudojia.sendRequest(`${baseUrl}/api/User/Sign`, 'post', headers);
|
||||
if (0 !== data.Code) {
|
||||
console.error(data.Message);
|
||||
return;
|
||||
}
|
||||
const signPoint = data.Data.Point
|
||||
console.log(`旧版签到成功!积分+${signPoint}`);
|
||||
message += `旧版签到成功!积分+${signPoint}\n`;
|
||||
} catch (e) {
|
||||
console.error(`旧版签到时发生异常:${e}`);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 新版签到
|
||||
*
|
||||
* @returns {Promise<void>}
|
||||
*/
|
||||
async function newSign() {
|
||||
try {
|
||||
const data = await sudojia.sendRequest(`${baseUrl}/api/User/SignV2`, 'post', headers);
|
||||
if (0 !== data.Code) {
|
||||
return console.error(`新版签到失败:${data.Message}`);
|
||||
}
|
||||
console.log(`新版签到成功!`);
|
||||
message += `新版签到成功!\n`;
|
||||
} catch (e) {
|
||||
console.error(`新版签到时发生异常:${e}`);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取已连续签到天数
|
||||
*
|
||||
* @return {Promise<void>}
|
||||
*/
|
||||
async function signDays() {
|
||||
try {
|
||||
const data = await sudojia.sendRequest(`${baseUrl}/api/User/SignDays`, 'get', headers);
|
||||
console.log(`已连续签到${data.Data}天`);
|
||||
message += `已连续签到${data.Data}天\n`;
|
||||
} catch (e) {
|
||||
console.error('获取签到天数接口请求失败,请检查网络问题:', e);
|
||||
}
|
||||
}
|
||||
|
||||
// ****************************任务列表开始****************************
|
||||
/**
|
||||
* 获取 20 篇文章
|
||||
*
|
||||
* @return {Promise<*>}
|
||||
*/
|
||||
async function getArticlePage() {
|
||||
try {
|
||||
const data = await sudojia.sendRequest(`${baseUrl}/api/Bbs/GetHotList?page=1&size=30&phone=${$.mobile}`, 'get', headers);
|
||||
const articleList = data.Data[Math.floor(Math.random() * data.Data.length)];
|
||||
return articleList.Id;
|
||||
} catch (e) {
|
||||
console.error(`获取文章列表接口时发生异常:${e}`);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 刷新积分
|
||||
*
|
||||
* @param taskName
|
||||
* @return {Promise<*>}
|
||||
*/
|
||||
async function getCurrentCount(taskName) {
|
||||
const taskResp = await sudojia.sendRequest(`${baseUrl}/api/Sys/GetPointConfig`, 'get', headers);
|
||||
const taskList = taskResp.Data.DataList;
|
||||
const task = taskList.find(t => t.Name === taskName);
|
||||
return task.DayGetPointTotal;
|
||||
}
|
||||
|
||||
/**
|
||||
* 每次积分+3,每日上限9分
|
||||
* 评论
|
||||
*
|
||||
* @return {Promise<void>}
|
||||
*/
|
||||
async function createComment() {
|
||||
try {
|
||||
for (let i = 0; i < 3; i++) {
|
||||
const currentCount = await getCurrentCount('社区内容评论');
|
||||
if (currentCount >= 9) {
|
||||
console.log(`今日评论积分已达上限9分`);
|
||||
break;
|
||||
}
|
||||
console.log(`第[${i + 1}]次评论`);
|
||||
// 获取文章 ID
|
||||
let articleId = await getArticlePage();
|
||||
console.log(`获取的文章 ID: ${articleId}`);
|
||||
await $.wait(sudojia.getRandomWait(1000, 2000));
|
||||
// 获取随机评论内容
|
||||
const content = getContent();
|
||||
console.log(`获取的随机评论内容: ${content}`);
|
||||
await $.wait(sudojia.getRandomWait(1000, 2000));
|
||||
const data = await sudojia.sendRequest(`${baseUrl}/api/Bbs/PostReply`, 'post', headers, {
|
||||
"PostId": articleId,
|
||||
"ReplyId": "",
|
||||
"ParentReplyId": "",
|
||||
"Phone": $.mobile,
|
||||
"Content": content,
|
||||
"Pictures": []
|
||||
});
|
||||
if (0 === data.Code) {
|
||||
console.log(`评论成功`);
|
||||
console.log(`等待5s...\n`);
|
||||
await $.wait(sudojia.getRandomWait(5500, 6500));
|
||||
} else {
|
||||
console.error('评论失败,返回: ', data);
|
||||
}
|
||||
}
|
||||
} catch
|
||||
(e) {
|
||||
console.error(`发表评论时发生异常:${e}`);
|
||||
}
|
||||
}
|
||||
|
||||
function getContent() {
|
||||
const contentArray = [
|
||||
'膜拜大大大神!!',
|
||||
'果断Mark!!!',
|
||||
'看帖看完了至少要顶一下!',
|
||||
'前排占座,学习了!',
|
||||
'每天一顶,心情好好',
|
||||
'内容引起极度舒适,已收藏。',
|
||||
'潜水多年,看到这个帖子我决定浮出水面点个赞。',
|
||||
'楼主辛苦了,感谢!!'
|
||||
];
|
||||
return contentArray[Math.floor(Math.random() * contentArray.length)];
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取用户积分
|
||||
*
|
||||
* @return {Promise<void>}
|
||||
*/
|
||||
async function getUserPoint() {
|
||||
try {
|
||||
const data = await sudojia.sendRequest(`${baseUrl}/api/User/GetUserPoint`, 'get', headers);
|
||||
if (0 === data.Code) {
|
||||
console.log(`当前积分:${data.Data.Num}`);
|
||||
message += `当前积分:${data.Data.Num}\n`;
|
||||
} else {
|
||||
console.error(data.Message);
|
||||
}
|
||||
} catch (e) {
|
||||
console.error(`获取用户积分接口时发生异常:${e}`);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取 Sign
|
||||
*
|
||||
* @return {string}
|
||||
*/
|
||||
function getSign() {
|
||||
return sudojia.md5([
|
||||
JSON.stringify({AppId: '815d8026-9a52-4445-a42c-a5443134232e'}),
|
||||
JSON.stringify({Ticks: Date.now()}),
|
||||
JSON.stringify({requestId: uuidv4()}),
|
||||
JSON.stringify({AppSecret: "2b5c01fb-7640-401a-8188-43a13190a626"}
|
||||
)].join(""));
|
||||
}
|
||||
|
||||
/**
|
||||
* 随机生成 UUID v4
|
||||
*
|
||||
* @return {string}
|
||||
*/
|
||||
function uuidv4() {
|
||||
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
|
||||
const r = (Math.random() * 16) | 0, v = c === 'x' ? r : (r & 0x3) | 0x8;
|
||||
return v.toString(16);
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user