|
|
@@ -34,11 +34,12 @@ let pcUserAgent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36
|
|
|
let webUserAgent = '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';
|
|
|
|
|
|
let appVersion = '10.7.7';
|
|
|
-// appVersion = '10.4.1';
|
|
|
let iosUserAgent = `smzdm ${appVersion} rv:146.5 (iPhone 14 Pro; iOS 16.6.1; zh_CN)/iphone_smzdmapp/${appVersion}`;
|
|
|
let androidUserAgent = `smzdm_android_V${appVersion} rv:936 (MT2110;Android13;zh)smzdmapp`;
|
|
|
let mixUserAgent = `Mozilla/5.0 (iPhone; CPU iPhone OS 16_6_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148/smzdm ${appVersion} rv:146.5 (iPhone 14 Pro; iOS 16.6.1; zh_CN)/iphone_smzdmapp/${appVersion}/wkwebview/jsbv_1.0.0`;
|
|
|
|
|
|
+const smzdmSignKey = 'apr1$AwP!wRRT$gJ/q.X24poeBInlUJC';
|
|
|
+const smzdmSK = 'ierkM0OZZbsuBKLoAgQ6OJneLMXBQXmzX+LXkNTuKch8Ui2jGlahuFyWIzBiDq/L';
|
|
|
|
|
|
async function Main() {
|
|
|
if (magicJS.isRequest) {
|
|
|
@@ -80,7 +81,7 @@ magicJS.http.interceptors.request.use((config) => {
|
|
|
if (!!currentCookie) {
|
|
|
config.headers.Cookie = currentCookie;
|
|
|
// 尝试将Cookie中的iOS相关信息去除
|
|
|
- // config.headers.Cookie = config.headers.Cookie.replace("iphone", "android").replace("iPhone", "Android").replace("apk_partner_name=appstore", "apk_partner_name=android");
|
|
|
+ // config.headers.Cookie = getFixAndroidCookie();
|
|
|
|
|
|
// magicJS.logger.info(`${config.headers.Cookie}`);
|
|
|
}
|
|
|
@@ -157,11 +158,16 @@ async function getWebOrAppCookie() {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+function getFixAndroidCookie() {
|
|
|
+ return currentCookie.replace("iphone", "android")
|
|
|
+ .replace("iPhone", "Android")
|
|
|
+ .replace("apk_partner_name=appstore", "apk_partner_name=android");
|
|
|
+}
|
|
|
+
|
|
|
function robotToken() {
|
|
|
return new Promise(async (resolve, reject) => {
|
|
|
const ts = Date.now();
|
|
|
- const smzdmKey = 'apr1$AwP!wRRT$gJ/q.X24poeBInlUJC';
|
|
|
- const preHash = `f=android&time=${ts}&v=${appVersion}&weixin=1&key=${smzdmKey}`;
|
|
|
+ const preHash = `f=android&time=${ts}&v=${appVersion}&weixin=1&key=${smzdmSignKey}`;
|
|
|
const md5 = createWMd5();
|
|
|
const sign = md5.hex_md5_32Upper(preHash);
|
|
|
const data = {
|
|
|
@@ -171,7 +177,7 @@ function robotToken() {
|
|
|
"time": ts,
|
|
|
"sign": sign
|
|
|
};
|
|
|
- let androidCookie = currentCookie.replace("iphone", "android").replace("iPhone", "Android").replace("apk_partner_name=appstore", "apk_partner_name=android");
|
|
|
+ let androidCookie = getFixAndroidCookie();
|
|
|
await magicJS.http.post({
|
|
|
url: "https://user-api.smzdm.com/robot/token",
|
|
|
headers: {
|
|
|
@@ -186,39 +192,51 @@ function robotToken() {
|
|
|
body: magicJS.objToQueryStr(data),
|
|
|
}).then(resp => {
|
|
|
let obj = resp.body;
|
|
|
- magicJS.logger.info(`robotTokenRet=${obj}`);
|
|
|
- if (typeof obj === "string") {
|
|
|
+ if (typeof obj === 'string') {
|
|
|
obj = JSON.parse(obj);
|
|
|
}
|
|
|
- resolve(obj);
|
|
|
+ if(obj.error_code == '0' && obj.data && obj.data.token){
|
|
|
+ magicJS.logger.info("Android端获取token成功");
|
|
|
+ resolve(obj.data.token);
|
|
|
+ }else{
|
|
|
+ magicJS.logger.warning(`Android端获取token失败,接口响应异常:${JSON.stringify(obj)}`);
|
|
|
+ resolve(null);
|
|
|
+ }
|
|
|
}).catch((err) => {
|
|
|
- magicJS.logger.error(`获取robotToken异常,${err}`);
|
|
|
- reject(err);
|
|
|
+ magicJS.logger.error(`Android端获取token异常,${err}`);
|
|
|
+ reject(err);
|
|
|
});
|
|
|
});
|
|
|
}
|
|
|
|
|
|
-function androidSignin(username) {
|
|
|
+function androidSignin(token) {
|
|
|
return new Promise(async (resolve, reject) => {
|
|
|
- const smzdmToken = currentCookie.slice(5);
|
|
|
- const smzdmKey = 'apr1$AwP!wRRT$gJ/q.X24poeBInlUJC';
|
|
|
- const outcome = Math.round(new Date().getTime() / 1000).toString();
|
|
|
- const rawData = `f=android&sk=${username}&time=${outcome}000&token=${smzdmToken}&v=9.9.12&weixin=1&key=${smzdmKey}`;
|
|
|
- let md5 = createWMd5();
|
|
|
- let sign = md5.hex_md5_32Upper(rawData);
|
|
|
- let androidCookie = currentCookie.replace("iphone", "android").replace("iPhone", "Android").replace("apk_partner_name=appstore", "apk_partner_name=android");
|
|
|
+ const ts = Date.now();
|
|
|
+ const preHash = `f=android&sk=${smzdmSK}&time=${ts}&token=${token}&v=${appVersion}&weixin=1&key=${smzdmSignKey}`;
|
|
|
+ const md5 = createWMd5();
|
|
|
+ const sign = md5.hex_md5_32Upper(preHash);
|
|
|
+ const data = {
|
|
|
+ "f": "android",
|
|
|
+ "v": appVersion,
|
|
|
+ "sk": smzdmSK,
|
|
|
+ "weixin": 1,
|
|
|
+ "time": ts,
|
|
|
+ "token": token,
|
|
|
+ "sign": sign
|
|
|
+ };
|
|
|
+ let androidCookie = getFixAndroidCookie();
|
|
|
await magicJS.http.post({
|
|
|
url: "https://user-api.smzdm.com/checkin",
|
|
|
headers: {
|
|
|
- 'User-Agent': androidUserAgent,
|
|
|
'Accept-Language': 'zh-Hans-CN;q=1',
|
|
|
'Accept-Encoding': 'gzip, deflate, br',
|
|
|
'Connection': 'Keep-Alive',
|
|
|
'request_key': randomStr(18),
|
|
|
'Content-Type': 'application/x-www-form-urlencoded',
|
|
|
'Cookie': androidCookie,
|
|
|
+ 'User-Agent': androidUserAgent,
|
|
|
},
|
|
|
- body: `sk=${username}&sign=${sign}&weixin=1&v=9.9.12&captcha=&f=android&token=${encodeURIComponent(smzdmToken)}&touchstone_event=&time=${outcome}000`,
|
|
|
+ body: magicJS.objToQueryStr(data, true),
|
|
|
}).then(resp => {
|
|
|
let obj = resp.body;
|
|
|
if (typeof obj === "string") {
|
|
|
@@ -231,10 +249,13 @@ function androidSignin(username) {
|
|
|
magicJS.logger.info("Android端重复签到");
|
|
|
resolve([true, "Android端重复签到"]);
|
|
|
} else {
|
|
|
- magicJS.logger.warning(`Android端签到出现异常,接口返回数据不合法:${JSON.stringify(obj)}`);
|
|
|
+ magicJS.logger.warning(`Android端签到出现异常,接口响应异常:${JSON.stringify(obj)}`);
|
|
|
reject("Android端签到异常");
|
|
|
}
|
|
|
- })
|
|
|
+ }).catch((err) => {
|
|
|
+ magicJS.logger.error(`Android端签到异常,${err}`);
|
|
|
+ reject(err);
|
|
|
+ });
|
|
|
});
|
|
|
}
|
|
|
|
|
|
@@ -534,8 +555,11 @@ async function multiUsersSignIn() {
|
|
|
// .catch((err) => {
|
|
|
// subTitle = `Android端签到异常: ${err}`;
|
|
|
// });
|
|
|
- let tokenData = await robotToken();
|
|
|
- magicJS.logger.info(`tokenData=${JSON.stringify(tokenData)}`);
|
|
|
+ let token = await robotToken();
|
|
|
+ magicJS.logger.info(`tokenData=${JSON.stringify(token)}`);
|
|
|
+ if(token){
|
|
|
+ await androidSignin(token);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
// // 日常任务
|