shawenguan 1 anno fa
parent
commit
b990b8aff8
3 ha cambiato i file con 102 aggiunte e 9 eliminazioni
  1. 7 0
      BoxJsSub/hbcpre.json
  2. 89 9
      Scripts/hbcpre/hbcpreGrab.js
  3. 6 0
      Scripts/hbcpre/hbcpreHelper.js

+ 7 - 0
BoxJsSub/hbcpre.json

@@ -237,6 +237,13 @@
                     "desc": "默认开启"
                 },
                 {
+                    "id": "HbcpreHomeSeriesRapidFrequencyCount",
+                    "name": "1秒频率次数",
+                    "val": 2,
+                    "type": "number",
+                    "desc": "1秒频率次数"
+                },
+                {
                     "id": "HbcpreHomeSeriesId",
                     "name": "当前首发抢购Id",
                     "val": "",

+ 89 - 9
Scripts/hbcpre/hbcpreGrab.js

@@ -29,6 +29,7 @@ const HbcpreConstKey = {
     homeSeriesId: 'HbcpreHomeSeriesId',
     homeSeriesName: 'HbcpreHomeSeriesName',
     homeSeriesLimitBuy: 'HbcpreHomeSeriesLimitBuy',
+    homeSeriesRapidFrequencyCount: 'HbcpreHomeSeriesRapidFrequencyCount',
 };
 
 const gUserAgent = `Mozilla/5.0 (iPhone; CPU iPhone OS 16_6_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.6 Mobile/15E148 Safari/604.1`;
@@ -104,6 +105,15 @@ function isHomeSeriesDataGrabEnabled() {
     return JSON.parse(flag);
 }
 
+function getRapidFrequencyCount(){
+    let num = magicJS.data.read(HbcpreConstKey.homeSeriesRapidFrequencyCount, 2);
+    return Number(num);
+}
+
+function checkAllowAutoPay(seriesInfo, willPrice){
+    return true;
+}
+
 async function tryGrabNew() {
     let itemId = magicJS.data.read(HbcpreConstKey.homeSeriesId, null);
     let itemName = magicJS.data.read(HbcpreConstKey.homeSeriesName, null);
@@ -143,7 +153,25 @@ async function tryGrabNew() {
                 }
             }
         }
