|
|
@@ -29,46 +29,15 @@ const PingAnConstKey = {
|
|
|
x_g_rid: 'PingAnInnerWeb#x_g_rid',
|
|
|
PageData: 'PingAnInnerWeb#PageData',
|
|
|
PageActionId: 'PingAnInnerWeb#PageActionId',
|
|
|
+ SessionToken: 'PingAnInnerWeb#SessionToken',
|
|
|
};
|
|
|
|
|
|
let gRetBody;
|
|
|
|
|
|
-let errCodeStrMap = {
|
|
|
- 900111: "notStart",
|
|
|
- 900112: "notStart",
|
|
|
- 900113: "finish",
|
|
|
- 900109: "exceed",
|
|
|
- 910179: "nonLottery",
|
|
|
- 910204: "nonBindCard",
|
|
|
- 701001: "limitFlow",
|
|
|
- 700116: "nonBindWechat",
|
|
|
- 700118: "nonInterestWechat",
|
|
|
- 960002: "nonDayStock",
|
|
|
- 900537: "nonStock",
|
|
|
- 900139: "nonWhiteList",
|
|
|
- 900320: "riskList",
|
|
|
- 900130: "nonRules",
|
|
|
- 900982: "mutex",
|
|
|
- 950010: "nonDayTimes",
|
|
|
- 950710: "nonWeekTimes",
|
|
|
- 700119: "nonMonthTimes",
|
|
|
- 900144: "nonTimes",
|
|
|
- 950008: "nonDayPrizeTimes",
|
|
|
- 900745: "nonWeekPrizeTimes",
|
|
|
- 950009: "nonMonthPrizeTimes",
|
|
|
- 900143: "nonPrizeTimes",
|
|
|
- 600056: "timesCutDown",
|
|
|
- 780001: "nonBindAliPay",
|
|
|
- 900203: "notSendAble",
|
|
|
- 999999: "stockValidateText"
|
|
|
-};
|
|
|
-
|
|
|
-const gHost = 'b.pingan.com.cn';
|
|
|
-const gTeamId = `5K2422`;
|
|
|
-const gActivityId = `PK084123`;
|
|
|
-const gPageUrlFirstPath = '/kuaizhan/v2';
|
|
|
-const gPageUrlSuffix = `5K2422/20230925/k84123`;
|
|
|
-const gHomePageUrl = `https://b.pingan.com.cn/kuaizhan/v2/${gPageUrlSuffix}/index.html?paesuperbank=%7B%22dLinkId%22%3A%22M0P5EnN0addUoXCs240814104407%22%7D`;
|
|
|
+const gActivityId = `P145623`;
|
|
|
+const gHost = 'rmb.pingan.com.cn';
|
|
|
+const gReferer = `https://b.pingan.com.cn/creditcard/mk8point8/8point8.html`;
|
|
|
+const gHomePageUrl = `${gReferer}?enUmForShare=888888888888&innerid=KDAPP-96SS-HDY-1&activity_FlowId=m_P0P5qA0B23goyp209115&traceid=50030_adbBb7fYuMa#/`;
|
|
|
|
|
|
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`;
|
|
|
|
|
|
@@ -83,22 +52,24 @@ let gTmpRequestSortId = 100 + Math.floor(Math.random() * 100);
|
|
|
const gCommonHeaders = {
|
|
|
'osVersion': `16.6.1`,
|
|
|
'Accept-Encoding': `gzip, deflate, br`,
|
|
|
- 'Host': `rsb.pingan.com.cn`,
|
|
|
+ 'Host': `${gHost}`,
|
|
|
'X-App-Version': `6.23.0`,
|
|
|
+ 'x_hdns': `124.196.28.130`,
|
|
|
'phoneModel': `iPhone15,2`,
|
|
|
'Connection': `keep-alive`,
|
|
|
'bank-mobile-model': `iPhone15,2`,
|
|
|
- 'Accept-Language': `zh-Hans-CN;q=1`,
|
|
|
+ 'Accept-Language': `zh-Hans;q=1`,
|
|
|
'nativeVersion': `6.23.0`,
|
|
|
'User-Agent': `${gAppUserAgent}`,
|
|
|
- 'Referer': `https://b.pingan.com.cn/kuaizhan/v2/5K2422/20230925/k84123/index.html`,
|
|
|
+ 'Referer': `${gReferer}`,
|
|
|
'X-Aladdin-Version': `4.8.77`,
|
|
|
- 'bank-mobile-brand': `Apple`,
|
|
|
+ 'Content-Type': `application/x-www-form-urlencoded;charset=utf-8`,
|
|
|
'x-o-spanid': `0`,
|
|
|
- 'Accept': `*/*`,
|
|
|
- 'x-g-sid': `iSb07mg4hmSUYbUg5izmW0`,
|
|
|
+ 'bank-mobile-brand': `Apple`,
|
|
|
+ 'Accept': `application/json`,
|
|
|
+ 'x-g-sid': `jVOFX1jVgK6eAY3qU3Pvtg`,
|
|
|
'x-g-vid': `53mWJHzK00401M5Vv+uR3w`,
|
|
|
- 'x-g-rid': `J3/I3jF+hI6xiREInsHZlg5dn320120r`,
|
|
|
+ 'x-g-rid': `vdOcDov7jYO+dymIjQZAVM1a990Ve1250`,
|
|
|
'X-REQUEST-ID': `${gDeviceId}-${gTmpRequsetTimeStamp}-${gTmpRequestSortId}`,
|
|
|
'Cookie': ``
|
|
|
};
|
|
|
@@ -108,7 +79,10 @@ let gPageData = {};
|
|
|
// 忽略执行的本地领券状态
|
|
|
let gIgnoreCouponGotStatus = false;
|
|
|
// 忽略查询的领券状态
|
|
|
-let gIgnoreActivityStatus = false;;
|
|
|
+let gIgnoreActivityStatus = false;
|
|
|
+
|
|
|
+let gAppKey = 'A110493';
|
|
|
+let gPageId = 'P145623';
|
|
|
|
|
|
async function Main() {
|
|
|
if (magicJS.isStrictRequest) {
|
|
|
@@ -117,8 +91,9 @@ async function Main() {
|
|
|
if (magicJS.isRequest) {
|
|
|
checkHandleRequest();
|
|
|
} else {
|
|
|
- gCommonHeaders[`Cookie`] = magicJS.data.read(PingAnConstKey.Cookie, '');
|
|
|
- await tryGrabCoupon();
|
|
|
+ updateHeaders();
|
|
|
+ magicJS.data.write(PingAnConstKey.SessionToken, '');
|
|
|
+ await trySecKill();
|
|
|
}
|
|
|
magicJS.notification.msg('');
|
|
|
if (gRetBody) {
|
|
|
@@ -130,6 +105,116 @@ async function Main() {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+function checkHandleRequest() {
|
|
|
+}
|
|
|
+
|
|
|
+function updateHeaders() {
|
|
|
+ gCommonHeaders[`Cookie`] = magicJS.data.read(PingAnConstKey.Cookie, '');
|
|
|
+ let x_g_sid = magicJS.data.read(PingAnConstKey.x_g_sid, null);
|
|
|
+ if (x_g_sid) {
|
|
|
+ gCommonHeaders[`x-g-sid`] = x_g_sid;
|
|
|
+ }
|
|
|
+ let x_g_vid = magicJS.data.read(PingAnConstKey.x_g_vid, null);
|
|
|
+ if (x_g_vid) {
|
|
|
+ gCommonHeaders['x-g-vid'] = x_g_vid;
|
|
|
+ }
|
|
|
+ let x_g_rid = magicJS.data.read(PingAnConstKey.x_g_rid, null);
|
|
|
+ if (x_g_rid) {
|
|
|
+ gCommonHeaders['x-g-rid'] = x_g_rid;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+function getToken() {
|
|
|
+ let currentDate = new Date();
|
|
|
+
|
|
|
+ // 获取 pageID
|
|
|
+ let pageID = gPageId;
|
|
|
+
|
|
|
+ // 处理 pageID
|
|
|
+ if (pageID) {
|
|
|
+ pageID = pageID.split("-").pop(); // 获取最后一个部分
|
|
|
+ }
|
|
|
+
|
|
|
+ // 获取当前日期和时间的各个组成部分
|
|
|
+ let year = currentDate.getFullYear().toString().substr(2); // 取年份的后两位
|
|
|
+ let month = (currentDate.getMonth() + 1).toString().padStart(2, '0'); // 月份,确保为两位
|
|
|
+ let day = currentDate.getDate().toString().padStart(2, '0'); // 日期,确保为两位
|
|
|
+ let hours = currentDate.getHours().toString().padStart(2, '0'); // 小时,确保为两位
|
|
|
+ let minutes = currentDate.getMinutes().toString().padStart(2, '0'); // 分钟,确保为两位
|
|
|
+ let seconds = currentDate.getSeconds().toString().padStart(2, '0'); // 秒,确保为两位
|
|
|
+ let milliseconds = currentDate.getMilliseconds().toString().padStart(3, '0'); // 毫秒,确保为三位
|
|
|
+ let randomPart = Math.random().toString().substr(2, 2); // 生成两位随机数
|
|
|
+
|
|
|
+ // 拼接并返回最终结果
|
|
|
+ return pageID + year + month + day + hours + minutes + seconds + milliseconds + randomPart;
|
|
|
+}
|
|
|
+
|
|
|
+function getSessionToken() {
|
|
|
+ let token = magicJS.data.read(PingAnConstKey.SessionToken, null);
|
|
|
+ if (!token || token.length == 0) {
|
|
|
+ token = getToken();
|
|
|
+ magicJS.data.write(PingAnConstKey.SessionToken, token);
|
|
|
+ }
|
|
|
+ return token;
|
|
|
+}
|
|
|
+
|
|
|
+function getLastToken(token) {
|
|
|
+ return token.substr(-5);
|
|
|
+}
|
|
|
+
|
|
|
+async function trySecKill() {
|
|
|
+ let execCount = 10;
|
|
|
+ let tipsText = '';
|
|
|
+ for (let i = 0; i < execCount; i++) {
|
|
|
+ let result = await doSecKill();
|
|
|
+ if (result && result.code == '000000') {
|
|
|
+ tipsText = `${result.body}`;
|
|
|
+ break;
|
|
|
+ } else {
|
|
|
+ tipsText = `秒杀领取失败!`;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ magicJS.notification.appendNotifyInfo(tipsText);
|
|
|
+}
|
|
|
+
|
|
|
+async function doSecKill() {
|
|
|
+ let token = getSessionToken();
|
|
|
+ let lastToken = getLastToken(token);
|
|
|
+ let webTagInfoArr = [
|
|
|
+ 'module=8point8',
|
|
|
+ `token=${token}`,
|
|
|
+ `lastToken=${lastToken}`,
|
|
|
+ ];
|
|
|
+ let reqData = {
|
|
|
+ serviceVersion: '1.0',
|
|
|
+ osType: '1',
|
|
|
+ channel: '1',
|
|
|
+ version: '1.5.0',
|
|
|
+ random: Math.random(),
|
|
|
+ webTagInfo: encodeURIComponent(webTagInfoArr.join(',')),
|
|
|
+ 'addWebTagInfoList[]': encodeURIComponent('module=8point8'),
|
|
|
+ }
|
|
|
+ let url = `https://rmb.pingan.com.cn/credit/core/cust/ma/online/pabank/ma/pm/others/seckill/doKill`;
|
|
|
+ let headers = gCommonHeaders;
|
|
|
+ let options = {
|
|
|
+ url: url,
|
|
|
+ headers: headers,
|
|
|
+ body: `${magicJS.objToQueryStr(reqData)}`,
|
|
|
+ };
|
|
|
+ let result = await magicJS.http.post(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());
|
|
|
|