/* smzdm 全民众测能量值任务脚本 项目地址: https://github.com/hex-ci/smzdm_script cron: 20 15 * * * */ const Env = require('./env'); const { requestApi, getEnvCookies, wait, waitHuman } = require('./bot'); const notify = require('./sendNotify'); const { SmzdmTaskBot } = require('./library_task'); // ------------------------------------ const $ = new Env('smzdm 全民众测能量值任务'); class SmzdmTestingTaskBot extends SmzdmTaskBot { constructor(cookie) { super(cookie, $); } // 主函数 async run() { let notifyMsg = await this.doTestingTasks(); await waitHuman(5, 10); notifyMsg += await this.getEnergyList(); await waitHuman(5, 10); notifyMsg += await this.getWinCouponList(); return notifyMsg; } // 执行众测能量值任务 async doTestingTasks() { const activityId = await this.getTestingActivityId(); if (!activityId) { return this.wafBlocked ? '🟡众测任务未执行:接口被 WAF/风控拦截\n' : ''; } await waitHuman(5, 10); const activityInfo = await this.getTestingActivityInfo(activityId); if (!activityInfo) { return ''; } await waitHuman(5, 10); return await this.doTasks(activityInfo.activity_task.default_list); } // 众测接口被 WAF 拦时返回 403、429 或 HTML 验证码页,不是 JSON isWafBlocked(response) { return /WAF|验证码|| 0) { msg += `🏅能量值明细:\n${list.map(item => ` ${item.article_title}`).join('\n')}\n`; } $.log(msg); return `${msg}\n`; } // 必中券列表 async getWinCouponList() { $.log('查询必中券列表'); const { isSuccess, data, response } = await requestApi('https://test-api.smzdm.com/win_coupon/win_coupon_list', { method: 'get', headers: this.getHeaders(), data: { 'page': 1, 'type': '0' } }); if (!isSuccess) { $.log(`查询必中券列表失败!${response}`); return ''; } const list = data.data.list || []; if (list.length < 1) { return '🏅暂无必中券\n'; } const msg = `🏅必中券 ${list.length} 项:\n${list.map(item => ` ${item.article_title}`).join('\n')}\n`; $.log(msg); return msg; } } !(async () => { if (process.env.SMZDM_TASK_TESTING != 'yes') { $.log('\n🟡请设置 SMZDM_TASK_TESTING 环境变量值为 yes 后才能运行全民众测能量值任务!'); return; } const cookies = getEnvCookies(); if (cookies === false) { $.log('\n请先设置 SMZDM_COOKIE 环境变量'); return; } let notifyContent = ''; for (let i = 0; i < cookies.length; i++) { const cookie = cookies[i]; if (!cookie) { continue; } if (i > 0) { $.log(); await wait(10, 30); $.log(); } const sep = `\n****** 账号${i + 1} ******\n`; $.log(sep); const bot = new SmzdmTestingTaskBot(cookie); const msg = await bot.run(); notifyContent += `${sep}${msg}\n`; } $.log(); await notify.sendNotify($.name, notifyContent); })().catch((e) => { $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') }).finally(() => { $.done(); });