using Api.Framework.Cps.CefSharp1; using CefSharp; using CefSharp.WinForms; using CsharpHttpHelper; using CsharpHttpHelper.Enum; using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; using System.Linq; using System.Security.Cryptography.X509Certificates; using System.Text; using System.Threading.Tasks; namespace Api.Framework.Cps.CefSharp1 { internal class CefSharpOpenPageSelf : ILifeSpanHandler { public bool DoClose(IWebBrowser browserControl, IBrowser browser) { return false; } public void OnAfterCreated(IWebBrowser browserControl, IBrowser browser) { } public void OnBeforeClose(IWebBrowser browserControl, IBrowser browser) { } public bool OnBeforePopup(IWebBrowser browserControl, IBrowser browser, IFrame frame, string targetUrl, string targetFrameName, WindowOpenDisposition targetDisposition, bool userGesture, IPopupFeatures popupFeatures, IWindowInfo windowInfo, IBrowserSettings browserSettings, ref bool noJavascriptAccess, out IWebBrowser newBrowser) { newBrowser = null; var chromiumWebBrowser = (ChromiumWebBrowser)browserControl; chromiumWebBrowser.Load(targetUrl); return true; //Return true to cancel the popup creation copyright by codebye.com. } } /// /// 拦截请求 /// public class CEFRequestHandler : IRequestHandler { public event Action JsonAction; public event Action BrowserAndLoginInfoAction; public IResourceRequestHandler GetResourceRequestHandler(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IRequest request, bool isNavigation, bool isDownload, string requestInitiator, ref bool disableDefaultHandling) { //if (request.PostData != null) //{ // var bytes1 = request.PostData.Elements[0].Bytes; // var postStr1 = System.Text.Encoding.UTF8.GetString(bytes1); // Console.WriteLine("@@@@@@@@@@@@@@@@@@@@@@@ = " + postStr1); //} //"https://buyin.jinritemai.com/api/author/order/details?author_app_id=1128&user_id=1460607342872671&start_time=1606806032&end_time=1609398032&time_type=1&page=1&pageSize=20&_signature=_02B4Z6wo00101Zp7NtAAAIDCpf2A9b4M3iGafzJAAAZ8DhdlaobXsro5mjL-ohtCATVjsCaDIQPNiWIbrQwGsR5suxHYJOJ2oQ6unSqn.loaNiMcqo.PA4VvXk0FA8ueolBWm739wlv1HXZ637" if (request.Url.Contains("buyin.jinritemai.com/api/author/order/details")) { //var time1 = CsharpHttpHelper.HttpExtend.GetTimeStamp(DateTime.Now.AddDays(-1)); //var time2 = CsharpHttpHelper.HttpExtend.GetTimeStamp(); //request.Url = $"https://buyin.jinritemai.com/api/author/order/details?author_app_id=1128&user_id=1460607342872671&start_time={time1}&end_time={time2}&time_type=1&page=1&pageSize=20&_signature=_02B4Z6wo00101Zp7NtAAAIDCpf2A9b4M3iGafzJAAAZ8DhdlaobXsro5mjL-ohtCATVjsCaDIQPNiWIbrQwGsR5suxHYJOJ2oQ6unSqn.loaNiMcqo.PA4VvXk0FA8ueolBWm739wlv1HXZ637"; } if (request.Url.Contains("https://mcs.snssdk.com/v1/list")) { if (request.PostData.Elements != null && request.PostData.Elements.Count != 0) { var bytes = request.PostData.Elements[0].Bytes; var postStr = System.Text.Encoding.UTF8.GetString(bytes); if (!string.IsNullOrWhiteSpace(postStr)) { Console.WriteLine(postStr + " &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&"); BrowseInfo bInfo = null; LoginInfo lInfo = null; var session_id = string.Empty; long event_index = -1; var jArrs = JArray.Parse(postStr); var jObj = jArrs[0]; if (jObj["user"] != null) { var user = jObj["user"]; if (user != null) { /* "user_unique_id": "6978842327024550185", "user_type": 12, "user_id": "1460607342872671", "web_id": "6988302958481098274", "ssid": "25c4c89c-ccce-4061-baa7-ebe593d425fc" */ if (user["user_unique_id"] != null && user["user_type"] != null && user["user_id"] != null && user["web_id"] != null && user["ssid"] != null) { var user_unique_id = user["user_unique_id"].ToString(); var user_type = (int)user["user_type"]; var user_id = user["user_id"].ToString(); var web_id = user["web_id"].ToString(); var ssid = user["ssid"].ToString(); lInfo = new LoginInfo() { ssid = ssid, user_id = user_id, user_type = user_type, user_unique_id = user_unique_id, web_id = web_id }; } } } if (jObj["header"] != null) { var header = jObj["header"]; if (header != null) { /* "app_id": 2631, "os_name": "windows", "os_version": "8", "device_model": "Windows NT 6.2", "language": "en-US", "platform": "web", "sdk_version": "4.1.53_2", "sdk_lib": "js", "timezone": 8, "tz_offset": -28800, "resolution": "1920x1080", "browser": "Chrome", "browser_version": "91.0.4472.114", "referrer": "", "referrer_host": "", "width": 1920, "height": 1080, "screen_width": 1920, "screen_height": 1080, "custom": "{}" */ if (header["app_id"] != null && header["os_name"] != null && header["os_version"] != null && header["device_model"] != null && header["language"] != null && header["platform"] != null && header["sdk_version"] != null && header["sdk_lib"] != null && header["timezone"] != null && header["tz_offset"] != null && header["browser"] != null && header["browser_version"] != null && header["referrer"] != null && header["referrer_host"] != null && header["width"] != null && header["height"] != null && header["screen_width"] != null && header["height"] != null && header["screen_height"] != null && header["resolution"] != null) { var app_id = (int)header["app_id"]; var os_name = header["os_name"].ToString(); var os_version = header["os_version"].ToString(); var device_model = header["device_model"].ToString(); var language = header["language"].ToString(); var platform = header["platform"].ToString(); var sdk_version = header["sdk_version"].ToString(); var sdk_lib = header["sdk_lib"].ToString(); var timezone = (int)header["timezone"]; var tz_offset = (int)header["tz_offset"]; var browser1 = header["browser"].ToString(); var browser_version = header["browser_version"].ToString(); var referrer = header["referrer"].ToString(); var referrer_host = header["referrer_host"].ToString(); var width = (int)header["width"]; var height = (int)header["height"]; var screen_width = (int)header["screen_width"]; var height1 = header["height"].ToString(); var screen_height = (int)header["screen_height"]; var resolution = header["resolution"].ToString(); bInfo = new BrowseInfo() { app_id = app_id, browser = browser1, browser_version = browser_version, device_model = device_model, height = height, language = language, os_name = os_name, os_version = os_version, platform = platform, referrer = referrer, referrer_host = referrer_host, resolution = resolution, screen_height = screen_height, screen_width = screen_width, sdk_lib = sdk_lib, sdk_version = sdk_version, timezone = timezone, tz_offset = tz_offset, width = width }; } } } if (jObj["events"] != null) { var events = (JArray)jObj["events"]; if (events != null && events.Count != 0) { if (events[0]["session_id"] != null) session_id = events[0]["session_id"].ToString(); if (events[0]["params"] != null) { var jObjTmp = JObject.Parse(events[0]["params"].ToString()); if (jObjTmp["event_index"] != null) event_index = long.Parse(jObjTmp["event_index"].ToString()); } } } if (lInfo != null && bInfo != null && !string.IsNullOrWhiteSpace(session_id) && event_index != -1) { var b = new BrowserAndLoginInfo() { browseInfo = bInfo, loginInfo = lInfo, session_id = session_id, event_index = event_index }; BrowserAndLoginInfoAction?.Invoke(b); } } } } return new CEFResponseHandler(JsonAction); } public IResponseFilter GetResourceResponseFilter(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, IResponse response) { //var url = new Uri(request.Url); //if (url.AbsoluteUri.Contains("http://www.baidu.com")) //{ // //自定义的IResponseFilter,这里是按照官方文档的示例 // var filter = CEFFilterManger.CreateFilter(request.Identifier.ToString()); // return filter; //} return null; } private void Filter_VOIDFUN(string arg1, string arg2, string arg3, long arg4) { } public bool OnBeforeBrowse(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, bool isRedirect) { return false; } public CefReturnValue OnBeforeResourceLoad(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, IRequestCallback callback) { return CefReturnValue.Continue; } public bool OnCertificateError(IWebBrowser browserControl, IBrowser browser, CefErrorCode errorCode, string requestUrl, ISslInfo sslInfo, IRequestCallback callback) { return true; } public bool OnOpenUrlFromTab(IWebBrowser browserControl, IBrowser browser, IFrame frame, string targetUrl, WindowOpenDisposition targetDisposition, bool userGesture) { return false; } public void OnPluginCrashed(IWebBrowser browserControl, IBrowser browser, string pluginPath) { } public bool OnProtocolExecution(IWebBrowser browserControl, IBrowser browser, string url) { return false; } public bool OnQuotaRequest(IWebBrowser browserControl, IBrowser browser, string originUrl, long newSize, IRequestCallback callback) { return false; } public void OnRenderProcessTerminated(IWebBrowser browserControl, IBrowser browser, CefTerminationStatus status) { } public void OnRenderViewReady(IWebBrowser browserControl, IBrowser browser) { } public void OnResourceLoadComplete(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, IResponse response, UrlRequestStatus status, long receivedContentLength) { } public void OnResourceRedirect(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, ref string newUrl) { } public void OnResourceRedirect(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, IResponse response, ref string newUrl) { } public bool OnResourceResponse(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, IResponse response) { return false; ; } public bool OnSelectClientCertificate(IWebBrowser browserControl, IBrowser browser, bool isProxy, string host, int port, X509Certificate2Collection certificates, ISelectClientCertificateCallback callback) { return true; } public bool OnBeforeBrowse(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IRequest request, bool userGesture, bool isRedirect) { return false; } public void OnDocumentAvailableInMainFrame(IWebBrowser chromiumWebBrowser, IBrowser browser) { } public bool GetAuthCredentials(IWebBrowser chromiumWebBrowser, IBrowser browser, string originUrl, bool isProxy, string host, int port, string realm, string scheme, IAuthCallback callback) { return false; } } }