shawenguan 1 年間 前
コミット
2256ef6676
1 ファイル変更137 行追加12 行削除
  1. 137 12
      Scripts/pingan/pinganIkea.js

+ 137 - 12
Scripts/pingan/pinganIkea.js

@@ -2,6 +2,8 @@
 平安银行宜家礼品卡优惠券
 https://b.pingan.com.cn/kuaizhan/v2/5K2422/20230925/k84123/index.html?paesuperbank=%7B%22dLinkId%22%3A%22M0P5EnN0addUoXCs240814104407%22%7D
 
+pahkebank://
+
 [Script]
 # > 平安银行宜家礼品卡优惠券
 ^https?:\/\/b\.pingan\.com\.cn url script-request-body https://git.jojo21.top/shawenguan/Quantumult-X/raw/master/Scripts/pingan/pinganIkea.js
@@ -21,6 +23,10 @@ const magicJS = MagicJS(scriptName, "INFO");
 const PingAnIKEAConstKey = {
     // 基础数据
     Cookie: 'PingAnIKEACookie',
+    DeviceId: 'PingAnIKEADeviceId',
+    x_g_sid: 'PingAnIKEA#x_g_sid',
+    x_g_vid: 'PingAnIKEA#x_g_vid',
+    x_g_rid: 'PingAnIKEA#x_g_rid',
 };
 
 let gRetBody;
