using AllBase.Helper; using AllBase.Model.Result; using TemuKJD.BaseForms; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using AllBase; using NaiBa.Util.Extension; using Newtonsoft.Json.Linq; using Work; using TemuKJD.BLL; using CefSharp; namespace TemuKJD.PDDForms.ShopForms { public enum SetCookieFromEnum { normal_user, sa, } public partial class PDDShopUpdateCookieForm : LRBaseForm { ShopLoginInfo shop = null; SetCookieFromEnum updateFrom; string cookieVersion = ""; public PDDShopUpdateCookieForm(ShopLoginInfo _shop = null, SetCookieFromEnum from = SetCookieFromEnum.normal_user, string _cookieVersion="国内版") { InitializeComponent(); shop = _shop; updateFrom = from; cookieVersion = _cookieVersion; this.TitleText = "更新Cookie"; if (cookieVersion == "国内版") this.radioButton1.Checked = true; else this.radioButton2.Checked = true; } private void ShopUpdateCookieForm_Load(object sender, EventArgs e) { if (shop != null) txtLoginName.Text = shop.LoginName + " " + shop.ShopAccount + " " + shop.Notes; } /* localStorage.clear(); sessionStorage.clear(); var cookieDate = new Date(2037, 01, 01); var cookieDateEnd = new Date(2000, 01, 01); document.cookie = "SUB_PASS_ID=; path='/'; expires=" + cookieDateEnd.toUTCString(); document.cookie = "_nano_fp=; path='/'; expires=" + cookieDateEnd.toUTCString(); document.cookie = "api_uid=; path='/'; domain=.kuajingmaihuo.com; expires=" + cookieDateEnd.toUTCString(); document.cookie = "_bee=; path='/'; domain=.kuajingmaihuo.com; expires=" + cookieDateEnd.toUTCString(); document.cookie = "ru2k=; path='/'; domain=.kuajingmaihuo.com; expires=" + cookieDateEnd.toUTCString(); document.cookie = "_f77=; path='/'; domain=.kuajingmaihuo.com; expires=" + cookieDateEnd.toUTCString(); document.cookie = "_a42=; path='/'; domain=.kuajingmaihuo.com; expires=" + cookieDateEnd.toUTCString(); document.cookie = "rckk=; path='/'; domain=.kuajingmaihuo.com; expires=" + cookieDateEnd.toUTCString(); document.cookie = "ru1k=; path='/'; domain=.kuajingmaihuo.com; expires=" + cookieDateEnd.toUTCString(); document.cookie = "api_uid=CmP1wGhwa64RUwBSBILCAg==; path='/'; expires=" + cookieDate.toUTCString(); document.cookie = "_nano_fp=XpmyX5gbl09jlpdoXo_mijphq7nL0UmRaA77jyt3; domain=.kuajingmaihuo.com; path='/'; expires=" + cookieDate.toUTCString(); document.cookie = "_bee=NkjhfozSFfDuGSJ2zBlOqjOh3KVvJam3; path='/'; expires=" + cookieDate.toUTCString(); document.cookie = "_f77=2f854ce8-8d0f-4a78-84a1-04e19842a1cb; path='/'; expires=" + cookieDate.toUTCString(); document.cookie = "_a42=1e97ae4a-c357-4c22-a53f-db43655371e3; path='/'; expires=" + cookieDate.toUTCString(); document.cookie = "rckk=NkjhfozSFfDuGSJ2zBlOqjOh3KVvJam3; path='/'; expires=" + cookieDate.toUTCString(); document.cookie = "ru1k=2f854ce8-8d0f-4a78-84a1-04e19842a1cb; path='/'; expires=" + cookieDate.toUTCString(); document.cookie = "ru2k=1e97ae4a-c357-4c22-a53f-db43655371e3; path='/'; expires=" + cookieDate.toUTCString(); document.cookie = "SUB_PASS_ID=eyJ0IjoiRDZZY1F2N2JjMnZNK1E0eEZjTm1GVmxsN20yN3N3Ymg2dnVjdmxiclZPQW5uRkJlendUOUtKTHRoWHJyZWlNUCIsInYiOjEsInMiOjEwMDAwLCJ1IjoyMzAxMjcwOTkwNDI5OH0=; domain=.kuajingmaihuo.com; path='/'; expires=" + cookieDate.toUTCString(); location.reload(); window.location.href = 'https://seller.kuajingmaihuo.com/goods/product/list'; */ private void btnOk_Click(object sender, EventArgs e) { if (shop == null) { BaseMsgForm.ShowError("店铺为空!"); return; } cookieVersion = this.radioButton1.Checked ? "国内版" : "国际版"; bool ok1 = false; bool ok2 = false; if ((this.txtCookieJs1.Text.Contains("PASS_ID") /*&& this.txtCookieJs1.Text.Contains("api_uid")*/) || !string.IsNullOrWhiteSpace(txtSubPassId.Text)) { ok1 = GetCookie1(); } if (this.txtCookieJs2.Text.Contains("seller_temp") || !string.IsNullOrWhiteSpace(txtSellerTemp.Text)) // 国际版 { ok2 = GetCookie2(); } if (ok1 || ok2) { this.OnSaveComplete(shop); this.Close(); } else { BaseMsgForm.ShowError("缺少关键cookie字段,请确认是店铺登录的cookie!"); } } bool GetCookie1() { string txt = this.txtCookieJs1.Text; txt = txt.Replace("PASS_ID=;", "").Replace("JSESSIONID=;", "").Replace("_nano_fp=;", "").Replace("api_uid=;", "") .Replace("_bee=;", "").Replace("_f77=;", "").Replace("mms_b84d1838=", "") .Replace("_a42=;", "").Replace("rckk=;", "").Replace("ru1k=;", "").Replace("ru2k=;", "") .Replace("webp=;", "").Replace("x-visit-time=;", ""); string JSESSIONID = BaseRegex.GetStringCookie(ref txt, "JSESSIONID").ParseToString().Trim('\'', '\n', '\r'); string _nano_fp = BaseRegex.GetStringCookie(ref txt, "_nano_fp").ParseToString().Trim('\'', '\n', '\r'); string api_uid = BaseRegex.GetStringCookie(ref txt, "api_uid").ParseToString().Trim('\'', '\n', '\r'); string _bee = BaseRegex.GetStringCookie(ref txt, "_bee").ParseToString().Trim('\'', '\n', '\r'); string _f77 = BaseRegex.GetStringCookie(ref txt, "_f77").ParseToString().Trim('\'', '\n', '\r'); string mms_b84d1838 = BaseRegex.GetStringCookie(ref txt, "mms_b84d1838").ParseToString().Trim('\'', '\n', '\r'); string _a42 = BaseRegex.GetStringCookie(ref txt, "_a42").ParseToString().Trim('\'', '\n', '\r'); string rckk = BaseRegex.GetStringCookie(ref txt, "rckk").ParseToString().Trim('\'', '\n', '\r'); string ru1k = BaseRegex.GetStringCookie(ref txt, "ru1k").ParseToString().Trim('\'', '\n', '\r'); string ru2k = BaseRegex.GetStringCookie(ref txt, "ru2k").ParseToString().Trim('\'', '\n', '\r'); string webp = BaseRegex.GetStringCookie(ref txt, "webp").ParseToString().Trim('\'', '\n', '\r'); string x_visit_time = BaseRegex.GetStringCookie(ref txt, "x-visit-time").ParseToString().Trim('\'', '\n', '\r'); string PASS_ID = BaseRegex.GetStringCookie(ref txt, "PASS_ID").ParseToString().Trim('\'', '\n', '\r'); if (!string.IsNullOrWhiteSpace(this.txtSubPassId.Text)) PASS_ID = this.txtSubPassId.Text.Trim(); if (string.IsNullOrEmpty(PASS_ID)) { BaseMsgForm.ShowError("Cookie缺少关键字段,请检查!"); return false; } string cookie = "_a42=" + _a42 + ";" + "_bee=" + _bee + ";" + "_f77=" + _f77 + ";" + "_nano_fp=" + _nano_fp + ";" + "api_uid=" + api_uid + ";" + "JSESSIONID=" + JSESSIONID + ";" + "mms_b84d1838=" + mms_b84d1838 + ";" + "PASS_ID=" + PASS_ID + ";" + "rckk=" + rckk + ";" + "ru1k=" + ru1k + ";" + "ru2k=" + ru2k + ";" + "webp=" + webp + ";" + "x-visit-time=" + x_visit_time + ";"; //PASS_ID=windows_1-txt3KQyFr2JBdl/PeNNwLLsMj2geDn/BnlN1xEg/hdkC8Kx5WrYvqwTCWi9i50ZfXH0jbMX80leYsfebgQ4kLQ_492379693_91339707; PddBrowser=1; api_uid=Ck3IU2jeM5VoLABZFGCTAg==; rckk=F0JWp023Drn2QqjzLaKOJ0omuqKhTPlC; _bee=F0JWp023Drn2QqjzLaKOJ0omuqKhTPlC; ru1k=f3d9839e-c5ed-430f-8a85-41e6827c526e; _f77=f3d9839e-c5ed-430f-8a85-41e6827c526e; ru2k=20807545-2762-4365-8aa8-b8de45bd76f0; _a42=20807545-2762-4365-8aa8-b8de45bd76f0 List cookieList = new List(); if (!string.IsNullOrEmpty(_a42)) cookieList.Add(new Cookie() { Domain = ".pinduoduo.com", Name = "_a42", Value = _a42, Expires = DateTime.Now.AddYears(1), HttpOnly = true, Secure = true, }); if (!string.IsNullOrEmpty(_bee)) cookieList.Add(new Cookie() { Domain = ".pinduoduo.com", Name = "_bee", Value = _bee, Expires = DateTime.Now.AddYears(1), HttpOnly = true, Secure = true, }); if (!string.IsNullOrEmpty(_f77)) cookieList.Add(new Cookie() { Domain = ".pinduoduo.com", Name = "_f77", Value = _f77, Expires = DateTime.Now.AddYears(1), HttpOnly = true, Secure = true, }); if (!string.IsNullOrEmpty(_nano_fp)) cookieList.Add(new Cookie() { Domain = "mms.pinduoduo.com", Name = "_nano_fp", Value = _nano_fp, Expires = DateTime.Now.AddDays(400), }); if (!string.IsNullOrEmpty(api_uid)) cookieList.Add(new Cookie() { Domain = ".pinduoduo.com", Name = "api_uid", Value = api_uid, Expires = DateTime.Now.AddDays(400), }); if (!string.IsNullOrEmpty(JSESSIONID)) cookieList.Add(new Cookie() { Domain = "mms.pinduoduo.com", Name = "JSESSIONID", Value = JSESSIONID, HttpOnly = true, }); if (!string.IsNullOrEmpty(mms_b84d1838)) cookieList.Add(new Cookie() { Domain = "mms.pinduoduo.com", Name = "mms_b84d1838", Value = mms_b84d1838, Expires = DateTime.Now.AddDays(100), }); if (!string.IsNullOrEmpty(PASS_ID)) cookieList.Add(new Cookie() { Domain = "mms.pinduoduo.com", Name = "PASS_ID", Value = PASS_ID, Expires = DateTime.Now.AddDays(30), HttpOnly = true, Secure = true, }); if (!string.IsNullOrEmpty(rckk)) cookieList.Add(new Cookie() { Domain = ".pinduoduo.com", Name = "rckk", Value = rckk, Expires = DateTime.Now.AddYears(1), HttpOnly = true, Secure = true, }); if (!string.IsNullOrEmpty(ru1k)) cookieList.Add(new Cookie() { Domain = ".pinduoduo.com", Name = "ru1k", Value = ru1k, Expires = DateTime.Now.AddYears(1), HttpOnly = true, Secure = true, }); if (!string.IsNullOrEmpty(ru2k)) cookieList.Add(new Cookie() { Domain = ".pinduoduo.com", Name = "ru2k", Value = ru2k, Expires = DateTime.Now.AddYears(1), HttpOnly = true, Secure = true, }); if (!string.IsNullOrEmpty(webp)) cookieList.Add(new Cookie() { Domain = "mms.pinduoduo.com", Name = "webp", Value = webp, Expires = DateTime.Now.AddDays(14), Path= "/home" }); if (!string.IsNullOrEmpty(x_visit_time)) cookieList.Add(new Cookie() { Domain = "mms.pinduoduo.com", Name = "x-visit-time", Value = x_visit_time, Expires = DateTime.Now.AddDays(100), }); if (PASS_ID.StartsWith("windows_1") && !cookieList.Any(c => c.Name == "PddBrowser")) cookieList.Add(new Cookie() { Domain = ".pinduoduo.com", Name = "PddBrowser", Value = "1", Expires = DateTime.Now.AddYears(1), }); cookie = JsonHelper.SerializeObject(cookieList); var cookieShop = new ShopLoginInfo(); cookieShop.Cookies = JsonHelper.SerializeObject(cookieList); var data = ""; data = PDDShopListForm.GetShopStatus(cookieShop); if (!data.Contains("\"success\":true") || data.Contains("会话已过期")) { BaseMsgForm.ShowError("cookie已失效!"); return false; } var username = BaseRegex.GetStringJson(ref data, "username"); var maskMobile = BaseRegex.GetStringJson(ref data, "mobile"); var mallName = BaseRegex.GetStringJson(ref data, "mall_name"); maskMobile = maskMobile.Split('*').Last(); if (string.IsNullOrWhiteSpace(maskMobile) || string.IsNullOrWhiteSpace(username) || string.IsNullOrWhiteSpace(mallName)) { BaseMsgForm.ShowError("店铺信息获取失败!"); return false; } if (!shop.LoginName.EndsWith(maskMobile) && shop.LoginName != username && shop.LoginName != mallName) { BaseMsgForm.ShowError("cookie与店铺不匹配,请核对店铺!"); return false; } List serverShopLst = new List(); var rst = ShopBLL.AdminGetServerShopLstForSetCookie(shop, serverShopLst); if (rst != "success") { BaseMsgForm.ShowError(rst); return false; } //如果店铺没有cookie登录过,处理店铺第一次登录(分裂cookie下的所有店铺) GetShopFirstLogin(data, serverShopLst); if (updateFrom == SetCookieFromEnum.normal_user) // 普通用户更新本地店铺 { var localShop = GlobalConfig.ShopLoginList.Where(v => v.LoginName == shop.LoginName).ToList(); foreach (var sc in localShop) { sc.Cookies = cookie; sc.LoginStatus = "登录成功"; } } shop.Cookies = cookie; shop.ShopId = username; shop.ShopAccount = mallName; shop.LoginStatus = "登录成功"; // 店铺更新写入到服务端 var url = BaseClass.BuildObjString("shop/mdy_shop"); var data1 = UserLogin.GetSignaturex() + "&login_name=" + shop.LoginName + "&new_shop_id=" + shop.ShopId + "&shop_account=" + shop.ShopAccount; var result = GetHtml.PostUtf8(url, data1); PDDShopListForm.UpdateServerShopCookies(shop); // 店铺cookie写入服务端,不同账号下的同名店铺一起更新cookie PDDShopLoginForm loginForm = new PDDShopLoginForm(shop); loginForm.openType = EnumOpenType.refresh_cookie; loginForm.ShowDialog(); return true; } bool GetCookie2() { string txt = this.txtCookieJs2.Text; txt = txt.Replace("_bee=;", "").Replace("_nano_fp=;", "").Replace("api_uid=;", "") .Replace("dilx=;", "").Replace("hfsc=;", "").Replace("mallid=;", "") .Replace("njrpl=;", "").Replace("seller_temp=;", ""); string api_uid = BaseRegex.GetStringCookie(ref txt, "api_uid").ParseToString().Trim('\''); string _nano_fp = BaseRegex.GetStringCookie(ref txt, "_nano_fp").ParseToString().Trim('\''); string _bee = BaseRegex.GetStringCookie(ref txt, "_bee").ParseToString().Trim('\''); string dilx = BaseRegex.GetStringCookie(ref txt, "dilx").ParseToString().Trim('\''); string hfsc = BaseRegex.GetStringCookie(ref txt, "hfsc").ParseToString().Trim('\''); string mallid = BaseRegex.GetStringCookie(ref txt, "mallid").ParseToString().Trim('\''); string njrpl = BaseRegex.GetStringCookie(ref txt, "njrpl").ParseToString().Trim('\''); string seller_temp = BaseRegex.GetStringCookie(ref txt, "seller_temp").ParseToString().Trim('\''); if (!string.IsNullOrWhiteSpace(txtSellerTemp.Text)) seller_temp = txtSellerTemp.Text.Trim(); string cookie2 = "api_uid=" + api_uid + ";" + "_nano_fp=" + _nano_fp + ";" + "_bee=" + _bee + ";" + "dilx=" + dilx + ";" + "hfsc=" + hfsc + ";" + "mallid=" + mallid + ";" + "njrpl=" + njrpl + ";" + "seller_temp=" + seller_temp + ";"; if (string.IsNullOrEmpty(seller_temp)) { BaseMsgForm.ShowError("Cookie缺少关键字段,请检查!\r\n请从Temu国际版https://agentseller.temu.com处获得cookie"); return false; } var cookieShop = new ShopLoginInfo(); cookieShop.Cookies2 = cookie2; var data = PDDShopListForm.GetShopStatus2(cookieShop); if (!data.Contains("\"success\":true")) { BaseMsgForm.ShowError("cookie已失效!"); return false; } //var maskMobile = BaseRegex.GetStringJson(ref data, "maskOwnerMobile"); //if (!shopLoginInfo.LoginName.EndsWith(maskMobile)) if (!data.Contains(shop.ShopAccount)) { BaseMsgForm.ShowError("cookie与国际版店铺不匹配,请核对店铺!"); return false; } List serverShopLst = new List(); var rst = ShopBLL.AdminGetServerShopLstForSetCookie(shop, serverShopLst); if (rst != "success") { BaseMsgForm.ShowError(rst); return false; } //如果店铺没有cookie登录过,处理店铺第一次登录(分裂cookie下的所有店铺) GetShopFirstLogin(data, serverShopLst); if (updateFrom == SetCookieFromEnum.normal_user) // 普通用户更新本地店铺 { var localShop = GlobalConfig.ShopLoginList.Where(v => v.LoginName == shop.LoginName).ToList(); foreach (var sc in localShop) { sc.Cookies2 = cookie2; sc.LoginStatus2 = "国际版在线"; } } shop.Cookies2 = cookie2; shop.LoginStatus2 = "国际版在线"; PDDShopListForm.UpdateServerShopCookies(shop); // 店铺cookie写入服务端,多店共用一个登录账号一组cookie return true; } /// /// 如果店铺没有cookie登录过,处理店铺第一次登录(分裂cookie下的所有店铺) /// /// void GetShopFirstLogin(string loginData, List lstServerShop) { if (this.shop == null) return; if (lstServerShop == null) lstServerShop = new List(); List lstShopCompany = new List(); var jObj = JObject.Parse(loginData); var jArr = jObj["result"]?["companyList"]?[0]?["malInfoList"] as JArray; if (jArr == null) jArr = new JArray(); foreach (var productObj in jArr) { var prod = JsonHelper.SerializeObject(productObj); ShopCompany sc = new ShopCompany() { AccountId = BaseRegex.GetStringJson(ref prod, "mallId"), AccountName = BaseRegex.GetStringJson(ref prod, "mallName"), LoginName = shop.LoginName, UserName = BaseClass.UserName, LoginStatus = "登录成功", }; lstShopCompany.Add(sc); } var lstShopCompanyCopy = lstShopCompany.ToList(); foreach (ShopCompany sc in lstShopCompanyCopy) { ShopLoginInfo newShop = new ShopLoginInfo() { UserName = shop.UserName, LoginName = shop.LoginName, Password = shop.Password, GroupName = shop.GroupName, ShopAccount = sc.AccountName, ShopId = sc.AccountId, SubUserName = shop.SubUserName, Notes = shop.Notes, }; var oldServerShop = lstServerShop.FirstOrDefault(s => s.LoginName == newShop.LoginName && s.ShopId == newShop.ShopId); if (oldServerShop == null) { if (updateFrom != SetCookieFromEnum.normal_user) ShopBLL.AdminAddServerShop(newShop); // 店铺写入到服务端 else ShopBLL.AddServerShop(newShop); // 店铺写入到服务端 } } } private void btnGetCookie_Click(object sender, EventArgs e) { //复制cookie var cookJs = @" document.body.innerHTML = '' + document.body.innerHTML; function geCookie() { var cookieText = document.cookie; navigator.clipboard.writeText(cookieText).then(function() { alert('复制cookie成功!'); }, function(err) { alert('复制cookie失败: ', err); }); }"; Clipboard.SetDataObject(cookJs); BaseMsgForm.ShowInfo("js复制成功"); } } }