|
|
@@ -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);
|