|
|
@@ -41,6 +41,8 @@ const UnicomConstKey = {
|
|
|
RechargeDiscData: 'UnicomRechargeDiscData',
|
|
|
DeviceId: 'UnicomDeviceId',
|
|
|
TokenOnline: 'UnicomTokenOnline',
|
|
|
+ DesMobile: 'UnicomDesMobile',
|
|
|
+ OnlineData: 'UnicomOnlineData',
|
|
|
};
|
|
|
|
|
|
let gRetBody;
|
|
|
@@ -97,8 +99,15 @@ function handleDaySign() {
|
|
|
}
|
|
|
|
|
|
async function tryDaySign() {
|
|
|
+ let onlineData = await checkOnline();
|
|
|
+ let userInfo = await queryUserInfoSeven();
|
|
|
+ if (userInfo && userInfo.signinState == '1') {
|
|
|
+ magicJS.notification.appendNotifyInfo(`🎉今日已签到,无需再次签到!`);
|
|
|
+ return;
|
|
|
+ }
|
|
|
let result = await doDaySign();
|
|
|
if (result) {
|
|
|
+ // 0002已签到
|
|
|
if (result.code === '0000') {
|
|
|
magicJS.notification.appendNotifyInfo(`🎉签到成功!`);
|
|
|
} else {
|
|
|
@@ -109,6 +118,149 @@ async function tryDaySign() {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+async function checkOnline() {
|
|
|
+ let onlineData = magicJS.data.read(UnicomConstKey.OnlineData, null);
|
|
|
+ if (onlineData) {
|
|
|
+ let invalidat = onlineData.invalidat;
|
|
|
+ let invalidDate = magicJS.parseDate(invalidat, 'yyyy-MM-dd HH:mm:ss');
|
|
|
+ let nowDate = new Date();
|
|
|
+ if (nowDate.getTime() > invalidDate.getTime() - 60 * 1000) {
|
|
|
+ magicJS.logger.info(`token已过期,重新获取token_online`);
|
|
|
+ onlineData = await doOnline(onlineData.token_online);
|
|
|
+ let keyMap = {
|
|
|
+ 't3_token': 't3_token',
|
|
|
+ 'ecs_token': 'ecs_token',
|
|
|
+ 'private_token': null,
|
|
|
+ }
|
|
|
+ if (onlineData.code == '0') {
|
|
|
+ magicJS.data.write(UnicomConstKey.OnlineData, onlineData);
|
|
|
+ return onlineData;
|
|
|
+ }
|
|
|
+ return null;
|
|
|
+ } else {
|
|
|
+ return onlineData;
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ let token_online = magicJS.data.read(UnicomConstKey.TokenOnline);
|
|
|
+ if (onlineData.code == '0') {
|
|
|
+ magicJS.data.write(UnicomConstKey.OnlineData, token_online);
|
|
|
+ return onlineData;
|
|
|
+ }
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+async function doOnline(token_online) {
|
|
|
+ let reqData = {
|
|
|
+ reqtime: "2024-08-27 09:34:43",
|
|
|
+ version: "[email protected]",
|
|
|
+ simOperator: "--,--,65535,65535,--@--,--,65535,65535,--",
|
|
|
+ token_online: token_online,
|
|
|
+ longitude: "113.380124",
|
|
|
+ appId: "af8ceac06275e6af2826a3cf6ea168d6c0ed648f7276245712b84ec4ea4123938c988019063e69601b61ca90266aa840cc052e1ee578b31889c0a5dee8d878729760238a83ba5d716ed59aab9b7f1347d21feaec28173dbda3b21d9a5c4030a3",
|
|
|
+ deviceId: "603305e42ba81fb7dd07d755ba13944786e9d6bf1ae04d129a84c186f431c248",
|
|
|
+ latitude: "23.122429",
|
|
|
+ pip: "10.14.97.181",
|
|
|
+ deviceModel: "iPhone15,2",
|
|
|
+ deviceBrand: "iPhone",
|
|
|
+ uniqueIdentifier: "iosa0e3729a350a98e01b816b33ca9515e72",
|
|
|
+ step: "background",
|
|
|
+ isFirstInstall: "0",
|
|
|
+ deviceCode: "20ED00DA-C5CA-4606-97E0-13D040D991CF",
|
|
|
+ voipToken: "citc-default-token-do-not-push"
|
|
|
+ };
|
|
|
+ let url = `https://m.client.10010.com/mobileService/onLine.htm`;
|
|
|
+ let headers = {
|
|
|
+ 'Accept': `*/*`,
|
|
|
+ 'Accept-Encoding': `gzip, deflate, br`,
|
|
|
+ 'Connection': `keep-alive`,
|
|
|
+ 'Cookie': magicJS.data.read(UnicomConstKey.Cookie, ''),
|
|
|
+ 'Content-Type': `application/x-www-form-urlencoded`,
|
|
|
+ 'Host': `m.client.10010.com`,
|
|
|
+ 'User-Agent': `ChinaUnicom.x CFNetwork iOS/16.6.1 unicom{version:[email protected]}`,
|
|
|
+ 'X-Tingyun': `c=A|uBuVhVARE0A`,
|
|
|
+ 'Accept-Language': `zh-CN,zh-Hans;q=0.9`,
|
|
|
+ 'X-Tingyun-Id': `4gA5HRiCw8g;c=2;r=1575348594;u=62ffa39b4f94b3f4742089def7690470bd24ba1846d5d369e5460f4f029537a331b0b70e1293dcfcd727cab6b63edf43::BD4E4C616020FB61`
|
|
|
+ };
|
|
|
+ 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)}`);
|
|
|
+ if (response.headers && response.headers['Set-Cookie']) {
|
|
|
+ updateCookie(response.headers['Set-Cookie']);
|
|
|
+ }
|
|
|
+ return rspData;
|
|
|
+ } catch (e) {
|
|
|
+ magicJS.logger.error(e);
|
|
|
+ }
|
|
|
+ }).catch(err => {
|
|
|
+ const msg = `请求在线数据异常\n${JSON.stringify(err)}`;
|
|
|
+ magicJS.logger.error(msg);
|
|
|
+ });
|
|
|
+ return result;
|
|
|
+}
|
|
|
+
|
|
|
+function updateCookie(setCookieData) {
|
|
|
+ let cookieStr = magicJS.data.read(UnicomConstKey.Cookie, null);
|
|
|
+ let cookieDict = magicJS.parseCookies(cookieStr);
|
|
|
+ let SetCookieData = magicJS.parseSetCookies($response.headers['Set-Cookie'] || '');
|
|
|
+ for (let i = 0; i < SetCookieData.length; i++) {
|
|
|
+ let info = SetCookieData[i];
|
|
|
+ let name = info.name;
|
|
|
+ let value = info.value;
|
|
|
+ cookieDict[name] = value;
|
|
|
+ }
|
|
|
+ cookieStr = magicJS.serializeCookies(cookieDict);
|
|
|
+ magicJS.data.write(UnicomConstKey.Cookie, cookieStr);
|
|
|
+ magicJS.logger.info(`刷新当前Cookie`);
|
|
|
+ updateHeaders();
|
|
|
+}
|
|
|
+
|
|
|
+async function queryUserInfoSeven(phoneNum = '16620077714') {
|
|
|
+ let reqData = {
|
|
|
+ version: '[email protected]',
|
|
|
+ desmobiel: phoneNum,
|
|
|
+ showType: 0,
|
|
|
+ }
|
|
|
+ const url = `https://m.client.10010.com//mobileserviceimportant/home/queryUserInfoSeven?${magicJS.objToQueryStr(reqData)}`;
|
|
|
+ const headers = {
|
|
|
+ 'Accept-Encoding': `gzip, deflate, br`,
|
|
|
+ 'Cookie': magicJS.data.read(UnicomConstKey.Cookie, ''),
|
|
|
+ 'Connection': `keep-alive`,
|
|
|
+ 'Accept': `*/*`,
|
|
|
+ 'X-Tingyun-Id': `4gA5HRiCw8g;c=2;r=286707591;u=62ffa39b4f94b3f4742089def7690470bd24ba1846d5d369e5460f4f029537a331b0b70e1293dcfcd727cab6b63edf43::BD4E4C616020FB61`,
|
|
|
+ 'Host': `m.client.10010.com`,
|
|
|
+ 'User-Agent': `ChinaUnicom.x CFNetwork iOS/16.6.1 unicom{version:[email protected]}`,
|
|
|
+ 'X-Tingyun': `c=A|uBuVhVARE0A`,
|
|
|
+ 'Accept-Language': `zh-CN,zh-Hans;q=0.9`
|
|
|
+ };
|
|
|
+ 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;
|
|
|
+}
|
|
|
+
|
|
|
async function doDaySign() {
|
|
|
const url = `https://activity.10010.com/sixPalaceGridTurntableLottery/signin/daySign`;
|
|
|
let headers = { ...gCommonHeaders };
|