ios_rule_script/script/obsolete/10010/unicom_signin.min.js

1 line
37 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

const getLotteryCookieRegex=/^https?:\/\/m\.client\.10010\.com\/dailylottery\/static\/(integral|doubleball)\/firstpage/,unicomCookieKey="unicom_user_cookie",mobileKey="unicom_mobile",encryptMobileKey="unicom_encrypt_mobile",cityCodeKey="city_code",scriptName="中国联通";let magicJS=MagicJS("中国联通","DEBUG");function UserLogin(cookie,encryptMobile){return new Promise(resolve=>{if(cookie){let options={url:"http://m.client.10010.com/dailylottery/static/textdl/userLogin?flag=1",headers:{Accept:"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8","Accept-Encoding":"gzip, deflate","Accept-Language":"zh-cn",Connection:"close",Cookie:cookie,Host:"m.client.10010.com","Upgrade-Insecure-Requests":"1","User-Agent":"Mozilla/5.0 (iPhone; CPU iPhone OS 13_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 unicom{version:iphone_c@6.0201}{systemVersion:dis}"}};magicJS.get(options,(err,resp,data)=>{err?(magicJS.logInfo("用户登录失败http请求异常"+err),resolve([!1,"用户登录失败"])):data.indexOf(encryptMobile)>=0?(magicJS.logInfo("用户登录成功"),resolve([!0,"用户登录成功"])):data.indexOf("请稍后重试")>=0?(magicJS.logInfo("用户登录失败"),resolve([!1,"用户登录失败"])):(magicJS.logInfo("用户登录失败,接口响应不合法:"+data),resolve([!1,"用户登录失败"]))})}else resolve([!1,"请先获取token再登录"]),magicJS.logInfo("请先获取cookie再刷新token")})}function AppSignin(cookie){return new Promise((resolve,reject)=>{let options={url:"https://act.10010.com/SigninApp/signin/daySign?vesion=0.5630763707346611",headers:{Accept:"application/json, text/plain, */*","Accept-Encoding":"gzip, deflate, br","Accept-Language":"zh-cn",Connection:"keep-alive",Cookie:cookie,Host:"act.10010.com",Origin:"https://img.client.10010.com",Referer:"https://img.client.10010.com/SigininApp/index.html","User-Agent":"Mozilla/5.0 (iPhone; CPU iPhone OS 13_3_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 unicom{version:iphone_c@7.0402}{systemVersion:dis}{yw_code:}",savedata:"false"},body:""};magicJS.post(options,(err,resp,data)=>{if(err)magicJS.logError("签到失败http请求异常"+err),magicJS.notify("中国联通","","❌签到失败http请求异常"),reject("签到失败");else{let obj={};try{obj=JSON.parse(data),"0000"===obj.status?(magicJS.logInfo("签到成功"),resolve([!0,"签到成功",obj.data.prizeCount,obj.data.growValue,obj.data.flowerCount])):"0001"==obj.status?(magicJS.logWarning("尚未登录"),resolve([!1,"尚未登录",null,null,null])):"0002"==obj.status?(magicJS.logWarning("重复签到"),resolve([!0,"重复签到",null,null,null])):(magicJS.logWarning("签到异常,接口返回数据不合法。"+data),reject("签到异常"))}catch(err){magicJS.logError("签到异常,代码执行错误:"+err),reject("执行错误")}}})})}function DoubleAdPlaying(cookie,mobile){let options={url:"https://act.10010.com/SigninApp/signin/bannerAdPlayingLogo",headers:{Accept:"application/json, text/plain, */*","Accept-Encoding":"gzip, deflate, br","Accept-Language":"zh-cn",Connection:"keep-alive","Content-Type":"application/x-www-form-urlencoded",Cookie:cookie,Host:"act.10010.com",Origin:"https://img.client.10010.com",Referer:`https://img.client.10010.com/SigininApp/index.html?version=iphone_c@8.0200&desmobile=${mobile}`,"User-Agent":"Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 unicom{version:iphone_c@8.0200}{systemVersion:dis}{yw_code:}"},body:{orderId:"24F051D47389A008A1161E17F92438EC",imei:"455baba549deb814f6c75395fbe2403f855aa6dbedb50bc2acbff0ef4aab96f9"}};return new Promise((resolve,reject)=>{magicJS.post(options,(err,resp,data)=>{if(err)magicJS.logError("签到失败http请求异常"+err),reject("积分翻倍失败");else{let obj={};try{magicJS.logDebug(`积分翻倍,接口响应:${data}`),obj=JSON.parse(data),"0000"===obj.status&&obj.data.returnStr.indexOf("失败")>=0?(magicJS.logWarning(`积分翻倍失败:${obj.data.returnStr}`),reject("积分翻倍失败")):"0000"===obj.status?(magicJS.logInfo("积分翻倍成功"),resolve(obj.data.prizeCount)):"0010"===obj.status?(magicJS.logWarning("积分重复翻倍"),resolve(0)):(magicJS.logWarning(`积分翻倍失败,接口返回数据不合法:\n${data}`),reject("积分翻倍失败"))}catch(err){magicJS.logError("积分翻倍失败"+err),reject("积分翻倍失败")}}})})}function GetContinueCount(cookie){return new Promise((resolve,reject)=>{let options={url:"https://act.10010.com/SigninApp/signin/getContinuCount?vesion=0.35425159102265746",headers:{Accept:"application/json, text/javascript, */*; q=0.01","Accept-Encoding":"gzip, deflate, br","Accept-Language":"zh-cn",Connection:"keep-alive",Cookie:cookie,Host:"act.10010.com",Origin:"https://act.10010.com",Referer:"https://act.10010.com/SigninApp/signin/querySigninActivity.htm?version=iphone_c@6.0201","User-Agent":"Mozilla/5.0 (iPhone; CPU iPhone OS 13_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148","X-Requested-With":"XMLHttpRequest",savedata:"false"},body:""};magicJS.post(options,(err,resp,data)=>{if(err)magicJS.logError("获取连续签到次数失败http请求异常"+err),reject("?");else if(data){let number="?";/^\d+$/.test(data)?number=data:magicJS.logWarning("获取连续签到次数失败,接口响应不合法。"+data),resolve(number)}else magicJS.logWarning("获取连续签到次数异常,没有获取到响应体。"),reject("?")})})}function GetUserInfo(cookie,mobile){let options={url:`https://m.client.10010.com/mobileService/home/queryUserInfoSeven.htm?version=iphone_c@7.0402&desmobiel=${mobile}&showType=3`,headers:{Accept:"*/*","Accept-Encoding":"gzip, deflate, br","Accept-Language":"zh-cn",Connection:"close",Cookie:cookie,Host:"m.client.10010.com","User-Agent":"ChinaUnicom4.x/240 CFNetwork/1121.2.2 Darwin/19.3.0"}};return new Promise((resolve,reject)=>{magicJS.get(options,(err,resp,data)=>{if(err)magicJS.logError("获取用户信息失败http请求异常"+err),reject({});else{let result={};try{let obj=JSON.parse(data);obj.hasOwnProperty("data")&&obj.data.hasOwnProperty("dataList")?(obj.data.dataList.forEach(element=>{"flow,fee,voice,point".indexOf(element.type)>=0&&("-"!=element.number?result[element.type]=`${element.remainTitle}${element.number}${element.unit}`:(magicJS.logWarning("获取用户信息异常:"+data),reject("获取用户信息异常")))}),magicJS.logInfo("获取用户信息:"+JSON.stringify(result)),resolve(result)):(magicJS.logWarning("获取用户信息异常,接口响应不合法:"+data),reject("获取用户信息接口响应异常"))}catch(err){magicJS.logError(`获取用户信息失败,代码执行异常:${err},接口返回:${data}`),reject("获取用户信息执行异常")}}})})}function GetMeituanCoupon(cookie){let options={url:"https://m.client.10010.com/welfare-mall-front/mobile/api/bj2402/v1?reqdata=%7B%22saleTypes%22%3A%22TY%22%2C%22amount%22%3A0%2C%22goodsId%22%3A%228a29ac8a72be05a70172c067722600b8%22%2C%22payWay%22%3A%22%22%2C%22imei%22%3A%22%22%2C%22proFlag%22%3A%22%22%2C%22points%22%3A0%2C%22scene%22%3A%22%22%2C%22promoterCode%22%3A%22%22%7D",headers:{Accept:"application/json, text/plain, */*","Accept-Encoding":"gzip, deflate, br","Accept-Language":"zh-cn",Connection:"keep-alive",Cookie:cookie,Host:"m.client.10010.com",Origin:"https://img.client.10010.com",Referer:"https://img.client.10010.com/superFriday/","User-Agent":"Mozilla/5.0 (iPhone; CPU iPhone OS 14_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 unicom{version:iphone_c@8.0004}{systemVersion:dis}{yw_code:}"}};return new Promise((resolve,reject)=>{magicJS.get(options,(err,resp,data)=>{if(err)magicJS.logError("领取美团外卖优惠券异常http请求异常"+err),reject("美团外卖优惠券:请求异常");else{let obj={};try{magicJS.logDebug(`领取美团外卖优惠券,接口返回:\n${data}`),obj=JSON.parse(data),obj.hasOwnProperty("code")?"0"==obj.code&&"下单成功"==obj.msg?(magicJS.logInfo("领取美团外卖优惠券,领取成功"),resolve("美团外卖优惠券:领取成功")):"1"==obj.code?(magicJS.logWarning("领取美团外卖优惠券,达到领取上限"),resolve("美团外卖优惠券:达到领取上限")):"200"==obj.code&&obj.msg.indexOf("太火爆")>=0?(magicJS.logWarning("领取美团外卖优惠券,活动太火爆"),resolve("美团外卖优惠券:活动太火爆领取失败")):(magicJS.logWarning("领取美团外卖优惠券,接口响应不合法:"+data),reject("接口响应不合法")):(magicJS.logWarning("领取美团外卖优惠券,接口响应不合法:"+data),reject("美团外卖优惠券:接口响应不合法"))}catch(err){magicJS.logError("领取美团外卖优惠券,代码执行异常:"+err),reject("美团外卖优惠券:代码执行异常")}}})})}function GetSigninTasks(cookie,mobile){let options={url:"https://act.10010.com/SigninApp/doTask/getTaskInfo",headers:{Accept:"application/json, text/plain, */*","Accept-Encoding":"gzip, deflate, br","Accept-Language":"zh-cn",Connection:"keep-alive","Content-Type":"application/x-www-form-urlencoded",Cookie:cookie,Host:"act.10010.com",Origin:"https://img.client.10010.com",Referer:`https://img.client.10010.com/SigininApp/index.html?version=iphone_c@8.0200&desmobile=${mobile}`,"User-Agent":"Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 unicom{version:iphone_c@8.0200}{systemVersion:dis}{yw_code:}"},body:""};return new Promise((resolve,reject)=>{magicJS.post(options,(err,resp,data)=>{if(err)magicJS.logError("获取签到任务列表失败http请求异常"+err),reject();else{magicJS.logDebug("获取签到任务列表,接口响应数据:"+data);let obj=JSON.parse(data);"0000"===obj.status?(magicJS.logInfo("获取签到任务成功"),resolve()):"9999"===obj.status?(magicJS.logError(obj.msg),reject(obj.msg)):(magicJS.logWarning(`获取签到任务失败,接口响应不合法:\n${data}`),reject("接口响应不合法"))}})}).catch(err=>{magicJS.logError(err)})}function FinishVideo(cookie,mobile){let options={url:"https://act.10010.com/SigninApp/doTask/finishVideo",headers:{Accept:"application/json, text/plain, */*","Accept-Encoding":"gzip, deflate, br","Accept-Language":"zh-cn",Connection:"keep-alive","Content-Type":"application/x-www-form-urlencoded",Cookie:cookie,Host:"act.10010.com",Origin:"https://img.client.10010.com",Referer:`https://img.client.10010.com/SigininApp/index.html?version=iphone_c@8.0200&desmobile=${mobile}`,"User-Agent":"Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 unicom{version:iphone_c@8.0200}{systemVersion:dis}{yw_code:}"},body:{orderId:"3E28C3BFBEB825F5FCD2F01DF9DB5141",imei:"5d58683de1d5d3b383a2e228cff935028a2399195f343cfe122eab1ddf90ee17"}};return new Promise((resolve,reject)=>{magicJS.post(options,(err,resp,data)=>{if(err)magicJS.logError("完成观看视频任务失败http请求异常"+err),reject();else{magicJS.logDebug("观看视频任务,接口响应数据:"+data);let obj=JSON.parse(data);"0000"===obj.status&&resolve(),"9999"===obj.status?(magicJS.logWarning(`观看视频任务失败,异常信息:\n${obj.msg}`),reject(obj.msg)):(magicJS.logWarning(`观看视频任务失败,接口响应不合法:\n${data}`),reject("接口响应不合法"))}})})}function GetSigninTaskPirze(cookie,mobile){let options={url:"https://act.10010.com/SigninApp/doTask/getPrize",headers:{Accept:"application/json, text/plain, */*","Accept-Encoding":"gzip, deflate, br","Accept-Language":"zh-cn",Connection:"keep-alive","Content-Type":"application/x-www-form-urlencoded",Cookie:cookie,Host:"act.10010.com",Origin:"https://img.client.10010.com",Referer:`https://img.client.10010.com/SigininApp/index.html?version=iphone_c@8.0200&desmobile=${mobile}`,"User-Agent":"Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 unicom{version:iphone_c@8.0200}{systemVersion:dis}{yw_code:}"},body:""};return new Promise((resolve,reject)=>{magicJS.post(options,(err,resp,data)=>{if(err)magicJS.logError("领取签到任务奖励失败http请求异常"+err),reject();else{magicJS.logDebug("领取签到任务奖励,接口响应数据:\n"+data);let obj=JSON.parse(data);"0000"===obj.status&&obj.data.returnStr.indexOf("网络拥堵")<0?resolve(obj.data.returnStr):"0000"===obj.status&&obj.data.returnStr.indexOf("网络拥堵")>=0?(magicJS.logDebug(`领取签到任务奖励失败,网络拥堵:\n${data}`),reject("网络拥堵")):(magicJS.logWarning(`领取签到任务奖励失败,接口响应不合法:\n${data}`),reject("接口响应不合法"))}})})}function GetLotteryCount(cookie,encryptMobile){let options={url:"http://m.client.10010.com/dailylottery/static/active/findActivityInfojifen?areaCode=031&groupByType=&mobile=",headers:{Accept:"*/*","Accept-Encoding":"gzip, deflate","Accept-Language":"zh-cn",Connection:"close",Cookie:cookie,Host:"m.client.10010.com",Origin:"https://m.client.10010.com",Referer:`http://m.client.10010.com/dailylottery/static/integral/firstpage?encryptmobile=${encryptMobile}`,"User-Agent":"Mozilla/5.0 (iPhone; CPU iPhone OS 13_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148","X-Requested-With":"XMLHttpRequest",savedata:"false"},body:""};return new Promise(resolve=>{magicJS.get(options,(err,resp,data)=>{if(err)magicJS.logError("获取抽奖次数失败http请求异常"+err),resolve(0);else try{let obj=JSON.parse(data);if(obj.hasOwnProperty("acFrequency")){let lotteryCount=Number(obj.acFrequency.totalAcFreq);magicJS.logInfo("获取抽奖次数:"+lotteryCount),resolve(lotteryCount)}else magicJS.logWarning("获取抽奖次数异常,接口响应不合法:"+data),resolve(0)}catch(err){magicJS.logError(`获取抽奖次数异常,代码执行异常:${err},接口响应:${data}`),resolve(0)}})})}function GetLotteryCountNewVersion(cookie,encryptMobile,cityCode){let options={url:`http://m.client.10010.com/dailylottery/static/active/findActivityInfo?areaCode=${cityCode}&groupByType=&mobile=${encryptMobile}`,headers:{Accept:"*/*","Accept-Encoding":"gzip, deflate","Accept-Language":"zh-cn",Connection:"close",Cookie:cookie,Host:"m.client.10010.com",Origin:"https://m.client.10010.com",Referer:"http://m.client.10010.com/dailylottery/static/integral/firstpage?encryptmobile=","User-Agent":"Mozilla/5.0 (iPhone; CPU iPhone OS 13_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148","X-Requested-With":"XMLHttpRequest",savedata:"false"},body:""};return new Promise(resolve=>{magicJS.get(options,(err,resp,data)=>{if(err)magicJS.logError("获取新版抽奖次数失败http请求异常"+err),resolve(0);else{let obj=JSON.parse(data);if(obj.hasOwnProperty("acFrequency")){let lotteryCount=Number(obj.acFrequency.totalAcFreq);magicJS.logInfo("获取新版抽奖次数:"+lotteryCount),resolve(lotteryCount)}else magicJS.logWarning("获取新版抽奖次数异常,接口响应不合法:"+data),resolve(0)}})})}function DailyLottery(cookie,encryptMobile){let options={url:`http://m.client.10010.com/dailylottery/static/integral/choujiang?usernumberofjsp=${encryptMobile}`,headers:{Accept:"application/json, text/javascript, */*; q=0.01","Accept-Encoding":"gzip, deflate","Accept-Language":"zh-cn",Connection:"close","Content-Type":"application/x-www-form-urlencoded; charset=utf-8",Cookie:cookie,Host:"m.client.10010.com",Origin:"https://m.client.10010.com",Referer:`http://m.client.10010.com/dailylottery/static/integral/firstpage?encryptmobile=${encryptMobile}`,"User-Agent":"Mozilla/5.0 (iPhone; CPU iPhone OS 13_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148","X-Requested-With":"XMLHttpRequest",savedata:"false"},body:""};return new Promise(resolve=>{magicJS.post(options,(err,resp,data)=>{if(err)magicJS.logError("每日免费抽奖http请求异常"+err),resolve("请求异常");else{magicJS.logDebug("每日免费抽奖,接口响应数据:"+data);let obj=JSON.parse(data);obj.hasOwnProperty("Rsptype")&&"6666"==obj.Rsptype?resolve("次数不足"):obj.hasOwnProperty("Rsptype")&&"3333"==obj.Rsptype?resolve("请求无效"):obj.hasOwnProperty("RspMsg")?resolve(obj.RspMsg):(magicJS.logWarning("每日免费抽奖,接口响应不合法:"+data),resolve("接口响应不合法"))}})})}function DailyLotteryNewVersion(cookie,encryptMobile){let options={url:`https://m.client.10010.com/dailylottery/static/doubleball/choujiang?usernumberofjsp=${encryptMobile}`,headers:{Accept:"application/json, text/javascript, */*; q=0.01","Accept-Encoding":"gzip, deflate","Accept-Language":"zh-cn",Connection:"close","Content-Type":"application/x-www-form-urlencoded; charset=utf-8",Cookie:cookie,Host:"m.client.10010.com",Origin:"https://m.client.10010.com",Referer:`http://m.client.10010.com/dailylottery/static/integral/firstpage?encryptmobile=${encryptMobile}`,"User-Agent":"Mozilla/5.0 (iPhone; CPU iPhone OS 13_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148","X-Requested-With":"XMLHttpRequest",savedata:"false"},body:""};return new Promise(resolve=>{magicJS.post(options,(err,resp,data)=>{if(err)magicJS.logError("新版每日免费抽奖http请求异常"+err),resolve("请求异常");else{magicJS.logDebug("新版每日免费抽奖,接口响应数据:"+data);let obj=JSON.parse(data);obj.hasOwnProperty("Rsptype")&&"6666"==obj.Rsptype?resolve("次数不足"):obj.hasOwnProperty("Rsptype")&&"3333"==obj.Rsptype?resolve("请求无效"):obj.hasOwnProperty("RspMsg")?resolve(obj.RspMsg):(magicJS.logWarning("新版每日免费抽奖,接口响应不合法:"+data),resolve("接口响应不合法"))}})})}async function StartDailyLottery(cookie,encryptMobile){let lotteryCount=await GetLotteryCount(cookie,encryptMobile),lotteryList="";if(lotteryCount>0)for(let i=0;i<lotteryCount;i++)magicJS.logInfo(`${i+1}次免费抽奖开始`),lotteryList&&(lotteryList+="\n"),lotteryList+=`${i+1}次抽奖:${await DailyLottery(cookie,encryptMobile)}`;return[lotteryCount,lotteryList]}async function StartDailyLotteryNewVersion(cookie,encryptMobile,cityCode,lotteryCount){let lotteryNewVersionCount=await GetLotteryCountNewVersion(cookie,encryptMobile,cityCode),lotteryNewVersionList="";if(lotteryNewVersionCount>0)for(let i=0;i<lotteryNewVersionCount;i++)magicJS.logInfo(`新版第${i+1}次免费抽奖开始`),lotteryNewVersionList&&(lotteryNewVersionList+="\n"),lotteryNewVersionList+=`${lotteryCount+i+1}次抽奖:${await DailyLotteryNewVersion(cookie,encryptMobile)}`;return[lotteryNewVersionCount,lotteryNewVersionList]}function MagicJS(scriptName="MagicJS",logLevel="INFO"){return new class{constructor(){if(this.version="2.2.3.2",this.scriptName=scriptName,this.logLevels={DEBUG:5,INFO:4,NOTIFY:3,WARNING:2,ERROR:1,CRITICAL:0,NONE:-1},this.isLoon="undefined"!=typeof $loon,this.isQuanX="undefined"!=typeof $task,this.isJSBox="undefined"!=typeof $drive,this.isNode="undefined"!=typeof module&&!this.isJSBox,this.isSurge="undefined"!=typeof $httpClient&&!this.isLoon,this.node={request:void 0,fs:void 0,data:{}},this.iOSUserAgent="Mozilla/5.0 (iPhone; CPU iPhone OS 13_3_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.5 Mobile/15E148 Safari/604.1",this.pcUserAgent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36 Edg/84.0.522.59",this.logLevel=logLevel,this._barkUrl="",this.isNode){this.node.fs=require("fs"),this.node.request=require("request");try{this.node.fs.accessSync("./magic.json",this.node.fs.constants.R_OK|this.node.fs.constants.W_OK)}catch(err){this.node.fs.writeFileSync("./magic.json","{}",{encoding:"utf8"})}this.node.data=require("./magic.json")}else this.isJSBox&&($file.exists("drive://MagicJS")||$file.mkdir("drive://MagicJS"),$file.exists("drive://MagicJS/magic.json")||$file.write({data:$data({string:"{}"}),path:"drive://MagicJS/magic.json"}))}set barkUrl(url){this._barkUrl=url.replace(/\/+$/g,"")}set logLevel(level){this._logLevel="string"==typeof level?level.toUpperCase():"DEBUG"}get logLevel(){return this._logLevel}get isRequest(){return"undefined"!=typeof $request&&"undefined"==typeof $response}get isResponse(){return"undefined"!=typeof $response}get request(){return"undefined"!=typeof $request?$request:void 0}get response(){return"undefined"!=typeof $response?($response.hasOwnProperty("status")&&($response.statusCode=$response.status),$response.hasOwnProperty("statusCode")&&($response.status=$response.statusCode),$response):void 0}get platform(){return this.isSurge?"Surge":this.isQuanX?"Quantumult X":this.isLoon?"Loon":this.isJSBox?"JSBox":this.isNode?"Node.js":"unknown"}read(key,session=""){let val="";this.isSurge||this.isLoon?val=$persistentStore.read(key):this.isQuanX?val=$prefs.valueForKey(key):this.isNode?val=this.node.data:this.isJSBox&&(val=$file.read("drive://MagicJS/magic.json").string);try{this.isNode&&(val=val[key]),this.isJSBox&&(val=JSON.parse(val)[key]),session&&("string"==typeof val&&(val=JSON.parse(val)),val=val&&"object"==typeof val?val[session]:null)}catch(err){this.logError(err),val=session?{}:null,this.del(key)}void 0===val&&(val=null);try{val&&"string"==typeof val&&(val=JSON.parse(val))}catch(err){}return this.logDebug(`READ DATA [${key}]${session?`[${session}]`:""}(${typeof val})\n${JSON.stringify(val)}`),val}write(key,val,session=""){let data=session?{}:"";if(session&&(this.isSurge||this.isLoon)?data=$persistentStore.read(key):session&&this.isQuanX?data=$prefs.valueForKey(key):this.isNode?data=this.node.data:this.isJSBox&&(data=JSON.parse($file.read("drive://MagicJS/magic.json").string)),session){try{"string"==typeof data&&(data=JSON.parse(data)),data="object"==typeof data&&data?data:{}}catch(err){this.logError(err),this.del(key),data={}}this.isJSBox||this.isNode?(data.hasOwnProperty(key)&&"object"==typeof data[key]||(data[key]={}),data[key].hasOwnProperty(session)||(data[key][session]=null),void 0===val?delete data[key][session]:data[key][session]=val):void 0===val?delete data[session]:data[session]=val}else this.isNode||this.isJSBox?void 0===val?delete data[key]:data[key]=val:data=void 0===val?null:val;"object"==typeof data&&(data=JSON.stringify(data)),this.isSurge||this.isLoon?$persistentStore.write(data,key):this.isQuanX?$prefs.setValueForKey(data,key):this.isNode?this.node.fs.writeFileSync("./magic.json",data):this.isJSBox&&$file.write({data:$data({string:data}),path:"drive://MagicJS/magic.json"}),this.logDebug(`WRITE DATA [${key}]${session?`[${session}]`:""}(${typeof val})\n${JSON.stringify(val)}`)}del(key,session=""){this.logDebug(`DELETE KEY [${key}]${session?`[${session}]`:""}`),this.write(key,null,session)}notify(title=this.scriptName,subTitle="",body="",opts=""){let convertOptions;if(opts=(_opts=>{let newOpts={};return"string"==typeof _opts?this.isLoon?newOpts={openUrl:_opts}:this.isQuanX&&(newOpts={"open-url":_opts}):"object"==typeof _opts&&(this.isLoon?(newOpts.openUrl=_opts["open-url"]?_opts["open-url"]:"",newOpts.mediaUrl=_opts["media-url"]?_opts["media-url"]:""):this.isQuanX&&(newOpts=_opts["open-url"]||_opts["media-url"]?_opts:{})),newOpts})(opts),1==arguments.length&&(title=this.scriptName,subTitle="",body=arguments[0]),this.logNotify(`title:${title}\nsubTitle:${subTitle}\nbody:${body}\noptions:${"object"==typeof opts?JSON.stringify(opts):opts}`),this.isSurge)$notification.post(title,subTitle,body);else if(this.isLoon)opts?$notification.post(title,subTitle,body,opts):$notification.post(title,subTitle,body);else if(this.isQuanX)$notify(title,subTitle,body,opts);else if(this.isNode){if(this._barkUrl){let content=encodeURI(`${title}/${subTitle}\n${body}`);this.get(`${this._barkUrl}/${content}`,()=>{})}}else if(this.isJSBox){let push={title:title,body:subTitle?`${subTitle}\n${body}`:body};$push.schedule(push)}}log(msg,level="INFO"){this.logLevels[this._logLevel]<this.logLevels[level.toUpperCase()]||console.log(`[${level}] [${this.scriptName}]\n${msg}\n`)}logDebug(msg){this.log(msg,"DEBUG")}logInfo(msg){this.log(msg,"INFO")}logNotify(msg){this.log(msg,"NOTIFY")}logWarning(msg){this.log(msg,"WARNING")}logError(msg){this.log(msg,"ERROR")}logRetry(msg){this.log(msg,"RETRY")}adapterHttpOptions(options,method){let _options="object"==typeof options?Object.assign({},options):{url:options,headers:{}};_options.hasOwnProperty("header")&&!_options.hasOwnProperty("headers")&&(_options.headers=_options.header,delete _options.header);const headersMap={accept:"Accept","accept-ch":"Accept-CH","accept-charset":"Accept-Charset","accept-features":"Accept-Features","accept-encoding":"Accept-Encoding","accept-language":"Accept-Language","accept-ranges":"Accept-Ranges","access-control-allow-credentials":"Access-Control-Allow-Credentials","access-control-allow-origin":"Access-Control-Allow-Origin","access-control-allow-methods":"Access-Control-Allow-Methods","access-control-allow-headers":"Access-Control-Allow-Headers","access-control-max-age":"Access-Control-Max-Age","access-control-expose-headers":"Access-Control-Expose-Headers","access-control-request-method":"Access-Control-Request-Method","access-control-request-headers":"Access-Control-Request-Headers",age:"Age",allow:"Allow",alternates:"Alternates",authorization:"Authorization","cache-control":"Cache-Control",connection:"Connection","content-encoding":"Content-Encoding","content-language":"Content-Language","content-length":"Content-Length","content-location":"Content-Location","content-md5":"Content-MD5","content-range":"Content-Range","content-security-policy":"Content-Security-Policy","content-type":"Content-Type",cookie:"Cookie",dnt:"DNT",date:"Date",etag:"ETag",expect:"Expect",expires:"Expires",from:"From",host:"Host","if-match":"If-Match","if-modified-since":"If-Modified-Since","if-none-match":"If-None-Match","if-range":"If-Range","if-unmodified-since":"If-Unmodified-Since","last-event-id":"Last-Event-ID","last-modified":"Last-Modified",link:"Link",location:"Location","max-forwards":"Max-Forwards",negotiate:"Negotiate",origin:"Origin",pragma:"Pragma","proxy-authenticate":"Proxy-Authenticate","proxy-authorization":"Proxy-Authorization",range:"Range",referer:"Referer","retry-after":"Retry-After","sec-websocket-extensions":"Sec-Websocket-Extensions","sec-websocket-key":"Sec-Websocket-Key","sec-websocket-origin":"Sec-Websocket-Origin","sec-websocket-protocol":"Sec-Websocket-Protocol","sec-websocket-version":"Sec-Websocket-Version",server:"Server","set-cookie":"Set-Cookie","set-cookie2":"Set-Cookie2","strict-transport-security":"Strict-Transport-Security",tcn:"TCN",te:"TE",trailer:"Trailer","transfer-encoding":"Transfer-Encoding",upgrade:"Upgrade","user-agent":"User-Agent","variant-vary":"Variant-Vary",vary:"Vary",via:"Via",warning:"Warning","www-authenticate":"WWW-Authenticate","x-content-duration":"X-Content-Duration","x-content-security-policy":"X-Content-Security-Policy","x-dnsprefetch-control":"X-DNSPrefetch-Control","x-frame-options":"X-Frame-Options","x-requested-with":"X-Requested-With","x-surge-skip-scripting":"X-Surge-Skip-Scripting"};if("object"==typeof _options.headers)for(let key in _options.headers)headersMap[key]&&(_options.headers[headersMap[key]]=_options.headers[key],delete _options.headers[key]);_options.headers&&"object"==typeof _options.headers&&_options.headers["User-Agent"]||(_options.headers&&"object"==typeof _options.headers||(_options.headers={}),this.isNode?_options.headers["User-Agent"]=this.pcUserAgent:_options.headers["User-Agent"]=this.iOSUserAgent);let skipScripting=!1;if(("object"==typeof _options.opts&&(!0===_options.opts.hints||!0===_options.opts["Skip-Scripting"])||"object"==typeof _options.headers&&!0===_options.headers["X-Surge-Skip-Scripting"])&&(skipScripting=!0),skipScripting||(this.isSurge?_options.headers["X-Surge-Skip-Scripting"]=!1:this.isLoon?_options.headers["X-Requested-With"]="XMLHttpRequest":this.isQuanX&&("object"!=typeof _options.opts&&(_options.opts={}),_options.opts.hints=!1)),this.isSurge&&!skipScripting||delete _options.headers["X-Surge-Skip-Scripting"],!this.isQuanX&&_options.hasOwnProperty("opts")&&delete _options.opts,this.isQuanX&&_options.hasOwnProperty("opts")&&delete _options.opts["Skip-Scripting"],"GET"===method&&!this.isNode&&_options.body){let qs=Object.keys(_options.body).map(key=>void 0===_options.body?"":`${encodeURIComponent(key)}=${encodeURIComponent(_options.body[key])}`).join("&");_options.url.indexOf("?")<0&&(_options.url+="?"),_options.url.lastIndexOf("&")+1!=_options.url.length&&_options.url.lastIndexOf("?")+1!=_options.url.length&&(_options.url+="&"),_options.url+=qs,delete _options.body}return this.isQuanX?(_options.hasOwnProperty("body")&&"string"!=typeof _options.body&&(_options.body=JSON.stringify(_options.body)),_options.method=method):this.isNode?(delete _options.headers["Accept-Encoding"],"object"==typeof _options.body&&("GET"===method?(_options.qs=_options.body,delete _options.body):"POST"===method&&(_options.json=!0,_options.body=_options.body))):this.isJSBox&&(_options.header=_options.headers,delete _options.headers),_options}get(options,callback){let _options=this.adapterHttpOptions(options,"GET");if(this.logDebug(`HTTP GET: ${JSON.stringify(_options)}`),this.isSurge||this.isLoon)$httpClient.get(_options,callback);else if(this.isQuanX)$task.fetch(_options).then(resp=>{resp.status=resp.statusCode,callback(null,resp,resp.body)},reason=>callback(reason.error,null,null));else{if(this.isNode)return this.node.request.get(_options,callback);this.isJSBox&&(_options.handler=resp=>{let err=resp.error?JSON.stringify(resp.error):void 0,data="object"==typeof resp.data?JSON.stringify(resp.data):resp.data;callback(err,resp.response,data)},$http.get(_options))}}post(options,callback){let _options=this.adapterHttpOptions(options,"POST");if(this.logDebug(`HTTP POST: ${JSON.stringify(_options)}`),this.isSurge||this.isLoon)$httpClient.post(_options,callback);else if(this.isQuanX)$task.fetch(_options).then(resp=>{resp.status=resp.statusCode,callback(null,resp,resp.body)},reason=>{callback(reason.error,null,null)});else{if(this.isNode)return this.node.request.post(_options,callback);this.isJSBox&&(_options.handler=resp=>{let err=resp.error?JSON.stringify(resp.error):void 0,data="object"==typeof resp.data?JSON.stringify(resp.data):resp.data;callback(err,resp.response,data)},$http.post(_options))}}done(value={}){"undefined"!=typeof $done&&$done(value)}isToday(day){if(null==day)return!1;{let today=new Date;return"string"==typeof day&&(day=new Date(day)),today.getFullYear()==day.getFullYear()&&today.getMonth()==day.getMonth()&&today.getDay()==day.getDay()}}isNumber(val){return"NaN"!==parseFloat(val).toString()}attempt(promise,defaultValue=null){return promise.then(args=>[null,args]).catch(ex=>(this.logError(ex),[ex,defaultValue]))}retry(fn,retries=5,interval=0,callback=null){return(...args)=>new Promise((resolve,reject)=>{function _retry(...args){Promise.resolve().then(()=>fn.apply(this,args)).then(result=>{"function"==typeof callback?Promise.resolve().then(()=>callback(result)).then(()=>{resolve(result)}).catch(ex=>{retries>=1?interval>0?setTimeout(()=>_retry.apply(this,args),interval):_retry.apply(this,args):reject(ex),retries--}):resolve(result)}).catch(ex=>{this.logRetry(ex),retries>=1&&interval>0?setTimeout(()=>_retry.apply(this,args),interval):retries>=1?_retry.apply(this,args):reject(ex),retries--})}_retry.apply(this,args)})}formatTime(time,fmt="yyyy-MM-dd hh:mm:ss"){var o={"M+":time.getMonth()+1,"d+":time.getDate(),"h+":time.getHours(),"m+":time.getMinutes(),"s+":time.getSeconds(),"q+":Math.floor((time.getMonth()+3)/3),S:time.getMilliseconds()};/(y+)/.test(fmt)&&(fmt=fmt.replace(RegExp.$1,(time.getFullYear()+"").substr(4-RegExp.$1.length)));for(let k in o)new RegExp("("+k+")").test(fmt)&&(fmt=fmt.replace(RegExp.$1,1==RegExp.$1.length?o[k]:("00"+o[k]).substr((""+o[k]).length)));return fmt}now(){return this.formatTime(new Date,"yyyy-MM-dd hh:mm:ss")}today(){return this.formatTime(new Date,"yyyy-MM-dd")}sleep(time){return new Promise(resolve=>setTimeout(resolve,time))}}(scriptName)}magicJS.unifiedPushUrl=magicJS.read("unicom_unified_push_url")||magicJS.read("magicjs_unified_push_url"),(async()=>{if(magicJS.isRequest){if(getLotteryCookieRegex.test(magicJS.request.url))try{let cookie=magicJS.request.headers.Cookie,hisCookie=magicJS.read(unicomCookieKey),mobile01=/c_mobile=(\d{11})/.exec(cookie),mobile02=/mobileServiceAll=(\d{11})/.exec(cookie),mobile03=/u_account=(\d{11})/.exec(cookie),mobile04=/desmobile==(\d{11})/.exec(magicJS.request.headers.Referer),mobile="";mobile=mobile01?mobile01[1]:mobile02?mobile02[1]:mobile03?mobile03[1]:mobile04[1];let hisMobile=magicJS.read(mobileKey),encryptMobile=/encryptmobile=([a-zA-Z0-9]*)/.exec(magicJS.request.url)[1],hisEncryptMobile=magicJS.read(encryptMobileKey),cityCode=/city=(\d*)/.exec(magicJS.request.headers.Cookie)[1],hisCityCode=magicJS.read("city_code"),notifyContent="";magicJS.logInfo(`新的cookie${cookie}\n\n旧的cookie${hisCookie}`),magicJS.logInfo(`新的手机号:${mobile}\n旧的手机号:${hisMobile}`),magicJS.logInfo(`新的手机号密文:${encryptMobile}\n旧的手机号密文:${hisEncryptMobile}`),magicJS.logInfo(`新的城市代码:${cityCode}\n旧的城市代码:${hisCityCode}`),cookie!=hisCookie?(magicJS.write(unicomCookieKey,cookie),hisCookie?(magicJS.logInfo("更新联通cookie成功"+cookie),notifyContent+="🍩联通cookie:更新成功"):(magicJS.logInfo("首次获取联通cookie成功"+cookie),notifyContent+="🍩联通cookie:获取成功")):(magicJS.logInfo("联通cookie没有变化无需更新"),notifyContent+="🍩联通cookie:没有变化"),mobile!=hisMobile?(magicJS.write(mobileKey,mobile),notifyContent+=hisMobile?" 📱手机号:更新成功":" 📱手机号:获取成功"):(magicJS.logInfo("手机号码没有变化,无需更新"),notifyContent+=" 📱手机号:没有变化"),hisEncryptMobile!=encryptMobile?(magicJS.write(encryptMobileKey,encryptMobile),notifyContent+=hisEncryptMobile?"\n🗳手机号密文:更新成功":"\n🗳手机号密文:获取成功"):(magicJS.logInfo("手机号码密文没有变化,无需更新"),notifyContent+="\n🗳手机号密文:没有变化"),cityCode!=hisCityCode?(magicJS.write("city_code",cityCode),hisCityCode?(magicJS.logInfo("更新联通城市代码成功:"+cityCode),notifyContent+=" 🌃城市:更新成功"):(magicJS.logInfo("首次获取联通城市代码成功:"+cityCode),notifyContent+=" 🌃城市:获取成功")):(magicJS.logInfo("城市代码没有变化,无需更新"),notifyContent+=" 🌃城市:没有变化"),magicJS.notify("中国联通","",notifyContent)}catch(err){magicJS.logError(`获取联通手机营业厅Cookie出现异常异常信息${err}`)}}else{magicJS.logInfo("签到与抽奖开始执行!");let cookie=magicJS.read(unicomCookieKey),mobile=magicJS.read(mobileKey),encryptMobile=magicJS.read(encryptMobileKey),cityCode=magicJS.read("city_code");if(cookie)if(cookie.hasOwnProperty("default")||cookie.indexOf("default")>=0)magicJS.notify("❌新版签到需要重新获取Cookie\n请在App中搜索“天天抽奖”获取"),magicJS.read(unicomCookieKey,""),magicJS.read(mobileKey,""),magicJS.read(encryptMobileKey,""),magicJS.read("city_code","");else{let notifyTitle="中国联通",notifySubTtile="",notifyContent="",[errUserLogin,[loginResult,loginStr]=[!1,"用户登录失败"]]=await magicJS.attempt(magicJS.retry(UserLogin,5,1e3)(cookie,encryptMobile));if(errUserLogin||!1===loginResult)notifySubTtile="❌用户登录出现异常,请查阅日志!";else{let AppSigninPromise=magicJS.retry(AppSignin,10,100)(cookie),[,[signinResult,siginiResultStr,prizeCount,growthV,flowerCount]=[!1,"签到异常",null,null,null]]=await magicJS.attempt(AppSigninPromise);if(!0===signinResult){let doublePrizeCount=null;notifySubTtile=siginiResultStr,doublePrizeCount&&(prizeCount+=doublePrizeCount),prizeCount&&(notifyContent+=`积分+${prizeCount} `),growthV&&(notifyContent+=`成长值+${growthV} `),flowerCount&&(notifyContent+=`鲜花+${flowerCount} `)}let genContinueCountPromise=magicJS.retry(GetContinueCount,10,100)(cookie),[,contineCount]=await magicJS.attempt(genContinueCountPromise);contineCount&&(notifySubTtile+=` 连续签到${contineCount}`);let getUserInfoPromise=magicJS.retry(GetUserInfo,10,100)(cookie,mobile),[,userInfo]=await magicJS.attempt(getUserInfoPromise);if(userInfo&&userInfo.hasOwnProperty("flow")&&userInfo.hasOwnProperty("fee")){let userInfoStr=`${userInfo.flow} ${userInfo.fee}\n${userInfo.voice} ${userInfo.point}`;notifyContent+=notifyContent?`\n${userInfoStr}`:userInfoStr}let getMeituanCouponPromise=magicJS.retry(GetMeituanCoupon,3,100)(cookie),[,meituanResult=null]=await magicJS.attempt(getMeituanCouponPromise);meituanResult&&(notifyContent+=notifyContent?`\n${meituanResult}`:meituanResult);let[errLottery,[lotteryCount,lotteryResult]=[]]=await magicJS.attempt(StartDailyLottery(cookie,encryptMobile));errLottery&&magicJS.logError("旧版抽奖出现异常:"+errLottery);let[errLotteryNewVersion,[lotteryNewVersionCount,lotteryNewVersionResult]=[]]=await magicJS.attempt(StartDailyLotteryNewVersion(cookie,encryptMobile,cityCode,lotteryCount));errLotteryNewVersion&&magicJS.logError("新版抽奖出现异常:"+errLotteryNewVersion),lotteryResult&&(notifyContent+=notifyContent?`\n${lotteryResult}`:lotteryResult),lotteryNewVersionResult&&(notifyContent+=notifyContent?`\n${lotteryNewVersionResult}`:lotteryNewVersionResult)}magicJS.logInfo("签到与抽奖执行完毕!"),magicJS.notify(notifyTitle,notifySubTtile,notifyContent),magicJS.done()}else magicJS.logError("没有获取到联通手机营业厅Cookie请在App中搜索天天抽奖获取。"),magicJS.notify("❌没有获取到Cookie\n请在手机营业厅中搜索“天天抽奖”获取")}magicJS.done()})();