diff --git a/kww/kww.js b/kww/kww.js deleted file mode 100644 index cb18b21..0000000 --- a/kww/kww.js +++ /dev/null @@ -1,5381 +0,0 @@ -/* -微信小程序-口味王 - 功能:所有功能 - 依赖:依赖需要:@babel/parser xpath xmldom jsdom node-jsencrypt axios@v0.27.2 - 依赖安装方式: 高级青龙面包可以直接添加, - 低级的在Linux里安装 例如:docker exec -it QL bash -c "npm install xmldom" - 抓包:开着抓包软件打开小程序,抓包链接里面的memberId https://member.kwwblcj.com/member/api/info/?userKeys=v1.0&pageName=member-info-index-search&formName=searchForm&kwwMember.memberId=xxxx - 变量格式:export KWW_COOKIE='xxxx&xxxx2' 多个账号用 @ 或 & 或者 换行 分割 - 定时:一天一次 -群文件有抓取口味王ck工具 -不会用加群:212796668、681030097、743744614 -脚本兼容: QuantumultX, Surge,Loon, JSBox, Node.js -=================================Quantumultx========================= -[task_local] -#微信小程序-口味王 -0 40 0 * * * https://github.com/JDWXX/jd_job.git, tag=微信小程序-口味王, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/jd.png, enabled=true -=================================Loon=================================== -[Script] -cron "0 40 0 * * *" script-path=https://github.com/JDWXX/jd_job.git,tag=微信小程序-口味王 -===================================Surge================================ -微信小程序-口味王 = type=cron,cronexp="0 40 0 * * *",wake-system=1,timeout=3600,script-path=https://github.com/JDWXX/jd_job.git -====================================小火箭============================= -微信小程序-口味王 = type=cron,script-path=https://github.com/JDWXX/jd_job.git, cronexpr="0 40 0 * * *", timeout=3600, enable=true - */ -const $ = new Env('微信小程序-口味王'); -global.window = {}; -global.navigator = {appName: 'nodejs'}; -const JSEncrypt = require('node-jsencrypt'); -const axios = require('axios'); -const parser = require("@babel/parser"); -const fs = require('fs'); -const path = require('path'); -const xpath = require('xpath') - , XmldomParser = require('xmldom').DOMParser; - -const domParser = new XmldomParser({ - errorHandler: {} -}) -const {JSDOM} = require('jsdom'); -let request = require("request"); -request = request.defaults({jar: true}); -const {log} = console; -const Notify = 1; //0为关闭通知,1为打开通知,默认为1 -const debug = 0; //0为关闭调试,1为打开调试,默认为0 -////////////////////// -let scriptVersion = "高级版"; -//此处填写口味王账号cookie。 -let kwwUid = "" -let kwwUidArr = [] -// 判断环境变量里面是否有口味王ck -if (process.env.KWW_COOKIE) { - if (process.env.KWW_COOKIE.indexOf('&') > -1) { - kwwUidArr = process.env.KWW_COOKIE.split('&'); - } else if (process.env.KWW_COOKIE.indexOf('@') > -1) { - kwwUidArr = process.env.KWW_COOKIE.split('@'); - } else if (process.env.KWW_COOKIE.indexOf('\n') > -1) { - kwwUidArr = process.env.KWW_COOKIE.split('\n'); - } else { - kwwUidArr = [process.env.KWW_COOKIE]; - } -} -let data = ''; -let msg = ''; -let isSign = false; -let signCateId = ''; -let signRulesName = ''; -let signParamNo = ''; -let signOrderNo = ''; -let userKeys = 'v1.0'; -let memberUnionid = '1'; -let userCname = ''; -let formName = 'searchForm'; -let userAgent = 'Mozilla/5.0 (iPhone; CPU iPhone OS 15_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 MicroMessenger/8.0.29(0x18001d36) NetType/WIFI Language/zh_CN'; -let qgyUrl = 'https://89420.activity-20.m.duiba.com.cn/projectx/p85657820/index.html?appID=89420'; -let mrDtUrl = 'https://89420.activity-20.m.duiba.com.cn/projectx/p244f2bb2/index.html?appID=89420&from=login&spm=89420.1.1.1'; -let tjUrl = ''; -let tjHtml = ''; -let hdUrl = ''; -let hdHtml = ''; -let hdStartId = ''; -let hdOrderNum = ''; -let hdSubmitFlag = false; -let hdDrawFlag = false; -let yjjUrl = ''; -let yjjHtml = ''; -let yjjOrderId = ''; -let yjjLimit = true; -let mrYdUrl = 'https://89420.activity-20.m.duiba.com.cn/projectx/p85657820/index.html?appID=89420'; -let qhbUrl = 'https://89420.activity-20.m.duiba.com.cn/projectx/p725daef0/index.html?appID=89420'; -let exchangeOneCodeConsumeFlag = false; -let exchangeOneCodeConsumeCredits = 880; -let qhbOrderId = ''; -let qhbOrderData = ''; -let gameCookie = ''; -let loginUrl = ''; -let qgyTaskData = []; -let qgySignFlag = false; -let isTravelling = false; -let leftEnergyBall = 0; -let qgyProcess = ''; -let answerState = false; -let answerStartId = ''; -let totalQuestions = 5; -let currQuestions = 1; -let questionId = ''; -let answerType = 1; -let answerLists = []; -let answerListData = []; -let tokenStr = ''; -let tokenKeyStr = ''; -let qgyToken = ''; -let isArticleReadFlag = false; -let articleReadList = []; -let taskBeforeScore = 0; -let remainingLimitTimes = 0 -let remainJoinTimes = 0 -let tjRecordId = '' -!(async () => { - if (typeof $request !== "undefined") { - await GetRewrite(); - } else { - log(`\n\n============================================= \n脚本执行 - 北京时间(UTC+8):${new Date( - new Date().getTime() + new Date().getTimezoneOffset() * 60 * 1000 + - 8 * 60 * 60 * 1000).toLocaleString()} \n=============================================\n`); - - - log(`\n============ 当前版本:${scriptVersion} ============`) - log(`\n=================== 共找到 ${kwwUidArr.length} 个账号 ===================`) - if (debug) { - log(`【debug】 这是你的全部账号数组:\n ${kwwUidArr}`); - } - for (let index = 0; index < kwwUidArr.length; index++) { - - let num = index + 1 - addNotifyStr(`\n==== 开始【第 ${num} 个账号】====\n`, true) - - kwwUid = kwwUidArr[index]; - - - log(`\n==== 基本信息 ====\n`) - taskBeforeScore = 0; - await getBaseInfo(); - log(`\n==== 每日签到 ====\n`) - await getSignInfo(2 * 1000); - await $.wait(2000); - await dbInterface(2 * 1000); - - await $.wait(2000); - if (isSign) { - log(`账号【${num}】已经签到了`) - } else { - await signIn(); - await $.wait(2000); - } - log(`\n==== 点击青果====\n`) - await activeTaskFlag(2 * 1000) - log(`\n==== 每日阅读 ====\n`) - await readInfo(); - await $.wait(2000); - if (isArticleReadFlag) { - log(`账号【${num}】已经阅读了`) - } else { - await readSubmit(); - await $.wait(2000); - } - log(`\n==== 竞猜足球 ====\n`); - await finishJc(num) - log(`\n==== 每日答题 ====\n`); - await finishDt(num); - await $.wait(3000) - log(`\n==== 疯狂摇奖机 ====\n`) - await finishYjj(num); - await $.wait(3000) - log(`\n==== 海岛游乐场 ====\n`) - await finishHd(num); - await $.wait(3000) - log(`\n==== 天降好礼 ====\n`) - await finishTj(num); - await $.wait(3000) - log(`\n==== 青果园 ====\n`); - await finishQgy(num); - await $.wait(3000) - log(`\n==== 抢兑红包 ====\n`); - await finishQhd(num); - await $.wait(3000) - log(`\n==== 积分查询 ====\n`) - await getMemberScore(); - // await $.wait(2000); - } - } -})() - .catch((e) => log(e)) - .finally(() => $.done()) - - -/** - * 获取基础信息 - * @returns {Promise} - */ -async function getBaseInfo() { - await getMemberInfo(2 * 1000); - await $.wait(2000); - await getMemberScore(); - await $.wait(2000); - await getQgyUrl(); - await $.wait(2000); - await getMrYdUrl(); - await $.wait(2000); - await getOtherUrl(); - await $.wait(2000); - await getQhbUrl(); - await $.wait(2000); - await xxsBanner(); - await $.wait(2000); - await getAnswerLists(); - await $.wait(2000); - await selectTaskList(); - await $.wait(2000); - return true; -} - - -/** - * 查询会员信息 - * @param timeout - * @returns {Promise} - */ -async function getMemberInfo(timeout = 2000) { - let options = { - url: `https://member.kwwblcj.com/member/api/info/?userKeys=${userKeys}&pageName=member-info-index-search&formName=${formName}&kwwMember.memberId=${kwwUid}&kwwMember.unionid=${memberUnionid}&memberId=${kwwUid}`, - headers: { - Host: 'member.kwwblcj.com', - Connection: 'keep-alive', - 'content-type': 'application/json', - 'User-Agent': userAgent, - Referer: 'https://servicewechat.com/wxfb0905b0787971ad/33/page-frame.html' - }, - }; - if (debug) { - log(`\n【debug】=============== 这是 查询会员信息 请求 url ===============`); - log(JSON.stringify(options)); - } - return new Promise((resolve) => { - $.get(options, async (error, response, data) => { - try { - if (debug) { - log(`\n\n【debug】===============这是 查询会员信息 返回data==============`); - log(data) - } - - let result = JSON.parse(data); - if (result.hasOwnProperty('flag') && result.flag == "T") { - userCname = result.result.memberInfo.userCname - memberUnionid = result.result.memberInfo.unionid - log(`【${userCname}】获取会员信息成功`) - } else { - log(`查询会员信息失败,原因是:${data}`) - } - } catch (e) { - log(`查询会员信息异常:${data},原因:${e}`) - } finally { - resolve(); - } - }, timeout) - }) - -} - -/** - * 获取会员积分 - * @returns {Promise} - */ -async function getMemberScore() { - return new Promise((resolve) => { - var options = { - method: 'GET', - url: 'https://member.kwwblcj.com/member/api/list/', - params: { - userKeys: userKeys, - pageName: 'select-member-score', - formName: formName, - memberId: kwwUid - }, - headers: { - Host: 'member.kwwblcj.com', - Connection: 'keep-alive', - 'content-type': 'application/json', - 'User-Agent': userAgent, - Referer: 'https://servicewechat.com/wxfb0905b0787971ad/33/page-frame.html' - } - }; - if (debug) { - log(`\n【debug】=============== 这是 请求积分 请求 url ===============`); - log(JSON.stringify(options)); - } - axios.request(options).then(function (response) { - try { - var data = response.data; - if (debug) { - log(`\n\n【debug】===============这是 请求积分 返回data==============`); - log(data) - } - if (data.hasOwnProperty('flag') && data.flag == "T") { - if (taskBeforeScore == 0) { - taskBeforeScore = data.rows; - addNotifyStr(`【${userCname}】当前积分:${data.rows}`, true) - } else { - var calScore = parseInt(data.rows) - parseInt(taskBeforeScore); - addNotifyStr(`【${userCname}】当前积分:${data.rows},本次任务获取积分:${calScore}`, true) - } - } else { - addNotifyStr(`查询积分失败,原因是:${data.msg}`, true) - } - } catch (e) { - log(`查询积分失败异常:${data},原因:${e}`) - } - }).catch(function (error) { - console.error(1, error); - }).then(res => { - //这里处理正确返回 - resolve(); - }); - }) - -} - -/** - * 获取青果地址 - * @returns {Promise} - */ -async function getQgyUrl() { - return new Promise((resolve) => { - var options = { - method: 'GET', - url: 'https://cms.kwwblcj.com/data/c00.json', - params: {T: timestampMs(), memberId: kwwUid}, - headers: { - Host: 'cms.kwwblcj.com', - Connection: 'keep-alive', - 'content-type': 'application/json', - 'User-Agent': userAgent, - Referer: 'https://servicewechat.com/wxfb0905b0787971ad/33/page-frame.html' - } - }; - if (debug) { - log(`\n【debug】=============== 这是 获取青果地址 请求 url ===============`); - log(JSON.stringify(options)); - } - axios.request(options).then(function (response) { - try { - var data = response.data; - if (debug) { - log(`\n\n【debug】===============这是 获取青果地址 返回data==============`); - log(data) - } - for (var i in data.rows) { - var url = data.rows[i]["url"]; - var manuscriptId = data.rows[i]["manuscriptId"]; - if (url.indexOf('https') >= 0) { - qgyUrl = url; - log(`获取青果地址成功`) - return; - } - } - } catch (e) { - log(`查询青果地址异常:${data},原因:${e}`) - } - }).catch(function (error) { - console.error(error); - }).then(res => { - //这里处理正确返回 - resolve(); - }); - }) - -} - -/** - * 获取每日阅读地址 - * @returns {Promise} - */ -async function getMrYdUrl() { - return new Promise((resolve) => { - var options = { - method: 'GET', - url: 'https://cms.kwwblcj.com/data/c02.json', - params: {T: timestampMs(), memberId: kwwUid}, - headers: { - Host: 'cms.kwwblcj.com', - Connection: 'keep-alive', - 'content-type': 'application/json', - 'User-Agent': userAgent, - Referer: 'https://servicewechat.com/wxfb0905b0787971ad/33/page-frame.html' - } - }; - if (debug) { - log(`\n【debug】=============== 这是 获取每日阅读 请求 url ===============`); - log(JSON.stringify(options)); - } - axios.request(options).then(function (response) { - try { - var data = response.data; - if (debug) { - log(`\n\n【debug】===============这是 获取每日阅读 返回data==============`); - log(data) - } - for (var i in data.rows) { - var url = data.rows[i]["url"]; - var title = data.rows[i]["title"]; - if (url.indexOf('https') >= 0 && title.indexOf('每日阅读') >= 0) { - mrYdUrl = url; - log(`获取${title}地址成功`); - return - } - } - } catch (e) { - log(`获取每日阅读异常:${data},原因:${e}`) - } - }).catch(function (error) { - console.error(error); - }).then(res => { - //这里处理正确返回 - resolve(); - }); - }) -} - -/** - * 获取其他地址 - * @returns {Promise} - */ -async function getOtherUrl() { - return new Promise((resolve) => { - var options = { - method: 'GET', - url: 'https://cms.kwwblcj.com/data/c05.json', - params: {T: timestampMs(), memberId: kwwUid}, - headers: { - Host: 'cms.kwwblcj.com', - Connection: 'keep-alive', - 'content-type': 'application/json', - 'User-Agent': userAgent, - Referer: 'https://servicewechat.com/wxfb0905b0787971ad/33/page-frame.html' - } - }; - if (debug) { - log(`\n【debug】=============== 这是 获取其他地址 请求 url ===============`); - log(JSON.stringify(options)); - } - axios.request(options).then(function (response) { - try { - var data = response.data; - if (debug) { - log(`\n\n【debug】===============这是 获取其他地址 返回data==============`); - log(data) - } - for (var i in data.rows) { - var url = data.rows[i]["url"]; - var title = data.rows[i]["title"]; - var manuscriptId = data.rows[i]["manuscriptId"]; - if (title.indexOf('每日答题') >= 0 && url.indexOf('https') >= 0) { - mrDtUrl = url+"&from=login&spm=89420.1.1.1"; - log(`获取${title}地址成功`) - } else if (title.indexOf('天降好礼') >= 0 && url.indexOf('https') >= 0) { - tjUrl = url; - log(`获取${title}地址成功`) - } else if (title.indexOf('海岛游乐场') >= 0 && url.indexOf('https') >= 0) { - hdUrl = url; - log(`获取${title}地址成功`) - } else if (title.indexOf('疯狂摇奖机') >= 0 && url.indexOf('https') >= 0) { - yjjUrl = url; - log(`获取${title}地址成功`) - } - } - } catch (e) { - log(`查询其他地址异常:${data},原因:${e}`) - } - }).catch(function (error) { - console.error(error); - }).then(res => { - //这里处理正确返回 - resolve(); - }); - }) -} - -/** - * 获取天天抢红包地址 - * @returns {Promise} - */ -async function getQhbUrl() { - return new Promise((resolve) => { - var options = { - method: 'GET', - url: 'https://cms.kwwblcj.com/data/gdbanner.json', - params: {T: timestampMs(), memberId: kwwUid}, - headers: { - Host: 'cms.kwwblcj.com', - Connection: 'keep-alive', - 'content-type': 'application/json', - 'User-Agent': userAgent, - Referer: 'https://servicewechat.com/wxfb0905b0787971ad/33/page-frame.html' - } - }; - if (debug) { - log(`\n【debug】=============== 这是 获取天天抢红包 请求 url ===============`); - log(JSON.stringify(options)); - } - axios.request(options).then(function (response) { - try { - var data = response.data; - if (debug) { - log(`\n\n【debug】===============这是 获取天天抢红包 返回data==============`); - log(data) - } - for (var i in data.rows) { - var url = data.rows[i]["url"]; - var title = data.rows[i]["title"]; - if (title.indexOf('天天抢红包') >= 0 && url.indexOf('https') >= 0) { - qhbUrl = url; - log(`获取${title}地址成功`) - return; - } - } - } catch (e) { - log(`获取天天抢红包异常:${data},原因:${e}`) - } - }).catch(function (error) { - console.error(error); - }).then(res => { - //这里处理正确返回 - resolve(); - }); - }) -} - -/** - * 获取资讯 - * @returns {Promise} - */ -async function xxsBanner() { - return new Promise((resolve) => { - var options = { - method: 'GET', - url: 'https://cms.kwwblcj.com/data/xxsbanner2.json', - params: {T: timestampMs(), memberId: kwwUid}, - headers: { - Host: 'cms.kwwblcj.com', - Connection: 'keep-alive', - 'User-Agent': userAgent, - 'content-type': 'application/json', - Referer: 'https://servicewechat.com/wxfb0905b0787971ad/34/page-frame.html', - } - }; - if (debug) { - log(`\n【debug】=============== 这是 获取资讯信息 请求 url ===============`); - log(JSON.stringify(options)); - } - axios.request(options).then(function (response) { - try { - var data = response.data; - if (debug) { - log(`\n\n【debug】===============这是 获取资讯信息 返回data==============`); - log(data) - } - articleReadList = data.rows; - log(`获取到${articleReadList.length}条资讯`) - } catch (e) { - log(`获取资讯信息异常:${data},原因:${e}`) - } - }).catch(function (error) { - console.error(error); - }).then(res => { - //这里处理正确返回 - resolve(); - }); - }) - -} - -/** - * 获取 - * @returns {Promise} - */ -async function getAnswerLists() { - answerLists = JSON.parse('{"1":1,"2":1,"3":1,"4":1,"5":4,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":2,"14":1,"15":2,"16":1,"17":2,"18":2,"19":1,"20":1,"21":4,"22":1,"23":4,"24":1,"25":3,"26":1,"27":4,"28":1,"29":4,"30":4,"31":1,"32":4,"33":1,"34":1,"35":1,"36":1,"37":4,"38":1,"39":3,"40":4,"41":2,"42":1,"43":2,"44":4,"45":4,"46":2,"47":1,"48":1,"49":1,"50":2,"51":4,"52":4,"53":1,"54":3,"55":3,"56":4,"57":4,"58":4,"59":1,"60":4,"61":1,"62":1,"63":1,"64":2,"65":1,"66":3,"67":1,"68":1,"69":4,"70":4,"71":4,"72":1,"73":4,"74":2,"75":4,"76":4,"77":4,"78":1,"79":2,"80":1,"81":2,"82":3,"83":3,"84":4,"85":1,"86":2,"87":3,"88":2,"89":4,"90":2,"91":4,"92":3,"93":4,"94":2,"95":3,"96":2,"97":3,"98":2,"99":4,"100":4,"101":4,"102":3,"103":4,"104":4,"105":4,"106":4}'); - return true; -} - -/** - * 查询任务列表 - * @returns {Promise} - */ -async function selectTaskList() { - return new Promise((resolve) => { - var options = { - method: 'GET', - url: 'https://member.kwwblcj.com/member/api/list/', - params: { - userKeys: userKeys, - pageName: 'select-task-list', - formName: formName, - memberId: kwwUid - }, - headers: { - Host: 'member.kwwblcj.com', - Connection: 'keep-alive', - 'content-type': 'application/json', - 'User-Agent': userAgent, - Referer: 'https://servicewechat.com/wxfb0905b0787971ad/33/page-frame.html' - } - }; - if (debug) { - log(`\n【debug】=============== 这是 查询任务列表 请求 url ===============`); - log(JSON.stringify(options)); - } - axios.request(options).then(function (response) { - try { - var data = response.data; - if (debug) { - log(`\n\n【debug】===============这是 查询任务列表 返回data==============`); - log(data) - } - if (data.hasOwnProperty('flag') && data.flag == "T") { - for (var i in data.rows) { - var infoId = data.rows[i]['infoId']; - var ruleType = data.rows[i]['ruleType']; - var complete = data.rows[i]['complete']; - if (ruleType == "articleRead") { - isArticleReadFlag = (complete == 1) ? true : false; - } - } - log(`查询任务列表成功`) - } else { - log(`查询任务列表,原因是:${data.msg}`) - } - } catch (e) { - log(`查询任务列表异常:${data},原因:${e}`) - } - }).catch(function (error) { - console.error(1, error); - }).then(res => { - //这里处理正确返回 - resolve(); - }); - }) - -} - - -/** - * 获取签到信息 - * @param timeout - * @returns {Promise} - */ -async function getSignInfo(timeout = 2000) { - signCateId = ''; - isSign = false; - let options = { - url: `https://member.kwwblcj.com/member/api/list/?userKeys=${userKeys}&pageName=selectSignInfo&formName=searchForm&memberId=${kwwUid}`, - headers: { - Host: 'member.kwwblcj.com', - Connection: 'keep-alive', - 'content-type': 'application/json', - 'User-Agent': userAgent, - Referer: 'https://servicewechat.com/wxfb0905b0787971ad/33/page-frame.html' - }, - }; - if (debug) { - log(`\n【debug】=============== 这是 查询签到信息 请求 url ===============`); - log(JSON.stringify(options)); - } - return new Promise((resolve) => { - $.get(options, async (error, response, data) => { - try { - if (debug) { - log(`\n\n【debug】===============这是 查询签到信息 返回data==============`); - log(data) - } - let result = JSON.parse(data); - if (result.hasOwnProperty('flag') && result.flag == "T") { - var nowDate = time("yyyy-MM-dd"); - for (var i in result.rows.data) { - var actionDate = result.rows.data[i]["actionDate"]; - var cateId = result.rows.data[i]["cateId"]; - var flag = result.rows.data[i]["flag"]; - if (actionDate == nowDate) { - signCateId = cateId; - signRulesName = result.rows.data[i]["rulesName"]; - signParamNo = result.rows.data[i]["paramNo"]; - signOrderNo = result.rows.data[i]["orderNo"]; - if (flag == 1) { - isSign = true; - } else { - isSign = false; - } - } - } - log(`查询签到信息成功`) - } else { - log(`查询签到信息失败,原因是:${data}`) - } - - } catch (e) { - log(`查询签到信息异常:${data},原因:${e}`) - } finally { - resolve(); - } - }, timeout) - }) -} -async function activeTaskFlag(timeout = 2000) { - let options = { - url: `https://member.kwwblcj.com/member/api/list/?userKeys=${userKeys}&pageName=activeTaskFlag&formName=editForm&memberId=${kwwUid}&userCname=%7F%7F`, - headers: { - Host: 'member.kwwblcj.com', - Connection: 'keep-alive', - 'content-type': 'application/json', - 'User-Agent': userAgent, - Referer: 'https://servicewechat.com/wxfb0905b0787971ad/33/page-frame.html' - }, - }; - if (debug) { - log(`\n【debug】=============== 这是 点击青果 请求 url ===============`); - log(JSON.stringify(options)); - } - return new Promise((resolve) => { - $.get(options, async (error, response, data) => { - - try { - if (debug) { - log(`\n\n【debug】===============这是 点击青果 返回data==============`); - log(data) - } - let result = JSON.parse(data); - if (result.hasOwnProperty('flag') && result.flag == "T") { - log(`点击青果 ${result.rows}`) - } else { - log(`点击青果 失败,原因是:${data}`) - } - - } catch (e) { - log(`点击青果 异常:${data},原因:${e}`) - } finally { - resolve(); - } - }, timeout) - }) -} -/** - * 查询接口 - * @param timeout - * @returns {Promise} - */ -async function dbInterface(timeout = 2000) { - let options = { - url: `https://member.kwwblcj.com/member/api/info/?userKeys=${userKeys}&pageName=dbInterface&formName=treeStatus&uid=${kwwUid}`, - headers: { - Host: 'member.kwwblcj.com', - Connection: 'keep-alive', - 'content-type': 'application/json', - 'User-Agent': userAgent, - Referer: 'https://servicewechat.com/wxfb0905b0787971ad/33/page-frame.html' - }, - }; - if (debug) { - log(`\n【debug】=============== 这是 查询接口 请求 url ===============`); - log(JSON.stringify(options)); - } - return new Promise((resolve) => { - $.get(options, async (error, response, data) => { - try { - if (debug) { - log(`\n\n【debug】===============这是 查询接口 返回data==============`); - log(data) - } - let result = JSON.parse(data); - if (result.hasOwnProperty('flag') && result.flag == "T") { - log(`接口${result.msg}`) - } else { - log(`查询接口失败,原因是:${data}`) - } - - } catch (e) { - log(`查询接口异常:${data},原因:${e}`) - } finally { - resolve(); - } - }, timeout) - }) -} - - -/** - * 签到 - * @returns {Promise} - */ -async function signIn() { - return new Promise((resolve) => { - var options = { - method: 'POST', - url: 'https://member.kwwblcj.com/member/api/submit/', - params: {userKeys: userKeys}, - headers: { - Host: 'member.kwwblcj.com', - Connection: 'keep-alive', - 'content-type': 'application/json', - 'User-Agent': userAgent, - Referer: 'https://servicewechat.com/wxfb0905b0787971ad/33/page-frame.html' - }, - data: { - pageName: 'AddSignSvmInfo', - formName: 'addForm', - orderNo: signOrderNo, - paramNo: signParamNo, - cateId: signCateId, - memberId: kwwUid, - memberName: userCname - } - }; - if (debug) { - log(`\n【debug】=============== 这是 签到请求 请求 url ===============`); - log(JSON.stringify(options)); - } - axios.request(options).then(function (response) { - var data = response.data; - if (debug) { - log(`\n\n【debug】===============这是 签到请求 返回data==============`); - log(data) - } - if (data.hasOwnProperty('flag') && data.flag == "T") { - addNotifyStr(`${data.msg},${signRulesName},积分+${signParamNo}`, true) - } else { - addNotifyStr(`签到失败,原因是:${data.msg}`, true) - } - }).catch(function (error) { - console.error(error); - }).then(res => { - //这里处理正确返回 - resolve(); - }); - }) -} - -/** - * 阅读信息 - * @returns {Promise} - */ -async function readInfo() { - return new Promise((resolve) => { - - var options = { - method: 'GET', - url: 'https://qrcode.kwwblcj.com/qrc/api/info/' + memberUnionid + '/', - params: {T: timestampMs(), memberId: kwwUid}, - headers: { - Host: 'qrcode.kwwblcj.com', - Connection: 'keep-alive', - 'User-Agent': userAgent, - 'content-type': 'application/json', - Referer: 'https://servicewechat.com/wxfb0905b0787971ad/34/page-frame.html', - } - }; - if (debug) { - log(`\n【debug】=============== 这是 阅读信息 请求 url ===============`); - log(JSON.stringify(options)); - } - axios.request(options).then(function (response) { - try { - var data = response.data; - if (debug) { - log(`\n\n【debug】===============这是 阅读信息 返回data==============`); - log(data) - } - if (data.hasOwnProperty('flag') && data.flag == "T") { - log(`查询阅读信息成功`) - } else { - log(`查询阅读信息失败,原因是:${data.msg}`) - } - } catch (e) { - log(`查询阅读信息异常:${data},原因:${e}`) - } - }).catch(function (error) { - console.error(error); - }).then(res => { - //这里处理正确返回 - resolve(); - }); - }) - -} - -/** - * 提交阅读 - * @returns {Promise} - */ -async function readSubmit() { - var max = articleReadList.length - 1; - var articleTitle = articleReadList[randomInt(0, max)]['title']; - return new Promise((resolve) => { - var options = { - method: 'GET', - url: 'https://member.kwwblcj.com/member/api/list/', - params: { - userKeys: userKeys, - pageName: 'setNewsReadTaskFlag', - formName: 'addForm', - memberId: kwwUid, - userCname: userCname, - articleTitle: articleTitle - }, - headers: { - Host: 'member.kwwblcj.com', - Connection: 'keep-alive', - 'User-Agent': userAgent, - 'content-type': 'application/json', - Referer: 'https://servicewechat.com/wxfb0905b0787971ad/34/page-frame.html', - } - }; - if (debug) { - log(`\n【debug】=============== 这是 阅读提交 请求 url ===============`); - log(JSON.stringify(options)); - } - axios.request(options).then(function (response) { - try { - var data = response.data; - if (debug) { - log(`\n\n【debug】===============这是 阅读提交 返回data==============`); - log(data) - } - if (data.hasOwnProperty('flag') && data.flag == "T") { - log(`${data.rows}阅读信息成功`) - addNotifyStr(`每日阅读任务完成`) - } else { - log(`阅读信息失败,原因是:${data.msg}`) - } - } catch (e) { - log(`阅读信息异常:${data},原因:${e}`) - } - }).catch(function (error) { - console.error(error); - }).then(res => { - //这里处理正确返回 - resolve(); - }); - }) - -} - -/** - * 登入 - * @param redirect - * @returns {Promise} - */ -async function loginFreePlugin(redirect) { - return new Promise((resolve) => { - var options = { - method: 'GET', - url: 'https://member.kwwblcj.com/member/api/info/', - params: { - userKeys: userKeys, - pageName: 'loginFreePlugin', - formName: 'searchForm', - uid: kwwUid, - levelCode: '1', - redirect: redirect - }, - headers: { - Host: 'member.kwwblcj.com', - Connection: 'keep-alive', - 'content-type': 'application/json', - 'User-Agent': userAgent, - Referer: 'https://servicewechat.com/wxfb0905b0787971ad/33/page-frame.html' - } - }; - - axios.request(options).then(function (response) { - try { - var data = response.data; - if (data.hasOwnProperty('flag') && data.flag == 'T') { - loginUrl = data.result; - log(`登录成功,${data.msg}`) - } else { - log(`登录失败【${data.msg}】`) - } - } catch (e) { - log(`登入异常:${data},原因:${e}`) - } - }).catch(function (error) { - console.error(error); - }).then(res => { - //这里处理正确返回 - resolve(); - }); - }) - -} - -/** - * 设置cookie - * @returns {Promise} - */ -async function setCookies() { - return new Promise((resolve) => { - var host = (loginUrl.split('//')[1]).split('/')[0]; - try { - request( - { - url: loginUrl, - method: "GET", - headers: { - 'Host': host, - 'Connection': 'keep-alive', - 'Upgrade-Insecure-Requests': '1', - 'User-Agent': userAgent, - "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', - "Sec-Fetch-Site": "none", - "Sec-Fetch-Mode": "navigate", - "Sec-Fetch-User": "?1", - "Sec-Fetch-Dest": "document", - "Accept-Encoding": "gzip, deflate, br", - "Accept-Language": "en-us,en", - }, - }, function (err, res, body) { - gameCookie = res.request.headers.cookie; - log(`转换Cookie成功!`) - }) - } catch (e) { - log(e) - } finally { - resolve(); - } - }) -} - - -/** - * 完成疯狂摇奖机 - * @param num - * @returns {Promise} - */ -async function finishYjj(num) { - await loginFreePlugin(yjjUrl); - await $.wait(3000) - if (loginUrl == "") { - log(`账号【${num}】登录异常,自动跳过疯狂摇奖机任务!`); - return false; - } - await setCookies(); - await $.wait(3000); - if (gameCookie == "") { - log(`账号【${num}】cookies异常,自动跳过疯狂摇奖机任务!`); - return false; - } - var urlMatch = yjjUrl.match('([^/]+)/?$'); - var baseUrl = yjjUrl.replace(urlMatch[0], ''); - var activityId = getQueryString(yjjUrl, "id"); - await getAjaxElement(baseUrl, activityId); - await $.wait(2000); - if (!yjjLimit) { - await getYjjHtml(); - await $.wait(2000); - try { - var result = ParseYjjHtml(yjjHtml); - await getYjjToken(baseUrl, activityId, result.cid); - await $.wait(2000); - var token = yjgettoken(yjjHtml, tokenStr); - await $.wait(2000); - await doYjjJoin(baseUrl, activityId, result.cid, token); - await $.wait(3000); - if (yjjOrderId != '') { - await getYjjOrderStatus(baseUrl); - } - } catch (e) { - log(`账号【${num}】解码异常,自动跳过疯狂摇奖机任务!${e}`); - return false; - } - } else { - log(`账号【${num}】疯狂摇奖机免费次数为0!自动跳过`); - return false; - } - return true; -} - - -/** - * 次数 - * @param baseUrl - * @param activityId - * @returns {Promise} - */ -async function getAjaxElement(baseUrl, activityId) { - return new Promise((resolve) => { - var url = baseUrl + 'ajaxElement'; - var host = (url.split('//')[1]).split('/')[0]; - var options = { - method: 'POST', - url: url, - params: {_: timestampMs()}, - headers: { - cookie: gameCookie, - Host: host, - Accept: 'application/json', - 'X-Requested-With': 'XMLHttpRequest', - 'Accept-Language': 'zh-CN,zh-Hans;q=0.9', - 'Content-Type': 'application/x-www-form-urlencoded', - Origin: 'https://89420.activity-20.m.duiba.com.cn', - 'User-Agent': userAgent, - Connection: 'keep-alive', - Referer: yjjUrl + '&from=login&spm=89420.1.1.1', - }, - data: { - hdType: 'dev', - hdToolId: '', - preview: 'false', - actId: activityId, - adslotId: '' - } - }; - if (debug) { - log(`\n【debug】=============== 这是 获取疯狂摇奖机次数 请求 url ===============`); - log(JSON.stringify(options)); - } - axios.request(options).then(function (response) { - try { - var data = response.data; - if (debug) { - log(`\n\n【debug】===============这是 获取疯狂摇奖机次数 返回data==============`); - log(JSON.stringify(data)) - } - if (data.hasOwnProperty('success') && data.success) { - yjjLimit = data.element.freeEmpty; - log(`获取摇奖机免费次数成功`) - } else { - log(`获取摇奖机免费次数失败【${JSON.stringify(data)}】`) - } - } catch (e) { - log(`获取摇奖机免费次数异常:${JSON.stringify(data)},原因:${e}`) - } - }).catch(function (error) { - console.error(error); - }).then(res => { - //这里处理正确返回 - resolve(); - }); - }) - -} - -/** - * 获取摇奖机页面 - * @returns {Promise} - */ -async function getYjjHtml() { - return new Promise((resolve) => { - let url = yjjUrl + '&from=login&spm=89420.1.1.1'; - let host = (yjjUrl.split('//')[1]).split('/')[0]; - var options = { - method: 'GET', - url: url, - headers: { - cookie: gameCookie, - Host: host, - Accept: '*/*', - Connection: 'keep-alive', - 'User-Agent': userAgent, - 'Accept-Language': 'zh-CN,zh-Hans;q=0.9', - 'Accept-Encoding': 'gzip, deflate, br' - } - }; - if (debug) { - log(`\n【debug】=============== 这是 疯狂摇奖机 请求 url ===============`); - log(JSON.stringify(options)); - } - axios.request(options).then(function (response) { - if (debug) { - log(`\n【debug】=============== 这是 疯狂摇奖机 返回 data ===============`); - log(response); - } - yjjHtml = response.data; - }).catch(function (error) { - console.error(error); - }).catch(function (error) { - console.error(error); - }).then(res => { - //这里处理正确返回 - resolve(); - }); - }) -} - -/** - * 获取token - * @param activityId - * @param consumerId - * @returns {Promise} - */ -async function getYjjToken(baseUrl, activityId, consumerId) { - return new Promise((resolve) => { - var url = baseUrl + 'ctoken/getTokenNew'; - var host = (url.split('//')[1]).split('/')[0]; - var options = { - method: 'POST', - url: url, - headers: { - cookie: gameCookie, - Host: host, - Accept: 'application/json', - 'X-Requested-With': 'XMLHttpRequest', - 'Accept-Language': 'zh-CN,zh-Hans;q=0.9', - 'Content-Type': 'application/x-www-form-urlencoded', - Origin: 'https://89420.activity-20.m.duiba.com.cn', - 'User-Agent': userAgent, - Connection: 'keep-alive', - Referer: yjjUrl + '&from=login&spm=89420.1.1.1', - }, - data: { - timestamp: timestampMs(), - activityId: activityId, - activityType: 'hdtool', - consumerId: consumerId - } - }; - if (debug) { - log(`\n【debug】=============== 这是 获取疯狂摇奖机token 请求 url ===============`); - log(JSON.stringify(options)); - } - axios.request(options).then(function (response) { - try { - tokenStr = response.data.token; - if (debug) { - log(`\n\n【debug】===============这是 获取疯狂摇奖机token 返回data==============`); - log(JSON.stringify(data)) - } - log(`获取token成功`) - } catch (e) { - log(`获取token失败:${JSON.stringify(data)},原因:${e}`) - } - }).catch(function (error) { - console.error(error); - }).then(res => { - //这里处理正确返回 - resolve(); - }); - }) - -} - -/** - * 摇奖 - * @param baseUrl - * @param activityId - * @param consumerId - * @param token - * @returns {Promise} - */ -async function doYjjJoin(baseUrl, activityId, consumerId, token) { - return new Promise((resolve) => { - var url = baseUrl + 'doJoin'; - var host = (url.split('//')[1]).split('/')[0]; - - var options = { - method: 'POST', - url: url, - params: {dpm: '89420.3.1.0', activityId: activityId, _: timestampMs()}, - headers: { - cookie: gameCookie, - Host: host, - Accept: 'application/json', - 'X-Requested-With': 'XMLHttpRequest', - 'Accept-Language': 'zh-CN,zh-Hans;q=0.9', - 'Content-Type': 'application/x-www-form-urlencoded', - Origin: 'https://89420.activity-20.m.duiba.com.cn', - 'User-Agent': userAgent, - Connection: 'keep-alive', - Referer: yjjUrl + '&from=login&spm=89420.1.1.1', - }, - data: { - actId: activityId, - oaId: activityId, - activityType: 'hdtool', - consumerId: consumerId, - token: token - } - }; - if (debug) { - log(`\n【debug】=============== 这是 摇奖 请求 url ===============`); - log(JSON.stringify(options)); - } - axios.request(options).then(function (response) { - try { - var data = response.data; - if (debug) { - log(`\n\n【debug】===============这是 摇奖 返回data==============`); - log(JSON.stringify(data)) - } - if (data.hasOwnProperty('success') && data.success) { - yjjOrderId = data.orderId; - var needCredits = data.needCredits; - log(`摇奖成功,订单:${yjjOrderId},需要积分:${needCredits}`) - } else { - log(`摇奖失败【${JSON.stringify(data)}】`) - } - } catch (e) { - log(`摇奖异常:${JSON.stringify(data)},原因:${e}`) - } - }).catch(function (error) { - console.error(error); - }).then(res => { - //这里处理正确返回 - resolve(); - }); - }) - -} - -/** - * 获取顶顶那状态 - * @param baseUrl - * @returns {Promise} - */ -async function getYjjOrderStatus(baseUrl) { - return new Promise((resolve) => { - var url = baseUrl + 'getOrderStatus'; - var host = (url.split('//')[1]).split('/')[0]; - var options = { - method: 'POST', - url: url, - params: {_: timestampMs()}, - headers: { - cookie: gameCookie, - Host: host, - Accept: 'application/json', - 'X-Requested-With': 'XMLHttpRequest', - 'Accept-Language': 'zh-CN,zh-Hans;q=0.9', - 'Content-Type': 'application/x-www-form-urlencoded', - Origin: 'https://89420.activity-20.m.duiba.com.cn', - 'User-Agent': userAgent, - Connection: 'keep-alive', - Referer: yjjUrl + '&from=login&spm=89420.1.1.1', - }, - data: {orderId: yjjOrderId, adslotId: ''} - }; - if (debug) { - log(`\n【debug】=============== 这是 摇奖状态 请求 url ===============`); - log(JSON.stringify(options)); - } - axios.request(options).then(function (response) { - try { - var data = response.data; - if (debug) { - log(`\n\n【debug】===============这是 摇奖状态 返回data==============`); - log(JSON.stringify(data)) - } - if (data.hasOwnProperty('success') && data.success) { - var type = data.lottery.type; - log(`摇奖成功,${type},当前积分:${data.element.myCredits},剩余次数:${data.element.freeLimit}`) - } else { - log(`摇奖失败【${JSON.stringify(data)}】`) - } - } catch (e) { - log(`摇奖异常:${JSON.stringify(data)},原因:${e}`) - } - }).catch(function (error) { - console.error(error); - }).then(res => { - //这里处理正确返回 - resolve(); - }); - }) - - -} - -/** - * 完成海岛游乐场 - * @param num - * @returns {Promise} - */ -async function finishHd(num) { - await loginFreePlugin(hdUrl); - await $.wait(3000) - if (loginUrl == "") { - log(`账号【${num}】登录异常,自动跳过海岛游乐场任务!`); - return false; - } - await setCookies(); - await $.wait(3000); - if (gameCookie == "") { - log(`账号【${num}】cookies异常,自动跳过海岛游乐场任务!`); - return false; - } - var urlMatch = hdUrl.match('([^/]+)/?$'); - var baseUrl = hdUrl.replace(urlMatch[0], ''); - var opId = getQueryString(hdUrl, "opId"); - await getHdInfo(baseUrl, opId); - if (remainingLimitTimes == 0) { - log(`账号【${num}】海岛游乐场次数为0,不执行!`); - return false - } else { - await getHdHtml(); - await $.wait(2000); - try { - var result = ParseHtmlGame(hdHtml); - var hdKey = result.key; - for (var i = 1; i <= remainingLimitTimes; i++) { - log(`开始第${i}次海岛游戏!`); - hdSubmitFlag = false; - hdDrawFlag = false; - - await startHdGame(baseUrl, opId); - - - if (hdStartId != '') { - await getHdOrderStatus(baseUrl, opId); - await $.wait(2000); - await startHdRound(baseUrl, opId,hdStartId,"1"); - await $.wait(30000); - - await hdtj('1','5',hdStartId,'5',hdKey) - await $.wait(2000); - if (hdSubmitFlag) { - await hdDraw(baseUrl, opId,hdStartId,"1"); - } - - if (hdDrawFlag && hdSubmitFlag) { - await startHdRound(baseUrl, opId,hdStartId,"2"); - await $.wait(30000); - - await hdtj('2','10',hdStartId,'15',hdKey) - if (hdSubmitFlag) { - await hdDraw(baseUrl, opId,hdStartId,"2"); - } - } - await $.wait(1000); - if (hdDrawFlag && hdSubmitFlag) { - await startHdRound(baseUrl, opId,hdStartId,"3"); - await $.wait(30000); - - await hdtj('3','15',hdStartId,'30',hdKey) - await $.wait(2000); - if (hdSubmitFlag) { - await hdDraw(baseUrl, opId,hdStartId,"3"); - } - - } - - } - - } - } catch (e) { - log(`账号【${num}】解码异常,自动跳过海岛游乐场任务!${e}`); - return false; - } - } - return true; -} - -/** - * 获取海岛页面 - * @returns {Promise} - */ -async function getHdHtml() { - return new Promise((resolve) => { - let url = hdUrl + '&from=login&spm=89420.1.1.1'; - let host = (hdUrl.split('//')[1]).split('/')[0]; - var options = { - method: 'GET', - url: url, - headers: { - cookie: gameCookie, - Host: host, - Accept: '*/*', - Connection: 'keep-alive', - 'User-Agent': userAgent, - 'Accept-Language': 'zh-CN,zh-Hans;q=0.9', - 'Accept-Encoding': 'gzip, deflate, br' - } - }; - - axios.request(options).then(function (response) { - hdHtml = response.data; - }).catch(function (error) { - console.error(error); - }).catch(function (error) { - console.error(error); - }).then(res => { - //这里处理正确返回 - resolve(); - }); - }) -} - -/** - * 海岛游戏信息 - * @param baseUrl - * @param opId - * @returns {Promise} - */ -async function getHdInfo(baseUrl, opId) { - return new Promise((resolve) => { - let url = baseUrl + 'getInfo'; - let host = (baseUrl.split('//')[1]).split('/')[0]; - var options = { - method: 'GET', - url: url, - params: {__ts__: timestampMs(), opId: opId}, - headers: { - cookie: gameCookie, - Host: host, - Connection: 'keep-alive', - 'User-Agent': userAgent, - 'Content-Type': 'application/x-www-form-urlencoded', - Accept: '*/*', - Referer: 'https://89420.activity-20.m.duiba.com.cn/aaw/underseaGame/index?opId=202214587511596&dbnewopen&from=login&spm=89420.1.1.1', - 'Accept-Language': 'en-us,en' - }, - data: {} - }; - if (debug) { - log(`\n【debug】=============== 这是 海岛游戏信息 请求 url ===============`); - log(JSON.stringify(options)); - } - axios.request(options).then(function (response) { - try { - var data = response.data; - if (debug) { - log(`\n\n【debug】===============这是 海岛游戏信息 返回data==============`); - log(JSON.stringify(data)) - } - if (data.hasOwnProperty('success') && data.success) { - remainingLimitTimes = data.data.remainingLimitTimes; - // remainingLimitTimes = data.data.remainingFreeTimes; - log(`获取海岛游戏信息成功`) - } else { - log(`获取海岛游戏信息失败【${data}】`) - } - } catch (e) { - log(`海岛游戏信息异常:${data},原因:${e}`) - } - }).catch(function (error) { - console.error(error); - }).then(res => { - //这里处理正确返回 - resolve(); - }); - }) - -} - -/** - * 开始海岛游戏 - * @param baseUrl - * @param opId - * @returns {Promise} - */ -async function startHdGame(baseUrl, opId) { - return new Promise((resolve) => { - let url = baseUrl + 'start'; - let host = (baseUrl.split('//')[1]).split('/')[0]; - var options = { - method: 'POST', - url: url, - params: {__ts__: timestampMs()}, - headers: { - cookie: gameCookie, - Host: host, - Connection: 'keep-alive', - 'User-Agent': userAgent, - 'Content-Type': 'application/x-www-form-urlencoded', - Accept: '*/*', - Referer: hdUrl + '&from=login&spm=89420.1.1.1', - 'Accept-Language': 'en-us,en' - }, - data: {opId: opId} - }; - if (debug) { - log(`\n【debug】=============== 这是 开始海岛游戏 请求 url ===============`); - log(JSON.stringify(options)); - } - axios.request(options).then(function (response) { - try { - var data = response.data; - if (debug) { - log(`\n\n【debug】===============这是 开始海岛游戏 返回data==============`); - log(JSON.stringify(data)) - } - if (data.hasOwnProperty('success') && data.success) { - hdStartId = data.data.startId; - hdOrderNum = data.data.orderNum; - log(`开始海岛游戏成功,订单:${hdOrderNum}`) - } else { - log(`开始海岛游戏失败【${JSON.stringify(data)}】`) - } - } catch (e) { - log(`开始海岛游戏异常:${JSON.stringify(data)},原因:${e}`) - } - }).catch(function (error) { - console.error(error); - }).then(res => { - //这里处理正确返回 - resolve(); - }); - }) - -} - -/** - * 获取海岛订单 - * @param baseUrl - * @param opId - * @returns {Promise} - */ -async function getHdOrderStatus(baseUrl, opId) { - return new Promise((resolve) => { - let url = baseUrl + 'getOrderStatus'; - let host = (baseUrl.split('//')[1]).split('/')[0]; - var options = { - method: 'GET', - url: url, - params: { - __ts__: timestampMs(), - opId: opId, - startId: hdStartId, - orderNum: hdOrderNum, - type: '1' - }, - headers: { - cookie: gameCookie, - Host: host, - Connection: 'keep-alive', - 'User-Agent': userAgent, - 'Content-Type': 'application/x-www-form-urlencoded', - Accept: '*/*', - Referer: hdUrl + '&from=login&spm=89420.1.1.1', - 'Accept-Language': 'en-us,en' - }, - data: {} - }; - if (debug) { - log(`\n【debug】=============== 这是 获取海岛订单状态 请求 url ===============`); - log(JSON.stringify(options)); - } - axios.request(options).then(function (response) { - try { - var data = response.data; - if (debug) { - log(`\n\n【debug】===============这是 获取海岛订单状态 返回data==============`); - log(JSON.stringify(data)) - } - if (data.hasOwnProperty('success') && data.success) { - log(`获取海岛订单状态成功,${data.data}`) - } else { - log(`获取海岛订单状态失败【${JSON.stringify(data)}】`) - } - } catch (e) { - log(`获取海岛订单状态异常:${JSON.stringify(data)},原因:${e}`) - } - }).catch(function (error) { - console.error(error); - }).then(res => { - //这里处理正确返回 - resolve(); - }); - }) - -} - -/** - * 开始 - * @param baseUrl - * @param opId - * @param hdRoundIndex - * @returns {Promise} - */ -async function startHdRound(baseUrl, opId,hdStartId,hdRoundIndex) { - return new Promise((resolve) => { - let url = baseUrl + 'startRound'; - let host = (baseUrl.split('//')[1]).split('/')[0]; - var options = { - method: 'POST', - url: url, - params: {__ts__: timestampMs()}, - headers: { - cookie: gameCookie, - Host: host, - Connection: 'keep-alive', - 'User-Agent': userAgent, - 'Content-Type': 'application/x-www-form-urlencoded', - Accept: '*/*', - Referer: hdUrl + '&from=login&spm=89420.1.1.1', - 'Accept-Language': 'en-us,en' - }, - data: {opId: opId, startId: hdStartId, roundIndex: hdRoundIndex} - }; - if (debug) { - log(`\n【debug】=============== 这是 开始海岛关口 请求 url ===============`); - log(JSON.stringify(options)); - } - axios.request(options).then(function (response) { - try { - var data = response.data; - if (debug) { - log(`\n\n【debug】===============这是 开始海岛关口 返回data==============`); - log(JSON.stringify(data)) - } - if (data.hasOwnProperty('success') && data.success) { - log(`开始第${hdRoundIndex}关成功`) - } else { - log(`开始海岛关口失败【${JSON.stringify(data)}】`) - } - } catch (e) { - log(`开始海岛关口异常:${JSON.stringify(data)},原因:${e}`) - } - }).catch(function (error) { - console.error(error); - }).then(res => { - //这里处理正确返回 - resolve(); - }); - }) - -} - -/** - * 海岛提交 - * @param baseUrl - * @param opId - * @param hdKey - * @param hdScore - * @param hdTotalScore - * @param hdRoundIndex - * @returns {Promise} - */ -async function hdtj(hdRoundIndex,hdScore,hdStartId,hdTotalScore,hdKey) { - hdDrawFlag = false; - return new Promise((resolve) => { - let url ='https://89420.activity-20.m.duiba.com.cn/aaw/underseaGame/submit'; - - let sign = md5('opId=202214587511596&roundIndex=' + hdRoundIndex + '&score=' + hdScore + '&startId=' + hdStartId + '&totalScore=' + hdTotalScore + '&key=' + hdKey) - - var options = { - method: 'POST', - url: url, - data:'opId=202214587511596&startId='+ hdStartId +'&score='+hdScore+'&totalScore='+hdTotalScore+'&roundIndex='+hdRoundIndex+'&sign='+sign, - headers: { - cookie: gameCookie, - 'Cache-Control': 'no-cache', - 'Connection': 'Keep-Alive', - 'Content-Type': 'application/x-www-form-urlencoded', - 'Accept': 'application/json', - 'Accept-Language': 'en-us,en', - 'Host': '89420.activity-20.m.duiba.com.cn', - 'Referer': 'https://89420.activity-20.m.duiba.com.cn/aaw/superSurprise/index?id=85&dbnewopen&from=login&spm=89420.1.1.1', - 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36 MicroMessenger/7.0.4.501 NetType/WIFI MiniProgramEnv/Windows WindowsWechat/WMPF', - 'Accept-Encoding': 'gzip, deflate', - }, - - }; - if (debug) { - log(`\n【debug】=============== 这是 海岛提交 请求 url ===============`); - log(JSON.stringify(options)); - } - axios.request(options).then(function (response) { - try { - var data = response.data; - if (debug) { - log(`\n\n【debug】===============这是 海岛提交 返回data==============`); - log(JSON.stringify(data))} - if (data.hasOwnProperty('success') && data.success) { - log(`海岛提交成功,${data.data.rewardToolType}`) - hdSubmitFlag = true; - } else { - log(`海岛提交失败【${JSON.stringify(data)}】`) - } - } catch (e) { - log(`海岛提交异常:${JSON.stringify(data)},原因:${e}`) - } - }).catch(function (error) { - console.error(error); - }).then(res => { - //这里处理正确返回 - resolve(); - }); - }) - -} -async function hdSubmit(baseUrl, opId, hdKey,hdScore,hdTotalScore,hdRoundIndex) { - hdSubmitFlag = false; - return new Promise((resolve) => { - let url = 'https://89420.activity-20.m.duiba.com.cn/aaw/underseaGame/submit'; - let host = (baseUrl.split('//')[1]).split('/')[0]; - //opId=202214587511596&roundIndex={rdinx}&score={score}&startId={hdstartid}&totalScore={totalScore}&key={key} - var sign = "opId=" + opId + "&roundIndex=" + hdRoundIndex + "&score=" + hdScore + "&startId=" + hdStartId + "&totalScore=" + hdTotalScore + "&key=&" + hdKey; - sign = md5(hdKey); - var body = { - opId: opId, - startId: hdStartId, - score: hdScore, - totalScore: hdTotalScore, - roundIndex: hdRoundIndex, - }; - var n = Object.keys(body); - n.sort(); - for (var o = [], a = 0, r = n; a < r.length; a++) { - var i = r[a]; - o.push(i + "=" + body[i]) - } - o.push("key=" + hdKey); - hdKey = o.join("&"); - log(sign) - sign = md5(hdKey); - log(sign) - var params = `opId=${opId}&startId=${hdStartId}&score=${hdScore}&totalScore=${hdTotalScore}&roundIndex=${hdRoundIndex}&sign=${sign}`; - log(params) - if (debug) { - log(`\n【debug】=============== 这是 海岛提交签名 ===============`); - log(sign); - } - var options = { - method: 'POST', - url: url, - //params: {__ts__: timestampMs()}, - data:`opId=${opId}&startId=${hdStartId}&score=${hdScore}&totalScore=${hdTotalScore}&roundIndex=${hdRoundIndex}&sign=${sign}`, - headers: { - cookie: gameCookie, - Host: host, - Connection: 'keep-alive', - 'User-Agent': userAgent, - 'Content-Type': 'application/x-www-form-urlencoded', - Accept: '*/*', - 'Content-Length': '108', - Referer: hdUrl + '&from=login&spm=89420.1.1.1', - 'Accept-Language': 'en-us,en' - }, - - }; - // if (debug) { - log(`\n【debug】=============== 这是 海岛提交 请求 url ===============`); - log(JSON.stringify(options)); - // } - - axios.request(options).then(function (response) { - try { - var data = response.data; - //if (debug) { - log(`\n\n【debug】===============这是 海岛提交 返回data==============`); - log(JSON.stringify(data)) - //} - if (data.hasOwnProperty('success') && data.success) { - log(`海岛提交成功,${data.data.rewardToolType}`) - hdSubmitFlag = true; - } else { - log(`海岛提交失败【${JSON.stringify(data)}】`) - } - } catch (e) { - log(`海岛提交异常:${JSON.stringify(data)},原因:${e}`) - } - }).catch(function (error) { - console.error(error); - }).then(res => { - //这里处理正确返回 - resolve(); - }); - }) - -} - -/** - * 海岛抽奖 - * @param baseUrl - * @param opId - * @param hdRoundIndex - * @returns {Promise} - */ -async function hdDraw(baseUrl, opId,hdStartId,hdRoundIndex) { - hdDrawFlag = false; - return new Promise((resolve) => { - let url = baseUrl + 'draw'; - let host = (baseUrl.split('//')[1]).split('/')[0]; - var options = { - method: 'POST', - url: url, - params: {__ts__: timestampMs()}, - headers: { - cookie: gameCookie, - Host: host, - 'Content-Type': 'application/x-www-form-urlencoded', - Origin: 'https://89420.activity-20.m.duiba.com.cn', - Connection: 'keep-alive', - Accept: '*/*', - 'User-Agent': userAgent, - 'Content-Length': '49', - Referer: hdUrl + '&from=login&spm=89420.1.1.1', - 'Accept-Language': 'zh-CN,zh-Hans;q=0.9' - }, - data: {opId: opId, startId: hdStartId, roundIndex: hdRoundIndex} - }; - if (debug) { - log(`\n【debug】=============== 这是 海岛抽奖 请求 url ===============`); - log(JSON.stringify(options)); - } - axios.request(options).then(function (response) { - try { - var data = response.data; - if (debug) { - log(`\n\n【debug】===============这是 海岛抽奖 返回data==============`); - log(JSON.stringify(data)) - } - if (data.hasOwnProperty('success') && data.success) { - log(`海岛抽奖成功,获得${data.data.name}`) - hdDrawFlag = true - } else { - log(`海岛抽奖失败【${JSON.stringify(data)}】`) - } - } catch (e) { - log(`海岛抽奖异常:${JSON.stringify(data)},原因:${e}`) - } - }).catch(function (error) { - console.error(error); - }).then(res => { - //这里处理正确返回 - resolve(); - }); - }) - -} - -/** - * 完成天降好礼 - * @param num - * @returns {Promise} - */ -async function finishTj(num) { - await loginFreePlugin(tjUrl); - await $.wait(3000) - if (loginUrl == "") { - log(`账号【${num}】登录异常,自动跳过天降好礼任务!`); - return false; - } - await setCookies(); - await $.wait(3000); - if (gameCookie == "") { - log(`账号【${num}】cookies异常,自动跳过天降好礼任务!`); - return false; - } - var urlMatch = tjUrl.match('([^/]+)/?$'); - var baseUrl = tjUrl.replace(urlMatch[0], ''); - var activityId = getQueryString(tjUrl, "id"); - await getTjInfo(baseUrl, activityId); - if (remainJoinTimes == 0) { - log(`账号【${num}】天降好礼免费次数为0,不执行!`); - return false; - } else { - await getTjHtml(activityId); - await $.wait(2000); - for (var i = 1; i <= remainJoinTimes; i++) { - log(`开始第${i}次天降好礼游戏!`); - await doTjJoin(baseUrl, activityId); - if (tjRecordId == '') { - log(`第${i}次天降好礼游戏失败!`); - } else { - await $.wait(40000); - await tjSubmit(baseUrl, activityId); - await $.wait(3000); - await tjOrderStatus(baseUrl); - } - } - - } - return true; -} - -/** - * 获取天降好礼html - * @param activityId - * @returns {Promise} - */ -async function getTjHtml(activityId) { - return new Promise((resolve) => { - let url = tjUrl + '&from=login&spm=89420.1.1.1'; - let host = (tjUrl.split('//')[1]).split('/')[0]; - var options = { - method: 'GET', - url: url, - params: {_: timestampMs(), id: activityId}, - headers: { - cookie: gameCookie, - Host: host, - Accept: '*/*', - Connection: 'keep-alive', - 'User-Agent': userAgent, - 'Accept-Language': 'zh-CN,zh-Hans;q=0.9', - 'Accept-Encoding': 'gzip, deflate, br' - } - }; - - axios.request(options).then(function (response) { - tjHtml = response.data; - }).catch(function (error) { - console.error(error); - }).catch(function (error) { - console.error(error); - }).then(res => { - //这里处理正确返回 - resolve(); - }); - }) -} - -/** - * 获取天降好礼信息 - * @param baseUrl - * @param activityId - * @returns {Promise} - */ -async function getTjInfo(baseUrl, activityId) { - return new Promise((resolve) => { - let url = baseUrl + 'getActivityInfo'; - let host = (baseUrl.split('//')[1]).split('/')[0]; - var options = { - method: 'GET', - url: url, - params: {_: timestampMs(), id: activityId}, - headers: { - cookie: gameCookie, - Host: host, - Accept: '*/*', - Connection: 'keep-alive', - 'User-Agent': userAgent, - 'Accept-Language': 'zh-CN,zh-Hans;q=0.9', - Referer: tjUrl + '&from=login&spm=89420.1.1.1', - } - }; - if (debug) { - log(`\n【debug】=============== 这是 查询天降好礼信息 请求 url ===============`); - log(JSON.stringify(options)); - } - axios.request(options).then(function (response) { - try { - var data = response.data; - if (debug) { - log(`\n\n【debug】===============这是 查询天降好礼信息 返回data==============`); - log(JSON.stringify(data)) - } - if (data.hasOwnProperty('data') && data.data.hasOwnProperty('remainJoinTimes')) { - remainJoinTimes = data.data.remainFreeJoinTimes;//免费次数 - // remainJoinTimes = data.data.remainJoinTimes; - log(`查询天降好礼信息成功`) - } else { - log(`查询天降好礼信息失败:${JSON.stringify(data)}`) - } - - } catch (e) { - log(`查询天降好礼信息异常:${JSON.stringify(data)},原因:${e}`) - } - }).catch(function (error) { - console.error(error); - }).then(res => { - //这里处理正确返回 - resolve(); - }); - }) - -} - -/** - * 开始天降好礼 - * @param baseUrl - * @param activityId - * @returns {Promise} - */ -async function doTjJoin(baseUrl, activityId) { - tjRecordId = ''; - return new Promise((resolve) => { - let url = baseUrl + 'doJoin'; - let host = (baseUrl.split('//')[1]).split('/')[0]; - var options = { - method: 'POST', - url: url, - params: {_: timestampMs()}, - headers: { - cookie: gameCookie, - Host: host, - 'Content-Type': 'application/x-www-form-urlencoded', - Origin: 'https://89420.activity-20.m.duiba.com.cn', - Connection: 'keep-alive', - Accept: 'application/json', - 'User-Agent': userAgent, - Referer: tjUrl + '&from=login&spm=89420.1.1.1', - 'Accept-Language': 'en-us,en' - }, - data: "id=" + activityId - }; - if (debug) { - log(`\n【debug】=============== 这是 开始天降好礼游戏 请求 url ===============`); - log(JSON.stringify(options)); - } - axios.request(options).then(function (response) { - try { - var data = response.data; - if (debug) { - log(`\n\n【debug】===============这是 开始天降好礼游戏 返回data==============`); - log(data) - } - if (data.hasOwnProperty('data') && data.data.hasOwnProperty('recordId')) { - tjRecordId = data.data.recordId; - log(`开始天降好礼游戏成功${data.desc}`) - } else { - log(`开始天降好礼游戏失败:${JSON.stringify(data)}`) - } - - } catch (e) { - log(`开始天降好礼游戏异常:${JSON.stringify(data)},原因:${e}`) - } - }).catch(function (error) { - console.error(error); - }).then(res => { - //这里处理正确返回 - resolve(); - }); - }) - -} - -/** - * 天降提交 - * @param baseUrl - * @param activityId - * @returns {Promise} - */ -async function tjSubmit(baseUrl, activityId) { - const jsencrypt = new JSEncrypt(); - return new Promise((resolve) => { - let url = baseUrl + 'submit'; - let host = (baseUrl.split('//')[1]).split('/')[0]; - var timestamp = timestampMs(); - var score = randomInt(20, 25) + ""; - var sign = md5("".concat(score).concat(timestamp).concat(timestamp.toString(16))); - var key = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1JdBGmK6g6yj3w5YDNCvDL2SjnJMSUExcfYY9fOd2ZOTyzh6suMfR5vBAyBGsolKUmUqh6blqOeNApSKJhkEWMhxG3eERZZYwmtUCRkH1WDQkA/dSuBOnFHQ4sjoMdTuv80j5TNVMtV7qDVEp0XF+muYLuA3tXGgrYVQu8iLAH0kqr9T2u/a6We8qhgvE6ddKxMLyEz3sRnWShioTl/FmjaqCiU3NHNPL8DztEnpsGreq66vp4wPG8Q6UfGHdDiDx+/xJrYDkfnoX0u/OpSxqL8sCHvrmj8fHlptnwy2sgwhREyChWH1JZLV2RWJhOJ63PfnlH7BvqLke2qWLM9YAwIDAQAB"; - jsencrypt.setPublicKey(key); - var result_encrypt = jsencrypt.encrypt(score); - var options = { - method: 'POST', - url: url, - params: {_: timestampMs()}, - headers: { - cookie: gameCookie, - Host: host, - 'Content-Type': 'application/json', - Origin: 'https://89420.activity-20.m.duiba.com.cn', - Connection: 'keep-alive', - Accept: 'application/json', - 'User-Agent': userAgent, - Referer: tjUrl + '&from=login&spm=89420.1.1.1', - 'Accept-Language': 'zh-CN,zh-Hans;q=0.9' - }, - data: { - activityId: activityId, - recordId: tjRecordId, - score: result_encrypt, - timestamp: timestamp, - sign: sign - } - }; - if (debug) { - log(`\n【debug】=============== 这是 提交天降好礼游戏 请求 url ===============`); - log(JSON.stringify(options)); - } - axios.request(options).then(function (response) { - try { - var data = response.data; - if (debug) { - log(`\n\n【debug】===============这是 提交天降好礼游戏 返回data==============`); - log(JSON.stringify(data)) - } - if (data.hasOwnProperty('data') && data.data.hasOwnProperty('recordId')) { - log(`提交天降好礼游戏${data.desc},当前积分:${data.data.currentScore}`) - } else { - log(`提交天降好礼游戏失败:${JSON.stringify(data)}`) - } - - } catch (e) { - log(`提交天降好礼游戏异常:${JSON.stringify(data)},原因:${e}`) - } - }).catch(function (error) { - console.error(error); - }).then(res => { - //这里处理正确返回 - resolve(); - }); - }) - -} - -/** - * 天降好礼奖励 - * @param baseUrl - * @returns {Promise} - */ -async function tjOrderStatus(baseUrl) { - return new Promise((resolve) => { - let url = baseUrl + 'joinRecordStatus'; - let host = (baseUrl.split('//')[1]).split('/')[0]; - var options = { - method: 'GET', - url: url, - params: {_: timestampMs(), id: tjRecordId}, - headers: { - cookie: gameCookie, - Host: host, - Accept: '*/*', - Connection: 'keep-alive', - 'User-Agent': userAgent, - 'Accept-Language': 'zh-CN,zh-Hans;q=0.9', - Referer: tjUrl + '&from=login&spm=89420.1.1.1', - } - }; - if (debug) { - log(`\n【debug】=============== 这是 查询天降好礼奖励 请求 url ===============`); - log(JSON.stringify(options)); - } - axios.request(options).then(function (response) { - try { - var data = response.data; - if (debug) { - log(`\n\n【debug】===============这是 查询天降好礼奖励 返回data==============`); - log(JSON.stringify(data)) - } - if (data.hasOwnProperty('data') && data.data.hasOwnProperty('exchangeStatus')) { - if (data.data.exchangeStatus == 3) { - log(`本次游戏奖励${data.data.prizeInfo.prizeName}`) - } - } else { - log(`查询天降好礼奖励失败:${JSON.stringify(data)}`) - } - - } catch (e) { - log(`查询天降好礼奖励异常:${JSON.stringify(data)},原因:${e}`) - } - }).catch(function (error) { - console.error(error); - }).then(res => { - //这里处理正确返回 - resolve(); - }); - }) - -} - -/** - * 完成青果园 - * @param num - * @returns {Promise} - */ -async function finishQgy(num) { - await loginFreePlugin(qgyUrl); - await $.wait(3000) - if (loginUrl == "") { - log(`账号【${num}】登录青果园异常,自动跳过任务!`); - return false; - } - await setCookies(); - await $.wait(3000); - if (gameCookie == "") { - log(`账号【${num}】cookies异常,自动跳过任务!`); - return false; - } - var urlMatch = qgyUrl.match('([^/]+)/?$'); - var baseUrl = qgyUrl.replace(urlMatch[0], ''); - await getTokenKeyStr(baseUrl); - await $.wait(2000); - await getQgyInfo(baseUrl); - await getTokenStr(baseUrl); - await $.wait(2000); - await qgyCheckQuery(baseUrl); - await $.wait(2000); - if (qgySignFlag) { - log(`账号【${num}】青果园已经签到了!`); - } else { - try { - await getTokenStr(baseUrl); - await $.wait(2000); - qgyToken = dealToken(tokenStr, tokenKeyStr); - await $.wait(2000); - await qgyCreateItem(baseUrl, qgyToken) - await delay(); - await getTokenStr(baseUrl); - await $.wait(2000); - qgyToken = dealToken(tokenStr, tokenKeyStr); - await qgySign(baseUrl, qgyToken); - await getTokenStr(baseUrl); - await $.wait(2000); - qgyToken = dealToken(tokenStr, tokenKeyStr); - if(currentStatusHaveMillis == currentStatusNeedMillis){ - await collectCoconut(baseUrl, qgyToken) - } - } catch (e) { - log(`账号【${num}】青果园签到异常!${e}`); - } - - } - await queryQgyTask(baseUrl); - if (qgyTaskData.length == 0) { - log(`账号【${num}】获取青果园任务异常!`); - } else { - for (var i in qgyTaskData) { - var id = qgyTaskData[i]["id"]; - var taskCode = qgyTaskData[i]["code"]; - var title = qgyTaskData[i]["title"]; - var taskStatus = parseInt(qgyTaskData[i]["taskStatus"]); - if (taskStatus == 2) { - log(`任务【${title}】已经完成了!`); - } else { - switch (id) { - case 'y1z0wktv': - //出门旅行 - if (!isTravelling) { - try { - log(`准备去完成【${title}】`); - await getTokenStr(baseUrl); - await $.wait(2000); - qgyToken = dealToken(tokenStr, tokenKeyStr); - await $.wait(2000); - await startTravel(baseUrl, qgyToken); - await $.wait(2000); - } catch (e) { - log(`账号【${num}】青果园旅行异常!${e}`); - } - } else { - log(`正在旅行中....`); - } - break; - case '9pc7awxr': - case 'fn473yer': - case '494cc96q': - case 'qyksf6pq': - case 'ozzl0eqx': - case 'dnv1dbct': - case 'yaavhjoi': - //完成任务 - log(`准备去完成【${title}】`); - try { - await getTokenStr(baseUrl); - await $.wait(2000); - qgyToken = dealToken(tokenStr, tokenKeyStr); - await $.wait(2000); - await finishBrowseInfoTask(baseUrl, qgyToken, taskCode, title); - await $.wait(2000); - await newRewardInfo(baseUrl); - } catch (e) { - log(`账号【${num}】青果园${title}异常!${e}`); - } - break; - default: - log(`【${title}】不支持自动完成!`) - break; - } - } - - } - } - if (qgyProcess !== 'NaN%') { - log('====能量加速====') - if (leftEnergyBall > 0) { - for (var i = 1; i <= leftEnergyBall; i++) { - log(`开始第${i}次能量加速!`); - try { - await getTokenStr(baseUrl); - await $.wait(2000); - qgyToken = dealToken(tokenStr, tokenKeyStr); - await useEnergyBall(baseUrl, qgyToken) - } catch (e) { - log(`账号【${num}】青果园能量加速异常!${e}`); - } - } - - } else { - log('能量不足,跳过加速') - } - - } else { - log('先去种植把!') - } - return true; -} - -/** - * 能力加速 - * @param baseUrl - * @param token - * @returns {Promise} - */ -async function useEnergyBall(baseUrl, token) { - return new Promise((resolve) => { - var url = baseUrl + 'game/useEnergyBall.do'; - var host = (url.split('//')[1]).split('/')[0]; - var options = { - method: 'POST', - url: url, - params: {_t: timestampMs()}, - headers: { - cookie: gameCookie, - Host: host, - 'Content-Type': 'application/x-www-form-urlencoded', - Origin: 'https://89420.activity-20.m.duiba.com.cn', - Connection: 'keep-alive', - Accept: '*/*', - 'User-Agent': userAgent, - Referer: qgyUrl + '&from=login&spm=89420.1.1.1', - 'Accept-Language': 'zh-CN,zh-Hans;q=0.9' - }, - data: { - token: token, - user_type: '1', - is_from_share: '1', - _t: timestampMs() - } - }; - if (debug) { - log(`\n【debug】=============== 这是 能量加速 请求 url ===============`); - log(JSON.stringify(options)); - } - axios.request(options).then(function (response) { - try { - var data = response.data; - if (debug) { - log(`\n\n【debug】===============这是 能量加速 返回data==============`); - log(JSON.stringify(data)) - } - log(`能量加速:${data.success}`) - } catch (e) { - log(`能量加速失败,原因:${data.message}`) - } - }).catch(function (error) { - console.error(error); - }).then(res => { - //这里处理正确返回 - resolve(); - }); - }) - -} -async function collectCoconut(baseUrl, token) { - return new Promise((resolve) => { - var url = baseUrl + 'game/collectCoconut.do'; - var host = (url.split('//')[1]).split('/')[0]; - var options = { - method: 'POST', - url: url, - params: {_t: timestampMs()}, - headers: { - cookie: gameCookie, - Host: host, - 'Content-Type': 'application/x-www-form-urlencoded', - Origin: 'https://89420.activity-20.m.duiba.com.cn', - Connection: 'keep-alive', - Accept: '*/*', - 'User-Agent': userAgent, - Referer: qgyUrl + '&from=login&spm=89420.1.1.1', - 'Accept-Language': 'zh-CN,zh-Hans;q=0.9' - }, - data: { - token: token, - user_type: '1', - is_from_share: '1', - _t: timestampMs() - } - }; - if (debug) { - log(`\n【debug】=============== 这是 果园收取 请求 url ===============`); - log(JSON.stringify(options)); - } - axios.request(options).then(function (response) { - try { - var data = response.data; - if (debug) { - log(`\n\n【debug】===============这是 果园收取 返回data==============`); - log(JSON.stringify(data)) - } - log(`果园收取:${data.data.quantity}`) - } catch (e) { - log(`果园收取失败,原因:${data.message}`) - } - }).catch(function (error) { - console.error(error); - }).then(res => { - //这里处理正确返回 - resolve(); - }); - }) - -} -/** - * 获取信息 - * @param baseUrl - * @returns {Promise} - */ -async function getQgyInfo(baseUrl) { - return new Promise(async(resolve) => { - var url = baseUrl + 'game/index.do'; - var host = (url.split('//')[1]).split('/')[0]; - var options = { - method: 'GET', - url: url, - params: {user_type: '1', is_from_share: '1', _t: timestampMs()}, - headers: { - cookie: gameCookie, - Host: host, - 'Content-Type': 'application/x-www-form-urlencoded', - Connection: 'keep-alive', - Accept: '*/*', - 'User-Agent': userAgent, - Referer: qgyUrl + '&from=login&spm=89420.1.1.1', - 'Accept-Language': 'zh-CN,zh-Hans;q=0.9' - }, - data: {} - }; - if (debug) { - log(`\n【debug】=============== 这是 查询青果园信息 请求 url ===============`); - log(JSON.stringify(options)); - } - axios.request(options).then(async function (response) { - try { - var data = response.data; - if (debug) { - log(`\n\n【debug】===============这是 查询青果园信息 返回data==============`); - log(JSON.stringify(data)) - } - if (data.hasOwnProperty('data') && data.data.hasOwnProperty('treeInfo')) { - currentStatusHaveMillis = data.data.treeInfo.currentStatusHaveMillis; - currentStatusNeedMillis = data.data.treeInfo.currentStatusNeedMillis; - isTravelling = data.data.isTravelling; - leftEnergyBall = data.data.leftEnergyBall - qgyProcess = ((currentStatusHaveMillis / currentStatusNeedMillis) * 100).toFixed(2) + "%" - - log(`查询青果园信息成功,当前进度:${qgyProcess},能量:${leftEnergyBall}`) - } else { - log(`查询青果园信息失败:${JSON.stringify(data)}`) - } - - } catch (e) { - log(`查询青果园信息异常:${JSON.stringify(data)},原因:${e}`) - } - }).catch(function (error) { - console.error(error); - }).then(res => { - //这里处理正确返回 - resolve(); - }); - }) - -} - -/** - * 青果园签到检查 - * @returns {Promise} - */ -async function qgyCheckQuery(baseUrl) { - qgySignFlag = false; - return new Promise((resolve) => { - var url = baseUrl + 'checkin_1/query.do'; - var host = (url.split('//')[1]).split('/')[0]; - var options = { - method: 'GET', - url: url, - params: {intervalType: '0', user_type: '1', is_from_share: '1', _t: timestampMs()}, - headers: { - cookie: gameCookie, - Host: host, - 'Content-Type': 'application/x-www-form-urlencoded', - Connection: 'keep-alive', - Accept: '*/*', - 'User-Agent': userAgent, - Referer: qgyUrl + '&from=login&spm=89420.1.1.1', - 'Accept-Language': 'zh-CN,zh-Hans;q=0.9', - }, - data: {} - }; - if (debug) { - log(`\n【debug】=============== 这是 查询青果园签到状态 请求 url ===============`); - log(JSON.stringify(options)); - } - axios.request(options).then(function (response) { - try { - var data = response.data; - if (debug) { - log(`\n\n【debug】===============这是 查询青果园签到状态 返回data==============`); - log(JSON.stringify(data)) - } - qgySignFlag = data.data.todaySign; - log(`查询青果园签到状态成功`) - } catch (e) { - log(`查询青果园签到状态异常:${JSON.stringify(data)},原因:${e}`) - } - }).catch(function (error) { - console.error(error); - }).then(res => { - //这里处理正确返回 - resolve(); - }); - }) - -} - -/** - * 创建 - * @param baseUrl - * @param token - * @returns {Promise} - */ -async function qgyCreateItem(baseUrl, token) { - return new Promise((resolve) => { - var url = baseUrl + 'inviteJoinTask/createItem.do'; - var host = (url.split('//')[1]).split('/')[0]; - var options = { - method: 'POST', - url: url, - params: {_t: timestampMs()}, - headers: { - cookie: gameCookie, - Host: host, - 'Content-Type': 'application/x-www-form-urlencoded', - Origin: 'https://89420.activity-20.m.duiba.com.cn', - Connection: 'keep-alive', - Accept: '*/*', - 'User-Agent': userAgent, - Referer: qgyUrl + '&from=login&spm=89420.1.1.1', - 'Accept-Language': 'zh-CN,zh-Hans;q=0.9' - }, - data: {token: token, user_type: '1', is_from_share: '1', _t: timestampMs()} - }; - if (debug) { - log(`\n【debug】=============== 这是 青果园首次进入 请求 url ===============`); - log(JSON.stringify(options)); - } - axios.request(options).then(function (response) { - try { - var data = response.data; - if (debug) { - log(`\n\n【debug】===============这是 青果园首次进入 返回data==============`); - log(JSON.stringify(data)) - } - var assistItemId = data.data.assistItemId; - log(`青果园首次进入成功,${assistItemId}`) - } catch (e) { - log(`青果园首次进入异常:${JSON.stringify(data)},原因:${e}`) - } - }).catch(function (error) { - console.error(error); - }).then(res => { - //这里处理正确返回 - resolve(); - }); - }) - -} - -/** - * 青果园签到 - * @param baseUrl - * @param token - * @returns {Promise} - */ -async function qgySign(baseUrl, token) { - return new Promise((resolve) => { - var url = baseUrl + 'checkin_1/doSign.do'; - var host = (url.split('//')[1]).split('/')[0]; - var options = { - method: 'POST', - url: url, - params: {_t: timestampMs()}, - headers: { - cookie: gameCookie, - Host: host, - Connection: 'keep-alive', - 'User-Agent': userAgent, - 'Content-Type': 'application/x-www-form-urlencoded', - Accept: '*/*', - Referer: qgyUrl + '&from=login&spm=89420.1.1.1', - 'Accept-Language': 'en-us,en' - }, - data: {token: token, user_type: '0', is_from_share: '1', _t: timestampMs()} - }; - if (debug) { - log(`\n【debug】=============== 这是 青果园签到 请求 url ===============`); - log(JSON.stringify(options)); - } - axios.request(options).then(function (response) { - try { - var data = response.data; - if (debug) { - log(`\n\n【debug】===============这是 青果园签到 返回data==============`); - log(JSON.stringify(data)) - } - if (data.hasOwnProperty('data') && data.data.hasOwnProperty('options')) { - qgySignFlag = true; - log(`青果园签到成功,${data.data.options[0].optionName}`) - } else { - log(`青果园签到失败:${JSON.stringify(data)},原因:${e}`) - } - - } catch (e) { - log(`青果园签到异常:${JSON.stringify(data)},原因:${e}`) - } - }).catch(function (error) { - console.error(error); - }).then(res => { - //这里处理正确返回 - resolve(); - }); - }) - -} - -/** - * 查询青果园任务 - * @param baseUrl - * @returns {Promise} - */ -async function queryQgyTask(baseUrl) { - qgyTaskData = []; - var url = baseUrl + 'customTask1/queryTasks.do'; - var host = (url.split('//')[1]).split('/')[0]; - return new Promise((resolve) => { - var options = { - method: 'GET', - url: url, - params: {user_type: '1', is_from_share: '1', _t: timestampMs()}, - headers: { - cookie: gameCookie, - Host: host, - 'Content-Type': 'application/x-www-form-urlencoded', - Connection: 'keep-alive', - Accept: '*/*', - 'User-Agent': userAgent, - Referer: qgyUrl + '&from=login&spm=89420.1.1.1', - 'Accept-Language': 'zh-CN,zh-Hans;q=0.9', - 'Accept-Encoding': 'gzip, deflate, br' - }, - data: {} - }; - if (debug) { - log(`\n【debug】=============== 这是 获取请果园任务 请求 url ===============`); - log(JSON.stringify(options)); - } - axios.request(options).then(function (response) { - try { - var data = response.data; - if (debug) { - log(`\n\n【debug】===============这是 获取请果园任务 返回data==============`); - log(JSON.stringify(data)) - } - log(`获取请果园任务:${data.success}`) - qgyTaskData = data.data.item; - } catch (e) { - log(`获取请果园任务异常:${JSON.stringify(data)},原因:${e}`) - } - }).catch(function (error) { - console.error(error); - }).then(res => { - //这里处理正确返回 - resolve(); - }); - }) - -} - -/** - * 完成青果园任务 - * @param baseUrl - * @param token - * @param taskCode - * @param taskTitle - * @returns {Promise} - */ -async function finishBrowseInfoTask(baseUrl, token, taskCode, taskTitle) { - return new Promise((resolve) => { - var url = baseUrl + 'customTask1/finishBrowseInfoTask.do'; - var host = (url.split('//')[1]).split('/')[0]; - var options = { - method: 'POST', - url: url, - params: {_t: timestampMs()}, - headers: { - cookie: gameCookie, - Host: host, - 'Content-Type': 'application/x-www-form-urlencoded', - Origin: 'https://89420.activity-20.m.duiba.com.cn', - Connection: 'keep-alive', - Accept: '*/*', - 'User-Agent': userAgent, - Referer: qgyUrl + '&from=login&spm=89420.1.1.1', - 'Accept-Language': 'zh-CN,zh-Hans;q=0.9' - }, - data: { - taskCode: taskCode, - token: token, - user_type: '1', - is_from_share: '1', - _t: timestampMs() - } - }; - if (debug) { - log(`\n【debug】=============== 这是 完成青果园任务 请求 url ===============`); - log(JSON.stringify(options)); - } - axios.request(options).then(function (response) { - try { - var data = response.data; - if (debug) { - log(`\n\n【debug】===============这是 完成青果园任务 返回data==============`); - log(JSON.stringify(data)) - } - if (data.hasOwnProperty('success') && data.success) { - log(`完成${taskTitle}任务:${data.success},${data.data.reward}`) - } else { - log(`完成${taskTitle}任务失败:${data.message}`) - } - - } catch (e) { - log(`完成任务异常:${JSON.stringify(data)},原因:${e}`) - } - }).catch(function (error) { - console.error(error); - }).then(res => { - //这里处理正确返回 - resolve(); - }); - }) - -} - -/** - * 领取奖励信息 - * @param baseUrl - * @returns {Promise} - */ -async function newRewardInfo(baseUrl) { - return new Promise((resolve) => { - var url = baseUrl + 'customTask1/newRewardInfo.do'; - var host = (url.split('//')[1]).split('/')[0]; - - var options = { - method: 'GET', - url: url, - params: {user_type: '1', is_from_share: '1', _t: timestampMs()}, - headers: { - cookie: gameCookie, - Host: host, - 'Content-Type': 'application/x-www-form-urlencoded', - Connection: 'keep-alive', - Accept: '*/*', - 'User-Agent': userAgent, - Referer: qgyUrl + '&from=login&spm=89420.1.1.1', - 'Accept-Language': 'zh-CN,zh-Hans;q=0.9', - }, - data: {} - }; - if (debug) { - log(`\n【debug】=============== 这是 领取奖励信息 请求 url ===============`); - log(JSON.stringify(options)); - } - axios.request(options).then(function (response) { - try { - var data = response.data; - if (debug) { - log(`\n\n【debug】===============这是 领取奖励信息 返回data==============`); - log(JSON.stringify(data)) - } - log(`领取奖励信息:${data.success}`) - } catch (e) { - log(`领取奖励信息:${JSON.stringify(data)},原因:${e}`) - } - }).catch(function (error) { - console.error(error); - }).then(res => { - //这里处理正确返回 - resolve(); - }); - }) - -} - -/** - * 获取tokenKey - * @param baseUrl - * @returns {Promise} - */ -async function getTokenKeyStr(baseUrl) { - return new Promise((resolve) => { - var url = baseUrl + 'getTokenKey'; - var host = (url.split('//')[1]).split('/')[0]; - var options = { - method: 'GET', - url: url, - params: {_t: timestampMs()}, - headers: { - cookie: gameCookie, - Host: host, - Accept: '*/*', - Connection: 'keep-alive', - 'User-Agent': userAgent, - 'Accept-Language': 'zh-CN,zh-Hans;q=0.9', - Referer: baseUrl + 'index.html?appID=89420&from=login&spm=89420.1.1.1', - } - }; - if (debug) { - log(`\n【debug】=============== 这是 获取tokenKey 请求 url ===============`); - log(JSON.stringify(options)); - } - axios.request(options).then(function (response) { - try { - tokenKeyStr = response.data; - if (debug) { - log(`\n\n【debug】===============这是 获取tokenKey 返回data==============`); - log(JSON.stringify(data)) - } - log(`获取tokenKey成功`) - } catch (e) { - log(`获取tokenKey失败:${JSON.stringify(data)},原因:${e}`) - } - }).catch(function (error) { - console.error(error); - }).then(res => { - //这里处理正确返回 - resolve(); - }); - }) - - -} - -/** - * 获取token - * @param baseUrl - * @returns {Promise} - */ -async function getTokenStr(baseUrl) { - return new Promise((resolve) => { - var url = baseUrl + 'getToken'; - var host = (url.split('//')[1]).split('/')[0]; - const options = { - method: 'GET', - url: url, - params: {_t: timestampMs()}, - headers: { - cookie: gameCookie, - Host: host, - 'Content-Type': 'application/x-www-form-urlencoded', - Connection: 'keep-alive', - Accept: '*/*', - 'User-Agent': userAgent, - Referer: baseUrl + '/index.html?appID=89420&from=login&spm=89420.1.1.1', - 'Accept-Language': 'zh-CN,zh-Hans;q=0.9', - 'Accept-Encoding': 'gzip, deflate, br' - }, - data: {} - }; - if (debug) { - log(`\n【debug】=============== 这是 获取token 请求 url ===============`); - log(JSON.stringify(options)); - } - axios.request(options).then(function (response) { - try { - tokenStr = response.data.data; - if (debug) { - log(`\n\n【debug】===============这是 获取token 返回data==============`); - log(JSON.stringify(response.data)) - } - log(`获取token成功`) - } catch (e) { - log(`获取token失败:${JSON.stringify(response.data)},原因:${e}`) - } - }).catch(function (error) { - console.error(error); - }).catch(function (error) { - console.error(error); - }).then(res => { - //这里处理正确返回 - resolve(); - }); - }) - -} - -/** - * 开始旅行 - * @param baseUrl - * @param token - * @returns {Promise} - */ -async function startTravel(baseUrl, token) { - return new Promise((resolve) => { - var url = baseUrl + 'customTask1/startTravel.do'; - var host = (url.split('//')[1]).split('/')[0]; - var options = { - method: 'POST', - url: url, - params: {_t: timestampMs()}, - headers: { - cookie: gameCookie, - Host: host, - 'Content-Type': 'application/x-www-form-urlencoded', - Origin: 'https://89420.activity-20.m.duiba.com.cn', - Connection: 'keep-alive', - Accept: '*/*', - 'User-Agent': userAgent, - Referer: qgyUrl + '&from=login&spm=89420.1.1.1', - 'Accept-Language': 'zh-CN,zh-Hans;q=0.9' - }, - data: {token: token, user_type: '1', is_from_share: '1', _t: timestampMs()} - }; - if (debug) { - log(`\n【debug】=============== 这是 开始旅行 请求 url ===============`); - log(JSON.stringify(options)); - } - axios.request(options).then(function (response) { - try { - var data = response.data; - if (debug) { - log(`\n\n【debug】===============这是 开始旅行 返回data==============`); - log(JSON.stringify(data)) - } - log(`开始旅行:${data.success}`) - } catch (e) { - log(`开始旅行失败:${JSON.stringify(data)},原因:${e}`) - } - }).catch(function (error) { - console.error(error); - }).then(res => { - //这里处理正确返回 - resolve(); - }); - }) - -} - - -/** - * 完成抢兑 - * @param num - * @returns {Promise} - */ -async function finishQhd(num) { - await loginFreePlugin(qhbUrl); - await $.wait(3000) - if (loginUrl == "") { - log(`账号【${num}】登录抢红包异常,自动跳过任务!`); - return false; - } - await setCookies(); - await $.wait(3000); - if (gameCookie == "") { - log(`账号【${num}】cookies异常,自动跳过任务!`); - return false; - } - var urlMatch = qhbUrl.match('([^/]+)/?$'); - var baseUrl = qhbUrl.replace(urlMatch[0], ''); - await qhbHistory(baseUrl); - await $.wait(2000); - await qhbIndex(baseUrl); - await $.wait(2000); - await exchangeInfo(baseUrl); - await $.wait(2000); - if (!exchangeOneCodeConsumeFlag) { - log(`账号【${num}】当期已经兑换或积分不足不再执行兑换!`); - return false; - } - await getQhbTokenKey(baseUrl); - await $.wait(1000); - await getQhbToken(baseUrl); - await $.wait(1000); - try { - var qhbToken = dealToken(tokenStr, tokenKeyStr); - await $.wait(2000); - await qhbExchange(baseUrl, qhbToken) - if (qhbOrderId == '') { - log(`账号【${num}】抢红包兑换订单失败!`); - return false; - } - await $.wait(2000); - await qhbCreditsCost(baseUrl); - await $.wait(4000); - if (qhbOrderData != '') { - await qhbOrderStatus(baseUrl); - await $.wait(2000); - await getQhbToken(baseUrl); - await $.wait(1000); - var qhbToken = dealToken(tokenStr, tokenKeyStr); - await $.wait(2000); - await qhbCode(baseUrl, qhbToken); - } - - } catch (e) { - log(`账号【${num}】解码失败,不进行兑换!${e}`); - return false; - } - return true; -} - -/** - * 抢红包记录 - * @param baseUrl - * @returns {Promise} - */ -async function qhbHistory(baseUrl) { - return new Promise((resolve) => { - var url = baseUrl + 'game/moneyLogList.do'; - var host = (url.split('//')[1]).split('/')[0]; - var options = { - method: 'GET', - url: url, - params: { - pageNo: '1', - pageSize: '10', - user_type: '1', - is_from_share: '1', - _t: timestampMs() - }, - headers: { - cookie: gameCookie, - Host: host, - 'Content-Type': 'application/x-www-form-urlencoded', - Connection: 'keep-alive', - Accept: '*/*', - 'User-Agent': userAgent, - Referer: qhbUrl + '&from=login&spm=89420.1.1.1', - 'Accept-Language': 'zh-CN,zh-Hans;q=0.9', - }, - data: {} - }; - if (debug) { - log(`\n【debug】=============== 这是 抢红包记录 请求 url ===============`); - log(JSON.stringify(options)); - } - axios.request(options).then(function (response) { - try { - var data = response.data; - if (debug) { - log(`\n\n【debug】===============这是 抢红包记录 返回data==============`); - log(JSON.stringify(data)) - } - if (data.hasOwnProperty('success') && data.success) { - var myTotalMoney = (data.data.myTotalMoney / 100).toFixed(2); - var message = `获得总金额:${myTotalMoney}` - if (data.data.hasOwnProperty('list') && data.data.list.length > 0) { - var cycle = data['data']['list'][0]['cycle'] - var yesDate = getYestoday(); - if (cycle == yesDate) { - var codeList = data['data']['list'][0]['codeList'][0] - var money = codeList.money / 100 - message += `${cycle},${codeList.level}等奖,红包:${money.toFixed(2)}` - } else { - message += `昨日未参与`; - } - addNotifyStr(message, true); - } - } else { - log(`抢红包记录失败:${data.message}`) - } - } catch (e) { - log(`抢红包记录异常:${JSON.stringify(data)},原因:${e}`) - } - }).catch(function (error) { - console.error(error); - }).then(res => { - //这里处理正确返回 - resolve(); - }); - }) - -} - - -/** - * 抢红包首页 - * @param baseUrl - * @returns {Promise} - */ -async function qhbIndex(baseUrl) { - return new Promise((resolve) => { - var url = baseUrl + 'game/index.do'; - var host = (url.split('//')[1]).split('/')[0]; - var options = { - method: 'GET', - url: url, - params: { - kww_user_source: '4', - kww_user_type: '0', - user_type: '1', - is_from_share: '1', - _t: timestampMs() - }, - headers: { - cookie: gameCookie, - Host: host, - 'Content-Type': 'application/x-www-form-urlencoded', - Connection: 'keep-alive', - Accept: '*/*', - 'User-Agent': userAgent, - Referer: qhbUrl + '&from=login&spm=89420.1.1.1', - 'Accept-Language': 'zh-CN,zh-Hans;q=0.9', - }, - data: {} - }; - if (debug) { - log(`\n【debug】=============== 这是 抢红包首页 请求 url ===============`); - log(JSON.stringify(options)); - } - axios.request(options).then(function (response) { - try { - var data = response.data; - if (debug) { - log(`\n\n【debug】===============这是 抢红包首页 返回data==============`); - log(JSON.stringify(data)) - } - if (data.hasOwnProperty('success') && data.success) { - var cycleStartExchangeTime = data.data.cycleStartExchangeTime - var cycleEndExchangeTime = data.data.cycleEndExchangeTime - var cycle = data.data.currentCycleInfo.cycle - var startOpenTimestamp = getLocalTime(data.data.currentCycleInfo.startOpenTimestamp) - var totalAmount = data.data.currentCycleInfo.totalAmount / 100 - var codeCount = data.data.currentCycleInfo.totalCodeCountLimit - data.data.currentCycleInfo.totalCodeCount - log(`当期抢红包时间范围:${cycleStartExchangeTime}至${cycleEndExchangeTime}`) - log(`${cycle}期,奖池金额:${totalAmount},剩余红包码:${codeCount},开奖时间:${startOpenTimestamp}`) - } else { - log(`抢红包首页失败:${data.message}`) - } - } catch (e) { - log(`抢红包首页异常:${JSON.stringify(data)},原因:${e}`) - } - }).catch(function (error) { - console.error(error); - }).then(res => { - //这里处理正确返回 - resolve(); - }); - }) - -} - -function getLocalTime(str) { - return new Date(parseInt(str)).toLocaleString().replace(/:d{1,2}$/, ' '); -} - -/** - * 抢兑红包信息 - * @param baseUrl - * @returns {Promise} - */ -async function exchangeInfo(baseUrl) { - exchangeOneCodeConsumeFlag = false; - return new Promise((resolve) => { - var url = baseUrl + 'game/exchangeInfo.do'; - var host = (url.split('//')[1]).split('/')[0]; - var options = { - method: 'GET', - url: url, - params: {user_type: '1', is_from_share: '1', _t: timestampMs()}, - headers: { - cookie: gameCookie, - Host: host, - 'Content-Type': 'application/x-www-form-urlencoded', - Connection: 'keep-alive', - Accept: '*/*', - 'User-Agent': userAgent, - Referer: qhbUrl + '&from=login&spm=89420.1.1.1', - 'Accept-Language': 'zh-CN,zh-Hans;q=0.9', - }, - data: {} - }; - if (debug) { - log(`\n【debug】=============== 这是 抢红包活动信息 请求 url ===============`); - log(JSON.stringify(options)); - } - axios.request(options).then(function (response) { - try { - var data = response.data; - if (debug) { - log(`\n\n【debug】===============这是 抢红包活动信息 返回data==============`); - log(JSON.stringify(data)) - } - if (data.hasOwnProperty('success') && data.success) { - exchangeOneCodeConsumeCredits = data.data.exchangeOneCodeConsumeCredits - var leftCredits = data.data.leftCredits - var haveExchangeCodeCount = data.data.haveExchangeCodeCount - if (leftCredits >= exchangeOneCodeConsumeCredits && haveExchangeCodeCount == 0) { - exchangeOneCodeConsumeFlag = true - } - } else { - log(`抢红包活动信息失败:${data.message}`) - } - } catch (e) { - log(`抢红包活动信息异常:${JSON.stringify(data)},原因:${e}`) - } - }).catch(function (error) { - console.error(error); - }).then(res => { - //这里处理正确返回 - resolve(); - }); - }) - - -} -async function getjcTokenKey() { - return new Promise((resolve) => { - var url = 'https://89420.activity-20.m.duiba.com.cn/projectx/p15fbb34c/getTokenKey?'; - - var options = { - method: 'GET', - url: url, - params: {_t: timestampMs()}, - headers: { - cookie: gameCookie, - Host: '89420.activity-20.m.duiba.com.cn', - Accept: '*/*', - Connection: 'keep-alive', - 'User-Agent': userAgent, - 'Accept-Language': 'zh-CN,zh-Hans;q=0.9', - - } - }; - - if (debug) { - log(`\n【debug】=============== 这是 竞猜tokenKey 请求 url ===============`); - log(JSON.stringify(options)); - } - axios.request(options).then(function (response) { - try { - tokenKeyStr = response.data; - if (debug) { - log(`\n【debug】===============这是 竞猜tokenKey 返回data==============`); - log(tokenKeyStr) - } - log(`获取竞猜tokenKey成功`) - } catch (e) { - log(`获取竞猜tokenKey失败:${tokenKeyStr},原因:${e}`) - } - }).catch(function (error) { - console.error(error); - }).then(res => { - //这里处理正确返回 - resolve(); - }); - }) - -} - -/** - * 获取抢红包token - * @param baseUrl - * @returns {Promise} - */ -async function getjcToken(baseUrl) { - return new Promise((resolve) => { - var url = 'https://89420.activity-20.m.duiba.com.cn/projectx/p15fbb34c/getToken'; - - var options = { - method: 'GET', - url: url, - params: {_t: timestampMs()}, - headers: { - cookie: gameCookie, - Host: '89420.activity-20.m.duiba.com.cn', - 'Content-Type': 'application/x-www-form-urlencoded', - Connection: 'keep-alive', - Accept: '*/*', - 'User-Agent': userAgent, - Referer: qhbUrl + '&from=login&spm=89420.1.1.1', - 'Accept-Language': 'zh-CN,zh-Hans;q=0.9', - }, - data: {} - }; - if (debug) { - log(`\n【debug】=============== 这是 竞猜token 请求 url ===============`); - log(JSON.stringify(options)); - } - axios.request(options).then(function (response) { - try { - tokenStr = response.data.data; - if (debug) { - log(`\n【debug】===============这是 竞猜token 返回data==============`); - log(response.data) - } - log(`获取竞猜token成功`) - } catch (e) { - log(`获取竞猜token失败:${JSON.stringify(response.data)},原因:${e}`) - } - }).catch(function (error) { - console.error(error); - }).then(res => { - //这里处理正确返回 - resolve(); - }); - }) - -} -/** - * 获取抢红包tokenkey - * @param baseUrl - * @returns {Promise} - */ -async function getQhbTokenKey(baseUrl) { - return new Promise((resolve) => { - var url = baseUrl + 'getTokenKey'; - var host = (url.split('//')[1]).split('/')[0]; - var options = { - method: 'GET', - url: url, - params: {_t: timestampMs()}, - headers: { - cookie: gameCookie, - Host: host, - Accept: '*/*', - Connection: 'keep-alive', - 'User-Agent': userAgent, - 'Accept-Language': 'zh-CN,zh-Hans;q=0.9', - Referer: qhbUrl + '&from=login&spm=89420.1.1.1', - } - }; - - if (debug) { - log(`\n【debug】=============== 这是 获取抢红包tokenKey 请求 url ===============`); - log(JSON.stringify(options)); - } - axios.request(options).then(function (response) { - try { - tokenKeyStr = response.data; - if (debug) { - log(`\n【debug】===============这是 获取抢红包tokenKey 返回data==============`); - log(tokenKeyStr) - } - log(`获取抢红包tokenKey成功`) - } catch (e) { - log(`获取抢红包tokenKey失败:${tokenKeyStr},原因:${e}`) - } - }).catch(function (error) { - console.error(error); - }).then(res => { - //这里处理正确返回 - resolve(); - }); - }) - -} - -/** - * 获取抢红包token - * @param baseUrl - * @returns {Promise} - */ -async function getQhbToken(baseUrl) { - return new Promise((resolve) => { - var url = baseUrl + 'getToken'; - var host = (url.split('//')[1]).split('/')[0]; - var options = { - method: 'GET', - url: url, - params: {_t: timestampMs()}, - headers: { - cookie: gameCookie, - Host: host, - 'Content-Type': 'application/x-www-form-urlencoded', - Connection: 'keep-alive', - Accept: '*/*', - 'User-Agent': userAgent, - Referer: qhbUrl + '&from=login&spm=89420.1.1.1', - 'Accept-Language': 'zh-CN,zh-Hans;q=0.9', - }, - data: {} - }; - if (debug) { - log(`\n【debug】=============== 这是 获取抢红包token 请求 url ===============`); - log(JSON.stringify(options)); - } - axios.request(options).then(function (response) { - try { - tokenStr = response.data.data; - if (debug) { - log(`\n【debug】===============这是 获取抢红包token 返回data==============`); - log(response.data) - } - log(`获取抢红包token成功`) - } catch (e) { - log(`获取抢红包token失败:${JSON.stringify(response.data)},原因:${e}`) - } - }).catch(function (error) { - console.error(error); - }).then(res => { - //这里处理正确返回 - resolve(); - }); - }) - -} - -/** - * 抢红包提交 - * @param baseUrl - * @param token - * @returns {Promise} - */ -async function qhbExchange(baseUrl, token) { - return new Promise((resolve) => { - var url = baseUrl + 'game/getExchangeOrderId.do'; - var host = (url.split('//')[1]).split('/')[0]; - var options = { - method: 'POST', - url: url, - params: {_t: timestampMs()}, - headers: { - cookie: gameCookie, - Host: host, - 'Content-Type': 'application/x-www-form-urlencoded', - Origin: 'https://89420.activity-20.m.duiba.com.cn', - Connection: 'keep-alive', - Accept: '*/*', - 'User-Agent': userAgent, - Referer: qhbUrl + '&from=login&spm=89420.1.1.1', - 'Accept-Language': 'zh-CN,zh-Hans;q=0.9' - }, - data: { - exchangeOneCodeConsumeCredits: exchangeOneCodeConsumeCredits, - exchangeCodeCount: '1', - token: token, - user_type: '1', - is_from_share: '1', - _t: timestampMs() - } - }; - if (debug) { - log(`\n【debug】=============== 这是 抢红包提交 请求 url ===============`); - log(JSON.stringify(options)); - } - axios.request(options).then(function (response) { - try { - var data = response.data; - if (debug) { - log(`\n【debug】===============这是 抢红包提交 返回data==============`); - log(response.data) - } - if (data.hasOwnProperty('success') && data.success) { - qhbOrderId = data.data.orderId - log(`抢红包活动提交成功:${qhbOrderId}`) - } else { - log(`抢红包活动提交失败:${JSON.stringify(response.data)}`) - } - } catch (e) { - log(`抢红包活动提交异常:${JSON.stringify(response.data)},原因:${e}`) - } - }).catch(function (error) { - console.error(error); - }).then(res => { - //这里处理正确返回 - resolve(); - }); - }) - -} - -/** - * 抢红包扣积分 - * @returns {Promise} - */ -async function qhbCreditsCost(baseUrl) { - return new Promise((resolve) => { - var url = baseUrl + 'credits/creditsCost.do'; - var host = (url.split('//')[1]).split('/')[0]; - var options = { - method: 'POST', - url: url, - params: {_t: timestampMs()}, - headers: { - cookie: gameCookie, - Host: host, - 'Content-Type': 'application/x-www-form-urlencoded', - Origin: 'https://89420.activity-20.m.duiba.com.cn', - Connection: 'keep-alive', - Accept: '*/*', - 'User-Agent': userAgent, - Referer: qhbUrl + '&from=login&spm=89420.1.1.1', - 'Accept-Language': 'zh-CN,zh-Hans;q=0.9' - }, - data: { - toPlaywayId: 'game', - toActionId: 'exchange', - desc: 'exchange_consume_credits_desc', - credits: exchangeOneCodeConsumeCredits, - orderId: qhbOrderId, - user_type: '1', - is_from_share: '1', - _t: timestampMs() - } - }; - if (debug) { - log(`\n【debug】=============== 这是 抢红包扣积分 请求 url ===============`); - log(JSON.stringify(options)); - } - axios.request(options).then(function (response) { - try { - var data = response.data; - if (debug) { - log(`\n【debug】===============这是 抢红包扣积分 返回data==============`); - log(response.data) - } - if (data.hasOwnProperty('success') && data.success) { - qhbOrderData = data.data - log(`抢红包扣积分成功:${qhbOrderData}`) - } else { - log(`抢红包扣积分失败:${JSON.stringify(response.data)}`) - } - } catch (e) { - log(`抢红包扣积分异常:${JSON.stringify(response.data)},原因:${e}`) - } - }).catch(function (error) { - console.error(error); - }).then(res => { - //这里处理正确返回 - resolve(); - }); - }) - -} - -/** - * 状态 - * @param baseUrl - * @returns {Promise} - */ -async function qhbOrderStatus(baseUrl) { - return new Promise((resolve) => { - var url = baseUrl + 'credits/queryStatus.do'; - var host = (url.split('//')[1]).split('/')[0]; - var options = { - method: 'GET', - url: url, - params: { - ticketNum: qhbOrderData, - user_type: '1', - is_from_share: '1', - _t: timestampMs() - }, - headers: { - cookie: gameCookie, - Host: host, - 'Content-Type': 'application/x-www-form-urlencoded', - Connection: 'keep-alive', - Accept: '*/*', - 'User-Agent': userAgent, - Referer: 'https://89420.activity-20.m.duiba.com.cn/projectx/p725daef0/index.html?appID=89420&from=login&spm=89420.1.1.1', - 'Accept-Language': 'zh-CN,zh-Hans;q=0.9', - }, - data: {} - }; - if (debug) { - log(`\n【debug】=============== 这是 抢红包订单状态 请求 url ===============`); - log(JSON.stringify(options)); - } - axios.request(options).then(function (response) { - try { - var data = response.data; - if (debug) { - log(`\n【debug】===============这是 抢红包订单状态 返回data==============`); - log(response.data) - } - if (data.hasOwnProperty('success') && data.success) { - if (data.data == 1) { - log(`抢红包订单状态正常`) - } else { - log(`抢红包订单状态异常`) - } - } else { - log(`抢红包订单状态失败:${JSON.stringify(response.data)}`) - } - } catch (e) { - log(`抢红包订单状态异常:${JSON.stringify(response.data)},原因:${e}`) - } - }).catch(function (error) { - console.error(error); - }).then(res => { - //这里处理正确返回 - resolve(); - }); - }) - -} - -/** - * 查询兑换码 - * @param baseUrl - * @param token - * @returns {Promise} - */ -async function qhbCode(baseUrl, token) { - return new Promise((resolve) => { - var url = baseUrl + 'game/exchange.do'; - var host = (url.split('//')[1]).split('/')[0]; - - var options = { - method: 'POST', - url: url, - params: {_t: timestampMs()}, - headers: { - cookie: gameCookie, - Host: host, - 'Content-Type': 'application/x-www-form-urlencoded', - Origin: 'https://89420.activity-20.m.duiba.com.cn', - Connection: 'keep-alive', - Accept: '*/*', - 'User-Agent': userAgent, - Referer: 'https://89420.activity-20.m.duiba.com.cn/projectx/p725daef0/index.html?appID=89420&from=login&spm=89420.1.1.1', - 'Accept-Language': 'zh-CN,zh-Hans;q=0.9' - }, - data: { - ticket: qhbOrderData, - exchangeCodeCount: '1', - exchangeOneCodeConsumeCredits: exchangeOneCodeConsumeCredits, - token: token, - user_type: '1', - is_from_share: '1', - _t: timestampMs() - } - }; - if (debug) { - log(`\n【debug】=============== 这是 红包码查询 请求 url ===============`); - log(JSON.stringify(options)); - } - axios.request(options).then(function (response) { - try { - var data = response.data; - if (debug) { - log(`\n【debug】===============这是 红包码查询 返回data==============`); - log(response.data) - } - if (data.hasOwnProperty('success') && data.success) { - addNotifyStr(`抢红包兑换成功,兑换码:${data.data.myNewCodeList[0]['code']}`, true) - } else { - log(`红包码查询失败:${JSON.stringify(response.data)}`) - } - } catch (e) { - log(`红包码查询异常:${JSON.stringify(response.data)},原因:${e}`) - } - }).catch(function (error) { - console.error(error); - }).then(res => { - //这里处理正确返回 - resolve(); - }); - }) - - -} - -/** - * 完成答题 - * @param num - * @returns {Promise} - */ -async function finishDt(num) { - await loginFreePlugin(mrDtUrl); - await $.wait(3000) - if (loginUrl == "") { - log(`账号【${num}】登录异常,自动跳过答题!`); - return false; - } - await setCookies(); - await $.wait(3000); - if (gameCookie == "") { - log(`账号【${num}】cookies异常,自动跳过答题!`); - return false; - } - var urlMatch = mrDtUrl.match('([^/]+)/?$'); - var baseUrl = mrDtUrl.replace(urlMatch[0], ''); - await answerInfo(baseUrl); - await $.wait(3000); - if (answerState) { - log(`账号【${num}】答题已经完成了!`) - } else { - await answerStart(baseUrl); - await $.wait(3000); - if (answerStartId == '') { - log(`账号【${num}】${answerStartId}答题开始失败,自动跳过!`) - return false; - } else { - await getQuestion(baseUrl); - await $.wait(2000); - await answerSubmit(baseUrl); - await $.wait(3000); - for (var i = currQuestions; i <= totalQuestions; i++) { - log(`开始第${currQuestions}次答题`); - await getQuestion(baseUrl); - await $.wait(2000); - await answerSubmit(baseUrl); - await $.wait(3000); - } - await complete(baseUrl); - await $.wait(3000); - await answerPage(baseUrl); - await $.wait(3000); - } - } - return true; -} - -/** - * 答题信息 - * @param baseUrl - * @returns {Promise} - */ -async function answerInfo(baseUrl) { - var url = baseUrl + 'kwwmrdt/index.do'; - var host = (url.split('//')[1]).split('/')[0]; - return new Promise((resolve) => { - const options = { - method: 'GET', - url: url, - qs: {user_type: '0', is_from_share: '1', _t: `${timestampMs()}`}, - headers: { - Host: host, - Connection: 'keep-alive', - 'User-Agent': userAgent, - 'Content-Type': 'application/x-www-form-urlencoded', - Accept: '*/*', - Referer: mrDtUrl + '&from=login&spm=89420.1.1.1', - 'Accept-Encoding': 'gzip, deflate, br', - 'Accept-Language': 'en-us,en', - 'Cookie': gameCookie - }, - }; - try { - request(options, function (error, response, body) { - if (error) throw new Error(error); - - let result = JSON.parse(body); - if (result.hasOwnProperty('success') && result.success) { - var answerCount = result.data.answerCount; - answerState = (result.data.answerState == 3) ? true : false; - var currentDay = result.data.currentDay; - var score = ''; - for (var i in result.data.weekCalendar) { - var day = result.data.weekCalendar[i]['day']; - if (day == currentDay) { - score = result.data.weekCalendar[i]['score']; - } - } - log(`本周答题第${currentDay}天,答题数量:${answerCount},今日答题奖励积分:${score}`) - } else { - log(`查询答题信息失败:${result.message}`) - } - }); - } catch (e) { - log(e) - } finally { - resolve(); - } - - }) -} - -/** - * 开始答题 - * @param baseUrl - * @returns {Promise} - */ -async function answerStart(baseUrl) { - answerStartId = ''; - return new Promise((resolve) => { - var url = baseUrl + 'answer/start.do'; - var host = (url.split('//')[1]).split('/')[0]; - - var options = { - method: 'GET', - url: url, - params: {user_type: '1', is_from_share: '1', _t: timestampMs()}, - headers: { - cookie: gameCookie, - Host: host, - 'Content-Type': 'application/x-www-form-urlencoded', - Connection: 'keep-alive', - Accept: '*/*', - 'User-Agent': userAgent, - Referer: mrDtUrl + '&from=login&spm=89420.1.1.1', - 'Accept-Language': 'zh-CN,zh-Hans;q=0.9', - }, - data: {} - }; - if (debug) { - log(`\n【debug】=============== 这是 开始答题 请求 url ===============`); - log(JSON.stringify(options)); - } - axios.request(options).then(function (response) { - try { - var data = response.data; - if (debug) { - log(`\n\n【debug】===============这是 开始答题 返回data==============`); - log(data) - } - if (data.hasOwnProperty('success') && data.success) { - answerStartId = data.data; - log(`开始答题请求成功,开始答题ID:${answerStartId}`) - } else { - log(`开始答题失败,原因:${data.message}`) - } - } catch (e) { - log(`开始答题异常:${data},原因:${e}`) - } - }).catch(function (error) { - console.error(error); - }).then(res => { - //这里处理正确返回 - resolve(); - }); - }) - -} - -/** - * 获取问题 - * @param baseUrl - * @returns {Promise} - */ -async function getQuestion(baseUrl) { - return new Promise((resolve) => { - var url = baseUrl + 'answer/getQuestion.do'; - var host = (url.split('//')[1]).split('/')[0]; - - var options = { - method: 'GET', - url: url, - params: {startId: answerStartId, user_type: '1', is_from_share: '1', _t: timestampMs()}, - headers: { - cookie: gameCookie, - Host: host, - 'Content-Type': 'application/x-www-form-urlencoded', - Connection: 'keep-alive', - Accept: '*/*', - 'User-Agent': userAgent, - Referer: mrDtUrl + '&from=login&spm=89420.1.1.1', - 'Accept-Language': 'zh-CN,zh-Hans;q=0.9', - }, - data: {} - }; - if (debug) { - log(`\n【debug】=============== 这是 获取问题 请求 url ===============`); - log(JSON.stringify(options)); - } - axios.request(options).then(function (response) { - try { - var data = response.data; - if (debug) { - log(`\n\n【debug】===============这是 获取问题 返回data==============`); - log(data) - } - if (data.hasOwnProperty('success') && data.success) { - currQuestions = parseInt(data.data.currentIndex); - totalQuestions = parseInt(data.data.totalIndex); - questionId = data.data.id; - var answerList = data.data.answerList; - log(`今日可答题次数:${totalQuestions},当前开始答题第${currQuestions}次`) - if (answerLists.hasOwnProperty(questionId)) { - answerType = answerLists[questionId] - log(`获取问题成功,ID:${questionId},答案;${answerType}`) - } else { - answerType = randomInt(1, answerList.length) - log(`ID:${questionId},答案不存在,建议联系作者添加,随机:${answerType}`) - } - } else { - log(`获取问题失败,原因:${data.message}`) - } - } catch (e) { - log(`获取问题异常:${data},原因:${e}`) - } - }).catch(function (error) { - console.error(error); - }).then(res => { - //这里处理正确返回 - resolve(); - }); - }) - -} - -/** - * 答题提交 - * @param baseUrl - * @returns {Promise} - */ -async function answerSubmit(baseUrl) { - return new Promise((resolve) => { - var url = baseUrl + 'answer/submit.do'; - var host = (url.split('//')[1]).split('/')[0]; - - var options = { - method: 'GET', - url: url, - params: { - answer: answerType, - startId: answerStartId, - user_type: '1', - is_from_share: '1', - _t: timestampMs() - }, - headers: { - cookie: gameCookie, - Host: host, - 'Content-Type': 'application/x-www-form-urlencoded', - Connection: 'keep-alive', - Accept: '*/*', - 'User-Agent': userAgent, - Referer: mrDtUrl + '&from=login&spm=89420.1.1.1', - 'Accept-Language': 'zh-CN,zh-Hans;q=0.9', - }, - data: {} - }; - if (debug) { - log(`\n【debug】=============== 这是 提交答题 请求 url ===============`); - log(JSON.stringify(options)); - } - axios.request(options).then(function (response) { - try { - var data = response.data; - if (debug) { - log(`\n\n【debug】===============这是 提交答题 返回data==============`); - log(data) - } - if (data.hasOwnProperty('success') && data.success) { - currQuestions += 1; - var id = data.data.id; - var correct = data.data.correct; - var correctAnswer = data.data.correctAnswer; - var title = correct ? `✅` : `❌`; - log(`提交问题成功,ID:${id},答案:【${correctAnswer}】回答:【${title}】`) - if (!correct) { - addNotifyStr(`ID:${id}回答问题错了哦,答案:【${correctAnswer}】,建议提交作者更新`, true) - } - if (!answerLists.hasOwnProperty(id)) { - var str = id + "=" + correctAnswer; - answerListData.push(str); - } - } else { - log(`提交答题失败,原因:${data.message}`) - } - } catch (e) { - log(`提交答题异常:${data},原因:${e}`) - } - }).catch(function (error) { - console.error(error); - }).then(res => { - //这里处理正确返回 - resolve(); - }); - }) - -} - -/** - * 答题完成 - * @param baseUrl - * @returns {Promise} - */ -async function complete(baseUrl) { - return new Promise((resolve) => { - var url = baseUrl + 'answer/complete.do'; - var host = (url.split('//')[1]).split('/')[0]; - - var options = { - method: 'GET', - url: url, - params: {startId: answerStartId, user_type: '1', is_from_share: '1', _t: timestampMs()}, - headers: { - cookie: gameCookie, - Host: host, - 'Content-Type': 'application/x-www-form-urlencoded', - Connection: 'keep-alive', - Accept: '*/*', - 'User-Agent': userAgent, - Referer: mrDtUrl + '&from=login&spm=89420.1.1.1', - 'Accept-Language': 'zh-CN,zh-Hans;q=0.9', - }, - data: {} - }; - if (debug) { - log(`\n【debug】=============== 这是 完成答题 请求 url ===============`); - log(JSON.stringify(options)); - } - axios.request(options).then(function (response) { - try { - var data = response.data; - if (debug) { - log(`\n\n【debug】===============这是 完成答题 返回data==============`); - log(data) - } - if (data.hasOwnProperty('success') && data.success) { - currQuestions = 1; - totalQuestions = 5; - log(`当日答题已经全部完成`) - } else { - log(`完成答题失败,原因:${data.message}`) - } - } catch (e) { - log(`完成答题异常:${data},原因:${e}`) - } - }).catch(function (error) { - console.error(error); - }).then(res => { - //这里处理正确返回 - resolve(); - }); - }) - -} - -/** - * 答题页面 - * @param baseUrl - * @returns {Promise} - */ -async function answerPage(baseUrl) { - return new Promise((resolve) => { - var url = baseUrl + 'answer/answerPage.do'; - var host = (url.split('//')[1]).split('/')[0]; - var options = { - method: 'GET', - url: url, - params: {user_type: '1', is_from_share: '1', _t: timestampMs()}, - headers: { - cookie: gameCookie, - Host: host, - 'Content-Type': 'application/x-www-form-urlencoded', - Connection: 'keep-alive', - Accept: '*/*', - 'User-Agent': userAgent, - Referer: 'https://89420.activity-20.m.duiba.com.cn/projectx/p129446ea/index.html?appID=89420&from=login&spm=89420.1.1.1', - 'Accept-Language': 'zh-CN,zh-Hans;q=0.9', - }, - data: {} - }; - if (debug) { - log(`\n【debug】=============== 这是 答题页面 请求 url ===============`); - log(JSON.stringify(options)); - } - axios.request(options).then(function (response) { - try { - var data = response.data; - if (debug) { - log(`\n\n【debug】===============这是 答题页面 返回data==============`); - log(data) - } - if (data.hasOwnProperty('success') && data.success) { - var todayCompleteResult = data.data.todayCompleteResult; - addNotifyStr(`今日积分奖励:${todayCompleteResult.baseCredits},答对题目:${todayCompleteResult.correctCount}`, true) - } else { - log(`查看答题页面失败,原因:${data.message}`) - } - } catch (e) { - log(`查看答题页面异常:${data},原因:${e}`) - } - }).catch(function (error) { - console.error(error); - }).then(res => { - //这里处理正确返回 - resolve(); - }); - }) - -} -//======================竞猜===================== -async function jcinfo() { - return new Promise(async(resolve) => { - - var options = { - method: 'GET', - url: 'https://89420.activity-20.m.duiba.com.cn/projectx/p15fbb34c/home/index.do', - params: {user_type: '0', is_from_share: '1', _t: '1668919193539'}, - headers: { - Host: '89420.activity-20.m.duiba.com.cn', - Connection: 'keep-alive', - 'Upgrade-Insecure-Requests': '1', - 'User-Agent': userAgent, - 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', - 'Sec-Fetch-Site': 'none', - 'Sec-Fetch-Mode': 'navigate', - 'Sec-Fetch-User': '?1', - 'Sec-Fetch-Dest': 'document', - 'Accept-Language': 'en-us,en', - Cookie: gameCookie, - 'Accept-Encoding': 'gzip, deflate' - } - }; - if (debug) { - log(`\n【debug】=============== 这是 竞猜页面 请求 url ===============`); - log(JSON.stringify(options)); - } - axios.request(options).then(async function (response) { - try { - var data = response.data; - if (debug) { - log(`\n\n【debug】===============这是 竞猜页面 返回data==============`); - log(data) - } - if (data.success) { - myWinMatch = data.data.myWinMatch; - nextMatchInfoTime = data.data.nextMatchInfoTime - addNotifyStr(`竞猜猜对数:${myWinMatch}`, true) - } else { - log(`竞猜页面失败,原因:${data.message}`) - } - } catch (e) { - log(`竞猜异常:${data},原因:${e}`) - } - }).catch(function (error) { - console.error(error); - }).then(res => { - //这里处理正确返回 - resolve(); - }); - }) - -} -async function jcquery(nextMatchInfoTime) { - return new Promise(async(resolve) => { - - var options = { - method: 'GET', - url: 'https://89420.activity-20.m.duiba.com.cn/projectx/p15fbb34c/home/query.do', - params: { - queryTime: nextMatchInfoTime, - user_type: '0', - is_from_share: '1', - _t: '1668919193789' - }, - headers: { - Host: '89420.activity-20.m.duiba.com.cn', - Connection: 'keep-alive', - 'Upgrade-Insecure-Requests': '1', - 'User-Agent': userAgent, - 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', - 'Sec-Fetch-Site': 'none', - 'Sec-Fetch-Mode': 'navigate', - 'Sec-Fetch-User': '?1', - 'Sec-Fetch-Dest': 'document', - 'Accept-Language': 'en-us,en', - Cookie: gameCookie, - 'Accept-Encoding': 'gzip, deflate' - } - }; - if (debug) { - log(`\n【debug】=============== 这是 竞猜页面 请求 url ===============`); - log(JSON.stringify(options)); - } - axios.request(options).then(async function (response) { - - try { - var data = response.data; - - if (debug) { - log(`\n\n【debug】===============这是 竞猜页面 返回data==============`); - log(data) - } - if (data.success) { - queryinfo = data.data - - - } else { - log(`竞猜页面失败,原因:${data.message}`) - } - } catch (e) { - log(`竞猜异常:${data},原因:${e}`) - } - - }).catch(function (error) { - console.error(error); - }).then(res => { - //这里处理正确返回 - - resolve(); - }); - - }) -} -async function jccreditsCost() { - return new Promise(async(resolve) => { - - var options = { - method: 'POST', - url: 'https://89420.activity-20.m.duiba.com.cn/projectx/p15fbb34c/credits/creditsCost.do', - params: {_t: '1668919309582'}, - headers: { - Host: '89420.activity-20.m.duiba.com.cn', - Connection: 'keep-alive', - 'User-Agent': userAgent, - 'Content-Type': 'application/x-www-form-urlencoded', - Accept: '*/*', - 'Sec-Fetch-Site': 'same-origin', - 'Sec-Fetch-Mode': 'cors', - 'Sec-Fetch-Dest': 'empty', - Referer: 'https://89420.activity-20.m.duiba.com.cn/projectx/p15fbb34c/index.html?appID=89420', - 'Accept-Language': 'en-us,en', - Cookie: gameCookie - }, - data: 'toPlaywayId=home&toActionId=betting&credits=18&desc=credits_desc&user_type=0&is_from_share=1&_t=1668919309582' - }; - if (debug) { - log(`\n【debug】=============== 这是 竞猜页面 请求 url ===============`); - log(JSON.stringify(options)); - } - axios.request(options).then(async function (response) { - try { - var data = response.data; - if (debug) { - log(`\n\n【debug】===============这是 竞猜页面 返回data==============`); - log(data) - } - if (data.success) { - jcticketNum = data.data - log(`获取竞猜订单:` + jcticketNum) - - } else { - log(`竞猜页面失败,原因:${data.message}`) - } - } catch (e) { - log(`竞猜异常:${data},原因:${e}`) - } - }).catch(function (error) { - console.error(error); - }).then(res => { - //这里处理正确返回 - resolve(); - }); - }) - -} -async function jcqueryStatus() { - return new Promise((resolve) => { - - var options = { - method: 'GET', - url: 'https://89420.activity-20.m.duiba.com.cn/projectx/p15fbb34c/credits/queryStatus.do', - params: { - ticketNum: jcticketNum, - user_type: '0', - is_from_share: '1', - _t: '1668919310283' - }, - headers: { - Host: '89420.activity-20.m.duiba.com.cn', - Connection: 'keep-alive', - 'Upgrade-Insecure-Requests': '1', - 'User-Agent': userAgent, - 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', - 'Sec-Fetch-Site': 'none', - 'Sec-Fetch-Mode': 'navigate', - 'Sec-Fetch-User': '?1', - 'Sec-Fetch-Dest': 'document', - 'Accept-Language': 'en-us,en', - Cookie: gameCookie, - 'Accept-Encoding': 'gzip, deflate' - } - }; - if (debug) { - log(`\n【debug】=============== 这是 竞猜页面 请求 url ===============`); - log(JSON.stringify(options)); - } - axios.request(options).then(function (response) { - try { - var data = response.data; - if (debug) { - log(`\n\n【debug】===============这是 竞猜页面 返回data==============`); - log(data) - } - if (data.success) { - log("竞猜订单创建" + data.success) - - - } else { - log(`竞猜页面失败,原因:${data.message}`) - } - } catch (e) { - log(`竞猜异常:${data},原因:${e}`) - } - }).catch(function (error) { - console.error(error); - }).then(res => { - //这里处理正确返回 - resolve(); - }); - }) - -} -async function jcbetting(ticket,optionId,matchId,token) { - return new Promise((resolve) => { - - var options = { - method: 'GET', - url: 'https://89420.activity-20.m.duiba.com.cn/projectx/p15fbb34c/home/betting.do', - params: { - ticket: ticket, - credits: '18', - optionId: optionId, - matchId: matchId, - token: token, - user_type: '0', - is_from_share: '1', - _t: '1668919310505' - }, - headers: { - Host: '89420.activity-20.m.duiba.com.cn', - Connection: 'keep-alive', - 'Upgrade-Insecure-Requests': '1', - 'User-Agent': userAgent, - 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', - 'Sec-Fetch-Site': 'none', - 'Sec-Fetch-Mode': 'navigate', - 'Sec-Fetch-User': '?1', - 'Sec-Fetch-Dest': 'document', - 'Accept-Language': 'en-us,en', - Cookie: gameCookie, - 'Accept-Encoding': 'gzip, deflate' - } - }; - if (debug) { - log(`\n【debug】=============== 这是 竞猜页面 请求 url ===============`); - log(JSON.stringify(options)); - } - axios.request(options).then(function (response) { - try { - var data = response.data; - if (debug) { - log(`\n\n【debug】===============这是 竞猜页面 返回data==============`); - log(data) - } - if (data.success) { - jcjg = data.success - log("竞猜结果:" + data.success) - - - } else { - log(`竞猜结果,原因:${data.message}`) - jcjg = data.success - } - } catch (e) { - log(`竞猜结果异常:${data},原因:${e}`) - } - }).catch(function (error) { - console.error(error); - }).then(res => { - //这里处理正确返回 - resolve(); - }); - }) - -} -async function jcrecord() { - return new Promise((resolve) => { - - var options = { - method: 'GET', - url: 'https://89420.activity-20.m.duiba.com.cn/projectx/p15fbb34c/home/record.do', - params: {user_type: '0', is_from_share: '1', _t: '1668919193539'}, - headers: { - Host: '89420.activity-20.m.duiba.com.cn', - Connection: 'keep-alive', - 'Upgrade-Insecure-Requests': '1', - 'User-Agent': userAgent, - 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', - 'Sec-Fetch-Site': 'none', - 'Sec-Fetch-Mode': 'navigate', - 'Sec-Fetch-User': '?1', - 'Sec-Fetch-Dest': 'document', - 'Accept-Language': 'en-us,en', - Cookie: gameCookie, - 'Accept-Encoding': 'gzip, deflate' - } - }; - if (debug) { - log(`\n【debug】=============== 这是 竞猜页面 请求 url ===============`); - log(JSON.stringify(options)); - } - axios.request(options).then(function (response) { - try { - var data = response.data; - if (debug) { - log(`\n\n【debug】===============这是 竞猜页面 返回data==============`); - log(data) - } - if (data.success) { - recordinfo = data.data.bettingInfoArray; - for(let i = 0; i < recordinfo.length; i++){ - homeName = recordinfo[i].homeName - awayName = recordinfo[i].awayName - joinNum = recordinfo[i].joinNum - matchId = recordinfo[i].matchId - option1 = recordinfo[i].option1 - option2 = recordinfo[i].option2 - option3 = recordinfo[i].option3 - log('竞猜第' + i + "场") - if (recordinfo.select == 1 ){ - log("叼毛选择:" + homeName + "赢") - } - if (recordinfo.select == 0 ){ - log("叼毛选择:平局") - } - if (recordinfo.select == 3 ){ - log("叼毛选择:" + awayName + "赢") - } - } - log('投注次数:' + data.data.bettingNum) - log('累计积分收益:' + data.data.credits) - } else { - log(`竞猜页面失败,原因:${data.message}`) - } - } catch (e) { - log(`竞猜异常:${data},原因:${e}`) - } - }).catch(function (error) { - console.error(error); - }).then(res => { - //这里处理正确返回 - resolve(); - }); - }) - -} -async function finishJc(num) { - await loginFreePlugin(qhbUrl); - await $.wait(3000) - if (loginUrl == "") { - log(`账号【${num}】登录竞猜异常,自动跳过任务!`); - return false; - } - await setCookies(); - await $.wait(3000); - if (gameCookie == "") { - log(`账号【${num}】cookies异常,自动跳过!`); - return false; - } - - try { - await jcinfo(); - await jcquery(nextMatchInfoTime); - for(let i = 0; i < queryinfo.length; i++){ - homeName = queryinfo[i].homeName - awayName = queryinfo[i].awayName - joinNum = queryinfo[i].joinNum - matchId = queryinfo[i].matchId - option1 = queryinfo[i].option1 - option2 = queryinfo[i].option2 - option3 = queryinfo[i].option3 - select = queryinfo[i].select - matchTime =queryinfo[i].matchTime - if(option1 > option3){optionId = 1} - else optionId = 3 - log('竞猜第' + i + "场") - log(homeName + " VS " + awayName) - log("参与人数:" + joinNum) - log(homeName + "支持率:" + option1) - log("平局" + "支持率:" + option2) - log(awayName + "支持率:" + option3) - if(select !== null && 3){ - log('已经参加竞猜了 跳过') - }else - if(select == null){ - if(matchTime > nextMatchInfoTime){ - log('没有参加过竞猜 去竞猜') - await jccreditsCost() - await $.wait(3000); - await jcqueryStatus() - await getjcTokenKey(); - await $.wait(1000); - await getjcToken(); - await $.wait(1000); - var qhbToken = dealToken(tokenStr, tokenKeyStr); - await jcbetting(jcticketNum,optionId,matchId,qhbToken) - if (jcjg == false){ - if(matchTime > nextMatchInfoTime){ - await jccreditsCost() - await $.wait(3000); - await jcqueryStatus() - await getjcTokenKey(); - await $.wait(1000); - await getjcToken(); - await $.wait(1000); - var qhbToken = dealToken(tokenStr, tokenKeyStr); - await jcbetting(jcticketNum,optionId,matchId,qhbToken)} - } - } - } - } - - - - await jcrecord() - - await $.wait(2000); - - - - } catch (e) { - log(`账号【${num}】解码失败!${e}`); - return false; - } - return true; -} - -// ============================================重写============================================ \\ -async function GetRewrite() { - if ($request.url.indexOf("member/api/info/?userKeys=v1.0&pageName=member-info-index-search&formName=searchForm&kwwMember.memberId") > -1) { - let ck = ''; - let theRequest = new Object(); - if ($request.url.indexOf("?") != -1) { - let info = $request.url.split('?'); - let strs = info[1].split("&"); - for (var i = 0; i < strs.length; i++) { - theRequest[strs[i].split("=")[0]] = unescape(strs[i].split("=")[1]); - } - ck = theRequest.memberId; - } - if (kwwUid) { - if (kwwUid.indexOf(ck) == -1) { - kwwUid = kwwUid + "@" + ck; - $.setdata(kwwUid, "kwwUid"); - List = kwwUid.split("@"); - $.msg(`【${$.name}】` + ` 获取第${kwwUid.length}个 ck 成功: ${ck} ,不用请自行关闭重写!`); - } - } else { - $.setdata(ck, "kwwUid"); - $.msg(`【${$.name}】` + ` 获取第1个 ck 成功: ${ck} ,不用请自行关闭重写!`); - } - } -} - -function getYestoday() { - var date = new Date(); - var y = date.getFullYear(); - var m = date.getMonth() + 1; - var d = date.getDate() - 1; - if (d == "0") { - m = m - 1; - var temp = new Date(y, m, d); - d = temp.getDate(); - } - var Yesterday = [y, m, d]; - Yesterday = Yesterday.join(""); - return Yesterday; -} - -function getQueryString(url, name) { - let reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i"); - var r = url.split('?')[1].match(reg); - if (r != null) { - return unescape(r[2]); - } - return null; -} - - -function DealScriptStr(str) { - str = str.replace(/\/\*.*?\*\//g, ' '); - str = str.replace(/\b0(\d+)/g, '0o$1'); - return str; -} - -function dealToken(tokenStr, tokenKeyStr) { - let scriptToken, scriptKey; - scriptToken = DealScriptStr(tokenStr); - scriptKey = DealScriptStr(tokenKeyStr); - let tdom = new JSDOM( - ``, - { - runScripts: 'dangerously' - } - ) - let str = scriptKey; - var babelStr; - str = str.replaceAll(/eval/g, 'var babelStr='); - str = str.replaceAll(/\\u0065\\u0076\\u0061\\u006c/g, 'var babelStr=') - eval(str); - eval(babelStr); - let ast = parser.parse(babelStr); - let funcStr = ast.program.body[0].id.name; - - let res = tdom.window[funcStr](); - tdom.window.close(); - //console.log(window['pf8b6b']); - return res; -} - -function dealToken2(tokenStr, tokenKey) { - let scriptToken; - scriptToken = DealScriptStr(tokenStr); - let tdom = new JSDOM( - ``, - { - runScripts: 'dangerously' - } - ) - let res = tdom.window[tokenKey]; - tdom.window.close(); - //console.log(window['pf8b6b']); - return res; -} - -function ParseHtml(html) { - let doc = domParser.parseFromString(html); - let nodes = xpath.select('//script', doc); - let node = nodes[4].childNodes[0]; - let babelStr; - let tdom = new JSDOM(``, { - runScripts: 'dangerously' - }) - babelStr = tdom.window.getDuibaToken.toString(); - let tokenKey = babelStr.match(/var key = '(.*)?';/)[1]; - let defaultToken = babelStr.match(/data.token = '(.*)?';/)[1]; - tdom.window.close(); - return { - cid: tdom.window.CFG.consumerId, - tokenKey, - defaultToken - }; -} - -function ParseYjjHtml(html) { - let doc = domParser.parseFromString(html); - let nodes = xpath.select('//script', doc); - let node = nodes[5].childNodes[0]; - let babelStr; - let tdom = new JSDOM(``, { - runScripts: 'dangerously' - }) - babelStr = tdom.window.getDuibaToken.toString(); - let tokenKey = babelStr.match(/var key = '(.*)?';/)[1]; - let defaultToken = babelStr.match(/data.token = '(.*)?';/)[1]; - tdom.window.close(); - return { - cid: tdom.window.CFG.consumerId, - tokenKey, - defaultToken - }; -} - -function yjgetkey(tokenStr) { - let scriptToken; - scriptToken = DealScriptStr(tokenStr); - - let tdom = new JSDOM( - ``, - { - runScripts: 'dangerously' - } - ) - let str = tokenStr; - var babelStr; - - eval(tokenStr) - str = str.replaceAll(/eval/g, 'var babelStr='); - str = str.replaceAll(/\\u0065\\u0076\\u0061\\u006c/g, 'var babelStr=') - eval(str); - - eval(babelStr); - - let key = babelStr.match(/key = '(.*?)'/)[1]; - - tdom.window.close(); - - return key; -} - -function yjParseHtmlGame(html) { - let doc = domParser.parseFromString(html); - - let nodes = xpath.select('//script', doc); - - let node = nodes[5].childNodes[0]; - - let tdom = new JSDOM(``, { - runScripts: 'dangerously' - }) - tdom.window.close(); - return yjgetkey(node.data) - -} - -function yjgettoken(html, tokenStr) { - let scriptToken; - scriptToken = DealScriptStr(tokenStr); - - let tdom = new JSDOM( - ``, - { - runScripts: 'dangerously' - } - ) - let str = scriptToken; - window = tdom.window - var babelStr; - str = str.replaceAll(/eval/g, 'var babelStr='); - str = str.replaceAll(/\\u0065\\u0076\\u0061\\u006c/g, 'var babelStr=') - eval(str); - eval(babelStr); - - - var keys = yjParseHtmlGame(html) - let res = tdom.window[keys]; - tdom.window.close(); - - return res; -} - - -function ParseHtmlGame(html) { - let doc = domParser.parseFromString(html); - let nodes = xpath.select('//script', doc); - let node = nodes[2].childNodes[0]; - let tdom = new JSDOM(``, { - runScripts: 'dangerously' - }) - tdom.window.close(); - return { - key: tdom.window.CFG.key - }; -} - - -/** - * 加密 - * @param inputString - * @returns {*} - */ -function md5(inputString) { - var hc = "0123456789abcdef"; - - function rh(n) { - var j, s = ""; - for (j = 0; j <= 3; j++) s += hc.charAt((n >> (j * 8 + 4)) & 0x0F) + hc.charAt((n >> (j * 8)) & 0x0F); - return s; - } - - function ad(x, y) { - var l = (x & 0xFFFF) + (y & 0xFFFF); - var m = (x >> 16) + (y >> 16) + (l >> 16); - return (m << 16) | (l & 0xFFFF); - } - - function rl(n, c) { - return (n << c) | (n >>> (32 - c)); - } - - function cm(q, a, b, x, s, t) { - return ad(rl(ad(ad(a, q), ad(x, t)), s), b); - } - - function ff(a, b, c, d, x, s, t) { - return cm((b & c) | ((~b) & d), a, b, x, s, t); - } - - function gg(a, b, c, d, x, s, t) { - return cm((b & d) | (c & (~d)), a, b, x, s, t); - } - - function hh(a, b, c, d, x, s, t) { - return cm(b ^ c ^ d, a, b, x, s, t); - } - - function ii(a, b, c, d, x, s, t) { - return cm(c ^ (b | (~d)), a, b, x, s, t); - } - - function sb(x) { - var i; - var nblk = ((x.length + 8) >> 6) + 1; - var blks = new Array(nblk * 16); - for (i = 0; i < nblk * 16; i++) blks[i] = 0; - for (i = 0; i < x.length; i++) blks[i >> 2] |= x.charCodeAt(i) << ((i % 4) * 8); - blks[i >> 2] |= 0x80 << ((i % 4) * 8); - blks[nblk * 16 - 2] = x.length * 8; - return blks; - } - - var i, x = sb(inputString), a = 1732584193, b = -271733879, c = -1732584194, d = 271733878, olda, oldb, oldc, oldd; - for (i = 0; i < x.length; i += 16) { - olda = a; - oldb = b; - oldc = c; - oldd = d; - a = ff(a, b, c, d, x[i + 0], 7, -680876936); - d = ff(d, a, b, c, x[i + 1], 12, -389564586); - c = ff(c, d, a, b, x[i + 2], 17, 606105819); - b = ff(b, c, d, a, x[i + 3], 22, -1044525330); - a = ff(a, b, c, d, x[i + 4], 7, -176418897); - d = ff(d, a, b, c, x[i + 5], 12, 1200080426); - c = ff(c, d, a, b, x[i + 6], 17, -1473231341); - b = ff(b, c, d, a, x[i + 7], 22, -45705983); - a = ff(a, b, c, d, x[i + 8], 7, 1770035416); - d = ff(d, a, b, c, x[i + 9], 12, -1958414417); - c = ff(c, d, a, b, x[i + 10], 17, -42063); - b = ff(b, c, d, a, x[i + 11], 22, -1990404162); - a = ff(a, b, c, d, x[i + 12], 7, 1804603682); - d = ff(d, a, b, c, x[i + 13], 12, -40341101); - c = ff(c, d, a, b, x[i + 14], 17, -1502002290); - b = ff(b, c, d, a, x[i + 15], 22, 1236535329); - a = gg(a, b, c, d, x[i + 1], 5, -165796510); - d = gg(d, a, b, c, x[i + 6], 9, -1069501632); - c = gg(c, d, a, b, x[i + 11], 14, 643717713); - b = gg(b, c, d, a, x[i + 0], 20, -373897302); - a = gg(a, b, c, d, x[i + 5], 5, -701558691); - d = gg(d, a, b, c, x[i + 10], 9, 38016083); - c = gg(c, d, a, b, x[i + 15], 14, -660478335); - b = gg(b, c, d, a, x[i + 4], 20, -405537848); - a = gg(a, b, c, d, x[i + 9], 5, 568446438); - d = gg(d, a, b, c, x[i + 14], 9, -1019803690); - c = gg(c, d, a, b, x[i + 3], 14, -187363961); - b = gg(b, c, d, a, x[i + 8], 20, 1163531501); - a = gg(a, b, c, d, x[i + 13], 5, -1444681467); - d = gg(d, a, b, c, x[i + 2], 9, -51403784); - c = gg(c, d, a, b, x[i + 7], 14, 1735328473); - b = gg(b, c, d, a, x[i + 12], 20, -1926607734); - a = hh(a, b, c, d, x[i + 5], 4, -378558); - d = hh(d, a, b, c, x[i + 8], 11, -2022574463); - c = hh(c, d, a, b, x[i + 11], 16, 1839030562); - b = hh(b, c, d, a, x[i + 14], 23, -35309556); - a = hh(a, b, c, d, x[i + 1], 4, -1530992060); - d = hh(d, a, b, c, x[i + 4], 11, 1272893353); - c = hh(c, d, a, b, x[i + 7], 16, -155497632); - b = hh(b, c, d, a, x[i + 10], 23, -1094730640); - a = hh(a, b, c, d, x[i + 13], 4, 681279174); - d = hh(d, a, b, c, x[i + 0], 11, -358537222); - c = hh(c, d, a, b, x[i + 3], 16, -722521979); - b = hh(b, c, d, a, x[i + 6], 23, 76029189); - a = hh(a, b, c, d, x[i + 9], 4, -640364487); - d = hh(d, a, b, c, x[i + 12], 11, -421815835); - c = hh(c, d, a, b, x[i + 15], 16, 530742520); - b = hh(b, c, d, a, x[i + 2], 23, -995338651); - a = ii(a, b, c, d, x[i + 0], 6, -198630844); - d = ii(d, a, b, c, x[i + 7], 10, 1126891415); - c = ii(c, d, a, b, x[i + 14], 15, -1416354905); - b = ii(b, c, d, a, x[i + 5], 21, -57434055); - a = ii(a, b, c, d, x[i + 12], 6, 1700485571); - d = ii(d, a, b, c, x[i + 3], 10, -1894986606); - c = ii(c, d, a, b, x[i + 10], 15, -1051523); - b = ii(b, c, d, a, x[i + 1], 21, -2054922799); - a = ii(a, b, c, d, x[i + 8], 6, 1873313359); - d = ii(d, a, b, c, x[i + 15], 10, -30611744); - c = ii(c, d, a, b, x[i + 6], 15, -1560198380); - b = ii(b, c, d, a, x[i + 13], 21, 1309151649); - a = ii(a, b, c, d, x[i + 4], 6, -145523070); - d = ii(d, a, b, c, x[i + 11], 10, -1120210379); - c = ii(c, d, a, b, x[i + 2], 15, 718787259); - b = ii(b, c, d, a, x[i + 9], 21, -343485551); - a = ad(a, olda); - b = ad(b, oldb); - c = ad(c, oldc); - d = ad(d, oldd); - } - return rh(a) + rh(b) + rh(c) + rh(d); -} - -/** - * 添加消息 - * @param str - * @param is_log - */ -function addNotifyStr(str, is_log = true) { - if (is_log) { - log(`${str}\n`) - } - msg += `${str}\n` -} - -// ============================================发送消息============================================ \\ -async function SendMsg(message) { - if (!message) - return; - - if (Notify > 0) { - if ($.isNode()) { - var notify = require('./sendNotify'); - await notify.sendNotify($.name, message); - } else { - $.msg(message); - } - } else { - log(message); - } -} - -/** - * 随机延时1-30s,避免大家运行时间一样 - * @returns {*|number} - */ -function delay() { - let time = parseInt(Math.random() * 100000); - if (time > 30000) {// 大于30s重新生成 - return delay(); - } else { - console.log('随机延时:', `${time}ms, 避免大家运行时间一样`) - return time;// 小于30s,返回 - } -} - -/** - * 随机数生成 - */ -function randomString(e) { - e = e || 32; - var t = "QWERTYUIOPASDFGHJKLZXCVBNM1234567890", - a = t.length, - n = ""; - for (i = 0; i < e; i++) - n += t.charAt(Math.floor(Math.random() * a)); - return n -} - -/** - * 随机整数生成 - */ -function randomInt(min, max) { - return Math.round(Math.random() * (max - min) + min) -} - -/** - * 获取毫秒时间戳 - */ -function timestampMs() { - return new Date().getTime(); -} - -/** - * 获取秒时间戳 - */ -function timestampS() { - return Date.parse(new Date()) / 1000; -} - -/** - * - * 示例:$.time('yyyy-MM-dd qq HH:mm:ss.S') - * :$.time('yyyyMMddHHmmssS') - * y:年 M:月 d:日 q:季 H:时 m:分 s:秒 S:毫秒 - * 其中y可选0-4位占位符、S可选0-1位占位符,其余可选0-2位占位符 - * @param {string} fmt 格式化参数 - * @param {number} 可选: 根据指定时间戳返回格式化日期 - * - */ -function time(fmt, ts = null) { - const date = ts ? new Date(ts) : new Date(); - let o = { - 'M+': date.getMonth() + 1, - 'd+': date.getDate(), - 'H+': date.getHours(), - 'm+': date.getMinutes(), - 's+': date.getSeconds(), - 'q+': Math.floor((date.getMonth() + 3) / 3), - S: date.getMilliseconds(), - }; - if (/(y+)/.test(fmt)) - fmt = fmt.replace( - RegExp.$1, - (date.getFullYear() + '').substr(4 - RegExp.$1.length) - ); - for (let k in o) - if (new RegExp('(' + k + ')').test(fmt)) - fmt = fmt.replace( - RegExp.$1, - RegExp.$1.length == 1 - ? o[k] - : ('00' + o[k]).substr(('' + o[k]).length) - ); - return fmt; -} - -/** - * 修改配置文件 - */ -function modify() { - - fs.readFile('/ql/data/config/config.sh', 'utf8', function (err, dataStr) { - if (err) { - return log('读取文件失败!' + err) - } else { - var result = dataStr.replace(/regular/g, string); - fs.writeFile('/ql/data/config/config.sh', result, 'utf8', function (err) { - if (err) { - return log(err); - } - }); - } - }) -} - - - -function Env(t, e) { - "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); - - class s { - constructor(t) { - this.env = t - } - - send(t, e = "GET") { - t = "string" == typeof t ? {url: t} : t; - let s = this.get; - return "POST" === e && (s = this.post), new Promise((e, i) => { - s.call(this, t, (t, s, r) => { - t ? i(t) : e(s) - }) - }) - } - - get(t) { - return this.send.call(this.env, t) - } - - post(t) { - return this.send.call(this.env, t, "POST") - } - } - - return new class { - constructor(t, e) { - this.name = t, this.http = new s(this), this.data = null, this.dataFile = "box.dat", this.logs = [], this.isMute = !1, this.isNeedRewrite = !1, this.logSeparator = "\n", this.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) - } - - isNode() { - return "undefined" != typeof module && !!module.exports - } - - isQuanX() { - return "undefined" != typeof $task - } - - isSurge() { - return "undefined" != typeof $httpClient && "undefined" == typeof $loon - } - - isLoon() { - return "undefined" != typeof $loon - } - - toObj(t, e = null) { - try { - return JSON.parse(t) - } catch { - return e - } - } - - toStr(t, e = null) { - try { - return JSON.stringify(t) - } catch { - return e - } - } - - getjson(t, e) { - let s = e; - const i = this.getdata(t); - if (i) try { - s = JSON.parse(this.getdata(t)) - } catch { - } - return s - } - - setjson(t, e) { - try { - return this.setdata(JSON.stringify(t), e) - } catch { - return !1 - } - } - - getScript(t) { - return new Promise(e => { - this.get({url: t}, (t, s, i) => e(i)) - }) - } - - runScript(t, e) { - return new Promise(s => { - let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); - i = i ? i.replace(/\n/g, "").trim() : i; - let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); - r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; - const [o, h] = i.split("@"), n = { - url: `http://${h}/v1/scripting/evaluate`, - body: {script_text: t, mock_type: "cron", timeout: r}, - headers: {"X-Key": o, Accept: "*/*"} - }; - this.post(n, (t, e, i) => s(i)) - }).catch(t => this.logErr(t)) - } - - loaddata() { - if (!this.isNode()) return {}; - { - this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); - const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), - s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); - if (!s && !i) return {}; - { - const i = s ? t : e; - try { - return JSON.parse(this.fs.readFileSync(i)) - } catch (t) { - return {} - } - } - } - } - - writedata() { - if (this.isNode()) { - this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); - const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), - s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); - s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) - } - } - - lodash_get(t, e, s) { - const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); - let r = t; - for (const t of i) if (r = Object(r)[t], void 0 === r) return s; - return r - } - - lodash_set(t, e, s) { - return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) - } - - getdata(t) { - let e = this.getval(t); - if (/^@/.test(t)) { - const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; - if (r) try { - const t = JSON.parse(r); - e = t ? this.lodash_get(t, i, "") : e - } catch (t) { - e = "" - } - } - return e - } - - setdata(t, e) { - let s = !1; - if (/^@/.test(e)) { - const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), - h = i ? "null" === o ? null : o || "{}" : "{}"; - try { - const e = JSON.parse(h); - this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) - } catch (e) { - const o = {}; - this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) - } - } else s = this.setval(t, e); - return s - } - - getval(t) { - return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null - } - - setval(t, e) { - return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null - } - - initGotEnv(t) { - this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) - } - - get(t, e = (() => { - })) { - t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, {"X-Surge-Skip-Scripting": !1})), $httpClient.get(t, (t, s, i) => { - !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) - })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, {hints: !1})), $task.fetch(t).then(t => { - const {statusCode: s, statusCode: i, headers: r, body: o} = t; - e(null, {status: s, statusCode: i, headers: r, body: o}, o) - }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { - try { - if (t.headers["set-cookie"]) { - const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); - s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar - } - } catch (t) { - this.logErr(t) - } - }).then(t => { - const {statusCode: s, statusCode: i, headers: r, body: o} = t; - e(null, {status: s, statusCode: i, headers: r, body: o}, o) - }, t => { - const {message: s, response: i} = t; - e(s, i, i && i.body) - })) - } - - post(t, e = (() => { - })) { - if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, {"X-Surge-Skip-Scripting": !1})), $httpClient.post(t, (t, s, i) => { - !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) - }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, {hints: !1})), $task.fetch(t).then(t => { - const {statusCode: s, statusCode: i, headers: r, body: o} = t; - e(null, {status: s, statusCode: i, headers: r, body: o}, o) - }, t => e(t)); else if (this.isNode()) { - this.initGotEnv(t); - const {url: s, ...i} = t; - this.got.post(s, i).then(t => { - const {statusCode: s, statusCode: i, headers: r, body: o} = t; - e(null, {status: s, statusCode: i, headers: r, body: o}, o) - }, t => { - const {message: s, response: i} = t; - e(s, i, i && i.body) - }) - } - } - - time(t, e = null) { - const s = e ? new Date(e) : new Date; - let i = { - "M+": s.getMonth() + 1, - "d+": s.getDate(), - "H+": s.getHours(), - "m+": s.getMinutes(), - "s+": s.getSeconds(), - "q+": Math.floor((s.getMonth() + 3) / 3), - S: s.getMilliseconds() - }; - /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); - for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); - return t - } - - msg(e = t, s = "", i = "", r) { - const o = t => { - if (!t) return t; - if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? {"open-url": t} : this.isSurge() ? {url: t} : void 0; - if ("object" == typeof t) { - if (this.isLoon()) { - let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; - return {openUrl: e, mediaUrl: s} - } - if (this.isQuanX()) { - let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; - return {"open-url": e, "media-url": s} - } - if (this.isSurge()) { - let e = t.url || t.openUrl || t["open-url"]; - return {url: e} - } - } - }; - if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { - let t = ["", "==============📣系统通知📣=============="]; - t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) - } - } - - log(...t) { - t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) - } - - logErr(t, e) { - const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); - s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) - } - - wait(t) { - return new Promise(e => setTimeout(e, t)) - } - - done(t = {}) { - const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; - this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) - } - }(t, e) -} diff --git a/kww/kww.py b/kww/kww.py deleted file mode 100644 index 3e1b46b..0000000 --- a/kww/kww.py +++ /dev/null @@ -1,512 +0,0 @@ -# -*- coding:utf-8 -*- -""" -cron: 0 30 0 * * * -new Env('微信小程序-口味王'); -""" -import time -import os -import re -import hashlib -import json - -try: - import requests -except Exception as e: - print(e, "\n缺少requests 模块,请执行命令安装:python3 -m pip install requests") - exit(3) -''' -版本 v1.0.1 -====================== Cookie 配置=========================== -''' -mycookies = [] -try: - mycookies = os.environ["KWW_COOKIE"].split("&") -except: - print("【提示】请先获取微信小程序[口味王]cookie,环境变量添加 KWW_COOKIE ,如有不懂加群:212796668、681030097、743744614") - exit(3) -''' -====================== 题库 =========================== -''' -ktList = {"1":1,"2":1,"3":1,"4":1,"5":4,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":2,"14":1,"15":2,"16":1,"17":2,"18":2,"19":1,"20":1,"21":4,"22":1,"23":4,"24":1,"25":3,"26":1,"27":4,"28":1,"29":4,"30":4,"31":1,"32":4,"33":1,"34":1,"35":1,"36":1,"37":4,"38":1,"39":3,"40":4,"41":2,"42":1,"43":2,"44":4,"45":4,"46":2,"47":1,"48":1,"49":1,"50":2,"51":4,"52":4,"53":1,"54":3,"55":3,"56":4,"57":4,"58":4,"59":1,"60":4,"61":1,"62":1,"63":1,"64":2,"65":1,"66":3,"67":1,"68":1,"69":4,"70":4,"71":4,"72":1,"73":4,"74":2,"75":4,"76":4,"77":4,"78":1,"79":2,"80":1,"81":2,"82":3,"83":3,"84":4,"85":1,"86":2,"87":3,"88":2,"89":4,"90":2,"91":4,"92":3,"93":4,"94":2,"95":3,"96":2,"97":3,"98":2,"99":4,"100":4,"101":4,"102":3,"103":4,"104":4,"105":4,"106":4} -# ktList = {'1': '正确', -# '2': '正确', -# '3': '正确', -# '4': '正确', -# '5': '以上都是', -# '6': '正确', -# '7': '正确', -# '8': '正确', -# '9': '正确', -# '10': '正确', -# '11': '正确', -# '12': '正确', -# '13': '正确', -# '14': '正确', -# '15': '正确', -# '16': '正确', -# '17': '正确', -# '18': '正确', -# '19': '正确', -# '20': '全国销量领先', -# '21': '以上全是', -# '22': '正确', -# '23': '7', -# '24': '正确', -# '25': '中国海南', -# '26': '正确', -# '27': '22道', -# '28': '正确', -# '29': '以上都是', -# '30': '以上都是', -# '31': '正确', -# '32': '100%', -# '33': '高端槟榔', -# '34': '正确', -# '35': '正确', -# '36': '正确', -# '37': '海南嫩青果', -# '38': '海南嫩青果', -# '39': '嫩青果', -# '40': '嫩青果', -# '41': '海南', -# '42': '正确', -# '43': '全国高端销量领先', -# '44': '以上都是', -# '45': '中国海南', -# '46': '槟榔、椰子、橡胶', -# '47': '正确', -# '48': '正确', -# '49': '正确', -# '50': '槟榔', -# '51': '槟榔', -# '52': '以上都是', -# '53': '槟榔', -# '54': '槟榔树', -# '55': '槟榔树', -# '56': '以上都是', -# '57': '马来西亚', -# '58': '5~6年', -# '59': '槟榔之乡', -# '60': '以上都是', -# '61': '正确', -# '62': '正确', -# '63': '正确', -# '64': '槟榔', -# '65': '槟榔', -# '66': '槟榔树', -# '67': '《采槟榔》', -# '68': '槟榔树', -# '69': '3000年', -# '70': '公元前10,000年', -# '71': '槟榔树', -# '72': '8~10月', -# '73': '',# 口味王首创_____口味槟榔? ##4 -# '74': '错误',#槟榔品牌中,“口味王”槟榔是全国【高端销量领先】吗? '正确', '错误' -# '75': '以上都是',# 口味王”槟榔曾【冠名】哪一年的《湖南卫视春节联欢晚会》 '2017年', '2018年', '2019年', '以上都是' -# '76': '这!就是街舞4',# “口味王”槟榔曾赞助过哪个综艺节目? -# '77': '以上都是',# 口味王”槟榔曾赞助过哪个电视剧? '《将夜2》', '《鬼吹灯之龙岭迷窟》', '《巡回检查组》', '以上都是' -# '78': '《这!就是灌篮3》',# “口味王”槟榔曾【冠名】过哪个综艺节目 '《这!就是灌篮3》', '《这!就是街舞4》', '《欢乐喜剧人5》', '以上都是' -# '79': '', -# '80': '', -# '81': '2002年', #中国男足曾在哪一年进入世界杯决赛圈? '1998年', '2002年', '2006年', '2010年' -# '82': '', -# '83': '西班牙',#2002年韩日世界杯,东道主韩国队淘汰了哪支欧洲劲旅历史性地打入四强? '英格兰', '意大利', '西班牙', '葡萄牙' -# '84': '',# -# '85': '俄罗斯',# 2018年世界杯在哪个国家举办? '俄罗斯', '巴西', '南非', '德国' -# '86': '', -# '87': '南非',#2010年世界杯在哪个国家举办? -# '88': '巴西队',#夺得世界杯次数最多的欧洲球队是哪个队? -# '89': '蓝色',#意大利队的传统球衣是什么颜色? '白色', '绿色', '红色', '蓝色' -# '90': '', -# '91': '荷兰',#无冕之王”是形容哪支球队的? '西班牙', '葡萄牙', '英格兰', '荷兰' -# '92': '', -# '93': '乌拉圭',# 第一届世界杯冠军是谁? '意大利', '智利', '巴西', '乌拉圭' -# '94': '', -# '95': '蹴鞠',#我国古代足球称为什么? -# '96': '', -# '97': '朝鲜',#第一支打入世界杯八强的亚洲球队是哪一队? '韩国', '日本', '朝鲜', '马来西亚' -# '98': '', -# '99': '20亿',#口味王“狂欢世界杯”活动累计派发多少积分? '10亿', '5亿', '15亿', '20亿' -# '100': '', -# '101': '20',#口味王“狂欢世界杯”活动累计派发多少台华为Mate 50 Pro手机? '5', '10', '15', '20' -# '102': '',#口味王“狂欢世界杯”活动从什么时间开始派发华为Mate 50 Pro手机? -# '103': '以上都是',#口味王“狂欢世界杯”有哪些活动?'冠军竞猜', '赛事竞猜', '点球大战', '以上都是' -# '104': '', -# '105': '以上都是',#世界杯期间,口味王在以下哪些城市举办线下活动? 长沙、济南、海口', '武汉、青岛、南宁', '杭州、成都、佛山', '以上都是' -# '106': '', -# '107': '', -# '108': '', -# '109': '', -# '110': '', -# '111': '', -# '112': '', -# '113': '', -# '114': '', -# '115': '', -# '116': '', -# '117': '', -# '118': '', -# '119': '', -# '120': '', -# '121': '', -# '122': '', -# '123': '', -# '124': '', -# '125': '', -# '126': '', -# '127': '', -# '128': '', -# '129': '', -# '130': '', -# '131': '', -# '132': '', -# '133': '', -# '134': '', -# '135': '', -# '136': '', -# '137': '', -# '138': '', -# '139': '', -# '140': '', -# '141': '', -# '142': '', -# '143': '', -# '144': '', -# '145': '', -# '146': '', -# '147': '', -# '148': '', -# '149': '', -# } - -''' -====================== 请求 =========================== -''' - - -def getApiBody(url, json): - headers = { - 'Content-Type': 'application/json', - } - return requests.post(url=url, headers=headers, json=json, timeout=300).json() - - -def getApi(url, headers): - return requests.get(url=url, headers=headers, timeout=300).json() - - -def getApiR(url, headers): - return requests.get(url=url, headers=headers, allow_redirects=False, timeout=300) - - -def getkey(kww): - headers = { - 'Host': '89420.activity-20.m.duiba.com.cn', - 'Content-Type': 'application/x-www-form-urlencoded', - 'Cookie': f'{kww}', - 'Connection': 'keep-alive', - 'Accept': '*/*', - 'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 15_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 MicroMessenger/8.0.29(0x18001d33) NetType/WIFI Language/zh_CN miniProgram/wxfb0905b0787971ad', - 'Accept-Language': 'zh-CN,zh-Hans;q=0.9', - 'Accept-Encoding': 'gzip, deflate' - } - - - response = requests.get('https://89420.activity-20.m.duiba.com.cn/aaw/underseaGame/index?opId=202214587511596&dbnewopen&from=login&spm=89420.1.1.1', headers=headers) - if response.status_code == 200: - key1 = re.search(r'key\: \'(\S+)\'', response.text,re.M|re.I) - key = key1.group(1) - # print(key) - return key - else: - print(response.text) - -def haidaostart(kww): - url = "https://89420.activity-20.m.duiba.com.cn/aaw/underseaGame/start?__ts__=1668168666619" - payload="opId=202214587511596" - headers = { - 'Host': '89420.activity-20.m.duiba.com.cn', - 'Content-Type': 'application/x-www-form-urlencoded', - 'Cookie': f'{kww}', - 'Connection': 'keep-alive', - 'Accept': '*/*', - 'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 15_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 MicroMessenger/8.0.29(0x18001d33) NetType/WIFI Language/zh_CN miniProgram/wxfb0905b0787971ad', - 'Accept-Language': 'zh-CN,zh-Hans;q=0.9', - 'Accept-Encoding': 'gzip, deflate' - } - result = requests.request("POST", url, headers=headers, data=payload).json() - if result['success'] == True: - hdoder= result['data']['orderNum'] - hdstartid = result['data']['startId'] - return hdoder,hdstartid - else: - print(result['desc']) - return None,None -def haidaogetOrderStatus(kww,hdstartid,hdoder): - url = f"https://89420.activity-20.m.duiba.com.cn/aaw/underseaGame/getOrderStatus?__ts__=1668168667092&opId=202214587511596&startId={hdstartid}&orderNum={hdoder}&type=1" - - headers = { - 'Host': '89420.activity-20.m.duiba.com.cn', - 'Content-Type': 'application/x-www-form-urlencoded', - 'Cookie': f'{kww}', - 'Connection': 'keep-alive', - 'Accept': '*/*', - 'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 15_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 MicroMessenger/8.0.29(0x18001d33) NetType/WIFI Language/zh_CN miniProgram/wxfb0905b0787971ad', - 'Accept-Language': 'zh-CN,zh-Hans;q=0.9', - 'Accept-Encoding': 'gzip, deflate' - } - result = requests.request("GET", url, headers=headers).json() - if result['success'] == True: - - print(result['success']) - else: - print(result) - return None -def haidaostartRound(kww,hdstartid,rdinx): - url = "https://89420.activity-20.m.duiba.com.cn/aaw/underseaGame/startRound?__ts__=1668168667195" - payload=f"opId=202214587511596&startId={hdstartid}&roundIndex={rdinx}" - headers = { - 'Host': '89420.activity-20.m.duiba.com.cn', - 'Content-Type': 'application/x-www-form-urlencoded', - 'Cookie': f'{kww}', - 'Connection': 'keep-alive', - 'Accept': '*/*', - 'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 15_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 MicroMessenger/8.0.29(0x18001d33) NetType/WIFI Language/zh_CN miniProgram/wxfb0905b0787971ad', - 'Accept-Language': 'zh-CN,zh-Hans;q=0.9', - 'Accept-Encoding': 'gzip, deflate' - } - result = requests.request("POST", url, headers=headers,data=payload).json() - if result['success'] == True: - - print(result['success']) - else: - print(result) - return None -def get_str_md5(content): - m = hashlib.md5(content.encode('utf-8')).hexdigest() - return m -def haidaosubmit(kww,score,hdstartid,totalScore,rdinx,key): - signdata = f"opId=202214587511596&roundIndex={rdinx}&score={score}&startId={hdstartid}&totalScore={totalScore}&key={key}" - sign = get_str_md5(signdata) - url = "https://89420.activity-20.m.duiba.com.cn/aaw/underseaGame/submit?__ts__=1668168852399" - payload=f"opId=202214587511596&startId={hdstartid}&score={score}&totalScore={totalScore}&roundIndex={rdinx}&sign={sign}" - headers = { - 'Host': '89420.activity-20.m.duiba.com.cn', - 'Content-Type': 'application/x-www-form-urlencoded', - 'Cookie': f'{kww}', - 'Connection': 'keep-alive', - 'Accept': '*/*', - 'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 15_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 MicroMessenger/8.0.29(0x18001d33) NetType/WIFI Language/zh_CN miniProgram/wxfb0905b0787971ad', - 'Accept-Language': 'zh-CN,zh-Hans;q=0.9', - 'Accept-Encoding': 'gzip, deflate' - } - result = requests.request("POST", url, headers=headers,data=payload).json() - if result['success'] == True: - print("提交OK") - else: - print(result) - return None -def haidaoddrw(kww,hdstartid,rdinx): - url = "https://89420.activity-20.m.duiba.com.cn/aaw/underseaGame/draw?__ts__=1668168861872" - payload=f"opId=202214587511596&startId={hdstartid}&roundIndex={rdinx}" - headers = { - 'Host': '89420.activity-20.m.duiba.com.cn', - 'Content-Type': 'application/x-www-form-urlencoded', - 'Cookie': f'{kww}', - 'Connection': 'keep-alive', - 'Accept': '*/*', - 'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 15_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 MicroMessenger/8.0.29(0x18001d33) NetType/WIFI Language/zh_CN miniProgram/wxfb0905b0787971ad', - 'Accept-Language': 'zh-CN,zh-Hans;q=0.9', - 'Accept-Encoding': 'gzip, deflate' - } - result = requests.request("POST", url, headers=headers,data=payload).json() - if result['success'] == True: - print(result['data']['desc']) - else: - print(result) - return None - -def getChangeCKUrl(uid): - url = f"https://member.kwwblcj.com/member/api/info/?userKeys=v1.0&pageName=loginFreePlugin&formName=searchForm&uid={uid}&levelCode=1&redirect=https%3A%2F%2F89420.activity-20.m.duiba.com.cn%2Fprojectx%2Fp725daef0%2Findex.html%3FappID%3D89420" - payload={} - headers = { - 'Host': 'member.kwwblcj.com', - 'Connection': 'keep-alive', - 'content-type': 'application/json', - 'Accept-Encoding': 'gzip,deflate', - 'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 15_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 MicroMessenger/8.0.29(0x18001d34) NetType/WIFI Language/zh_CN', - 'Referer': 'https://servicewechat.com/wxfb0905b0787971ad/29/page-frame.html', - } - response = requests.request("GET", url, headers=headers, data=payload).json() - return response['result'] - -def getCookie(url): - session = requests.Session() - session.get(url) - ckDict = session.cookies.get_dict() - cookie_value = '' - for a,b in ckDict.items(): - cookie_value += a + '=' + b + ';' - return cookie_value - -if __name__ == '__main__': - for i in range(len(mycookies)): - print("用户【" + mycookies[i] + "】") - headers = { - 'Content-Type': 'application/x-www-form-urlencoded', - } - print("【答题任务】") - url = 'https://member.kwwblcj.com/member/api/info/?userKeys=v1.0&pageName=loginFreePlugin&formName=searchForm&uid=' + \ - mycookies[ - i] + '&levelCode=K1&redirect=https%3A%2F%2F89420.activity-20.m.duiba.com.cn%2Fprojectx%2Fp129446ea%2Findex.html%3FappID%3D89420' - res = getApi(url, headers) - cookie = getApiR(res['result'], headers).headers.get('Set-Cookie') - cookieList = cookie.split(";") - cookie_wdata4 = '' - cookie_w_ts = '' - cookie__ac = '' - for ii in range(len(cookieList)): - if cookieList[ii].find('wdata4') != -1: - cookie_wdata4 = cookieList[ii] - if cookieList[ii].find('w_ts') != -1: - cookie_w_ts = cookieList[ii] - if cookieList[ii].find('_ac') != -1: - cookie__ac = cookieList[ii] - - Cookie = cookie_wdata4 + ";" + cookie_w_ts + ";" + cookie__ac - Cookie = Cookie.replace("HttpOnly,", "") - headers = { - 'Cookie': Cookie, - } - res = getApi( - 'https://89420.activity-20.m.duiba.com.cn/projectx/p129446ea/answer/start.do?user_type=0&is_from_share=1&_t=' + str( - time.time()), headers) - startId = str(res['data']) - if startId == 'None': - print("今日已答题") - else: - i = 1 - while i < 6: - i += 1 - url = 'https://89420.activity-20.m.duiba.com.cn/projectx/p129446ea/answer/getQuestion.do?startId=' + startId + '&user_type=0&is_from_share=1&_t=' + str( - time.time()) - res = getApi(url, headers) - print("题目ID:" + res['data']['id'] + " > " + res['data']['content']) - answerList = res['data']['answerList'] - print(str(answerList)) - dt = False - try: - print('提交答案 > 提交值 :' + str(ktList.get(res['data']['id']) + 1)) - url = 'https://89420.activity-20.m.duiba.com.cn/projectx/p129446ea/answer/submit.do?answer=' + str( - ktList.get(res['data']['id'])) + '&startId=' + startId + '&user_type=0&is_from_share=1&_t=' + str(time.time()) - res = getApi(url, headers) - if res['data']['correct']: - print("回答正确" if res['data']['correct'] else "回答错误") - elif res['message'] == '重复提交': - print("已全部答完") - except Exception as e: - print(e, "\n答题异常错误") - continue - # 领取奖励 - url = 'https://89420.activity-20.m.duiba.com.cn/projectx/p129446ea/answer/complete.do?startId=' + startId + '&user_type=0&is_from_share=1&_t=' + str( - time.time()) - res = getApi(url, headers) - print("领取答题奖励") - url = 'https://member.kwwblcj.com/member/api/list/?userKeys=v1.0&pageName=select-member-score&formName=searchForm&memberId=' + \ - mycookies[i] - headers = { - 'Content-Type': 'application/x-www-form-urlencoded', - } - res = getApi(url, headers) - print("\n") - for i in range(len(mycookies)): - print("用户【" + mycookies[i] + "】") - url = 'https://member.kwwblcj.com/member/api/list/?userKeys=v1.0&pageName=select-member-score&formName=searchForm&memberId=' + \ - mycookies[i] - headers = { - 'Content-Type': 'application/x-www-form-urlencoded', - } - res = getApi(url, headers) - print("积分剩余 : " + str(res['rows'][0])) - addJf = int(res['rows'][0]) - print("【每日签到】") - res = getApi( - 'https://member.kwwblcj.com/member/api/list/?userKeys=v1.0&pageName=selectSignInfo&formName=searchForm&memberId=' + - mycookies[i], headers) - propList = res['rows']['data'] - for prop in range(len(propList)): - if propList[prop]['flag'] == "1": - print(propList[prop]['formulaDesc'] + " " + ( - "未签到" if propList[prop]['flag'] == "0" else "已签到") + "签到奖励 " + propList[prop]['paramNo']) - if propList[prop]['flag'] == "0": - json = { - "pageName": "AddSignSvmInfo", - "formName": "addForm", - 'orderNo': propList[prop]['orderNo'], - 'paramNo': propList[prop]['paramNo'], - 'cateId': propList[prop]['cateId'], - 'memberId': mycookies[i], - 'memberName': "JDWXX", - } - jf = getApiBody('https://member.kwwblcj.com/member/api/submit/?userKeys=v1.0', json) - print(jf['msg']) - break - print("【任务】") - res = getApi( - 'https://member.kwwblcj.com/member/api/list/?userKeys=v1.0&pageName=select-task-list&formName=searchForm&memberId=' + - mycookies[i], headers) - propList = res['rows'] - for prop in range(len(propList)): - print(propList[prop]['taskTitle'] + " " + "奖励积分:" + propList[prop]['rewardScore'] + " -> " + ( - "待完成" if propList[prop]['complete'] == '0' else "已完成")) - if propList[prop]['taskTitle'] == "开启签到提醒" and propList[prop]['complete'] == "0": - print("【开启签到提醒】") - jf = getApi( - 'https://member.kwwblcj.com/member/api/list/?userKeys=v1.0&pageName=setOpenSignTaskFlag&formName=addForm&memberId=' + - mycookies[i] + '&userCname=JDWXX&openId=o_V6_5Yo3mET81MVAQw4yYebL3zE', headers) - print('完成' if jf['rows'][0] == 'T' else '失败,去手动完成任务') - jf = getApi( - 'https://member.kwwblcj.com/member/api/list/?userKeys=v1.0&pageName=setOpenSignTaskFlag&formName=addForm&memberId=' + - mycookies[i] + '&userCname=JDWXX&openId=0', headers) - print('完成' if jf['rows'][0] == 'T' else '失败,去手动完成任务') - if propList[prop]['taskTitle'] == "订阅活动通知" and propList[prop]['complete'] == "0": - print("【订阅活动通知】") - jf = getApi( - 'https://member.kwwblcj.com/member/api/list/?userKeys=v1.0&pageName=setOpenSubscribeTaskFlag&formName=addForm&memberId=' + - mycookies[i] + '&userCname=JDWXX&openId=o_V6_5Yo3mET81MVAQw4yYebL3zE', headers) - print('完成' if jf['rows'][0] == 'T' else '失败,去手动完成任务') - jf = getApi( - 'https://member.kwwblcj.com/member/api/list/?userKeys=v1.0&pageName=setOpenSubscribeTaskFlag&formName=addForm&memberId=' + - mycookies[i] + '&userCname=JDWXX&openId=0', headers) - print('完成' if jf['rows'][0] == 'T' else '失败,去手动完成任务') - print("【每日阅读】") - jf = getApi( - 'https://member.kwwblcj.com/member/api/list/?userKeys=v1.0&pageName=setNewsReadTaskFlag&formName=addForm&memberId=' + - mycookies[i] + '&userCname=JDWXX&articleTitle=undefined', headers) - print("阅读日期:" + jf['rows'][0]) - print("【收青果】") - jf = getApi( - 'https://member.kwwblcj.com/member/api/list/?userKeys=v1.0&pageName=activeTaskFlag&formName=editForm&memberId=' + - mycookies[i] + '&userCname=JDWXX', headers) - print("收青果日期:" + jf['rows'][0]) - time.sleep(1) - print("【海岛游乐场】") - url = getChangeCKUrl(mycookies[i]) - ck = getCookie(url) - for x in range(0,3): - key = getkey(ck) - hdoder,hdstartid = haidaostart(ck) - if hdstartid != None and hdoder != None: - haidaogetOrderStatus(ck,hdstartid,hdoder) - haidaostartRound(ck,hdstartid,"1") - time.sleep(60) - haidaosubmit(ck,"5",hdstartid,"5","1",key) - haidaoddrw(ck,hdstartid,"1") - haidaostartRound(ck,hdstartid,"2") - time.sleep(60) - haidaosubmit(ck,"10",hdstartid,"15","2",key) - haidaoddrw(ck,hdstartid,"2") - haidaostartRound(ck,hdstartid,"3") - time.sleep(60) - haidaosubmit(ck,"15",hdstartid,"30","3",key) - haidaoddrw(ck,hdstartid,"3")