shawenguan 1 سال پیش
والد
کامیت
277e6350aa
1فایلهای تغییر یافته به همراه45 افزوده شده و 18 حذف شده
  1. 45 18
      Scripts/telecom/cloud189Helper.js

+ 45 - 18
Scripts/telecom/cloud189Helper.js

@@ -30,12 +30,20 @@ async function Main() {
         // let loginExtData = await login(username,password);
         let loginExtData = await wapLogin(username,password);
         if(!loginExtData){
-            // 尝试使用缓存数据来签到
-            loginExtData = magicJS.data.read(cloud189LoginDataKey, null, session);
-            magicJS.logger.info(`尝试使用缓存数据来签到`);
+            // // 尝试使用缓存数据来签到
+            // loginExtData = magicJS.data.read(cloud189LoginDataKey, null, session);
+            // magicJS.logger.info(`尝试使用缓存数据来签到`);
+            loginExtData = null;
+            magicJS.notification.appendNotifyInfo(`【${username}】登录失败`);
         }else{
-            magicJS.data.write(cloud189LoginDataKey, JSON.stringify(loginExtData), session);
-            magicJS.logger.info(`登录成功更新数据`);
+            if(loginData.cacheUse == 1){
+                // 尝试使用缓存数据来签到
+                loginExtData = magicJS.data.read(cloud189LoginDataKey, null, session);
+                magicJS.logger.info(`尝试使用缓存数据来签到`);
+            }else{
+                magicJS.data.write(cloud189LoginDataKey, JSON.stringify(loginExtData), session);
+                magicJS.logger.info(`登录成功更新数据`);
+            }
         }
         if(loginExtData){
             let signInRet = await signIn(loginExtData.lt);
@@ -96,7 +104,7 @@ async function getLoginJumpUrl(url){
             const htmlText = resp.body;
             try {
                 // magicJS.logger.info(`页面数据:${htmlText}`);
-                magicJS.logger.info(`响应头部:${JSON.stringify(resp.headers)}`);
+                // magicJS.logger.info(`响应头部:${JSON.stringify(resp.headers)}`);//无有用头部信息
                 let urlMatch = htmlText.match(/https?:\/\/[^\s'"]+/); // 正则表达式匹配
                 if(urlMatch){
                     resolve(urlMatch[0]);
@@ -134,7 +142,20 @@ async function getLoginAccoutUrl(url){
                 magicJS.logger.info(`响应头部:${JSON.stringify(resp.headers)}`);
                 let urlMatch = htmlText.match(/<a id="j-tab-login-link"[^>]*href="([^"]+)"/); // 正则表达式匹配
                 if(urlMatch){
-                    resolve(urlMatch[1]);
+                    let cookieData = magicJS.parseSetCookies(resp.headers['Set-Cookie'] || '');
+                    let cookieDict = {};
+                    for(let i=0; i < cookieData.length; i++){
+                        let info = cookieData[i];
+                        let name = info.name;
+                        let value = info.value;
+                        if(value == ''){
+                            continue;
+                        }
+                        if(name == 'pageOp' || name == 'QRCODE'){
+                            cookieDict[name] = value;
+                        }
+                    }
+                    resolve({url: urlMatch[1], cookie: cookieDict});
                 }else{
                     resolve();
                 }
@@ -150,15 +171,20 @@ async function getLoginAccoutUrl(url){
 }
 
 
-async function getLoginUrl(){
+async function getLoginUrlInfo(){
     let retUrl = null;
+    let retCookie = null;
     let entryUrl = 'https://m.cloud.189.cn/udb/udb_login.jsp?pageId=1&pageKey=default&clientType=wap&redirectURL=https://m.cloud.189.cn/zhuanti/2021/shakeLottery/index.html';
     let jumpUrl = await getLoginJumpUrl(entryUrl);
     if(jumpUrl){
-        retUrl = await getLoginAccoutUrl(jumpUrl);
+        let retInfo = await getLoginAccoutUrl(jumpUrl);
+        if(retInfo){
+            retUrl =retInfo.url;
+            retCookie = retInfo.cookie;
+        }
     }
     magicJS.logger.info(`LoginUrl: ${retUrl}`);
-    return retUrl;
+    return {url: retUrl, cookie: retCookie};
 }
 
 
@@ -171,7 +197,7 @@ function getFieldFromText(regexPattern, text, index=1) {
     return null;
 }
 
-function getLoginData(url){
+function getLoginData(url, cookieDict){
     return new Promise((resolve, reject) => {
         if(!url){
             resolve();
@@ -206,6 +232,7 @@ function getLoginData(url){
                     paramId: paramId,
                     j_rsakey: j_rsakey,
                     REQID: REQID,
+                    JSESSIONID: cookieDict.JSESSIONID
                 };
                 let cookieData = magicJS.parseSetCookies(resp.headers['Set-Cookie'] || '');
                 for(let i=0; i < cookieData.length; i++){
@@ -366,13 +393,13 @@ async function tryJumpToUrl(url){
 
 function login(username, password){
     return new Promise(async (resolve, reject) => {
-        let url = await getLoginUrl();
+        let {url, cookie} = await getLoginUrlInfo();
         let extData = null;
         if(url){
-            extData = await getLoginData(url);
+            extData = await getLoginData(url, cookie);
         }
         if(!extData){
-            resolve(null);
+            resolve({cacheUse: 1});
             return;
         }
         let loginData = await checkLogin(username, password, extData);
@@ -541,7 +568,7 @@ async function checkWapLogin(username, password, extData){
             //以下几个动态生成的
             "QRCODE": extData.QRCODE,
             "pageOp": extData.pageOp,
-            // "JSESSIONID": "aaapv0b8Wd4vJaKLOYg6y",
+            "JSESSIONID": extData.JSESSIONID,
         }
         let body = magicJS.objToQueryStr(reqData,true);
         magicJS.logger.info(`body= ${body}`);
@@ -584,13 +611,13 @@ async function checkWapLogin(username, password, extData){
 
 function wapLogin(username, password){
     return new Promise(async (resolve, reject) => {
-        let url = await getLoginUrl();
+        let {url, cookie} = await getLoginUrlInfo();
         let extData = null;
         if(url){
-            extData = await getLoginData(url);
+            extData = await getLoginData(url, cookie);
         }
         if(!extData){
-            resolve(null);
+            resolve({cacheUse: 1});
             return;
         }
         let loginData = await checkWapLogin(username, password, extData);