376 lines
12 KiB
JavaScript
376 lines
12 KiB
JavaScript
// # Source: https://github.com/sudojia/AutoTaskScript/blob/script/src/wx_mini/sudojia_tilta.js
|
||
// # Raw: https://raw.githubusercontent.com/sudojia/AutoTaskScript/script/src/wx_mini/sudojia_tilta.js
|
||
// # Repo: sudojia/AutoTaskScript
|
||
// # Path: src/wx_mini/sudojia_tilta.js
|
||
// # UploadedAt: 2025-04-28T19:26:13+08:00
|
||
// # SHA256: cd4d5b0fd8a6d70b2c2c074ba8f5d8f460b849b9e6a6d06e331a6967271a4199
|
||
// # Category: 微信小程序/抓包版
|
||
// # Evidence: appid/openid/session_key/encryptedData等小程序字段
|
||
//
|
||
|
||
/**
|
||
* TILTA影像城小程序
|
||
*
|
||
* 抓包 Host:https://java.vrupup.com 获取请求头 authorization 的值
|
||
* export TILTA_TOKEN = 'eyJ0eXAiOxxxxxxxx'
|
||
* 多账号用 & 或换行
|
||
*
|
||
* 时效性很短,不建议跑
|
||
*
|
||
* @author Telegram@sudojia
|
||
* @site https://blog.imzjw.cn
|
||
* @date 2024/08/01
|
||
*
|
||
* const $ = new Env('TILTA影像城')
|
||
* cron: 5 10 * * *
|
||
*/
|
||
const initScript = require('../utils/initScript')
|
||
const {$, notify, sudojia, checkUpdate} = initScript('TILTA影像城');
|
||
const moment = require("moment");
|
||
const tiltaList = process.env.TILTA_TOKEN ? process.env.TILTA_TOKEN.split(/[\n&]/) : [];
|
||
let message = '';
|
||
// 接口地址
|
||
const baseUrl = 'https://java.vrupup.com'
|
||
// 请求头
|
||
const headers = {
|
||
'xweb_xhr': '1',
|
||
'User-Agent': sudojia.getRandomUserAgent(),
|
||
'Content-Type': 'application/json',
|
||
'Accept': '*/*',
|
||
'Referer': 'https://servicewechat.com/wxca94758d1196d2ff/33/page-frame.html',
|
||
'Accept-Encoding': 'gzip, deflate, br',
|
||
};
|
||
|
||
!(async () => {
|
||
await checkUpdate($.name, tiltaList);
|
||
console.log(`\n已随机分配 User-Agent\n\n${headers['user-agent'] || headers['User-Agent']}`);
|
||
for (let i = 0; i < tiltaList.length; i++) {
|
||
const index = i + 1;
|
||
headers.authorization = tiltaList[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(2000, 2500));
|
||
await getSignList();
|
||
await $.wait(sudojia.getRandomWait(2000, 2500));
|
||
await getTaskList();
|
||
await $.wait(sudojia.getRandomWait(2000, 2500));
|
||
await updateTask();
|
||
await $.wait(sudojia.getRandomWait(2000, 2500));
|
||
await getPoints();
|
||
}
|
||
|
||
/**
|
||
* 获取用户信息
|
||
*
|
||
* @return {Promise<void>}
|
||
*/
|
||
async function getUserInfo() {
|
||
try {
|
||
const data = await sudojia.sendRequest(`${baseUrl}/tietou-shop/api/get_user_detail`, 'post', headers);
|
||
if (1 !== data.code) {
|
||
console.error(data.msg);
|
||
return;
|
||
}
|
||
const nickName = data.data.nickName;
|
||
const mobile = data.data.mobile;
|
||
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 getSignList() {
|
||
try {
|
||
const planDate = moment().format('YYYY-MM-D');
|
||
const day = new Date().getDate();
|
||
// const day = moment().format('D');
|
||
const data = await sudojia.sendRequest(`${baseUrl}/tietou-shop/api/personal/sign/list`, 'post', headers, {
|
||
"planDate": planDate
|
||
});
|
||
if (1 !== data.code) {
|
||
console.error(data.msg);
|
||
return;
|
||
}
|
||
const signData = data.data.calendar.find(d => d.day === day);
|
||
if (signData) {
|
||
if (signData.status === 1) {
|
||
console.log('今日已签到');
|
||
message += `今日已签到\n`;
|
||
return;
|
||
}
|
||
await $.wait(sudojia.getRandomWait(1000, 1500));
|
||
await sign();
|
||
} else {
|
||
console.log(`未获取到签到任务,请手动打开小程序是否正常!`);
|
||
}
|
||
} catch (e) {
|
||
console.error(`获取签到列表时发生异常:${e}`);
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 签到函数
|
||
*
|
||
* @return {Promise<void>}
|
||
*/
|
||
async function sign() {
|
||
try {
|
||
const data = await sudojia.sendRequest(`${baseUrl}/tietou-shop/api/personal/sign/save`, 'post', headers);
|
||
if (1 !== data.code) {
|
||
console.error(data.msg);
|
||
return;
|
||
}
|
||
console.log(`签到成功!`);
|
||
message += `签到成功!\n`;
|
||
} catch (e) {
|
||
console.error(`签到时发生异常:${e}`);
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 获取任务列表
|
||
*
|
||
* @return {Promise<void>}
|
||
*/
|
||
async function getTaskList() {
|
||
try {
|
||
const data = await sudojia.sendRequest(`${baseUrl}/tietou-shop/api/task/list`, 'post', headers);
|
||
if (1 !== data.code) {
|
||
console.error(data.msg);
|
||
return;
|
||
}
|
||
// 过滤[评价最近一笔商品订单]
|
||
const taskList = data.data.filter(task => task.id !== 6);
|
||
for (const task of taskList) {
|
||
if (task.taskStatus !== 0) {
|
||
console.log(`任务【${task.name}】已完成`);
|
||
await $.wait(sudojia.getRandomWait(888, 1200));
|
||
continue;
|
||
}
|
||
console.log(`开始做【${task.name}】`);
|
||
await $.wait(sudojia.getRandomWait(1000, 1500));
|
||
switch (task.id) {
|
||
case 1:
|
||
// 铁粉社区文章点赞
|
||
const articleId = await getArticleList(3);
|
||
await $.wait(sudojia.getRandomWait(1000, 2000));
|
||
await likeArticle(articleId);
|
||
break;
|
||
case 2:
|
||
// 首页浏览两件商品
|
||
await getProductList();
|
||
await $.wait(sudojia.getRandomWait(1000, 2000));
|
||
await getProductList();
|
||
break;
|
||
case 3:
|
||
// 阅读铁粉社区文章10s
|
||
await finishTask(3);
|
||
break;
|
||
case 7:
|
||
// 阅读新闻中心文章10s
|
||
await finishTask(7);
|
||
break;
|
||
case 8:
|
||
// 阅读配件研究所文章10s
|
||
await finishTask(8);
|
||
break;
|
||
default:
|
||
console.error(`有新任务冒出来了【${task.name}】`);
|
||
break;
|
||
}
|
||
}
|
||
} catch (e) {
|
||
console.error(`获取任务列表时发生异常:${e}`);
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 获取文章列表
|
||
*
|
||
* @param categoryId 分类ID、1:配件研究所,2:新闻中心,3:铁粉社区
|
||
* @return {Promise<*>}
|
||
*/
|
||
async function getArticleList(categoryId) {
|
||
try {
|
||
const data = await sudojia.sendRequest(`${baseUrl}/tietou-shop/api/article/page`, 'post', headers, {
|
||
"pageNumber": 1,
|
||
"pageSize": 100,
|
||
"articleCategoryId": categoryId
|
||
});
|
||
if (1 !== data.code) {
|
||
console.error(data.msg);
|
||
return;
|
||
}
|
||
const article = data.data.list[Math.floor(Math.random() * data.data.list.length)];
|
||
return article.id;
|
||
} catch (e) {
|
||
console.error(`获取文章列表时发生异常:${e}`);
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 点赞文章
|
||
*
|
||
* @param articleId 文章ID
|
||
* @return {Promise<void>}
|
||
*/
|
||
async function likeArticle(articleId) {
|
||
try {
|
||
const data = await sudojia.sendRequest(`${baseUrl}/tietou-shop/api/article/like`, 'post', headers, {
|
||
"articleId": articleId
|
||
});
|
||
if (1 !== data.code) {
|
||
console.error(data.msg);
|
||
return;
|
||
}
|
||
console.log('点赞文章成功!');
|
||
} catch (e) {
|
||
console.error(`点赞文章时发生异常:${e}`)
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 首页浏览两件商品
|
||
*
|
||
* @return {Promise<void>}
|
||
*/
|
||
async function getProductList() {
|
||
try {
|
||
let data = await sudojia.sendRequest(`${baseUrl}/tietou-shop/api/product/cate/list`, 'post', headers, {
|
||
"pid": 15,
|
||
"type": 2
|
||
});
|
||
if (1 !== data.code) {
|
||
console.error(data.msg);
|
||
return;
|
||
}
|
||
const product = data.data[Math.floor(Math.random() * data.data.length)];
|
||
const cateTwoId = product.id;
|
||
await $.wait(sudojia.getRandomWait(1000, 1500));
|
||
data = await sudojia.sendRequest(`${baseUrl}/tietou-shop/api/product/page`, 'post', headers, {
|
||
"pageNumber": 1,
|
||
"pageSize": 10,
|
||
"cateOneId": "15",
|
||
"cateTwoId": cateTwoId,
|
||
"name": "",
|
||
"productType": "1",
|
||
"sort": ""
|
||
})
|
||
const proList = data.data.list[Math.floor(Math.random() * data.data.list.length)];
|
||
console.log(`开始浏览【${proList.name}】`);
|
||
await $.wait(sudojia.getRandomWait(1000, 2000));
|
||
await getProductDetail(proList.id);
|
||
} catch (e) {
|
||
console.error(`获取商品列表时发生异常:${e}`)
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 获取商品任务
|
||
*
|
||
* @param productId
|
||
* @return {Promise<void>}
|
||
*/
|
||
async function getProductDetail(productId) {
|
||
try {
|
||
let data = await sudojia.sendRequest(`${baseUrl}/tietou-shop/api/product/detail`, 'post', headers, {
|
||
"id": productId
|
||
});
|
||
if (1 !== data.code) {
|
||
console.error(data.msg);
|
||
return;
|
||
}
|
||
await $.wait(sudojia.getRandomWait(1000, 2000));
|
||
data = await sudojia.sendRequest(`${baseUrl}/tietou-shop/api/v2/pt/queryptlist`, 'post', headers, {
|
||
"id": productId
|
||
});
|
||
console.log('浏览商品成功');
|
||
} catch (e) {
|
||
console.error(`获取商品详情时发生异常:${e}`)
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 浏览新闻中心和配件研究所任务
|
||
*
|
||
* @param taskId
|
||
* @return {Promise<void>}
|
||
*/
|
||
async function finishTask(taskId = 7) {
|
||
try {
|
||
const data = await sudojia.sendRequest(`${baseUrl}/tietou-shop/api/task/finishTask`, 'post', headers, {
|
||
"id": taskId
|
||
});
|
||
await $.wait(sudojia.getRandomWait(10000, 11000));
|
||
if (1 !== data.code) {
|
||
console.error(data.msg);
|
||
return;
|
||
}
|
||
console.log('阅读成功!');
|
||
} catch (e) {
|
||
console.error(`完成任务时发生异常:${e}`)
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 更新任务列表
|
||
*
|
||
* @return {Promise<void>}
|
||
*/
|
||
async function updateTask() {
|
||
try {
|
||
const data = await sudojia.sendRequest(`${baseUrl}/tietou-shop/api/task/list`, 'post', headers);
|
||
if (1 !== data.code) {
|
||
console.error(data.msg);
|
||
return;
|
||
}
|
||
// 过滤[评价最近一笔商品订单]
|
||
const taskList = data.data.filter(task => task.id !== 6);
|
||
for (const task of taskList) {
|
||
if (task.taskStatus === 1) {
|
||
message += `${task.name}---已完成✅\n`;
|
||
} else {
|
||
message += `${task.name}---未完成❌\n`;
|
||
}
|
||
}
|
||
} catch (e) {
|
||
console.error(`更新任务列表时发生异常:${e}`);
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 获取用户积分
|
||
*
|
||
* @return {Promise<void>}
|
||
*/
|
||
async function getPoints() {
|
||
try {
|
||
const data = await sudojia.sendRequest(`${baseUrl}/tietou-shop/api/get_user_detail`, 'post', headers);
|
||
if (1 !== data.code) {
|
||
console.error(data.msg);
|
||
return;
|
||
}
|
||
console.log(`当前积分:${data.data.point}`);
|
||
message += `当前积分:${data.data.point}\n\n`;
|
||
} catch (e) {
|
||
console.error(`获取用户信息时发生异常:${e}`);
|
||
}
|
||
}
|