|
|
@@ -18,6 +18,13 @@ hostname = b.pingan.com.cn,rsb.pingan.com.cn,rmb.pingan.com.cn
|
|
|
|
|
|
const scriptName = `平安银行宜家礼品卡优惠券`;
|
|
|
const magicJS = MagicJS(scriptName, "INFO");
|
|
|
+const PingAnIKEAConstKey = {
|
|
|
+ // 基础数据
|
|
|
+ Cookie: 'Cloud115Cookie',
|
|
|
+ SignInBody: 'Cloud115SignInBody',
|
|
|
+ SignInToken: 'Cloud115SignInToken',
|
|
|
+ SignInTokenTime: 'Cloud115SignInTokenTime',
|
|
|
+};
|
|
|
|
|
|
let gRetBody;
|
|
|
|
|
|
@@ -50,6 +57,28 @@ let errCodeStrMap = {
|
|
|
900203: "notSendAble",
|
|
|
999999: "stockValidateText"
|
|
|
};
|
|
|
+const gHost = 'b.pingan.com.cn';
|
|
|
+const gHomePageUrl = `https://b.pingan.com.cn/kuaizhan/v2/5K2422/20230925/k84123/index.html?paesuperbank=%7B%22dLinkId%22%3A%22M0P5EnN0addUoXCs240814104407%22%7D`;
|
|
|
+
|
|
|
+const gWebUserAgent = `Mozilla/5.0 (iPhone; CPU iPhone OS 16_6_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 MicroMessenger/8.0.50(0x18003237) NetType/WIFI Language/zh_CN`;
|
|
|
+
|
|
|
+let gDeviceId = 'AUUID_918d439ffcef935c2fd84d3a3e593b6523c916fc';
|
|
|
+
|
|
|
+const gAppUserAgent = `Mozilla/5.0 (iPhone; CPU iPhone OS 16_6_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 iphone 14 pro AladdinHybrid/4.8.77 (PAEBank 6.23.0) AladdinBridge/3.0.0 subContracting/AppStore deviceId/${gDeviceId} UnionPay/1.0 PABANK deviceType/1 networkState/WIFI KiwiBridge/1.0.0 device-dpr/3 device-dr/852*393 AppStyle/BZ bz-navbarHeight/309 dzTab-navbarHeight/327 pageActionId/1F908E50`;
|
|
|
+
|
|
|
+const gCommonHeaders = {
|
|
|
+ 'Cookie': ``,
|
|
|
+ 'Sec-Fetch-Mode': `navigate`,
|
|
|
+ 'Connection': `keep-alive`,
|
|
|
+ 'Accept': `text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8`,
|
|
|
+ 'Accept-Encoding': `gzip, deflate, br`,
|
|
|
+ 'Host': `b.pingan.com.cn`,
|
|
|
+ 'User-Agent': `${gAppUserAgent}`,
|
|
|
+ 'Sec-Fetch-Site': `none`,
|
|
|
+ 'Accept-Language': `zh-CN,zh-Hans;q=0.9`,
|
|
|
+ 'Sec-Fetch-Dest': `document`,
|
|
|
+ // 'If-Modified-Since': `Thu, 18 Jul 2024 11:10:01 GMT`
|
|
|
+};
|
|
|
|
|
|
async function Main() {
|
|
|
if (magicJS.isStrictRequest) {
|
|
|
@@ -82,6 +111,7 @@ function checkHandleRequest() {
|
|
|
case '/brop/mop/cust/mopsf/nrp/uc/simple/rule/info/batchSatisfy':
|
|
|
break;
|
|
|
case '/brop/cmp/cust/cmpsf/mgm/origin/queryPageConfig.do':
|
|
|
+ handlePageConfig();
|
|
|
break;
|
|
|
case '/brcp/uc/cust/uc-login-web.qryLoginStatus.do':
|
|
|
case '/rmb/brcp/uc/cust/uc-login-web.qryLoginStatus.do':
|
|
|
@@ -90,8 +120,12 @@ function checkHandleRequest() {
|
|
|
case '/brop/mop/cust/mopsf/uc/auth/lottery/queryCustomerActivityStatus':
|
|
|
handleCustomerActivityStatus();
|
|
|
break;
|
|
|
+ case '/brop/mop/cust/mopsf/lottery/getLeftOfferNum':
|
|
|
+ break;
|
|
|
default:
|
|
|
- if (path.indexOf('/brop/mop/cust/mopsf/personality/activity/status/query') > -1) {
|
|
|
+ if (path.indexOf('/kuaizhan/v2/5K2422/20230925/k84123/index.html') > -1) {
|
|
|
+ handleHomePage();
|
|
|
+ } else if (path.indexOf('/brop/mop/cust/mopsf/personality/activity/status/query') > -1) {
|
|
|
handlePublicActivityStatus();
|
|
|
} else if (path.indexOf('/bron/coss/cust/app/getSupernatant') > -1) {
|
|
|
|
|
|
@@ -129,42 +163,83 @@ function getQueryPlainData() {
|
|
|
return params;
|
|
|
}
|
|
|
|
|
|
+function handleHeaders() {
|
|
|
+ let headers = $request.headers;
|
|
|
+ if (headers['Cookie']) {
|
|
|
+ let newCookieStr = headers['Cookie'];
|
|
|
+ // let cookieDict = magicJS.parseCookies(oldCookieStr);
|
|
|
+ if (newCookieStr != void 0) {
|
|
|
+ let oldCookieStr = magicJS.data.read(PingAnIKEAConstKey.Cookie, null);
|
|
|
+ if (newCookieStr != oldCookieStr) {
|
|
|
+ magicJS.data.write(PingAnIKEAConstKey.Cookie, newCookieStr);
|
|
|
+ magicJS.logger.info(`当前Cookie刷新到最新`);
|
|
|
+ magicJS.notification.appendNotifyInfo(`🎉当前Cookie刷新到最新`);
|
|
|
+ } else {
|
|
|
+ magicJS.logger.info(`当前Cookie已经是最新无需更新`);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
-async function getPageData() {
|
|
|
- let url = `https://b.pingan.com.cn/kuaizhan/v2/5K2422/20230925/k84123/pageData.js?v=${new Date().getTime()}`;
|
|
|
- let body = ``;
|
|
|
- let headers = {
|
|
|
-
|
|
|
- };
|
|
|
- let options = {
|
|
|
- url: url,
|
|
|
- headers: headers,
|
|
|
- body: body,
|
|
|
- };
|
|
|
- let result = await magicJS.http.post(options).then(response => {
|
|
|
- try {
|
|
|
- const body = response.body;
|
|
|
- let rspData = null;
|
|
|
- let retMatch = body.match(/var pageData = ([\s\S]*)/); // 正则表达式匹配
|
|
|
- if (retMatch) {
|
|
|
- rspData = JSON.parse(retMatch);
|
|
|
+ if ($request && $request.method != 'OPTIONS') {
|
|
|
+ let cookieStr = $request.headers['Cookie'];
|
|
|
+ if (cookieStr) {
|
|
|
+ let oldCookieStr = magicJS.data.read(PingAnIKEAConstKey.Cookie, null);
|
|
|
+ magicJS.logger.info(`oldCookieStr=${oldCookieStr}`);
|
|
|
+ magicJS.logger.info(`cookieStr=${cookieStr}`);
|
|
|
+ if (compareCookieStr(cookieStr, oldCookieStr) != 0) {
|
|
|
+ magicJS.data.write(PingAnIKEAConstKey.Cookie, cookieStr);
|
|
|
+ magicJS.notification.appendNotifyInfo(`🎉当前Cookie刷新到最新`);
|
|
|
+ } else {
|
|
|
+ magicJS.data.write(PingAnIKEAConstKey.Cookie, cookieStr);
|
|
|
+ magicJS.logger.info(`当前Cookie已经是最新无需更新`);
|
|
|
}
|
|
|
- magicJS.logger.info(`rspData=${JSON.stringify(rspData)}`);
|
|
|
- return rspData;
|
|
|
- } catch (e) {
|
|
|
- magicJS.logger.error(e);
|
|
|
}
|
|
|
- }).catch(err => {
|
|
|
- const msg = `请求页面配置数据异常\n${JSON.stringify(err)}`;
|
|
|
- magicJS.logger.error(msg);
|
|
|
- });
|
|
|
- return result;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+function compareCookieStr(cookieStr1, cookieStr2) {
|
|
|
+ if (cookieStr1 == cookieStr2) {
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+ return -1;
|
|
|
+ // let cookieDict1 = magicJS.parseCookies(cookieStr1);
|
|
|
+ // let cookieDict2 = magicJS.parseCookies(cookieStr2);
|
|
|
+ // let skipKeys = ['NGWhitelist', 'PAEBANK_PARAM', 'PAEBANK_PARAM_N', 'PAEBANK_PARAM_W', 'WEBTRENDS_SESSIONID', 'brcpSessionTicket', 'sdc_PABankParam', 'shuntid'];
|
|
|
+ // let retCode = 0;
|
|
|
+ // for (let key in cookieDict1) {
|
|
|
+ // if (!skipKeys.includes(key)) {
|
|
|
+ // if (cookieDict1[key] != void 0 && cookieDict2[key] != void 0 && cookieDict1[key] != cookieDict2[key]) {
|
|
|
+ // magicJS.logger.info(`${key}`);
|
|
|
+ // retCode = -1;
|
|
|
+ // break;
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // return retCode;
|
|
|
+}
|
|
|
+
|
|
|
+function handleHomePage() {
|
|
|
+
|
|
|
}
|
|
|
|
|
|
function handleCreateTokenId() {
|
|
|
|
|
|
}
|
|
|
|
|
|
+function handlePageConfig() {
|
|
|
+ let rspData = getResponsePlainData();
|
|
|
+ if (!rspData) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (rspData.responseCode != "000000") {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ let data = rspData.data;
|
|
|
+ if (data.reShow) {
|
|
|
+
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
function handlePublicActivityStatus() {
|
|
|
let rspData = getResponsePlainData();
|
|
|
if (!rspData) {
|
|
|
@@ -189,6 +264,36 @@ function handleLoginStatus() {
|
|
|
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+async function getPageData() {
|
|
|
+ let url = `https://b.pingan.com.cn/kuaizhan/v2/5K2422/20230925/k84123/pageData.js?v=${new Date().getTime()}`;
|
|
|
+ let body = ``;
|
|
|
+ let headers = gCommonHeaders;
|
|
|
+ let options = {
|
|
|
+ url: url,
|
|
|
+ headers: headers,
|
|
|
+ body: body,
|
|
|
+ };
|
|
|
+ let result = await magicJS.http.post(options).then(response => {
|
|
|
+ try {
|
|
|
+ const body = response.body;
|
|
|
+ let rspData = null;
|
|
|
+ let retMatch = body.match(/var pageData = ([\s\S]*)/); // 正则表达式匹配
|
|
|
+ if (retMatch) {
|
|
|
+ rspData = JSON.parse(retMatch);
|
|
|
+ }
|
|
|
+ magicJS.logger.info(`rspData=${JSON.stringify(rspData)}`);
|
|
|
+ return rspData;
|
|
|
+ } catch (e) {
|
|
|
+ magicJS.logger.error(e);
|
|
|
+ }
|
|
|
+ }).catch(err => {
|
|
|
+ const msg = `请求页面配置数据异常\n${JSON.stringify(err)}`;
|
|
|
+ magicJS.logger.error(msg);
|
|
|
+ });
|
|
|
+ return result;
|
|
|
+}
|
|
|
+
|
|
|
Main().catch((e) => magicJS.logger.log(`-\n ${e}`)).finally(() => magicJS.done());
|
|
|
|
|
|
//---SyncByPyScript---MagicJS3-start
|