| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170 |
- const lk = new ToolKit(`电信助手`, `Telecom`);
- const TelecomConstKey = {
- // -----通用助手相关的-----
- Mobile: 'lkTelecomMobile',
- Password: 'lkTelecomPassword',
- SignCount: 'lkTelecomSignCount',
- Token: 'lkTelecomToken',
- };
- let telecomMobile = lk.getVal(TelecomConstKey.Mobile);
- let telecomPassword = lk.getVal(TelecomConstKey.Password);
- //公钥
- const publicKey = 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDBkLT15ThVgz6/NOl6s8GNPofdWzWbCkWnkaAm7O2LjkM1H7dMvzkiqdxU02jamGRHLX/ZNMCXHnPcW/sDhiFCBN18qFvy8g6VYb9QtroI09e176s+ZCtiv7hbin2cCTj99iUpnEloZm19lwHyo69u5UMiPMpq0/XKBO8lYhN/gwIDAQAB';
- //私钥
- const privateKey = '';
- const GCommoTelecomHeads = {
- "Accept": "application/json",
- "Content-Type": "application/json; charset=UTF-8",
- "Connection": "Keep-Alive",
- "Accept-Encoding": "gzip",
- };
- if (!lk.isExecComm) {
- if (lk.isRequest()) {
- checkHandleRequest();
- if (retBody) {
- lk.done({ body: JSON.stringify(retBody) });
- } else {
- lk.done();
- }
- }else{
- all();
- }
- }
- function checkHandleRequest() {
- }
- function getSignCount() {
- let SignCount = lk.getVal(TelecomConstKey.SignCount);
- let td = lk.formatDate(new Date(), 'yyyyMMdd');
- if (SignCount) {
- let [date, num] = SignCount.split('_');
- if (date == td && num) {
- return Number(num);
- } else {
- lk.setVal(TelecomConstKey.SignCount, `${td}_0`);
- return 0;
- }
- } else {
- lk.setVal(TelecomConstKey.SignCount, `${td}_0`);
- return 0;
- }
- }
- async function all() {
- if (!lk.isEmpty(telecomMobile) || !lk.isEmpty(telecomPassword)) {
- lk.log('⚠️ 请配置手机号(lkTelecomMobile)和密码(lkTelecomPassword)');
- return;
- }
- await doLogin();
- lk.msg('');
- lk.done();
- }
- //RSA加密
- function encryptRSA(data, key = publicKey) {
- let JSEncrypt = createJSEncrypt();
- let encryptor = new JSEncrypt()
- encryptor.setPublicKey(key)
- // 如果是对象/数组的话,需要先JSON.stringify转换成字符串
- return encryptor.encrypt(data)
- }
- //rea解密
- function decryptRSA(data, key = privateKey) {
- let JSEncrypt = createJSEncrypt();
- let encryptor = new JSEncrypt()
- encryptor.setPrivateKey(key)
- // 如果是对象/数组的话,需要先JSON.stringify转换成字符串
- return encryptor.decrypt(data)
- }
- function transPhone(phoneNum) {
- let result = '';
- let ArrPhone = phoneNum.toString().split('');
- for (let i = 0; i < 11; i++) {
- result = `${result}` + String.fromCharCode(ArrPhone[i].charCodeAt(0) + 2 & 65535);
- }
- return result;
- }
- async function doLogin(){
- if (getSignCount() > 10) {
- lk.appendNotifyInfo('⚠️ 当日登录已超过10次! 请明天再试');
- return;
- }
- let timestamp = lk.formatDate(new Date(),'yyyyMMddHHmm00')
- let loginStr = `iPhone 14 16.6.1${telecomMobile}${telecomMobile}${timestamp}${telecomPassword}0$$$0.`;
- let body = {
- content: {
- fieldData: {
- accountType: '',
- authentication: telecomPassword,
- deviceUid: `3${telecomMobile}`,
- isChinatelecom: '0',
- loginAuthCipherAsymmertric: encryptRSA(loginStr),
- loginType: "4",
- phoneNum: transPhone(telecomMobile),
- systemVersion: "16.6.1",
- },
- attach: "iPhone",
- },
- headerInfos: {
- clientType: '#9.6.1#channel50#iPhone 14 Pro#',
- code: 'userLoginNormal',
- shopId: '20002',
- source: '110003',
- sourcePassword: 'Sid98s',
- timestamp: timestamp,
- userLoginName: telecomMobile,
- }
- }
- lk.log('--- request body:');
- lk.log(JSON.stringify(body));
- let reqData = {
- url: "https://appgologin.189.cn:9031/login/client/userLoginNormal",
- headers: GCommoTelecomHeads,
- body: JSON.stringify(body),
- };
- lk.post(reqData, async (error, _response, data) => {
- let ret;
- try {
- if (error) {
- lk.log(`请求发生错误`);
- lk.execFail();
- } else {
- lk.log('--- response body:');
- lk.log(data);
- let info = JSON.parse(data);
- let loginInfo = info.responseData.data.loginSuccessResult;
- if (loginInfo && loginInfo.token) {
- lk.setVal(TelecomConstKey.Token, loginInfo.token);
- }else{
- let errMsg = data.responseData.resultDesc || data.headerInfos.reason;
- if(errMsg){
- lk.appendNotifyInfo(`⚠️ ${errMsg}`);
- }
- }
- }
- } catch (e) {
- lk.log(`请求发生错误`);
- lk.logErr(e);
- lk.execFail();
- } finally {
- resolve(ret);
- }
- });
- }
|