mirror of
https://github.com/hex-ci/smzdm_script.git
synced 2026-06-18 01:27:20 +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 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_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';
|
const SIGN_KEY = 'apr1$AwP!wRRT$gJ/q.X24poeBInlUJC';
|
||||||
|
|
||||||
@@ -157,5 +157,6 @@ class SmzdmBot {
|
|||||||
module.exports = {
|
module.exports = {
|
||||||
SmzdmBot,
|
SmzdmBot,
|
||||||
requestApi,
|
requestApi,
|
||||||
removeTags
|
removeTags,
|
||||||
|
parseJSON
|
||||||
};
|
};
|
||||||
|
|||||||
181
smzdm_lottery.js
181
smzdm_lottery.js
@@ -6,106 +6,143 @@ cron: 10 8 * * *
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
const Env = require('./env');
|
const Env = require('./env');
|
||||||
|
const { SmzdmBot, requestApi, parseJSON } = require('./bot');
|
||||||
const notify = require('./sendNotify');
|
const notify = require('./sendNotify');
|
||||||
|
|
||||||
|
// ------------------------------------
|
||||||
|
|
||||||
const $ = new Env('什么值得买抽奖');
|
const $ = new Env('什么值得买抽奖');
|
||||||
|
|
||||||
let cookiesArr = [];
|
class SmzdmLotteryBot extends SmzdmBot {
|
||||||
|
constructor(cookie) {
|
||||||
// 判断环境变量里面是否有 cookie
|
super(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];
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// 每日抽奖
|
async run() {
|
||||||
async function lottery(cookie) {
|
const activityId = await this.getActivityId();
|
||||||
let activeId = '';
|
|
||||||
|
|
||||||
try {
|
if (!activityId) {
|
||||||
const resp = await $.http.get({
|
return {
|
||||||
url: "https://m.smzdm.com/zhuanti/life/choujiang/",
|
isSuccess: false
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
const { isSuccess, data, response } = await requestApi('https://zhiyou.smzdm.com/user/lottery/jsonp_get_current', {
|
||||||
|
sign: false,
|
||||||
|
parseJSON: false,
|
||||||
headers: {
|
headers: {
|
||||||
Accept: "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
|
...this.getHeadersForWeb(),
|
||||||
"Accept-Encoding": "gzip, deflate, br",
|
Referer: 'https://m.smzdm.com/'
|
||||||
"Accept-Language": "zh-cn",
|
},
|
||||||
Connection: "keep-alive",
|
data: {
|
||||||
Host: "m.smzdm.com",
|
active_id: activityId,
|
||||||
"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",
|
callback: `jQuery34107538452897131465_${new Date().getTime()}`
|
||||||
Cookie: cookie
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
let _activeId = /name\s?=\s?\"lottery_activity_id\"\s+value\s?=\s?\"([a-zA-Z0-9]*)\"/.exec(resp.body);
|
if (isSuccess) {
|
||||||
if (_activeId) {
|
const match = data.match(/\((.*)\)/);
|
||||||
activeId = _activeId[1];
|
|
||||||
} else {
|
|
||||||
$.log(`获取每日抽奖activeId失败`);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!!activeId) {
|
if (match) {
|
||||||
const resp = await $.http.get({
|
const result = parseJSON(match[1]);
|
||||||
url: `https://zhiyou.smzdm.com/user/lottery/jsonp_draw?callback=jQuery34109305207178886287_${new Date().getTime()}&active_id=${activeId}&_=${new Date().getTime()}`,
|
|
||||||
headers: {
|
if (result.error_code == 0 || result.error_code == 1 || result.error_code == 4) {
|
||||||
Accept: "*/*",
|
return result.error_msg;
|
||||||
"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
|
|
||||||
}
|
}
|
||||||
});
|
else {
|
||||||
|
$.log(`每日抽奖失败,接口响应异常:${response}`);
|
||||||
|
|
||||||
let data = /\((.*)\)/.exec(resp.body);
|
return '每日抽奖失败,接口响应异常';
|
||||||
let obj = JSON.parse(data[1]);
|
}
|
||||||
if (
|
}
|
||||||
obj["error_code"] === 0 ||
|
else {
|
||||||
obj["error_code"] === 1 ||
|
$.log(`每日抽奖失败,接口响应异常: ${response}`);
|
||||||
obj["error_code"] === 4
|
|
||||||
) {
|
return '每日抽奖失败,接口响应异常';
|
||||||
return obj["error_msg"];
|
|
||||||
} else {
|
|
||||||
$.log(`每日抽奖失败,接口响应异常:${data}`);
|
|
||||||
return "每日抽奖失败,接口响应异常";
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (error) {
|
else {
|
||||||
$.log(`每日抽奖失败,${error}`);
|
$.log(`每日抽奖失败,接口响应异常: ${response}`);
|
||||||
return "每日抽奖失败,接口响应异常";
|
|
||||||
|
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 () => {
|
!(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 环境变量');
|
$.log('\n请先设置 SMZDM_COOKIE 环境变量');
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
let notifyContent = '';
|
let notifyContent = '';
|
||||||
|
|
||||||
for (let i = 0; i < cookiesArr.length; i++) {
|
for (let i = 0; i < cookies.length; i++) {
|
||||||
if (cookiesArr[i]) {
|
const cookie = cookies[i];
|
||||||
if (i > 0) {
|
|
||||||
$.log('\n延时 5 秒执行\n');
|
|
||||||
await $.wait(5000)
|
|
||||||
}
|
|
||||||
|
|
||||||
const cookie = cookiesArr[i];
|
if (!cookie) {
|
||||||
const sep = `\n******开始账号${i + 1}******\n`;
|
continue;
|
||||||
|
|
||||||
const msg = await lottery(cookie);
|
|
||||||
|
|
||||||
notifyContent += sep + msg + "\n";
|
|
||||||
|
|
||||||
$.log(sep + msg + "\n");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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);
|
await notify.sendNotify($.name, notifyContent);
|
||||||
|
|||||||
Reference in New Issue
Block a user