using System; using System.Security.Cryptography; using System.Text; using System.Threading; using AllBase; using NaiBa.Util.Extension; namespace Work { public class UserLogin { public string Mobile; public string Password; public static bool Logining = false, NoRegedit = false, NoFindPass = false, NoBuy = false; /// /// 登录 /// /// /// public bool Get(ref string message, out int lockUserName, out int weakPassword, out string messageInfo) { bool IsLoginDef = false; Logining = true; string mobile = Mobile; string password = Password; string passwordMd5; if (password == "******") passwordMd5 = BaseClass.PassWord; else passwordMd5 = Md5Base.GetMd5(password).ToLower(); BaseClass.PassWord = passwordMd5; BaseClass.PassWordBak = BaseClass.PassWord; BaseClass.UserName = Mobile; Random r = new Random(); int r2 = r.Next(100000000, 899999999); //生成随机码 string url = BaseClass.BuildObjString("user/user_login"); for (int j = 0; j < 100 && string.IsNullOrEmpty(BaseClass.MacInfo); j++) { Thread.Sleep(10); } Agian: string data = "mobile=" + mobile + "&r2=" + r2 + "&password=" + passwordMd5 + "&" + GetSignature() + "&mac=" + BaseClass.MacInfo + "&version=" + BaseClass.VersionCount; data += "&from_tool=" + GetHtml.UrlEncodeUtf8(BaseClass.AgentName) + "&client_ip=" + GetHtml.UrlEncodeUtf8(BaseClass.IPAddress) + "+&client_addr=" + GetHtml.UrlEncodeUtf8(BaseClass.IPAddressName); string html = GetHtml.PostUtf8(url, data); lockUserName = -1; weakPassword = -1; messageInfo = ""; if (string.IsNullOrEmpty(html) || html.Contains("Error No File")) { if (!IsLoginDef) { IsLoginDef = true; url = BaseClass.BuildObjString("user/user_login", true); goto Agian; } message = "链接服务器失败\r\n" + "如有问题请联系官方QQ:" + BaseClass.ServiceQQ; return false; } if (!html.Contains("\"code\":200")) { var errMsg = BaseRegex.GetStringJson(ref html, "msg"); if (string.IsNullOrEmpty(errMsg)) errMsg = html; message = errMsg; return false; } string code = BaseRegex.GetStringJson(ref html, "c"); string codex = Encryption(r2); if (code != codex) { message = "登录失败\r\n链接异常请重试"; return false; } BaseClass.UserId = BaseRegex.GetStringJson(ref html, "id").ParseToInt(); BaseClass.UserKey = BaseRegex.GetStringJson(ref html, "user_key").ParseToInt(); BaseClass.NickName = BaseRegex.GetStringJson(ref html, "nick_name"); BaseClass.UserName = BaseRegex.GetStringJson(ref html, "user_name"); BaseClass.ParentUserName = BaseRegex.GetStringJson(ref html, "parent_user_name"); BaseClass.SaLevel = BaseRegex.GetIntJson(ref html, "sa_level").ParseToInt(); BaseClass.UserAuthority = BaseRegex.GetStringJson(ref html, "authority").ParseToString(); BaseClass.ParentAuthority = BaseRegex.GetStringJson(ref html, "parent_authority").ParseToString(); BaseClass.Mobile = BaseRegex.GetStringJson(ref html, "mobile"); BaseClass.UserVersion = BaseRegex.GetStringJson(ref html, "version").ParseToInt(); BaseClass.UserVersionString = BaseRegex.GetStringJson(ref html, "version_s"); BaseClass.CompanyId = BaseRegex.GetStringJson(ref html, "company_Id").ParseToInt(); BaseClass.GroupId = BaseRegex.GetStringJson(ref html, "group_id").ParseToInt(); BaseClass.AuthorizedAmount = BaseRegex.GetNullableDecimalJson(ref html, "authorized_amount"); BaseClass.Points = BaseRegex.GetStringJson(ref html, "points").ParseToInt(); if (BaseClass.GroupId != 3 && BaseClass.GroupId != 4 && BaseClass.GroupId != 9 && BaseClass.GroupId != 10 && BaseClass.GroupId != 11) { BaseClass.UserId = 0; BaseClass.UserKey = 0; return false; } BaseClass.EndDate = BaseRegex.GetStringJson(ref html, "end"); BaseClass.CompanyName = BaseRegex.GetStringJson(ref html, "company_name"); if (BaseClass.UserVersion == 3) { BaseClass.QqGroupNum = BaseRegex.GetStringJson(ref html, "qq_group_num"); BaseClass.QqGroupUrl = BaseRegex.GetStringJson(ref html, "qq_group_url"); BaseClass.WechatUrl = BaseRegex.GetStringJson(ref html, "wechat_url"); } if (BaseClass.UserVersion == 3 || BaseClass.UserVersion == 4 || BaseClass.UserVersion == 5 || BaseClass.UserVersion == 10 || BaseClass.UserVersion == 9) { BaseClass.IsPinduoduo = BaseRegex.GetStringJson(ref html, "pinduoduo") == "1"; BaseClass.AlimamaDomain = BaseRegex.GetStringJson(ref html, "alimama_domain"); BaseClass.AlimamaPid = BaseRegex.GetStringJson(ref html, "alimama_pid"); } if (!BaseClass.UserApi && BaseClass.UserVersion != 110) BaseClass.UserVersion = 100; if (BaseClass.UserVersion == 110) BaseClass.ClientId = BaseSpecialConfig.ToolClientId; // 特别版本,使用指定ClientId string islock = BaseRegex.GetStringJson(ref html, "is_lock"); int.TryParse(islock, out lockUserName); string isweak = BaseRegex.GetStringJson(ref html, "is_weak_password"); int.TryParse(isweak, out weakPassword); messageInfo = BaseRegex.GetStringJson(ref html, "message"); // 代理权限列表 string agent_auth = BaseRegex.GetStringJson(ref html, "agent_auth"); if (!string.IsNullOrEmpty(agent_auth) && agent_auth != "0") { var strArr = agent_auth.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries); foreach (var item in strArr) { var itemArr = item.Split(','); if (itemArr.Length == 2) { BaseClass.AgentAuth[itemArr[0]] = itemArr[1]; } } } BaseClass.IsLoginSuccess = true; Initialization i = new Initialization(); i.SaveConfig(); ///new Thread(i.GetBaiduCookies).Start(); //new Thread(IdFessionTaobao.SaveHtmlToSereve).Start(); // 开启一个线程用于写入商品详情缓存数据 return true; } /// /// 注册账户 /// /// 手机 /// 密码 /// 验证码 /// 昵称 /// 邮箱 /// /// public bool Regedit(string mobile, string password, string code, string nickname, string email, out string message) { string passwordMd5 = Md5Base.GetMd5(password).ToLower(); string url = BaseClass.BuildObjString("regedit"); string data = "mobile=" + mobile + "&password=" + passwordMd5 + "&sms_code=" + code + "&nickname=" + GetHtml.UrlEncodeUtf8(nickname) + "&email=" + email + "&" + GetSignature(); string html = GetHtml.PostUtf8(url, data); if (string.IsNullOrEmpty(html) || html.Contains("Error No File")) { message = "提交请求失败,请重试,如仍失败请尝试以下方法:\r\n" + "1、Win7、8、10系统请(右击)使用管理员权限运行\r\n" + "2、检查网络链接是否正确、杀毒防火墙等是否禁止链接(可卸载后再次登录)\r\n" + "3、请不要使用代理上网,更换为路由或者直接链接\r\n" + "4、可先卸载杀毒软件或者安全卫士,软件正常联网后,重新安装杀毒\r\n" + "5、如以上方法依然无法解决,可联系客服QQ:" + BaseClass.ServiceQQ + " 协助"; return false; } if (!html.Contains("\"code\":200")) { var errMsg = BaseRegex.GetStringJson(ref html, "msg"); if (string.IsNullOrEmpty(errMsg)) errMsg = html; message = errMsg; if (message.Contains("手机号码已被注册")) { message = message.Replace("手机号码已被注册", "手机号码已被注册,请直接登录或找回密码"); } if (message.Contains("短信验证码错误")) { message = "短信验证码错误,请重新输入\r\n如果接收不到,请联系客服QQ:" + BaseClass.ServiceQQ + ""; } return false; } message = ""; return true; } /// /// 重置密码 /// /// /// /// /// /// public bool ResetPassword(string mobile, string code, string password, out string message) { string passwordMd5 = Md5Base.GetMd5(password).ToLower(); string url = BaseClass.BuildObjString("reset_password"); string data = "mobile=" + mobile + "&password=" + passwordMd5 + "&sms_code=" + code + "&" + GetSignature(); string html = GetHtml.PostUtf8(url, data); if (string.IsNullOrEmpty(html) || html.Contains("Error No File")) { message = "提交请求失败,请重试,如仍失败请尝试以下方法:\r\n" + "1、Win7、8、10系统请(右击)使用管理员权限运行\r\n" + "2、检查网络链接是否正确、杀毒防火墙等是否禁止链接(可卸载后再次登录)\r\n" + "3、请不要使用代理上网,更换为路由或者直接链接\r\n" + "4、可先卸载杀毒软件或者安全卫士,软件正常联网后,重新安装杀毒\r\n" + "5、如以上方法依然无法解决,可联系客服QQ:" + BaseClass.ServiceQQ + " 协助"; return false; } if (!html.Contains("\"code\":200")) { var errMsg = BaseRegex.GetStringJson(ref html, "msg"); if (string.IsNullOrEmpty(errMsg)) errMsg = html; message = errMsg; return false; } message = ""; return true; } /// /// 获取签名字符串 /// /// public static string GetSignature() { int time = BaseClass.DateTimeToTimestampSeconds(DateTime.Now) + BaseClass.TimeDifferent; string s = Encryption(time); //string s = GetMd5(time1); return "time=" + time + "&code=" + s + "&NbCodeVersion=1"; } public static bool IsPinduoduo = false; /// /// 获取签名字符串,新版 /// /// public static string GetSignaturex() { return GetSignaturex(BaseClass.ShopId, BaseClass.ShopName); } public static string GetSignaturex(string shopId, string shopName) { if (string.IsNullOrEmpty(shopId)) shopId = BaseClass.ShopId; if (string.IsNullOrEmpty(shopName)) shopName = BaseClass.ShopName; int time = BaseClass.DateTimeToTimestampSeconds(DateTime.Now) + BaseClass.TimeDifferent; string time1 = Encryption(time); //return "time=" + time + "&code=" + time1 + "&NbCodeVersion=1" + "&version=" + BaseClass.VersionCount + // "&company_id=" + BaseClass.CompanyId + "&company=" + GetHtml.UrlEncodeUtf8(BaseClass.CompanyName) + // "&user_name=" + BaseClass.UserName + "&user_key=" + BaseClass.UserKey + "&mobile=" + BaseClass.Mobile + // "&sid=" + shopId + "&shop=" + GetHtml.UrlEncodeUtf8(shopName); var sign = "time=" + time + "&code=" + time1 + "&code_version=1" + "&version=" + BaseClass.VersionCount + "&company_id=" + BaseClass.CompanyId + "&company=" + GetHtml.UrlEncodeUtf8(BaseClass.CompanyName) + "&user_name=" + BaseClass.UserName + "&user_key=" + BaseClass.UserKey + "&mobile=" + BaseClass.Mobile + "&sid=" + shopId + "&shop=" + GetHtml.UrlEncodeUtf8(shopName) + "&path=" + BaseClass.MainPath; return sign; } /// /// 签名算法 /// /// 随机数 /// 加密签名结果 public static string Encryptionxx(int s) { string ss = s.ToString(); if (ss.Length > 8) { ss = ss.Substring(ss.Length - 8); s = int.Parse(ss); if (s < 100000000) s += 100000000; } byte[] kb = Encoding.ASCII.GetBytes(s.ToString()); if (BaseClass.NewSignatureAuth) { double y = s * 1.6081825125; y += 4582095.48659959; y += kb[3] * 934579.486548; y += kb[7] + 4889894.30184; byte[] k = Encoding.ASCII.GetBytes(y.ToString()); y -= 478735.48548; y -= k[6] * 426720.454545; y -= k[2] * 5667826.96889; byte[] k1 = Encoding.ASCII.GetBytes(y.ToString()); y += 56979810.2455; y -= k1[1] * 58742.0564845; y -= k1[5] * 1528.487866; string c = ((int)y).ToString(); return GetMd5(c); //返回签名的MD5结果 } else { double y = s * 1.8061825125; y += 4852095.48659959; y += kb[3] * 943579.486548; y += kb[7] + 4889894.30184; byte[] k = Encoding.ASCII.GetBytes(y.ToString()); y -= 458735.48548; y -= k[6] * 458720.454545; y -= k[2] * 5447826.96889; byte[] k1 = Encoding.ASCII.GetBytes(y.ToString()); y += 34779810.2455; y -= k1[1] * 57942.0564845; y -= k1[5] * 1548.487866; string c = ((int)y).ToString(); return GetMd5(c); //返回签名的MD5结果 } //double y = s * 1.8061825125; //y += 4852095.48659959; //y += kb[3] * 943579.486548; //y += kb[7] + 4889894.30184; //byte[] k = Encoding.ASCII.GetBytes(y.ToString()); //y -= 458735.48548; //y -= k[6] * 458720.454545; //y -= k[2] * 5447826.96889; //byte[] k1 = Encoding.ASCII.GetBytes(y.ToString()); //y += 34779810.2455; //y -= k1[1] * 57942.0564845; //y -= k1[5] * 1548.487866; //string c = ((int)y).ToString(); //return GetMd5(c); //返回签名的MD5结果 } /// /// 签名算法 /// /// 随机数 /// 加密签名结果 //public static string Encryption(int s) //{ // string ss = s.ToString(); // if (ss.Length > 8) // { // ss = ss.Substring(ss.Length - 8); // s = int.Parse(ss); // if (s < 100000000) // s += 100000000; // } // byte[] kb = Encoding.ASCII.GetBytes(s.ToString()); // if (BaseClass.NewSignatureAuth) // { // double y = s * 1.6081825125; // y += 4582095.48659959; // y += kb[3] * 934579.486548; // y += kb[7] + 4889894.30184; // byte[] k = Encoding.ASCII.GetBytes(y.ToString()); // y -= 478735.48548; // y -= k[6] * 426720.454545; // y -= k[2] * 5667826.96889; // byte[] k1 = Encoding.ASCII.GetBytes(y.ToString()); // y += 56979810.2455; // y -= k1[1] * 58742.0564845; // y -= k1[5] * 1528.487866; // string c = ((int)y).ToString(); // return GetMd5(c); //返回签名的MD5结果 // } // else // { // double y = s * 1.8061825125; // y += 4852095.48659959; // y += kb[3] * 943579.486548; // y += kb[7] + 4889894.30184; // byte[] k = Encoding.ASCII.GetBytes(y.ToString()); // y -= 458735.48548; // y -= k[6] * 458720.454545; // y -= k[2] * 5447826.96889; // byte[] k1 = Encoding.ASCII.GetBytes(y.ToString()); // y += 34779810.2455; // y -= k1[1] * 57942.0564845; // y -= k1[5] * 1548.487866; // string c = ((int)y).ToString(); // return GetMd5(c); //返回签名的MD5结果 // } // //string ss = s.ToString(); // //if (ss.Length > 8) // //{ // // ss = ss.Substring(ss.Length - 8); // // s = int.Parse(ss); // // if (s < 100000000) // // s += 100000000; // //} // //byte[] kb = Encoding.ASCII.GetBytes(s.ToString()); // //double y = s * 1.8061825125; // //y += 4852095.48659959; // //y += kb[3] * 943579.486548; // //y += kb[7] + 4889894.30184; // //byte[] k = Encoding.ASCII.GetBytes(y.ToString()); // //y -= 458735.48548; // //y -= k[6] * 458720.454545; // //y -= k[2] * 5447826.96889; // //byte[] k1 = Encoding.ASCII.GetBytes(y.ToString()); // //y += 34779810.2455; // //y -= k1[1] * 57942.0564845; // //y -= k1[5] * 1548.487866; // //string c = ((int)y).ToString(); // //return GetMd5(c); //返回签名的MD5结果 //} /// /// 加密算法 /// /// 加密字符串 /// public static string Encryption(int s) { string sign = $"{s}sdhewu*/fhAAue48485ew5+5%@3485esGFFHFD"; return GetMd5(sign); //if (BaseClass.NewSignatureAuth) //{ // long s1 = 0; // int j = 6712; // while (s1 < 10000000) // { // string st = s1.ToString(); // if (s1 == 0) // st = s; // for (int i = 0; i < st.Length; i++) // { // j = j * (55 + i * 6) + i; // if (j > 100000) // j = j % 3267; // int ai = (int)char.Parse(st.Substring(i, 1)); // if (ai < 128) // { // s1 += ai * (i + 3) * j; // } // } // } // return s1.ToString(); //返回签名的MD5结果 //} //else //{ // long s1 = 0; // int j = 7684; // while (s1 < 10000000) // { // string st = s1.ToString(); // if (s1 == 0) // st = s; // for (int i = 0; i < st.Length; i++) // { // j = j * (55 + i * 6) + i; // if (j > 100000) // j = j % 2367; // int ai = (int)char.Parse(st.Substring(i, 1)); // if (ai < 128) // { // s1 += ai * (i + 3) * j; // } // } // } // return s1.ToString(); //返回签名的MD5结果 //} //long s1 = 0; //int j = 7684; //while (s1 < 10000000) //{ // string st = s1.ToString(); // if (s1 == 0) // st = s; // for (int i = 0; i < st.Length; i++) // { // j = j * (55 + i * 6) + i; // if (j > 100000) // j = j % 2367; // int ai = (int)char.Parse(st.Substring(i, 1)); // if (ai < 128) // { // s1 += ai * (i + 3) * j; // } // } //} //return s1.ToString(); //返回签名的MD5结果 } public string Get(string key) { if (string.IsNullOrEmpty(key)) return ""; byte[] inArray = Convert.FromBase64String(key.Replace("/", "=")); string html = Encoding.UTF8.GetString(inArray); html = html.Replace("C", "1"); html = html.Replace("Q", "6"); html = html.Replace("I", "2"); html = html.Replace("L", "0"); html = html.Replace("Z", "9"); html = html.Replace("O", "5"); html = html.Replace("P", "8"); html = html.Replace("D", "7"); html = html.Replace("R", "b"); html = html.Replace("S", "c"); html = html.Replace("J", "a"); return html; } /// /// MD5加密 /// /// /// public static string GetMd5(string instring) { byte[] result = Encoding.Default.GetBytes(instring.Trim()); MD5 md5 = new MD5CryptoServiceProvider(); byte[] output = md5.ComputeHash(result); return BitConverter.ToString(output).Replace("-", ""); } /// /// 获取验证码 /// /// /// /// public static string SendCode(string mobile, out bool success) { string url = BaseClass.BuildObjString("sms_gate"); string data = "mobile=" + mobile + "&" + GetSignature(); string html = GetHtml.PostUtf8(url, data); success = false; if (string.IsNullOrEmpty(html) || html.Contains("Error No File")) { return "提交请求失败,请重试,如仍失败请尝试以下方法:\r\n" + "1、Win7、8、10系统请(右击)使用管理员权限运行\r\n" + "2、检查网络链接是否正确、杀毒防火墙等是否禁止链接(可卸载后再次登录)\r\n" + "3、请不要使用代理上网,更换为路由或者直接链接\r\n" + "4、可先卸载杀毒软件或者安全卫士,软件正常联网后,重新安装杀毒\r\n" + "5、如以上方法依然无法解决,可联系客服QQ:" + BaseClass.ServiceQQ + " 协助"; } if (!html.Contains("\"code\":200")) { var errMsg = BaseRegex.GetStringJson(ref html, "msg"); if (string.IsNullOrEmpty(errMsg)) errMsg = html; return errMsg; } success = true; return ""; } public static string JsCode = @"var auth = { getPublicKey: function() { var _this = this; Helper.get(""earth/api/queryPasswordEncrypt"", {}).then(function(d) { if (d.success) { _this.passwordEncrypt = d.result.passwordEncrypt; _this.publicKey = d.result.publicKey; _this.authCode(); } }); }, authCode: function() { var _this = this; Helper.post(""earth/api/merchant/getCaptchaCode"", { sceneId: 15 }).then(function(t) { if (t.success) { $img = document.querySelector('#tuxing').nextElementSibling; $img.setAttribute('src', t.result.picture); _this.captChaCodeUrl = t.result.picture; _this.token = t.result.sign; _this.__callback && _this.__callback.apply(_this); } }) }, setStartTime: function(e) { var t = (new Date).getTime(); if (e == 'usernameId') { this.mobileInputEditStartTime = t; } else if (e == 'passwordId') { this.passwordInputEditStartTime = t; } else if (e == 'authCode') { this.captureInputEditStartTime = t; } }, setEndTime: function(e) { var t = (new Date).getTime(); if (e == 'usernameId') { this.mobileInputEditFinishTime = t; } else if (e == 'passwordId') { this.passwordInputEditFinishTime = t; } else if (e == 'authCode') { this.captureInputEditFinishTime = t; } }, setKeyboardEvent: function(e, t, n) { for (var r = """", i = 0, a = 0, o = 0, s = """", l = 0; l < t.length; l++) ""9"" == t[l].keyCode ? i = 1 : ""17"" == t[l].keyCode || ""91"" == t[l].keyCode ? a = 1 : ""86"" == t[l].keyCode && (o = 1), r += 0 == l ? t[l].time - e : t[l].time - t[l - 1].time, l < t.length - 1 && (r += ""-""); s += i + ""|"" + a + ""|"" + o + ""|"" + r; this[n] = s; }, getKeyCode: function(e, t) { var n = this, r = this.mobileInputKeyboardEventList, i = this.passwordInputKeyboardEventList, a = this.captureInputKeyboardEventList, o = (new Date).getTime(), s = { time: o, keyCode: t.keyCode }; if (e == 'usernameId') { r.push(s); r = r.filter(function(e, t) { return null != e.keyCode; }); this.mobileInputKeyboardEventList = r; this.setKeyboardEvent(this.mobileInputEditStartTime, r, 'mobileInputKeyboardEvent'); } if (e == 'passwordId') { i.push(s); i = i.filter(function(e, t) { return null != e.keyCode }); this.passwordInputKeyboardEventList = i; this.setKeyboardEvent(this.passwordInputEditStartTime, i, 'passwordInputKeyboardEvent'); } if (e == 'authCode') { a.push(s); a = a.filter(function(e, t) { return null != e.keyCode }); this.captureInputKeyboardEventList = a; this.setKeyboardEvent(this.captureInputEditStartTime, i, 'captureInputKeyboardEvent'); } }, UIEvents: function() { var _this = this; // 模拟键盘输入 var username = new Promise(function(resolve, reject) { var keys = _this.options.username.split(''); var quque = function() { if (!keys.length) { resolve(); return; } var key = keys[0].charCodeAt(0), event = {keyCode: key}; setTimeout(function() { _this.setEndTime('usernameId'); _this.getKeyCode('usernameId', event); keys.shift(); quque(); }, 10); }; _this.setStartTime('usernameId'); quque(); }); var password = new Promise(function(resolve, reject) { var keys = _this.options.password.split(''); var quque = function() { if (!keys.length) { resolve(); return; } var key = keys[0].charCodeAt(0), event = {keyCode: key}; setTimeout(function() { _this.setEndTime('passwordId'); _this.getKeyCode('passwordId', event); keys.shift(); quque(); }, 10); }; _this.setStartTime('passwordId'); quque(); }); var authCode = new Promise(function(resolve, reject) { var keys = _this.options.verifyCode.split(''); var quque = function() { if (!keys.length) { resolve(); return; } var key = keys[0].charCodeAt(0), event = {keyCode: key}; setTimeout(function() { _this.setEndTime('authCode'); _this.getKeyCode('authCode', event); keys.shift(); quque(); }, 10); }; _this.setStartTime('authCode'); quque(); }); Promise.all([username, password, authCode]).then(function(values) { _this.login(); }); }, login: function() { var _this = this, params = {} $btn = document.querySelector('#loginBtnId') offset = $btn.getBoundingClientRect(), btnPoint = parseInt(offset.x + (offset.width / 2)) + ',' + parseInt(offset.y + (offset.height / 2)); params = { username: this.options.username, password: this.options.password, verifyCode: this.options.verifyCode, verificationCode: """", sign: this.token, touchevent: { mobileInputEditStartTime: this.mobileInputEditStartTime, mobileInputEditFinishTime: this.mobileInputEditFinishTime, mobileInputKeyboardEvent: this.mobileInputKeyboardEvent, passwordInputEditStartTime: this.passwordInputEditStartTime, passwordInputEditFinishTime: this.passwordInputEditFinishTime, passwordInputKeyboardEvent: this.passwordInputKeyboardEvent, captureInputEditStartTime: this.captureInputEditStartTime, captureInputEditFinishTime: this.captureInputEditFinishTime, captureInputKeyboardEvent: this.captureInputKeyboardEvent, loginButtonTouchPoint: btnPoint, loginButtonClickTime: (new Date).getTime() }, fingerprint: { innerHeight: window.innerHeight, innerWidth: window.innerWidth, devicePixelRatio: window.devicePixelRatio, availHeight: screen.availHeight, availWidth: screen.availWidth, height: screen.height, width: screen.width, colorDepth: screen.colorDepth, locationHref: location.href, navigator: { appCodeName: navigator.appCodeName, appName: navigator.appName, hardwareConcurrency: navigator.hardwareConcurrency, language: navigator.language, cookieEnabled: navigator.cookieEnabled, platform: navigator.platform, doNotTrack: navigator.doNotTrack, ua: navigator.ua, vendor: navigator.vendor, product: navigator.product, productSub: navigator.productSub }, referer: document.referrer, timezoneOffset: (new Date).getTimezoneOffset() } } if (this.passwordEncrypt) { var p = new JSEncrypt; p.setPublicKey(this.publicKey); params.password = p.encrypt(params.password); params.passwordEncrypt = true; } Helper.post(""nomallid/auth"", params).then(function(e) { if (e.error_msg) { console.log(e); //alert('login error'); return; } localStorage.setItem(""PASSID"", e.pass_id); Helper.saveToSessionStorage(""old_easy_psd"", { old_easy_psd: params.password}); _this.handerAfterAjax(e.userInfo, params.username); }, function() { //alert('login Error'); }); }, handerAfterAjax: function(e, n) { Helper.saveToLocalStorage(""old_username"", { username: n }); window.mall_id = e.mallId; Pdd.saveToLocalStorage(""username"", n); Helper.queryUserinfo(function(e) { window.g_mall_id = e.mallId; e.error_msg || Helper.saveToLocalStorage(""userinfo"", e); window.location.href = location.origin + location.pathname + '#/index?pre=log_page'; }); }, send(options) { this.options = Object.assign({}, options); this.UIEvents(); }, /**/ init: function(callback) { this.passwordEncrypt = null; this.publicKey = null; this.captChaCodeUrl = null; this.token = null; this.mobileInputEditStartTime = """"; this.mobileInputEditFinishTime = """"; this.mobileInputKeyboardEvent = """"; this.mobileInputKeyboardEventList = []; this.passwordInputEditStartTime = """"; this.passwordInputEditFinishTime = """"; this.passwordInputKeyboardEvent = """"; this.passwordInputKeyboardEventList = []; this.captureInputEditStartTime = """"; this.captureInputEditFinishTime = """"; this.captureInputKeyboardEvent = """"; this.captureInputKeyboardEventList = []; this.loginButtonTouchPoint = """"; this.loginButtonClickTime = """"; this.__callback = callback || null; this.getPublicKey(); } };auth.init();"; } }