shawenguan 1 год назад
Родитель
Сommit
97d4cef1fe
1 измененных файлов с 527 добавлено и 527 удалено
  1. 527 527
      Scripts/smzdm/smzdmHelper.js

+ 527 - 527
Scripts/smzdm/smzdmHelper.js

@@ -65,533 +65,533 @@ magicJS.http.interceptors.request.use((config) => {
     return config;
 });
 
-// Web端登录获取Cookie
-async function getWebOrAppCookie() {
-    try {
-        currentCookie = magicJS.request.headers.cookie || magicJS.request.headers.Cookie;
-        if (currentCookie.length >= 200) {
-            magicJS.logger.info(`当前页面获取的Cookie: ${currentCookie}`);
-            const cookieId = currentCookie.match(/(session_id|__ckguid)=([^;.]*)/ig)[0];
-            magicJS.logger.info(`当前页面获取的CookieId\n${cookieId}`);
-            // 获取新的session_id
-            if (cookieId) {
-                const userInfo = await getWebUserInfo();
-                // 获取持久化的session_id
-                let oldCookieId = magicJS.data.read(smzdmCookieIdKey, "", userInfo.smzdm_id);
-                magicJS.logger.info(`从客户端存储池中读取的CookieId\n${oldCookieId}`);
-                // 获取新的session_id
-                magicJS.logger.info(
-                    `旧的CookieId:\n${oldCookieId}\n新的CookieId:\n${cookieId}`
-                );
-                // 比较差异
-                if (oldCookieId === cookieId.trim()) {
-                    magicJS.logger.info(
-                        "当前页面获取的Cookie与客户端存储的Cookie相同,无需更新。"
-                    );
-                } else {
-                    magicJS.data.write(smzdmCookieIdKey, cookieId, userInfo.smzdm_id);
-                    magicJS.data.write(smzdmCookieKey, currentCookie, userInfo.smzdm_id);
-                    magicJS.logger.info(`写入cookie\n${currentCookie}`);
-                    magicJS.notification.post(scriptName, "", "🎈获取Cookie成功!!");
-                }
-
-                // 同步到青龙面板
-                if (magicJS.data.read(smzdmSyncQinglongKey, false) === true) {
-                    oldCookieId = await magicJS.qinglong.read(
-                        smzdmCookieIdKey,
-                        "",
-                        userInfo.smzdm_id
-                    );
-                    magicJS.logger.info(`从青龙面板读取的CookieId\n${oldCookieId}`);
-                    if (oldCookieId !== cookieId) {
-                        await magicJS.qinglong.write(
-                            smzdmCookieIdKey,
-                            cookieId,
-                            userInfo.smzdm_id
-                        );
-                        await magicJS.qinglong.write(
-                            smzdmCookieKey,
-                            currentCookie,
-                            userInfo.smzdm_id
-                        );
-                        magicJS.logger.info(`同步cookie\n${currentCookie}`);
-                        magicJS.notification.post(
-                            `${scriptName} - ${userInfo.smzdm_id}`,
-                            "",
-                            `已将您的信息同步至青龙面板:\n${magicJS.qinglong.url}\n如上述地址不是您所配置,则信息已泄露!\n请立即停用脚本,更改密码!\n检查青龙面板配置是否被篡改!`
-                        );
-                    } else {
-                        magicJS.logger.info(
-                            `当前页面获取的Cookie与青龙面板存储的Cookie相同,无需更新。`
-                        );
-                    }
-                }
-            }
-        } else {
-            magicJS.logger.warning("没有读取到有效的Cookie信息。");
-        }
-    } catch (err) {
-        magicJS.logger.error(`获取什么值得买Cookies出现异常,${err}`);
-    }
-}
-
-// Web端签到,已失效
-function webSignin() {
-    return new Promise((resolve, reject) => {
-        let ts = Date.parse(new Date());
-        magicJS.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": webUserAgent,
-                },
-            }).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) {
-                            magicJS.logger.warning(
-                                `Web端签到出现异常,网络繁忙,接口返回:${data}`
-                            );
-                            reject("Web:网络繁忙");
-                        } else if (obj["error_code"] === 99) {
-                            magicJS.logger.warning("Web端Cookie已过期");
-                            resolve([false, "Web:Cookie过期"]);
-                        } else if (obj["error_code"] === 0) {
-                            magicJS.logger.info("Web:签到成功");
-                            resolve([true, "Web:签到成功"]);
-                        } else {
-                            magicJS.logger.warning(
-                                `Web端签到出现异常,接口返回数据不合法:${data}`
-                            );
-                            reject("Web:返回错误");
-                        }
-                    }
-                } else {
-                    magicJS.logger.warning(`Web端签到出现异常,接口返回数据不存在:${data}`);
-                    reject("Web:签到异常");
-                }
-            }).catch((err) => {
-                magicJS.logger.error(`Web端签到出现异常,${err}`);
-                reject("Web:签到异常");
-            });
-    });
-}
-
-function androidSignin(username) {
-    return new Promise(async (resolve, reject) => {
-        const smzdmToken = currentCookie.slice(5);
-        const smzdmKey = 'apr1$AwP!wRRT$gJ/q.X24poeBInlUJC';
-        const outcome = Math.round(new Date().getTime() / 1000).toString();
-        const rawData = `f=android&sk=${username}&time=${outcome}000&token=${smzdmToken}&v=9.9.12&weixin=1&key=${smzdmKey}`;
-        let md5 = createWMd5();
-        const sign = md5..hex_md5_32Upper(rawData);
-        await magicJS.http.post({
-            url: "https://user-api.smzdm.com/checkin",
-            headers: {
-                'User-Agent': appUserAgent,
-                'Accept-Language': 'zh-Hans-CN;q=1',
-                'Accept-Encoding': 'gzip, deflate, br',
-                'Connection': 'Keep-Alive',
-                'request_key': randomStr(18),
-                'Content-Type': 'application/x-www-form-urlencoded'
-            },
-            body: `sk=${username}&sign=${sign}&weixin=1&v=9.9.12&captcha=&f=android&token=${encodeURIComponent(smzdmToken)}&touchstone_event=&time=${outcome}000`,
-        }).then(resp => {
-            let obj = resp.body;
-            if (typeof obj === "string") {
-                obj = JSON.parse(obj);
-            }
-            if (obj["error_code"] === "0" && obj["error_msg"].indexOf("签到成功") > -1) {
-                magicJS.logger.info("Android端签到成功");
-                resolve([true, "Android端签到成功"]);
-            } else if (obj["error_code"] === "0" && obj["error_msg"] === "已签到") {
-                magicJS.logger.info("Android端重复签到");
-                resolve([true, "Android端重复签到"]);
-            } else {
-                magicJS.logger.warning(`Android端签到出现异常,接口返回数据不合法:${obj}`);
-                reject("Android端签到异常");
-            }
-        })
-    });
-}
-
-// 获取用户信息
-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 magicJS.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": webUserAgent,
-                },
-            }).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 {
-                    magicJS.logger.warning(
-                        `获取用户信息异常,Cookie过期或接口变化:${JSON.stringify(obj)}`
-                    );
-                }
-            }).catch((err) => {
-                magicJS.logger.error(`获取用户信息异常,${err}`);
-            });
-        // 获取新版用户信息
-        await magicJS.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[^<]*>([^<]*)</
-                    )[1]
-                    .trim();
-                // 获取近期经验变动情况
-                const pointTimeList = data.match(
-                    /<div class="scoreLeft">(.*)<\/div>/gi
-                );
-                const pointDetailList = data.match(
-                    /<div class=['"]scoreRight ellipsis['"]>(.*)<\/div>/gi
-                );
-                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 class=['"]scoreLeft['"]\>(.*)\<\/div\>/
-                        )[1],
-                        detail: pointDetailList[i].match(
-                            /\<div class=['"]scoreRight ellipsis['"]\>(.*)\<\/div\>/
-                        )[1],
-                    });
-                }
-                userInfo.user_point_list = userPointList;
-                // 获取用户资源
-                const assetsNumList = data.match(/assets-part[^<]*>(.*)</gi);
-                userInfo.point = Number(
-                    assetsNumList[0].match(/assets-num[^<]*>(.*)</)[1]
-                ); // 积分
-                userInfo.exp = Number(
-                    assetsNumList[2].match(/assets-num[^<]*>(.*)</)[1]
-                ); // 经验
-                userInfo.gold = Number(
-                    assetsNumList[4].match(/assets-num[^<]*>(.*)</)[1]
-                ); // 金币
-                userInfo.silver = Number(
-                    assetsNumList[6].match(/assets-num[^<]*>(.*)</)[1]
-                ); // 碎银子
-            }).catch((err) => {
-                magicJS.logger.error(`获取新版用户信息出现异常,${err}`);
-            });
-        // 返回结果
-        resolve(userInfo);
-    });
-}
-
-// 每日抽奖
-function lotteryDraw() {
-    return new Promise(async (resolve, reject) => {
-        let activeId = "";
-        await magicJS.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": mixUserAgent,
-                },
-            }).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 {
-                    magicJS.logger.warning(`获取每日抽奖activeId失败`);
-                }
-            }).catch((err) => {
-                magicJS.logger.error(`获取每日抽奖activeId失败,${err}`);
-            });
-        if (!!activeId) {
-            await magicJS.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": mixUserAgent,
-                    },
-                }).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 {
-                        magicJS.logger.error(`每日抽奖失败,接口响应异常:${data}`);
-                        resolve("每日抽奖失败,接口响应异常");
-                    }
-                }).catch((err) => {
-                    magicJS.logger.error(`每日抽奖失败,${err}`);
-                    resolve("每日抽奖失败,接口/执行异常");
-                });
-        }
-    });
-}
-
-// 收藏文章
-function clickFavArticle(articleId) {
-    return new Promise((resolve, reject) => {
-        magicJS.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": pcUserAgent,
-                },
-                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) {
-                    magicJS.logger.info(`好文${articleId}收藏成功`);
-                    resolve(true);
-                } else if (obj["error_code"] === 2) {
-                    magicJS.logger.info(`好文${articleId}取消收藏成功`);
-                    resolve(true);
-                } else {
-                    magicJS.logger.error(`好文${articleId}收藏失败,${JSON.stringify(obj)}`);
-                    resolve(false);
-                }
-            }).catch((err) => {
-                magicJS.logger.error(`文章加入/取消收藏失败,${err}`);
-                reject(false);
-            });
-    });
-}
-
-// 收藏文章任务
-function favArticles() {
-    return new Promise(async (resolve, reject) => {
-        let articlesId = [];
-        let success = 0;
-        await magicJS.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": pcUserAgent,
-                },
-                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) => {
-                magicJS.logger.error(`获取待收藏的文章列表失败,${err}`);
-                reject(err);
-            });
-        let favArticlesId = articlesId.splice(0, clickFavArticleMaxTimes);
-        if (favArticlesId.length > 0) {
-            // 加入收藏与取消收藏
-            for (let articleId of favArticlesId) {
-                await magicJS.utils.retry(clickFavArticle,3,500)(articleId).then((result) => {
-                        if (result === true) {
-                            success += 1;
-                        }
-                    }).catch((err) => {
-                        magicJS.logger.error(`文章加入收藏失败,${err}`);
-                    });
-                await magicJS.utils.sleep(1000);
-                await magicJS.utils.retry(clickFavArticle,3,500)(articleId).catch((err) => {
-                        magicJS.logger.error(`文章取消收藏失败,${err}`);
-                    });
-                await magicJS.utils.sleep(1000);
-            }
-        }
-        resolve(success);
-    });
-}
-
-// 多用户签到
-async function multiUsersSignIn() {
-    const allSessionNames = magicJS.data.allSessionNames(smzdmCookieKey);
-    if (!allSessionNames || allSessionNames.length === 0) {
-        magicJS.logger.error(
-            scriptName,
-            "",
-            "没有发现需要签到的Cookies\n请点击通知进行登录。", {
-                "open-url": "https://zhiyou.smzdm.com/user/login?redirect_to=http://zhiyou.smzdm.com/user",
-            }
-        );
-    } else {
-        magicJS.logger.info(`当前共 ${allSessionNames.length} 个Cookies需要进行签到/任务。`);
-        for (let [index, session] of allSessionNames.entries()) {
-            magicJS.logger.info(`当前正在进行第 ${index + 1} 个Cookie签到`);
-            // 通知信息
-            let title = "";
-            let subTitle = "";
-            let content = "";
-
-            // 获取Cookies
-            currentCookie = magicJS.data.read(smzdmCookieKey, "", session);
-
-            // 查询签到前用户数据
-            const beforeUserInfo = await getWebUserInfo();
-
-            // 每日签到
-            if (magicJS.data.read(smzdmSigninKey, true) === true) {
-                // Android端签到
-                await magicJS.utils
-                    .retry(androidSignin, 5, 1000)(beforeUserInfo["nick_name"])
-                    .catch((err) => {
-                        subTitle = `Android端签到异常: ${err}`;
-                    });
-            }
-
-            // 日常任务
-            if (magicJS.data.read(smzdmMissionKey, true) === true) {
-                const success = await favArticles();
-                const msg = `每日收藏文章任务 ${success}/${clickFavArticleMaxTimes}`;
-                content += !!content ? `\n${msg}` : msg;
-                magicJS.logger.info(msg);
-            }
-
-            // 抽奖
-            if (magicJS.data.read(smzdmLotteryKey, true) === true) {
-                const msg = await lotteryDraw();
-                content += !!content ? "\n" : "";
-                content += msg;
-                magicJS.logger.info(msg);
-            }
-
-            // 休眠
-            await magicJS.utils.sleep(3000);
-
-            // 获取签到后的用户信息
-            const afterUserInfo = await getWebUserInfo();
-
-            title = `${scriptName} - ${afterUserInfo.nick_name} V${afterUserInfo.vip}`;
-
-            // 检查是否黑号
-            if (magicJS.data.read(smzdmCheckBlackRoom, false) === true && (afterUserInfo.blackroom_desc)) {
-                magicJS.notification.post(
-                    title, "",
-                    `⚠️账户已在小黑屋中,请谨慎使用脚本!\n小黑屋描述:${afterUserInfo.blackroom_desc}`
-                );
-            }
-
-            // 重复签到
-            if (
-                afterUserInfo.has_checkin === true &&
-                beforeUserInfo.has_checkin === true
-            ) {
-                subTitle = "重复签到";
-            } else {
-                subTitle = `已连续签到${afterUserInfo.daily_checkin_num}天`;
-            }
-
-            // 记录日志
-            let msg = `昵称:${beforeUserInfo.nick_name}\n签到状态:${afterUserInfo.has_checkin}\n签到后等级${afterUserInfo.vip},积分${afterUserInfo.point},经验${afterUserInfo.exp},金币${afterUserInfo.gold},碎银子${afterUserInfo.silver},未读消息${afterUserInfo.unread_msg}`;
-            magicJS.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;
-            }
-            magicJS.notification.post(title, subTitle, content, {
-                "media-url": afterUserInfo.avatar,
-            });
-
-            magicJS.logger.info(`第 ${index + 1} 个Cookie签到完毕`);
-        }
-    }
-}
+// // Web端登录获取Cookie
+// async function getWebOrAppCookie() {
+//     try {
+//         currentCookie = magicJS.request.headers.cookie || magicJS.request.headers.Cookie;
+//         if (currentCookie.length >= 200) {
+//             magicJS.logger.info(`当前页面获取的Cookie: ${currentCookie}`);
+//             const cookieId = currentCookie.match(/(session_id|__ckguid)=([^;.]*)/ig)[0];
+//             magicJS.logger.info(`当前页面获取的CookieId\n${cookieId}`);
+//             // 获取新的session_id
+//             if (cookieId) {
+//                 const userInfo = await getWebUserInfo();
+//                 // 获取持久化的session_id
+//                 let oldCookieId = magicJS.data.read(smzdmCookieIdKey, "", userInfo.smzdm_id);
+//                 magicJS.logger.info(`从客户端存储池中读取的CookieId\n${oldCookieId}`);
+//                 // 获取新的session_id
+//                 magicJS.logger.info(
+//                     `旧的CookieId:\n${oldCookieId}\n新的CookieId:\n${cookieId}`
+//                 );
+//                 // 比较差异
+//                 if (oldCookieId === cookieId.trim()) {
+//                     magicJS.logger.info(
+//                         "当前页面获取的Cookie与客户端存储的Cookie相同,无需更新。"
+//                     );
+//                 } else {
+//                     magicJS.data.write(smzdmCookieIdKey, cookieId, userInfo.smzdm_id);
+//                     magicJS.data.write(smzdmCookieKey, currentCookie, userInfo.smzdm_id);
+//                     magicJS.logger.info(`写入cookie\n${currentCookie}`);
+//                     magicJS.notification.post(scriptName, "", "🎈获取Cookie成功!!");
+//                 }
+
+//                 // 同步到青龙面板
+//                 if (magicJS.data.read(smzdmSyncQinglongKey, false) === true) {
+//                     oldCookieId = await magicJS.qinglong.read(
+//                         smzdmCookieIdKey,
+//                         "",
+//                         userInfo.smzdm_id
+//                     );
+//                     magicJS.logger.info(`从青龙面板读取的CookieId\n${oldCookieId}`);
+//                     if (oldCookieId !== cookieId) {
+//                         await magicJS.qinglong.write(
+//                             smzdmCookieIdKey,
+//                             cookieId,
+//                             userInfo.smzdm_id
+//                         );
+//                         await magicJS.qinglong.write(
+//                             smzdmCookieKey,
+//                             currentCookie,
+//                             userInfo.smzdm_id
+//                         );
+//                         magicJS.logger.info(`同步cookie\n${currentCookie}`);
+//                         magicJS.notification.post(
+//                             `${scriptName} - ${userInfo.smzdm_id}`,
+//                             "",
+//                             `已将您的信息同步至青龙面板:\n${magicJS.qinglong.url}\n如上述地址不是您所配置,则信息已泄露!\n请立即停用脚本,更改密码!\n检查青龙面板配置是否被篡改!`
+//                         );
+//                     } else {
+//                         magicJS.logger.info(
+//                             `当前页面获取的Cookie与青龙面板存储的Cookie相同,无需更新。`
+//                         );
+//                     }
+//                 }
+//             }
+//         } else {
+//             magicJS.logger.warning("没有读取到有效的Cookie信息。");
+//         }
+//     } catch (err) {
+//         magicJS.logger.error(`获取什么值得买Cookies出现异常,${err}`);
+//     }
+// }
+
+// // Web端签到,已失效
+// function webSignin() {
+//     return new Promise((resolve, reject) => {
+//         let ts = Date.parse(new Date());
+//         magicJS.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": webUserAgent,
+//                 },
+//             }).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) {
+//                             magicJS.logger.warning(
+//                                 `Web端签到出现异常,网络繁忙,接口返回:${data}`
+//                             );
+//                             reject("Web:网络繁忙");
+//                         } else if (obj["error_code"] === 99) {
+//                             magicJS.logger.warning("Web端Cookie已过期");
+//                             resolve([false, "Web:Cookie过期"]);
+//                         } else if (obj["error_code"] === 0) {
+//                             magicJS.logger.info("Web:签到成功");
+//                             resolve([true, "Web:签到成功"]);
+//                         } else {
+//                             magicJS.logger.warning(
+//                                 `Web端签到出现异常,接口返回数据不合法:${data}`
+//                             );
+//                             reject("Web:返回错误");
+//                         }
+//                     }
+//                 } else {
+//                     magicJS.logger.warning(`Web端签到出现异常,接口返回数据不存在:${data}`);
+//                     reject("Web:签到异常");
+//                 }
+//             }).catch((err) => {
+//                 magicJS.logger.error(`Web端签到出现异常,${err}`);
+//                 reject("Web:签到异常");
+//             });
+//     });
+// }
+
+// function androidSignin(username) {
+//     return new Promise(async (resolve, reject) => {
+//         const smzdmToken = currentCookie.slice(5);
+//         const smzdmKey = 'apr1$AwP!wRRT$gJ/q.X24poeBInlUJC';
+//         const outcome = Math.round(new Date().getTime() / 1000).toString();
+//         const rawData = `f=android&sk=${username}&time=${outcome}000&token=${smzdmToken}&v=9.9.12&weixin=1&key=${smzdmKey}`;
+//         let md5 = createWMd5();
+//         const sign = md5..hex_md5_32Upper(rawData);
+//         await magicJS.http.post({
+//             url: "https://user-api.smzdm.com/checkin",
+//             headers: {
+//                 'User-Agent': appUserAgent,
+//                 'Accept-Language': 'zh-Hans-CN;q=1',
+//                 'Accept-Encoding': 'gzip, deflate, br',
+//                 'Connection': 'Keep-Alive',
+//                 'request_key': randomStr(18),
+//                 'Content-Type': 'application/x-www-form-urlencoded'
+//             },
+//             body: `sk=${username}&sign=${sign}&weixin=1&v=9.9.12&captcha=&f=android&token=${encodeURIComponent(smzdmToken)}&touchstone_event=&time=${outcome}000`,
+//         }).then(resp => {
+//             let obj = resp.body;
+//             if (typeof obj === "string") {
+//                 obj = JSON.parse(obj);
+//             }
+//             if (obj["error_code"] === "0" && obj["error_msg"].indexOf("签到成功") > -1) {
+//                 magicJS.logger.info("Android端签到成功");
+//                 resolve([true, "Android端签到成功"]);
+//             } else if (obj["error_code"] === "0" && obj["error_msg"] === "已签到") {
+//                 magicJS.logger.info("Android端重复签到");
+//                 resolve([true, "Android端重复签到"]);
+//             } else {
+//                 magicJS.logger.warning(`Android端签到出现异常,接口返回数据不合法:${obj}`);
+//                 reject("Android端签到异常");
+//             }
+//         })
+//     });
+// }
+
+// // 获取用户信息
+// 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 magicJS.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": webUserAgent,
+//                 },
+//             }).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 {
+//                     magicJS.logger.warning(
+//                         `获取用户信息异常,Cookie过期或接口变化:${JSON.stringify(obj)}`
+//                     );
+//                 }
+//             }).catch((err) => {
+//                 magicJS.logger.error(`获取用户信息异常,${err}`);
+//             });
+//         // 获取新版用户信息
+//         await magicJS.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[^<]*>([^<]*)</
+//                     )[1]
+//                     .trim();
+//                 // 获取近期经验变动情况
+//                 const pointTimeList = data.match(
+//                     /<div class="scoreLeft">(.*)<\/div>/gi
+//                 );
+//                 const pointDetailList = data.match(
+//                     /<div class=['"]scoreRight ellipsis['"]>(.*)<\/div>/gi
+//                 );
+//                 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 class=['"]scoreLeft['"]\>(.*)\<\/div\>/
+//                         )[1],
+//                         detail: pointDetailList[i].match(
+//                             /\<div class=['"]scoreRight ellipsis['"]\>(.*)\<\/div\>/
+//                         )[1],
+//                     });
+//                 }
+//                 userInfo.user_point_list = userPointList;
+//                 // 获取用户资源
+//                 const assetsNumList = data.match(/assets-part[^<]*>(.*)</gi);
+//                 userInfo.point = Number(
+//                     assetsNumList[0].match(/assets-num[^<]*>(.*)</)[1]
+//                 ); // 积分
+//                 userInfo.exp = Number(
+//                     assetsNumList[2].match(/assets-num[^<]*>(.*)</)[1]
+//                 ); // 经验
+//                 userInfo.gold = Number(
+//                     assetsNumList[4].match(/assets-num[^<]*>(.*)</)[1]
+//                 ); // 金币
+//                 userInfo.silver = Number(
+//                     assetsNumList[6].match(/assets-num[^<]*>(.*)</)[1]
+//                 ); // 碎银子
+//             }).catch((err) => {
+//                 magicJS.logger.error(`获取新版用户信息出现异常,${err}`);
+//             });
+//         // 返回结果
+//         resolve(userInfo);
+//     });
+// }
+
+// // 每日抽奖
+// function lotteryDraw() {
+//     return new Promise(async (resolve, reject) => {
+//         let activeId = "";
+//         await magicJS.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": mixUserAgent,
+//                 },
+//             }).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 {
+//                     magicJS.logger.warning(`获取每日抽奖activeId失败`);
+//                 }
+//             }).catch((err) => {
+//                 magicJS.logger.error(`获取每日抽奖activeId失败,${err}`);
+//             });
+//         if (!!activeId) {
+//             await magicJS.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": mixUserAgent,
+//                     },
+//                 }).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 {
+//                         magicJS.logger.error(`每日抽奖失败,接口响应异常:${data}`);
+//                         resolve("每日抽奖失败,接口响应异常");
+//                     }
+//                 }).catch((err) => {
+//                     magicJS.logger.error(`每日抽奖失败,${err}`);
+//                     resolve("每日抽奖失败,接口/执行异常");
+//                 });
+//         }
+//     });
+// }
+
+// // 收藏文章
+// function clickFavArticle(articleId) {
+//     return new Promise((resolve, reject) => {
+//         magicJS.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": pcUserAgent,
+//                 },
+//                 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) {
+//                     magicJS.logger.info(`好文${articleId}收藏成功`);
+//                     resolve(true);
+//                 } else if (obj["error_code"] === 2) {
+//                     magicJS.logger.info(`好文${articleId}取消收藏成功`);
+//                     resolve(true);
+//                 } else {
+//                     magicJS.logger.error(`好文${articleId}收藏失败,${JSON.stringify(obj)}`);
+//                     resolve(false);
+//                 }
+//             }).catch((err) => {
+//                 magicJS.logger.error(`文章加入/取消收藏失败,${err}`);
+//                 reject(false);
+//             });
+//     });
+// }
+
+// // 收藏文章任务
+// function favArticles() {
+//     return new Promise(async (resolve, reject) => {
+//         let articlesId = [];
+//         let success = 0;
+//         await magicJS.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": pcUserAgent,
+//                 },
+//                 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) => {
+//                 magicJS.logger.error(`获取待收藏的文章列表失败,${err}`);
+//                 reject(err);
+//             });
+//         let favArticlesId = articlesId.splice(0, clickFavArticleMaxTimes);
+//         if (favArticlesId.length > 0) {
+//             // 加入收藏与取消收藏
+//             for (let articleId of favArticlesId) {
+//                 await magicJS.utils.retry(clickFavArticle,3,500)(articleId).then((result) => {
+//                         if (result === true) {
+//                             success += 1;
+//                         }
+//                     }).catch((err) => {
+//                         magicJS.logger.error(`文章加入收藏失败,${err}`);
+//                     });
+//                 await magicJS.utils.sleep(1000);
+//                 await magicJS.utils.retry(clickFavArticle,3,500)(articleId).catch((err) => {
+//                         magicJS.logger.error(`文章取消收藏失败,${err}`);
+//                     });
+//                 await magicJS.utils.sleep(1000);
+//             }
+//         }
+//         resolve(success);
+//     });
+// }
+
+// // 多用户签到
+// async function multiUsersSignIn() {
+//     const allSessionNames = magicJS.data.allSessionNames(smzdmCookieKey);
+//     if (!allSessionNames || allSessionNames.length === 0) {
+//         magicJS.logger.error(
+//             scriptName,
+//             "",
+//             "没有发现需要签到的Cookies\n请点击通知进行登录。", {
+//                 "open-url": "https://zhiyou.smzdm.com/user/login?redirect_to=http://zhiyou.smzdm.com/user",
+//             }
+//         );
+//     } else {
+//         magicJS.logger.info(`当前共 ${allSessionNames.length} 个Cookies需要进行签到/任务。`);
+//         for (let [index, session] of allSessionNames.entries()) {
+//             magicJS.logger.info(`当前正在进行第 ${index + 1} 个Cookie签到`);
+//             // 通知信息
+//             let title = "";
+//             let subTitle = "";
+//             let content = "";
+
+//             // 获取Cookies
+//             currentCookie = magicJS.data.read(smzdmCookieKey, "", session);
+
+//             // 查询签到前用户数据
+//             const beforeUserInfo = await getWebUserInfo();
+
+//             // 每日签到
+//             if (magicJS.data.read(smzdmSigninKey, true) === true) {
+//                 // Android端签到
+//                 await magicJS.utils
+//                     .retry(androidSignin, 5, 1000)(beforeUserInfo["nick_name"])
+//                     .catch((err) => {
+//                         subTitle = `Android端签到异常: ${err}`;
+//                     });
+//             }
+
+//             // 日常任务
+//             if (magicJS.data.read(smzdmMissionKey, true) === true) {
+//                 const success = await favArticles();
+//                 const msg = `每日收藏文章任务 ${success}/${clickFavArticleMaxTimes}`;
+//                 content += !!content ? `\n${msg}` : msg;
+//                 magicJS.logger.info(msg);
+//             }
+
+//             // 抽奖
+//             if (magicJS.data.read(smzdmLotteryKey, true) === true) {
+//                 const msg = await lotteryDraw();
+//                 content += !!content ? "\n" : "";
+//                 content += msg;
+//                 magicJS.logger.info(msg);
+//             }
+
+//             // 休眠
+//             await magicJS.utils.sleep(3000);
+
+//             // 获取签到后的用户信息
+//             const afterUserInfo = await getWebUserInfo();
+
+//             title = `${scriptName} - ${afterUserInfo.nick_name} V${afterUserInfo.vip}`;
+
+//             // 检查是否黑号
+//             if (magicJS.data.read(smzdmCheckBlackRoom, false) === true && (afterUserInfo.blackroom_desc)) {
+//                 magicJS.notification.post(
+//                     title, "",
+//                     `⚠️账户已在小黑屋中,请谨慎使用脚本!\n小黑屋描述:${afterUserInfo.blackroom_desc}`
+//                 );
+//             }
+
+//             // 重复签到
+//             if (
+//                 afterUserInfo.has_checkin === true &&
+//                 beforeUserInfo.has_checkin === true
+//             ) {
+//                 subTitle = "重复签到";
+//             } else {
+//                 subTitle = `已连续签到${afterUserInfo.daily_checkin_num}天`;
+//             }
+
+//             // 记录日志
+//             let msg = `昵称:${beforeUserInfo.nick_name}\n签到状态:${afterUserInfo.has_checkin}\n签到后等级${afterUserInfo.vip},积分${afterUserInfo.point},经验${afterUserInfo.exp},金币${afterUserInfo.gold},碎银子${afterUserInfo.silver},未读消息${afterUserInfo.unread_msg}`;
+//             magicJS.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;
+//             }
+//             magicJS.notification.post(title, subTitle, content, {
+//                 "media-url": afterUserInfo.avatar,
+//             });
+
+//             magicJS.logger.info(`第 ${index + 1} 个Cookie签到完毕`);
+//         }
+//     }
+// }
 
 Main();