public class LifeSpanHandler : ILifeSpanHandler
{
public bool DoClose(IWebBrowser chromiumWebBrowser, IBrowser browser)
{
return true;
}
public void OnAfterCreated(IWebBrowser chromiumWebBrowser, IBrowser browser)
{
}
public void OnBeforeClose(IWebBrowser chromiumWebBrowser, IBrowser browser)
{
}
public bool OnBeforePopup(IWebBrowser chromiumWebBrowser, 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 chromium = (ChromiumWebBrowser)chromiumWebBrowser;
chromium.Load(targetUrl);
return true;
}
}
//public class DDResFilter : IResponseFilter
//{
// public List<byte> DataAll = new List<byte>();
// public void Dispose()
// {
// }
// public FilterStatus Filter(Stream dataIn, out long dataInRead, Stream dataOut, out long dataOutWritten)
// {
// try
// {
// if (dataIn == null || dataIn.Length == 0)
// {
// dataInRead = 0;
// dataOutWritten = 0;
// return FilterStatus.Done;
// }
// dataInRead = dataIn.Length;
// dataOutWritten = Math.Min(dataInRead, dataOut.Length);
// dataIn.CopyTo(dataOut);
// dataIn.Seek(0, SeekOrigin.Begin);
// byte[] bs = new byte[dataIn.Length];
// dataIn.Read(bs, 0, bs.Length);
// DataAll.AddRange(bs);
// dataInRead = dataIn.Length;
// dataOutWritten = dataIn.Length;
// return FilterStatus.NeedMoreData;
// }
// catch (Exception ex)
// {
// dataInRead = dataIn.Length;
// dataOutWritten = dataIn.Length;
// return FilterStatus.Done;
// }
// }
// public bool InitFilter()
// {
// return true;
// }
//}
//public class FilterManager
//{
// private static Dictionary<string, IResponseFilter> dataList = new Dictionary<string, IResponseFilter>();
// public static IResponseFilter CreateFilter(string guid)
// {
// lock (dataList)
// {
// var filter = new DDResFilter();
// dataList.Add(guid, filter);
// return filter;
// }
// }
// public static IResponseFilter GetFileter(string guid)
// {
// lock (dataList)
// {
// return dataList[guid];
// }
// }
//}
//public partial class BaseResRqtHandler : IResourceRequestHandler
//{
// void IDisposable.Dispose()
// {
// Dispose();
// }
// protected virtual void Dispose()
// {
// }
// ICookieAccessFilter IResourceRequestHandler.GetCookieAccessFilter(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IRequest request)
// {
// return GetCookieAccessFilter(chromiumWebBrowser, browser, frame, request);
// }
// protected virtual ICookieAccessFilter GetCookieAccessFilter(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IRequest request)
// {
// return null;
// }
// IResourceHandler IResourceRequestHandler.GetResourceHandler(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IRequest request)
// {
// return GetResourceHandler(chromiumWebBrowser, browser, frame, request);
// }
// protected virtual IResourceHandler GetResourceHandler(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IRequest request)
// {
// return null;
// }
// IResponseFilter IResourceRequestHandler.GetResourceResponseFilter(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IRequest request, IResponse response)
// {
// return GetResourceResponseFilter(chromiumWebBrowser, browser, frame, request, response);
// }
// protected virtual IResponseFilter GetResourceResponseFilter(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IRequest request, IResponse response)
// {
// return null;
// }
// CefReturnValue IResourceRequestHandler.OnBeforeResourceLoad(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IRequest request, IRequestCallback callback)
// {
// return OnBeforeResourceLoad(chromiumWebBrowser, browser, frame, request, callback);
// }
// protected virtual CefReturnValue OnBeforeResourceLoad(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IRequest request, IRequestCallback callback)
// {
// return CefReturnValue.Continue;
// }
// bool IResourceRequestHandler.OnProtocolExecution(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IRequest request)
// {
// return OnProtocolExecution(chromiumWebBrowser, browser, frame, request);
// }
// protected virtual bool OnProtocolExecution(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IRequest request)
// {
// return false;
// }
// void IResourceRequestHandler.OnResourceLoadComplete(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IRequest request, IResponse response, UrlRequestStatus status, long receivedContentLength)
// {
// OnResourceLoadComplete(chromiumWebBrowser, browser, frame, request, response, status, receivedContentLength);
// }
// protected virtual void OnResourceLoadComplete(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IRequest request, IResponse response, UrlRequestStatus status, long receivedContentLength)
// {
// }
// void IResourceRequestHandler.OnResourceRedirect(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IRequest request, IResponse response, ref string newUrl)
// {
// OnResourceRedirect(chromiumWebBrowser, browser, frame, request, response, ref newUrl);
// }
// protected virtual void OnResourceRedirect(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IRequest request, IResponse response, ref string newUrl)
// {
// }
// bool IResourceRequestHandler.OnResourceResponse(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IRequest request, IResponse response)
// {
// return OnResourceResponse(chromiumWebBrowser, browser, frame, request, response);
// }
// protected virtual bool OnResourceResponse(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IRequest request, IResponse response)
// {
// return false;
// }
//}
//public class DDResourceRequestHandler : BaseResRqtHandler
//{
// protected override IResponseFilter GetResourceResponseFilter(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IRequest request, IResponse response)
// {
// var filter = FilterManager.CreateFilter(request.Identifier.ToString());
// return filter;
// }
// protected override void OnResourceLoadComplete(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IRequest request, IResponse response, UrlRequestStatus status, long receivedContentLength)
// {
// if (request.Url.ToLower().Contains("show".ToLower()))
// {
// var strResCookie = response.Headers["Set-Cookie"];
// if (strResCookie.IndexOf("wlfstk_smdl=") > -1)
// {
// JingdongMallDialogModel.strCookie = strResCookie;
// }
// }
// if (request.Url.ToLower().Contains("qrCodeTicketValidation".ToLower()))
// {
// var strResCookie = response.Headers["Set-Cookie"];
// if (strResCookie.IndexOf("thor=") > -1)
// {
// //CefDialog.strCookie = Regex.Match(strResCookie, @"(?<=dt_s=)(.+?)(?=;)").Groups[0].ToString();
// JingdongMallDialogModel.strCookie = Regex.Match(strResCookie, @"(?<=thor=)(.+?)(?=;)").Groups[0].ToString();
// }
// //var filter = FilterManager.GetFileter(request.Identifier.ToString()) as DDResFilter;
// //ASCIIEncoding encoding = new ASCIIEncoding();
// 这里截获返回的数据
// //var data = encoding.GetString(filter.DataAll.ToArray());
// }
// }
//}
//public partial class DDRqtHandler : IRequestHandler
//{
// public bool GetAuthCredentials(IWebBrowser chromiumWebBrowser, IBrowser browser, string originUrl, bool isProxy, string host, int port, string realm, string scheme, IAuthCallback callback)
// {
// return false;
// }
// public IResourceRequestHandler GetResourceRequestHandler(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IRequest request, bool isNavigation, bool isDownload, string requestInitiator, ref bool disableDefaultHandling)
// {
// String strUrl = request.Url.ToString();
// if (strUrl.Contains("https://passport.jd.com/uc/qrCodeTicketValidation?aksParamsU") || strUrl.Contains("https://qr.m.jd.com/show?appid=133&size=147&t="))
// {
// using (var postData = request.PostData)
// {
// if (postData != null)
// {
// var elements = postData.Elements;
// var charSet = request.GetCharSet();
// foreach (var element in elements)
// {
// if (element.Type == PostDataElementType.Bytes)
// {
// var body = element.GetBody(charSet);
// }
// }
// }
// }
// return new DDResourceRequestHandler();
// }
// return null;
// }
// //public IResponseFilter GetResourceResponseFilter(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, IResponse response)
// //{
// // //if (!response.ResponseHeaders["Content-Type"].Contains("application/json"))
// // //{
// // // return null;
// // //}
// // var filter = FilterManager.CreateFilter(request.Identifier.ToString());
// // return filter;
// //}
// public bool OnBeforeBrowse(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IRequest request, bool userGesture, bool isRedirect)
// {
// String strUrl = request.Url.ToString();
// if (strUrl.IndexOf("https://login.dingtalk.com/login/createSessionInfoByTemp.jsonp?callback=jQuery") > -1)
// {
// int a = 0;
// }
// return false;
// }
// public CefReturnValue OnBeforeResourceLoad(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, IRequestCallback callback)
// {
// //throw new NotImplementedException();
// //MessageBox.Show(request.Headers["User-Agent"]);//<span style="font-family: Arial, Helvetica, sans-serif;">这里弹出response</span>
// return CefReturnValue.Continue;
// }
// public bool OnCertificateError(IWebBrowser chromiumWebBrowser, IBrowser browser, CefErrorCode errorCode, string requestUrl, ISslInfo sslInfo, IRequestCallback callback)
// {
// //throw new NotImplementedException();
// return false;
// }
// public void OnDocumentAvailableInMainFrame(IWebBrowser chromiumWebBrowser, IBrowser browser)
// {
// //throw new NotImplementedException();
// }
// public bool OnOpenUrlFromTab(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, string targetUrl, WindowOpenDisposition targetDisposition, bool userGesture)
// {
// //throw new NotImplementedException();
// return false;
// }
// public void OnPluginCrashed(IWebBrowser chromiumWebBrowser, IBrowser browser, string pluginPath)
// {
// //throw new NotImplementedException();
// }
// public bool OnQuotaRequest(IWebBrowser chromiumWebBrowser, IBrowser browser, string originUrl, long newSize, IRequestCallback callback)
// {
// //throw new NotImplementedException();
// return false;
// }
// public void OnRenderProcessTerminated(IWebBrowser chromiumWebBrowser, IBrowser browser, CefTerminationStatus status)
// {
// //throw new NotImplementedException();
// }
// public void OnRenderViewReady(IWebBrowser chromiumWebBrowser, IBrowser browser)
// {
// //throw new NotImplementedException();
// }
// public bool OnSelectClientCertificate(IWebBrowser chromiumWebBrowser, IBrowser browser, bool isProxy, string host, int port, X509Certificate2Collection certificates, ISelectClientCertificateCallback callback)
// {
// //throw new NotImplementedException();
// return false;
// }
// public bool OnResourceResponse(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, IResponse response)
// {
// //throw new NotImplementedException();
// //MessageBox.Show(response.ResponseHeaders["Set-Cookie"]);//这里弹出response
// return false;
// }
//}
WebBrowser.LifeSpanHandler = new LifeSpanHandler();
//WebBrowser.RequestHandler = new DDRqtHandler();