-        let buyRet = await primOrder(iData.seriesId, limitBuyNum || 1);
+        let buyRet = null;
+        let fCount = getRapidFrequencyCount();
+        let interval = 1000/fCount;
+        let activityData = null;
+        let lastTime = Date.now() - interval2;
+        let passTime = 0;
+        for(let i = 0; i < fCount; i++){
+            passTime = Date.now() - lastTime;
+            magicJS.logger.info(`PassTime:${passTime}ms[${i}]`);
+            if(passTime < interval){
+                await magicJS.utils.sleep(interval-passTime);
+            }
+            lastTime = Date.now();
+            buyRet = await primOrder(iData.seriesId, limitBuyNum || 1);
+            if (buyRet && buyRet.code == 200) {
+                break;
+            }
+        }
+
         if (buyRet) {
             if (buyRet.code == 200) {
                 // magicJS.notification.appendNotifyInfo(`🎉产品【${iData.seriesName}】快捷下单成功`);
@@ -156,13 +184,22 @@ async function tryGrabNew() {
                     }
                     if (payRet) {
                         let paymentInfo = encodeURI(payRet.paymentInfo);
-                        let bOpenRet = await browserOpenUrl();
-                        let queryData = magicJS.parseQueryStr(paymentInfo);
-                        let cashierInit1 = await yeepayWapRequest(queryData.token, queryData.merchantNo, 'BDbiAXHCpS5A*VlA7eDbTg%3D%3D');
-                        let cashierInit2 = await yeepayNewWap(queryData.token);
-                        let paySuccFlag = await doYeepay(queryData.token, parseFloat(iData.amount || iData.price) + priceFloatInterval);
-                        if (paySuccFlag) {
-                            magicJS.notification.post(scriptName, "", `🎉产品【${iData.seriesName}】快捷下单成功,并支付成功!`);
+                        if(checkAllowAutoPay(iData, willPrice)){
+                            let browserRet = await openUrlByRemoteBrowser(paymentInfo);
+                            // let queryData = magicJS.parseQueryStr(paymentInfo);
+                            // let cashierInit1 = await yeepayWapRequest(queryData.token, queryData.merchantNo, 'BDbiAXHCpS5A*VlA7eDbTg%3D%3D');
+                                // let cashierInit2 = await yeepayNewWap(queryData.token);
+                            if(browserRet && browserRet.code == 200){
+                                let queryData = magicJS.parseQueryStr(browserRet.data.url);
+                                let paySuccFlag = await doYeepay(queryData.token, parseFloat(iData.pay_price) + priceFloatInterval);
+                                if (paySuccFlag) {
+                                    magicJS.notification.post(scriptName, "", `🎉产品【${iData.seriesName}】快捷下单成功,并支付成功!`);
+                                } else {
+                                    magicJS.notification.post(scriptName, "", `🎉产品【${iData.seriesName}】快捷下单成功,需前往支付!`, paymentInfo);
+                                }
+                            } else {
+                                magicJS.notification.post(scriptName, "", `🎉产品【${iData.seriesName}】快捷下单成功,需前往支付!`, paymentInfo);
+                            }
                         } else {
                             magicJS.notification.post(scriptName, "", `🎉产品【${iData.seriesName}】快捷下单成功,需前往支付!`, paymentInfo);
                         }
@@ -347,7 +384,50 @@ async function doOrderPay(payType, orderId) {
     return null;
 }
 
-async function browserOpenUrl(url, headers) {
+
+async function openUrlByRemoteBrowser(url) {
+    let headers = {
+        'Sec-Fetch-Dest': `empty`,
+        'Connection': `keep-alive`,
+        'Accept-Encoding': `gzip, deflate, br`,
+        'Content-Type': `application/json;charset=UTF-8`,
+        'Sec-Fetch-Site': `same-origin`,
+        'Origin': `https://cash.yeepay.com`,
+        'User-Agent': `Mozilla/5.0 (iPhone; CPU iPhone OS 16_6_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.6 Mobile/15E148 Safari/604.1`,
+        'Sec-Fetch-Mode': `cors`,
+        'Cookie': `aliyungf_tc=deb5a0bf09b2b2914456330284da78f4dd6625813acc42b992eb59069c342eed`,
+        'Host': `cash.yeepay.com`,
+        'Referer': `https://cash.yeepay.com/newwap/mobile-cashier/index.html`,
+        'Accept-Language': `zh-CN,zh-Hans;q=0.9`,
+        'Accept': `application/json, text/plain, */*`
+    };
+    let data = {
+        url: url,
+        headers: headers,
+    };
+    let proxyUrl = magicJS.data.read(HbcpreConstKey.browserProxyUrl, 'http://127.0.0.1:5000/proxy');
+    let options = {
+        url: proxyUrl,
+        headers: headers,
+        body: JSON.stringify(data),
+    };
+    let result = await magicJS.http.post(options).then(response => {
+        try {
+            magicJS.logger.info(JSON.stringify(response));
+            const body = response.body;
+            magicJS.logger.info(body);
+            return body;
+        } catch (e) {
+            magicJS.logger.error(e);
+        }
+    }).catch(err => {
+        const msg = `请求代理浏览器异常\n${JSON.stringify(err)}`;
+        magicJS.logger.error(msg);
+    });
+    return result;
+}
+
+async function getHtmlContent(url, headers) {
     let options = {
         url: `${url}`,
         headers: headers,

+ 6 - 0
Scripts/hbcpre/hbcpreHelper.js

@@ -58,12 +58,18 @@ const HbcpreConstKey = {
     compositeEntryTitleList: 'HbcpreCompositeEntryTitleList',
     compositeEntryTitleCustom: 'HbcpreCompositeEntryTitleCustom',
     compositeActivityTaskMode: 'HbcpreCompositeActivityTaskMode',
+    compositeRapidFrequencyCount: 'HbcpreCompositeRapidFrequencyCount',
 
     // 兑换相关
     exchangeItemDataGrabEnabled: 'HbcpreExchangeItemDataGrabEnabled',
+    exchangeOnlyUseCache: 'HbcpreExchangeOnlyUseCache',
     exchangeActivityData: 'HbcpreExchangeActivityData',
     exchangeActivityId: 'HbcpreExchangeActivityId',
     exchangeActivityName: 'HbcpreExchangeActivityName',
+    exchangeEntryTitleList: 'HbcpreExchangeEntryTitleList',
+    exchangeEntryTitleCustom: 'HbcpreExchangeEntryTitleCustom',
+    exchangeActivityTaskMode: 'HbcpreExchangeActivityTaskMode',
+    exchangeRapidFrequencyCount: 'HbcpreExchangeRapidFrequencyCount',
 
     drawItemDataGrabEnabled: 'HbcpreDrawItemDataGrabEnabled',
     drawActivityData: 'HbcpreDrawActivityData',