@@ -54,29 +60,44 @@ 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';
+let gDeviceId = magicJS.data.read(PingAnIKEAConstKey.DeviceId, '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`;
 
+let gTmpRequsetTimeStamp = Date.now();
+let gTmpRequestSortId = 100;
+
 const gCommonHeaders = {
-    'Cookie': ``,
-    'Sec-Fetch-Mode': `navigate`,
-    'Connection': `keep-alive`,
-    'Accept': `text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8`,
+    'osVersion': `16.6.1`,
     'Accept-Encoding': `gzip, deflate, br`,
-    'Host': `b.pingan.com.cn`,
+    'Host': `rsb.pingan.com.cn`,
+    'X-App-Version': `6.23.0`,
+    'phoneModel': `iPhone15,2`,
+    'Connection': `keep-alive`,
+    'bank-mobile-model': `iPhone15,2`,
+    'Accept-Language': `zh-Hans-CN;q=1`,
+    'nativeVersion': `6.23.0`,
     '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`
+    'Referer': `https://b.pingan.com.cn/kuaizhan/v2/5K2422/20230925/k84123/index.html`,
+    'X-Aladdin-Version': `4.8.77`,
+    'bank-mobile-brand': `Apple`,
+    'x-o-spanid': `0`,
+    'Accept': `*/*`,
+    'x-g-sid': `iSb07mg4hmSUYbUg5izmW0`,
+    'x-g-vid': `53mWJHzK00401M5Vv+uR3w`,
+    'x-g-rid': `J3/I3jF+hI6xiREInsHZlg5dn320120r`,
+    'X-REQUEST-ID': `${gDeviceId}-${gTmpRequsetTimeStamp}-${gTmpRequestSortId}`,
+    'Cookie': ``
 };
 
+let gPageData = {};
+
 async function Main() {
     if (magicJS.isStrictRequest) {
         magicJS.checkRecordRequestBody();
@@ -86,7 +107,7 @@ async function Main() {
         magicJS.notification.msg('');
     } else {
         gCommonHeaders[`Cookie`] = magicJS.data.read(PingAnIKEAConstKey.Cookie, '');
-        let pageData = await getPageData();
+        await tryGrabCoupon();
     }
     if (gRetBody) {
         magicJS.done({
@@ -161,9 +182,32 @@ function getQueryPlainData() {
     return params;
 }
 
+function getXRequestId() {
+    gTmpRequestSortId++;
+    return `${gDeviceId}-${gTmpRequsetTimeStamp}-${gTmpRequestSortId}`
+}
+
 function handleHeaders() {
     if ($request && $request.method != 'OPTIONS') {
-        let newCookieStr = $request.headers['Cookie'];
+        let headers = $request.headers;
+        let x_g_sid = headers['x-g-sid'];
+        if (x_g_sid) {
+            magicJS.data.write(PingAnIKEAConstKey.x_g_sid, x_g_sid);
+        }
+        let x_g_vid = headers['x-g-vid'];
+        if (x_g_sid) {
+            magicJS.data.write(PingAnIKEAConstKey.x_g_vid, x_g_vid);
+        }
+        let x_g_rid = headers['x-g-rid'];
+        if (x_g_sid) {
+            magicJS.data.write(PingAnIKEAConstKey.x_g_rid, x_g_rid);
+        }
+        if (headers['X-REQUEST-ID']) {
+            let tmpArr = headers['X-REQUEST-ID'].split('-');
+            magicJS.data.write(PingAnIKEAConstKey.DeviceId, tmpArr[0]);
+        }
+
+        let newCookieStr = headers['Cookie'];
         if (newCookieStr) {
             let oldCookieStr = magicJS.data.read(PingAnIKEAConstKey.Cookie, null);
             magicJS.logger.info(`oldCookieStr=${oldCookieStr}`);
@@ -274,6 +318,87 @@ async function getPageData() {
     return result;
 }
 
+async function tryGrabCoupon() {
+    gPageData = await getPageData();
+    let widgets = gPageData.widgets;
+    // 天天88
+    let path88 = ['pwm-kuaizhan-section', 'pwm-mkt-offer'];
+    // 五折限量购
+    let path55 = ['pwm-kuaizhan-simple-rule', 'pwm-kuaizhan-section', 'pwm-mkt-offer'];
+    // 9.25折限量购
+    let path925 = ['pwm-kuaizhan-section-split', 'pwm-kuaizhan-section', 'pwm-mkt-offer'];
+
+    let items925 = seekWidgets(widgets, path925);
+    for (let i = 0; i < items925.length; i++) {
+        const item = items925[i];
+        const config = item.config;
+        await queryCustomerActivityStatus(config.activityCode, config.activityValue);
+    }
+    let items88 = seekWidgets(widgets, path88);
+    for (let i = 0; i < items88.length; i++) {
+        const item = items88[i];
+        const config = item.config;
+        await queryCustomerActivityStatus(config.activityCode, config.activityValue);
+    }
+    let items55 = seekWidgets(widgets, path55);
+    for (let i = 0; i < items55.length; i++) {
+        const item = items55[i];
+        const config = item.config;
+        await queryCustomerActivityStatus(config.activityCode, config.activityValue);
+    }
+}
+
+function seekWidgets(widgets, namePaths, layer = 0) {
+    let retLst = [];
+    let name = namePaths[layer];
+    if (namePaths.length == layer + 1) {
+        for (let i = 0; i < widgets.length; i++) {
+            const widget = widgets[i];
+            if (widget.name == name) {
+                retLst.push(widget);
+            }
+        }
+    } else {
+        for (let i = 0; i < widgets.length; i++) {
+            const widget = widgets[i];
+            if (widget.name == name) {
+                retLst = retLst.concat(seekWidgets(widget.widgets, namePaths, layer + 1));
+            }
+        }
+    }
+    return retLst;
+}
+
+async function queryCustomerActivityStatus(activityCode, activityValue, channelSource = 'KOUDAI', taskProVal = '') {
+    let reqData = {
+        activityCode: activityCode,
+        activityValue: activityValue,
+        channelSource: channelSource,
+        taskProVal: taskProVal,
+    };
+    let url = `https://rsb.pingan.com.cn/brop/mop/cust/mopsf/uc/auth/lottery/queryCustomerActivityStatus?${magicJS.objToQueryStr(reqData)}`;
+    let headers = gCommonHeaders;
+    let options = {
+        url: url,
+        headers: headers,
+        body: ``,
+    };
+
+    let result = await magicJS.http.get(options).then(response => {
+        try {
+            let rspData = response.body;
+            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