From 8596133f25eb414baa2b03b6cd27356d405d6c34 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=85=88=E6=A3=AE=E5=90=B4?= <8402134@qq.com> Date: Tue, 13 Dec 2022 12:37:59 +0800 Subject: [PATCH] =?UTF-8?q?1.=E6=8A=96=E9=9F=B3=E4=BF=AE=E5=A4=8D,=202.?= =?UTF-8?q?=E6=A3=80=E6=B5=8Burl=E6=9C=89=E6=95=88=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- FLSystem/Forms/main.cs | 13 +- 类库/Api.Framework/Cps/DouyinApi.cs | 248 +++++++++++------- 类库/Api.Framework/Cps/douyin_form_login.cs | 167 +----------- .../WXSdk/Implement/WXClientImpl_HOOK.cs | 2 +- 4 files changed, 172 insertions(+), 258 deletions(-) diff --git a/FLSystem/Forms/main.cs b/FLSystem/Forms/main.cs index 45a2bbe..b6aac4c 100644 --- a/FLSystem/Forms/main.cs +++ b/FLSystem/Forms/main.cs @@ -574,16 +574,17 @@ namespace FLSystem.Forms //#endregion - System.Timers.Timer timer = new System.Timers.Timer(); - timer.Elapsed += Timer_Elapsed; - timer.Interval = 60 * 60 * 1000 * 5; - //timer.Interval = 1000 * 10; - timer.Start(); + //更新头像 + //System.Timers.Timer timer = new System.Timers.Timer(); + //timer.Elapsed += Timer_Elapsed; + //timer.Interval = 60 * 60 * 1000 * 5; + ////timer.Interval = 1000 * 10; + //timer.Start(); //下载黑名单 timerBlackUser = new System.Timers.Timer(1000); timerBlackUser.Elapsed += Timer_ElapsedBlackUser; - timer.Interval = 1000; + //timerBlackUser.Interval = 1000; timerBlackUser.Start(); } catch (Exception ex) diff --git a/类库/Api.Framework/Cps/DouyinApi.cs b/类库/Api.Framework/Cps/DouyinApi.cs index 94d4733..840b183 100644 --- a/类库/Api.Framework/Cps/DouyinApi.cs +++ b/类库/Api.Framework/Cps/DouyinApi.cs @@ -64,51 +64,81 @@ namespace Api.Framework.Cps try { var jObj = JObject.Parse(html); - if (jObj != null && jObj["code"] != null) + if (jObj["code"] == null || jObj["code"].Value() != 0) { - var db = ApiClient.GetSession(); - var code = jObj["code"].ToString(); - if (code == "0") + if (jObj["msg"]?.Value() == "Something went wrong, please refresh") { - #region 获取用户信息 - - var shop_id = jObj["data"]["shop_id"].ToString(); - if (shop_id == "0") - throw new Exception($@"该账号未开通商品分享功能,请开通后重试 - -注:开通电商权限,需要同时满足以下4个条件 -①、账号实名认证 -②、个人主页视频数(公开且审核通过)≥ 10 条 -③、账号粉丝量(绑定第三方粉丝量不计数)≥ 1000 -④、商品分享保证金 ¥500立即充值"); - - var uname = jObj["data"]["buyin_account_id"].ToString(); - - var m = db.Queryable().First(f => f.cpstype == CpsType.抖音联盟 && f.username == uname); - if (m == null) - m = new fl_cps_member(); - m.cookies = ck; - m.usernick = jObj["data"]["shop_name"].ToString(); - //LoginUserId = jObj["data"]["user_id"].ToString(); - m.username = uname; - m.logintime = DateTime.Now; - - m.online = true; - m.is_valid = true; - m.cpstype = CpsType.抖音联盟; - return m; - #endregion + throw new Exception("账号尚未开通商品分享功能"); } - else if (code == "401") - { - if (jObj["msg"].ToString() == "请重新登录") - { - throw new Exception("填写的Cookice无效,请填写有效的cookice"); - } - } - else - throw new Exception($"其他:{jObj["msg"].ToString()}"); + throw new Exception(html); } + + var db = ApiClient.GetSession(); + var username = jObj["data"]?["outer_id"]?.ToString(); + var m = db.Queryable().First(f => f.cpstype == CpsType.抖音联盟 && f.username == username); + if (m == null) + { + m = new fl_cps_member(); + } + + m.cookies = ck; + m.usernick = jObj["data"]?["nickname"]?.ToString() ?? string.Empty; + m.username = username; + m.logintime = DateTime.Now; + + m.online = true; + m.is_valid = true; + m.cpstype = CpsType.抖音联盟; + return m; + + + + // var jObj = JObject.Parse(html); + // if (jObj != null && jObj["code"] != null) + // { + // var db = ApiClient.GetSession(); + // var code = jObj["code"].ToString(); + // if (code == "0") + // { + // #region 获取用户信息 + + // var shop_id = jObj["data"]["shop_id"].ToString(); + // if (shop_id == "0") + // throw new Exception($@"该账号未开通商品分享功能,请开通后重试 + + //注:开通电商权限,需要同时满足以下4个条件 + //①、账号实名认证 + //②、个人主页视频数(公开且审核通过)≥ 10 条 + //③、账号粉丝量(绑定第三方粉丝量不计数)≥ 1000 + //④、商品分享保证金 ¥500立即充值"); + + // var uname = jObj["data"]["buyin_account_id"].ToString(); + + // var m = db.Queryable().First(f => f.cpstype == CpsType.抖音联盟 && f.username == uname); + // if (m == null) + // m = new fl_cps_member(); + // m.cookies = ck; + // m.usernick = jObj["data"]["shop_name"].ToString(); + // //LoginUserId = jObj["data"]["user_id"].ToString(); + // m.username = uname; + // m.logintime = DateTime.Now; + + // m.online = true; + // m.is_valid = true; + // m.cpstype = CpsType.抖音联盟; + // return m; + // #endregion + // } + // else if (code == "401") + // { + // if (jObj["msg"].ToString() == "请重新登录") + // { + // throw new Exception("填写的Cookice无效,请填写有效的cookice"); + // } + // } + // else + // throw new Exception($"其他:{jObj["msg"].ToString()}"); + // } } catch (Exception ex) { @@ -1283,62 +1313,98 @@ html = {html}"); public static string GetLoginUserInfo(string cookies, string UserAgent) { - try + var param = $"PIGEON_BIZ_TYPE=5"; + + var sign = GetSign(param, UserAgent); + + if (!string.IsNullOrWhiteSpace(sign)) + param = $"{param}&_signature={sign}"; + + var xb = GetXbogus(param, UserAgent); + + + HttpHelper http = new HttpHelper(); + HttpItem item = new HttpItem() { - //var sign = GetSign("", UserAgent); - var param = string.Empty; + URL = $"https://darenim.jinritemai.com/chat/api/sd/by/account?{param}&X-Bogus={xb}", + Method = "GET", + Timeout = 5000, + ReadWriteTimeout = 5000 * 2, + IsToLower = false, + Cookie = cookies, + UserAgent = UserAgent, + Accept = "text/html, application/xhtml+xml, */*", + ContentType = "text/html", + Referer = "", + Allowautoredirect = false, + AutoRedirectCookie = false, + ResultType = ResultType.String + }; - //if (!string.IsNullOrWhiteSpace(sign)) - // param = $"_signature={sign}"; + item.Header.Add("Accept-Language", "zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2"); + item.Header.Add("Accept-Encoding", "deflate"); - var xb = GetXbogus(param, UserAgent); + HttpResult result = http.GetHtml(item); + string html = result.Html; - var http = new HttpHelper(); - var item = new HttpItem() - { - URL = $"https://buyin.jinritemai.com/index/getUser?X-Bogus={xb}", - Method = "GET", - Timeout = 100000, - ReadWriteTimeout = 30000, - IsToLower = false, - Cookie = cookies, - UserAgent = UserAgent, - Accept = "text/html, application/xhtml+xml, */*", - ContentType = "application/json", - Referer = "https://buyin.jinritemai.com/dashboard?new_enter_from=", - Allowautoredirect = false, - AutoRedirectCookie = false, - Postdata = "", - ResultType = ResultType.String, - }; + return html; - var json = string.Empty; - for (int i = 0; i < 5; i++) - { - var data = http.GetHtml(item); - json = data.Html; - var jObj = JObject.Parse(json); - if (jObj != null && jObj["code"] != null) - { - if ((int)jObj["code"] != 0) - { - Thread.Sleep(500); - continue; - } - break; - } - } + //try + //{ + // //var sign = GetSign("", UserAgent); + // var param = string.Empty; - if (!string.IsNullOrWhiteSpace(json)) - { - return json; - } - } - catch (Exception ex) - { - LogHelper.GetSingleObj().Error("获取抖音用户信息异常", ex.Message); - } - return string.Empty; + // //if (!string.IsNullOrWhiteSpace(sign)) + // // param = $"_signature={sign}"; + + // var xb = GetXbogus(param, UserAgent); + + // var http = new HttpHelper(); + // var item = new HttpItem() + // { + // URL = $"https://buyin.jinritemai.com/index/getUser?X-Bogus={xb}", + // Method = "GET", + // Timeout = 100000, + // ReadWriteTimeout = 30000, + // IsToLower = false, + // Cookie = cookies, + // UserAgent = UserAgent, + // Accept = "text/html, application/xhtml+xml, */*", + // ContentType = "application/json", + // Referer = "https://buyin.jinritemai.com/dashboard?new_enter_from=", + // Allowautoredirect = false, + // AutoRedirectCookie = false, + // Postdata = "", + // ResultType = ResultType.String, + // }; + + // var json = string.Empty; + // for (int i = 0; i < 5; i++) + // { + // var data = http.GetHtml(item); + // json = data.Html; + // var jObj = JObject.Parse(json); + // if (jObj != null && jObj["code"] != null) + // { + // if ((int)jObj["code"] != 0) + // { + // Thread.Sleep(500); + // continue; + // } + // break; + // } + // } + + // if (!string.IsNullOrWhiteSpace(json)) + // { + // return json; + // } + //} + //catch (Exception ex) + //{ + // LogHelper.GetSingleObj().Error("获取抖音用户信息异常", ex.Message); + //} + //return string.Empty; } diff --git a/类库/Api.Framework/Cps/douyin_form_login.cs b/类库/Api.Framework/Cps/douyin_form_login.cs index 88de60c..1538f88 100644 --- a/类库/Api.Framework/Cps/douyin_form_login.cs +++ b/类库/Api.Framework/Cps/douyin_form_login.cs @@ -70,9 +70,9 @@ namespace Api.Framework.Cps //webControl1.WebView.TitleChanged += WebView_TitleChanged; webControl1.WebView.LoadCompleted += WebView_LoadCompleted; webControl1.WebView.NewWindow += WebView_NewWindow; - var sHandler = new SampleHandler(); - sHandler.JsonAction += SHandler_JsonAction; - webControl1.WebView.RegisterResourceHandler(sHandler);//注册自定义资源处理程序 + //var sHandler = new SampleHandler(); + //sHandler.JsonAction += SHandler_JsonAction; + //webControl1.WebView.RegisterResourceHandler(sHandler);//注册自定义资源处理程序 } private void WebView1_CertificateError(object sender, CertificateErrorEventArgs e) @@ -133,21 +133,14 @@ namespace Api.Framework.Cps { webControl1.WebView.Engine.CookieManager.GetCookies("http://buyin.jinritemai.com", true).ToString(); webControl1.WebView.EvalScript("function getck() {return document.cookie}", false); - var ck = string.Empty; - if (string.IsNullOrWhiteSpace(CK)) - { - ck = webControl1.WebView.InvokeFunction("getck")?.ToString(); - LogHelper.GetSingleObj().Info("抖音登录获取到ck", ck?.ToString()); - } - var json = DouyinApi.GetLoginUserInfo(CK ?? ck, UserAgent); + CK = webControl1.WebView.InvokeFunction("getck")?.ToString(); + + var json = DouyinApi.GetLoginUserInfo(CK, UserAgent); LogHelper.GetSingleObj().Info("抖音登录获取到用户数据", json); - CheckLoginCk(json, CK ?? ck, UserAgent); - //EventClient.OnEvent("抖音登录", "抖音登录授权跳转2"); - //webControl1.WebView.LoadUrl(AuthorizeLoginUrl); + CheckLoginCk(json, CK, UserAgent); if (!IsJumpAuthorizationUrl) { - //EventClient.OnEvent("抖音登录", "抖音登录授权跳转1"); Task.Run(() => { int num = 0; @@ -174,33 +167,6 @@ namespace Api.Framework.Cps private string CK = string.Empty; - /// - /// 订单响应数据 - /// - /// 拦截的url - /// 拦截的数据 - private void SHandler_JsonAction(string url, string cookice, string json, string ua) - { - try - { - if (url.ToLower().Contains("buyin.jinritemai.com/index/getUser".ToLower()) || url.ToLower() - .Contains("buyin.jinritemai.com/dashboard/dataCenter/order".ToLower())) - { - //EventClient.OnEvent("抖音登录", "抖音登录授权跳转3"); - //webControl1.WebView.LoadUrl(AuthorizeLoginUrl); - CK = cookice; - //if (url.ToLower().Contains("buyin.jinritemai.com/index/getUser".ToLower())) - //{ - // CheckLoginCk(json, CK, UserAgent); - //} - } - } - catch (Exception ex) - { - ShowErrorAutoClose(ex); - } - } - private void WebView_NewWindow(object sender, NewWindowEventArgs e) { webControl1.WebView.LoadUrl(e.TargetUrl); @@ -291,101 +257,6 @@ namespace Api.Framework.Cps return false; } - #region 自定义响应Response 20210321 - - internal class SampleHandler : ResourceHandler - { - private static int num = 1; - private static bool IsRun = false; - - public event Action JsonAction; - - //如果使用此方式,将完全转移嫁接,包括真实请求,需要自己模拟请求, - public const string SampleUrlPrefix = "sample://"; - - public const string EmbeddedPageUrl = "sample://embedded_page"; - - //此方法判断是否自定义处理响应 - public override bool Match(Request request) - { - var cookies = Regex.Replace(request.Cookies.ToString(), "path=/", "").Replace("\r\n", ""); - //Debug.WriteLine("!!!!!!!!!!! = " + request.Url); - - if (request.Url.Contains("buyin.jinritemai.com/index/getUser") || request.Url.Contains("buyin.jinritemai.com/dashboard/dataCenter/order")) - { - //if (!IsRun) - //num++; - JsonAction?.Invoke(request.Url, cookies, "", ""); - //return true; - } - return false; - } - - //如果自定义响应,则在这里处理请求,并返回要显示的信息 - public override void ProcessRequest(Request request, EO.WebBrowser.Response response) - { - try - { - EventClient.OnEvent("抖音登录", "抖音获取登录信息中..."); - IsRun = true; - var UserAgent = string.Empty; - var cookies = Regex.Replace(request.Cookies.ToString(), "path=/", "").Replace("\r\n", ""); - //if (request.Url.Contains("buyin.jinritemai.com/index/getUser") || request.Url.Contains("buyin.jinritemai.com/dashboard/dataCenter/order")) - //{ - //Console.WriteLine(request.Headers[1]); - if (request.Headers.AllKeys.Contains("User-Agent")) - UserAgent = request.Headers["User-Agent"]; - //} - //else - //{ - - - //} - - //var http = new HttpHelper(); - //var data = http.GetHtml(request.Url, cookies, ""); - - var http = new HttpHelper(); - var item = new HttpItem() - { - URL = request.Url, - Method = "GET", - Timeout = 100000, - ReadWriteTimeout = 30000, - IsToLower = false, - Cookie = cookies, - UserAgent = UserAgent, - Accept = "text/html, application/xhtml+xml, */*", - ContentType = "application/json", - Referer = "https://buyin.jinritemai.com/dashboard", - Allowautoredirect = false, - AutoRedirectCookie = false, - Postdata = "", - ResultType = ResultType.String, - }; - var data = http.GetHtml(item); - - var json = data.Html; - if (!string.IsNullOrWhiteSpace(json)) - { - if (cookies.Contains("buyin_app_id=1128;") || cookies.Contains("buyin_shop_type=24;")) - JsonAction?.Invoke(request.Url, cookies, json, UserAgent); - - response.ContentType = "application/json";//必须设置,否则会弹出对话框并无法显示在EO.Web控件上 - response.ContentEncoding = "UTF-8";//必须设置,否则中文显示乱码 - byte[] be = Encoding.UTF8.GetBytes(json); - response.OutputStream.Write(be, 0, be.Length); - response.OutputStream.Close(); - return; - } - } - catch (Exception ex) - { } - base.ProcessRequest(request, response); - } - } - #endregion - private void douyin_form_login_FormClosing(object sender, FormClosingEventArgs e) { try @@ -414,30 +285,6 @@ namespace Api.Framework.Cps webControl1.WebView.Reload(); } - private void simpleButton2_Click(object sender, EventArgs e) - { - //try - //{ - // var ck = memoEdit2.Text.Trim(); - - // if (string.IsNullOrWhiteSpace(ck)) - // throw new Exception("请填写cookie"); - - // LogHelper.GetSingleObj().Info("抖音登录获取到ck", ck?.ToString()); - // var json = DouyinApi.GetLoginUserInfo(ck.ToString(), UserAgent); - // LogHelper.GetSingleObj().Info("抖音登录获取到用户数据", json); - // CheckLoginCk(json, ck.ToString(), UserAgent); - // if (Member != null) - // { - // AuthorizeLoginUrl - // } - //} - //catch (Exception ex) - //{ - // ShowErrorAutoClose(ex); - //} - } - private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { try diff --git a/类库/Chat.Framework/WXSdk/Implement/WXClientImpl_HOOK.cs b/类库/Chat.Framework/WXSdk/Implement/WXClientImpl_HOOK.cs index 2d13416..ff7c455 100644 --- a/类库/Chat.Framework/WXSdk/Implement/WXClientImpl_HOOK.cs +++ b/类库/Chat.Framework/WXSdk/Implement/WXClientImpl_HOOK.cs @@ -713,7 +713,7 @@ namespace Chat.Framework.WXSdk.Implement try { var checkUrl = rst as CheckUrl; - return (checkUrl != null && checkUrl.Status == 0); + return (checkUrl != null && (checkUrl.Status == 0 || checkUrl.Status == -1)); } catch (Exception ex) {