Files
wq-h-qinglong/ChinaUnicom.js
T
2025-12-14 18:39:29 +08:00

5429 lines
189 KiB
JavaScript

// @Date: 2025-09-19
// @LastEditTime: 2025-09-22
/*
免责声明:
本脚本仅供学习交流使用,使用者需自行承担使用本脚本所产生的一切后果。
作者不对使用本脚本造成的任何损失或法律责任负责。
请在下载后24小时内删除,不得用于商业用途。
使用本脚本即表示您同意本免责声明。
中国联通
包含以下功能:
首页签到, 立减金打卡,联通祝福,权益超市浇花+抽奖
首页签到默认运行, 需要关闭的设置变量 chinaUnicomSign='false'
联通祝福默认运行, 需要关闭的设置变量 chinaUnicomLtzf='false'
定时每天两三次
需要在联通APP中选择退出登录-切换账号登录, 捉下面这个包
https://m.client.10010.com/mobileService/onLine.htm
把请求体(body)里面的token_online参数填到变量 chinaUnicomCookie 里, 多账号换行或&或@隔开:
export chinaUnicomCookie="a3e4c1ff25da2xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
From:yaohuo28507
cron: 0 0,7,20 * * *
const $ = new Env("中国联通");
*/
const fs = require('fs');
const appName = createLogger("中国联通"),
got = require("got"),
path = require("path"),
{
exec: execCommand
} = require("child_process"),
cryptoJS = require("crypto-js"),
{
CookieJar: cookieJar
} = require("tough-cookie"),
chinaUnicom = "chinaUnicom",
delimiters = ["\n", "&", "@"],
cookieVars = [chinaUnicom + "Cookie"],
signDisabled = process.env[chinaUnicom + "Sign"] === "false",
ltzfDisabled = process.env[chinaUnicom + "Ltzf"] === "false",
tempActivity300Disabled = process.env[chinaUnicom + "TempAct300"] === "false",
tempActivity100Disabled = process.env[chinaUnicom + "TempAct100"] === "false",
requestTimeout = 50000,
retryCount = 3;
const version = 2.08,
projectName = "chinaUnicom",
validCodeUrl = "https://leafxcy.coding.net/api/user/leafxcy/project/validcode/shared-depot/validCode/git/blob/master/code.json",
projectCodeUrl = "https://leafxcy.coding.net/api/user/leafxcy/project/validcode/shared-depot/validCode/git/blob/master/" + projectName + ".json",
retryDelay = 5,
appVersion = "iphone_c@11.0503",
userAgent = "Mozilla/5.0 (iPhone; CPU iPhone OS 16_1_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 unicom{version:" + appVersion + "}",
appId = "86b8be04f56ba55e9fa7dff134c6b16c62ca7f319da4a958dd0afa0bf9f36f1daa9922869a8d2313b6f2f9f3b57f2901f0021c4575e4b6949ae18b7f6761d465c12321788dcd980aa1a641789d1188bb",
deviceCode="866265039370040",
productId = "10000002",
secretKey = "7k1HcDL8RKvc",
defaultPassword = "woreadst^&*12345",
secondProductId = "10000006",
secondSecretKey = "yQsp9gUqv7qX",
someConstant = "QzUzOUM2QTQ2MTc4",
ivString = "16-Bytes--String",
errorCode = "225",
errorNumber = "225",
partyName = "party",
apiKey = "6-WfVldfFrt3zhjHhe6kzwI-XfG5aMCzRTLI_4K7_a0",
clientId = "73b138fd-250c-4126-94e2-48cbcc8b9cbe",
anotherClientId = "7cb46449-3b11-4414-bb49-cbd15525fb88",
maxRetries = "9",
minRetries = "1",
serviceLife = "wocareMBHServiceLife1",
anotherApiKey = "beea1c7edf7c4989b2d3621c4255132f",
anotherEncryptionKey = "f4cd4ffeb5554586acf65ba7110534f5",
numbers = "0123456789",
letters = "qwertyuiopasdfghjklzxcvbnm",
uuid = process.env[chinaUnicom + "Uuid"] || appName.randomUuid(),
someArray = [9, 10, 11, 12, 13],
delayMs = 1000,
timeoutMs = 5000,
client_Id = "1001000003",
ProductId2 = "100002",
emptyString = "";
let ltyp_lottery = [],
appMonth_28_share = [],
act_517_share = [],
moonbox_activeId = null,
woread_draw_id = [6640, 6641];
const expiration_time = 7,
appMonth_28_MaxTimes = 5,
maxDrawTimes = 5,
_0x3484cf = {
ttlxj: "TTLXJ20210330",
card_618: "NZJK618CJHD"
};
const _0x166d60 = {
name: "星座配对",
id: 2
};
const _0x5a4a00 = {
name: "大转盘",
id: 3
};
const _0x1b5ea0 = {
name: "盲盒抽奖",
id: 4
};
const _0x4376d8 = [_0x166d60, _0x5a4a00, _0x1b5ea0],
_0x1c214d = {
ZFGJBXXCY1: "空气",
GJBNZJK19: "[6]",
GJBNZJK20: "[1]",
GJBNZJK21: "[8]",
GJBNZJK22: "[狂]",
GJBNZJK23: "[欢]"
};
const _0x10ec87 = {
"抽奖": "01",
"首次进入": "02",
"卡片合成": "03",
"瓜分奖励": "04"
};
function UencryptWithCryptoJS(algorithm, mode, padding, plaintext, key, iv) {
return cryptoJS[algorithm].encrypt(
cryptoJS.enc.Utf8.parse(plaintext),
cryptoJS.enc.Utf8.parse(key),
{
mode: cryptoJS.mode[mode],
padding: cryptoJS.pad[padding],
iv: cryptoJS.enc.Utf8.parse(iv)
}
).ciphertext.toString(cryptoJS.enc.Hex);
}
function decrypt(cipherMethod, mode, padding, ciphertextHex, key, iv) {
return cryptoJS[cipherMethod].decrypt({
ciphertext: cryptoJS.enc.Hex.parse(ciphertextHex)
}, cryptoJS.enc.Utf8.parse(key), {
mode: cryptoJS.mode[mode],
padding: cryptoJS.pad[padding],
iv: cryptoJS.enc.Utf8.parse(iv)
}).toString(cryptoJS.enc.Utf8);
}
let processCount = 0;
let processState = 0;
/**
* Initializes process monitoring and sets up termination handling.
*/
function initializeProcessMonitoring() {
processState = 1;
process.on("SIGTERM", () => {
processState = 2;
process.exit(0);
});
const scriptName = path.basename(process.argv[1]);
const excludedCommands = ["bash", "timeout", "grep"];
let commandList = ["ps afx"];
commandList.push(`grep ${scriptName}`);
commandList = commandList.concat(excludedCommands.map(cmd => `grep -v "${cmd} "`));
commandList.push("wc -l");
const commandString = commandList.join("|");
const checkProcessCount = () => {
execCommand(commandString, (error, stdout, stderr) => {
if (error || stderr) {
return;
}
processCount = parseInt(stdout.trim(), 10);
});
if (processState === 1) {
setTimeout(checkProcessCount, 2000);
}
};
checkProcessCount();
}
/**
* Class for managing user services with HTTP request handling and logging.
*/
class UserService {
constructor() {
this.index = appName.userIdx++;
this.name = "";
this.valid = false;
const retryOptions = {
limit: 0
};
const defaultHeaders = {
Connection: "keep-alive"
};
const httpClientOptions = {
retry: retryOptions,
timeout: requestTimeout,
followRedirect: false,
ignoreInvalidCookies: true,
headers: defaultHeaders
};
this.got = got.extend(httpClientOptions);
if (processState === 0) {
initializeProcessMonitoring();
}
}
/**
* Logs messages with an optional prefix based on user index and name.
* @param {string} message - The log message.
* @param {object} options - Additional logging options.
*/
log(message, options = {}) {
let logPrefix = "";
const userCountLength = appName.userCount.toString().length;
if (this.index) {
logPrefix += `账号[${appName.padStr(this.index, userCountLength)}]`;
}
if (this.name) {
logPrefix += `[${this.name}]`;
}
appName.log(logPrefix + message, options);
}
/**
* Sets a cookie in the cookie jar.
* @param {string} name - The name of the cookie.
* @param {string} value - The value of the cookie.
* @param {string} domain - The domain for the cookie.
* @param {string} url - The URL for the cookie.
* @param {object} options - Additional options.
*/
set_cookie(name, value, domain, url, options = {}) {
this.cookieJar.setCookieSync(`${name}=${value}; Domain=${domain};`, url);
}
/**
* Makes an HTTP request with retry logic.
* @param {object} requestOptions - The options for the HTTP request.
* @returns {Promise<object>} - The result of the HTTP request.
*/
async request(requestOptions) {
const networkErrors = ["ECONNRESET", "EADDRINUSE", "ENOTFOUND", "EAI_AGAIN"];
const timeoutErrors = ["TimeoutError"];
const protocolErrors = ["EPROTO"];
const validCodes = [];
let response = null;
let attemptCount = 0;
const requestName = requestOptions.fn || requestOptions.url;
let validCode = appName.get(requestOptions, "valid_code", validCodes);
requestOptions.method = requestOptions.method?.toUpperCase() || "GET";
while (attemptCount < retryCount) {
try {
attemptCount++;
let errorCode = "";
let errorName = "";
let error = null;
const timeout = requestOptions.timeout || this.got.defaults.options.timeout.request || requestTimeout;
let timeoutOccurred = false;
// Calculate delay times
const delayFactor1 = Math.max(this.index - 2, 0);
const delayFactor2 = Math.min(Math.max(this.index - 2, 1), 4);
const delayFactor3 = Math.min(Math.max(this.index - 4, 1), 5);
const delay1 = delayFactor1 * delayFactor2 * delayFactor3 * delayFactor3 * 600;
const delay2 = delayFactor1 * delayFactor2 * delayFactor3 * delayFactor3 * 4000;
const totalDelay = delay1 + Math.floor(Math.random() * delay2);
const retryDelay1 = this.index * (this.index - 1) * 3000;
const retryDelay2 = (this.index - 1) * (this.index - 1) * 5000;
const retryTotalDelay = retryDelay1 + Math.floor(Math.random() * retryDelay2);
const userDelayFactor1 = Math.max(appName.userCount - 2, 0);
const userDelayFactor2 = Math.max(appName.userCount - 3, 0);
const userDelay1 = userDelayFactor1 * 400;
const userDelay2 = userDelayFactor2 * 1000;
const userTotalDelay = userDelay1 + Math.floor(Math.random() * userDelay2);
const finalDelay = totalDelay + retryTotalDelay + userTotalDelay;
await appName.wait(0);
await new Promise((resolve) => {
setTimeout(() => {
timeoutOccurred = true;
resolve();
}, timeout);
this.got(requestOptions).then(
(res) => {
response = res;
},
(err) => {
error = err;
response = err.response;
errorCode = error?.code || "";
errorName = error?.name || "";
}
).finally(() => resolve());
});
if (timeoutOccurred) {
this.log(`[${requestName}] 请求超时(${timeout / 1000}秒),重试第${attemptCount}次`);
} else if (protocolErrors.includes(errorCode)) {
this.log(`[${requestName}] 请求错误[${errorCode}][${errorName}]`);
if (error?.message) {
console.log(error.message);
}
break;
} else if (timeoutErrors.includes(errorName)) {
this.log(`[${requestName}] 请求错误[${errorCode}][${errorName}],重试第${attemptCount}次`);
} else if (networkErrors.includes(errorCode)) {
this.log(`[${requestName}] 请求错误[${errorCode}][${errorName}],重试第${attemptCount}次`);
} else {
const statusCode = response?.statusCode || "";
const statusCategory = Math.floor(statusCode / 100);
if (statusCode) {
if (statusCategory > 3 && !validCode.includes(statusCode)) {
this.log(`请求[${requestName}] 返回[${statusCode}]`);
}
if (statusCategory <= 4) {
break;
}
} else {
this.log(`请求[${requestName}] 错误[${errorCode}][${errorName}]`);
}
}
} catch (err) {
if (err.name === "TimeoutError") {
this.log(`[${requestName}] 请求超时,重试第${attemptCount}次`);
} else {
this.log(`[${requestName}] 请求错误(${err.message}),重试第${attemptCount}次`);
}
}
}
if (response == null) {
return Promise.resolve({
statusCode: errorCode || -1,
headers: null,
result: null
});
}
let { statusCode, headers, body } = response;
if (body) {
try {
body = JSON.parse(body);
} catch { }
}
const result = {
statusCode,
headers,
result: body
};
return Promise.resolve(result);
}
}
let UserServiceClass = UserService;
try {
let LocalBasicService = require("./LocalBasic");
UserServiceClass = LocalBasicService;
} catch { }
let userServiceInstance = new UserServiceClass(appName);
class CustomUserService extends UserServiceClass {
constructor(tokenString) {
super(appName);
this.cookieJar = new cookieJar();
const defaultHeaders = {
"User-Agent": userAgent
};
this.got = this.got.extend({
cookieJar: this.cookieJar,
headers: defaultHeaders
});
let deftokenParts = tokenString.split("#");
this.token_online = deftokenParts[0];
this.unicomTokenId = appName.randomString(32);
this.tokenId_cookie = "chinaunicom-" + appName.randomString(32, numbers + letters).toUpperCase();
this.rptId = "";
this.city = [];
this.t_flmf_task = 0;
this.t_woread_draw = 0;
this.need_read_rabbit = false;
this.moonbox_task_record = {};
this.moonbox_notified = [];
this.set_cookie("TOKENID_COOKIE", this.tokenId_cookie);
this.set_cookie("UNICOM_TOKENID", this.unicomTokenId);
this.set_cookie("sdkuuid", this.unicomTokenId);
}
set_cookie(cookieName, cookieValue, options = {}) {
let domain = options?.domain || "10010.com",
currentUrl = options?.currentUrl || "https://epay.10010.com";
super.set_cookie(cookieName, cookieValue, domain, currentUrl, options);
}
get_bizchannelinfo() {
const bizChannelInfo = {
bizChannelCode: errorNumber,
disriBiz: partyName,
unionSessionId: "",
stType: "",
stDesmobile: "",
source: "",
rptId: this.rptId,
ticket: "",
tongdunTokenId: this.tokenId_cookie,
xindunTokenId: this.sdkuuid
};
let bizChannelInfoString = JSON.stringify(bizChannelInfo);
return bizChannelInfoString;
}
get_epay_authinfo() {
const authInfo = {
mobile: "",
sessionId: this.sessionId,
tokenId: this.tokenId,
userId: ""
};
return JSON.stringify(authInfo);
}
get_flmf_data(actCode = "welfareCenter") {
const flmfData = {
sid: this.flmf_sid,
actcode: actCode
};
return flmfData;
}
encode_woread(data, password = defaultPassword) {
let encryptedData = UencryptWithCryptoJS("AES", "CBC", "Pkcs7", JSON.stringify(data), password, ivString);
return Buffer.from(encryptedData, "utf-8").toString("base64");
}
encode_woread1(data, password = defaultPassword) {
let encryptedData = UencryptWithCryptoJS("AES", "CBC", "Pkcs7", data, password, ivString);
return Buffer.from(encryptedData, "utf-8").toString("base64");
}
get_woread_param() {
return {
timestamp: appName.time("yyyyMMddhhmmss"),
token: this.woread_token,
userid: this.woread_userid,
userId: this.woread_userid,
userIndex: this.woread_userIndex,
userAccount: this.mobile,
verifyCode: this.woread_verifycode
};
}
get_woread_m_param() {
return {
timestamp: appName.time("yyyyMMddhhmmss"),
signtimestamp: Date.now(),
source: maxRetries,
token: this.woread_token
};
}
get_ltyp_sign_header(secretKey) {
const currentTime = Date.now();
const randomSequence = Math.floor(89999 * Math.random()) + 100000;
const productId = ProductId2;
const version = emptyString;
const signature = cryptoJS.MD5(secretKey + currentTime + randomSequence + productId + version).toString();
const header = {
key: secretKey,
resTime: currentTime,
reqSeq: randomSequence,
channel: productId,
version: version,
sign: signature
};
return header;
}
async onLine(options = {}) {
let loginSuccess = false;
const filePath = path.join(__dirname, 'chinaUnicom_cache.json');
try {
let requestOptions = {
fn: "onLine",
method: "post",
url: "https://m.client.10010.com/mobileService/onLine.htm",
headers: {
"User-Agent": this.userAgent,
"Accept-Encoding": "gzip",
"Content-Type": "application/x-www-form-urlencoded"
},
form: {
isFirstInstall: 1,
reqtime: Date.now(),
netWay: "Wifi",
version: "android@11.0702",
pushPlatform: "XIAOMI",
token_online: this.token_online,
provinceChanel: "general",
simOperator: "",
deviceModel: "",
deviceBrand: "Xiaomi",
flushkey: 1
}
};
let response = await this.request(requestOptions);
let { result: responseData, statusCode: responseStatus } = response;
let responseCode = appName.get(responseData, "code", responseStatus);
// console.log(responseData)
if (responseCode == 0) {
loginSuccess = true;
this.valid = true;
this.mobile = responseData?.["desmobile"];
this.name = responseData?.["desmobile"];
this.ecs_token = responseData?.["ecs_token"];
this.city = responseData?.["list"];
this.log("登录成功");
} else {
this.valid = false;
this.log("登录失败[" + responseCode + "]");
}
} catch (error) {
console.log(error);
this.log("发生异常:" + error.message);
} finally {
return loginSuccess;
}
}
async getMarketTicket(options = {}) {
try {
const targetUrl = "https://contact.bol.wo.cn/";
const { ticket, type, loc } = await this.openPlatLineNew(targetUrl);
if (ticket) {
this.market_ticket = ticket;
this.market_ticket_type = type;
return { ticket, type };
} else {
this.log("获取权益超市ticket失败");
return null;
}
} catch (error) {
console.log(error);
this.log("获取权益超市ticket异常:" + error.message);
return null;
}
}
async marketUnicomLogin(options = {}) {
let loginSuccess = false;
const filePath = path.join(__dirname, 'chinaUnicom_cache.json');
try {
const ticketInfo = await this.getMarketTicket();
if (!ticketInfo || !ticketInfo.ticket) {
this.log("权益超市登录失败:无法获取ticket");
return false;
}
const { ticket, type } = ticketInfo;
const yGdtco4rParam = options.yGdtco4r || appName.randomString(800, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789._-");
// 保存yGdtco4r参数供后续任务执行使用
this.market_task_yGdtco4r = yGdtco4rParam;
// 构建请求体
const requestBody = {
ticket: ticket
};
const requestOptions = {
fn: "marketUnicomLogin",
method: "post",
url: `https://backward.bol.wo.cn/prod-api/auth/marketUnicomLogin?yGdtco4r=${yGdtco4rParam}`,
headers: {
"Host": "backward.bol.wo.cn",
"Connection": "keep-alive",
"Pragma": "no-cache",
"Cache-Control": "no-cache",
"sec-ch-ua-platform": '"Android"',
"User-Agent": "Mozilla/5.0 (Linux; Android 9; ONEPLUS A5000 Build/PKQ1.180716.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/138.0.7204.179 Mobile Safari/537.36; unicom{version:android@11.0000,desmobile:0};devicetype{deviceBrand:OnePlus,deviceModel:ONEPLUS A5000}",
"sec-ch-ua": '"Not)A;Brand";v="8", "Chromium";v="138", "Android WebView";v="138"',
"Content-type": "application/x-www-form-urlencoded",
"sec-ch-ua-mobile": "?1",
"Accept": "*/*",
"Origin": "https://contact.bol.wo.cn",
"X-Requested-With": "com.sinovatech.unicom.ui",
"Sec-Fetch-Site": "same-site",
"Sec-Fetch-Mode": "cors",
"Sec-Fetch-Dest": "empty",
"Referer": "https://contact.bol.wo.cn/",
"Accept-Encoding": "gzip, deflate, br, zstd",
"Accept-Language": "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7"
},
form: requestBody
};
let response = await this.request(requestOptions);
let { result: responseData, statusCode: responseStatus } = response;
let responseCode = appName.get(responseData, "code", responseStatus);
if (responseCode == 200) {
loginSuccess = true;
const data = responseData?.data;
this.market_token = data?.token;
this.market_refresh_token = data?.refreshToken;
this.market_user_id = data?.userId;
this.market_mobile = data?.mobile;
// this.log("权益超市登录成功,用户ID: " + data?.userId);
this.log("权益超市登录成功");
} else {
let errorMessage = responseData?.msg || "未知错误";
this.log("权益超市登录失败[" + responseCode + "]: " + errorMessage);
}
} catch (error) {
console.log(error);
this.log("权益超市登录发生异常:" + error.message);
} finally {
return loginSuccess;
}
}
async marketGetAllActivityTasks(options = {}) {
try {
if (!this.market_token) {
this.log("权益超市未登录,跳过任务");
return null;
}
// 使用固定的已验证yGdtco4r参数 - 从QIIFE7RpzIttP Cookie中提取的有效值
const yGdtco4rParam = "0vvi1iqEqWlxNVw0UpScxDPE31.IXh4OYs07.5n2OLIQHTDaFdWyPtKpnbhG0B7Hp2etvkbTAtEmA5oWNT85S62sdiSZgdNk8DMeCc6PssSJP968RuDLNtzYMErmby5pRgb7z6i.8QzDVgpsHEVnMbNbeUDz.kOy8YzVUuT4IDX_nZcTztPiUxVTfIie6RtXMtcfxbmCQWRKegNtdYh4w9Qz7Gvgo7DqlPbasjMIyIJjAW.nxkcNhsc3oQoZ5q4e.vDlY2hlc8eqpGElxfFHfNftWh2TcRM_dwNUmh2KMfqMo4NYOJWPAhIq4SJp0bYttV1Nl230bPYgZQ5Lh9NevyoDzaanm98Jp3_l0bRYe8YaFt1sx0lMlzob7uGd3O3Q0Zi0fq2sPH7hXChyRKyr_qf2scE8A5mxQlKOKxMT5UnYUQPFXPt4k5Mr7xpUfvTG0eqcGHEB.gdYvlGbGHmjqX4U11_j49Z9Rrd5CJ47MQmrU6Gu4qL2tBTsm3BnxF7mzAbRUFTOf4VjM";
// 保存yGdtco4r参数供后续任务执行使用
this.market_yGdtco4r = yGdtco4rParam;
const requestOptions = {
fn: "marketGetAllActivityTasks",
method: "get",
url: `https://backward.bol.wo.cn/prod-api/promotion/activityTask/getAllActivityTasks?yGdtco4r=${yGdtco4rParam}`,
headers: {
"Host": "backward.bol.wo.cn",
"Connection": "keep-alive",
"Pragma": "no-cache",
"Cache-Control": "no-cache",
"sec-ch-ua-platform": '"Android"',
"Authorization": `Bearer ${this.market_token}`,
"User-Agent": "Mozilla/5.0 (Linux; Android 9; ONEPLUS A5000 Build/PKQ1.180716.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/138.0.7204.179 Mobile Safari/537.36; unicom{version:android@11.0000,desmobile:0};devicetype{deviceBrand:OnePlus,deviceModel:ONEPLUS A5000}",
"Accept": "application/json, text/plain, */*",
"sec-ch-ua": '"Not)A;Brand";v="8", "Chromium";v="138", "Android WebView";v="138"',
"sec-ch-ua-mobile": "?1",
"Origin": "https://contact.bol.wo.cn",
"X-Requested-With": "com.sinovatech.unicom.ui",
"Sec-Fetch-Site": "same-site",
"Sec-Fetch-Mode": "cors",
"Sec-Fetch-Dest": "empty",
"Referer": "https://contact.bol.wo.cn/",
"Accept-Encoding": "gzip, deflate, br, zstd",
"Accept-Language": "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7"
}
};
let response = await this.request(requestOptions);
let { result: responseData, statusCode: responseStatus } = response;
let responseCode = appName.get(responseData, "code", responseStatus);
if (responseCode == 200) {
const data = responseData?.data;
this.log("获取权益超市任务列表成功");
return data;
} else {
let errorMessage = responseData?.msg || "未知错误";
this.log("获取权益超市任务列表失败[" + responseCode + "]: " + errorMessage);
return null;
}
} catch (error) {
console.log(error);
this.log("获取权益超市任务列表异常:" + error.message);
return null;
}
}
async marketGetRaffleCount(options = {}) {
try {
if (!this.market_token) {
return 0;
}
// 使用从QIIFE7RpzIttP Cookie中提取的有效yGdtco4r参数
// 注意:这个值不能生成,只能从浏览器Cookie中提取
const yGdtco4rParam = "0QDEN3AEqWlrU036_dbyBvP8.68dggpJ9Em3UEzaRWLwzFshel7nj1kEQxCiI.B_fIDMRTiEwAgmaG93mDGPLvSObw_.EMz5QG4wZp7CfpHt4y4WwUioW5NoIaRtTpiyNJN6ncFGlF607_haxxASNFfzwkxRl9XZq9UfHhGY.UCzebcoAawBTyh62PdjF.ka.HIygQuhbb16HitF0IfX_cdZc2wVsIUfLSnSYulZaLnoSo.7..nRFnMyydrDjQE4tfOT08heVczyyR6Bpn.ZazNvmNZD1EgfxCRTcQDUdHFb_XDfPbqvX2N0dtYdKgSV_1s5u8RlyUwXr1HlqKEpKb83uWfIPLaOpm3xFnKupjRqj1UoDz.vB0iRRkkYtAd8nPoY654drckOD7GEQQs79zJyMTZV_ExNU72MAqvZRdRUZZz8oho.t6WzyX5R2pOSrPRgO84hba3Ez52DbM_08n8qRm3bW1TaviGW1VEwQVH74R_Eo0pxoZDfHTbAGC3vAAzz7R8sqLVphu972XyCB72Ba1XGElelViYqGnG3p_SZ_LzzpQMJdGSa";
const requestOptions = {
fn: "marketGetRaffleCount",
method: "post",
url: `https://backward.bol.wo.cn/prod-api/promotion/home/raffleActivity/getUserRaffleCount?yGdtco4r=${yGdtco4rParam}`,
headers: {
"Host": "backward.bol.wo.cn",
"Connection": "keep-alive",
"Content-Length": "0",
"Pragma": "no-cache",
"Cache-Control": "no-cache",
"sec-ch-ua-platform": '"Android"',
"Authorization": `Bearer ${this.market_token}`,
"User-Agent": "Mozilla/5.0 (Linux; Android 9; ONEPLUS A5000 Build/PKQ1.180716.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/138.0.7204.179 Mobile Safari/537.36; unicom{version:android@11.0000,desmobile:0};devicetype{deviceBrand:OnePlus,deviceModel:ONEPLUS A5000}",
"Accept": "application/json, text/plain, */*",
"sec-ch-ua": '"Not)A;Brand";v="8", "Chromium";v="138", "Android WebView";v="138"',
"sec-ch-ua-mobile": "?1",
"Origin": "https://contact.bol.wo.cn",
"X-Requested-With": "com.sinovatech.unicom.ui",
"Sec-Fetch-Site": "same-site",
"Sec-Fetch-Mode": "cors",
"Sec-Fetch-Dest": "empty",
"Referer": "https://contact.bol.wo.cn/",
"Accept-Encoding": "gzip, deflate, br, zstd",
"Accept-Language": "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7"
}
};
let response = await this.request(requestOptions);
let { result: responseData, statusCode: responseStatus } = response;
let responseCode = appName.get(responseData, "code", responseStatus);
if (responseCode == 200) {
const raffleCount = responseData?.data || 0;
this.log(`权益超市可抽奖次数: ${raffleCount}`, { notify: true });
return raffleCount;
} else {
let errorMessage = responseData?.msg || "未知错误";
this.log("获取权益超市抽奖次数失败[" + responseCode + "]: " + errorMessage);
return 0;
}
} catch (error) {
this.log(`获取权益超市抽奖次数异常: ${error.message}`);
return 0;
}
}
async marketTask() {
try {
if (!this.market_token) {
this.log("权益超市未登录,跳过任务");
return;
}
// 执行浇花任务
await this.marketWateringTask();
// 执行抽奖
await this.marketRaffleTask();
} catch (error) {
console.log(error);
this.log("权益超市任务执行异常:" + error.message);
}
}
async marketGetWateringRecords(options = {}) {
try {
if (!this.market_token) {
return null;
}
// 使用从QIIFE7RpzIttP Cookie中提取的有效yGdtco4r参数 - 查询浇花记录专用
const yGdtco4rParam = "0kJCZralqWoOyRFK5MqCRO_TUwsNq0Ppki8vaPIf5e62R0LorZOJN77zrWgTodj2QrQ3fdTC7EurWtWW79tUyudhWDdBVfTL6Dhcyz.t1D0jdvEuLZl30dKq0C.ucANSVPXjvcTTJr6G";
const requestOptions = {
fn: "marketGetWateringRecords",
method: "get",
url: `https://backward.bol.wo.cn/prod-api/promotion/activityTaskRecord/getRangeRecordList?yGdtco4r=${yGdtco4rParam}`,
headers: {
"Host": "backward.bol.wo.cn",
"Connection": "keep-alive",
"sec-ch-ua-platform": '"Windows"',
"Authorization": `Bearer ${this.market_token}`,
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36 Edg/140.0.0.0",
"sec-ch-ua": '"Chromium";v="140", "Not=A?Brand";v="24", "Microsoft Edge";v="140"',
"Content-type": "application/json",
"sec-ch-ua-mobile": "?0",
"Accept": "*/*",
"Sec-Fetch-Site": "same-origin",
"Sec-Fetch-Mode": "cors",
"Sec-Fetch-Dest": "empty",
"Referer": "https://backward.bol.wo.cn/market",
"Accept-Encoding": "gzip, deflate, br, zstd",
"Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6"
}
};
let response = await this.request(requestOptions);
let { result: responseData, statusCode: responseStatus } = response;
let responseCode = appName.get(responseData, "code", responseStatus);
if (responseCode == 200) {
const data = responseData?.data;
if (data && Array.isArray(data)) {
return data;
}
} else {
let errorMessage = responseData?.msg || "未知错误";
this.log("获取浇花记录失败[" + responseCode + "]: " + errorMessage);
}
return null;
} catch (error) {
this.log(`获取浇花记录异常: ${error.message}`);
return null;
}
}
async marketGetWateringStatus(options = {}) {
try {
if (!this.market_token) {
return null;
}
// 使用从QIIFE7RpzIttP Cookie中提取的有效yGdtco4r参数 - 查询浇花状态专用
const yGdtco4rParam = "0hHgWnaEqWi0546ZdRfTeDqJdMBnv_KnzWG6CMU_1bgJe_DjIYJ6DF2QyCn39IVIop_Tl2MtZLEma_cOOBnd3rwlPuPDGi1VtWWYtqBx07xlMOjYRpb2aAZiH1jlx_PLjqQGzoPj1AUFWj9PwC1ELJq3oEw7mi.Vql7wNyVD4unkqvNgLlHPAB4jQSgOYaStVs9LtDqXn3Uw.6UKM2k1gpbGxW.lj8Oz0sNFL2dqf7HoG_5qG2_3427RzOlc8BTQC41UZTOVZWFgIzUN_5ieBSJuEPSrITbbJjOBKfau06OimtckkiRVxQAdTBLmSGvN0Iqp5sZcyRhPnAxWP7rDP1uWG5WMdzfW44SEwjr55XfNLUS.c7rSClxax2RBT3wP.xuYSxawy1OgFrQgIGLIJQx6.7LScnfvwchuTaf.aPkn53J2iXVfb6WPxm1BjYeFvjy1v8HuPMixeh3GGJPj_7rPLIbTUcsPYLwpLcdIbYU5bMjlqaxzfdbuUQnqAEUrh5Fqq2WUkHPwHTrnehvEbvBsn.YZksQODgRjV5Oa9lcbo5dD6fbPbO2E";
const requestOptions = {
fn: "marketGetWateringStatus",
method: "get",
url: `https://backward.bol.wo.cn/prod-api/promotion/activityTask/getMultiCycleProcess?activityId=13&yGdtco4r=${yGdtco4rParam}`,
headers: {
"Host": "backward.bol.wo.cn",
"Connection": "keep-alive",
"Pragma": "no-cache",
"Cache-Control": "no-cache",
"sec-ch-ua-platform": '"Android"',
"Authorization": `Bearer ${this.market_token}`,
"User-Agent": "Mozilla/5.0 (Linux; Android 9; ONEPLUS A5000 Build/PKQ1.180716.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/138.0.7204.179 Mobile Safari/537.36; unicom{version:android@11.0000,desmobile:0};devicetype{deviceBrand:OnePlus,deviceModel:ONEPLUS A5000}",
"Accept": "application/json, text/plain, */*",
"sec-ch-ua": '"Not)A;Brand";v="8", "Chromium";v="138", "Android WebView";v="138"',
"sec-ch-ua-mobile": "?1",
"Origin": "https://contact.bol.wo.cn",
"X-Requested-With": "com.sinovatech.unicom.ui",
"Sec-Fetch-Site": "same-site",
"Sec-Fetch-Mode": "cors",
"Sec-Fetch-Dest": "empty",
"Referer": "https://contact.bol.wo.cn/",
"Accept-Encoding": "gzip, deflate, br, zstd",
"Accept-Language": "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7"
}
};
let response = await this.request(requestOptions);
let { result: responseData, statusCode: responseStatus } = response;
let responseCode = appName.get(responseData, "code", responseStatus);
if (responseCode == 200) {
const data = responseData?.data;
if (data) {
const triggeredTime = data.triggeredTime || 0;
const triggerTime = data.triggerTime || 0;
this.log(`浇花状态检查: ${triggeredTime}/${triggerTime}`, { notify: true });
return data;
}
} else {
let errorMessage = responseData?.msg || "未知错误";
this.log("获取浇花状态失败[" + responseCode + "]: " + errorMessage);
}
return null;
} catch (error) {
this.log(`获取浇花状态异常: ${error.message}`);
return null;
}
}
async marketWatering(options = {}) {
try {
if (!this.market_token) {
return false;
}
const requestOptions = {
fn: "marketWatering",
method: "post",
url: "https://backward.bol.wo.cn/prod-api/promotion/activityTaskShare/checkWatering",
noLoading: true,
headers: {
"Host": "backward.bol.wo.cn",
"Connection": "keep-alive",
"Content-Length": "2",
"Pragma": "no-cache",
"Cache-Control": "no-cache",
"sec-ch-ua-platform": '"Android"',
"Authorization": `Bearer ${this.market_token}`,
"User-Agent": "Mozilla/5.0 (Linux; Android 9; ONEPLUS A5000 Build/PKQ1.180716.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/138.0.7204.179 Mobile Safari/537.36; unicom{version:android@11.0000,desmobile:0};devicetype{deviceBrand:OnePlus,deviceModel:ONEPLUS A5000}",
"sec-ch-ua": '"Not)A;Brand";v="8", "Chromium";v="138", "Android WebView";v="138"',
"Content-type": "application/json",
"sec-ch-ua-mobile": "?1",
"Accept": "*/*",
"Origin": "https://contact.bol.wo.cn",
"X-Requested-With": "com.sinovatech.unicom.ui",
"Sec-Fetch-Site": "same-site",
"Sec-Fetch-Mode": "cors",
"Sec-Fetch-Dest": "empty",
"Referer": "https://contact.bol.wo.cn/",
"Accept-Encoding": "gzip, deflate, br, zstd",
"Accept-Language": "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7"
},
json: {}
};
let response = await this.request(requestOptions);
let { result: responseData, statusCode: responseStatus } = response;
let responseCode = appName.get(responseData, "code", responseStatus);
if (responseCode == 200) {
const message = responseData?.msg || "浇水成功";
this.log(`权益超市浇花: ${message}`);
return true;
} else {
let errorMessage = responseData?.msg || "未知错误";
this.log("权益超市浇花失败[" + responseCode + "]: " + errorMessage);
return false;
}
} catch (error) {
this.log(`权益超市浇花异常: ${error.message}`);
return false;
}
}
async marketWateringTask() {
try {
if (!this.market_token) {
return;
}
// 获取浇花记录列表判断今日是否已浇花
const wateringRecords = await this.marketGetWateringRecords();
if (!wateringRecords) {
this.log("获取浇花记录失败,跳过浇花");
return;
}
// 获取今天的日期字符串 (YYYY-MM-DD)
const today = new Date();
const todayStr = new Date(Date.now() + 8 * 3600 * 1000).toISOString().split('T')[0];
// 查找今天的浇花记录
const todayRecord = wateringRecords.find(record => {
if (record.createTime) {
const recordDate = record.createTime.split(' ')[0]; // 取日期部分
return recordDate === todayStr;
}
return false;
});
if (!todayRecord) {
// 今日未浇花,执行浇花
this.log("今日尚未浇花,开始执行浇花", { notify: true });
const success = await this.marketWatering();
if (success) {
this.log("权益超市浇花完成", { notify: true });
} else {
this.log("权益超市浇花失败");
}
} else {
// 今日已浇花,获取正确的浇花状态信息
const wateringStatus = await this.marketGetWateringStatus();
if (wateringStatus) {
const triggeredTime = wateringStatus.triggeredTime || 0;
const triggerTime = wateringStatus.triggerTime || 0;
this.log(`今日浇花已完成,已浇花 ${triggeredTime}/${triggerTime} 次,浇花时间: ${todayRecord.createTime}`, { notify: true });
} else {
this.log(`今日浇花已完成,浇花时间: ${todayRecord.createTime}`, { notify: true });
}
}
} catch (error) {
this.log(`权益超市浇花任务异常: ${error.message}`);
}
}
async marketRaffle(options = {}) {
try {
if (!this.market_token) {
return false;
}
// 使用从QIIFE7RpzIttP Cookie中提取的有效yGdtco4r参数 - 执行抽奖专用
const yGdtco4rParam = "0QgDw1GEqWlrU036_dbyBvP8.68dggpJ9Em3UEzaRWLwzFshel7nj1kEQxCiI.B_fIDMRTiEwAgmaoqRDUcMB02lgYQPCAFCba8gFHC.tOt7HgTxZYK9RE.F97mWLrjhVnYlqoN8J3po8lAf4nuZgZxrqLz7G5RwjhP7cN6MJqMz919_MDvcHYn6NwWXQSzGz5SeQ6gXKTjWH7e169QJLUmSffMJtRvnmSI_KAoFD1KO900oYqqNE6DT3Ldqrybha.30hJjF5xcVVGKG5PjvpDN6mh_OkWCUntXfjKcpHOiq.ihFEmTnbaizklLV9QFuwD7d_64uWO.ccQ_YBp9GGcRNUyedvs7aY349tZSdJUJMs5AxGNoRN9kBfA0fs5zcrT9nHG8j7qYcaEgq4ZCXkOHtGohgHad2DFiRfkhDH0vf0XA0iAczitXuNfNIrzql7wpGW3qduE7AwzbWxKpDrohiS_aikqbAInv00OAPevfIw8v23ugpy8URgEdXFWaBUA_ZYw6MCplOhwvSiHK0Js1hcBQSehpn2xwE3a6yaDjY3NxVZ.m5A4sG";
const requestOptions = {
fn: "marketRaffle",
method: "post",
url: `https://backward.bol.wo.cn/prod-api/promotion/home/raffleActivity/userRaffle?yGdtco4r=${yGdtco4rParam}`,
headers: {
"Host": "backward.bol.wo.cn",
"Connection": "keep-alive",
"Content-Length": "0",
"Pragma": "no-cache",
"Cache-Control": "no-cache",
"sec-ch-ua-platform": '"Android"',
"Authorization": `Bearer ${this.market_token}`,
"User-Agent": "Mozilla/5.0 (Linux; Android 9; ONEPLUS A5000 Build/PKQ1.180716.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/138.0.7204.179 Mobile Safari/537.36; unicom{version:android@11.0000,desmobile:0};devicetype{deviceBrand:OnePlus,deviceModel:ONEPLUS A5000}",
"Accept": "application/json, text/plain, */*",
"sec-ch-ua": '"Not)A;Brand";v="8", "Chromium";v="138", "Android WebView";v="138"',
"sec-ch-ua-mobile": "?1",
"Origin": "https://contact.bol.wo.cn",
"X-Requested-With": "com.sinovatech.unicom.ui",
"Sec-Fetch-Site": "same-site",
"Sec-Fetch-Mode": "cors",
"Sec-Fetch-Dest": "empty",
"Referer": "https://contact.bol.wo.cn/",
"Accept-Encoding": "gzip, deflate, br, zstd",
"Accept-Language": "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7"
}
};
let response = await this.request(requestOptions);
let { result: responseData, statusCode: responseStatus } = response;
let responseCode = appName.get(responseData, "code", responseStatus);
if (responseCode == 200) {
const data = responseData?.data;
if (data) {
const isWinning = data.isWinning;
const prizesName = data.prizesName || "未中奖";
const message = data.message;
if (isWinning) {
this.log(`权益超市抽奖成功: ${prizesName}`, { notify: true });
} else {
this.log(`权益超市抽奖结果: ${prizesName}`, { notify: true });
}
if (message) {
this.log(`抽奖提示: ${message}`);
}
return true;
}
return false;
} else {
let errorMessage = responseData?.msg || "未知错误";
this.log("权益超市抽奖失败[" + responseCode + "]: " + errorMessage);
return false;
}
} catch (error) {
this.log(`权益超市抽奖异常: ${error.message}`);
return false;
}
}
async marketRaffleTask() {
try {
if (!this.market_token) {
return;
}
// 查询可抽奖次数
const raffleCount = await this.marketGetRaffleCount();
if (raffleCount > 0) {
this.log(`开始执行权益超市抽奖,可抽奖次数: ${raffleCount}`, { notify: true });
// 执行抽奖
for (let i = 0; i < raffleCount; i++) {
this.log(`执行第 ${i + 1} 次抽奖`);
const success = await this.marketRaffle();
if (!success) {
this.log(`第 ${i + 1} 次抽奖失败,停止抽奖`);
break;
}
// 等待一段时间避免请求过快
await appName.wait(3000);
}
this.log("权益超市抽奖完成", { notify: true });
} else {
this.log("权益超市暂无可抽奖次数", { notify: true });
}
} catch (error) {
this.log(`权益超市抽奖异常: ${error.message}`);
}
}
async openPlatLineNew(url, options = {}) {
const defaultResult = {
ticket: "",
type: "",
loc: ""
};
let result = defaultResult;
try {
const queryParams = {
to_url: url
};
const requestOptions = {
fn: "openPlatLineNew",
method: "get",
url: "https://m.client.10010.com/mobileService/openPlatform/openPlatLineNew.htm",
searchParams: queryParams
};
const { headers, statusCode } = await this.request(requestOptions);
if (headers?.["location"]) {
const locationUrl = new URL(headers.location);
const type = locationUrl.searchParams.get("type") || "02";
const ticket = locationUrl.searchParams.get("ticket");
if (!ticket) {
this.log("获取ticket失败");
}
result = {
loc: headers.location,
ticket: ticket,
type: type
};
} else {
this.log(`获取ticket失败[${statusCode}]`);
}
} catch (error) {
console.log(error);
} finally {
return result;
}
}
async gettaskip(options = {}) {
const orderId = appName.randomString(32).toUpperCase();
try {
const requestBody = {
mobile: this.mobile,
orderId: orderId
};
const requestOptions = {
fn: "gettaskip",
method: "post",
url: "https://m.client.10010.com/taskcallback/topstories/gettaskip",
form: requestBody
};
await this.request(requestOptions);
} catch (error) {
console.log(error);
} finally {
return orderId;
}
}
async draw_28_queryChance(options = {}) {
try {
const requestConfig = {
fn: "draw_28_queryChance",
method: "post",
url: "https://m.client.10010.com/AppMonthly/appMonth/queryChance"
};
// 发起请求并获取响应
let {
result: responseResult,
statusCode: responseStatusCode
} = await this.request(requestConfig),
status = appName.get(responseResult, "status", responseStatusCode);
// 检查响应状态码是否为 "0000"
if (status == "0000") {
// // 解析剩余的抽奖次数
// let remainingTimes = parseInt(responseResult?.["data"]?.["allRemainTimes"] || 0),
// drawTimes = Math.min(maxDrawTimes, remainingTimes);
// this.log("28日五折日可以抽奖" + remainingTimes + "次, 去抽" + drawTimes + "次");
// let firstAttempt = false;
// while (drawTimes-- > 0) {
// if (firstAttempt) {
// // 等待8秒再进行下一次抽奖
// await appName.wait(8000);
// }
// firstAttempt = true;
await this.draw_28_lottery();
// }
} else {
// 处理查询失败的情况
let errorMessage = responseResult?.["message"] || responseResult?.["msg"] || "";
this.log("28日五折日查询抽奖次数失败[" + status + "]: " + errorMessage);
}
} catch (error) {
console.log(error);
}
}
async draw_28_lottery(options = {}) {
try {
const requestOptions = {
fn: "draw_28_lottery",
method: "post",
url: "https://m.client.10010.com/AppMonthly/appMonth/lottery"
};
const { result, statusCode } = await this.request(requestOptions);
const status = appName.get(result, "status", statusCode);
if (status === "0000") {
const responseData = result?.["data"];
const resultCode = appName.get(responseData, "code", -1);
if (responseData?.["uuid"]) {
await appName.wait(2000);
await this.draw_28_winningRecord(responseData.uuid);
} else {
const errorMessage = responseData?.["message"] || responseData?.["msg"] || "";
this.log(`28日五折日抽奖失败[${resultCode}]: ${errorMessage}`);
}
} else {
const errorMessage = result?.["message"] || result?.["msg"] || "";
this.log(`28日五折日抽奖失败[${status}]: ${errorMessage}`);
}
} catch (error) {
console.log(error);
}
}
async draw_28_winningRecord(requestId, options = {}) {
try {
const requestPayload = {
requestId: requestId
};
const requestOptions = {
fn: "draw_28_winningRecord",
method: "post",
url: "https://m.client.10010.com/AppMonthly/appMonth/winningRecord",
form: requestPayload
};
const { result, statusCode } = await this.request(requestOptions);
const status = appName.get(result, "status", statusCode);
if (status === "0000") {
const responseData = result?.["data"];
const resultCode = appName.get(responseData, "code", -1);
if (resultCode === "0000") {
const logOptions = {
notify: true
};
this.log("28日五折日抽奖: " + responseData?.["prizeName"]?.["replace"](/\t/g, ""), logOptions);
} else {
const errorMessage = responseData?.["message"] || responseData?.["msg"] || "";
this.log(`查询28日五折日抽奖结果失败[${resultCode}]: ${errorMessage}`);
}
} else {
const errorMessage = result?.["message"] || result?.["msg"] || "";
this.log(`查询28日五折日抽奖结果失败[${status}]: ${errorMessage}`);
}
} catch (error) {
console.log(error);
}
}
async ttlxj_authorize(ticket, type, refererUrl, options = {}) {
try {
const requestConfig = {
fn: "ttlxj_authorize",
method: "post",
url: "https://epay.10010.com/woauth2/v2/authorize",
headers: {
Origin: "https://epay.10010.com",
Referer: refererUrl
},
json: {
response_type: "rptid",
client_id: clientId,
redirect_uri: "https://epay.10010.com/ci-mps-st-web/",
login_hint: {
credential_type: "st_ticket",
credential: ticket,
st_type: type,
force_logout: true,
source: "app_sjyyt"
},
device_info: {
token_id: "chinaunicom-pro-" + Date.now() + "-" + appName.randomString(13),
trace_id: appName.randomString(32)
}
}
};
const { result } = await this.request(requestConfig);
const statusCode = appName.get(result, "status", -1);
if (statusCode === 200) {
await this.ttlxj_authCheck();
} else {
const errorMessage = result?.["message"] || result?.["msg"] || "";
this.log(`天天领现金获取SESSION失败[${statusCode}]: ${errorMessage}`);
}
} catch (error) {
console.log(error);
}
}
async ttlxj_authCheck(options = {}) {
try {
const requestConfig = {
fn: "ttlxj_authCheck",
method: "post",
url: "https://epay.10010.com/ps-pafs-auth-front/v1/auth/check",
headers: {
bizchannelinfo: this.get_bizchannelinfo()
}
};
const { result } = await this.request(requestConfig);
const responseCode = appName.get(result, "code", -1);
if (responseCode === "0000") {
const { mobile, sessionId, tokenId, userId } = result?.["data"]?.["authInfo"];
const authInfo = {
sessionId,
tokenId,
userId
};
Object.assign(this, authInfo);
await this.ttlxj_userDrawInfo();
await this.ttlxj_queryAvailable();
} else {
if (responseCode === "2101000100") {
const loginUrl = result?.["data"]?.["woauth_login_url"];
await this.ttlxj_login(loginUrl);
} else {
const errorMessage = result?.["msgInside"] || result?.["msg"] || "";
this.log(`天天领现金获取tokenId失败[${responseCode}]: ${errorMessage}`);
}
}
} catch (error) {
console.log(error);
}
}
async ttlxj_login(loginUrl, options = {}) {
try {
// 拼接完整的登录 URL
const fullUrl = `${loginUrl}https://epay.10010.com/ci-mcss-party-web/clockIn/?bizFrom=${errorCode}&bizChannelCode=${errorNumber}`;
const requestConfig = {
fn: "ttlxj_login",
method: "get",
url: fullUrl
};
const { headers, statusCode } = await this.request(requestConfig);
if (headers?.["location"]) {
const locationUrl = new URL(headers.location);
this.rptId = locationUrl.searchParams.get("rptid");
if (this.rptId) {
await this.ttlxj_authCheck();
} else {
this.log("天天领现金获取rptid失败");
}
} else {
this.log(`天天领现金获取rptid失败[${statusCode}]`);
}
} catch (error) {
console.log(error);
}
}
async ttlxj_userDrawInfo(options = {}) {
try {
const requestConfig = {
fn: "ttlxj_userDrawInfo",
method: "post",
url: "https://epay.10010.com/ci-mcss-party-front/v1/ttlxj/userDrawInfo",
headers: {
bizchannelinfo: this.get_bizchannelinfo(),
authinfo: this.get_epay_authinfo()
}
};
const { result } = await this.request(requestConfig);
const responseCode = appName.get(result, "code", -1);
if (responseCode === "0000") {
const dayOfWeek = result?.["data"]?.["dayOfWeek"];
const drawKey = `day${dayOfWeek}`;
const hasNotClockedIn = result?.["data"]?.[drawKey] === "1";
const logOptions = {
notify: true
};
this.log(`天天领现金今天${hasNotClockedIn ? "未" : "已"}打卡`, logOptions);
if (hasNotClockedIn) {
const today = new Date().getDay();
const drawType = (today % 7 === 0) ? "C" : "B";
await this.ttlxj_unifyDrawNew(drawType);
}
} else {
const errorMessage = result?.["msg"] || "";
this.log(`天天领现金查询失败[${responseCode}]: ${errorMessage}`);
}
} catch (error) {
console.log(error);
}
}
async ttlxj_unifyDrawNew(drawType, options = {}) {
try {
const requestData = {
drawType: drawType,
bizFrom: errorCode,
activityId: "TTLXJ20210330"
};
const requestConfig = {
fn: "ttlxj_unifyDrawNew",
method: "post",
url: "https://epay.10010.com/ci-mcss-party-front/v1/ttlxj/unifyDrawNew",
headers: {
bizchannelinfo: this.get_bizchannelinfo(),
authinfo: this.get_epay_authinfo()
},
form: requestData
};
const { result } = await this.request(requestConfig);
const responseCode = appName.get(result, "code", -1);
if (responseCode === "0000" && result?.["data"]?.["returnCode"] === 0) {
const awardMessage = result?.["data"]?.["awardTipContent"]?.replace(/xx/, result?.["data"]?.["amount"]);
const logOptions = {
notify: true
};
this.log("天天领现金打卡: " + awardMessage, logOptions);
} else {
const errorMessage = result?.["data"]?.["returnMsg"] || result?.["msg"] || "";
this.log(`天天领现金打卡失败[${result?.["data"]?.["returnCode"] || responseCode}]: ${errorMessage}`);
}
} catch (error) {
console.log(error);
}
}
async ttlxj_h(_0x47d16c = {}) {
try {
const _0x2f3dc6 = {
bizFrom: errorCode,
activityId: _0x3484cf.ttlxj,
uid: apiKey
};
let _0x469865 = {
fn: "ttlxj_h",
method: "post",
url: "https://epay.10010.com/ci-mcss-party-front/v1/ttlxj/help",
headers: {
bizchannelinfo: this.get_bizchannelinfo(),
authinfo: this.get_epay_authinfo()
},
form: _0x2f3dc6
};
await this.request(_0x469865);
} catch (_0x173381) {
console.log(_0x173381);
}
}
async ttlxj_queryAvailable(_0x23c9d2 = {}) {
try {
let _0x2f3ee4 = {
fn: "ttlxj_queryAvailable",
method: "post",
url: "https://epay.10010.com/ci-mcss-party-front/v1/ttlxj/queryAvailable",
headers: {
bizchannelinfo: this.get_bizchannelinfo(),
authinfo: this.get_epay_authinfo()
}
},
{
result: _0x351127
} = await this.request(_0x2f3ee4),
_0x22c4f9 = appName.get(_0x351127, "code", -1);
if (_0x22c4f9 == "0000" && _0x351127?.["data"]?.["returnCode"] == 0) {
let _0x11a97b = _0x351127?.["data"]?.["availableAmount"] || 0;
const _0x3dffbb = {
notify: true
};
this.log("可用立减金: " + (_0x11a97b / 100).toFixed(2) + "元", _0x3dffbb);
let _0x3a9ca0 = [],
_0x4a77d6 = Date.now();
for (let _0x22c5c5 of _0x351127?.["data"]?.["prizeList"]?.["filter"](_0xac5521 => _0xac5521.status == "A")) {
let _0xdf42c9 = _0x22c5c5.endTime,
_0x148118 = new Date(_0xdf42c9.slice(0, 4) + "-" + _0xdf42c9.slice(4, 6) + "-" + _0xdf42c9.slice(6, 8) + " 00:00:00"),
_0xc3cc5f = _0x148118.getTime();
if (_0xc3cc5f - _0x4a77d6 < expiration_time * 24 * 60 * 60 * 1000) {
let _0x24bd89 = appName.time("yyyy-MM-dd", _0xc3cc5f);
const _0x4d3dd0 = {
timestamp: _0xc3cc5f,
date: _0x24bd89,
amount: _0x22c5c5.amount
};
_0x3a9ca0.push(_0x4d3dd0);
}
}
if (_0x3a9ca0.length) {
const _0x4097fc = {
timestamp: 0
};
let _0xb33342 = _0x4097fc,
_0x296b80 = _0x3a9ca0.reduce(function (_0x11f322, _0x3cd209) {
(_0xb33342.timestamp == 0 || _0x3cd209.timestamp < _0xb33342.timestamp) && (_0xb33342 = _0x3cd209);
return _0x11f322 + parseFloat(_0x3cd209.amount);
}, 0);
const _0x5d32b7 = {
notify: true
};
this.log(expiration_time + "天内过期立减金: " + _0x296b80.toFixed(2) + "元", _0x5d32b7);
const _0x2dff48 = {
notify: true
};
this.log("最早过期立减金: " + _0xb33342.amount + "元 -- " + _0xb33342.date + "过期", _0x2dff48);
} else {
const _0x437216 = {
notify: true
};
this.log(expiration_time + "天内没有过期的立减金", _0x437216);
}
} else {
let _0x1a23ec = _0x351127?.["data"]?.["returnMsg"] || _0x351127?.["msg"] || "";
this.log("天天领现金打卡失败[" + (_0x351127?.["data"]?.["returnCode"] || _0x22c4f9) + "]: " + _0x1a23ec);
}
} catch (_0x2d80a8) {
console.log(_0x2d80a8);
}
}
async epay_28_authCheck(_0x1d0fd8 = {}) {
try {
let _0x35ae82 = {
fn: "epay_28_authCheck",
method: "post",
url: "https://epay.10010.com/ps-pafs-auth-front/v1/auth/check",
headers: {
bizchannelinfo: this.get_bizchannelinfo()
}
},
{
result: _0x1d449e
} = await this.request(_0x35ae82),
_0x4e8f00 = appName.get(_0x1d449e, "code", -1);
if (_0x4e8f00 == "0000") {
let {
mobile: _0x4668a5,
sessionId: _0xb2b5be,
tokenId: _0x7c73d9,
userId: _0x42df1c
} = _0x1d449e?.["data"]?.["authInfo"];
const _0x4d9ca1 = {
sessionId: _0xb2b5be,
tokenId: _0x7c73d9,
userId: _0x42df1c
};
Object.assign(this, _0x4d9ca1);
await this.epay_28_queryUserPage();
} else {
if (_0x4e8f00 == "2101000100") {
let _0x5892fa = _0x1d449e?.["data"]?.["woauth_login_url"];
await this.epay_28_login(_0x5892fa);
} else {
let _0x1fb8e2 = _0x1d449e?.["msgInside"] || _0x1d449e?.["msg"] || "";
this.log("联通支付日获取tokenId失败[" + _0x4e8f00 + "]: " + _0x1fb8e2);
}
}
} catch (_0x268652) {
console.log(_0x268652);
}
}
async epay_28_login(_0x139155, _0x3721a9 = {}) {
try {
let _0x236f54 = appName.time("yyyyMM") + "28ZFR";
_0x139155 += "https://epay.10010.com/ci-mcss-party-web/rainbow/?templateName=" + _0x236f54 + "&bizFrom=225&bizChannelCode=225&channelType=WDQB";
const _0x5d5710 = {
fn: "epay_28_login",
method: "get",
url: _0x139155
};
let {
headers: _0x10b4ba,
statusCode: _0x1c60e3
} = await this.request(_0x5d5710);
if (_0x10b4ba?.["location"]) {
let _0xbf5a4c = new URL(_0x10b4ba.location);
this.rptId = _0xbf5a4c.searchParams.get("rptid");
this.rptId ? await this.epay_28_authCheck() : this.log("联通支付日获取rptid失败");
} else {
this.log("联通支付日获取rptid失败[" + _0x1c60e3 + "]");
}
} catch (_0x24e61c) {
console.log(_0x24e61c);
}
}
async epay_28_queryUserPage(_0x593a59 = {}) {
try {
let _0x52a117 = appName.time("yyyyMM") + "28ZFR";
const _0xa4a05 = {
templateName: _0x52a117
};
let _0x2b8287 = {
fn: "epay_28_queryUserPage",
method: "post",
url: "https://epay.10010.com/ci-mcss-party-front/v1/rainbow/queryUserPage",
headers: {
bizchannelinfo: this.get_bizchannelinfo(),
authinfo: this.get_epay_authinfo()
},
form: _0xa4a05
},
{
result: _0x316895
} = await this.request(_0x2b8287),
_0x2a5e2b = appName.get(_0x316895, "code", -1);
if (_0x2a5e2b == "0000" && _0x316895?.["data"]?.["returnCode"] == 0) {
for (let _0x29cca7 of _0x316895?.["data"]?.["prizeList"]?.["rainbowMouldInfos"] || []) {
_0x29cca7?.["rainbowUnitInfos"]?.[0]?.["unitActivityId"] && (await this.epay_28_unifyDraw(_0x29cca7.rainbowUnitInfos[0]));
if (_0x29cca7?.["day01DrawParam"]) {
await this.epay_28_queryMiddleUnit(_0x52a117, _0x29cca7.mouldName);
break;
}
}
} else {
let _0x253476 = _0x316895?.["message"] || _0x316895?.["msg"] || "";
this.log("联通支付日进入主页失败[" + _0x2a5e2b + "]: " + _0x253476);
}
} catch (_0x4d57b5) {
console.log(_0x4d57b5);
}
}
async epay_28_queryMiddleUnit(_0x5c5db5, _0x392918, _0x5f3e9d = {}) {
try {
const _0x52c66e = {
activityId: _0x5c5db5,
mouldName: _0x392918
};
let _0x272e95 = {
fn: "epay_28_queryMiddleUnit",
method: "post",
url: "https://epay.10010.com/ci-mcss-party-front/v1/rainbow/queryMiddleUnit",
headers: {
bizchannelinfo: this.get_bizchannelinfo(),
authinfo: this.get_epay_authinfo()
},
form: _0x52c66e
},
{
result: _0x3851a6
} = await this.request(_0x272e95),
_0x4b44ce = appName.get(_0x3851a6, "code", -1);
if (_0x4b44ce == "0000") {
let _0xcad9a9 = appName.time("dd");
_0x3851a6?.["data"]?.[_0xcad9a9] == "1" ? this.log("联通支付日今日(" + _0xcad9a9 + "号)已打卡") : await this.epay_28_unifyDrawNew(_0x5c5db5, _0x392918);
} else {
let _0x42d4bb = _0x3851a6?.["message"] || _0x3851a6?.["msg"] || "";
this.log("联通支付日查询打卡失败[" + _0x4b44ce + "]: " + _0x42d4bb);
}
} catch (_0x56f54c) {
console.log(_0x56f54c);
}
}
async epay_28_unifyDrawNew(_0x32455a, _0x3b23ed, _0x4b4480 = {}) {
try {
const _0x1af316 = {
bizFrom: errorCode,
activityId: _0x32455a,
mouldName: _0x3b23ed
};
let _0x1e4109 = {
fn: "epay_28_unifyDrawNew",
method: "post",
url: "https://epay.10010.com/ci-mcss-party-front/v1/rainbow/unifyDrawNew",
headers: {
bizchannelinfo: this.get_bizchannelinfo(),
authinfo: this.get_epay_authinfo()
},
form: _0x1af316
},
{
result: _0x39b4c5
} = await this.request(_0x1e4109),
_0x372dd5 = appName.get(_0x39b4c5, "code", -1);
if (_0x372dd5 == "0000" && _0x39b4c5?.["data"]?.["returnCode"] == 0) {
let _0xc69fe5 = _0x39b4c5?.["data"]?.["awardTipContent"]?.["replace"](/xx/, _0x39b4c5?.["data"]?.["amount"]);
const _0x5e238f = {
notify: true
};
this.log("联通支付日打卡:" + _0xc69fe5, _0x5e238f);
} else {
let _0x5dd5bd = _0x39b4c5?.["data"]?.["returnMsg"] || _0x39b4c5?.["msg"] || "";
this.log("联通支付日打卡失败[" + (_0x39b4c5?.["data"]?.["returnCode"] || _0x372dd5) + "]: " + _0x5dd5bd);
}
} catch (_0xe6df9) {
console.log(_0xe6df9);
}
}
async epay_28_unifyDraw(_0x38a578, _0x5c8b17 = {}) {
try {
const _0x3bf056 = {
activityId: _0x38a578.unitActivityId,
isBigActivity: _0x38a578.isBigActivity,
bigActivityId: _0x38a578.bigActivityId,
bizFrom: errorCode
};
let _0x59ed9a = {
fn: "epay_28_unifyDraw",
method: "post",
url: "https://epay.10010.com/ci-mcss-party-front/v1/rainbow/unifyDraw",
headers: {
bizchannelinfo: this.get_bizchannelinfo(),
authinfo: this.get_epay_authinfo()
},
form: _0x3bf056
},
{
result: _0x34ea6b
} = await this.request(_0x59ed9a),
_0x384c09 = appName.get(_0x34ea6b, "code", -1);
if (_0x384c09 == "0000" && _0x34ea6b?.["data"]?.["returnCode"] == 0) {
const _0x3b6f17 = {
notify: true
};
this.log("联通支付日抽奖: " + (_0x34ea6b?.["data"]?.["prizeName"] || ""), _0x3b6f17);
} else {
let _0x22895a = _0x34ea6b?.["data"]?.["returnMsg"] || _0x34ea6b?.["msg"] || "";
this.log("联通支付日抽奖失败[" + (_0x34ea6b?.["data"]?.["returnCode"] || _0x384c09) + "]: " + _0x22895a);
}
} catch (_0x4e021a) {
console.log(_0x4e021a);
}
}
async appMonth_28_bind(_0x2ae53c, _0x28e539 = {}) {
try {
const _0x5e8346 = {
shareCode: _0x2ae53c,
cl: "WeChat"
};
const _0x5807b0 = {
fn: "appMonth_28_bind",
method: "post",
url: "https://activity.10010.com/AppMonthly/appMonth/bind",
form: _0x5e8346,
valid_code: [401]
};
let {
result: _0x147b99
} = await this.request(_0x5807b0);
} catch (_0x24f7a3) {
console.log(_0x24f7a3);
}
}
async appMonth_28_queryChance(params = {}) {
try {
const requestConfig = {
fn: "appMonth_28_queryChance",
method: "post",
url: "https://activity.10010.com/AppMonthly/appMonth/queryChance"
};
let {
result: response
} = await this.request(requestConfig),
status = appName.get(response, "status", -1);
if (status == "0000") {
let {
allRemainTimes: remainingTimes,
isUnicom: isUnicomUser
} = response?.["data"];
if (isUnicomUser) {
let drawTimes = Math.min(appMonth_28_MaxTimes, remainingTimes);
this.log("联通支付日可以开宝箱" + remainingTimes + "次, 去抽" + drawTimes + "次");
while (drawTimes-- > 0) {
await this.appMonth_28_lottery();
}
}
} else {
let errorMsg = response?.["msg"] || "";
this.log("联通支付日查询开宝箱次数失败[" + status + "]: " + errorMsg);
}
} catch (error) {
console.log(error);
}
}
async appMonth_28_lottery(_0x32fff2 = {}) {
try {
const _0x13d3ae = {
fn: "appMonth_28_lottery",
method: "post",
url: "https://activity.10010.com/AppMonthly/appMonth/lottery"
};
let {
result: _0x360c8d
} = await this.request(_0x13d3ae),
_0x1faa78 = appName.get(_0x360c8d, "status", -1);
if (_0x1faa78 == "0000") {
let {
code: _0x4506d5,
uuid: _0x217783
} = _0x360c8d?.["data"];
_0x217783 ? await this.appMonth_28_winningRecord(_0x217783) : this.log("联通支付日开宝箱失败[" + _0x4506d5 + "]");
} else {
let _0x1c765a = _0x360c8d?.["msg"] || "";
this.log("联通支付日开宝箱失败[" + _0x1faa78 + "]: " + _0x1c765a);
}
} catch (_0x1e578f) {
console.log(_0x1e578f);
}
}
async appMonth_28_winningRecord(_0x49f5fb, _0x539daf = {}) {
try {
const _0x4e44da = {
requestId: _0x49f5fb
};
const _0x18e28d = {
fn: "appMonth_28_winningRecord",
method: "post",
url: "https://activity.10010.com/AppMonthly/appMonth/winningRecord",
form: _0x4e44da
};
let {
result: _0x3de180
} = await this.request(_0x18e28d),
_0x51662d = appName.get(_0x3de180, "status", -1);
if (_0x51662d == "0000") {
let {
code: _0x20040f,
prizeName: _0x428599
} = _0x3de180?.["data"];
if (_0x20040f == "0000") {
const _0x194d8b = {
notify: true
};
this.log("联通支付日开宝箱: " + _0x428599, _0x194d8b);
} else {
let _0x4a0327 = _0x3de180?.["data"]?.["message"] || "";
this.log("联通支付日开宝箱[" + _0x20040f + "]: " + _0x4a0327);
}
} else {
let _0x507948 = _0x3de180?.["msg"] || "";
this.log("联通支付日查询中奖奖品错误[" + _0x51662d + "]: " + _0x507948);
}
} catch (_0x12630e) {
console.log(_0x12630e);
}
}
async sign_getContinuous(imei_val, _0x4a5ad2 = {}) {
try {
// 定义请求配置
const _0x4c871f = {
fn: "sign_getContinuous",
method: "get", // GET请求
url: "https://activity.10010.com/sixPalaceGridTurntableLottery/signin/getContinuous",
params: { // 请求参数
taskId: "",
channel: "wode",
imei: imei_val // 设备ID
}
};
// 发送请求并获取结果
let { result: _0x375bbc } = await this.request(_0x4c871f),
_0x390277 = appName.get(_0x375bbc, "code", -1);
// 处理响应
if (_0x390277 == "0000") { // 成功
let _0x2ddb99 = _0x375bbc?.["data"]?.["todayIsSignIn"] || 'n'; // 今日签到状态
this.log("签到区今天" + (_0x2ddb99 == "n" ? "未" : "已") + "签到", { notify: true });
if (_0x2ddb99 == "n") { // 未签到则执行签到
await appName.wait(1000); // 等待1秒
await this.sign_daySign(); // 执行每日签到
}
} else { // 失败
this.log("签到区查询签到状态失败[" + _0x390277 + "]: " + (_0x375bbc?.["desc"] || ""));
}
} catch (_0x1e4db0) {
console.log(_0x1e4db0);
}
}
async sign_daySign(_0x43121e = {}) {
try {
// 定义请求配置
const _0x34424b = {
fn: "sign_daySign",
method: "post", // POST请求
url: "https://activity.10010.com/sixPalaceGridTurntableLottery/signin/daySign",
form: {} // 空表单数据
};
// 发送请求并获取结果
let { result: _0x45b961 } = await this.request(_0x34424b),
_0x3dd664 = appName.get(_0x45b961, "code", -1);
// 处理响应
if (_0x3dd664 == "0000") { // 签到成功
let { statusDesc: _0x3544fb, redSignMessage: _0x5016bf } = _0x45b961?.["data"];
let logMessage = "签到区签到成功: ";
if (_0x3544fb) logMessage += `[${_0x3544fb}]`;
if (_0x5016bf) logMessage += `${_0x5016bf}`;
this.log(logMessage, { notify: true });
} else if (_0x3dd664 == "0002" && _0x45b961?.["desc"] && _0x45b961["desc"].includes('已经签到')) { // 今日已签到
this.log("签到区签到成功: 今日已完成签到!", { notify: true });
} else { // 失败
this.log("签到区签到失败[" + _0x3dd664 + "]: " + (_0x45b961?.["desc"] || ""));
}
} catch (_0x31a630) {
console.log(_0x31a630);
}
}
async sign_queryBubbleTask(_0x2777e8 = {}) {
try {
// 定义请求配置
const _0x49d44f = {
fn: "sign_queryBubbleTask",
method: "post", // POST请求
url: "https://act.10010.com/SigninApp/bubbleTask/queryBubbleTask"
};
// 发送请求并获取结果
let { result: _0xff3076 } = await this.request(_0x49d44f),
_0x1e9efb = appName.get(_0xff3076, "status", -1);
// 处理响应
if (_0x1e9efb == "0000") { // 成功
// 筛选并执行可执行任务
for (let _0xe8b4f5 of _0xff3076?.["data"]?.["paramsList"]?.["filter"](_0xb17880 => _0xb17880.taskState == 1)) {
let _0x411132 = await this.gettaskip(); // 获取任务所需标识
await this.sign_doTask(_0xe8b4f5, _0x411132); // 执行任务
}
} else { // 失败
this.log("签到区查询气泡任务失败[" + _0x1e9efb + "]: " + (_0xff3076?.["msg"] || ""));
}
} catch (_0x24c5dc) {
console.log(_0x24c5dc);
}
}
async sign_doTask(_0x4cf867, _0x22748d, _0x5bbfdb = {}) {
try {
// 定义请求表单数据
const _0x4a9479 = {
id: _0x4cf867.id,
orderId: _0x22748d,
imei: "BB97982E-3F03-46D3-B904-819D626DF478", // 设备ID (硬编码示例)
prizeType: _0x4cf867.rewardType,
positionFlag: 0
};
// 定义请求配置
const _0x31aade = {
fn: "sign_doTask",
method: "post", // POST请求
url: "https://act.10010.com/SigninApp/task/doTask",
form: _0x4a9479 // 表单数据
};
// 发送请求并获取结果
let { result: _0x329766 } = await this.request(_0x31aade),
_0x1d5e4d = appName.get(_0x329766, "status", -1);
// 处理响应
if (_0x1d5e4d == "0000") { // 成功
this.log("完成任务[" + _0x4cf867.actName + "]获得: " + _0x329766?.["data"]?.["prizeCount"] + _0x329766?.["data"]?.["prizeName"]);
} else { // 失败
this.log("完成任务[" + _0x4cf867.actName + "]失败[" + _0x1d5e4d + "]: " + (_0x329766?.["msg"] || ""));
}
} catch (_0x4ad671) {
console.log(_0x4ad671);
}
}
async game_login(_0x5f500f, _0x639e7 = {}) {
try {
const _0x2730f4 = {
identityType: "esToken",
code: this.ecs_token,
ticket: _0x5f500f,
uuid: uuid
};
const _0x204877 = {
fn: "game_login",
method: "post",
url: "https://game.wostore.cn/api/app//user/v2/login",
headers: {},
json: _0x2730f4
};
_0x204877.headers.channelid = "GAMELTAPP_90005";
let {
result: _0x206034
} = await this.request(_0x204877),
_0xe387fd = appName.get(_0x206034, "code", -1);
if (_0xe387fd == 200) {
this.game_token = _0x206034?.["data"]?.["access_token"];
this.got = this.got.extend({
headers: {
Authorization: this.game_token
}
});
await this.game_getMemberInfo();
await this.game_signRecord();
await this.game_lottery();
await this.game_playSave();
await this.game_taskList();
await this.game_getMemberInfo();
const _0x563fcb = {
notify: true
};
this.log("联通畅游币: " + this.point, _0x563fcb);
} else {
let _0x1d6aa5 = _0x206034?.["msg"] || "";
this.log("联通畅游登录失败[" + _0xe387fd + "]: " + _0x1d6aa5);
}
} catch (_0x22daa6) {
console.log(_0x22daa6);
}
}
async game_getMemberInfo(_0x1119ca = {}) {
try {
const _0x2d61ed = {
fn: "game_getMemberInfo",
method: "get",
url: "https://game.wostore.cn/api/app/user/v2/getMemberInfo"
};
let {
result: _0x25b820
} = await this.request(_0x2d61ed),
_0x4c45ab = appName.get(_0x25b820, "code", -1);
if (_0x4c45ab == 200) {
this.point = _0x25b820?.["data"]?.["userIntegral"];
} else {
let _0x31251d = _0x25b820?.["msg"] || "";
this.log("联通畅游查询积分失败[" + _0x4c45ab + "]: " + _0x31251d);
}
} catch (_0x3a8d0c) {
console.log(_0x3a8d0c);
}
}
async game_signRecord(_0x47d803 = {}) {
try {
const _0xed6a1c = {
fn: "game_signRecord",
method: "get",
url: "https://game.wostore.cn/api/app/user/v2/signRecord"
};
let {
result: _0x3d9d1c
} = await this.request(_0xed6a1c),
_0x56bc7f = appName.get(_0x3d9d1c, "code", -1);
if (_0x56bc7f == 200) {
for (let _0x48dbac of _0x3d9d1c?.["data"]) {
if (_0x48dbac.now == 0) {
continue;
}
this.log("联通畅游今天" + (_0x48dbac.signStatus == 2 ? "未" : "已") + "签到");
if (_0x48dbac.signStatus == 2) {
await this.game_signIn();
}
}
} else {
let _0x4c5073 = _0x3d9d1c?.["msg"] || "";
this.log("联通畅游查询签到失败[" + _0x56bc7f + "]: " + _0x4c5073);
}
} catch (_0x8f9b0b) {
console.log(_0x8f9b0b);
}
}
async game_signIn(_0x170c89 = {}) {
try {
const _0x3d53ee = {
fn: "game_signIn",
method: "get",
url: "https://game.wostore.cn/api/app/user/v2/signIn"
};
let {
result: _0x1f4677
} = await this.request(_0x3d53ee),
_0x478093 = appName.get(_0x1f4677, "code", -1);
if (_0x478093 == 200) {
this.log("联通畅游签到成功");
} else {
let _0x2b40f2 = _0x1f4677?.["msg"] || "";
this.log("联通畅游签到失败[" + _0x478093 + "]: " + _0x2b40f2);
}
} catch (_0xfac145) {
console.log(_0xfac145);
}
}
async game_checkSlider(_0x5ca38c = {}) {
let _0x3c3f88 = false;
try {
const _0x536f3f = {
xPos: 234
};
const _0x54913c = {
fn: "game_checkSlider",
method: "post",
url: "https://game.wostore.cn/api/app/common/slider/checkSlider",
searchParams: _0x536f3f
};
let {
result: _0x31be4b
} = await this.request(_0x54913c),
_0x29af87 = appName.get(_0x31be4b, "code", -1);
if (_0x29af87 == 200) {
this.log("联通畅游滑块验证成功");
} else {
let _0x661bc2 = _0x31be4b?.["msg"] || "";
this.log("联通畅游滑块验证失败[" + _0x29af87 + "]: " + _0x661bc2);
}
} catch (_0x441ee4) {
console.log(_0x441ee4);
} finally {
return _0x3c3f88;
}
}
async game_lottery(_0x12d231 = {}) {
try {
let _0x597145 = {
fn: "game_lottery",
method: "get",
url: "https://game.wostore.cn/api/app/user/v2/benefit/lottery",
searchParams: {
id: appName.get(_0x12d231, "id", 1)
}
},
{
result: _0x375b1d
} = await this.request(_0x597145),
_0x44ca98 = appName.get(_0x375b1d, "code", -1);
if (_0x44ca98 == 200) {
const _0x46c4cd = {
notify: true
};
this.log("联通畅游抽奖: " + _0x375b1d?.["data"]?.["productName"], _0x46c4cd);
} else {
let _0x172e69 = _0x375b1d?.["msg"] || "";
this.log("联通畅游抽奖失败[" + _0x44ca98 + "]: " + _0x172e69);
}
} catch (_0x5cc5c9) {
console.log(_0x5cc5c9);
}
}
async game_taskList(_0x38dc2c = {}) {
try {
const _0x6b3e09 = {
fn: "game_taskList",
method: "get",
url: "https://game.wostore.cn/api/app/user/v2/task/list"
};
let {
result: _0x24a55d
} = await this.request(_0x6b3e09),
_0x641976 = appName.get(_0x24a55d, "code", -1);
if (_0x641976 == 200) {
for (let _0x2b6e2e of _0x24a55d?.["data"]) {
switch (_0x2b6e2e.receiveStatus) {
case 0:
break;
case 1:
await this.game_taskReceive(_0x2b6e2e);
break;
case 2:
break;
default:
appName.log("任务[" + _0x2b6e2e.taskName + "]未知状态[" + _0x2b6e2e.receiveStatus + "]");
break;
}
}
} else {
let _0x3e9a0f = _0x24a55d?.["msg"] || "";
this.log("联通畅游查询任务失败[" + _0x641976 + "]: " + _0x3e9a0f);
}
} catch (_0x169b29) {
console.log(_0x169b29);
}
}
async game_taskReceive(_0xe2b155, _0x5671ea = {}) {
try {
const _0x591582 = {
productId: _0xe2b155.productId,
taskId: _0xe2b155.id
};
const _0x1eca66 = {
fn: "game_taskReceive",
method: "get",
url: "https://game.wostore.cn/api/app/user/v2/task/receive",
searchParams: _0x591582
};
let {
result: _0x2f8fb3
} = await this.request(_0x1eca66),
_0x288264 = appName.get(_0x2f8fb3, "code", -1);
if (_0x288264 == 200) {
this.log("领取任务[" + _0xe2b155.taskName + "]奖励成功");
} else {
let _0x261128 = _0x2f8fb3?.["msg"] || "";
this.log("领取任务[" + _0xe2b155.taskName + "]奖励失败[" + _0x288264 + "]: " + _0x261128);
}
} catch (_0x33f03b) {
console.log(_0x33f03b);
}
}
async game_playSave(_0x2b6d36 = {}) {
try {
let _0x1b839f = {
fn: "game_playSave",
method: "post",
url: "https://game.wostore.cn/api/app/user/v2/play/save",
json: {
cpGameId: "15000199" + appName.randomString(2, "0123456789")
}
},
{
result: _0x435b34
} = await this.request(_0x1b839f),
_0x405dad = appName.get(_0x435b34, "code", -1);
if (!(_0x405dad == 200)) {
let _0x407e03 = _0x435b34?.["msg"] || "";
this.log("联通畅游玩游戏失败[" + _0x405dad + "]: " + _0x407e03);
}
} catch (_0x10eb8a) {
console.log(_0x10eb8a);
}
}
async flmf_login(_0x3a709c, _0x3e346c = {}) {
try {
const _0x4d2274 = {
fn: "flmf_login",
method: "get",
url: _0x3a709c
};
let {
headers: _0x44fb4d,
statusCode: _0x2923d9
} = await this.request(_0x4d2274);
if (_0x44fb4d?.["location"]) {
let _0x366f8a = new URL(_0x44fb4d.location);
this.flmf_sid = _0x366f8a.searchParams.get("sid");
this.flmf_sid ? (await this.flmf_signInInit(), await this.flmf_taskList(), await this.flmf_scanTask()) : this.log("福利魔方获取sid失败");
} else {
this.log("福利魔方获取sid失败[" + _0x2923d9 + "]");
}
} catch (_0x27766a) {
console.log(_0x27766a);
}
}
async flmf_signInInit(_0x5dabbc = {}) {
try {
let _0x2014b6 = {
fn: "flmf_signInInit",
method: "post",
url: "https://weixin.linktech.hk/lv-apiaccess/welfareCenter/signInInit",
form: this.get_flmf_data()
},
{
result: _0x41327b
} = await this.request(_0x2014b6),
_0x2732b9 = appName.get(_0x41327b, "resultCode", -1);
if (_0x2732b9 == "0000") {
this.log("福利魔方今天" + (_0x41327b?.["data"]?.["isSigned"] ? "已" : "未") + "签到, 已连续签到" + _0x41327b?.["data"]?.["consecutiveDays"] + "天");
if (!_0x41327b?.["data"]?.["isSigned"]) {
await this.flmf_signIn();
}
} else {
let _0x1a8187 = _0x41327b?.["resultMsg"] || "";
this.log("福利魔方查询签到失败[" + _0x2732b9 + "]: " + _0x1a8187);
}
} catch (_0x517caa) {
console.log(_0x517caa);
}
}
async flmf_signIn(_0x51ae1e = {}) {
try {
let _0x3128b3 = {
fn: "flmf_signIn",
method: "post",
url: "https://weixin.linktech.hk/lv-apiaccess/welfareCenter/signIn",
form: this.get_flmf_data()
},
{
result: _0x4485f1
} = await this.request(_0x3128b3),
_0x1564ca = appName.get(_0x4485f1, "resultCode", -1);
if (_0x1564ca == "0000") {
this.log("福利魔方签到成功");
} else {
let _0xfa6532 = _0x4485f1?.["resultMsg"] || "";
this.log("福利魔方签到失败[" + _0x1564ca + "]: " + _0xfa6532);
}
} catch (_0x22c453) {
console.log(_0x22c453);
}
}
async flmf_taskList(_0x47a943 = {}) {
try {
let _0x3b119a = {
fn: "flmf_taskList",
method: "post",
url: "https://weixin.linktech.hk/lv-apiaccess/welfareCenter/taskList",
form: this.get_flmf_data()
},
{
result: _0x1be38d
} = await this.request(_0x3b119a),
_0x56b419 = appName.get(_0x1be38d, "resultCode", -1);
if (_0x56b419 == "0000") {
for (let _0x21c855 of _0x1be38d?.["data"]?.["taskInfoList"]) {
for (let _0x3ddbd8 of _0x21c855.taskInfoList.filter(_0x539de9 => !_0x539de9.done)) {
for (let _0xcf0709 = _0x3ddbd8.hascount; _0xcf0709 < _0x3ddbd8.count; _0xcf0709++) {
await this.flmf_gogLance(_0x3ddbd8.id);
}
}
}
} else {
let _0x3affb1 = _0x1be38d?.["resultMsg"] || "";
this.log("福利魔方查询任务失败[" + _0x56b419 + "]: " + _0x3affb1);
}
} catch (_0x172024) {
console.log(_0x172024);
}
}
async flmf_scanTask() {
for (let _0xa11d9d of someArray) {
await this.flmf_gogLance(_0xa11d9d);
}
}
async flmf_gogLance(_0x3534eb, _0x4a0142 = {}) {
try {
let _0x1d2f2 = {
fn: "flmf_gogLance",
method: "post",
url: "https://weixin.linktech.hk/lv-apiaccess/welfareCenter/gogLance",
form: {
taskId: _0x3534eb,
...this.get_flmf_data()
}
},
{
result: _0x422380
} = await this.request(_0x1d2f2);
await appName.wait_gap_interval(this.t_flmf_task, delayMs);
let _0x213f2c = appName.get(_0x422380, "resultCode", -1);
this.t_flmf_task = Date.now();
if (_0x213f2c == "0000") {
this.log("完成任务[" + _0x3534eb + "]成功");
} else {
let _0x2aacea = _0x422380?.["resultMsg"] || "";
this.log("完成任务[" + _0x3534eb + "]失败[" + _0x213f2c + "]: " + _0x2aacea);
}
} catch (_0x229114) {
console.log(_0x229114);
}
}
async woread_api(_0x34880c) {
let _0x1db761 = await this.request(appName.copy(_0x34880c)),
_0x3e48ad = _0x1db761?.["result"]?.["message"] || "";
_0x3e48ad?.["includes"]("登录已过期") && (await this.woread_auth()) && (await this.woread_login()) && (_0x1db761 = await this.request(appName.copy(_0x34880c)));
return _0x1db761;
}
switch_woread_token(accessToken) {
const headers = {
accesstoken: accessToken
};
const options = {
headers: headers
};
this.got = this.got.extend(options);
}
async woread_auth(options = {}) {
let authSuccess = false;
const filePath = path.join(__dirname, 'chinaUnicom_cache.json');
try {
// 获取当前时间戳
let timestamp = appName.time("yyyyMMddhhmmss");
const timestampData = { timestamp: timestamp };
let encodedSign = this.encode_woread(timestampData);
let currentTime = Date.now().toString();
let md5Hash = cryptoJS.MD5(productId + secretKey + currentTime).toString();
const signData = { sign: encodedSign };
const requestOptions = {
fn: "woread_auth",
method: "post",
url: `https://10010.woread.com.cn/ng_woread_service/rest/app/auth/${productId}/${currentTime}/${md5Hash}`,
json: signData
};
// 发送请求并处理响应
let { result: responseData } = await this.request(requestOptions);
let responseCode = appName.get(responseData, "code", -1);
if (responseCode == "0000") {
authSuccess = true;
this.woread_accesstoken = responseData?.["data"]?.["accesstoken"];
this.switch_woread_token(this.woread_accesstoken);
// 将服务器返回的数据缓存到文件
let fileData = {};
if (fs.existsSync(filePath)) {
const existingData = fs.readFileSync(filePath, 'utf8');
fileData = existingData ? JSON.parse(existingData) : {};
}
if (!fileData["woread_auth"]) {
fileData["woread_auth"] = {};
}
fileData["woread_auth"][this.mobile] = responseData?.["data"];
fs.writeFileSync(filePath, JSON.stringify(fileData, null, 2), 'utf8');
} else {
let errorMessage = responseData?.["message"] || "";
this.log("阅读专区获取accesstoken失败[" + responseCode + "]: " + errorMessage);
}
} catch (error) {
console.log(error);
this.log("发生异常:" + error.message);
} finally {
return authSuccess;
}
}
async woread_login(options = {}) {
let loginSuccess = false;
const filePath = path.join(__dirname, 'chinaUnicom_cache.json');
try {
// 如果无缓存数据,请求服务器
let loginData = {
// phone: this.mobile,
phone: this.encode_woread1(this.mobile),
timestamp: appName.time("yyyyMMddhhmmss")
};
let encodedSign = this.encode_woread(loginData);
//console.log(encodedSign)
const signData = {
sign: encodedSign
};
const requestOptions = {
fn: "woread_login",
method: "post",
url: "https://10010.woread.com.cn/ng_woread_service/rest/account/login",
json: signData
};
let { result: responseData } = await this.request(requestOptions);
let responseCode = appName.get(responseData, "code", -1);
if (responseCode === "0000") {
loginSuccess = true;
let { userid, userindex, token, verifycode } = responseData?.["data"];
this.woread_token = token;
this.woread_verifycode = verifycode;
const userData = {
woread_userid: userid,
woread_userindex: userindex,
woread_token: token,
woread_verifycode: verifycode
};
Object.assign(this, userData);
// 将服务器返回的数据缓存到文件
let fileData = {};
if (fs.existsSync(filePath)) {
const existingData = fs.readFileSync(filePath, 'utf8');
fileData = existingData ? JSON.parse(existingData) : {};
}
if (!fileData["woread_login"]) {
fileData["woread_login"] = {};
}
fileData["woread_login"][this.mobile] = responseData?.["data"];
fs.writeFileSync(filePath, JSON.stringify(fileData, null, 2), 'utf8');
} else {
let errorMessage = responseData?.["message"] || "";
this.log("阅读专区获取token失败[" + responseCode + "]: " + errorMessage);
}
} catch (error) {
console.log(error);
this.log("发生异常:" + error.message);
} finally {
return loginSuccess;
}
}
async woread_m_auth(options = {}) {
let authSuccess = false;
try {
let currentTime = Date.now().toString(),
md5Hash = cryptoJS.MD5(secondProductId + secondSecretKey + currentTime).toString();
const requestOptions = {
fn: "woread_auth",
method: "get",
url: "https:///m.woread.com.cn/api/union/app/auth/" + secondProductId + "/" + currentTime + "/" + md5Hash
};
let {
result: responseData
} = await this.request(requestOptions),
responseCode = appName.get(responseData, "code", -1);
if (responseCode == "0000") {
authSuccess = true;
this.woread_m_accesstoken = responseData?.["data"]?.["accesstoken"];
this.switch_woread_token(this.woread_m_accesstoken);
} else {
let errorMessage = responseData?.["message"] || "";
this.log("阅读专区获取accesstoken失败[" + responseCode + "]: " + errorMessage);
}
} catch (error) {
console.log(error);
} finally {
return authSuccess;
}
}
async woread_m_login(options = {}) {
let loginSuccess = false;
try {
let userData = {
userid: this.woread_userid,
token: this.woread_token,
timestamp: Date.now()
},
encodedUserData = {
userData: Buffer.from(JSON.stringify(userData), "utf-8").toString("base64"),
...this.get_woread_m_param()
};
delete encodedUserData.token;
let encodedSign = this.encode_woread(encodedUserData, someConstant);
const signData = {
sign: encodedSign
};
const requestOptions = {
fn: "woread_login",
method: "post",
url: "https://m.woread.com.cn/api/union/user/thirdPartyFreeLogin",
json: signData
};
let {
result: responseData
} = await this.request(requestOptions),
responseCode = appName.get(responseData, "code", -1);
if (responseCode == "0000") {
loginSuccess = true;
} else {
let errorMessage = responseData?.["message"] || "";
this.log("阅读专区获取token失败[" + responseCode + "]: " + errorMessage);
}
} catch (error) {
console.log(error);
} finally {
return loginSuccess;
}
}
async woread_getSeeVideoAddNumber(_0x12ab92, _0x486335 = {}) {
try {
let _0x3140d3 = {
activityIndex: _0x12ab92,
...this.get_woread_param()
},
_0x8e1656 = this.encode_woread(_0x3140d3);
const _0xce314c = {
sign: _0x8e1656
};
const _0x3b19e5 = {
fn: "woread_getSeeVideoAddNumber",
method: "post",
url: "https://10010.woread.com.cn/ng_woread_service/rest/activity/getSeeVideoAddNumber",
json: _0xce314c
};
let {
result: _0x5028e4
} = await this.woread_api(_0x3b19e5),
_0x3c20dc = appName.get(_0x5028e4, "code", -1);
if (_0x3c20dc == "0000") {
_0x5028e4?.["data"] == -1 && (await this.woread_addUserSeeVideo(_0x12ab92));
} else {
let _0x366c05 = _0x5028e4?.["message"] || "";
this.log("阅读活动[" + _0x12ab92 + "]查询抽奖视频失败[" + _0x3c20dc + "]: " + _0x366c05);
}
} catch (_0x3cd6e0) {
console.log(_0x3cd6e0);
}
}
async woread_addUserSeeVideo(_0x27e075, _0x5be693 = {}) {
try {
let _0x1b56c7 = _0x5be693.num || 5,
_0x211340 = {
activityIndex: _0x27e075,
num: _0x1b56c7,
...this.get_woread_param()
},
_0x530fc3 = this.encode_woread(_0x211340);
const _0x29270d = {
sign: _0x530fc3
};
const _0x39d9cb = {
fn: "woread_addUserSeeVideo",
method: "post",
url: "https://10010.woread.com.cn/ng_woread_service/rest/activity/addUserSeeVideo",
json: _0x29270d
};
let {
result: _0x4521b8
} = await this.woread_api(_0x39d9cb),
_0x2480f3 = appName.get(_0x4521b8, "code", -1);
if (_0x2480f3 == "0000") {
this.log("阅读活动[" + _0x27e075 + "]看视频增加抽奖次数成功");
} else {
let _0x4a4ae0 = _0x4521b8?.["message"] || "";
this.log("阅读活动[" + _0x27e075 + "]看视频增加抽奖次数失败[" + _0x2480f3 + "]: " + _0x4a4ae0);
}
} catch (_0x4b1856) {
console.log(_0x4b1856);
}
}
async woread_getActivityNumber(_0x5ba90a, _0x3cdf38 = {}) {
try {
let _0xb90653 = {
activeIndex: _0x5ba90a,
...this.get_woread_param()
},
_0x437404 = this.encode_woread(_0xb90653);
const _0x4b9c36 = {
sign: _0x437404
};
const _0x3446a2 = {
fn: "woread_getActivityNumber",
method: "post",
url: "https://10010.woread.com.cn/ng_woread_service/rest/activity/getActivityNumber",
json: _0x4b9c36
};
let {
result: _0x4f72f1
} = await this.woread_api(_0x3446a2),
_0x1a6ca5 = appName.get(_0x4f72f1, "code", -1);
if (_0x1a6ca5 == "0000") {
let _0x8a22f5 = _0x4f72f1?.["data"] || 0;
this.log("阅读活动[" + _0x5ba90a + "]可以抽奖" + _0x8a22f5 + "次");
while (_0x8a22f5-- > 0) {
await appName.wait(5000);
await this.woread_doDraw(_0x5ba90a);
}
} else {
let _0x3842fa = _0x4f72f1?.["message"] || "";
this.log("阅读活动[" + _0x5ba90a + "]查询抽奖次数失败[" + _0x1a6ca5 + "]: " + _0x3842fa);
}
} catch (_0x5a0a0a) {
console.log(_0x5a0a0a);
}
}
async woread_addDrawTimes(_0x2ff3ba, _0x15efe7 = {}) {
try {
let _0x311995 = {
activetyindex: _0x2ff3ba,
...this.get_woread_param()
},
_0x248190 = this.encode_woread(_0x311995);
const _0x486c6d = {
sign: _0x248190
};
const _0x31e48c = {
fn: "woread_addDrawTimes",
method: "post",
url: "https://10010.woread.com.cn/ng_woread_service/rest/basics/addDrawTimes",
json: _0x486c6d
};
await appName.wait_gap_interval(this.t_woread_draw, timeoutMs);
let {
result: _0x9db755
} = await this.woread_api(_0x31e48c);
this.t_woread_draw = Date.now();
let _0x358f34 = appName.get(_0x9db755, "code", -1);
if (_0x358f34 == "0000") {
this.log("阅读活动[" + _0x2ff3ba + "]打卡增加抽奖次数成功");
} else {
if (_0x358f34 != "9999") {
let _0x494cdf = _0x9db755?.["message"] || "";
this.log("阅读活动[" + _0x2ff3ba + "]打卡增加抽奖次数失败[" + _0x358f34 + "]: " + _0x494cdf);
}
}
} catch (_0x3bd142) {
console.log(_0x3bd142);
}
}
async woread_doDraw(_0x397f0b, _0x3c1c53 = {}) {
try {
let _0x2027d0 = {
activeindex: _0x397f0b,
...this.get_woread_param()
},
_0x36bfe3 = this.encode_woread(_0x2027d0);
const _0xba593a = {
sign: _0x36bfe3
};
const _0x3af86a = {
fn: "woread_doDraw",
method: "post",
url: "https://10010.woread.com.cn/ng_woread_service/rest/basics/doDraw",
json: _0xba593a
};
await appName.wait_gap_interval(this.t_woread_draw, timeoutMs);
let {
result: _0x33f591
} = await this.woread_api(_0x3af86a);
this.t_woread_draw = Date.now();
let _0x81a5cb = appName.get(_0x33f591, "code", -1);
if (_0x81a5cb == "0000") {
const _0x2e804e = {
notify: true
};
this.log("阅读活动[" + _0x397f0b + "]抽奖: " + (_0x33f591?.["data"]?.["prizedesc"] || "空气"), _0x2e804e);
} else {
let _0x4d9a5c = _0x33f591?.["message"] || "";
this.log("阅读活动[" + _0x397f0b + "]抽奖失败[" + _0x81a5cb + "]: " + _0x4d9a5c);
}
} catch (_0x4cbb04) {
console.log(_0x4cbb04);
}
}
async woread_queryTicketAccount(_0x23aff5 = {}) {
try {
let _0x4a62c4 = this.get_woread_param(),
_0x1a7869 = this.encode_woread(_0x4a62c4);
const _0x13787c = {
sign: _0x1a7869
};
const _0x1cbb0c = {
fn: "woread_queryTicketAccount",
method: "post",
url: "https://10010.woread.com.cn/ng_woread_service/rest/phone/vouchers/queryTicketAccount",
json: _0x13787c
};
let {
result: _0x3fd342
} = await this.woread_api(_0x1cbb0c),
_0x6ce29d = appName.get(_0x3fd342, "code", -1);
if (_0x6ce29d == "0000") {
let _0x2284a4 = (_0x3fd342?.["data"]?.["usableNum"] / 100).toFixed(2);
const _0x45bce9 = {
notify: true
};
this.log("阅读区话费红包余额: " + _0x2284a4, _0x45bce9);
} else {
let _0xd876d5 = _0x3fd342?.["message"] || "";
this.log("查询阅读区话费红包余额失败[" + _0x6ce29d + "]: " + _0xd876d5);
}
} catch (_0x46f510) {
console.log(_0x46f510);
}
}
async woread_m_queryTicketAccount(_0x5f56cc = {}) {
try {
let _0x1f1089 = this.get_woread_m_param(),
_0x599be3 = this.encode_woread(_0x1f1089, someConstant);
const _0x5e2907 = {
sign: _0x599be3
};
const _0x27cd3f = {
fn: "woread_m_queryTicketAccount",
method: "post",
url: "https://m.woread.com.cn/api/union/phone/vouchers/queryTicketAccount",
json: _0x5e2907
};
let {
result: _0x5c632b
} = await this.woread_api(_0x27cd3f),
_0x5ec93b = appName.get(_0x5c632b, "code", -1);
if (_0x5ec93b == "0000") {
let _0x29f71b = (_0x5c632b?.["data"]?.["usableNum"] / 100).toFixed(2);
const _0x45667c = {
notify: true
};
this.log("阅读区话费红包余额: " + _0x29f71b, _0x45667c);
} else {
let _0x51a7d0 = _0x5c632b?.["message"] || "";
this.log("查询阅读区话费红包余额失败[" + _0x5ec93b + "]: " + _0x51a7d0);
}
} catch (_0x1fbab2) {
console.log(_0x1fbab2);
}
}
async woread_addReadTime(_0x1f2346 = {}) {
try {
let {
readTime = 2,
cntindex = "409672",
cntIndex = "409672",
cnttype = "1",
cntType = 1,
cardid = "11891",
catid = "118411",
pageIndex = "10683",
chapterseno = 1,
channelid = "",
chapterid = "-1",
readtype = 1,
isend = "0"
} = _0x1f2346,
_0x3f4dd2 = {
readTime: readTime,
cntindex: cntindex,
cntIndex: cntIndex,
cnttype: cnttype,
cntType: cntType,
catid: catid,
cardid: cardid,
pageIndex: pageIndex,
chapterseno: chapterseno,
channelid: channelid,
chapterid: chapterid,
readtype: readtype,
isend: isend,
...this.get_woread_param()
},
_0x223104 = this.encode_woread(_0x3f4dd2);
const _0x4e8958 = {
sign: _0x223104
};
const _0x5e4f85 = {
fn: "woread_addReadTime",
method: "post",
url: "https://10010.woread.com.cn/ng_woread_service/rest/history/addReadTime",
json: _0x4e8958
};
let {
result: _0x1f9eec
} = await this.request(_0x5e4f85),
_0x4851e5 = appName.get(_0x1f9eec, "code", -1);
if (_0x4851e5 == "0000") {
this.log("刷新读小说时间: " + _0x1f9eec?.["data"]?.["readtime"] / 60 / 1000 + "分钟");
_0x1f9eec?.["data"]?.["readtime"] >= 3600000 && (this.read_stop = true);
} else {
let _0x797aad = _0x1f9eec?.["message"] || "";
this.log("刷新读小说时间失败[" + _0x4851e5 + "]: " + _0x797aad);
}
} catch (_0x5e3330) {
console.log(_0x5e3330);
}
}
async woread_m_addReadTime(_0x513b98 = {}) {
try {
let {
readTime = 2,
cntindex = "409672",
cntIndex = "409672",
cnttype = "1",
cntType = 1,
cardid = "11891",
catid = "118411",
pageIndex = "10683",
chapterseno = 1,
channelid = "",
chapterid = "-1",
readtype = 1,
isend = "0"
} = _0x513b98,
_0x335ecd = {
readTime: readTime,
cntindex: cntindex,
cntIndex: cntIndex,
cnttype: cnttype,
cntType: cntType,
catid: catid,
cardid: cardid,
pageIndex: pageIndex,
chapterseno: chapterseno,
channelid: channelid,
chapterid: chapterid,
readtype: readtype,
isend: isend,
...this.get_woread_m_param()
},
_0x1eb6f5 = this.encode_woread(_0x335ecd, someConstant);
const _0x3f838f = {
sign: _0x1eb6f5
};
const _0x1eab5b = {
fn: "woread_m_addReadTime",
method: "post",
url: "https:///m.woread.com.cn/api/union/history/addReadTime",
json: _0x3f838f
};
let {
result: _0xc66009
} = await this.request(_0x1eab5b),
_0x22bdf8 = appName.get(_0xc66009, "code", -1);
if (_0x22bdf8 == "0000") {
this.log("刷新读小说时间: " + _0xc66009?.["data"]?.["readtime"] / 60 / 1000 + "分钟");
_0xc66009?.["data"]?.["readtime"] >= 3600000 && (this.read_stop = true);
} else {
let _0x179f91 = _0xc66009?.["message"] || "";
this.log("刷新读小说时间失败[" + _0x22bdf8 + "]: " + _0x179f91);
}
} catch (_0x9c51e0) {
console.log(_0x9c51e0);
}
}
async rabblit_queryActivityData(_0x166566 = {}) {
try {
let _0x2faf53 = {
activeIndex: 26,
...this.get_woread_param()
},
_0x2725ec = this.encode_woread(_0x2faf53);
const _0x35f6cf = {
sign: _0x2725ec
};
const _0x296324 = {
fn: "rabblit_queryActivityData",
method: "post",
url: "https://10010.woread.com.cn/ng_woread_service/rest/rabbitActivity/queryActivityData",
json: _0x35f6cf
};
let {
result: _0x22129d
} = await this.woread_api(_0x296324),
_0x2490e0 = appName.get(_0x22129d, "code", -1);
if (_0x2490e0 == "0000") {
let {
totalcharpternums: _0x22d281,
totalreadnums: _0x3ba6a6,
status: _0x2b7eba,
activitystatus: _0x34b882
} = _0x22129d?.["data"];
if (_0x34b882 == 1) {
this.need_read_rabbit = false;
const _0x4e6bbb = {
notify: true
};
this.log("龟兔赛跑今天已完成", _0x4e6bbb);
return;
}
this.need_read_rabbit = true;
this.log("龟兔赛跑进度: " + _0x3ba6a6 + "/" + _0x22d281 + "分钟");
if (_0x2b7eba == 1) {
await this.rabblit_wakeRabbit();
}
if (_0x3ba6a6 >= _0x22d281) {
await this.rabblit_finishActivity();
}
} else {
let _0x3bbb94 = _0x22129d?.["message"] || "";
_0x3bbb94?.["includes"]("未参加") && !_0x166566.join_retry && (await this.rabblit_joinRuning()) ? (_0x166566.join_retry = true, await this.rabblit_queryActivityData(_0x166566)) : this.log("龟兔赛跑查询状态失败[" + _0x2490e0 + "]: " + _0x3bbb94);
}
} catch (_0x5a5d83) {
console.log(_0x5a5d83);
}
}
async rabblit_joinRuning(_0x22f9b4 = {}) {
let _0x2a36d7 = false;
try {
let _0x5cd0b6 = {
activeIndex: 26,
...this.get_woread_param()
},
_0x25fe34 = this.encode_woread(_0x5cd0b6);
const _0x6d40e3 = {
sign: _0x25fe34
};
const _0x18b2b1 = {
fn: "rabblit_joinRuning",
method: "post",
url: "https://10010.woread.com.cn/ng_woread_service/rest/rabbitActivity/joinRuning",
json: _0x6d40e3
};
let {
result: _0x19cc43
} = await this.woread_api(_0x18b2b1),
_0x1dfb20 = appName.get(_0x19cc43, "code", -1);
if (_0x1dfb20 == "0000") {
_0x2a36d7 = true;
this.log("龟兔赛跑报名成功");
} else {
let _0x5d645 = _0x19cc43?.["message"] || "";
this.log("龟兔赛跑报名失败[" + _0x1dfb20 + "]: " + _0x5d645);
}
} catch (_0x2c4557) {
console.log(_0x2c4557);
} finally {
return _0x2a36d7;
}
}
async rabblit_wakeRabbit(_0x36c542 = {}) {
try {
let _0x1237f5 = {
activeIndex: 26,
sactivitIndex: 7246,
...this.get_woread_param()
},
_0xaf381f = this.encode_woread(_0x1237f5);
const _0x162f7e = {
sign: _0xaf381f
};
const _0x33fcf5 = {
fn: "rabblit_wakeRabbit",
method: "post",
url: "https://10010.woread.com.cn/ng_woread_service/rest/rabbitActivity/wakeRabbit",
json: _0x162f7e
};
await appName.wait_gap_interval(this.t_woread_draw, timeoutMs);
let {
result: _0x5f4ee4
} = await this.woread_api(_0x33fcf5);
this.t_woread_draw = Date.now();
let _0x531c58 = appName.get(_0x5f4ee4, "code", -1);
if (_0x531c58 == "0000") {
const _0x19370a = {
notify: true
};
this.log("龟兔赛跑唤醒兔子抽奖: " + (_0x5f4ee4?.["data"]?.["prizedesc"] || "空气"), _0x19370a);
} else {
let _0x59d84e = _0x5f4ee4?.["message"] || "";
this.log("龟兔赛跑唤醒兔子失败[" + _0x531c58 + "]: " + _0x59d84e);
}
} catch (_0x4b75db) {
console.log(_0x4b75db);
}
}
async rabblit_finishActivity(_0x451bd0 = {}) {
try {
let _0x9cdff4 = {
activeIndex: 26,
...this.get_woread_param()
},
_0x517547 = this.encode_woread(_0x9cdff4);
const _0x5c2de6 = {
sign: _0x517547
};
const _0x4a355a = {
fn: "rabblit_finishActivity",
method: "post",
url: "https://10010.woread.com.cn/ng_woread_service/rest/rabbitActivity/finishActivity",
json: _0x5c2de6
};
await appName.wait_gap_interval(this.t_woread_draw, timeoutMs);
let {
result: _0x254943
} = await this.woread_api(_0x4a355a);
this.t_woread_draw = Date.now();
let _0x6bb8e = appName.get(_0x254943, "code", -1);
if (_0x6bb8e == "0000") {
this.need_read_rabbit = false;
const _0x2f0d17 = {
notify: true
};
this.log("龟兔赛跑终点抽奖: " + (_0x254943?.["data"]?.["prizedesc"] || "空气"), _0x2f0d17);
} else {
let _0x3e4556 = _0x254943?.["message"] || "";
this.log("龟兔赛跑终点抽奖失败[" + _0x6bb8e + "]: " + _0x3e4556);
}
} catch (_0x4f0c17) {
console.log(_0x4f0c17);
}
}
async moonbox_queryActiveInfo(options = {}) {
try {
let woreadParams = this.get_woread_param(),
encodedSign = this.encode_woread(woreadParams);
const signData = {
sign: encodedSign
};
const requestOptions = {
fn: "moonbox_queryActiveInfo",
method: "post",
url: "https://10010.woread.com.cn/ng_woread_service/rest/activity423/queryActiveInfo",
json: signData
};
let {
result: responseData
} = await this.woread_api(requestOptions),
responseCode = appName.get(responseData, "code", -1);
if (responseCode == "0000") {
let {
activeId: activeId,
activeName: activeName
} = responseData?.["data"];
moonbox_activeId = activeId;
} else {
let errorMessage = responseData?.["message"] || "";
this.log("阅光宝盒查询活动失败[" + responseCode + "]: " + errorMessage);
}
} catch (error) {
console.log(error);
}
}
async moonbox_queryCurTaskStatus(options = {}) {
try {
let requestParams = {
activeIndex: moonbox_activeId,
//console.log("activeIndex = "+activeIndex),
...this.get_woread_param()
},
encodedSign = this.encode_woread(requestParams);
// console.log(requestParams)
//console.log("requestParams = "+requestParams)
// console.log("encodedSign = "+encodedSign)
const signData = {
sign: encodedSign
};
const requestOptions = {
fn: "moonbox_queryCurTaskStatus",
method: "post",
url: "https://10010.woread.com.cn/ng_woread_service/rest/activity423/queryCurTaskStatus",
json: signData
};
let {
result: responseData
} = await this.woread_api(requestOptions),
responseCode = appName.get(responseData, "code", -1);
if (responseCode == "0000") {
for (let task of responseData?.["data"] || []) {
let {
taskName: taskName,
currentValue: currentValue,
taskValue: taskValue
} = task?.["taskDetail"];
switch (task.taskStatus) {
case 0:
{
this.moonbox_task_record[taskName] = true;
this.log("阅光宝盒[" + taskName + "]进度: " + parseInt(currentValue) + "/" + taskValue + "分钟");
break;
}
case 2:
{
await this.moonbox_completeActiveTask(task);
}
case 1:
{
this.moonbox_task_record[taskName] = false;
if (!this.moonbox_notified.includes(taskName)) {
this.moonbox_notified.push(taskName);
const notification = {
notify: true
};
this.log("阅光宝盒任务[" + taskName + "]已完成", notification);
}
break;
}
}
}
} else {
let errorMessage = responseData?.["message"] || "";
if (errorMessage?.["includes"]("未领取") && !options.activate_retry) {
await this.moonbox_queryActiveTaskList();
options.activate_retry = true;
await this.moonbox_queryCurTaskStatus(options);
} else {
this.log("阅光宝盒查询任务状态失败[" + responseCode + "]: " + errorMessage);
}
}
} catch (error) {
console.log(error);
}
}
async moonbox_completeActiveTask(_0x4af677, _0x3aeda0 = {}) {
try {
let _0x4c63e8 = {
taskId: _0x4af677.id,
...this.get_woread_param()
},
_0xa3034 = this.encode_woread(_0x4c63e8);
const _0x378954 = {
sign: _0xa3034
};
const _0x4513b4 = {
fn: "moonbox_completeActiveTask",
method: "post",
url: "https://10010.woread.com.cn/ng_woread_service/rest/activity423/completeActiveTask",
json: _0x378954
};
let {
result: _0x40efdd
} = await this.woread_api(_0x4513b4),
_0x37bf24 = appName.get(_0x40efdd, "code", -1);
if (_0x37bf24 == "0000") {
const _0x432c2b = {
notify: true
};
this.log("阅光宝盒[" + _0x40efdd?.["data"]?.["taskDetail"]?.["taskName"] + "]领取奖励成功: " + _0x40efdd?.["data"]?.["exchangeResult"]?.["materialGroupInfo"]?.["groupName"], _0x432c2b);
} else {
let _0x355fe8 = _0x40efdd?.["message"] || "";
this.log("阅光宝盒[" + _0x4af677?.["taskDetail"]?.["taskName"] + "]领取奖励失败[" + _0x37bf24 + "]: " + _0x355fe8);
}
} catch (_0x5d1580) {
console.log(_0x5d1580);
}
}
async moonbox_queryActiveTaskList(_0x5b4f5d = {}) {
try {
let _0x29dc0b = {
activeIndex: moonbox_activeId,
...this.get_woread_param()
},
_0x416ead = this.encode_woread(_0x29dc0b);
const _0x3d0c02 = {
sign: _0x416ead
};
const _0x5e2bbb = {
fn: "moonbox_queryActiveTaskList",
method: "post",
url: "https://10010.woread.com.cn/ng_woread_service/rest/activity423/queryActiveTaskList",
json: _0x3d0c02
};
let {
result: _0x391626
} = await this.woread_api(_0x5e2bbb),
_0x42ede6 = appName.get(_0x391626, "code", -1);
if (_0x42ede6 == "0000") {
let _0x1cff30 = _0x391626?.["data"]?.["sort"](function (_0x1792cf, _0xe10a9b) {
let _0x3ecb2c = parseInt(_0xe10a9b.taskDetail.taskValue),
_0x243b54 = parseInt(_0x1792cf.taskDetail.taskValue);
return _0x3ecb2c - _0x243b54;
}),
_0xe49ce3 = _0x1cff30.filter(_0x5ed25d => _0x5ed25d.maxNum - _0x5ed25d.receiveNum > 0 && _0x5ed25d.taskDetail.materialGroup.groupName.includes("红包"));
_0xe49ce3?.["length"] ? await this.moonbox_receiveActiveTask(_0xe49ce3) : this.log("没有可领取的阅光宝盒红包任务了");
} else {
let _0x37141c = _0x391626?.["message"] || "";
this.log("阅光宝盒查询可领取任务失败[" + _0x42ede6 + "]: " + _0x37141c);
}
} catch (_0x3346d3) {
console.log(_0x3346d3);
}
}
async moonbox_receiveActiveTask(_0x17d7d6, _0x642063 = {}) {
try {
if (!_0x17d7d6.length) {
return;
}
let _0x471744 = _0x17d7d6.shift(),
_0x3180c7 = _0x471744?.["taskDetail"]?.["taskName"] || "",
_0x35c4b9 = {
activeId: moonbox_activeId,
taskId: _0x471744.secondTaskId,
...this.get_woread_param()
},
_0x9d13eb = this.encode_woread(_0x35c4b9);
console.log("encodedSign = "+_0x9d13eb)
const _0x1abd0a = {
sign: _0x9d13eb
};
const _0x3e1696 = {
fn: "moonbox_queryActiveTaskList",
method: "post",
url: "https://10010.woread.com.cn/ng_woread_service/rest/activity423/receiveActiveTask",
json: _0x1abd0a
};
let {
result: _0x4cc772
} = await this.woread_api(_0x3e1696),
_0x45290e = appName.get(_0x4cc772, "code", -1);
if (_0x45290e == "0000") {
this.moonbox_task_record[_0x3180c7] = true;
this.log("领取阅光宝盒任务[" + _0x3180c7 + "]成功");
} else {
let _0x4cc9d9 = _0x4cc772?.["message"] || "";
this.log("领取阅光宝盒任务[" + _0x3180c7 + "]失败[" + _0x45290e + "]: " + _0x4cc9d9);
(_0x4cc9d9?.["includes"]("今天无法完成") || _0x4cc9d9?.["includes"]("领光了")) && _0x17d7d6.length > 0 && (await appName.wait(500), await this.moonbox_receiveActiveTask(_0x17d7d6, _0x642063));
}
} catch (_0x2fbd0d) {
console.log(_0x2fbd0d);
}
}
async moonbox_queryReadStatus(_0x27c1b2 = {}) {
try {
let _0x4dd0d9 = {
activeIndex: moonbox_activeId,
...this.get_woread_param()
},
_0x3f59e7 = this.encode_woread(_0x4dd0d9);
const _0x2456fd = {
sign: _0x3f59e7
};
const _0x4596d4 = {
fn: "moonbox_queryReadStatus",
method: "post",
url: "https://10010.woread.com.cn/ng_woread_service/rest/activity423/queryReadStatus",
json: _0x2456fd
};
let {
result: _0x3fc97e
} = await this.woread_api(_0x4596d4),
_0x479ae3 = appName.get(_0x3fc97e, "code", -1);
if (_0x479ae3 == "0000") {
switch (_0x3fc97e?.["data"]) {
case "2":
{
this.log("阅光宝盒去阅读两分钟抽奖");
this.switch_woread_token(this.woread_m_accesstoken);
const _0x4dd67c = {
readTime: 2
};
await this.woread_m_addReadTime(_0x4dd67c);
this.switch_woread_token(this.woread_accesstoken);
await this.moonbox_drawReadActivePrize();
break;
}
case "3":
{
this.log("阅光宝盒今天已抽奖");
break;
}
case "4":
{
this.log("阅光宝盒今天可以抽奖");
await this.moonbox_drawReadActivePrize();
break;
}
default:
{
this.log("阅光宝盒抽奖状态[" + _0x3fc97e?.["data"] + "]");
break;
}
}
} else {
let _0x9b31af = _0x3fc97e?.["message"] || "";
this.log("查询阅光宝盒抽奖次数失败[" + _0x479ae3 + "]: " + _0x9b31af);
}
} catch (_0x71eb7f) {
console.log(_0x71eb7f);
}
}
async moonbox_drawReadActivePrize(_0x56938e = {}) {
try {
let _0x3eabf6 = {
activeIndex: moonbox_activeId,
...this.get_woread_param()
},
_0x3ad9f4 = this.encode_woread(_0x3eabf6);
const _0xe79885 = {
sign: _0x3ad9f4
};
const _0x2ff4df = {
fn: "moonbox_drawReadActivePrize",
method: "post",
url: "https://10010.woread.com.cn/ng_woread_service/rest/activity423/drawReadActivePrize",
json: _0xe79885
};
let {
result: _0x1633e7
} = await this.woread_api(_0x2ff4df),
_0x27c470 = appName.get(_0x1633e7, "code", -1);
if (_0x27c470 == "0000") {
const _0x4d8266 = {
notify: true
};
this.log("阅光宝盒抽奖: " + (_0x1633e7?.["data"]?.["prizedesc"] || JSON.stringify(_0x1633e7)), _0x4d8266);
} else {
let _0x55fb06 = _0x1633e7?.["message"] || "";
this.log("阅光宝盒抽奖失败[" + _0x27c470 + "]: " + _0x55fb06);
}
} catch (_0xf0a009) {
console.log(_0xf0a009);
}
}
async moonbox_m_queryActiveInfo(_0x2f8e7f = {}) {
try {
let _0x14f205 = this.get_woread_m_param(),
_0x121f46 = this.encode_woread(_0x14f205, someConstant);
const _0x45f3ae = {
sign: _0x121f46
};
const _0x59055e = {
fn: "moonbox_m_queryActiveInfo",
method: "post",
url: "https://m.woread.com.cn/api/union/activity423/queryActiveInfo",
json: _0x45f3ae
};
let {
result: _0x425b85
} = await this.woread_api(_0x59055e),
_0x40ba28 = appName.get(_0x425b85, "code", -1);
if (_0x40ba28 == "0000") {
let {
activeId: _0x3f90b8,
activeName: _0x2a7af0
} = _0x425b85?.["data"];
moonbox_activeId = _0x3f90b8;
} else {
let _0x2087f5 = _0x425b85?.["message"] || "";
this.log("阅光宝盒查询活动失败[" + _0x40ba28 + "]: " + _0x2087f5);
}
} catch (_0xfd1d67) {
console.log(_0xfd1d67);
}
}
async moonbox_m_queryCurTaskStatus(_0xcef68f = {}) {
try {
let _0x5e3f1e = {
activeIndex: moonbox_activeId,
...this.get_woread_m_param()
},
_0x7bc91f = this.encode_woread(_0x5e3f1e, someConstant);
const _0x509ba5 = {
sign: _0x7bc91f
};
const _0x439dbd = {
fn: "moonbox_m_queryCurTaskStatus",
method: "post",
url: "https://m.woread.com.cn/api/union/activity423/queryCurTaskStatus",
json: _0x509ba5
};
let {
result: _0x51e7c5
} = await this.woread_api(_0x439dbd),
_0x3e8bcf = appName.get(_0x51e7c5, "code", -1);
if (_0x3e8bcf == "0000") {
for (let _0xe83310 of _0x51e7c5?.["data"] || []) {
let {
taskName: _0x4d3802,
currentValue: _0x58b1af,
taskValue: _0x54fad8
} = _0xe83310?.["taskDetail"];
switch (_0xe83310.taskStatus) {
case 0:
{
this.moonbox_task_record[_0x4d3802] = true;
this.log("阅光宝盒[" + _0x4d3802 + "]进度: " + parseInt(_0x58b1af) + "/" + _0x54fad8 + "分钟");
break;
}
case 2:
{
await this.moonbox_m_completeActiveTask(_0xe83310);
}
case 1:
{
this.moonbox_task_record[_0x4d3802] = false;
if (!this.moonbox_notified.includes(_0x4d3802)) {
this.moonbox_notified.push(_0x4d3802);
const _0x14eeaa = {
notify: true
};
this.log("阅光宝盒任务[" + _0x4d3802 + "]已完成", _0x14eeaa);
}
break;
}
}
}
} else {
let _0x4b5302 = _0x51e7c5?.["message"] || "";
_0x4b5302?.["includes"]("未领取") && !_0xcef68f.activate_retry && (await this.moonbox_queryActiveTaskList()) ? (_0xcef68f.activate_retry = true, await this.moonbox_m_queryCurTaskStatus(_0xcef68f)) : this.log("阅光宝盒查询任务状态失败[" + _0x3e8bcf + "]: " + _0x4b5302);
}
} catch (_0x2b3c91) {
console.log(_0x2b3c91);
}
}
async moonbox_m_completeActiveTask(_0x3a9ed6, _0x14d7fc = {}) {
try {
let _0x4feba7 = {
taskId: _0x3a9ed6.id,
...this.get_woread_m_param()
},
_0x3be902 = this.encode_woread(_0x4feba7, someConstant);
const _0x304a2d = {
sign: _0x3be902
};
const _0x3f6790 = {
fn: "moonbox_m_completeActiveTask",
method: "post",
url: "https://m.woread.com.cn/api/union/activity423/completeActiveTask",
json: _0x304a2d
};
let {
result: _0x27b401
} = await this.woread_api(_0x3f6790),
_0x1b57e3 = appName.get(_0x27b401, "code", -1);
if (_0x1b57e3 == "0000") {
const _0x1dd73a = {
notify: true
};
this.log("阅光宝盒[" + _0x27b401?.["data"]?.["taskDetail"]?.["taskName"] + "]领取奖励成功: " + _0x27b401?.["data"]?.["exchangeResult"]?.["materialGroupInfo"]?.["groupName"], _0x1dd73a);
} else {
let _0x3a226a = _0x27b401?.["message"] || "";
this.log("阅光宝盒[" + _0x3a9ed6?.["taskDetail"]?.["taskName"] + "]领取奖励失败[" + _0x1b57e3 + "]: " + _0x3a226a);
}
} catch (_0x5f2f11) {
console.log(_0x5f2f11);
}
}
async moonbox_m_queryActiveTaskList(_0x165565 = {}) {
try {
let _0x3779e6 = {
activeIndex: moonbox_activeId,
...this.get_woread_m_param()
},
_0x5ec19c = this.encode_woread(_0x3779e6, someConstant);
const _0x34cd3e = {
sign: _0x5ec19c
};
const _0x3025ab = {
fn: "moonbox_m_queryActiveTaskList",
method: "post",
url: "https://m.woread.com.cn/api/union/activity423/queryActiveTaskList",
json: _0x34cd3e
};
let {
result: _0x591b1d
} = await this.woread_api(_0x3025ab),
_0x112619 = appName.get(_0x591b1d, "code", -1);
if (_0x112619 == "0000") {
let _0x1a7988 = _0x591b1d?.["data"]?.["sort"](function (_0x533bfe, _0x3cbfac) {
let _0x1619db = parseInt(_0x3cbfac.taskDetail.taskValue),
_0x5d17d1 = parseInt(_0x533bfe.taskDetail.taskValue);
return _0x1619db - _0x5d17d1;
}),
_0x590d73 = _0x1a7988.filter(_0xa65315 => _0xa65315.maxNum - _0xa65315.receiveNum > 0 && _0xa65315.taskDetail.materialGroup.groupName.includes("红包"));
_0x590d73?.["length"] ? await this.moonbox_m_receiveActiveTask(_0x590d73) : this.log("没有可领取的阅光宝盒红包任务了");
} else {
let _0x51d622 = _0x591b1d?.["message"] || "";
this.log("阅光宝盒查询可领取任务失败[" + _0x112619 + "]: " + _0x51d622);
}
} catch (_0x39e415) {
console.log(_0x39e415);
}
}
async moonbox_m_receiveActiveTask(_0x222667, _0x20f0f8 = {}) {
try {
if (!_0x222667.length) {
return;
}
let _0x5013e3 = _0x222667.shift(),
_0x5915e5 = _0x5013e3?.["taskDetail"]?.["taskName"] || "",
_0x499f8f = {
activeId: moonbox_activeId,
taskId: _0x5013e3.secondTaskId,
...this.get_woread_m_param()
},
_0x5a8196 = this.encode_woread(_0x499f8f, someConstant);
const _0x54248e = {
sign: _0x5a8196
};
const _0x41777c = {
fn: "moonbox_m_queryActiveTaskList",
method: "post",
url: "https://m.woread.com.cn/api/union/activity423/receiveActiveTask",
json: _0x54248e
};
let {
result: _0x5b661a
} = await this.woread_api(_0x41777c),
_0x12d65d = appName.get(_0x5b661a, "code", -1);
if (_0x12d65d == "0000") {
this.moonbox_task_record[_0x5915e5] = true;
this.log("领取阅光宝盒任务[" + _0x5915e5 + "]成功");
} else {
let _0x1347e6 = _0x5b661a?.["message"] || "";
this.log("领取阅光宝盒任务[" + _0x5915e5 + "]失败[" + _0x12d65d + "]: " + _0x1347e6);
(_0x1347e6?.["includes"]("今天无法完成") || _0x1347e6?.["includes"]("领光了")) && _0x222667.length > 0 && (await appName.wait(500), await this.moonbox_m_receiveActiveTask(_0x222667, _0x20f0f8));
}
} catch (_0x26b16f) {
console.log(_0x26b16f);
}
}
async moonbox_m_queryReadStatus(_0x2089b8 = {}) {
try {
let _0x5361cf = {
activeIndex: moonbox_activeId,
...this.get_woread_m_param()
},
_0x36b85a = this.encode_woread(_0x5361cf, someConstant);
const _0x1c1d08 = {
sign: _0x36b85a
};
const _0x30f8ca = {
fn: "moonbox_m_queryReadStatus",
method: "post",
url: "https://m.woread.com.cn/api/union/activity423/queryReadStatus",
json: _0x1c1d08
};
let {
result: _0x3ac100
} = await this.woread_api(_0x30f8ca),
_0x446cf9 = appName.get(_0x3ac100, "code", -1);
if (_0x446cf9 == "0000") {
switch (_0x3ac100?.["message"]) {
case "2":
{
this.log("阅光宝盒去阅读两分钟抽奖");
const _0x177649 = {
readTime: 2
};
await this.woread_m_addReadTime(_0x177649);
await this.moonbox_m_drawReadActivePrize();
break;
}
case "3":
{
this.log("阅光宝盒今天已抽奖");
break;
}
case "4":
{
this.log("阅光宝盒今天可以抽奖");
await this.moonbox_m_drawReadActivePrize();
break;
}
default:
{
this.log("阅光宝盒抽奖状态[" + _0x3ac100?.["data"] + "]");
break;
}
}
} else {
let _0x3e13a2 = _0x3ac100?.["message"] || "";
this.log("查询阅光宝盒抽奖次数失败[" + _0x446cf9 + "]: " + _0x3e13a2);
}
} catch (_0x370229) {
console.log(_0x370229);
}
}
async moonbox_m_drawReadActivePrize(_0x577cf6 = {}) {
try {
let _0x48a5f2 = {
activeIndex: moonbox_activeId,
...this.get_woread_m_param()
},
_0x52e161 = this.encode_woread(_0x48a5f2, someConstant);
const _0x815396 = {
sign: _0x52e161
};
const _0x14a91e = {
fn: "moonbox_m_drawReadActivePrize",
method: "post",
url: "https://m.woread.com.cn/api/union/activity423/drawReadActivePrize",
json: _0x815396
};
let {
result: _0x13c8d4
} = await this.woread_api(_0x14a91e),
_0x3b1c56 = appName.get(_0x13c8d4, "code", -1);
if (_0x3b1c56 == "0000") {
const _0x75d6a5 = {
notify: true
};
this.log("阅光宝盒抽奖: " + (_0x13c8d4?.["data"]?.["prizedesc"] || JSON.stringify(_0x13c8d4)), _0x75d6a5);
} else {
let _0x1d2f3b = _0x13c8d4?.["message"] || "";
this.log("阅光宝盒抽奖失败[" + _0x3b1c56 + "]: " + _0x1d2f3b);
}
} catch (_0x2e18c9) {
console.log(_0x2e18c9);
}
}
async ltyp_login(_0x1ce474, _0x483381 = {}) {
try {
const _0x2b5783 = {
"client-Id": client_Id,
accessToken: ""
};
const _0x146bcb = {
clientId: client_Id,
ticket: _0x1ce474
};
let _0x4efd51 = {
fn: "ltyp_login",
method: "post",
url: "https://panservice.mail.wo.cn/wohome/dispatcher",
headers: _0x2b5783,
json: {
header: this.get_ltyp_sign_header("HandheldHallAutoLogin"),
body: _0x146bcb
}
},
{
result: _0x30e605
} = await this.request(_0x4efd51),
_0x4d6db0 = appName.get(_0x30e605, "STATUS", -1);
if (_0x4d6db0 == 200) {
this.ltyp_token = _0x30e605?.["RSP"]?.["DATA"]?.["token"];
for (let _0x27bfeb of ltyp_lottery) {
await this.ltyp_incentiveTimes(_0x27bfeb);
await this.ltyp_lottery(_0x27bfeb);
}
} else {
let _0x13a7ba = _0x30e605?.["msg"] || "";
this.log("联通云盘登录失败[" + _0x4d6db0 + "]: " + _0x13a7ba);
}
} catch (_0x505ae6) {
console.log(_0x505ae6);
}
}
async ltyp_incentiveTimes(_0x4b3a88, _0x26cec8 = {}) {
try {
const _0x1029d2 = {
"client-Id": client_Id,
"Access-Token": this.ltyp_token
};
const _0xc10a38 = {
fn: "ltyp_incentiveTimes",
method: "get",
url: "https://panservice.mail.wo.cn/activity/v1/incentiveTimes",
headers: _0x1029d2,
searchParams: {}
};
_0xc10a38.searchParams.bizKey = "incentiveTimesPipeline";
_0xc10a38.searchParams.activityId = _0x4b3a88;
let {
result: _0x117383
} = await this.request(_0xc10a38),
_0x334590 = appName.get(_0x117383?.["meta"], "code", -1);
if (_0x334590 == 0) {
let {
isIncentiveTask = 0,
taskType = 0,
incentiveTimeTotal = 0,
incentiveTimeDone = 0
} = _0x117383?.["result"];
if (isIncentiveTask) {
for (let _0x1e30b1 = incentiveTimeDone; _0x1e30b1 < incentiveTimeTotal; _0x1e30b1++) {
await this.ltyp_incentiveTask(_0x4b3a88);
}
}
} else {
let _0x17b321 = _0x117383?.["meta"]?.["message"] || "";
this.log("联通云盘查询任务失败[" + _0x334590 + "]: " + _0x17b321);
}
} catch (_0x54a602) {
console.log(_0x54a602);
}
}
async ltyp_incentiveTask(_0x3ffa2a, _0x291739 = {}) {
try {
const _0x4423a2 = {
"client-Id": client_Id,
"Access-Token": this.ltyp_token
};
const _0x5d1e51 = {
activityId: _0x3ffa2a
};
const _0x58fc09 = {
bizKey: "incentiveTaskPipeline",
bizObject: _0x5d1e51
};
const _0x959e18 = {
fn: "ltyp_incentiveTask",
method: "post",
url: "https://panservice.mail.wo.cn/activity/v1/incentiveTask",
headers: _0x4423a2,
json: _0x58fc09
};
let {
result: _0x4e3742
} = await this.request(_0x959e18),
_0x331ab9 = appName.get(_0x4e3742?.["meta"], "code", -1);
if (_0x331ab9 == 0) {
let {
incentiveStatus = 0,
incentiveMessage = ""
} = _0x4e3742?.["result"];
incentiveStatus == 1 ? this.log("联通云盘完成任务成功") : this.log("联通云盘完成任务失败[" + incentiveStatus + "]: " + incentiveMessage);
} else {
let _0x172131 = _0x4e3742?.["meta"]?.["message"] || "";
this.log("联通云盘完成任务错误[" + _0x331ab9 + "]: " + _0x172131);
}
} catch (_0x47d039) {
console.log(_0x47d039);
}
}
async ltyp_lottery_times(_0x5644fa, _0x42508f = {}) {
try {
const _0xe7632d = {
"client-Id": client_Id,
token: this.ltyp_token
};
const _0x314980 = {
activityId: _0x5644fa
};
const _0x8e464d = {
fn: "ltyp_lottery_times",
method: "get",
url: "https://panservice.mail.wo.cn/activity/v1/times",
headers: _0xe7632d,
searchParams: _0x314980
};
let {
result: _0x2138c5
} = await this.request(_0x8e464d),
_0x5ede21 = appName.get(_0x2138c5, "RSP_CODE", -1);
if (_0x5ede21 == 0) {
let {
times = 0
} = _0x2138c5?.["DATA"];
this.log("联通云盘可以抽奖" + times + "次");
while (times-- > 0) {
await appName.wait(1000);
await this.ltyp_lottery(_0x5644fa);
}
} else {
let _0x54bc65 = _0x2138c5?.["RSP_DESC"] || "";
this.log("联通云盘查询抽奖次数失败[" + _0x5ede21 + "]: " + _0x54bc65);
}
} catch (_0xdeafa3) {
console.log(_0xdeafa3);
}
}
async ltyp_lottery(_0x3f86e4, _0x2e2814 = {}) {
try {
const _0x46983d = {
"client-Id": client_Id,
"Access-Token": this.ltyp_token
};
const _0x373c74 = {
activityId: _0x3f86e4,
type: 3
};
const _0x474c24 = {
lottery: _0x373c74
};
const _0x4a1127 = {
bizKey: "newLottery",
bizObject: _0x474c24
};
const _0x3a5637 = {
fn: "ltyp_lottery",
method: "post",
url: "https://panservice.mail.wo.cn/wohome/v1/lottery",
headers: _0x46983d,
json: _0x4a1127
};
let {
result: _0x3f8809
} = await this.request(_0x3a5637),
_0x29e0e0 = appName.get(_0x3f8809?.["meta"], "code", -1);
if (_0x29e0e0 == 0) {
let {
prizeName = ""
} = _0x3f8809?.["result"];
if (prizeName) {
const _0x59a8ae = {
notify: true
};
this.log("联通云盘抽奖: " + prizeName, _0x59a8ae);
await this.ltyp_lottery(_0x3f86e4, _0x2e2814);
}
} else {
let _0x2fe581 = _0x3f8809?.["meta"]?.["message"] || "";
this.log("联通云盘抽奖错误[" + _0x29e0e0 + "]: " + _0x2fe581);
}
} catch (_0x6e247d) {
console.log(_0x6e247d);
}
}
async act_517_userAccount(_0x5d111b = {}) {
try {
const _0x52d1fe = {
fn: "act_517_userAccount",
method: "get",
url: "https://activity.10010.com/2024517charges/lottery/userAccount"
};
{
let {
result: _0x12e6e7,
statusCode: _0x24ba47
} = await this.request(appName.copy(_0x52d1fe)),
_0x3f7586 = appName.get(_0x12e6e7, "code", _0x24ba47);
if (_0x3f7586 == "0000") {
await this.act_517_taskList();
} else {
let _0xa39ecd = _0x12e6e7?.["message"] || _0x12e6e7?.["msg"] || "";
this.log("517活动进入主页失败[" + _0x3f7586 + "]: " + _0xa39ecd);
return;
}
}
{
let {
result: _0x2d9fa8,
statusCode: _0x40643e
} = await this.request(appName.copy(_0x52d1fe)),
_0x5caf5e = appName.get(_0x2d9fa8, "code", _0x40643e);
if (_0x5caf5e == "0000") {
let {
chances: _0xb8ead9
} = _0x2d9fa8?.["data"];
this.log("517活动可以抽奖" + _0xb8ead9 + "次");
let _0x4a90fa = false;
while (_0xb8ead9-- > 0) {
if (_0x4a90fa) {
await appName.wait(3000);
}
_0x4a90fa = true;
await this.act_517_lottery();
}
} else {
let _0x401062 = _0x2d9fa8?.["message"] || _0x2d9fa8?.["msg"] || "";
this.log("517活动查询抽奖次数失败[" + _0x5caf5e + "]: " + _0x401062);
}
}
{
let {
result: _0x112b84,
statusCode: _0x3d9692
} = await this.request(appName.copy(_0x52d1fe)),
_0x164969 = appName.get(_0x112b84, "code", _0x3d9692);
if (_0x164969 == "0000") {
let {
amount: _0x1053c0,
targetAmount: _0x248ecd
} = _0x112b84?.["data"];
const _0x3dbd45 = {
notify: true
};
this.log("517活动现金进度: " + _0x1053c0 + "/" + _0x248ecd, _0x3dbd45);
} else {
let _0x53c12d = _0x112b84?.["message"] || _0x112b84?.["msg"] || "";
this.log("517活动查询进度失败[" + _0x164969 + "]: " + _0x53c12d);
}
}
} catch (_0x55b6a1) {
console.log(_0x55b6a1);
}
}
async act_517_bind(_0x3ec228, _0x281097 = {}) {
try {
const _0x54d111 = {
fn: "act_517_bind",
method: "post",
url: "https://activity.10010.com/2024517charges/openWindows/bind",
json: {},
valid_code: [401]
};
_0x54d111.json.shareCode = _0x3ec228;
_0x54d111.json.channel = "countersign";
let {
result: _0x5b7fc4
} = await this.request(_0x54d111);
} catch (_0x500ea5) {
console.log(_0x500ea5);
}
}
async act_517_lottery(_0x108752 = {}) {
try {
const _0x3b78e1 = {
fn: "act_517_lottery",
method: "get",
url: "https://activity.10010.com/2024517charges/lottery/lottery"
};
let {
result: _0x4124a9,
statusCode: _0x2962e5
} = await this.request(_0x3b78e1),
_0x3d0976 = appName.get(_0x4124a9, "code", _0x2962e5);
if (_0x3d0976 == "0000") {
_0x4124a9?.["data"]?.["uuid"] ? (await appName.wait(2000), await this.act_517_winningRecord(_0x4124a9.data.uuid)) : this.log("517活动抽奖失败, 没有返回uuid");
} else {
let _0x52341d = _0x4124a9?.["message"] || _0x4124a9?.["msg"] || "";
this.log("517活动抽奖失败[" + _0x3d0976 + "]: " + _0x52341d);
}
} catch (_0x162e6a) {
console.log(_0x162e6a);
}
}
async act_517_winningRecord(_0x30fba9, _0x228991 = {}) {
try {
const _0x55e850 = {
requestId: _0x30fba9
};
const _0x4c9db5 = {
fn: "act_517_winningRecord",
method: "get",
url: "https://activity.10010.com/2024517charges/lottery/winningRecord",
searchParams: _0x55e850
};
let {
result: _0x171769,
statusCode: _0x4aedd2
} = await this.request(_0x4c9db5),
_0x57336e = appName.get(_0x171769, "code", _0x4aedd2);
if (_0x57336e == "0000") {
if (_0x171769?.["data"]?.["isWin"] === "1") {
let {
prizeAmount: _0x11e55c,
prizeList: _0x175f28,
afterAmount: _0x493574,
targetAmount: _0x2e20be,
showAmount = "0"
} = _0x171769?.["data"],
_0x48f549 = (_0x175f28 || []).filter(_0x5a6286 => _0x5a6286.prizeName).map(_0x2807d7 => _0x2807d7.prizeName).join(", ") || "";
const _0x208a94 = {
notify: true
};
if (_0x48f549) {
this.log("517活动抽奖: " + _0x48f549, _0x208a94);
}
if (showAmount === "1") {
this.log("517活动抽奖现金进度: +" + _0x11e55c + " (" + _0x493574 + "/" + _0x2e20be + ")");
}
} else {
this.log("517活动抽奖: 空气");
}
} else {
let _0xb510ea = _0x171769?.["message"] || _0x171769?.["msg"] || "";
this.log("查询517活动抽奖结果失败[" + _0x57336e + "]: " + _0xb510ea);
}
} catch (_0x128879) {
console.log(_0x128879);
}
}
async act_517_taskList(_0x4fe859 = {}) {
try {
const _0x1297f2 = {
fn: "act_517_taskList",
method: "get",
url: "https://activity.10010.com/2024517charges/dotask/taskList"
};
let {
result: _0x4ea832,
statusCode: _0x3a5db6
} = await this.request(_0x1297f2),
_0x120b88 = appName.get(_0x4ea832, "code", _0x3a5db6);
if (_0x120b88 == "0000") {
let _0x442045 = _0x4ea832?.["data"]?.["taskList"] || [];
for (let _0x10da9b of _0x442045) {
let {
completeNum = 0,
maxNum: _0x411a82,
isComplete: _0x3bded4,
taskType: _0x11ea96
} = _0x10da9b;
if (_0x3bded4) {
continue;
}
if (_0x11ea96 == "5") {
continue;
}
completeNum = parseInt(completeNum);
_0x411a82 = parseInt(_0x411a82);
for (let _0x3fa506 = completeNum; _0x3fa506 < _0x411a82; _0x3fa506++) {
await this.act_517_completeTask(_0x10da9b);
}
}
} else {
let _0x215aee = _0x4ea832?.["message"] || _0x4ea832?.["msg"] || "";
this.log("查询517活动抽奖结果失败[" + _0x120b88 + "]: " + _0x215aee);
}
} catch (_0x45301a) {
console.log(_0x45301a);
}
}
async act_517_completeTask(_0x5c02d6, _0x33c90f = {}) {
try {
let _0x50635b = _0x5c02d6.title;
const _0x20a5f8 = {
taskId: _0x5c02d6.taskId
};
const _0x3c3d1a = {
fn: "act_517_completeTask",
method: "get",
url: "https://activity.10010.com/2024517charges/dotask/completeTask",
searchParams: _0x20a5f8
};
let {
result: _0x2c1631,
statusCode: _0x269980
} = await this.request(_0x3c3d1a),
_0x3c92b5 = appName.get(_0x2c1631, "code", _0x269980);
if (_0x3c92b5 == "0000") {
if (_0x2c1631?.["data"]) {
let {
num: _0x22c1df,
title: _0x342214
} = _0x2c1631.data;
this.log("完成任务[" + _0x342214 + "]成功: " + _0x22c1df + "次抽奖机会");
} else {
this.log("完成任务[" + _0x50635b + "]失败没有获得抽奖机会");
}
} else {
let _0x140a16 = _0x2c1631?.["message"] || _0x2c1631?.["msg"] || "";
this.log("完成任务[" + _0x50635b + "]失败[" + _0x3c92b5 + "]: " + _0x140a16);
}
} catch (_0x316430) {
console.log(_0x316430);
}
}
get_wocare_body(_0x4d6de5, _0x2dbc6d = {}) {
const _0x1771be = appName.time("yyyyMMddhhmmssS"),
_0x1604c8 = Buffer.from(JSON.stringify(_0x2dbc6d)).toString("base64");
let _0x40e43b = {
version: minRetries,
apiCode: _0x4d6de5,
channelId: anotherApiKey,
transactionId: _0x1771be + appName.randomString(6, numbers),
timeStamp: _0x1771be,
messageContent: _0x1604c8
},
_0x38d082 = [];
Object.keys(_0x40e43b).sort().forEach(_0x430b5e => {
_0x38d082.push(_0x430b5e + "=" + _0x40e43b[_0x430b5e]);
});
_0x38d082.push("sign=" + anotherEncryptionKey);
_0x40e43b.sign = cryptoJS.MD5(_0x38d082.join("&")).toString();
return _0x40e43b;
}
async wocare_api(_0x5c2ce0, _0x20488d = {}) {
let _0x4c8f7b = this.get_wocare_body(_0x5c2ce0, _0x20488d);
const _0x334f84 = {
fn: "wocare_" + _0x5c2ce0,
method: "post",
url: "https://wocare.unisk.cn/api/v1/" + _0x5c2ce0,
form: _0x4c8f7b
};
let _0x1c081d = await this.request(_0x334f84);
if (_0x1c081d?.["result"]?.["messageContent"]) {
try {
let _0x16bed8 = JSON.parse(Buffer.from(_0x1c081d.result.messageContent, "base64").toString());
_0x1c081d.result.data = _0x16bed8?.["data"] || _0x16bed8;
if (_0x16bed8?.["resultMsg"]) {
_0x1c081d.result.resultMsg = _0x16bed8.resultMsg;
}
} catch (_0x33899f) {
this.log("解析联通祝福返回失败:");
console.log(_0x33899f);
}
}
return _0x1c081d;
}
async wocare_getToken(_0x5d6595, _0x338375 = {}) {
let _0xe03d23 = false;
try {
let _0x5a4ebd = {
fn: "wocare_getToken",
method: "get",
url: "https://wocare.unisk.cn/mbh/getToken",
searchParams: {
channelType: serviceLife,
type: "02",
ticket: _0x5d6595,
version: appVersion,
timestamp: appName.time("yyyyMMddhhmmssS"),
desmobile: this.mobile,
num: 0,
postage: appName.randomString(32),
homePage: "home",
duanlianjieabc: "qAz2m",
userNumber: this.mobile
}
},
{
headers: _0x4a51b5,
statusCode: _0x571bc4
} = await this.request(_0x5a4ebd);
if (_0x571bc4 == 302) {
if (_0x4a51b5?.["location"]) {
let _0x32c3c4 = new URL(_0x4a51b5.location),
_0x4aa2d9 = _0x32c3c4.searchParams.get("sid");
_0x4aa2d9 ? (this.wocare_sid = _0x4aa2d9, _0xe03d23 = await this.wocare_loginmbh()) : this.log("联通祝福没有获取到sid");
} else {
this.log("联通祝福没有获取到location");
}
} else {
this.log("联通祝福获取sid失败[" + _0x571bc4 + "]");
}
} catch (_0x4a16ba) {
console.log(_0x4a16ba);
} finally {
return _0xe03d23;
}
}
async wocare_loginmbh(_0x11ffd4 = {}) {
let _0x4f6412 = false;
try {
let _0x24493a = "loginmbh";
const _0x1aac9d = {
sid: this.wocare_sid,
channelType: serviceLife,
apiCode: _0x24493a
};
let {
result: _0xca14a,
statusCode: _0x40c778
} = await this.wocare_api(_0x24493a, _0x1aac9d),
_0x43410e = appName.get(_0xca14a, "resultCode", _0x40c778);
if (_0x43410e == "0000") {
_0x4f6412 = true;
let {
token: _0x56ac18
} = _0xca14a?.["data"];
this.wocare_token = _0x56ac18;
} else {
let _0xffa41d = _0xca14a?.["resultMsg"] || _0xca14a?.["resultDesc"] || "";
this.log("联通祝福登录失败[" + _0x43410e + "]: " + _0xffa41d);
}
} catch (_0x1eb84b) {
console.log(_0x1eb84b);
} finally {
return _0x4f6412;
}
}
async wocare_getSpecificityBanner(_0x596f9b = {}) {
try {
let _0x4a6368 = "getSpecificityBanner";
const _0x26cd42 = {
token: this.wocare_token,
apiCode: _0x4a6368
};
let {
result: _0x2a4fc0,
statusCode: _0x29d087
} = await this.wocare_api(_0x4a6368, _0x26cd42),
_0x2c004b = appName.get(_0x2a4fc0, "resultCode", _0x29d087);
if (_0x2c004b == "0000") {
let _0x160328 = _0x2a4fc0?.["data"] || [];
for (let _0x4d923c of _0x160328.filter(_0x3704ef => _0x3704ef.activityStatus === "0" && _0x3704ef.isDeleted === "0")) {
await this.wocare_getDrawTask(_0x4d923c);
await this.wocare_loadInit(_0x4d923c);
}
} else {
let _0x5452d4 = _0x2a4fc0?.["resultMsg"] || _0x2a4fc0?.["resultDesc"] || "";
this.log("联通祝福进入活动失败[" + _0x2c004b + "]: " + _0x5452d4);
}
} catch (_0x597b13) {
console.log(_0x597b13);
}
}
async wocare_loadInit(_0xa9b8ad, _0x455970 = {}) {
try {
let _0x43cea8 = "loadInit";
const _0x4c47b0 = {
token: this.wocare_token,
channelType: serviceLife,
type: _0xa9b8ad.id,
apiCode: _0x43cea8
};
let {
result: _0x32f59b,
statusCode: _0x3c4540
} = await this.wocare_api(_0x43cea8, _0x4c47b0),
_0x5b2835 = appName.get(_0x32f59b, "resultCode", _0x3c4540);
if (_0x5b2835 == "0000") {
let _0x3d1fd0 = _0x32f59b?.["data"],
_0x2870a7 = _0x3d1fd0?.["zActiveModuleGroupId"],
_0x4acf9b = 0;
switch (_0xa9b8ad.id) {
case 2:
{
let _0x143f96 = _0x3d1fd0?.["data"]?.["isPartake"] || 0;
!_0x143f96 && (_0x4acf9b = 1);
break;
}
case 3:
{
_0x4acf9b = parseInt(_0x3d1fd0?.["raffleCountValue"] || 0);
break;
}
case 4:
{
_0x4acf9b = parseInt(_0x3d1fd0?.["mhRaffleCountValue"] || 0);
break;
}
}
while (_0x4acf9b-- > 0) {
await appName.wait(5000);
await this.wocare_luckDraw(_0xa9b8ad, _0x2870a7);
}
} else {
let _0x10d6ec = _0x32f59b?.["resultMsg"] || _0x32f59b?.["resultDesc"] || "";
this.log("联通祝福[" + _0xa9b8ad.name + "]查询活动失败[" + _0x5b2835 + "]: " + _0x10d6ec);
}
} catch (_0x52030a) {
console.log(_0x52030a);
}
}
async wocare_getDrawTask(_0x1fef95, _0xeaa7bc = {}) {
try {
let _0x4e8c52 = "getDrawTask";
const _0x2c3b69 = {
token: this.wocare_token,
channelType: serviceLife,
type: _0x1fef95.id,
apiCode: _0x4e8c52
};
let {
result: _0x38de2a,
statusCode: _0x628a3b
} = await this.wocare_api(_0x4e8c52, _0x2c3b69),
_0x425051 = appName.get(_0x38de2a, "resultCode", _0x628a3b);
if (_0x425051 == "0000") {
let _0x1335c7 = _0x38de2a?.["data"]?.["taskList"] || [];
for (let _0x5019b6 of _0x1335c7.filter(_0x529e83 => _0x529e83.taskStatus == 0)) {
await this.wocare_completeTask(_0x1fef95, _0x5019b6);
}
} else {
let _0x355044 = _0x38de2a?.["resultMsg"] || _0x38de2a?.["resultDesc"] || "";
this.log("联通祝福[" + _0x1fef95.name + "]查询任务失败[" + _0x425051 + "]: " + _0x355044);
}
} catch (_0x14c042) {
console.log(_0x14c042);
}
}
async wocare_completeTask(_0x3f5d92, _0x50e428, _0x360522 = "1", _0x2c48eb = {}) {
try {
let _0x50f9e4 = _0x50e428.title,
_0x4facfd = _0x360522 == "1" ? "领取任务" : "完成任务",
_0x377c39 = "completeTask";
const _0x303bcd = {
token: this.wocare_token,
channelType: serviceLife,
task: _0x50e428.id,
taskStep: _0x360522,
type: _0x3f5d92.id,
apiCode: _0x377c39
};
let {
result: _0x2cc63e,
statusCode: _0x184c09
} = await this.wocare_api(_0x377c39, _0x303bcd),
_0xa787a0 = appName.get(_0x2cc63e, "resultCode", _0x184c09);
if (_0xa787a0 == "0000") {
this.log(_0x4facfd + "[" + _0x50f9e4 + "]成功");
_0x360522 == "1" && (await this.wocare_completeTask(_0x3f5d92, _0x50e428, "4"));
} else {
let _0x2e4c1b = _0x2cc63e?.["resultMsg"] || _0x2cc63e?.["resultDesc"] || "";
this.log("联通祝福[" + _0x3f5d92.name + "]" + _0x4facfd + "[" + _0x50f9e4 + "]失败[" + _0xa787a0 + "]: " + _0x2e4c1b);
}
} catch (_0x29872e) {
console.log(_0x29872e);
}
}
async wocare_luckDraw(_0x103614, _0x53be22, _0x51513d = {}) {
try {
let _0x62ee5f = "luckDraw";
const _0x5621f1 = {
token: this.wocare_token,
channelType: serviceLife,
zActiveModuleGroupId: _0x53be22,
type: _0x103614.id,
apiCode: _0x62ee5f
};
let {
result: _0x427eea,
statusCode: _0x26e062
} = await this.wocare_api(_0x62ee5f, _0x5621f1),
_0x1d084a = appName.get(_0x427eea, "resultCode", _0x26e062);
if (_0x1d084a == "0000") {
let _0x1a2341 = appName.get(_0x427eea?.["data"], "resultCode", -1);
if (_0x1a2341 == "0000") {
let {
prizeName: _0x50e0e5,
prizeDesc: _0x4e8140
} = _0x427eea?.["data"]?.["data"]?.["prize"];
this.log("联通祝福[" + _0x103614.name + "]抽奖: " + _0x50e0e5 + "[" + _0x4e8140 + "]");
} else {
let _0x2529ec = _0x427eea?.["resultMsg"] || _0x427eea?.["resultDesc"] || "";
this.log("联通祝福[" + _0x103614.name + "]抽奖失败[" + _0x1a2341 + "]: " + _0x2529ec);
}
} else {
let _0x575c51 = _0x427eea?.["resultMsg"] || _0x427eea?.["resultDesc"] || "";
this.log("联通祝福[" + _0x103614.name + "]抽奖错误[" + _0x1d084a + "]: " + _0x575c51);
}
} catch (_0x43e414) {
console.log(_0x43e414);
}
}
async card_618_authCheck(_0xeeb2f2 = {}) {
try {
let _0x4aff88 = {
fn: "card_618_authCheck",
method: "post",
url: "https://epay.10010.com/ps-pafs-auth-front/v1/auth/check",
headers: {
bizchannelinfo: this.get_bizchannelinfo()
}
},
{
result: _0x3f5ce1
} = await this.request(_0x4aff88),
_0x52a304 = appName.get(_0x3f5ce1, "code", -1);
if (_0x52a304 == "0000") {
let {
mobile: _0x5ece0b,
sessionId: _0x15409b,
tokenId: _0x5d8026,
userId: _0x195001
} = _0x3f5ce1?.["data"]?.["authInfo"];
const _0x551929 = {
sessionId: _0x15409b,
tokenId: _0x5d8026,
userId: _0x195001
};
Object.assign(this, _0x551929);
await this.card_618_queryUserCardInfo();
} else {
if (_0x52a304 == "2101000100") {
let _0x5345ac = _0x3f5ce1?.["data"]?.["woauth_login_url"];
await this.card_618_login(_0x5345ac);
} else {
let _0x3f8426 = _0x3f5ce1?.["msgInside"] || _0x3f5ce1?.["msg"] || "";
this.log("618集卡获取tokenId失败[" + _0x52a304 + "]: " + _0x3f8426);
}
}
} catch (_0x120bbb) {
console.log(_0x120bbb);
}
}
async card_618_login(_0x4b5e1f, _0x52f369 = {}) {
try {
let _0x324c93 = appName.time("yyyyMM") + "28ZFR";
_0x4b5e1f += "https://epay.10010.com/ci-mcss-party-web/rainbow/?templateName=" + _0x324c93 + "&bizFrom=225&bizChannelCode=225&channelType=WDQB";
const _0x4370f0 = {
fn: "card_618_login",
method: "get",
url: "https://epay.10010.com/woauth2/login",
searchParams: {}
};
_0x4370f0.searchParams.response_type = "web_token";
_0x4370f0.searchParams.source = "app_sjyyt";
_0x4370f0.searchParams.union_session_id = "";
_0x4370f0.searchParams.device_digest_token_id = this.tokenId_cookie;
_0x4370f0.searchParams.target_client_id = anotherClientId;
_0x4370f0.searchParams.position = null;
_0x4370f0.searchParams.redirect_url = "https://epay.10010.com/ci-mcss-party-web/cardSelection/?activityId=NZJK618CJHD";
_0x4370f0.searchParams.bizFrom = errorCode;
_0x4370f0.searchParams.bizChannelCode = errorNumber;
_0x4370f0.searchParams.channelType = "WDQB";
let {
headers: _0x3466a2,
statusCode: _0xb0793d
} = await this.request(_0x4370f0);
if (_0x3466a2?.["location"]) {
let _0x13496c = new URL(_0x3466a2.location);
this.rptId = _0x13496c.searchParams.get("rptid");
this.rptId ? await this.card_618_authCheck() : this.log("618集卡获取rptid失败");
} else {
this.log("618集卡获取rptid失败[" + _0xb0793d + "]");
}
} catch (_0x624f72) {
console.log(_0x624f72);
}
}
async card_618_queryUserCardInfo(_0x518cd6 = {}) {
try {
const _0x37da94 = {
activityId: "NZJK618CJHD"
};
let _0x3e2ef2 = {
fn: "card_618_queryUserCardInfo",
method: "post",
url: "https://epay.10010.com/ci-mcss-party-front/v1/mouldCard/queryUserCardInfo",
headers: {
bizchannelinfo: this.get_bizchannelinfo(),
authinfo: this.get_epay_authinfo()
},
form: _0x37da94
},
{
result: _0x358e5a
} = await this.request(_0x3e2ef2),
_0x4802a6 = appName.get(_0x358e5a, "code", -1);
if (_0x4802a6 == "0000" && _0x358e5a?.["data"]?.["returnCode"] == 0) {
let {
userRemain = 0,
isFirst = true
} = _0x358e5a?.["data"];
if (isFirst) {
await this.card_618_unifyDraw("首次进入");
}
this.log("618集卡可以抽奖" + userRemain + "次");
while (userRemain-- > 0) {
await this.card_618_unifyDraw("抽奖");
}
} else {
let _0x4ff8ee = _0x358e5a?.["message"] || _0x358e5a?.["msg"] || "";
this.log("618集卡进入主页失败[" + _0x4802a6 + "]: " + _0x4ff8ee);
}
} catch (_0x6371bb) {
console.log(_0x6371bb);
}
}
async card_618_unifyDraw(_0x431f14, _0x15179c = {}) {
try {
let _0x630a5d = {
fn: "card_618_unifyDraw",
method: "post",
url: "https://epay.10010.com/ci-mcss-party-front/v1/mouldCard/unifyDraw",
headers: {
bizchannelinfo: this.get_bizchannelinfo(),
authinfo: this.get_epay_authinfo()
},
form: {
bigActivityId: _0x3484cf.card_618,
activityId: _0x3484cf.card_618 + _0x10ec87[_0x431f14],
bizFrom: errorCode
}
},
{
result: _0xbbc5a6
} = await this.request(_0x630a5d),
_0x2f8420 = appName.get(_0xbbc5a6, "code", -1);
if (_0x2f8420 == "0000" && _0xbbc5a6?.["data"]?.["returnCode"] == 0) {
let _0x46e05e = _0xbbc5a6?.["data"]?.["prizeId"] || "空气",
_0x583237 = _0x1c214d[_0x46e05e] || _0x46e05e;
const _0x22f8e4 = {
notify: true
};
this.log("618集卡[" + _0x431f14 + "]: " + _0x583237, _0x22f8e4);
} else {
let _0xda184 = _0xbbc5a6?.["data"]?.["returnMsg"] || _0xbbc5a6?.["msg"] || "";
this.log("618集卡[" + _0x431f14 + "]失败[" + (_0xbbc5a6?.["data"]?.["returnCode"] || _0x2f8420) + "]: " + _0xda184);
}
} catch (_0x59f330) {
console.log(_0x59f330);
}
}
async sign_task() {
await this.sign_getContinuous();
}
async tempActivity300_task() {
const expireTime = new Date("2025-12-31T23:59:59+08:00").getTime();
if (Date.now() > expireTime) {
this.log("300积分活动已过期,跳过");
return;
}
await this.tempActivity300_queryAndClaim();
await this.tempActivity300_lottery();
}
async tempActivity300_queryAndClaim() {
try {
const acId = "AC20251210144040";
const from = "ZXGS97000018609";
const requestOptions = {
fn: "tempActivity300_query",
method: "post",
url: "https://m.client.10010.com/welfare-mall-front/ninePalaceGrid/queryTaskInfo/v2",
headers: {
"User-Agent": this.userAgent,
"Content-Type": "application/x-www-form-urlencoded",
"Origin": "https://img.client.10010.com",
"Referer": "https://img.client.10010.com/"
},
form: {
params: JSON.stringify({ from: from, acId: acId })
}
};
let { result, statusCode } = await this.request(requestOptions);
let code = appName.get(result, "code", statusCode);
if (code == "0" && result?.status === "success") {
const tasks = result?.resdata?.tasks || [];
for (const task of tasks) {
if (task.isClaimed === 1 && task.isStock === true) {
this.log(`300积分活动: 发现可领取任务 [${task.taskName}]`);
await this.tempActivity300_doTask(acId, from, task.taskId);
} else if (task.isClaimed === 0) {
this.log(`300积分活动: 任务 [${task.taskName}] 已领取过`);
} else {
this.log(`300积分活动: 任务 [${task.taskName}] 状态: isClaimed=${task.isClaimed}, isStock=${task.isStock}`);
}
}
if (tasks.length === 0) {
this.log("300积分活动: 暂无可领取任务");
}
} else {
const msg = result?.msg || "未知错误";
this.log(`300积分活动查询失败[${code}]: ${msg}`);
}
} catch (error) {
this.log(`300积分活动查询异常: ${error.message}`);
}
}
async tempActivity300_doTask(acId, from, taskId) {
try {
const requestOptions = {
fn: "tempActivity300_doTask",
method: "post",
url: "https://m.client.10010.com/welfare-mall-front/ninePalaceGrid/doTaskInfo/v1",
headers: {
"User-Agent": this.userAgent,
"Content-Type": "application/x-www-form-urlencoded",
"Origin": "https://img.client.10010.com",
"Referer": "https://img.client.10010.com/"
},
form: {
params: JSON.stringify({ from: from, acId: acId, taskId: taskId })
}
};
let { result, statusCode } = await this.request(requestOptions);
let code = appName.get(result, "code", statusCode);
if (code == "0" && result?.status === "success") {
this.log("300积分活动: 领取成功!", { notify: true });
} else {
const msg = result?.msg || "未知错误";
this.log(`300积分活动领取失败[${code}]: ${msg}`);
}
} catch (error) {
this.log(`300积分活动领取异常: ${error.message}`);
}
}
async tempActivity300_lottery() {
try {
const acId = "AC20251205165807";
const from = "ZXGS97000018573,ZXGS97000017932";
const imei = "8e556011924f4780998ca4066767f593";
const countOptions = {
fn: "tempActivity300_count",
method: "post",
url: "https://m.client.10010.com/welfare-mall-front/ninePalaceGrid/findLotteryCount/v1",
headers: {
"User-Agent": this.userAgent,
"Content-Type": "application/x-www-form-urlencoded",
"Origin": "https://img.client.10010.com",
"Referer": "https://img.client.10010.com/"
},
form: {
params: JSON.stringify({ from: from, acId: acId })
}
};
let { result, statusCode } = await this.request(countOptions);
let code = appName.get(result, "code", statusCode);
if (code == "0" && result?.status === "success") {
const drawCount = parseInt(result?.resdata?.drawCount || "0");
this.log(`300积分抽奖活动: 可抽奖次数 ${drawCount}`);
if (drawCount > 0) {
for (let i = 0; i < drawCount; i++) {
const reqSeq = appName.randomString(32);
await this.tempActivity300_draw(acId, from, reqSeq, imei);
if (i < drawCount - 1) {
await appName.wait(2000);
}
}
}
} else {
const msg = result?.msg || "未知错误";
this.log(`300积分抽奖查询次数失败[${code}]: ${msg}`);
}
} catch (error) {
this.log(`300积分抽奖查询异常: ${error.message}`);
}
}
async tempActivity300_draw(acId, from, reqSeq, imei) {
try {
const drawOptions = {
fn: "tempActivity300_draw",
method: "post",
url: "https://m.client.10010.com/welfare-mall-front/ninePalaceGrid/luckyDraw/v1",
headers: {
"User-Agent": this.userAgent,
"Content-Type": "application/x-www-form-urlencoded",
"Origin": "https://img.client.10010.com",
"Referer": "https://img.client.10010.com/"
},
form: {
params: JSON.stringify({ from: from, acId: acId, reqSeq: reqSeq, imei: imei })
}
};
let { result: drawResult, statusCode: drawStatus } = await this.request(drawOptions);
let drawCode = appName.get(drawResult, "code", drawStatus);
if (drawCode == "0" && drawResult?.status === "success") {
await appName.wait(500);
await this.tempActivity300_winInfo(acId, from, reqSeq, imei);
} else {
const msg = drawResult?.msg || "未知错误";
this.log(`300积分抽奖失败[${drawCode}]: ${msg}`);
}
} catch (error) {
this.log(`300积分抽奖异常: ${error.message}`);
}
}
async tempActivity300_winInfo(acId, from, reqSeq, imei) {
try {
const winOptions = {
fn: "tempActivity300_winInfo",
method: "post",
url: "https://m.client.10010.com/welfare-mall-front/ninePalaceGrid/findWinInfo/v1",
headers: {
"User-Agent": this.userAgent,
"Content-Type": "application/x-www-form-urlencoded",
"Origin": "https://img.client.10010.com",
"Referer": "https://img.client.10010.com/"
},
form: {
params: JSON.stringify({ from: from, acId: acId, reqSeq: reqSeq, imei: imei })
}
};
let { result, statusCode } = await this.request(winOptions);
let code = appName.get(result, "code", statusCode);
if (code == "0" && result?.status === "success") {
const resdata = result?.resdata;
if (resdata?.isWin) {
this.log(`300积分抽奖中奖: ${resdata.prizeName}`, { notify: true });
} else {
this.log(`300积分抽奖: 未中奖`);
}
} else {
const msg = result?.msg || "未知错误";
this.log(`300积分抽奖查询中奖信息失败[${code}]: ${msg}`);
}
} catch (error) {
this.log(`300积分抽奖查询中奖信息异常: ${error.message}`);
}
}
async tempActivity100_task() {
const expireTime = new Date("2025-12-15T23:59:59+08:00").getTime();
if (Date.now() > expireTime) {
this.log("100积分抽奖活动已过期,跳过");
return;
}
await this.tempActivity100_lottery();
}
async tempActivity100_lottery() {
try {
const acId = "AC20251202153959";
const from = "ZXGS97000018442";
const imei = "8e5560119244f780998ca4066767f593";
const countOptions = {
fn: "tempActivity100_count",
method: "post",
url: "https://m.client.10010.com/welfare-mall-front/ninePalaceGrid/findLotteryCount/v1",
headers: {
"User-Agent": this.userAgent,
"Content-Type": "application/x-www-form-urlencoded",
"Origin": "https://img.client.10010.com",
"Referer": "https://img.client.10010.com/"
},
form: {
params: JSON.stringify({ from: from, acId: acId })
}
};
let { result, statusCode } = await this.request(countOptions);
let code = appName.get(result, "code", statusCode);
if (code == "0" && result?.status === "success") {
const drawCount = parseInt(result?.resdata?.drawCount || "0");
this.log(`100积分抽奖活动: 可抽奖次数 ${drawCount}`);
if (drawCount > 0) {
for (let i = 0; i < drawCount; i++) {
const reqSeq = appName.randomString(32);
await this.tempActivity100_draw(acId, from, reqSeq, imei);
if (i < drawCount - 1) {
await appName.wait(2000);
}
}
}
} else {
const msg = result?.msg || "未知错误";
this.log(`100积分抽奖查询次数失败[${code}]: ${msg}`);
}
} catch (error) {
this.log(`100积分抽奖查询异常: ${error.message}`);
}
}
async tempActivity100_draw(acId, from, reqSeq, imei) {
try {
const drawOptions = {
fn: "tempActivity100_draw",
method: "post",
url: "https://m.client.10010.com/welfare-mall-front/ninePalaceGrid/luckyDraw/v1",
headers: {
"User-Agent": this.userAgent,
"Content-Type": "application/x-www-form-urlencoded",
"Origin": "https://img.client.10010.com",
"Referer": "https://img.client.10010.com/"
},
form: {
params: JSON.stringify({ from: from, acId: acId, reqSeq: reqSeq, imei: imei })
}
};
let { result: drawResult, statusCode: drawStatus } = await this.request(drawOptions);
let drawCode = appName.get(drawResult, "code", drawStatus);
if (drawCode == "0" && drawResult?.status === "success") {
await appName.wait(500);
await this.tempActivity100_winInfo(acId, from, reqSeq, imei);
} else {
const msg = drawResult?.msg || "未知错误";
this.log(`100积分抽奖失败[${drawCode}]: ${msg}`);
}
} catch (error) {
this.log(`100积分抽奖异常: ${error.message}`);
}
}
async tempActivity100_winInfo(acId, from, reqSeq, imei) {
try {
const winOptions = {
fn: "tempActivity100_winInfo",
method: "post",
url: "https://m.client.10010.com/welfare-mall-front/ninePalaceGrid/findWinInfo/v1",
headers: {
"User-Agent": this.userAgent,
"Content-Type": "application/x-www-form-urlencoded",
"Origin": "https://img.client.10010.com",
"Referer": "https://img.client.10010.com/"
},
form: {
params: JSON.stringify({ from: from, acId: acId, reqSeq: reqSeq, imei: imei })
}
};
let { result, statusCode } = await this.request(winOptions);
let code = appName.get(result, "code", statusCode);
if (code == "0" && result?.status === "success") {
const winData = result?.resdata;
if (winData?.isWin) {
this.log(`100积分抽奖中奖: ${winData.prizeName}`, { notify: true });
} else {
this.log("100积分抽奖: 未中奖");
}
} else {
const msg = result?.msg || "未知错误...";
this.log(`100积分抽奖查询中奖信息失败[${code}]: ${msg}`);
}
} catch (error) {
this.log(`100积分抽奖查询中奖异常: ${error.message}`);
}
}
async ltcy_task() {
let _0xe84731 = "https://web.wostore.cn/web/flowGame/index.html?channelId=GAMELTAPP_90006&pushid=99",
{
ticket: _0x73ef67
} = await this.openPlatLineNew(_0xe84731);
if (!_0x73ef67) {
return;
}
await this.game_login(_0x73ef67);
}
async ttlxj_task() {
this.rptId = "";
let _0x4b2989 = "https://epay.10010.com/ci-mps-st-web/?webViewNavIsHidden=webViewNavIsHidden",
{
ticket: _0xfccd3c,
type: _0x5be8ca,
loc: _0x33b6a9
} = await this.openPlatLineNew(_0x4b2989);
if (!_0xfccd3c) {
return;
}
await this.ttlxj_authorize(_0xfccd3c, _0x5be8ca, _0x33b6a9);
}
async epay_28_task() {
this.rptId = "";
let _0x3904ee = new Date().getDate();
if (_0x3904ee >= 26 && _0x3904ee <= 28) {
await this.epay_28_authCheck();
if (appMonth_28_share.length) {
let _0x3c73d8 = appName.randomList(appMonth_28_share);
await this.appMonth_28_bind(_0x3c73d8);
}
await this.appMonth_28_queryChance();
}
}
async draw_28_task() {
let _0x3fc66f = new Date().getDate();
_0x3fc66f == 28 && (await this.draw_28_queryChance());
}
async act_517_task() {
let _0x19e840 = new Date("2024-05-10 00:00:00"),
_0x41d2ad = new Date("2024-06-09 00:00:00"),
_0x2f7f5c = Date.now();
if (_0x2f7f5c > _0x19e840.getTime() && _0x2f7f5c < _0x41d2ad.getTime()) {
if (act_517_share.length) {
let _0x53384d = appName.randomList(act_517_share);
await this.act_517_bind(_0x53384d);
}
await this.act_517_userAccount();
}
}
async card_618_task() {
let _0x2ad5cb = new Date("2024-05-31 00:00:00"),
_0x4ce692 = new Date("2024-06-21 00:00:00"),
_0x1a0657 = Date.now();
_0x1a0657 > _0x2ad5cb.getTime() && _0x1a0657 < _0x4ce692.getTime() && (this.rptId = "", await this.card_618_authCheck());
}
async flmf_task() {
if (this.city.filter(_0x5d152b => _0x5d152b.proCode == "091").length == 0) {
return;
}
let _0x552e7c = "https://weixin.linktech.hk/lv-web/handHall/autoLogin?actcode=welfareCenter",
{
loc: _0x55dcf1
} = await this.openPlatLineNew(_0x552e7c);
if (!_0x55dcf1) {
return;
}
await this.flmf_login(_0x55dcf1);
}
async ltyp_task() {
let _0x1cee90 = "https://panservice.mail.wo.cn/h5/activitymobile/lottery?activityId=WzaR7KkUJSpR+gDh7Fy6mA==&clientid=1001000003&appName=shouting",
{
ticket: _0x318b1b
} = await this.openPlatLineNew(_0x1cee90);
if (!_0x318b1b) {
return;
}
await this.ltyp_login(_0x318b1b);
}
async ltzf_task() {
let _0x2db4d6 = new URL("https://wocare.unisk.cn/mbh/getToken");
_0x2db4d6.searchParams.append("channelType", serviceLife);
_0x2db4d6.searchParams.append("homePage", "home");
_0x2db4d6.searchParams.append("duanlianjieabc", "qAz2m");
let _0x4acf51 = _0x2db4d6.toString(),
{
ticket: _0x588ef9
} = await this.openPlatLineNew(_0x4acf51);
if (!_0x588ef9) {
return;
}
if (!(await this.wocare_getToken(_0x588ef9))) {
return;
}
for (let _0x305ba1 of _0x4376d8) {
await this.wocare_getDrawTask(_0x305ba1);
await this.wocare_loadInit(_0x305ba1);
}
}
async woread_draw_task(_0x10af6a) {
await this.woread_getSeeVideoAddNumber(_0x10af6a);
await this.woread_addDrawTimes(_0x10af6a);
await this.woread_getActivityNumber(_0x10af6a);
}
async woread_task() {
for (let _0x524680 of woread_draw_id) {
await this.woread_draw_task(_0x524680);
}
await this.moonbox_queryReadStatus();
await this.woread_queryTicketAccount();
}
async woread_reading_task() {
this.switch_woread_token(this.woread_m_accesstoken);
// 获取需要处理的任务数量
const getPendingTasksCount = () => Object.values(this.moonbox_task_record).filter(status => status).length;
let pendingTasksCount = getPendingTasksCount();
while (this.need_read_rabbit || pendingTasksCount) {
const readDuration = 2;
await this.woread_m_addReadTime({ readTime: readDuration });
const startTime = Date.now();
if (pendingTasksCount) {
await this.moonbox_m_queryCurTaskStatus();
}
// 更新待处理任务数量
pendingTasksCount = getPendingTasksCount();
if (this.need_read_rabbit) {
await this.rabblit_queryActivityData();
}
const elapsedTime = Date.now() - startTime;
const waitTime = Math.max(0, 125000 - elapsedTime);
if (this.need_read_rabbit || pendingTasksCount) {
if (waitTime > 0) {
this.log("等待2分钟...");
await appName.wait(waitTime);
}
}
}
this.switch_woread_token(this.woread_accesstoken);
}
async userLoginTask() {
if (!(await this.onLine())) {
return;
}
// 执行权益超市登录
await this.marketUnicomLogin();
// 只执行登录,不继续执行后面的代码
return;
/*
if (!(await this.woread_auth())) {
return;
}
if (!(await this.woread_login())) {
return;
}
if (!(await this.woread_m_auth())) {
return;
}
if (!(await this.woread_m_login())) {
return;
}
this.switch_woread_token(this.woread_accesstoken);
if (!moonbox_activeId) {
await this.moonbox_queryActiveInfo();
}
await this.moonbox_queryCurTaskStatus();
*/
}
async userTask() {
appName.log("\n------------------ 账号[" + this.index + "] ------------------");
if (!signDisabled) {
await this.sign_task();
}
await this.ttlxj_task();
// await this.ltyp_task();
// await this.epay_28_task();
// await this.draw_28_task();
// await this.card_618_task();
if (!ltzfDisabled) {
await this.ltzf_task();
}
await this.flmf_task();
// 执行权益超市任务
await this.marketTask();
if (!tempActivity300Disabled) {
await this.tempActivity300_task();
}
if (!tempActivity100Disabled) {
await this.tempActivity100_task();
}
// await this.woread_task();
}
async userTestTask() {
appName.log("\n------------------ 账号[" + this.index + "] ------------------");
await this.ltyp_task();
}
}
!(async () => {
// 如果条件不满足,退出函数
// if (!(await checkCondition())) {
// return;
// }
// 执行初始化函数
await initialize();
// 读取环境变量
appName.read_env(CustomUserService);
// 打印配置状态
appName.log("\n------------------------------------");
appName.log("首页签到设置为: " + (signDisabled ? "不" : "") + "运行");
appName.log("联通祝福设置为: " + (ltzfDisabled ? "不" : "") + "运行");
appName.log("300积分活动设置为: " + (tempActivity300Disabled ? "不" : "") + "运行 (截止2025-12-31)");
appName.log("100积分抽奖设置为: " + (tempActivity100Disabled ? "不" : "") + "运行 (截止2025-12-15)");
appName.log("------------------------------------\n");
// 执行用户登录任务
for (let user of appName.userList) {
await user.userLoginTask();
}
// 执行有效用户的任务
for (let validUser of appName.userList.filter(user => user.valid)) {
await validUser.userTask();
}
// 筛选需要阅读任务的用户
let usersWithReadingTasks = appName.userList.filter(user =>
user.valid &&
user.woread_verifycode &&
(user.need_read_rabbit || Object.values(user.moonbox_task_record).filter(taskCompleted => taskCompleted).length)
);
if (usersWithReadingTasks.length) {
let readingTasks = [];
appName.log("\n============ 开始刷阅读时长 ============");
// 执行阅读任务
for (let user of usersWithReadingTasks) {
readingTasks.push(user.woread_reading_task());
}
await Promise.all(readingTasks);
}
})().catch(error => appName.log(error)).finally(() => appName.exitNow());
async function icheckAuthStatus(retryCount = 0) {
let isSuccess = false;
try {
// 请求配置
const requestOptions = {
fn: "auth",
method: "get",
url: validCodeUrl,
timeout: 20000
};
// 发起请求
let { statusCode, result } = await userServiceInstance.request(requestOptions);
// 如果状态码不是 200,进行重试
if (statusCode !== 200) {
if (retryCount < retryDelay) {
isSuccess = await icheckAuthStatus(retryCount + 1);
}
return isSuccess;
}
// 处理成功的响应
if (result?.code === 0) {
result = JSON.parse(result.data.file.data);
// 处理通用通知
if (result?.commonNotify?.length > 0) {
const notifyOptions = { notify: true };
appName.log(result.commonNotify.join("\n") + "\n", notifyOptions);
}
// 处理通用消息
if (result?.commonMsg?.length > 0) {
appName.log(result.commonMsg.join("\n") + "\n");
}
// 处理项目相关的消息
if (result[projectName]) {
const projectInfo = result[projectName];
if (projectInfo.status === 0) {
if (version >= projectInfo.version) {
isSuccess = true;
appName.log(projectInfo.msg[projectInfo.status]);
appName.log(projectInfo.updateMsg);
appName.log(`当前脚本版本:${version},最新版本:${projectInfo.latestVersion}`);
} else {
appName.log(projectInfo.versionMsg);
}
} else {
appName.log(projectInfo.msg[projectInfo.status]);
}
} else {
appName.log(result.errorMsg);
}
} else {
if (retryCount < retryDelay) {
isSuccess = await icheckAuthStatus(retryCount + 1);
}
}
} catch (error) {
appName.log(error);
} finally {
return isSuccess;
}
}
async function initialize() {
let isInitialized = false;
try {
const requestConfig = {
fn: "getTaskUrl",
method: "get",
url: projectCodeUrl
};
let { statusCode, result } = await userServiceInstance.request(requestConfig);
if (statusCode !== 200) {
return Promise.resolve();
}
if (result?.code === 0) {
result = JSON.parse(result.data.file.data);
ltypLottery = result?.ltyp_lottery || ltypLottery;
woreadDrawId = result?.woread_draw_id || woreadDrawId;
appMonth28Share = result?.appMonth_28_share || appMonth28Share;
act517Share = result?.act_517_share || act517Share;
isInitialized = true;
}
} catch (error) {
appName.log(error);
} finally {
return isInitialized;
}
}
function createLogger(UserClass) {
return new class {
constructor(name) {
this.name = name;
this.startTime = Date.now();
this.log("[" + this.name + "]开始运行\n", { time: true });
this.notifyStr = [];
this.notifyFlag = true;
this.userIdx = 0;
this.userList = [];
this.userCount = 0;
this.default_timestamp_len = 13;
this.default_wait_interval = 1000;
this.default_wait_limit = 3600000;
this.default_wait_ahead = 0;
}
log(message, options = {}) {
const defaultOptions = { console: true, ...options };
if (defaultOptions.time) {
let format = defaultOptions.fmt || "hh:mm:ss";
message = "[" + this.time(format) + "]" + message;
}
if (defaultOptions.notify) {
this.notifyStr.push(message);
}
if (defaultOptions.console) {
console.log(message);
}
}
get(object, key, defaultValue = "") {
return object?.hasOwnProperty(key) ? object[key] : defaultValue;
}
pop(object, key, defaultValue = "") {
if (object?.hasOwnProperty(key)) {
const value = object[key];
delete object[key];
return value;
}
return defaultValue;
}
copy(source) {
return { ...source };
}
read_env(UserClass) {
// const envValues = cookieVars.map(varName => process.env[varName]);
const envValues = cookieVars.map(varName => process.env[varName] || "");
for (const envValue of envValues.filter(value => !!value)) {
const delimitersFound = delimiters.filter(delimiter => envValue.includes(delimiter));
const delimiter = delimitersFound.length > 0 ? delimitersFound[0] : delimiters[0];
for (const userInfo of envValue.split(delimiter).filter(value => !!value)) {
this.userList.push(new UserClass(userInfo));
}
}
this.userCount = this.userList.length;
if (!this.userCount) {
this.log("未找到变量,请检查变量" + cookieVars.map(varName => "[" + varName + "]").join("或"), { notify: true });
return false;
}
this.log("共找到" + this.userCount + "个账号");
return true;
}
async threads(methodName, context, options = {}) {
while (context.idx < appName.userList.length) {
const user = appName.userList[context.idx++];
if (user.valid) {
await user[methodName](options);
}
}
}
async threadTask(methodName, count) {
const tasks = [];
const context = { idx: 0 };
while (count--) {
tasks.push(this.threads(methodName, context));
}
await Promise.all(tasks);
}
time(format, date = null) {
const currentDate = date ? new Date(date) : new Date();
const timeElements = {
"M+": currentDate.getMonth() + 1,
"d+": currentDate.getDate(),
"h+": currentDate.getHours(),
"m+": currentDate.getMinutes(),
"s+": currentDate.getSeconds(),
"q+": Math.floor((currentDate.getMonth() + 3) / 3),
S: this.padStr(currentDate.getMilliseconds(), 3)
};
if (/(y+)/.test(format)) {
format = format.replace(RegExp.$1, (currentDate.getFullYear() + "").substr(4 - RegExp.$1.length));
}
for (const key in timeElements) {
if (new RegExp("(" + key + ")").test(format)) {
format = format.replace(RegExp.$1, RegExp.$1.length === 1 ? timeElements[key] : ("00" + timeElements[key]).substr(("" + timeElements[key]).length));
}
}
return format;
}
async showmsg() {
if (this.notifyFlag && this.notifyStr.length) {
const notify = require("./sendNotify");
this.log("\n============== 推送 ==============");
await notify.sendNotify(this.name, this.notifyStr.join("\n"));
}
}
padStr(value, length, options = {}) {
const padding = options.padding || "0";
const mode = options.mode || "l";
let strValue = String(value);
const paddingLength = length > strValue.length ? length - strValue.length : 0;
const paddingStr = padding.repeat(paddingLength);
return mode === "r" ? strValue + paddingStr : paddingStr + strValue;
}
json2str(json, delimiter, encode = false) {
return Object.keys(json)
.sort()
.map(key => {
let value = json[key];
return `${key}=${encode && value ? encodeURIComponent(value) : value}`;
})
.join(delimiter);
}
str2json(str, decode = false) {
const json = {};
str.split("&").forEach(pair => {
if (pair) {
const [key, value] = pair.split("=");
json[key] = decode ? decodeURIComponent(value) : value;
}
});
return json;
}
randomPattern(pattern, charset = "abcdef0123456789") {
return pattern.split("").map(char => {
if (char === "x") {
return charset.charAt(Math.floor(Math.random() * charset.length));
} else if (char === "X") {
return charset.charAt(Math.floor(Math.random() * charset.length)).toUpperCase();
}
return char;
}).join("");
}
randomUuid() {
return this.randomPattern("xxxxxxxx-xxxx-4xxx-4xxx-xxxxxxxxxxxx");
}
randomString(length, charset = "abcdef0123456789") {
return Array.from({ length }, () => charset.charAt(Math.floor(Math.random() * charset.length))).join("");
}
randomList(list) {
return list[Math.floor(Math.random() * list.length)];
}
wait(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
async exitNow() {
await this.showmsg();
const endTime = Date.now();
const duration = (endTime - this.startTime) / 1000;
this.log("");
this.log("[" + this.name + "]运行结束,共运行了" + duration + "秒", { time: true });
process.exit(0);
}
normalize_time(time, options = {}) {
const length = options.len || this.default_timestamp_len;
time = time.toString();
while (time.length < length) {
time += "0";
}
return parseInt(time.slice(0, 13));
}
async wait_until(targetTime, options = {}) {
const logger = options.logger || this;
const interval = options.interval || this.default_wait_interval;
const limit = options.limit || this.default_wait_limit;
const ahead = options.ahead || this.default_wait_ahead;
if (typeof targetTime === "string" && targetTime.includes(":")) {
if (targetTime.includes("-")) {
targetTime = new Date(targetTime).getTime();
} else {
const currentDate = this.time("yyyy-MM-dd ");
targetTime = new Date(currentDate + targetTime).getTime();
}
}
let targetTimestamp = this.normalize_time(targetTime) - ahead;
const targetTimeFormatted = this.time("hh:mm:ss.S", targetTimestamp);
let currentTime = Date.now();
if (currentTime > targetTimestamp) {
targetTimestamp += 86400000;
}
let remainingTime = targetTimestamp - currentTime;
if (remainingTime > limit) {
logger.log("离目标时间[" + targetTimeFormatted + "]大于" + limit / 1000 + "秒,不等待", { time: true });
} else {
logger.log("离目标时间[" + targetTimeFormatted + "]还有" + remainingTime / 1000 + "秒,开始等待", { time: true });
while (remainingTime > 0) {
const waitTime = Math.min(remainingTime, interval);
await this.wait(waitTime);
currentTime = Date.now();
remainingTime = targetTimestamp - currentTime;
}
logger.log("已完成等待", { time: true });
}
}
async wait_gap_interval(lastWaitTime, interval) {
const elapsedTime = Date.now() - lastWaitTime;
if (elapsedTime < interval) {
await this.wait(interval - elapsedTime);
}
}
}(UserClass);
}