291 lines
14 KiB
C#
291 lines
14 KiB
C#
|
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;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|