使用CEfSharp之旅拦截网络请求 截取get post response返回

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用CEfSharp之旅拦截网络请求 截取get post response返回相关的知识,希望对你有一定的参考价值。


主要是继承实现 Cefsharp的IRquestHandler对象,

废话不多说上代码:

工作随笔,有需要的或者不懂的加我QQ群191065815 微信huo_cheng_yan

 源码下载地址:​​点击  下载​

public class request : IRequestHandler


public event Action<string> msg;
public event Action<string, object> msg2;
public bool GetAuthCredentials(IWebBrowser browserControl, IBrowser browser, IFrame frame, bool isProxy,
string host, int port, string realm, string scheme, IAuthCallback callback)


return false;


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;

private void Filter_VOIDFUN(string arg1, string arg2, string arg3, long arg4)

msg2?.Invoke(arg1, arg2);



public bool OnBeforeBrowse(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request,
bool isRedirect)


var m = request.Method;
msg?.Invoke(request.Url);
msg?.Invoke(m);
if (request.Method == "POST")

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);
msg?.Invoke(body);






return false;


public CefReturnValue OnBeforeResourceLoad(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, IRequestCallback callback)

var m = request.Method;
msg?.Invoke(request.Url);
msg?.Invoke(m);
if (request.Method == "POST")

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);
msg?.Invoke(body);






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 class FilterManager

private static Dictionary<string, IResponseFilter> dataList = new Dictionary<string, IResponseFilter>();

public static IResponseFilter CreateFilter(string guid)

lock (dataList)

var filter = new AppendResponseFilter("","");
dataList.Add(guid, filter);

return filter;



public static IResponseFilter GetFileter(string guid)

lock (dataList)

return dataList[guid];



 

以上是关于使用CEfSharp之旅拦截网络请求 截取get post response返回的主要内容,如果未能解决你的问题,请参考以下文章

WinForm窗体程序中使用CefSharp获取加载后的资源截取request参数拦截response数据注入jquery文件和js代码-拦截response数据

WinForm窗体程序中使用CefSharp获取加载后的资源截取request参数拦截response数据注入jquery文件和js代码-截取request参数

WinForm窗体程序中使用CefSharp获取加载后的资源截取request参数拦截response数据注入jquery文件和js代码-注入jquery文件和js代码

cefsharp停止request

使用CEfSharp之旅CEFSharp 使用代理 更换位置IP

CefSharp截取完整网页图片,网页截图