From b2100251993969819e94fc022d83392c73ed2c29 Mon Sep 17 00:00:00 2001 From: blackmatrix7 <27717518+blackmatrix7@users.noreply.github.com> Date: Wed, 14 Sep 2022 23:29:25 +0800 Subject: [PATCH] =?UTF-8?q?[=E4=BB=80=E4=B9=88=E5=80=BC=E5=BE=97=E4=B9=B0]?= =?UTF-8?q?=20=E6=94=AF=E6=8C=81=E5=A4=9A=E8=B4=A6=E6=88=B7=E7=AD=BE?= =?UTF-8?q?=E5=88=B0=E5=8F=8A=E9=9D=92=E9=BE=99=E9=9D=A2=E6=9D=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- script/magicjs/images/qinglong.png | Bin 13984 -> 15281 bytes script/magicjs/images/qinglong_dark.png | Bin 7633 -> 7631 bytes script/smzdm/README.md | 158 ++--- script/smzdm/images/checkin.jpg | Bin 121501 -> 0 bytes script/smzdm/smzdm_daily.js | 471 +++++++++++++++ script/smzdm/smzdm_daily.lnplugin | 13 + script/smzdm/smzdm_daily.qxrewrite | 6 + ...m_signin.sgmodule => smzdm_daily.sgmodule} | 4 +- script/smzdm/smzdm_mission.js | 571 ------------------ script/smzdm/smzdm_mission.lnscript | 6 - script/smzdm/smzdm_mission.qxrewrite | 6 - script/smzdm/smzdm_mission.sgmodule | 10 - script/smzdm/smzdm_signin.js | 344 ----------- script/smzdm/smzdm_signin.lnscript | 6 - script/smzdm/smzdm_signin.qxrewrite | 6 - 15 files changed, 540 insertions(+), 1061 deletions(-) delete mode 100644 script/smzdm/images/checkin.jpg create mode 100644 script/smzdm/smzdm_daily.js create mode 100644 script/smzdm/smzdm_daily.lnplugin create mode 100644 script/smzdm/smzdm_daily.qxrewrite rename script/smzdm/{smzdm_signin.sgmodule => smzdm_daily.sgmodule} (71%) delete mode 100644 script/smzdm/smzdm_mission.js delete mode 100644 script/smzdm/smzdm_mission.lnscript delete mode 100644 script/smzdm/smzdm_mission.qxrewrite delete mode 100644 script/smzdm/smzdm_mission.sgmodule delete mode 100644 script/smzdm/smzdm_signin.js delete mode 100644 script/smzdm/smzdm_signin.lnscript delete mode 100644 script/smzdm/smzdm_signin.qxrewrite diff --git a/script/magicjs/images/qinglong.png b/script/magicjs/images/qinglong.png index e064a89ec7272e06009ea6d4460ef831096fdffc..20c1443e192b32faa37136327c207cbede9209df 100644 GIT binary patch literal 15281 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 delta 13936 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 KMNUMnLSTY6z&^qN diff --git a/script/magicjs/images/qinglong_dark.png b/script/magicjs/images/qinglong_dark.png index 05fddfe7a5205f3ce5dd2133630f667f7cdf33e5..10411217a30387f1ed653cb87a0c59f744cf0492 100644 GIT binary patch delta 7059 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�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 diff --git a/script/smzdm/smzdm_daily.js b/script/smzdm/smzdm_daily.js new file mode 100644 index 000000000..c9452f769 --- /dev/null +++ b/script/smzdm/smzdm_daily.js @@ -0,0 +1,471 @@ +const zhiyouRegex = /^https?:\/\/zhiyou\.smzdm\.com\/user$/; +const smzdmCookieKey = "smzdm_cookie"; +const smzdmCookieIdKey = "smzdm_cookie_id"; +const smzdmSigninKey = "smzdm_signin"; +const smzdmMissionKey = "smzdm_mission"; +const smzdmLotteryKey = "smzdm_lottery"; +const smzdmSyncQinglongKey = "smzdm_sync_qinglong"; +const scriptName = '什么值得买'; +const clickFavArticleMaxTimes = 7; // 好文收藏次数 + +const $ = MagicJS(scriptName, "INFO"); +let currentCookie = ""; + +function randomStr() { + let len = 17; + let char = '0123456789'; + let str = '' + for (i = 0; i < len; i++) { + str += char.charAt(Math.floor(Math.random() * char.length)); + } + return str; +} + +$.http.interceptors.request.use((config) => { + if (!!currentCookie) { + config.headers.Cookie = currentCookie; + } + return config; +}); + +// Web端登录获取Cookie +async function getWebCookie() { + try { + currentCookie = $.request.headers.cookie || $.request.headers.Cookie; + if (currentCookie.length >= 200) { + + $.logger.info(`当前页面获取的Cookie: ${currentCookie}`); + const matchStr = currentCookie.match(/__ckguid=[^\s]*;/); + const cookieId = matchStr !== null ? matchStr[0] : null; + $.logger.info(`当前页面获取的CookieId\n${cookieId}`); + // 获取新的session_id + if (cookieId) { + const userInfo = await getWebUserInfo(); + // 获取持久化的session_id + let oldCookieId = $.data.read(smzdmCookieIdKey, "", userInfo.smzdm_id); + $.logger.info(`从客户端存储池中读取的CookieId\n${oldCookieId}`); + // 获取新的session_id + $.logger.info(`旧的CookieId:\n${oldCookieId}\n新的CookieId:\n${cookieId}`); + // 比较差异 + if (oldCookieId == cookieId) { + $.logger.info('当前页面获取的Cookie与客户端存储的Cookie相同,无需更新。'); + } + else { + if (userInfo.blackroom_desc && userInfo.blackroom_level) { + $.notification.post(`⚠️您的账户已在小黑屋中,请谨慎使用自动签到和任务!\n小黑屋类型:${userInfo.blackroom_desc}\小黑屋等级:${userInfo.blackroom_level}`); + } + $.data.write(smzdmCookieIdKey, cookieId, userInfo.smzdm_id); + $.data.write(smzdmCookieKey, currentCookie, userInfo.smzdm_id); + $.logger.info(`写入cookie\n${currentCookie}`); + $.notification.post(scriptName, '', '🎈获取Cookie成功!!'); + } + + // 同步到青龙面板 + if ($.data.read(smzdmSyncQinglongKey, false) === true) { + oldCookieId = await $.qinglong.read(smzdmCookieIdKey, "", userInfo.smzdm_id); + $.logger.info(`从青龙面板读取的CookieId\n${oldCookieId}`); + if (oldCookieId !== cookieId) { + await $.qinglong.write(smzdmCookieIdKey, cookieId, userInfo.smzdm_id); + await $.qinglong.write(smzdmCookieKey, currentCookie, userInfo.smzdm_id); + $.logger.info(`同步cookie\n${currentCookie}`); + $.notification.post(scriptName, '', '🎈同步Cookie至青龙面板成功!!'); + } + else { + $.logger.info(`当前页面获取的Cookie与青龙面板存储的Cookie相同,无需更新。`) + } + } + } + } + else { + $.logger.warning('没有读取到有效的Cookie信息。'); + } + } + catch (err) { + $.logger.error(`获取什么值得买Cookies出现异常,${err}`); + } +} + +// Web端签到 +function webSignin() { + return new Promise((resolve, reject) => { + let ts = Date.parse(new Date()); + $.http.get({ + url: `https://zhiyou.smzdm.com/user/checkin/jsonp_checkin?callback=jQuery11240${randomStr()}_${ts}&_=${ts + 3}`, + headers: { + 'Accept': '*/*', + 'Accept-Language': 'zh-cn', + 'Connection': 'keep-alive', + 'Host': 'zhiyou.smzdm.com', + 'Referer': 'https://www.smzdm.com/', + 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.5 Safari/605.1.15' + } + }).then(resp => { + let data = /\((.*)\)/.exec(resp.body); + if (data) { + let obj = JSON.parse(data[1]); + if (!!obj && obj.hasOwnProperty('error_code')) { + if (obj.error_code == -1) { + $.logger.warning(`Web端签到出现异常,网络繁忙,接口返回:${data}`); + reject('Web:网络繁忙'); + } + else if (obj['error_code'] == 99) { + $.logger.warning('Web端Cookie已过期'); + resolve([false, 'Web:Cookie过期']); + } + else if (obj['error_code'] == 0) { + $.logger.info('Web:签到成功'); + resolve([true, 'Web:签到成功']); + } + else { + $.logger.warning(`Web端签到出现异常,接口返回数据不合法:${data}`); + reject('Web:返回错误'); + } + } + } + else { + $.logger.warning(`Web端签到出现异常,接口返回数据不存在:${data}`); + reject('Web:签到异常'); + } + }).catch(err => { + $.logger.error(`Web端签到出现异常,${err}`); + reject('Web:签到异常'); + }) + }) +} + +// 获取用户信息 +function getWebUserInfo() { + let userInfo = { + "smzdm_id": null, // 什么值得买Id + "nick_name": null, // 昵称 + "avatar": null, // 头像链接 + "has_checkin": null, // 是否签到 + "daily_checkin_num": null, // 连续签到天数 + "unread_msg": null, // 未读消息 + "level": null, // 旧版等级 + "vip": null, // 新版VIP等级 + "exp": null, // 旧版经验 + "point": null, // 积分 + "gold": null, // 金币 + "silver": null, // 碎银子 + "prestige": null, // 威望 + "user_point_list": [], // 近期经验变动情况 + "blackroom_desc": "", + "blackroom_level": "" + } + return new Promise(async resolve => { + // 获取旧版用户信息 + await $.http.get({ + url: `https://zhiyou.smzdm.com/user/info/jsonp_get_current?with_avatar_ornament=1&callback=jQuery112403507528653716241_${new Date().getTime()}&_=${new Date().getTime()}`, + headers: { + 'Accept': 'text/javascript, application/javascript, application/ecmascript, application/x-ecmascript, */*; q=0.01', + 'Accept-Language': 'zh-CN,zh;q=0.9', + 'Connection': 'keep-alive', + 'Host': 'zhiyou.smzdm.com', + 'Referer': 'https://zhiyou.smzdm.com/user/', + 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36' + } + }).then(resp => { + let obj = JSON.parse(/\((.*)\)/.exec(resp.body)[1]); + if (obj['smzdm_id'] !== 0) { + userInfo.smzdm_id = obj['smzdm_id']; + userInfo.nick_name = obj['nickname'] // 昵称 + userInfo.avatar = `https:${obj['avatar']}` // 头像链接 + userInfo.has_checkin = obj['checkin']['has_checkin'] // 是否签到 + userInfo.daily_checkin_num = obj['checkin']['daily_checkin_num'] // 连续签到天数 + userInfo.unread_msg = obj['unread']['notice']['num'] // 未读消息数 + userInfo.level = obj['level'] // 旧版等级 + userInfo.vip = obj['vip_level'] // 新版VIP等级 + userInfo.blackroom_desc = obj['blackroom_desc'] // 小黑屋描述 + userInfo.blackroom_desc = obj['blackroom_level'] // 小黑屋等级 + // userInfo.exp = obj['exp'] // 旧版经验 + // userInfo.point = obj['point'] // 积分 + // userInfo.gold = obj['gold'] // 金币 + // userInfo.silver = obj['silver'] // 碎银子 + } + else { + $.logger.warning(`获取用户信息异常,Cookie过期或接口变化:${JSON.stringify(obj)}`); + } + }).catch(err => { + $.logger.error(`获取用户信息异常,${err}`); + }) + // 获取新版用户信息 + await $.http.get({ + url: "https://zhiyou.smzdm.com/user/exp/", + body: '' + }).then(resp => { + const data = resp.body; + // 获取用户名 + userInfo.nick_name = data.match(/info-stuff-nickname.*zhiyou\.smzdm\.com\/user[^<]*>([^<]*)(.*)<\/div>/ig); + const pointDetailList = data.match(/
(.*)<\/div>/ig); + const minLength = pointTimeList.length > pointDetailList.length ? pointDetailList.length : pointTimeList.length; + let userPointList = []; + for (let i = 0; i < minLength; i++) { + userPointList.push({ + 'time': pointTimeList[i].match(/\
(.*)\<\/div\>/)[1], + 'detail': pointDetailList[i].match(/\
(.*)\<\/div\>/)[1] + }); + } + userInfo.user_point_list = userPointList; + // 获取用户资源 + const assetsNumList = data.match(/assets-part[^<]*>(.*)(.*)(.*)(.*)(.*) { + $.logger.error(`获取新版用户信息出现异常,${err}`); + }) + // 返回结果 + resolve(userInfo); + }) +} + +// 每日抽奖 +function lotteryDraw() { + return new Promise(async (resolve, reject) => { + let activeId = ""; + await $.http.get({ + url: "https://m.smzdm.com/zhuanti/life/choujiang/", + 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 9.9.6 rv:93.4 (iPhone13,4; iOS 14.5; zh_CN)/iphone_smzdmapp/9.9.6/wkwebview/jsbv_1.0.0", + } + }).then(resp => { + 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 { + $.logger.warning(`获取每日抽奖activeId失败`); + } + }).catch(err => { + $.logger.error(`获取每日抽奖activeId失败,${err}`); + }) + if (!!activeId) { + 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_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148/smzdm 9.9.0 rv:91 (iPhone 11 Pro Max; iOS 14.2; zh_CN)/iphone_smzdmapp/9.9.0/wkwebview/jsbv_1.0.0", + } + }).then(resp => { + let data = /\((.*)\)/.exec(resp.body); + let obj = JSON.parse(data[1]); + if (obj.error_code === 0 || obj.error_code === 1 || obj.error_code === 4) { + resolve(obj.error_msg); + } else { + $.logger.error(`每日抽奖失败,接口响应异常:${data}`); + resolve("每日抽奖失败,接口响应异常"); + } + }).catch(err => { + $.logger.error(`每日抽奖失败,${err}`); + resolve("每日抽奖失败,接口/执行异常"); + }) + } + }) +} + +// 收藏文章 +function clickFavArticle(articleId) { + return new Promise((resolve, reject) => { + $.http.post({ + url: "https://zhiyou.smzdm.com/user/favorites/ajax_favorite", + headers: { + "Accept": "application/json, text/javascript, */*; q=0.01", + "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6", + "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8", + "Host": "zhiyou.smzdm.com", + "Origin": "https://post.smzdm.com", + "Referer": "https://post.smzdm.com/", + "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36 Edg/85.0.564.41", + }, + body: `article_id=${articleId}&channel_id=11&client_type=PC&event_key=%E6%94%B6%E8%97%8F&otype=%E6%94%B6%E8%97%8F&aid=${articleId}&cid=11&p=2&source=%E6%97%A0&atp=76&tagID=%E6%97%A0&sourcePage=https%3A%2F%2Fpost.smzdm.com%2F&sourceMode=%E6%97%A0`, + }).then(resp => { + const obj = resp.body; + if (obj.error_code == 0) { + $.logger.debug(`好文${articleId}收藏成功`); + resolve(true); + } else if (obj.error_code == 2) { + $.logger.debug(`好文${articleId}取消收藏成功`); + resolve(true); + } else { + $.logger.error(`好文${articleId}收藏失败,${JSON.stringify(obj)}`); + resolve(false); + } + }).catch(err => { + $.logger.error(`文章加入/取消收藏失败,${err}`); + reject(false); + }) + }) +} + +// 收藏文章任务 +function favArticles() { + return new Promise(async (resolve, reject) => { + let articlesId = []; + let success = 0; + await $.http.get({ + url: "https://post.smzdm.com/", + headers: { + "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9", + "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6", + "Host": "post.smzdm.com", + "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36 Edg/85.0.564.41", + }, + body: "" + }).then(resp => { + const articleList = resp.body.match(/data-article=".*" data-type="zan"/gi); + articleList.forEach((element) => { + articlesId.push(element.match(/data-article="(.*)" data-type="zan"/)[1]); + }); + }).catch(err => { + $.logger.error(`获取待收藏的文章列表失败,${err}`); + reject(err); + }) + let favArticlesId = articlesId.splice(0, clickFavArticleMaxTimes); + if (favArticlesId.length > 0) { + // 加入收藏 + for (let articleId of favArticlesId) { + await $.utils.retry(clickFavArticle, 3, 500)(articleId + ).then(result => { + if (result === true) { + success += 1; + } + }).catch(err => { + $.logger.error(`文章加入收藏失败,${err}`); + }) + await $.utils.sleep(500); + } + // 取消收藏 + for (let articleId of articlesId) { + await $.utils.retry(clickFavArticle, 3, 500)(articleId).catch(err => { + $.logger.error(`文章取消收藏失败,${err}`); + }) + } + } + resolve(success); + }) +} + +// 多用户签到 +async function multiUsersSingin() { + const allSessions = $.data.allSessions(smzdmCookieKey); + if (!allSessions || allSessions.length === 0) { + $.logger.error(scriptName, "", "没有发现需要签到的Cookies\n请点击通知进行登录。", { "open-url": "https://zhiyou.smzdm.com/user/login?redirect_to=http://zhiyou.smzdm.com/user" }); + } + else { + $.logger.info(`当前共 ${allSessions.length} 个Cookies需要进行签到/任务。`); + for (let [index, session] of allSessions.entries()) { + $.logger.info(`当前正在进行第 ${index + 1} 个Cookie签到`); + // 通知信息 + let title = ''; + let subTitle = ''; + let content = ''; + + // 获取Cookies + currentCookie = $.data.read(smzdmCookieKey, "", session); + + // 查询签到前用户数据 + const beforeUserInfo = await getWebUserInfo(); + + // Web端签到 + if ($.data.read(smzdmSigninKey, true) === true) { + await $.utils.retry(webSignin, 10, 500)().catch(err => { + subTitle = `Web端签到异常: ${err}`; + }); + } + + // 日常任务 + if ($.data.read(smzdmMissionKey, true) === true) { + const success = await favArticles(); + const msg = `每日收藏文章任务 ${success}/${clickFavArticleMaxTimes}`; + content += !!content ? `\n${msg}` : msg; + $.logger.info(msg); + } + + // 抽奖 + if ($.data.read(smzdmLotteryKey, true) === true) { + const msg = await lotteryDraw(); + content += !!content ? '\n' : ''; + content += msg; + $.logger.info(msg); + } + + // 休眠 + await $.utils.sleep(3000); + + // 获取签到后的用户信息 + const afterUserInfo = await getWebUserInfo(); + + // 重复签到 + if (afterUserInfo.has_checkin === true && beforeUserInfo.has_checkin === true) { + subTitle = "Web端重复签到"; + } + else { + subTitle = `已连续签到${afterUserInfo.daily_checkin_num}天`; + } + + // 记录日志 + let msg = `昵称:${beforeUserInfo.nick_name}\nWeb端签到状态:${afterUserInfo.has_checkin}\n签到后等级${afterUserInfo.vip},积分${afterUserInfo.point},经验${afterUserInfo.exp},金币${afterUserInfo.gold},碎银子${afterUserInfo.silver},未读消息${afterUserInfo.unread_msg}`; + $.logger.info(msg); + + // 通知 + if (beforeUserInfo.exp && afterUserInfo.exp) { + let addPoint = afterUserInfo.point - beforeUserInfo.point; + let addExp = afterUserInfo.exp - beforeUserInfo.exp; + let addGold = afterUserInfo.gold - beforeUserInfo.gold; + let addSilver = afterUserInfo.silver - beforeUserInfo.silver; + content += !!content ? '\n' : ''; + content += '积分' + afterUserInfo.point + (addPoint > 0 ? '(+' + addPoint + ')' : '') + + ' 经验' + afterUserInfo.exp + (addExp > 0 ? '(+' + addExp + ')' : '') + + ' 金币' + afterUserInfo.gold + (addGold > 0 ? '(+' + addGold + ')' : '') + '\n' + + '碎银子' + afterUserInfo.silver + (addSilver > 0 ? '(+' + addSilver + ')' : '') + + ' 未读消息' + afterUserInfo.unread_msg; + } + title = `${scriptName} - ${afterUserInfo.nick_name} V${afterUserInfo.vip}`; + $.notification.post(title, subTitle, content, { 'media-url': afterUserInfo.avatar }); + + $.logger.info(`第 ${index + 1} 个Cookie签到完毕`); + } + } +} + +(async () => { + if ($.isRequest && zhiyouRegex.test($.request.url) && $.request.method.toUpperCase() == "GET") { + await getWebCookie(); + } + else { + await multiUsersSingin(); + } + $.done(); +})() + +/** + * + * $$\ $$\ $$\ $$$$$\ $$$$$$\ $$$$$$\ + * $$$\ $$$ | \__| \__$$ |$$ __$$\ $$ ___$$\ + * $$$$\ $$$$ | $$$$$$\ $$$$$$\ $$\ $$$$$$$\ $$ |$$ / \__| \_/ $$ | + * $$\$$\$$ $$ | \____$$\ $$ __$$\ $$ |$$ _____| $$ |\$$$$$$\ $$$$$ / + * $$ \$$$ $$ | $$$$$$$ |$$ / $$ |$$ |$$ / $$\ $$ | \____$$\ \___$$\ + * $$ |\$ /$$ |$$ __$$ |$$ | $$ |$$ |$$ | $$ | $$ |$$\ $$ | $$\ $$ | + * $$ | \_/ $$ |\$$$$$$$ |\$$$$$$$ |$$ |\$$$$$$$\\$$$$$$ |\$$$$$$ | \$$$$$$ | + * \__| \__| \_______| \____$$ |\__| \_______|\______/ \______/ \______/ + * $$\ $$ | + * \$$$$$$ | + * \______/ + * +*/ +function MagicJS(e="MagicJS",t="INFO"){const r=()=>{const e=typeof $loon!=="undefined";const t=typeof $task!=="undefined";const n=typeof module!=="undefined";const r=typeof $httpClient!=="undefined"&&!e;const i=typeof $storm!=="undefined";const o=typeof $environment!=="undefined"&&typeof $environment["stash-build"]!=="undefined";const s=r||e||i||o;const a=typeof importModule!=="undefined";return{isLoon:e,isQuanX:t,isNode:n,isSurge:r,isStorm:i,isStash:o,isSurgeLike:s,isScriptable:a,get name(){if(e){return"Loon"}else if(t){return"QuantumultX"}else if(n){return"NodeJS"}else if(r){return"Surge"}else if(a){return"Scriptable"}else{return"unknown"}},get build(){if(r){return $environment["surge-build"]}else if(o){return $environment["stash-build"]}else if(i){return $storm.buildVersion}},get language(){if(r||o){return $environment["language"]}},get version(){if(r){return $environment["surge-version"]}else if(o){return $environment["stash-version"]}else if(i){return $storm.appVersion}else if(n){return process.version}},get system(){if(r){return $environment["system"]}else if(n){return process.platform}},get systemVersion(){if(i){return $storm.systemVersion}},get deviceName(){if(i){return $storm.deviceName}}}};const i=(n,e="INFO")=>{let r=e;const i={SNIFFER:6,DEBUG:5,INFO:4,NOTIFY:3,WARNING:2,ERROR:1,CRITICAL:0,NONE:-1};const o={SNIFFER:"",DEBUG:"",INFO:"",NOTIFY:"",WARNING:"❗ ",ERROR:"❌ ",CRITICAL:"❌ ",NONE:""};const t=(e,t="INFO")=>{if(!(i[r]{r=e};return{setLevel:s,sniffer:e=>{t(e,"SNIFFER")},debug:e=>{t(e,"DEBUG")},info:e=>{t(e,"INFO")},notify:e=>{t(e,"NOTIFY")},warning:e=>{t(e,"WARNING")},error:e=>{t(e,"ERROR")},retry:e=>{t(e,"RETRY")}}};return new class{constructor(e,t){this._startTime=Date.now();this.version="3.0.0";this.scriptName=e;this.env=r();this.logger=i(e,t);this.http=typeof MagicHttp==="function"?MagicHttp(this.env,this.logger):undefined;this.data=typeof MagicData==="function"?MagicData(this.env,this.logger):undefined;this.notification=typeof MagicNotification==="function"?MagicNotification(this.scriptName,this.env,this.logger,this.http):undefined;this.utils=typeof MagicUtils==="function"?MagicUtils(this.env,this.logger):undefined;this.qinglong=typeof MagicQingLong==="function"?MagicQingLong(this.env,this.data,this.logger):undefined;if(typeof this.data!=="undefined"){let e=this.data.read("magic_loglevel");const n=this.data.read("magic_bark_url");if(e){this.logger.setLevel(e.toUpperCase())}if(n){this.notification.setBark(n)}}}get isRequest(){return typeof $request!=="undefined"&&typeof $response==="undefined"}get isResponse(){return typeof $response!=="undefined"}get isDebug(){return this.logger.level==="DEBUG"}get request(){return typeof $request!=="undefined"?$request:undefined}get response(){if(typeof $response!=="undefined"){if($response.hasOwnProperty("status"))$response["statusCode"]=$response["status"];if($response.hasOwnProperty("statusCode"))$response["status"]=$response["statusCode"];return $response}else{return undefined}}done=(e={})=>{this._endTime=Date.now();let t=(this._endTime-this._startTime)/1e3;this.logger.info(`SCRIPT COMPLETED: ${t} S.`);if(typeof $done!=="undefined"){$done(e)}}}(e,t)}function MagicHttp(u,c){const t="Mozilla/5.0 (iPhone; CPU iPhone OS 13_3_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.5 Mobile/15E148 Safari/604.1";const n="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36 Edg/84.0.522.59";let f;if(u.isNode){const a=require("axios");f=a.create()}class e{constructor(e=true){this.handlers=[];this.isRequest=e}use(e,t,n){this.handlers.push({fulfilled:e,rejected:t,synchronous:n?n.synchronous:false,runWhen:n?n.runWhen:null});return this.handlers.length-1}eject(e){if(this.handlers[e]){this.handlers[e]=null}}forEach(t){this.handlers.forEach(e=>{if(e!==null){t(e)}})}}function r(e){let n={...e};if(!!n.params){if(!u.isNode){let e=Object.keys(n.params).map(e=>{const t=encodeURIComponent(e);n.url=n.url.replace(new RegExp(`${e}=[^&]*`,"ig"),"");n.url=n.url.replace(new RegExp(`${t}=[^&]*`,"ig"),"");return`${t}=${encodeURIComponent(n.params[e])}`}).join("&");if(n.url.indexOf("?")<0)n.url+="?";if(!/(&|\?)$/g.test(n.url)){n.url+="&"}n.url+=e;delete n.params;c.debug(`Params to QueryString: ${n.url}`)}}return n}const d=(e,t)=>{let n=typeof t==="object"?{headers:{},...t}:{url:t,headers:{}};if(!n.method){n["method"]=e}n=r(n);if(n["rewrite"]===true){if(u.isSurge){n.headers["X-Surge-Skip-Scripting"]=false;delete n["rewrite"]}else if(u.isQuanX){n["hints"]=false;delete n["rewrite"]}}if(u.isSurge){if(n["method"]!=="GET"&&n.headers["Content-Type"].indexOf("application/json")>=0&&n.body instanceof Array){n.body=JSON.stringify(n.body);c.debug(`Convert Array object to String: ${n.body}`)}}else if(u.isQuanX){if(n.hasOwnProperty("body")&&typeof n["body"]!=="string")n["body"]=JSON.stringify(n["body"]);n["method"]=e}else if(u.isNode){if(e==="POST"||e==="PUT"||e==="PATCH"||e==="DELETE"){n.data=n.data||n.body}else if(e==="GET"){n.params=n.params||n.body}delete n.body}return n};const p=(t,n=null)=>{if(t){let e={...t,config:t.config||n,status:t.statusCode||t.status,body:t.body||t.data,headers:t.headers||t.header};if(typeof e.body==="string"){try{e.body=JSON.parse(e.body)}catch{}}delete t.data;return e}else{return t}};const i=r=>{if(!!r){delete r["Content-Length"];let e=new Set(["Accept","Accept-CH","Accept-Charset","Accept-Features","Accept-Encoding","Accept-Language","Accept-Ranges","Access-Control-Allow-Credentials","Access-Control-Allow-Origin","Access-Control-Allow-Methods","Access-Control-Allow-Headers","Access-Control-Max-Age","Access-Control-Expose-Headers","Access-Control-Request-Method","Access-Control-Request-Headers","Age","Allow","Alternates","Authorization","Cache-Control","Connection","Content-Encoding","Content-Language","ontent-Length","Content-Location","Content-Range","Content-Security-Policy","Content-Type","Cookie","DNT","Date","ETag","Expect","Expires","From","Host","If-Match","If-Modified-Since","If-None-Match","If-Range","If-Unmodified-Since","Last-Event-ID","Last-Modified","Link","Location","Max-Forwards","Negotiate","Origin","Pragma","Proxy-Authenticate","Proxy-Authorization","Range","Referer","Retry-After","Sec-Websocket-Extensions","Sec-Websocket-Key","Sec-Websocket-Origin","Sec-Websocket-Protocol","Sec-Websocket-Version","Server","Set-Cookie","Set-Cookie2","Strict-Transport-Security","TCN","TE","Trailer","Transfer-Encoding","Upgrade","User-Agent","Variant-Vary","Vary","Via","Warning","WWW-Authenticate","X-Content-Duration","X-Content-Security-Policy","X-DNSPrefetch-Control","X-Frame-Options","X-Requested-With"]);for(let n of Object.keys(r)){if(!e.has(n)){for(let t of e){let e=n.replace(new RegExp(t,"ig"),t);if(n!==e){r[e]=r[n];delete r[n];break}}}}if(!r["User-Agent"]){if(u.isNode){r["User-Agent"]=n}else{r["User-Agent"]=t}}return r}return r};const g=(t,n=null)=>{if(!!t&&t.status>=400){c.debug(`Raise exception when status code is ${t.status}`);let e={name:"RequestException",message:`Request failed with status code ${t.status}`,config:n||t.config,response:t};return e}};const o={request:new e,response:new e(false)};let y=[];let h=[];let m=true;function $(e){if(typeof e==="object"&&e["modify"]!==false){e["headers"]=i(e["headers"])}e=r(e);return e}function b(e){try{e=!!e?p(e):e;c.sniffer(`HTTP ${e.config["method"].toUpperCase()}:\n${JSON.stringify(e.config)}\nSTATUS CODE:\n${e.status}\nRESPONSE:\n${typeof e.body==="object"?JSON.stringify(e.body):e.body}`);const t=g(e);if(!!t){return Promise.reject(t)}return e}catch(t){c.error(t);return e}}const S=t=>{try{y=[];h=[];o.request.forEach(e=>{if(typeof e.runWhen==="function"&&e.runWhen(t)===false){return}m=m&&e.synchronous;y.unshift(e.fulfilled,e.rejected)});o.response.forEach(e=>{h.push(e.fulfilled,e.rejected)})}catch(e){c.error(`failed to register interceptors: ${e}`)}};const s=(e,r)=>{let i;const t=e.toUpperCase();r=d(t,r);if(u.isNode){i=f}else{if(u.isSurgeLike){i=o=>{return new Promise((r,i)=>{$httpClient[e.toLowerCase()](o,(t,n,e)=>{if(t){let e={name:t.name||t,message:t.message||t,stack:t.stack||t,config:o,response:p(n)};i(e)}else{n.config=o;n.body=e;r(n)}})})}}else{i=i=>{return new Promise((n,r)=>{$task.fetch(i).then(e=>{e=p(e,i);const t=g(e,i);if(t){return Promise.reject(t)}n(e)}).catch(e=>{let t={name:e.message||e.error,message:e.message||e.error,stack:e.error,config:i,response:!!e.response?p(e.response):null};r(t)})})}}}let o;S(r);const s=[$,undefined];const a=[b,undefined];if(!m){c.debug("Interceptors are executed in asynchronous mode");let n=[i,undefined];Array.prototype.unshift.apply(n,s);Array.prototype.unshift.apply(n,y);Array.prototype.unshift.apply(n,s);n=n.concat(a);n=n.concat(h);o=Promise.resolve(r);while(n.length){try{let e=n.shift();let t=n.shift();if(!u.isNode&&r["timeout"]&&e===i){o=l(r)}else{o=o.then(e,t)}}catch(e){c.error(`request exception: ${e}`)}}return o}else{c.debug("Interceptors are executed in synchronous mode");Array.prototype.unshift.apply(y,s);y=y.concat([$,undefined]);while(y.length){let e=y.shift();let t=y.shift();try{r=e(r)}catch(e){t(e);break}}try{if(!u.isNode&&r["timeout"]){o=l(r)}else{o=i(r)}}catch(e){return Promise.reject(e)}Array.prototype.unshift.apply(h,a);while(h.length){o=o.then(h.shift(),h.shift())}return o}function l(n){try{const e=new Promise((e,t)=>{setTimeout(()=>{let e={message:`timeout of ${n["timeout"]}ms exceeded`,config:n};t(e)},n["timeout"])});return Promise.race([i(n),e])}catch(e){c.error(`Request Timeout exception: ${e}`)}}};return{request:s,interceptors:o,modifyHeaders:i,modifyResponse:p,get:e=>{return s("GET",e)},post:e=>{return s("POST",e)},put:e=>{return s("PUT",e)},patch:e=>{return s("PATCH",e)},delete:e=>{return s("DELETE",e)},head:e=>{return s("HEAD",e)},options:e=>{return s("OPTIONS",e)}}}function MagicNotification(o,s,a,l){let u=null;let c=null;const e=t=>{try{let e=t.replace(/\/+$/g,"");u=`${/^https?:\/\/([^/]*)/.exec(e)[0]}/push`;c=/\/([^\/]+)\/?$/.exec(e)[1]}catch(e){a.error(`Bark url error: ${e}.`)}};function t(e=o,t="",n="",r=""){const i=n=>{try{let t={};if(typeof n==="string"){if(s.isLoon)t={openUrl:n};else if(s.isQuanX)t={"open-url":n};else if(s.isSurge)t={url:n}}else if(typeof n==="object"){if(s.isLoon){t["openUrl"]=!!n["open-url"]?n["open-url"]:"";t["mediaUrl"]=!!n["media-url"]?n["media-url"]:""}else if(s.isQuanX){t=!!n["open-url"]||!!n["media-url"]?n:{}}else if(s.isSurge){let e=n["open-url"]||n["openUrl"];t=e?{url:e}:{}}}return t}catch(e){a.error(`Failed to convert notification option, ${e}`)}return n};r=i(r);if(arguments.length==1){e=o;t="",n=arguments[0]}a.notify(`title:${e}\nsubTitle:${t}\nbody:${n}\noptions:${typeof r==="object"?JSON.stringify(r):r}`);if(s.isSurge){$notification.post(e,t,n,r)}else if(s.isLoon){if(!!r)$notification.post(e,t,n,r);else $notification.post(e,t,n)}else if(s.isQuanX){$notify(e,t,n,r)}if(u&&c){f(e,t,n)}}function n(e=o,t="",n="",r=""){if(a.level==="DEBUG"){if(arguments.length==1){e=o;t="",n=arguments[0]}this.notify(e,t,n,r)}}function f(e=o,t="",n="",r=""){if(typeof l==="undefined"||typeof l.post==="undefined"){throw"Bark notification needs to import MagicHttp module."}let i={url:u,headers:{"Content-Type":"application/json; charset=utf-8"},body:{title:e,body:t?`${t}\n${n}`:n,device_key:c}};l.post(i).catch(e=>{a.error(`Bark notify error: ${e}`)})}return{post:t,debug:n,bark:f,setBark:e}}function MagicData(s,a){let l={fs:undefined,data:{}};if(s.isNode){l.fs=require("fs");try{l.fs.accessSync("./magic.json",l.fs.constants.R_OK|l.fs.constants.W_OK)}catch(e){l.fs.writeFileSync("./magic.json","{}",{encoding:"utf8"})}l.data=require("./magic.json")}const u=(e,t)=>{if(typeof t==="object"){return false}else{return e===t}};const c=e=>{if(e==="true"){return true}else if(e==="false"){return false}else if(typeof e==="undefined"){return null}else{return e}};const f=(e,t,n,r)=>{if(n){try{if(typeof e==="string")e=JSON.parse(e);if(e["magic_session"]===true){e=e[n]}else{e=null}}catch{e=null}}if(typeof e==="string"&&e!=="null"){try{e=JSON.parse(e)}catch{}}if(r===false&&!!e&&e["magic_session"]===true){e=null}if((e===null||typeof e==="undefined")&&t!==null&&typeof t!=="undefined"){e=t}e=c(e);return e};const o=t=>{if(typeof t==="string"){let e={};try{e=JSON.parse(t);const n=typeof e;if(n!=="object"||e instanceof Array||n==="bool"||e===null){e={}}}catch{}return e}else if(t instanceof Array||t===null||typeof t==="undefined"||t!==t||typeof t==="boolean"){return{}}else{return t}};const d=(e,t=null,n="",r=false,i=null)=>{let o=i||l.data;if(!!o&&typeof o[e]!=="undefined"&&o[e]!==null){val=o[e]}else{val=!!n?{}:null}val=f(val,t,n,r);return val};const p=(e,t=null,n="",r=false,i=null)=>{let o="";if(i||s.isNode){o=d(e,t,n,r,i)}else{if(s.isSurgeLike){o=$persistentStore.read(e)}else if(s.isQuanX){o=$prefs.valueForKey(e)}o=f(o,t,n,r)}a.debug(`READ DATA [${e}]${!!n?`[${n}]`:""} <${typeof o}>\n${JSON.stringify(o)}`);return o};const g=(t,n,r="",e=null)=>{let i=e||l.data;i=o(i);if(!!r){let e=o(i[t]);e["magic_session"]=true;e[r]=n;i[t]=e}else{i[t]=n}if(e!==null){e=i}return i};const y=(e,t,n="",r=null)=>{if(typeof t==="undefined"||t!==t){return false}if(!s.isNode&&(typeof t==="boolean"||typeof t==="number")){t=String(t)}let i="";if(r||s.isNode){i=g(e,t,n,r)}else{if(!n){i=t}else{if(s.isSurgeLike){i=!!$persistentStore.read(e)?$persistentStore.read(e):i}else if(s.isQuanX){i=!!$prefs.valueForKey(e)?$prefs.valueForKey(e):i}i=o(i);i["magic_session"]=true;i[n]=t}}if(!!i&&typeof i==="object"){i=JSON.stringify(i,"","\t")}a.debug(`WRITE DATA [${e}]${n?`[${n}]`:""} <${typeof t}>\n${JSON.stringify(t)}`);if(!r){if(s.isSurgeLike){return $persistentStore.write(i,e)}else if(s.isQuanX){return $prefs.setValueForKey(i,e)}else if(s.isNode){try{l.fs.writeFileSync("./magic.json",i);return true}catch(e){a.error(e);return false}}}return true};const e=(t,n,r,i=u,o=null)=>{n=c(n);const e=p(t,null,r,false,o);if(i(e,n)===true){return false}else{const s=y(t,n,r,o);let e=p(t,null,r,false,o);if(i===u&&typeof e==="object"){return s}return i(n,e)}};const h=(e,t,n)=>{let r=n||l.data;r=o(r);if(!!t){obj=o(r[e]);delete obj[t];r[e]=obj}else{delete r[e]}if(!!n){n=r}return r};const t=(e,t="",n=null)=>{let r={};if(n||s.isNode){r=h(e,t,n);if(!n){l.fs.writeFileSync("./magic.json",JSON.stringify(r))}else{n=r}}else{if(!t){if(s.isStorm){return $persistentStore.remove(e)}else if(s.isSurgeLike){return $persistentStore.write(null,e)}else if(s.isQuanX){return $prefs.removeValueForKey(e)}}else{if(s.isSurgeLike){r=$persistentStore.read(e)}else if(s.isQuanX){r=$prefs.valueForKey(e)}r=o(r);delete r[t];const i=JSON.stringify(r);y(e,i)}}a.debug(`DELETE KEY [${e}]${!!t?`[${t}]`:""}`)};const n=(e,t=null)=>{let n=[];let r=p(e,null,null,true,t);r=o(r);if(r["magic_session"]!==true){n=[]}else{n=Object.keys(r).filter(e=>e!=="magic_session")}a.debug(`READ ALL SESSIONS [${e}] <${typeof n}>\n${JSON.stringify(n)}`);return n};return{read:p,write:y,del:t,update:e,allSessions:n,defaultValueComparator:u,convertToObject:o}}function MagicUtils(r,u){const e=(o,s=5,a=0,l=null)=>{return(...e)=>{return new Promise((n,r)=>{function i(...t){Promise.resolve().then(()=>o.apply(this,t)).then(e=>{if(typeof l==="function"){Promise.resolve().then(()=>l(e)).then(()=>{n(e)}).catch(e=>{if(s>=1){if(a>0)setTimeout(()=>i.apply(this,t),a);else i.apply(this,t)}else{r(e)}s--})}else{n(e)}}).catch(e=>{u.error(e);if(s>=1&&a>0){setTimeout(()=>i.apply(this,t),a)}else if(s>=1){i.apply(this,t)}else{r(e)}s--})}i.apply(this,e)})}};const t=(e,t="yyyy-MM-dd hh:mm:ss")=>{let n={"M+":e.getMonth()+1,"d+":e.getDate(),"h+":e.getHours(),"m+":e.getMinutes(),"s+":e.getSeconds(),"q+":Math.floor((e.getMonth()+3)/3),S:e.getMilliseconds()};if(/(y+)/.test(t))t=t.replace(RegExp.$1,(e.getFullYear()+"").substr(4-RegExp.$1.length));for(let e in n)if(new RegExp("("+e+")").test(t))t=t.replace(RegExp.$1,RegExp.$1.length==1?n[e]:("00"+n[e]).substr((""+n[e]).length));return t};const n=()=>{return t(new Date,"yyyy-MM-dd hh:mm:ss")};const i=()=>{return t(new Date,"yyyy-MM-dd")};const o=t=>{return new Promise(e=>setTimeout(e,t))};const s=(e,t=null)=>{if(r.isNode){const n=require("assert");if(t)n(e,t);else n(e)}else{if(e!==true){let e=`AssertionError: ${t||"The expression evaluated to a falsy value"}`;u.error(e)}}};return{retry:e,formatTime:t,now:n,today:i,sleep:o,assert:s}}function MagicQingLong(e,l,i){let o="";let s="";let a="";let u="";let c="";let t="";const f="magic.json";const n=3e3;const d=MagicHttp(e,i);const r=(e,t,n,r,i)=>{o=e;a=t;u=n;s=r;c=i};function p(e){o=o||l.read("magic_qlurl");t=t||l.read("magic_qltoken");return e}function g(e){if(!o){o=l.read("magic_qlurl")}if(e.url.indexOf(o)<0){e.url=`${o}${e.url}`}return{...e,timeout:n}}function y(e){e.params={...e.params,t:Date.now()};return e}function h(e){t=t||l.read("magic_qltoken");if(t){e.headers["Authorization"]=`Bearer ${t}`}return e}function m(e){a=a||l.read("magic_qlclient");if(!!a){e.url=e.url.replace("/api/","/open/")}return e}async function $(e){try{const t=e.message||e.error||JSON.stringify(e);if((t.indexOf("NSURLErrorDomain")>=0&&t.indexOf("-1012")>=0||!!e.response&&e.response.status===401)&&(!!e.config&&e.config.refreshToken!==true)){i.warning(`Qinglong panel token has expired`);await b();e.config["refreshToken"]=true;return await d.request(e.config.method,e.config)}else{return Promise.reject(e)}}catch(e){return Promise.reject(e)}}d.interceptors.request.use(p,undefined);d.interceptors.request.use(g,undefined);d.interceptors.request.use(m,undefined,{runWhen:e=>{return e.url.indexOf("api/user/login")<0&&e.url.indexOf("open/auth/token")<0}});d.interceptors.request.use(h,undefined,{runWhen:e=>{return e.url.indexOf("api/user/login")<0&&e.url.indexOf("open/auth/token")<0}});d.interceptors.request.use(y,undefined,{runWhen:e=>{return e.url.indexOf("open/auth/token")<0&&e.url.indexOf("t=")<0}});d.interceptors.response.use(undefined,$);async function b(){a=a||l.read("magic_qlclient");u=u||l.read("magic_qlsecrt");s=s||l.read("magic_qlname");c=c||l.read("magic_qlpwd");if(o&&a&&u){await d.get({url:`/open/auth/token`,headers:{"Content-Type":"application/json"},params:{client_id:a,client_secret:u}}).then(e=>{i.info("Log in to Qinglong panel successfully");t=e.body.data.token;l.update("magic_qltoken",t);return t}).catch(e=>{i.error(`Failed to log in to Qinglong panel.\n${e.message}`)})}else if(o&&s&&c){await d.post({url:`/api/user/login`,headers:{"Content-Type":"application/json"},body:{username:s,password:c}}).then(e=>{i.info("Log in to Qinglong panel successfully");t=e.body.data.token;l.update("magic_qltoken",t);return t}).catch(e=>{i.error(`Failed to log in to Qinglong panel.\n${e.message}`)})}}async function S(t,n,r=null){o=o||l.read("magic_qlurl");if(r===null){let e=await N([{name:t,value:n}]);if(!!e&&e.length===1){return e[0]}}else{d.put({url:`/api/envs`,headers:{"Content-Type":"application/json"},body:{name:t,value:n,id:r}}).then(e=>{if(e.body.code===200){i.debug(`QINGLONG UPDATE ENV ${t} <${typeof n}> (${r})\n${JSON.stringify(n)}`);return true}else{i.error(`Failed to update Qinglong panel environment variable.\n${JSON.stringify(e)}`)}}).catch(e=>{i.error(`Failed to update Qinglong panel environment variable.\n${e.message}`);return false})}}async function N(e){let t=[];await d.post({url:`/api/envs`,headers:{"Content-Type":"application/json"},body:e}).then(e=>{if(e.body.code===200){e.body.data.forEach(e=>{i.debug(`QINGLONG ADD ENV ${e.name} <${typeof e.value}> (${e.id})\n${JSON.stringify(e)}`);t.push(e.id)})}else{i.error(`Failed to add Qinglong panel environment variable.\n${JSON.stringify(e)}`)}}).catch(e=>{i.error(`Failed to add Qinglong panel environment variable.\n${e.message}`)});return t}async function v(t){return await d.delete({url:`/api/envs`,headers:{Accept:"application/json","Accept-Language":"zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6",Connection:"keep-alive","Content-Type":"application/json;charset=UTF-8","User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.63 Safari/537.36 Edg/102.0.1245.30"},body:t}).then(e=>{if(e.body.code===200){i.debug(`QINGLONG DELETE ENV IDS: ${t}`);return true}else{i.error(`Failed to delete QingLong envs.\n${JSON.stringify(e)}`);return false}}).catch(e=>{i.error(`Failed to delete QingLong envs.\n${e.message}`)})}async function O(n=null,e=""){let r=[];await d.get({url:`/api/envs`,headers:{"Content-Type":"application/json"},params:{searchValue:e}}).then(e=>{if(e.body.code===200){const t=e.body.data;if(!!n){let e=[];for(const e of t){if(e.name===n){r.push(e)}}r=e}r=t}else{i.error(`Failed to get environment variables from Qinglong panel.\n${JSON.stringify(e)}`)}}).catch(e=>{i.error(`Failed to get environment variables from Qinglong panel.\n${JSON.stringify(e)}`)});return r}async function E(e){let t=null;const n=await O();for(const r of n){if(r.id===e){t=r;break}}return t}async function T(t){let n=false;await d.put({url:`/api/envs/disable`,headers:{Accept:"application/json","Accept-Language":"zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6",Connection:"keep-alive","Content-Type":"application/json;charset=UTF-8","User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.63 Safari/537.36 Edg/102.0.1245.30"},body:t}).then(e=>{if(e.body.code===200){i.debug(`QINGLONG DISABLED ENV IDS: ${t}`);n=true}else{i.error(`Failed to disable QingLong envs.\n${JSON.stringify(e)}`)}}).catch(e=>{i.error(`Failed to disable QingLong envs.\n${e.message}`)});return n}async function w(t){let n=false;await d.put({url:`/api/envs/enable`,headers:{Accept:"application/json","Accept-Language":"zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6",Connection:"keep-alive","Content-Type":"application/json;charset=UTF-8","User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.63 Safari/537.36 Edg/102.0.1245.30"},body:t}).then(e=>{if(e.body.code===200){i.debug(`QINGLONG ENABLED ENV IDS: ${t}`);n=true}else{i.error(`Failed to enable QingLong envs.\n${JSON.stringify(e)}`)}}).catch(e=>{i.error(`Failed to enable QingLong envs.\n${e.message}`)});return n}async function C(e,t="",n=""){let r=false;await d.post({url:`/api/scripts`,headers:{"Content-Type":"application/json"},body:{filename:e,path:t,content:n}}).then(e=>{if(e.body.code===200){r=true}else{i.error(`Failed to add script content from Qinglong panel.\n${JSON.stringify(e)}`)}}).catch(e=>{i.error(`Failed to add script content from Qinglong panel.\n${e.message}`)});return r}async function A(e,t=""){let n="";await d.get({url:`/api/scripts/${e}`,params:{path:t}}).then(e=>{if(e.body.code===200){n=e.body.data}else{i.error(`Failed to read script content from Qinglong panel.\n${JSON.stringify(e)}`)}}).catch(e=>{i.error(`Failed to read script content from Qinglong panel.\n${e.message}`)});return n}async function k(e,t="",n=""){let r=false;await d.put({url:`/api/scripts`,headers:{"Content-Type":"application/json"},body:{filename:e,path:t,content:n}}).then(e=>{if(e.body.code===200){r=true}else{i.error(`Failed to read script content from Qinglong panel.\n${JSON.stringify(e)}`)}}).catch(e=>{i.error(`Failed to read script content from Qinglong panel.\n${e.message}`)});return r}async function L(e,t=""){let n=false;await d.delete({url:`/api/scripts`,headers:{"Content-Type":"application/json"},body:{filename:e,path:t}}).then(e=>{if(e.body.code===200){n=true}else{i.error(`Failed to read script content from Qinglong panel.\n${JSON.stringify(e)}`)}}).catch(e=>{i.error(`Failed to read script content from Qinglong panel.\n${e.message}`)});return n}async function F(e,t,n=""){let r=await A(f,"");let i=l.convertToObject(r);let o=l.write(e,t,n,i);r=JSON.stringify(i,"","\t");let s=await k(f,"",r);return s&&o}async function j(e,t,n,r=l.defaultValueComparator){let i=await A(f,"");let o=l.convertToObject(i);const s=l.update(e,t,n,r,o);let a=false;if(s===true){i=JSON.stringify(o,"","\t");a=await k(f,"",i)}return s&&a}async function M(e,t,n=""){let r=await A(f,"");let i=l.convertToObject(r);const o=l.read(e,t,n,false,i);return o}async function R(e,t=""){let n=await A(f,"");let r=l.convertToObject(n);const i=l.del(e,t,r);n=JSON.stringify(r,"","\t");const o=await k(f,"",n);return i&&o}async function q(e){let t=await A(f,"");let n=l.convertToObject(t);const r=l.allSessions(e,n);return r}return{init:r,getToken:b,setEnv:S,setEnvs:N,getEnv:E,getEnvs:O,delEnvs:v,disableEnvs:T,enbleEnvs:w,addScript:C,getScript:A,editScript:k,delScript:L,write:F,read:M,del:R,update:j,allSessions:q}} \ No newline at end of file diff --git a/script/smzdm/smzdm_daily.lnplugin b/script/smzdm/smzdm_daily.lnplugin new file mode 100644 index 000000000..a74af2eec --- /dev/null +++ b/script/smzdm/smzdm_daily.lnplugin @@ -0,0 +1,13 @@ +#!name= 什么值得买 +#!desc= 什么值得买每日签到、抽奖与任务 +#!openUrl=https://github.com/blackmatrix7/ios_rule_script/tree/master/script/smzdm +#!author= blackmatrix7 +#!homepage= https://github.com/blackmatrix7/ios_rule_script +#!icon= https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/script/smzdm/smzdm.png + +[Script] +http-request ^https?:\/\/zhiyou\.smzdm\.com\/user$ script-path=https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/script/smzdm/smzdm_daily.js,tag=什么值得买_获取Cookie +cron "30 9 * * *" script-path=https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/script/smzdm/smzdm_daily.js,timeout=60,tag=什么值得买_每日签到 + +[MITM] +hostname = zhiyou.smzdm.com \ No newline at end of file diff --git a/script/smzdm/smzdm_daily.qxrewrite b/script/smzdm/smzdm_daily.qxrewrite new file mode 100644 index 000000000..7a5cec23a --- /dev/null +++ b/script/smzdm/smzdm_daily.qxrewrite @@ -0,0 +1,6 @@ +# 什么值得买每日自动签到 + +^https?:\/\/zhiyou\.smzdm\.com\/user$ url script-request-header https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/script/smzdm/smzdm_daily.js +# ^https?:\/\/user-api\.smzdm\.com\/user_login\/normal$ url script-request-body https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/script/smzdm/smzdm_daily.js + +hostname = zhiyou.smzdm.com \ No newline at end of file diff --git a/script/smzdm/smzdm_signin.sgmodule b/script/smzdm/smzdm_daily.sgmodule similarity index 71% rename from script/smzdm/smzdm_signin.sgmodule rename to script/smzdm/smzdm_daily.sgmodule index 8d7e25a2f..d1de039b6 100644 --- a/script/smzdm/smzdm_signin.sgmodule +++ b/script/smzdm/smzdm_daily.sgmodule @@ -3,8 +3,8 @@ #!system=ios [Script] -什么值得买_每日签到 = script-path=https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/script/smzdm/smzdm_signin.js,timeout=120,type=cron,cronexp=5 0 * * * -什么值得买_获取cookie = script-path=https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/script/smzdm/smzdm_signin.js,type=http-request,requires-body=true,pattern=^https?:\/\/zhiyou\.smzdm\.com\/user$ +什么值得买_每日签到 = script-path=https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/script/smzdm/smzdm_daily.js,timeout=120,type=cron,cronexp=5 0 * * * +什么值得买_获取cookie = script-path=https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/script/smzdm/smzdm_daily.js,type=http-request,requires-body=false,pattern=^https?:\/\/zhiyou\.smzdm\.com\/user$ [MITM] hostname = %APPEND% zhiyou.smzdm.com \ No newline at end of file diff --git a/script/smzdm/smzdm_mission.js b/script/smzdm/smzdm_mission.js deleted file mode 100644 index f39c90a9e..000000000 --- a/script/smzdm/smzdm_mission.js +++ /dev/null @@ -1,571 +0,0 @@ -const smzdmCookieKey = "smzdm_cookie"; -const scriptName = "什么值得买"; -let clickGoBuyMaxTimes = 0; // 好价点击去购买的次数 -let clickLikeProductMaxTimes = 0; // 好价点值次数 -let clickLikeArticleMaxTimes = 0; // 好文点赞次数 -let clickFavArticleMaxTimes = 7; // 好文收藏次数 - -let magicJS = MagicJS(scriptName, "INFO"); -magicJS.barkUrl = magicJS.read("smzdm_unified_push_url") || magicJS.read("magicjs_unified_push_url"); - -// 获取点击去购买和点值的链接 -function GetProductList() { - return new Promise((resolve, reject) => { - let getGoBuyOptions = { - url: "https://faxian.smzdm.com/", - headers: { - "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9", - "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6", - "Cache-Control": "max-age=0", - "Connection": "keep-alive", - "Host": "www.smzdm.com", - "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36 Edg/84.0.522.52", - }, - body: "", - }; - magicJS.get(getGoBuyOptions, (err, resp, data) => { - if (err) { - reject(err); - } else { - // 获取每日去购买的链接 - let goBuyList = data.match(/https?:\/\/go\.smzdm\.com\/[0-9a-zA-Z]*\/[^"']*_0/gi); - if (!!goBuyList) { - // 去除重复的商品链接 - let goBuyDict = {}; - goBuyList.forEach((element) => { - let productCode = element.match(/https?:\/\/go\.smzdm\.com\/[0-9a-zA-Z]*\/([^"']*_0)/)[1]; - goBuyDict[productCode] = element; - }); - goBuyList = Object.values(goBuyDict); - magicJS.logDebug(`当前获取的每日去购买链接: ${JSON.stringify(goBuyList)}`); - } else { - goBuyList = []; - } - - // 获取每日点值的链接 - let productUrlList = data.match(/https?:\/\/www\.smzdm\.com\/p\/[0-9]*/gi); - let likeProductList = []; - if (!!productUrlList) { - productUrlList.forEach((element) => { - likeProductList.push(element.match(/https?:\/\/www\.smzdm\.com\/p\/([0-9]*)/)[1]); - }); - } - resolve([goBuyList, likeProductList]); - } - }); - }); -} - -// 获取点赞和收藏的好文Id -function GetDataArticleIdList() { - return new Promise((resolve, reject) => { - let getArticleOptions = { - url: "https://post.smzdm.com/", - headers: { - "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9", - "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6", - "Host": "post.smzdm.com", - "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36 Edg/85.0.564.41", - }, - body: "", - }; - magicJS.get(getArticleOptions, (err, resp, data) => { - if (err) { - magicJS.logWarning(`获取好文列表失败,请求异常:${err}`); - reject("GetArticleListErr"); - } else { - try { - let articleList = data.match(/data-article=".*" data-type="zan"/gi); - let result = []; - articleList.forEach((element) => { - result.push(element.match(/data-article="(.*)" data-type="zan"/)[1]); - }); - resolve(result); - } catch (err) { - magicJS.logWarning(`获取好文列表失败,执行异常:${err}`); - reject("GetArticleListErr"); - } - } - }); - }); -} - -// 点击去购买 -function ClickGoBuyButton(cookie, url) { - return new Promise((resolve) => { - let clickGoBuyOptions = { - url: url, - headers: { - Cookie: cookie, - }, - }; - magicJS.get(clickGoBuyOptions, (err, resp, data) => { - resolve(); - }); - }); -} - -// 好价点值 -function ClickLikeProduct(cookie, articleId) { - return new Promise((resolve) => { - let ClickLikeProductOptions = { - url: "https://zhiyou.smzdm.com/user/rating/ajax_add", - headers: { - "Accept": "application/json, text/javascript, */*; q=0.01", - "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6", - "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8", - "Host": "zhiyou.smzdm.com", - "Origin": "https://faxian.smzdm.com", - "Referer": "https://faxian.smzdm.com/", - "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36 Edg/85.0.564.41", - "Cookie": cookie, - }, - body: `article_id=${articleId}&channel_id=3&rating=1&client_type=PC&event_key=%E7%82%B9%E5%80%BC&otype=%E5%80%BC&aid=${articleId}&p=16&cid=2&source=%E6%97%A0&atp=3&tagID=%E6%97%A0&sourcePage=https%3A%2F%2Ffaxian.smzdm.com%2F&sourceMode=%E6%97%A0`, - }; - magicJS.post(ClickLikeProductOptions, (err, resp, data) => { - if (err) { - magicJS.logWarning(`好价${articleId}点值失败,请求异常:${articleId}`); - resolve(false); - } else { - try { - let obj = JSON.parse(data); - if (obj.error_code == 0) { - magicJS.logDebug(`好价${articleId}点值成功`); - resolve(true); - } else if (obj.error_code == 1) { - magicJS.logDebug(`好价${articleId}点值重复点值`); - resolve(true); - } else { - magicJS.logWarning(`好价${articleId}点值失败,接口响应异常:${data}`); - resolve(false); - } - } catch (err) { - magicJS.logWarning(`好价${articleId}点值失败,执行异常:${articleId}`); - resolve(false); - } - } - }); - }); -} - -// 好文点赞 -function ClickLikeArticle(cookie, articleId) { - return new Promise((resolve) => { - let ClickLikeProductOptions = { - url: "https://zhiyou.smzdm.com/user/rating/ajax_add", - headers: { - "Accept": "application/json, text/javascript, */*; q=0.01", - "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6", - "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8", - "Host": "zhiyou.smzdm.com", - "Origin": "https://post.smzdm.com", - "Referer": "https://post.smzdm.com/", - "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36 Edg/85.0.564.41", - "Cookie": cookie, - }, - body: `article_id=${articleId}&channel_id=11&rating=1&client_type=PC&event_key=%E7%82%B9%E5%80%BC&otype=%E7%82%B9%E8%B5%9E&aid=${articleId}&p=2&cid=11&source=%E6%97%A0&atp=76&tagID=%E6%97%A0&sourcePage=https%3A%2F%2Fpost.smzdm.com%2F&sourceMode=%E6%97%A0`, - }; - magicJS.post(ClickLikeProductOptions, (err, resp, data) => { - if (err) { - magicJS.logWarning(`好文${articleId}点赞失败,请求异常:${articleId}`); - resolve(false); - } else { - try { - let obj = JSON.parse(data); - if (obj.error_code == 0) { - magicJS.logDebug(`好文${articleId}点赞成功`); - resolve(true); - } else if (obj.error_code == 1 && obj.error_msg == "已喜欢") { - magicJS.logDebug(`好文${articleId}点赞失败,重复点值。`); - resolve(false); - } else { - magicJS.logWarning(`好文${articleId}点赞失败,接口响应异常:${data}`); - resolve(false); - } - } catch (err) { - magicJS.logWarning(`好文${articleId}点赞失败,请求异常:${err}`); - resolve(false); - } - } - }); - }); -} - -// 好文收藏/取消收藏 -function ClickFavArticle(cookie, articleId) { - return new Promise((resolve) => { - let options = { - url: "https://zhiyou.smzdm.com/user/favorites/ajax_favorite", - headers: { - "Accept": "application/json, text/javascript, */*; q=0.01", - "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6", - "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8", - "Host": "zhiyou.smzdm.com", - "Origin": "https://post.smzdm.com", - "Referer": "https://post.smzdm.com/", - "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36 Edg/85.0.564.41", - "Cookie": cookie, - }, - body: `article_id=${articleId}&channel_id=11&client_type=PC&event_key=%E6%94%B6%E8%97%8F&otype=%E6%94%B6%E8%97%8F&aid=${articleId}&cid=11&p=2&source=%E6%97%A0&atp=76&tagID=%E6%97%A0&sourcePage=https%3A%2F%2Fpost.smzdm.com%2F&sourceMode=%E6%97%A0`, - }; - magicJS.post(options, (err, resp, data) => { - if (err) { - magicJS.logWarning(`好文${articleId}收藏失败,请求异常:${articleId}`); - resolve(false); - } else { - try { - let obj = JSON.parse(data); - if (obj.error_code == 0) { - magicJS.logDebug(`好文${articleId}收藏成功`); - resolve(true); - } else if (obj.error_code == 2) { - magicJS.logDebug(`好文${articleId}取消收藏成功`); - resolve(true); - } else { - magicJS.logWarning(`好文${articleId}收藏失败,接口响应异常:${data}`); - resolve(false); - } - } catch (err) { - magicJS.logWarning(`好文${articleId}收藏失败,请求异常:${err}`); - resolve(false); - } - } - }); - }); -} - -// 获取每日抽奖active_id -function GetLotteryActiveId(cookie) { - return new Promise((resolve) => { - let options = { - url: "https://m.smzdm.com/zhuanti/life/choujiang/", - 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", - "Cookie": cookie, - "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 9.9.6 rv:93.4 (iPhone13,4; iOS 14.5; zh_CN)/iphone_smzdmapp/9.9.6/wkwebview/jsbv_1.0.0", - }, - }; - magicJS.get(options, (err, resp, data) => { - if (err) { - magicJS.logWarning(`获取每日抽奖Id失败,请求异常:${err}`); - resolve("获取每日抽奖Id失败,请求异常"); - } else { - try { - let activeId = /name\s?=\s?\"lottery_activity_id\"\s+value\s?=\s?\"([a-zA-Z0-9]*)\"/.exec(data); - if (activeId) { - resolve(activeId[1]); - } else { - magicJS.logWarning(`获取每日抽奖activeId失败`); - resolve(""); - } - } catch (err) { - magicJS.logWarning(`获取每日抽奖activeId失败,请求异常:${err}`); - resolve(""); - } - } - }); - }); -} - -// 每日抽奖 -function LotteryDraw(cookie, activeId) { - return new Promise((resolve) => { - let options = { - 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", - "Cookie": cookie, - "Host": "zhiyou.smzdm.com", - "Referer": "https://m.smzdm.com/zhuanti/life/choujiang/", - "User-Agent": - "Mozilla/5.0 (iPhone; CPU iPhone OS 14_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148/smzdm 9.9.0 rv:91 (iPhone 11 Pro Max; iOS 14.2; zh_CN)/iphone_smzdmapp/9.9.0/wkwebview/jsbv_1.0.0", - }, - }; - magicJS.get(options, (err, resp, data) => { - if (err) { - magicJS.logWarning(`每日抽奖失败,请求异常:${err}`); - resolve("每日抽奖失败,请求异常"); - } else { - try { - let newData = /\((.*)\)/.exec(data); - let obj = JSON.parse(newData[1]); - if (obj.error_code === 0 || obj.error_code === 1 || obj.error_code === 4) { - magicJS.logInfo(`每日抽奖结果:${obj.error_msg}`); - resolve(obj.error_msg); - } else { - magicJS.logWarning(`每日抽奖失败,接口响应异常:${data}`); - resolve("每日抽奖失败,接口响应异常"); - } - } catch (err) { - magicJS.logWarning(`每日抽奖失败,请求异常:${err}`); - resolve("每日抽奖失败,请求异常"); - } - } - }); - }); -} - -// 获取用户信息,新版 -function WebGetCurrentInfoNewVersion(smzdmCookie) { - return new Promise((resolve) => { - let options = { - url: "https://zhiyou.smzdm.com/user/exp/", - headers: { - Cookie: smzdmCookie, - }, - body: "", - }; - magicJS.get(options, (err, resp, data) => { - if (err) { - magicJS.logError(`获取用户信息失败,异常信息:${err}`); - resolve([null, null, null, null, null, null, null]); - } else { - try { - // 获取用户名 - let userName = data.match(/info-stuff-nickname.*zhiyou\.smzdm\.com\/user[^<]*>([^<]*)(.*)<\/div>/gi); - let pointDetailList = data.match(/
(.*)<\/div>/gi); - let minLength = pointTimeList.length > pointDetailList.length ? pointDetailList.length : pointTimeList.length; - let userPointList = []; - for (let i = 0; i < minLength; i++) { - userPointList.push({ - time: pointTimeList[i].match(/\
(.*)\<\/div\>/)[1], - detail: pointDetailList[i].match(/\
(.*)\<\/div\>/)[1], - }); - } - // 获取用户资源 - let assetsNumList = data.match(/assets-part[^<]*>(.*)(.*)(.*)(.*)(.*)(.*) { - let webGetCurrentInfo = { - url: `https://zhiyou.smzdm.com/user/info/jsonp_get_current?with_avatar_ornament=1&callback=jQuery112403507528653716241_${new Date().getTime()}&_=${new Date().getTime()}`, - headers: { - "Accept": "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript, */*; q=0.01", - "Accept-Language": "zh-CN,zh;q=0.9", - "Connection": "keep-alive", - "DNT": "1", - "Host": "zhiyou.smzdm.com", - "Referer": "https://zhiyou.smzdm.com/user/", - "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36", - "Cookie": smzdmCookie, - }, - }; - magicJS.get(webGetCurrentInfo, (err, resp, data) => { - try { - let obj = JSON.parse(/\((.*)\)/.exec(data)[1]); - if (obj["smzdm_id"] !== 0) { - resolve([ - obj["nickname"], // 昵称 - `https:${obj["avatar"]}`, // 头像 - obj["vip_level"], // 新版VIP等级 - obj["checkin"]["has_checkin"], //是否签到 - Number(obj["checkin"]["daily_checkin_num"]), //连续签到天数 - Number(obj["unread"]["notice"]["num"]), // 未读消息 - Number(obj["level"]), // 旧版等级 - Number(obj["exp"]), // 旧版经验 - Number(obj["point"]), // 积分 - Number(obj["gold"]), // 金币 - Number(obj["silver"]), // 碎银子 - ]); - } else { - magicJS.logWarning(`获取用户信息异常,Cookie过期或接口变化:${data}`); - resolve([null, null, null, null, null, false, null, null]); - } - } catch (err) { - magicJS.logError(`获取用户信息异常,代码执行异常:${err},接口返回数据:${data}`); - resolve([null, null, null, null, null, false, null, null]); - } - }); - }); -} - -(async () => { - // 通知信息 - let title = ""; - let subTitle = ""; - let content = ""; - // 获取Cookie - let smzdmCookie = magicJS.read(smzdmCookieKey); - - if (!!smzdmCookie === false) { - magicJS.logWarning("没有读取到什么值得买有效cookie,请访问zhiyou.smzdm.com进行登录"); - magicJS.notify(scriptName, "", "❓没有获取到Web端Cookie,请先进行登录。"); - } else { - try { - // 任务完成情况 - let clickGoBuyTimes = 0; - let clickLikePrductTimes = 0; - let clickLikeArticleTimes = 0; - let clickFavArticleTimes = 0; - - // 查询签到前用户数据 - let [nickName, avatar, beforeVIPLevel, beforeHasCheckin, , beforeNotice, , , beforePoint, beforeGold, beforeSilver] = await WebGetCurrentInfo(smzdmCookie); - if (!nickName) { - magicJS.notify(scriptName, "", "❌Cookie过期或接口变化,请尝试重新登录"); - magicJS.done(); - } else { - let [, , , beforeExp, , beforePrestige] = await WebGetCurrentInfoNewVersion(smzdmCookie); - magicJS.logInfo( - `昵称:${nickName}\nWeb端签到状态:${beforeHasCheckin}\n签到前等级${beforeVIPLevel},积分${beforePoint},经验${beforeExp},金币${beforeGold},碎银子${beforeSilver}, 未读消息${beforeNotice}` - ); - - // 每日抽奖 - let activeId = await GetLotteryActiveId(smzdmCookie); - if (activeId) { - content = await LotteryDraw(smzdmCookie, activeId); - } - - // 获取去购买和好价Id列表 - let [, [goBuyList = [], likProductList = []]] = await magicJS.attempt(magicJS.retry(GetProductList, 5, 1000)(), [[], []]); - // 获取好文列表 - let [, articleList = []] = await magicJS.attempt(magicJS.retry(GetDataArticleIdList, 5, 1000)(), []); - - // 好价点击去购买,Web端点击已无奖励,放弃 - const clickGoBuyAsync = async () => { - let clickGoBuyList = goBuyList.splice(0, clickGoBuyMaxTimes); - if (clickGoBuyList.length > 0) { - for (let i = 0; i < clickGoBuyList.length; i++) { - await ClickGoBuyButton(smzdmCookie, clickGoBuyList[i]); - magicJS.logInfo(`完成第${i + 1}次“每日去购买”任务,点击链接:\n${clickGoBuyList[i]}`); - clickGoBuyTimes += 1; - await magicJS.sleep(3100); - } - } - }; - - // 好价点值 - const clickLikeProductAsync = async () => { - let clickLikeProductList = likProductList.splice(0, clickLikeProductMaxTimes); - if (clickLikeProductList.length > 0) { - for (let i = 0; i < clickLikeProductList.length; i++) { - await ClickLikeProduct(smzdmCookie, clickLikeProductList[i]); - magicJS.logInfo(`完成第${i + 1}次“好价点值”任务,好价Id:${clickLikeProductList[i]}`); - clickLikePrductTimes += 1; - await magicJS.sleep(3100); - } - } - }; - - // 好文点赞 - const clickLikeArticleAsync = async () => { - let likeArticleList = articleList.splice(0, clickLikeArticleMaxTimes); - if (likeArticleList.length > 0) { - for (let i = 0; i < likeArticleList.length; i++) { - await ClickLikeArticle(smzdmCookie, likeArticleList[i]); - magicJS.logInfo(`完成第${i + 1}次“好文点赞”任务,好文Id:${likeArticleList[i]}`); - clickLikeArticleTimes += 1; - await magicJS.sleep(3100); - } - } - }; - - // 好文收藏 - const clickFavArticleAsync = async () => { - let favArticleList = articleList.splice(0, clickFavArticleMaxTimes); - if (favArticleList.length > 0) { - // 好文收藏 - for (let i = 0; i < favArticleList.length; i++) { - await ClickFavArticle(smzdmCookie, articleList[i]); - magicJS.logInfo(`完成第${i + 1}次“好文收藏”任务,好文Id:${articleList[i]}`); - clickFavArticleTimes += 1; - await magicJS.sleep(3100); - } - // 取消收藏 - for (let i = 0; i < favArticleList.length; i++) { - await ClickFavArticle(smzdmCookie, articleList[i]); - magicJS.logInfo(`取消第${i + 1}次“好文收藏”任务的好文,好文Id:${articleList[i]}`); - await magicJS.sleep(3100); - } - } - }; - - await Promise.all([clickGoBuyAsync(), clickLikeProductAsync()]); - await Promise.all([clickLikeArticleAsync(), clickFavArticleAsync()]); - - // 查询签到后用户数据 - await magicJS.sleep(3000); - let [, , afterVIPLevel, afterHasCheckin, afterCheckinNum, afterNotice, , , afterPoint, afterGold, afterSilver] = await WebGetCurrentInfo(smzdmCookie); - let [, afteruserPointList, , afterExp, , afterPrestige] = await WebGetCurrentInfoNewVersion(smzdmCookie); - magicJS.logInfo( - `昵称:${nickName}\nWeb端签到状态:${afterHasCheckin}\n签到后等级${afterVIPLevel},积分${afterPoint},经验${afterExp},金币${afterGold},碎银子${afterSilver},未读消息${afterNotice}` - ); - - // 通知内容 - if (afterExp && beforeExp) { - let addPoint = afterPoint - beforePoint; - let addExp = afterExp - beforeExp; - let addGold = afterGold - beforeGold; - // let addPrestige = afterPrestige - beforePrestige; - let addSilver = afterSilver - beforeSilver; - content += !!content ? "\n" : ""; - content += - "积分" + - afterPoint + - (addPoint > 0 ? "(+" + addPoint + ")" : "") + - " 经验" + - afterExp + - (addExp > 0 ? "(+" + addExp + ")" : "") + - " 金币" + - afterGold + - (addGold > 0 ? "(+" + addGold + ")" : "") + - "\n" + - "碎银子" + - afterSilver + - (addSilver > 0 ? "(+" + addSilver + ")" : "") + - // ' 威望' + afterPrestige + (addPrestige > 0 ? '(+' + addPrestige + ')' : '') + - " 未读消息" + - afterNotice; - } - - content += `\n点值 ${clickLikePrductTimes}/${clickLikeProductMaxTimes} 去购买 ${clickGoBuyTimes}/${clickGoBuyMaxTimes}\n点赞 ${clickLikeArticleTimes}/${clickLikeArticleMaxTimes} 收藏 ${clickLikeArticleTimes}/${clickFavArticleTimes}`; - - content += !!content ? "\n" : ""; - if (afteruserPointList.length > 0) { - content += "用户近期经验变动情况(有延迟):"; - afteruserPointList.forEach((element) => { - content += `\n${element["time"]} ${element["detail"]}`; - }); - content += "\n如经验值无变动,请更新Cookie。"; - } else { - content += "没有获取到用户近期的经验变动情况"; - } - - title = `${scriptName} - ${nickName} V${afterVIPLevel}`; - magicJS.notify(title, subTitle, content, { "media-url": avatar }); - } - } catch (err) { - magicJS.logError(`执行任务出现异常:${err}`); - magicJS.notify(scriptName, "", "❌执行任务出现,请查阅日志"); - } - } - magicJS.done(); -})(); - -// prettier-ignore -function MagicJS(scriptName="MagicJS",logLevel="INFO"){return new class{constructor(){if(this.version="2.2.3.5",this.scriptName=scriptName,this.logLevels={DEBUG:5,INFO:4,NOTIFY:3,WARNING:2,ERROR:1,CRITICAL:0,NONE:-1},this.isLoon="undefined"!=typeof $loon,this.isQuanX="undefined"!=typeof $task,this.isJSBox="undefined"!=typeof $drive,this.isNode="undefined"!=typeof module&&!this.isJSBox,this.isSurge="undefined"!=typeof $httpClient&&!this.isLoon,this.node={request:void 0,fs:void 0,data:{}},this.iOSUserAgent="Mozilla/5.0 (iPhone; CPU iPhone OS 13_3_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.5 Mobile/15E148 Safari/604.1",this.pcUserAgent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36 Edg/84.0.522.59",this.logLevel=logLevel,this._barkUrl="",this._barkKey="",this.isNode){this.node.fs=require("fs"),this.node.request=require("request");try{this.node.fs.accessSync("./magic.json",this.node.fs.constants.R_OK|this.node.fs.constants.W_OK)}catch(err){this.node.fs.writeFileSync("./magic.json","{}",{encoding:"utf8"})}this.node.data=require("./magic.json")}else this.isJSBox&&($file.exists("drive://MagicJS")||$file.mkdir("drive://MagicJS"),$file.exists("drive://MagicJS/magic.json")||$file.write({data:$data({string:"{}"}),path:"drive://MagicJS/magic.json"}))}set barkUrl(url){try{let _url=url.replace(/\/+$/g,"");this._barkUrl=`${/^https?:\/\/([^/]*)/.exec(_url)[0]}/push`,this._barkKey=/\/([^\/]+)\/?$/.exec(_url)[1]}catch(err){this.logDebug("读取Bark推送链接失败。")}}set logLevel(level){this._logLevel="string"==typeof level?level.toUpperCase():"DEBUG"}get logLevel(){return this._logLevel}get isRequest(){return"undefined"!=typeof $request&&"undefined"==typeof $response}get isResponse(){return"undefined"!=typeof $response}get request(){return"undefined"!=typeof $request?$request:void 0}get response(){return"undefined"!=typeof $response?($response.hasOwnProperty("status")&&($response.statusCode=$response.status),$response.hasOwnProperty("statusCode")&&($response.status=$response.statusCode),$response):void 0}get platform(){return this.isSurge?"Surge":this.isQuanX?"Quantumult X":this.isLoon?"Loon":this.isJSBox?"JSBox":this.isNode?"Node.js":"Unknown"}read(key,session=""){let val="";this.isSurge||this.isLoon?val=$persistentStore.read(key):this.isQuanX?val=$prefs.valueForKey(key):this.isNode?val=this.node.data:this.isJSBox&&(val=$file.read("drive://MagicJS/magic.json").string);try{this.isNode&&(val=val[key]),this.isJSBox&&(val=JSON.parse(val)[key]),session&&("string"==typeof val&&(val=JSON.parse(val)),val=val&&"object"==typeof val?val[session]:null)}catch(err){this.logError(err),val=session?{}:null,this.del(key)}void 0===val&&(val=null);try{val&&"string"==typeof val&&(val=JSON.parse(val))}catch(err){}return this.logDebug(`READ DATA [${key}]${session?`[${session}]`:""}(${typeof val})\n${JSON.stringify(val)}`),val}write(key,val,session=""){let data=session?{}:"";if(session&&(this.isSurge||this.isLoon)?data=$persistentStore.read(key):session&&this.isQuanX?data=$prefs.valueForKey(key):this.isNode?data=this.node.data:this.isJSBox&&(data=JSON.parse($file.read("drive://MagicJS/magic.json").string)),session){try{"string"==typeof data&&(data=JSON.parse(data)),data="object"==typeof data&&data?data:{}}catch(err){this.logError(err),this.del(key),data={}}this.isJSBox||this.isNode?(data[key]&&"object"==typeof data[key]||(data[key]={}),data[key].hasOwnProperty(session)||(data[key][session]=null),void 0===val?delete data[key][session]:data[key][session]=val):void 0===val?delete data[session]:data[session]=val}else this.isNode||this.isJSBox?void 0===val?delete data[key]:data[key]=val:data=void 0===val?null:val;"object"==typeof data&&(data=JSON.stringify(data)),this.isSurge||this.isLoon?$persistentStore.write(data,key):this.isQuanX?$prefs.setValueForKey(data,key):this.isNode?this.node.fs.writeFileSync("./magic.json",data):this.isJSBox&&$file.write({data:$data({string:data}),path:"drive://MagicJS/magic.json"}),this.logDebug(`WRITE DATA [${key}]${session?`[${session}]`:""}(${typeof val})\n${JSON.stringify(val)}`)}del(key,session=""){this.logDebug(`DELETE KEY [${key}]${session?`[${session}]`:""}`),this.write(key,null,session)}notify(title=this.scriptName,subTitle="",body="",opts=""){let convertOptions;if(opts=(_opts=>{let newOpts={};if("string"==typeof _opts)this.isLoon?newOpts={openUrl:_opts}:this.isQuanX?newOpts={"open-url":_opts}:this.isSurge&&(newOpts={url:_opts});else if("object"==typeof _opts)if(this.isLoon)newOpts.openUrl=_opts["open-url"]?_opts["open-url"]:"",newOpts.mediaUrl=_opts["media-url"]?_opts["media-url"]:"";else if(this.isQuanX)newOpts=_opts["open-url"]||_opts["media-url"]?_opts:{};else if(this.isSurge){let openUrl=_opts["open-url"]||_opts.openUrl;newOpts=openUrl?{url:openUrl}:{}}return newOpts})(opts),1==arguments.length&&(title=this.scriptName,subTitle="",body=arguments[0]),this.logNotify(`title:${title}\nsubTitle:${subTitle}\nbody:${body}\noptions:${"object"==typeof opts?JSON.stringify(opts):opts}`),this.isSurge)$notification.post(title,subTitle,body,opts);else if(this.isLoon)opts?$notification.post(title,subTitle,body,opts):$notification.post(title,subTitle,body);else if(this.isQuanX)$notify(title,subTitle,body,opts);else if(this.isJSBox){let push={title:title,body:subTitle?`${subTitle}\n${body}`:body};$push.schedule(push)}this._barkUrl&&this._barkKey&&this.notifyBark(title,subTitle,body)}notifyDebug(title=this.scriptName,subTitle="",body="",opts=""){"DEBUG"===this.logLevel&&(1==arguments.length&&(title=this.scriptName,subTitle="",body=arguments[0]),this.notify(title,subTitle,body,opts))}notifyBark(title=this.scriptName,subTitle="",body="",opts=""){let options={url:this._barkUrl,headers:{"Content-Type":"application/json; charset=utf-8"},body:{title:title,body:subTitle?`${subTitle}\n${body}`:body,device_key:this._barkKey}};this.post(options,err=>{})}log(msg,level="INFO"){this.logLevels[this._logLevel]void 0===_options.body?"":`${encodeURIComponent(key)}=${encodeURIComponent(_options.body[key])}`).join("&");_options.url.indexOf("?")<0&&(_options.url+="?"),_options.url.lastIndexOf("&")+1!=_options.url.length&&_options.url.lastIndexOf("?")+1!=_options.url.length&&(_options.url+="&"),_options.url+=qs,delete _options.body}return this.isQuanX?(_options.hasOwnProperty("body")&&"string"!=typeof _options.body&&(_options.body=JSON.stringify(_options.body)),_options.method=method):this.isNode?(delete _options.headers["Accept-Encoding"],"object"==typeof _options.body&&("GET"===method?(_options.qs=_options.body,delete _options.body):"POST"===method&&(_options.json=!0,_options.body=_options.body))):this.isJSBox&&(_options.header=_options.headers,delete _options.headers),_options}adapterHttpResponse(resp){let _resp={body:resp.body,headers:resp.headers,json:()=>JSON.parse(_resp.body)};return resp.hasOwnProperty("statusCode")&&resp.statusCode&&(_resp.status=resp.statusCode),_resp}get(options,callback){let _options=this.adapterHttpOptions(options,"GET");this.logDebug(`HTTP GET: ${JSON.stringify(_options)}`),this.isSurge||this.isLoon?$httpClient.get(_options,callback):this.isQuanX?$task.fetch(_options).then(resp=>{resp.status=resp.statusCode,callback(null,resp,resp.body)},reason=>callback(reason.error,null,null)):this.isNode?this.node.request.get(_options,(err,resp,data)=>{resp=this.adapterHttpResponse(resp),callback(err,resp,data)}):this.isJSBox&&(_options.handler=resp=>{let err=resp.error?JSON.stringify(resp.error):void 0,data="object"==typeof resp.data?JSON.stringify(resp.data):resp.data;callback(err,resp.response,data)},$http.get(_options))}getPromise(options){return new Promise((resolve,reject)=>{magicJS.get(options,(err,resp)=>{err?reject(err):resolve(resp)})})}post(options,callback){let _options=this.adapterHttpOptions(options,"POST");if(this.logDebug(`HTTP POST: ${JSON.stringify(_options)}`),this.isSurge||this.isLoon)$httpClient.post(_options,callback);else if(this.isQuanX)$task.fetch(_options).then(resp=>{resp.status=resp.statusCode,callback(null,resp,resp.body)},reason=>{callback(reason.error,null,null)});else if(this.isNode){let resp=this.node.request.post(_options,callback);resp.status=resp.statusCode,delete resp.statusCode}else this.isJSBox&&(_options.handler=resp=>{let err=resp.error?JSON.stringify(resp.error):void 0,data="object"==typeof resp.data?JSON.stringify(resp.data):resp.data;callback(err,resp.response,data)},$http.post(_options,{}))}get http(){return{get:this.getPromise,post:this.post}}done(value={}){"undefined"!=typeof $done&&$done(value)}isToday(day){if(null==day)return!1;{let today=new Date;return"string"==typeof day&&(day=new Date(day)),today.getFullYear()==day.getFullYear()&&today.getMonth()==day.getMonth()&&today.getDay()==day.getDay()}}isNumber(val){return"NaN"!==parseFloat(val).toString()}attempt(promise,defaultValue=null){return promise.then(args=>[null,args]).catch(ex=>(this.logError(ex),[ex,defaultValue]))}retry(fn,retries=5,interval=0,callback=null){return(...args)=>new Promise((resolve,reject)=>{function _retry(...args){Promise.resolve().then(()=>fn.apply(this,args)).then(result=>{"function"==typeof callback?Promise.resolve().then(()=>callback(result)).then(()=>{resolve(result)}).catch(ex=>{retries>=1?interval>0?setTimeout(()=>_retry.apply(this,args),interval):_retry.apply(this,args):reject(ex),retries--}):resolve(result)}).catch(ex=>{this.logRetry(ex),retries>=1&&interval>0?setTimeout(()=>_retry.apply(this,args),interval):retries>=1?_retry.apply(this,args):reject(ex),retries--})}_retry.apply(this,args)})}formatTime(time,fmt="yyyy-MM-dd hh:mm:ss"){var o={"M+":time.getMonth()+1,"d+":time.getDate(),"h+":time.getHours(),"m+":time.getMinutes(),"s+":time.getSeconds(),"q+":Math.floor((time.getMonth()+3)/3),S:time.getMilliseconds()};/(y+)/.test(fmt)&&(fmt=fmt.replace(RegExp.$1,(time.getFullYear()+"").substr(4-RegExp.$1.length)));for(let k in o)new RegExp("("+k+")").test(fmt)&&(fmt=fmt.replace(RegExp.$1,1==RegExp.$1.length?o[k]:("00"+o[k]).substr((""+o[k]).length)));return fmt}now(){return this.formatTime(new Date,"yyyy-MM-dd hh:mm:ss")}today(){return this.formatTime(new Date,"yyyy-MM-dd")}sleep(time){return new Promise(resolve=>setTimeout(resolve,time))}}(scriptName)} diff --git a/script/smzdm/smzdm_mission.lnscript b/script/smzdm/smzdm_mission.lnscript deleted file mode 100644 index 2f94612b8..000000000 --- a/script/smzdm/smzdm_mission.lnscript +++ /dev/null @@ -1,6 +0,0 @@ -# 什么值得买每日自动任务 - -http-request ^https?:\/\/zhiyou\.smzdm\.com\/user$ requires-body=1,script-path=https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/script/smzdm/smzdm_signin.js,tag=什么值得买_获取cookie -cron "20 0 * * *" script-path=https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/script/smzdm/smzdm_mission.js,timeout=120,tag=什么值得买_每日任务 - -hostname = zhiyou.smzdm.com \ No newline at end of file diff --git a/script/smzdm/smzdm_mission.qxrewrite b/script/smzdm/smzdm_mission.qxrewrite deleted file mode 100644 index 38dff8039..000000000 --- a/script/smzdm/smzdm_mission.qxrewrite +++ /dev/null @@ -1,6 +0,0 @@ -# 什么值得买每日自动签到 - -^https?:\/\/zhiyou\.smzdm\.com\/user$ url script-request-header https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/script/smzdm/smzdm_signin.js -^https?:\/\/user-api\.smzdm\.com\/user_login\/normal$ url script-request-body https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/script/smzdm/smzdm_mission.js - -hostname = zhiyou.smzdm.com \ No newline at end of file diff --git a/script/smzdm/smzdm_mission.sgmodule b/script/smzdm/smzdm_mission.sgmodule deleted file mode 100644 index 4299bd2c6..000000000 --- a/script/smzdm/smzdm_mission.sgmodule +++ /dev/null @@ -1,10 +0,0 @@ -#!name=什么值得买 -#!desc=什么值得买每日自动任务 -#!system=ios - -[Script] -什么值得买_每日任务 = script-path=https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/script/smzdm/smzdm_mission.js,timeout=120,type=cron,cronexp=20 0 * * * -什么值得买_获取cookie = script-path=https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/script/smzdm/smzdm_signin.js,type=http-request,requires-body=true,pattern=^https?:\/\/zhiyou\.smzdm\.com\/user$ - -[MITM] -hostname = %APPEND% zhiyou.smzdm.com \ No newline at end of file diff --git a/script/smzdm/smzdm_signin.js b/script/smzdm/smzdm_signin.js deleted file mode 100644 index 6114d2c10..000000000 --- a/script/smzdm/smzdm_signin.js +++ /dev/null @@ -1,344 +0,0 @@ -const zhiyouRegex = /^https?:\/\/zhiyou\.smzdm\.com\/user$/; -const smzdmCookieKey = 'smzdm_cookie'; -const smzdmSessionKey = 'smzdm_session'; -const scriptName = '什么值得买'; - -let magicJS = MagicJS(scriptName, "INFO"); -magicJS.barkUrl = magicJS.read('smzdm_unified_push_url') || magicJS.read('magicjs_unified_push_url'); - - -function randomStr(){ - let len = 17; - let char = '0123456789'; - let str = '' - for (i = 0; i < len; i++) { - str += char.charAt(Math.floor(Math.random() * char.length)); - } - return str; -} - -// Web端登录获取Cookie -function GetWebCookie() { - let match_str = magicJS.request.headers.Cookie.match(/sess=[^\s]*;/); - session_id = match_str != null ? match_str[0] : null; - // 获取新的session_id - if (session_id) { - // 获取持久化的session_id - old_session_id = magicJS.read(smzdmSessionKey) != null ? magicJS.read(smzdmSessionKey) : ''; - // 获取新的session_id - console.log({ 'old_session_id': old_session_id, 'new_session_id': session_id }); - // 比较差异 - if (old_session_id == session_id) { - magicJS.logInfo('网页版cookie没有变化,无需更新。'); - } - else { - // 持久化cookie - magicJS.write(smzdmSessionKey, session_id); - magicJS.write(smzdmCookieKey, magicJS.request.headers.Cookie); - magicJS.logInfo('写入cookie ' + magicJS.request.headers.Cookie); - magicJS.notify(scriptName, '', '🎈获取cookie成功!!'); - } - } - else { - magicJS.logError('没有读取到有效的Cookie信息。'); - } -} - -// Web端签到 -function WebSignin(cookie) { - return new Promise((resolve, reject) => { - let ts = Date.parse(new Date()); - let options = { - url : `https://zhiyou.smzdm.com/user/checkin/jsonp_checkin?callback=jQuery11240${randomStr()}_${ts}&_=${ts+3}`, - headers : { - 'Accept': '*/*', - 'Accept-Language': 'zh-cn', - 'Connection': 'keep-alive', - 'Host': 'zhiyou.smzdm.com', - 'Referer': 'https://www.smzdm.com/', - 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.5 Safari/605.1.15', - 'Cookie': cookie - } - }; - magicJS.get(options, (err, resp, data)=>{ - if (err) { - magicJS.logWarning('Web端签到出现异常:' + err); - reject('Web:签到异常'); - } - else{ - try { - let checkin_data = /\((.*)\)/.exec(data); - if (checkin_data){ - let checkin_obj = JSON.parse(checkin_data[1]); - if (!!checkin_obj && checkin_obj.hasOwnProperty('error_code')){ - if (checkin_obj.error_code == -1){ - magicJS.logWarning(`Web端签到出现异常,网络繁忙,接口返回:${data}`); - reject( 'Web:网络繁忙'); - } - else if (checkin_obj['error_code'] == 99){ - magicJS.logWarning('Web端Cookie已过期'); - resolve([false, 'Web:Cookie过期']); - } - else if (checkin_obj['error_code'] == 0){ - magicJS.logInfo('Web:签到成功'); - resolve([true, 'Web:签到成功']); - } - else{ - magicJS.logWarning(`Web端签到出现异常,接口返回数据不合法:${data}`); - reject('Web:返回错误'); - } - } - } - else{ - magicJS.logWarning(`Web端签到出现异常,接口返回数据不存在:${data}`); - reject('Web:签到异常'); - } - } - catch (err){ - magicJS.logWarning(`Web端签到出现异常,代码执行异常:${err},接口返回:${data}`); - reject('Web:执行异常'); - } - } - }) - }) -} - -function AppSignin(cookie){ - - function GetAppSigninBody(){ - let ts = new Date().getTime(); - let token = /sess=([^;]*)/.exec(cookie)[1]; - let sign = hex_md5(`f=android&sk=1&time=${ts}&token=${token}&v=10.0&weixin=0&key=apr1$AwP!wRRT$gJ/q.X24poeBInlUJC`).toUpperCase(); - return `touchstone_event=&v=10.0&sign=${sign}&weixin=0&time=${ts}&sk=1&token=${token}&f=android&captcha=` - } - - let options = { - url: "https://user-api.smzdm.com/checkin", - headers: { - "Accept": "*/*", - "Accept-Encoding": "gzip, deflate, br", - "Accept-Language": "zh-Hans-CN;q=1, en-CN;q=0.9", - "Connection": "keep-alive", - "Content-Type": "application/x-www-form-urlencoded", - "Cookie": cookie, - "Host": "user-api.smzdm.com" - }, - body: GetAppSigninBody() - }; - return new Promise((resolve, reject) => { - magicJS.post(options, (err, resp, data)=>{ - if (err){ - magicJS.logError(`APP签到失败,请求异常:${err}`); - reject('❌APP签到失败,请求异常,请查阅日志!'); - } - else{ - try{ - magicJS.logDebug(`App签到接口返回:${data}`); - let obj = typeof data === 'string'? JSON.parse(data) : data; - if (obj.error_code === '0' && obj.error_msg === '已签到'){ - resolve('APP:重复签到'); - } - if (obj.error_code === '0' && obj.error_msg.indexOf('签到成功') >= 0){ - resolve('APP:签到成功'); - } - else{ - reject('APP:签到异常'); - } - } - catch(err){ - magicJS.logError(`App签到失败,执行异常:${err},接口响应:${data}`); - reject('❌App签到失败,执行异常,请查阅日志!'); - } - } - }) - }); -} - -// 获取用户信息,新版 -function WebGetCurrentInfoNewVersion(smzdmCookie){ - return new Promise(resolve =>{ - let options ={ - url : 'https://zhiyou.smzdm.com/user/exp/', - headers : { - 'Cookie': smzdmCookie - }, - body: '' - }; - magicJS.get(options, (err, resp, data)=>{ - if (err){ - magicJS.logError(`获取用户信息失败,异常信息:${err}`); - resolve([null,null,null,null,null,null,null]); - } - else{ - try{ - // 获取用户名 - let userName =data.match(/info-stuff-nickname.*zhiyou\.smzdm\.com\/user[^<]*>([^<]*)(.*)<\/div>/ig); - let pointDetailList = data.match(/
(.*)<\/div>/ig); - let minLength = pointTimeList.length > pointDetailList.length ? pointDetailList.length : pointTimeList.length; - let userPointList = []; - for (let i=0;i(.*)\<\/div\>/)[1], - 'detail': pointDetailList[i].match(/\
(.*)\<\/div\>/)[1] - }); - } - // 获取用户资源 - let assetsNumList = data.match(/assets-part[^<]*>(.*)(.*)(.*)(.*)(.*)(.*) { - let webGetCurrentInfo = { - url : `https://zhiyou.smzdm.com/user/info/jsonp_get_current?with_avatar_ornament=1&callback=jQuery112403507528653716241_${new Date().getTime()}&_=${new Date().getTime()}`, - headers : { - 'Accept': 'text/javascript, application/javascript, application/ecmascript, application/x-ecmascript, */*; q=0.01', - 'Accept-Language': 'zh-CN,zh;q=0.9', - 'Connection': 'keep-alive', - 'DNT': '1', - 'Host': 'zhiyou.smzdm.com', - 'Referer': 'https://zhiyou.smzdm.com/user/', - 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36', - 'Cookie': smzdmCookie - } - }; - magicJS.get(webGetCurrentInfo, (err, resp, data)=>{ - try{ - let obj = JSON.parse(/\((.*)\)/.exec(data)[1]); - if (obj['smzdm_id'] !== 0){ - resolve([ - obj['nickname'], // 昵称 - `https:${obj['avatar']}`, // 头像 - obj['vip_level'], // 新版VIP等级 - obj['checkin']['has_checkin'], //是否签到 - Number(obj['checkin']['daily_checkin_num']), //连续签到天数 - Number(obj['unread']['notice']['num']), // 未读消息 - Number(obj['level']), // 旧版等级 - Number(obj['exp']), // 旧版经验 - Number(obj['point']), // 积分 - Number(obj['gold']), // 金币 - Number(obj['silver']) // 碎银子 - ]); - } - else { - magicJS.logWarning(`获取用户信息异常,Cookie过期或接口变化:${data}`); - resolve([null, null, null, null, null, false, null, null]); - } - } - catch (err){ - magicJS.logError(`获取用户信息异常,代码执行异常:${err},接口返回数据:${data}`); - resolve([null, null, null, null, null, false, null, null]); - } - }) - }); -} - -;(async() =>{ - if (magicJS.isRequest && zhiyouRegex.test(magicJS.request.url) && magicJS.request.method == 'GET'){ - GetWebCookie(); - } - else{ - // 通知信息 - let title = ''; - let subTitle = ''; - let content = ''; - // 获取Cookie - let smzdmCookie = magicJS.read(smzdmCookieKey); - - if (!!smzdmCookie === false){ - magicJS.logWarning('没有读取到什么值得买有效cookie,请访问zhiyou.smzdm.com进行登录'); - magicJS.notify(scriptName, '', '❓没有获取到Web端Cookie,请先进行登录。'); - } - else{ - try{ - - // 查询签到前用户数据 - let [nickName, avatar, beforeVIPLevel, beforeHasCheckin, , beforeNotice, , ,beforePoint, beforeGold, beforeSilver] = await WebGetCurrentInfo(smzdmCookie); - if (!nickName){ - magicJS.notify(scriptName, '', '❌Cookie过期或接口变化,请尝试重新登录'); - magicJS.done(); - } - else{ - let [, , , beforeExp, , beforePrestige, ] = await WebGetCurrentInfoNewVersion(smzdmCookie); - magicJS.logInfo(`昵称:${nickName}\nWeb端签到状态:${beforeHasCheckin}\n签到前等级${beforeVIPLevel},积分${beforePoint},经验${beforeExp},金币${beforeGold},碎银子${beforeSilver}, 未读消息${beforeNotice}`); - - // Web端签到及重试 - let webCheckinRetry = magicJS.retry(WebSignin, 5, 500); - let [webCheckinErr,[webCheckinResult, webCheckinStr]] = await magicJS.attempt(webCheckinRetry(smzdmCookie), [false, 'Web端签到异常']); - if (webCheckinErr){ - magicJS.logWarning('Web端签到异常:' + webCheckinErr); - magicJS.notify(webCheckinErr); - } - else{ - subTitle = webCheckinStr; - - // APP签到 - // await magicJS.sleep(5000); - // await AppSignin(smzdmCookie).then(signinStr => { - // subTitle += ` ${signinStr}`; - // }).catch(ex =>{ - // subTitle += ` ${ex}`; - // }) - - // 查询签到后用户数据 - await magicJS.sleep(3000); - let [, , afterVIPLevel, afterHasCheckin, afterCheckinNum, afterNotice, , , afterPoint, afterGold, afterSilver] = await WebGetCurrentInfo(smzdmCookie); - let [, afteruserPointList, , afterExp, ,afterPrestige, ] = await WebGetCurrentInfoNewVersion(smzdmCookie); - magicJS.logInfo(`昵称:${nickName}\nWeb端签到状态:${afterHasCheckin}\n签到后等级${afterVIPLevel},积分${afterPoint},经验${afterExp},金币${afterGold},碎银子${afterSilver},未读消息${afterNotice}`); - - if (beforeHasCheckin && afterHasCheckin){ - webCheckinStr = 'Web端重复签到'; - } - - if (!!afterCheckinNum) content += `已连续签到${afterCheckinNum}天`; - - // 通知内容 - if (afterExp && beforeExp){ - let addPoint = afterPoint - beforePoint; - let addExp = afterExp - beforeExp; - let addGold = afterGold - beforeGold; - // let addPrestige = afterPrestige - beforePrestige; - let addSilver = afterSilver - beforeSilver; - content += !!content? '\n' : ''; - content += '积分' + afterPoint + (addPoint > 0 ? '(+' + addPoint + ')' : '') + - ' 经验' + afterExp + (addExp > 0 ? '(+' + addExp + ')' : '') + - ' 金币' + afterGold + (addGold > 0 ? '(+' + addGold + ')' : '') + '\n' + - '碎银子' + afterSilver + (addSilver > 0 ? '(+' + addSilver + ')' : '') + - // ' 威望' + afterPrestige + (addPrestige > 0 ? '(+' + addPrestige + ')' : '') + - ' 未读消息' + afterNotice; - } - title = `${scriptName} - ${nickName} V${afterVIPLevel}`; - magicJS.notify(title, subTitle, content, {'media-url': avatar}); - } - } - } - catch(err){ - magicJS.logError(`签到出现异常:${err}`); - magicJS.notify(scriptName, '', '❌签到出现异常,请查阅日志'); - } - } - } - magicJS.done(); -})(); - -// prettier-ignore -function MagicJS(scriptName="MagicJS",logLevel="INFO"){return new class{constructor(){if(this.version="2.2.3.5",this.scriptName=scriptName,this.logLevels={DEBUG:5,INFO:4,NOTIFY:3,WARNING:2,ERROR:1,CRITICAL:0,NONE:-1},this.isLoon="undefined"!=typeof $loon,this.isQuanX="undefined"!=typeof $task,this.isJSBox="undefined"!=typeof $drive,this.isNode="undefined"!=typeof module&&!this.isJSBox,this.isSurge="undefined"!=typeof $httpClient&&!this.isLoon,this.node={request:void 0,fs:void 0,data:{}},this.iOSUserAgent="Mozilla/5.0 (iPhone; CPU iPhone OS 13_3_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.5 Mobile/15E148 Safari/604.1",this.pcUserAgent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36 Edg/84.0.522.59",this.logLevel=logLevel,this._barkUrl="",this._barkKey="",this.isNode){this.node.fs=require("fs"),this.node.request=require("request");try{this.node.fs.accessSync("./magic.json",this.node.fs.constants.R_OK|this.node.fs.constants.W_OK)}catch(err){this.node.fs.writeFileSync("./magic.json","{}",{encoding:"utf8"})}this.node.data=require("./magic.json")}else this.isJSBox&&($file.exists("drive://MagicJS")||$file.mkdir("drive://MagicJS"),$file.exists("drive://MagicJS/magic.json")||$file.write({data:$data({string:"{}"}),path:"drive://MagicJS/magic.json"}))}set barkUrl(url){try{let _url=url.replace(/\/+$/g,"");this._barkUrl=`${/^https?:\/\/([^/]*)/.exec(_url)[0]}/push`,this._barkKey=/\/([^\/]+)\/?$/.exec(_url)[1]}catch(err){this.logDebug("读取Bark推送链接失败。")}}set logLevel(level){this._logLevel="string"==typeof level?level.toUpperCase():"DEBUG"}get logLevel(){return this._logLevel}get isRequest(){return"undefined"!=typeof $request&&"undefined"==typeof $response}get isResponse(){return"undefined"!=typeof $response}get request(){return"undefined"!=typeof $request?$request:void 0}get response(){return"undefined"!=typeof $response?($response.hasOwnProperty("status")&&($response.statusCode=$response.status),$response.hasOwnProperty("statusCode")&&($response.status=$response.statusCode),$response):void 0}get platform(){return this.isSurge?"Surge":this.isQuanX?"Quantumult X":this.isLoon?"Loon":this.isJSBox?"JSBox":this.isNode?"Node.js":"Unknown"}read(key,session=""){let val="";this.isSurge||this.isLoon?val=$persistentStore.read(key):this.isQuanX?val=$prefs.valueForKey(key):this.isNode?val=this.node.data:this.isJSBox&&(val=$file.read("drive://MagicJS/magic.json").string);try{this.isNode&&(val=val[key]),this.isJSBox&&(val=JSON.parse(val)[key]),session&&("string"==typeof val&&(val=JSON.parse(val)),val=val&&"object"==typeof val?val[session]:null)}catch(err){this.logError(err),val=session?{}:null,this.del(key)}void 0===val&&(val=null);try{val&&"string"==typeof val&&(val=JSON.parse(val))}catch(err){}return this.logDebug(`READ DATA [${key}]${session?`[${session}]`:""}(${typeof val})\n${JSON.stringify(val)}`),val}write(key,val,session=""){let data=session?{}:"";if(session&&(this.isSurge||this.isLoon)?data=$persistentStore.read(key):session&&this.isQuanX?data=$prefs.valueForKey(key):this.isNode?data=this.node.data:this.isJSBox&&(data=JSON.parse($file.read("drive://MagicJS/magic.json").string)),session){try{"string"==typeof data&&(data=JSON.parse(data)),data="object"==typeof data&&data?data:{}}catch(err){this.logError(err),this.del(key),data={}}this.isJSBox||this.isNode?(data[key]&&"object"==typeof data[key]||(data[key]={}),data[key].hasOwnProperty(session)||(data[key][session]=null),void 0===val?delete data[key][session]:data[key][session]=val):void 0===val?delete data[session]:data[session]=val}else this.isNode||this.isJSBox?void 0===val?delete data[key]:data[key]=val:data=void 0===val?null:val;"object"==typeof data&&(data=JSON.stringify(data)),this.isSurge||this.isLoon?$persistentStore.write(data,key):this.isQuanX?$prefs.setValueForKey(data,key):this.isNode?this.node.fs.writeFileSync("./magic.json",data):this.isJSBox&&$file.write({data:$data({string:data}),path:"drive://MagicJS/magic.json"}),this.logDebug(`WRITE DATA [${key}]${session?`[${session}]`:""}(${typeof val})\n${JSON.stringify(val)}`)}del(key,session=""){this.logDebug(`DELETE KEY [${key}]${session?`[${session}]`:""}`),this.write(key,null,session)}notify(title=this.scriptName,subTitle="",body="",opts=""){let convertOptions;if(opts=(_opts=>{let newOpts={};if("string"==typeof _opts)this.isLoon?newOpts={openUrl:_opts}:this.isQuanX?newOpts={"open-url":_opts}:this.isSurge&&(newOpts={url:_opts});else if("object"==typeof _opts)if(this.isLoon)newOpts.openUrl=_opts["open-url"]?_opts["open-url"]:"",newOpts.mediaUrl=_opts["media-url"]?_opts["media-url"]:"";else if(this.isQuanX)newOpts=_opts["open-url"]||_opts["media-url"]?_opts:{};else if(this.isSurge){let openUrl=_opts["open-url"]||_opts.openUrl;newOpts=openUrl?{url:openUrl}:{}}return newOpts})(opts),1==arguments.length&&(title=this.scriptName,subTitle="",body=arguments[0]),this.logNotify(`title:${title}\nsubTitle:${subTitle}\nbody:${body}\noptions:${"object"==typeof opts?JSON.stringify(opts):opts}`),this.isSurge)$notification.post(title,subTitle,body,opts);else if(this.isLoon)opts?$notification.post(title,subTitle,body,opts):$notification.post(title,subTitle,body);else if(this.isQuanX)$notify(title,subTitle,body,opts);else if(this.isJSBox){let push={title:title,body:subTitle?`${subTitle}\n${body}`:body};$push.schedule(push)}this._barkUrl&&this._barkKey&&this.notifyBark(title,subTitle,body)}notifyDebug(title=this.scriptName,subTitle="",body="",opts=""){"DEBUG"===this.logLevel&&(1==arguments.length&&(title=this.scriptName,subTitle="",body=arguments[0]),this.notify(title,subTitle,body,opts))}notifyBark(title=this.scriptName,subTitle="",body="",opts=""){let options={url:this._barkUrl,headers:{"Content-Type":"application/json; charset=utf-8"},body:{title:title,body:subTitle?`${subTitle}\n${body}`:body,device_key:this._barkKey}};this.post(options,err=>{})}log(msg,level="INFO"){this.logLevels[this._logLevel]void 0===_options.body?"":`${encodeURIComponent(key)}=${encodeURIComponent(_options.body[key])}`).join("&");_options.url.indexOf("?")<0&&(_options.url+="?"),_options.url.lastIndexOf("&")+1!=_options.url.length&&_options.url.lastIndexOf("?")+1!=_options.url.length&&(_options.url+="&"),_options.url+=qs,delete _options.body}return this.isQuanX?(_options.hasOwnProperty("body")&&"string"!=typeof _options.body&&(_options.body=JSON.stringify(_options.body)),_options.method=method):this.isNode?(delete _options.headers["Accept-Encoding"],"object"==typeof _options.body&&("GET"===method?(_options.qs=_options.body,delete _options.body):"POST"===method&&(_options.json=!0,_options.body=_options.body))):this.isJSBox&&(_options.header=_options.headers,delete _options.headers),_options}adapterHttpResponse(resp){let _resp={body:resp.body,headers:resp.headers,json:()=>JSON.parse(_resp.body)};return resp.hasOwnProperty("statusCode")&&resp.statusCode&&(_resp.status=resp.statusCode),_resp}get(options,callback){let _options=this.adapterHttpOptions(options,"GET");this.logDebug(`HTTP GET: ${JSON.stringify(_options)}`),this.isSurge||this.isLoon?$httpClient.get(_options,callback):this.isQuanX?$task.fetch(_options).then(resp=>{resp.status=resp.statusCode,callback(null,resp,resp.body)},reason=>callback(reason.error,null,null)):this.isNode?this.node.request.get(_options,(err,resp,data)=>{resp=this.adapterHttpResponse(resp),callback(err,resp,data)}):this.isJSBox&&(_options.handler=resp=>{let err=resp.error?JSON.stringify(resp.error):void 0,data="object"==typeof resp.data?JSON.stringify(resp.data):resp.data;callback(err,resp.response,data)},$http.get(_options))}getPromise(options){return new Promise((resolve,reject)=>{magicJS.get(options,(err,resp)=>{err?reject(err):resolve(resp)})})}post(options,callback){let _options=this.adapterHttpOptions(options,"POST");if(this.logDebug(`HTTP POST: ${JSON.stringify(_options)}`),this.isSurge||this.isLoon)$httpClient.post(_options,callback);else if(this.isQuanX)$task.fetch(_options).then(resp=>{resp.status=resp.statusCode,callback(null,resp,resp.body)},reason=>{callback(reason.error,null,null)});else if(this.isNode){let resp=this.node.request.post(_options,callback);resp.status=resp.statusCode,delete resp.statusCode}else this.isJSBox&&(_options.handler=resp=>{let err=resp.error?JSON.stringify(resp.error):void 0,data="object"==typeof resp.data?JSON.stringify(resp.data):resp.data;callback(err,resp.response,data)},$http.post(_options,{}))}get http(){return{get:this.getPromise,post:this.post}}done(value={}){"undefined"!=typeof $done&&$done(value)}isToday(day){if(null==day)return!1;{let today=new Date;return"string"==typeof day&&(day=new Date(day)),today.getFullYear()==day.getFullYear()&&today.getMonth()==day.getMonth()&&today.getDay()==day.getDay()}}isNumber(val){return"NaN"!==parseFloat(val).toString()}attempt(promise,defaultValue=null){return promise.then(args=>[null,args]).catch(ex=>(this.logError(ex),[ex,defaultValue]))}retry(fn,retries=5,interval=0,callback=null){return(...args)=>new Promise((resolve,reject)=>{function _retry(...args){Promise.resolve().then(()=>fn.apply(this,args)).then(result=>{"function"==typeof callback?Promise.resolve().then(()=>callback(result)).then(()=>{resolve(result)}).catch(ex=>{retries>=1?interval>0?setTimeout(()=>_retry.apply(this,args),interval):_retry.apply(this,args):reject(ex),retries--}):resolve(result)}).catch(ex=>{this.logRetry(ex),retries>=1&&interval>0?setTimeout(()=>_retry.apply(this,args),interval):retries>=1?_retry.apply(this,args):reject(ex),retries--})}_retry.apply(this,args)})}formatTime(time,fmt="yyyy-MM-dd hh:mm:ss"){var o={"M+":time.getMonth()+1,"d+":time.getDate(),"h+":time.getHours(),"m+":time.getMinutes(),"s+":time.getSeconds(),"q+":Math.floor((time.getMonth()+3)/3),S:time.getMilliseconds()};/(y+)/.test(fmt)&&(fmt=fmt.replace(RegExp.$1,(time.getFullYear()+"").substr(4-RegExp.$1.length)));for(let k in o)new RegExp("("+k+")").test(fmt)&&(fmt=fmt.replace(RegExp.$1,1==RegExp.$1.length?o[k]:("00"+o[k]).substr((""+o[k]).length)));return fmt}now(){return this.formatTime(new Date,"yyyy-MM-dd hh:mm:ss")}today(){return this.formatTime(new Date,"yyyy-MM-dd")}sleep(time){return new Promise(resolve=>setTimeout(resolve,time))}}(scriptName)} - -function hex_md5(r){return rstr2hex(rstr_md5(str2rstr_utf8(r)))}function b64_md5(r){return rstr2b64(rstr_md5(str2rstr_utf8(r)))}function any_md5(r,t){return rstr2any(rstr_md5(str2rstr_utf8(r)),t)}function hex_hmac_md5(r,t){return rstr2hex(rstr_hmac_md5(str2rstr_utf8(r),str2rstr_utf8(t)))}function b64_hmac_md5(r,t){return rstr2b64(rstr_hmac_md5(str2rstr_utf8(r),str2rstr_utf8(t)))}function any_hmac_md5(r,t,d){return rstr2any(rstr_hmac_md5(str2rstr_utf8(r),str2rstr_utf8(t)),d)}function md5_vm_test(){return"900150983cd24fb0d6963f7d28e17f72"==hex_md5("abc").toLowerCase()}function rstr_md5(r){return binl2rstr(binl_md5(rstr2binl(r),8*r.length))}function rstr_hmac_md5(r,t){var d=rstr2binl(r);d.length>16&&(d=binl_md5(d,8*r.length));for(var n=Array(16),_=Array(16),m=0;m<16;m++)n[m]=909522486^d[m],_[m]=1549556828^d[m];var f=binl_md5(n.concat(rstr2binl(t)),512+8*t.length);return binl2rstr(binl_md5(_.concat(f),640))}function rstr2hex(r){for(var t,d=hexcase?"0123456789ABCDEF":"0123456789abcdef",n="",_=0;_>>4&15)+d.charAt(15&t);return n}function rstr2b64(r){for(var t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",d="",n=r.length,_=0;_8*r.length?d+=b64pad:d+=t.charAt(m>>>6*(3-f)&63);return d}function rstr2any(r,t){var d,n,_,m,f,h=t.length,e=Array(Math.ceil(r.length/2));for(d=0;d0||_>0)&&(f[f.length]=_);i[n]=m,e=f}var o="";for(d=i.length-1;d>=0;d--)o+=t.charAt(i[d]);return o}function str2rstr_utf8(r){for(var t,d,n="",_=-1;++_>>6&31,128|63&t):t<=65535?n+=String.fromCharCode(224|t>>>12&15,128|t>>>6&63,128|63&t):t<=2097151&&(n+=String.fromCharCode(240|t>>>18&7,128|t>>>12&63,128|t>>>6&63,128|63&t));return n}function str2rstr_utf16le(r){for(var t="",d=0;d>>8&255);return t}function str2rstr_utf16be(r){for(var t="",d=0;d>>8&255,255&r.charCodeAt(d));return t}function rstr2binl(r){for(var t=Array(r.length>>2),d=0;d>5]|=(255&r.charCodeAt(d/8))<>5]>>>d%32&255);return t}function binl_md5(r,t){r[t>>5]|=128<>>9<<4)]=t;for(var d=1732584193,n=-271733879,_=-1732584194,m=271733878,f=0;f>16)+(t>>16)+(d>>16);return n<<16|65535&d}function bit_rol(r,t){return r<>>32-t}var hexcase=0,b64pad=""; \ No newline at end of file diff --git a/script/smzdm/smzdm_signin.lnscript b/script/smzdm/smzdm_signin.lnscript deleted file mode 100644 index 7fab4fd84..000000000 --- a/script/smzdm/smzdm_signin.lnscript +++ /dev/null @@ -1,6 +0,0 @@ -# 什么值得买每日自动签到 - -http-request ^https?:\/\/zhiyou\.smzdm\.com\/user$ requires-body=1,script-path=https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/script/smzdm/smzdm_signin.js,tag=什么值得买_获取cookie -cron "5 0 * * *" script-path=https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/script/smzdm/smzdm_signin.js,timeout=120,tag=什么值得买_每日任务 - -hostname = zhiyou.smzdm.com \ No newline at end of file diff --git a/script/smzdm/smzdm_signin.qxrewrite b/script/smzdm/smzdm_signin.qxrewrite deleted file mode 100644 index d9cf5b4e5..000000000 --- a/script/smzdm/smzdm_signin.qxrewrite +++ /dev/null @@ -1,6 +0,0 @@ -# 什么值得买每日自动签到 - -^https?:\/\/zhiyou\.smzdm\.com\/user$ url script-request-header https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/script/smzdm/smzdm_signin.js -^https?:\/\/user-api\.smzdm\.com\/user_login\/normal$ url script-request-body https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/script/smzdm/smzdm_signin.js - -hostname = zhiyou.smzdm.com \ No newline at end of file