old_flsystem/类库/Api.Framework/Cps/CefSharp1/CEFRequestHandler.cs

291 lines
14 KiB
C#
Raw Permalink Normal View History

2022-09-20 03:10:29 +00:00
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.
}
}
/// <summary>
/// 拦截请求
/// </summary>
public class CEFRequestHandler : IRequestHandler
{
public event Action<string, string> JsonAction;
public event Action<BrowserAndLoginInfo> 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;
}
}
}