Files
qinglong/脚本库/微信小程序/抓包版/顾家家居/2025-04-28_sudojia_kukahome_ed2a4846.js
2026-05-24 05:33:05 +00:00

212 lines
7.4 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_kukahome.js
// # Raw: https://raw.githubusercontent.com/sudojia/AutoTaskScript/script/src/wx_mini/sudojia_kukahome.js
// # Repo: sudojia/AutoTaskScript
// # Path: src/wx_mini/sudojia_kukahome.js
// # UploadedAt: 2025-04-28T19:26:13+08:00
// # SHA256: ed2a4846dfb23a405728b0edcb14e6949605954fe27ef5bcfa553280517808f9
// # Category: 微信小程序/抓包版
// # Evidence: appid/openid/session_key/encryptedData等小程序字段
//
/**
* #小程序://顾家会员/DUUpEeo0zF2Gw8k
*
* 抓包 Hosthttps://mc.kukahome.com 获取请求头 AccessToken 和 X-Customer
* export GU_HOME_TOKEN = 'AccessToken#X-Customer'
* 多账号用 & 或换行
*
* @author Telegram@sudojia
* @site https://blog.imzjw.cn
* @date 2024/12/3
* @lastModifyTime 2024/12/27
*
* const $ = new Env('顾家家居')
* cron: 5 10 * * *
*/
const initScript = require('../utils/initScript')
const {$, notify, sudojia, checkUpdate} = initScript('顾家家居');
const kukaList = process.env.GU_HOME_TOKEN ? process.env.GU_HOME_TOKEN.split(/[\n&]/) : [];
// 消息推送
let message = '';
const appId = '667516';
const appSecret = 'FH3yRrHG2RfexND8';
// 接口地址
const baseUrl = 'https://mc.kukahome.com'
let headers = {
"user-agent": sudojia.getRandomUserAgent(),
'Content-Type': 'application/json',
'brandCode': 'K001',
'appid': '667516',
'Referer': 'https://servicewechat.com/wx0770280d160f09fe/214/page-frame.html',
'Accept-Language': 'zh-CN,zh;q=0.9',
};
!(async () => {
await checkUpdate($.name, kukaList);
console.log(`\n已随机分配 User-Agent\n\n${headers['user-agent'] || headers['User-Agent']}`);
for (let i = 0; i < kukaList.length; i++) {
const index = i + 1;
const [aToken, xCustomer] = kukaList[i].split('#');
// 添加请求头
headers.AccessToken = aToken;
headers['X-Customer'] = xCustomer;
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(1e3, 2e3));
await sign();
await $.wait(sudojia.getRandomWait(1e3, 2e3));
await getArticleList();
await $.wait(sudojia.getRandomWait(1e3, 2e3));
await getScore();
}
async function getUserInfo() {
try {
const data = await sendSignRequest(`/club-server/api/user/info`, 'post');
const nickName = data.data.nickName || '简朴寨';
const mobile = data.data.mobile || '18888888888';
console.log(`${nickName}(${mobile})`);
message += `${nickName}(${mobile})\n`;
} catch (e) {
console.error(`获取用户信息时发生异常:${e}`);
}
}
async function sign() {
try {
const data = await sendSignRequest('/integral-server/scenePoint/scene/point', 'post', {
"scene": "sign",
"brandCode": "K001"
});
console.log(`签到成功,积分+${data.data}`);
message += `签到成功,积分+${data.data}\n`;
} catch (e) {
console.error(`签到时发生异常:${e}`);
}
}
async function getArticleList() {
try {
const data = await sendSignRequest(`/club-server/applet/waterfall/newWaterfall`, 'post', {
pageNum: 1,
pageSize: 30,
source: 1
});
const article = data.data[Math.floor(Math.random() * data.data.length)];
const {id, title} = article;
console.log(`开始点赞【${title}`);
await $.wait(sudojia.getRandomWait(1e3, 2e3));
await likePost(id);
await $.wait(sudojia.getRandomWait(1e3, 2e3));
await collectPost(id);
await $.wait(sudojia.getRandomWait(1e3, 2e3));
await sharePost(id);
} catch (e) {
console.error(`获取文章时发生异常:${e}`);
}
}
async function likePost(postId) {
try {
const body = {id: postId};
await sendSignRequest(`/club-server/front/postOrder/like`, 'post', body);
await sendSignRequest(`/club-server/front/member/likeSendPoint`, 'post', {
postOrderId: postId,
triggerType: 1,
content: "点赞"
});
console.log('点赞成功~');
await $.wait(sudojia.getRandomWait(2e3, 3e3));
console.log('开始取消点赞');
await sendSignRequest(`/club-server/front/postOrder/like`, 'post', body);
console.log('取消点赞成功~');
} catch (e) {
console.error(`点赞时发生异常:${e}`);
}
}
async function collectPost(postId) {
try {
const body = {id: postId};
await sendSignRequest(`/club-server/front/postOrder/collect`, 'post', body);
await sendSignRequest(`/club-server/front/member/likeSendPoint`, 'post', {
postOrderId: postId,
triggerType: 2,
content: "收藏"
});
console.log('收藏文章成功`');
await $.wait(sudojia.getRandomWait(2e3, 3e3));
console.log('开始取消收藏');
await sendSignRequest(`/club-server/front/postOrder/collect`, 'post', body);
console.log('取消收藏成功~');
} catch (e) {
console.error(`收藏时发生异常:${e}`);
}
}
async function sharePost(postId) {
try {
await sendSignRequest(`/club-server/front/postOrder/share`, 'post', {id: postId});
console.log('分享成功~');
await $.wait(sudojia.getRandomWait(500, 800));
await sendSignRequest(`/club-server/front/member/likeSendPoint`, 'post', {
postOrderId: postId,
triggerType: 3,
content: "微信好友转发",
forwardType: 2
});
} catch (e) {
console.error(`分享时发生异常:${e}`);
}
}
async function getScore() {
try {
const data = await sendSignRequest(`/club-server/front/member/userCenterScore`, 'get');
console.log(`已连续签到${data.data.signCount}`);
console.log(`当前积分:${data.data.point}`);
message += `已连续签到${data.data.signCount}\n`;
message += `当前积分:${data.data.point}\n\n`;
} catch (e) {
console.error(`获取积分时发生异常:${e}`);
}
}
async function sendSignRequest(url, method, body) {
headers.sign = genSign();
if (body) {
headers.parameterSign = genSign(body);
}
const data = await sudojia.sendRequest(`${baseUrl}${url}`, method, headers, body);
if (0 !== data.code) {
throw new Error(`请求 ${url} 失败:${data.message}\n`);
}
return data;
}
function genSign(body) {
const ts = new Date().getTime();
headers.timestamp = ts;
if (body) {
return sudojia.md5(sudojia.md5(processBody(body)) + String(ts).substring(4, 10));
} else {
return sudojia.md5(appId + appSecret + ts).toLowerCase();
}
}
function processBody(data) {
return Object.keys(data).sort((a, b) => a.localeCompare(b)).map(key => {
const value = data[key];
return [key, typeof value === 'object' || Array.isArray(value) ? JSON.stringify(value) : value];
}).filter(pair => pair !== null).map(([key, value]) => `${key}=${value}`).join('&');
}