diff --git a/iqiyiRed.js b/iqiyiRed.js index 6de8ce2..69caa49 100644 --- a/iqiyiRed.js +++ b/iqiyiRed.js @@ -19,7 +19,7 @@ Bark服务端(默认官方):BARK_SERVER JsBox, Node.js用户获取Cookie说明: 与签到cookie兼容 若有签到ck 则无需再处理 方法一手机:开启抓包, 网页登录 https://m.iqiyi.com/user.html 返回抓包APP搜索URL关键字 apis/user/info.action 复制请求头中的Cookie字段填入以下脚本变量或环境变量中即可 -方法二 不限制: 网页打开 https://iqiyi.ruirui.fun/login 按提示进行扫码登录 将获取到的ck填入以下脚本变量或环境变量即可 青龙环境变量 IQIYI_COOKIE +方法二 不限制: 网页打开 https://iqiyi.ruirui.fun/login 按提示进行扫码登录 注意此二维码只有30秒有效期 如果你这边不太多设备登录 此方法获取的cookie有效期为三个月 将获取到的ck填入以下脚本变量或环境变量即可 青龙环境变量 IQIYI_COOKIE 方法三PC:网页登录 https://www.iqiyi.com 按F12控制台执行 console.log(document.cookie) 复制打印的Cookie填入以下脚本变量或环境变量中即可 */ @@ -33,8 +33,8 @@ var barkServer = ''; //Bark APP 通知服务端地址(默认官方) QuantumultX 远程脚本配置: ********************** [task_local] -# 爱奇艺会员签到 -0 9 * * * https://raw.githubusercontent.com/limoruirui/misaka/master/iqiyiRed.js +# 爱奇艺会员天数红包领取 +0 6 1,2 * * https://raw.githubusercontent.com/limoruirui/misaka/master/iqiyiRed.js [rewrite_local] # 获取Cookie ^https:\/\/passport\.iqiyi\.com\/apis\/user\/info\.action url script-request-header https://raw.githubusercontent.com/limoruirui/misaka/master/iqiyiRed.js @@ -44,7 +44,7 @@ hostname= passport.iqiyi.com Surge 4.2.0+ 脚本配置: ********************** [Script] -爱奇艺领取会员红包 = type=cron,cronexp=0 9 * * *,timeout=120,script-path=https://raw.githubusercontent.com/limoruirui/misaka/master/iqiyiRed.js +爱奇艺会员天数红包领取 = type=cron,cronexp=0 9 * * *,timeout=120,script-path=https://raw.githubusercontent.com/limoruirui/misaka/master/iqiyiRed.js 爱奇艺获取Cookie = type=http-request,pattern=^https:\/\/passport\.iqiyi\.com\/apis\/user\/info\.action,script-path=https://raw.githubusercontent.com/limoruirui/misaka/master/iqiyiRed.js [MITM] hostname= passport.iqiyi.com @@ -52,7 +52,7 @@ hostname= passport.iqiyi.com Loon 2.1.0+ 脚本配置: ************************ [Script] -# 爱奇艺领取会员红包 +# 爱奇艺会员天数红包领取 cron "0 9 * * *" script-path=https://raw.githubusercontent.com/limoruirui/misaka/master/iqiyiRed.js # 获取Cookie http-request ^https:\/\/passport\.iqiyi\.com\/apis\/user\/info\.action script-path=https://raw.githubusercontent.com/limoruirui/misaka/master/iqiyiRed.js @@ -83,11 +83,12 @@ var $nobyda = nobyda(); if (cookie.includes("P00001")) { P00001 = cookie.match(/P00001=(.*?);/)[1]; await login(); - if (new Date().getData == "1") { + if (new Date().getDate() === 1) { console.log("今天是1号,执行5级以上会员生成红包码,领取红包请在每个月1号之后再执行一次"); await genRedNo(); } else { await getRed(); + } const expires = $nobyda.expire ? $nobyda.expire.replace(/\u5230\u671f/, "") : "获取失败 ⚠️" if (!$nobyda.isNode) $nobyda.notify("爱奇艺", "到期时间: " + expires, pushMsg.join('\n')); @@ -102,22 +103,39 @@ var $nobyda = nobyda(); })().finally(() => { $nobyda.done(); }) -function genRedNo() { +function checkRedNo(redNo) { + return new Promise(resolve => { + var URL = { + url: 'https://act.vip.iqiyi.com/bonus/query/queryRed?redNo=' + redNo, + } + $nobyda.get(URL, function(error, response, data) { + var obj = JSON.parse(data); + const res = obj.code; + resolve(res); + }) + }) +} + +async function genRedNo() { return new Promise(resolve => { var URL = { url: 'https://act.vip.iqiyi.com/level-right/red/status?P00001=' + P00001, } - $nobyda.get(URL, function(error, response, data) { - const redNo = data.code === "A00000" ? data.data.redNo : " " + $nobyda.get(URL, async function(error, response, data) { + var obj = JSON.parse(data); + const redNo = obj.code === "A00000" ? obj.data[0].redNo : " " if (redNo) { $nobyda.redNo = redNo; console.log(`本次生成的红包码为${redNo},正在检测合法性......`); - result = await checkRedNo(redNo); + + var result = await checkRedNo(redNo); if (result === "A00000") { console.log("检测到本次生成的红包码合法,正在将其上传到数据库供大家领取"); - res = await postRedNo(redNo); + var res = await postRedNo(redNo); if (res === "success") { console.log("已将您的红包码提交到数据库"); + } else if (res === "repeat") { + console.log("您的红包码已在数据库中,请勿重复提交") } else { console.log("提交红包码失败,可能为服务器网络问题,请稍后重试"); } @@ -134,66 +152,68 @@ function genRedNo() { }) } -function checkRedNo(redNo) { - return new Promise(resolve => { - var URL = { - url: 'https://act.vip.iqiyi.com/bonus/query/queryRed?redNo=' + redNo, - } - $nobyda.get(URL, function(error, response, data) { - const res = data.code; - resolve(res); - }) - }) -} -function getRed() { - return new Promise(resolve => { - const timestamp = new Date().getTime(); - const redNoList = await getRedNo(); +async function getRed() { + const redNoList = await getRedNo(); + var j = 0; for (i=0;i=3) {break;} + } } +function exchange(redNo, j) { + return new Promise(resolve => { + const URL = { + url: `https://act.vip.iqiyi.com/bonus/api/grabRed?accountType=2&P00001=${P00001}&redNo=${redNo}`,} + $nobyda.get(URL, async function(error, response, data) { + var obj = JSON.parse(data); + if (obj.code === "A00000") { + const days = obj.data.receiveDays; + console.log(`领取成功,本次领取到${days}天`); + j++; + } else { + console.log(`领取失败,原因是${obj.msg}`); + } + if (!$nobyda.last) { + resolve(j); + } else { + resolve(); + } + }) + }) +} function postRedNo(redNo) { return new Promise(resolve => { var post_date = { - "redNo": redNo, + "RedNo": redNo, } var URL = { - url: "https://iqiyi.ruirui.fun/postRedNo", + url: "https://iqiyi.ruirui.fun/api/iqiyi/postRedNo", headers: { 'Content-Type':'application/json' }, body: JSON.stringify(post_date) } $nobyda.post(URL, function(error, response, data) { + console.log(response) if (response.statusCode === 200) { - var msg = data.data; + var obj = JSON.parse(data); + var msg = obj.data; resolve(msg)} else {resolve("error")} }) }) } -function getRedNo() { +async function getRedNo() { return new Promise(resolve => { var URL = { - url: 'https://iqiyi.ruirui.fun/getRedNo', + url: 'https://iqiyi.ruirui.fun/api/iqiyi/getRedNo', } $nobyda.get(URL, function(error, response, data) { - if (data.msg === "success") { - const redNoList = data.data; + var obj = JSON.parse(data); + if (obj.msg === "success") { + const redNoList = obj.data; resolve(redNoList); } else { console.log("服务器拒绝返回红包码") @@ -394,31 +414,5 @@ function nobyda() { } }; -function k(e, t) { - var a = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {} - , n = a.split - , c = void 0 === n ? "|" : n - , r = a.sort - , s = void 0 === r || r - , o = a.splitSecretKey - , i = void 0 !== o && o - , l = s ? Object.keys(t).sort() : Object.keys(t) - , u = l.map((function (e) { - return "".concat(e, "=").concat(t[e]) - } - )).join(c) + (i ? c : "") + e; - return md5(u) -} - // Modified from https://github.com/blueimp/JavaScript-MD5 function md5(string){function RotateLeft(lValue,iShiftBits){return(lValue<>>(32-iShiftBits))}function AddUnsigned(lX,lY){var lX4,lY4,lX8,lY8,lResult;lX8=(lX&0x80000000);lY8=(lY&0x80000000);lX4=(lX&0x40000000);lY4=(lY&0x40000000);lResult=(lX&0x3FFFFFFF)+(lY&0x3FFFFFFF);if(lX4&lY4){return(lResult^0x80000000^lX8^lY8)}if(lX4|lY4){if(lResult&0x40000000){return(lResult^0xC0000000^lX8^lY8)}else{return(lResult^0x40000000^lX8^lY8)}}else{return(lResult^lX8^lY8)}}function F(x,y,z){return(x&y)|((~x)&z)}function G(x,y,z){return(x&z)|(y&(~z))}function H(x,y,z){return(x^y^z)}function I(x,y,z){return(y^(x|(~z)))}function FF(a,b,c,d,x,s,ac){a=AddUnsigned(a,AddUnsigned(AddUnsigned(F(b,c,d),x),ac));return AddUnsigned(RotateLeft(a,s),b)};function GG(a,b,c,d,x,s,ac){a=AddUnsigned(a,AddUnsigned(AddUnsigned(G(b,c,d),x),ac));return AddUnsigned(RotateLeft(a,s),b)};function HH(a,b,c,d,x,s,ac){a=AddUnsigned(a,AddUnsigned(AddUnsigned(H(b,c,d),x),ac));return AddUnsigned(RotateLeft(a,s),b)};function II(a,b,c,d,x,s,ac){a=AddUnsigned(a,AddUnsigned(AddUnsigned(I(b,c,d),x),ac));return AddUnsigned(RotateLeft(a,s),b)};function ConvertToWordArray(string){var lWordCount;var lMessageLength=string.length;var lNumberOfWords_temp1=lMessageLength+8;var lNumberOfWords_temp2=(lNumberOfWords_temp1-(lNumberOfWords_temp1%64))/64;var lNumberOfWords=(lNumberOfWords_temp2+1)*16;var lWordArray=Array(lNumberOfWords-1);var lBytePosition=0;var lByteCount=0;while(lByteCount>>29;return lWordArray};function WordToHex(lValue){var WordToHexValue="",WordToHexValue_temp="",lByte,lCount;for(lCount=0;lCount<=3;lCount++){lByte=(lValue>>>(lCount*8))&255;WordToHexValue_temp="0"+lByte.toString(16);WordToHexValue=WordToHexValue+WordToHexValue_temp.substr(WordToHexValue_temp.length-2,2)}return WordToHexValue};function Utf8Encode(string){string=string.replace(/\r\n/g,"\n");var utftext="";for(var n=0;n127)&&(c<2048)){utftext+=String.fromCharCode((c>>6)|192);utftext+=String.fromCharCode((c&63)|128)}else{utftext+=String.fromCharCode((c>>12)|224);utftext+=String.fromCharCode(((c>>6)&63)|128);utftext+=String.fromCharCode((c&63)|128)}}return utftext};var x=Array();var k,AA,BB,CC,DD,a,b,c,d;var S11=7,S12=12,S13=17,S14=22;var S21=5,S22=9,S23=14,S24=20;var S31=4,S32=11,S33=16,S34=23;var S41=6,S42=10,S43=15,S44=21;string=Utf8Encode(string);x=ConvertToWordArray(string);a=0x67452301;b=0xEFCDAB89;c=0x98BADCFE;d=0x10325476;for(k=0;k 0 && void 0 !== arguments[0] ? arguments[0] : {} - , t = []; - return Object.keys(e).forEach((function (a) { - t.push("".concat(a, "=").concat(e[a])) - } - )), - t.join("&") -}