mirror of
https://github.com/hex-ci/smzdm_script.git
synced 2026-02-03 02:53:17 +08:00
重构抽奖脚本
This commit is contained in:
5
bot.js
5
bot.js
@@ -7,7 +7,7 @@ const APP_VERSION = '10.4.26';
|
||||
const APP_VERSION_REV = '866';
|
||||
|
||||
const DEFAULT_USER_AGENT = `smzdm_android_V${APP_VERSION} rv:${APP_VERSION_REV} (Redmi Note 3;Android10.0;zh)smzdmapp`;
|
||||
const DEFAULT_WEB_USER_AGENT = `Mozilla/5.0 (Linux; Android 10.0; Redmi Build/Redmi Note 3; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/95.0.4638.74 Mobile Safari/537.36{ smzdm_android_V${APP_VERSION} rv:${APP_VERSION_REV} (Redmi;Android10.0;zh) jsbv_1.0.0 webv_2.0 smzdmapp }`;
|
||||
const DEFAULT_WEB_USER_AGENT = `Mozilla/5.0 (Linux; Android 10.0; Redmi Build/Redmi Note 3; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/95.0.4638.74 Mobile Safari/537.36 smzdm_android_V${APP_VERSION} rv:${APP_VERSION_REV} (Redmi;Android10.0;zh) jsbv_1.0.0 webv_2.0 smzdmapp`;
|
||||
|
||||
const SIGN_KEY = 'apr1$AwP!wRRT$gJ/q.X24poeBInlUJC';
|
||||
|
||||
@@ -157,5 +157,6 @@ class SmzdmBot {
|
||||
module.exports = {
|
||||
SmzdmBot,
|
||||
requestApi,
|
||||
removeTags
|
||||
removeTags,
|
||||
parseJSON
|
||||
};
|
||||
|
||||
181
smzdm_lottery.js
181
smzdm_lottery.js
@@ -6,106 +6,143 @@ cron: 10 8 * * *
|
||||
*/
|
||||
|
||||
const Env = require('./env');
|
||||
const { SmzdmBot, requestApi, parseJSON } = require('./bot');
|
||||
const notify = require('./sendNotify');
|
||||
|
||||
// ------------------------------------
|
||||
|
||||
const $ = new Env('什么值得买抽奖');
|
||||
|
||||
let cookiesArr = [];
|
||||
|
||||
// 判断环境变量里面是否有 cookie
|
||||
if (process.env.SMZDM_COOKIE) {
|
||||
if (process.env.SMZDM_COOKIE.indexOf('&') > -1) {
|
||||
cookiesArr = process.env.SMZDM_COOKIE.split('&');
|
||||
} else if (process.env.SMZDM_COOKIE.indexOf('\n') > -1) {
|
||||
cookiesArr = process.env.SMZDM_COOKIE.split('\n');
|
||||
} else {
|
||||
cookiesArr = [process.env.SMZDM_COOKIE];
|
||||
class SmzdmLotteryBot extends SmzdmBot {
|
||||
constructor(cookie) {
|
||||
super(cookie);
|
||||
}
|
||||
}
|
||||
|
||||
// 每日抽奖
|
||||
async function lottery(cookie) {
|
||||
let activeId = '';
|
||||
async run() {
|
||||
const activityId = await this.getActivityId();
|
||||
|
||||
try {
|
||||
const resp = await $.http.get({
|
||||
url: "https://m.smzdm.com/zhuanti/life/choujiang/",
|
||||
if (!activityId) {
|
||||
return {
|
||||
isSuccess: false
|
||||
};
|
||||
}
|
||||
|
||||
const { isSuccess, data, response } = await requestApi('https://zhiyou.smzdm.com/user/lottery/jsonp_get_current', {
|
||||
sign: false,
|
||||
parseJSON: false,
|
||||
headers: {
|
||||
Accept: "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
|
||||
"Accept-Encoding": "gzip, deflate, br",
|
||||
"Accept-Language": "zh-cn",
|
||||
Connection: "keep-alive",
|
||||
Host: "m.smzdm.com",
|
||||
"User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 14_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148/smzdm 10.4.25 rv:93.4 (iPhone13,4; iOS 14.5; zh_CN)/iphone_smzdmapp/10.4.25/wkwebview/jsbv_1.0.0",
|
||||
Cookie: cookie
|
||||
...this.getHeadersForWeb(),
|
||||
Referer: 'https://m.smzdm.com/'
|
||||
},
|
||||
data: {
|
||||
active_id: activityId,
|
||||
callback: `jQuery34107538452897131465_${new Date().getTime()}`
|
||||
}
|
||||
});
|
||||
|
||||
let _activeId = /name\s?=\s?\"lottery_activity_id\"\s+value\s?=\s?\"([a-zA-Z0-9]*)\"/.exec(resp.body);
|
||||
if (_activeId) {
|
||||
activeId = _activeId[1];
|
||||
} else {
|
||||
$.log(`获取每日抽奖activeId失败`);
|
||||
}
|
||||
if (isSuccess) {
|
||||
const match = data.match(/\((.*)\)/);
|
||||
|
||||
if (!!activeId) {
|
||||
const resp = await $.http.get({
|
||||
url: `https://zhiyou.smzdm.com/user/lottery/jsonp_draw?callback=jQuery34109305207178886287_${new Date().getTime()}&active_id=${activeId}&_=${new Date().getTime()}`,
|
||||
headers: {
|
||||
Accept: "*/*",
|
||||
"Accept-Encoding": "gzip, deflate, br",
|
||||
"Accept-Language": "zh-cn",
|
||||
Connection: "keep-alive",
|
||||
Host: "zhiyou.smzdm.com",
|
||||
Referer: "https://m.smzdm.com/zhuanti/life/choujiang/",
|
||||
"User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 14_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148/smzdm 10.4.25 rv:93.4 (iPhone13,4; iOS 14.5; zh_CN)/iphone_smzdmapp/10.4.25/wkwebview/jsbv_1.0.0",
|
||||
Cookie: cookie
|
||||
if (match) {
|
||||
const result = parseJSON(match[1]);
|
||||
|
||||
if (result.error_code == 0 || result.error_code == 1 || result.error_code == 4) {
|
||||
return result.error_msg;
|
||||
}
|
||||
});
|
||||
else {
|
||||
$.log(`每日抽奖失败,接口响应异常:${response}`);
|
||||
|
||||
let data = /\((.*)\)/.exec(resp.body);
|
||||
let obj = JSON.parse(data[1]);
|
||||
if (
|
||||
obj["error_code"] === 0 ||
|
||||
obj["error_code"] === 1 ||
|
||||
obj["error_code"] === 4
|
||||
) {
|
||||
return obj["error_msg"];
|
||||
} else {
|
||||
$.log(`每日抽奖失败,接口响应异常:${data}`);
|
||||
return "每日抽奖失败,接口响应异常";
|
||||
return '每日抽奖失败,接口响应异常';
|
||||
}
|
||||
}
|
||||
else {
|
||||
$.log(`每日抽奖失败,接口响应异常: ${response}`);
|
||||
|
||||
return '每日抽奖失败,接口响应异常';
|
||||
}
|
||||
}
|
||||
} catch (error) {
|
||||
$.log(`每日抽奖失败,${error}`);
|
||||
return "每日抽奖失败,接口响应异常";
|
||||
else {
|
||||
$.log(`每日抽奖失败,接口响应异常: ${response}`);
|
||||
|
||||
return '每日抽奖失败,接口响应异常';
|
||||
}
|
||||
}
|
||||
|
||||
async getActivityId() {
|
||||
const { isSuccess, data, response } = await requestApi('https://m.smzdm.com/zhuanti/life/choujiang/', {
|
||||
sign: false,
|
||||
parseJSON: false,
|
||||
headers: this.getHeadersForWeb()
|
||||
});
|
||||
|
||||
if (isSuccess) {
|
||||
const match = data.match(/name\s?=\s?"lottery_activity_id"\s+value\s?=\s?"([a-zA-Z0-9]*)"/i);
|
||||
|
||||
if (match) {
|
||||
$.log(`转盘抽奖ID: ${match[1]}`);
|
||||
|
||||
return match[1];
|
||||
}
|
||||
else {
|
||||
$.log(`未找到转盘抽奖ID`);
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else {
|
||||
$.log(`获取转盘抽奖失败: ${response}`);
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
!(async () => {
|
||||
if (!cookiesArr[0]) {
|
||||
let cookies = [];
|
||||
|
||||
// 判断环境变量里面是否有 cookie
|
||||
if (process.env.SMZDM_COOKIE) {
|
||||
if (process.env.SMZDM_COOKIE.indexOf('&') > -1) {
|
||||
cookies = process.env.SMZDM_COOKIE.split('&');
|
||||
}
|
||||
else if (process.env.SMZDM_COOKIE.indexOf('\n') > -1) {
|
||||
cookies = process.env.SMZDM_COOKIE.split('\n');
|
||||
}
|
||||
else {
|
||||
cookies = [process.env.SMZDM_COOKIE];
|
||||
}
|
||||
}
|
||||
|
||||
if (!cookies[0]) {
|
||||
$.log('\n请先设置 SMZDM_COOKIE 环境变量');
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
let notifyContent = '';
|
||||
|
||||
for (let i = 0; i < cookiesArr.length; i++) {
|
||||
if (cookiesArr[i]) {
|
||||
if (i > 0) {
|
||||
$.log('\n延时 5 秒执行\n');
|
||||
await $.wait(5000)
|
||||
}
|
||||
for (let i = 0; i < cookies.length; i++) {
|
||||
const cookie = cookies[i];
|
||||
|
||||
const cookie = cookiesArr[i];
|
||||
const sep = `\n******开始账号${i + 1}******\n`;
|
||||
|
||||
const msg = await lottery(cookie);
|
||||
|
||||
notifyContent += sep + msg + "\n";
|
||||
|
||||
$.log(sep + msg + "\n");
|
||||
if (!cookie) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (i > 0) {
|
||||
$.log('\n延迟 5 秒执行\n');
|
||||
await $.wait(5000);
|
||||
}
|
||||
|
||||
const sep = `\n******开始账号${i + 1}******\n`;
|
||||
|
||||
$.log(sep);
|
||||
|
||||
const bot = new SmzdmLotteryBot(cookie);
|
||||
const msg = await bot.run();
|
||||
|
||||
$.log(msg + '\n');
|
||||
|
||||
notifyContent += sep + msg + '\n';
|
||||
}
|
||||
|
||||
await notify.sendNotify($.name, notifyContent);
|
||||
|
||||
Reference in New Issue
Block a user