使用CEfSharp之旅(7)CEFSharp 拦截 http 请求 websocket 内容
废话不多说直接上代码:
private void Form1_Load(object sender, EventArgs e){try{//更改设置浏览器语言CefSettings settings = new CefSettings();settings.Locale = "zh-CN";settings.AcceptLanguageList = "zh-CN";Cef.Initialize(settings);var re = new request();//接收和发送的http消息re.msg += Re_msg;re.msg2 += Re_msg2; ... 这里是使用
private void Re_msg(string obj)
{ //可打印Obj 内容即可看到 }
public class request : IRequestHandler{public event Action<string> msg;public event Action<string,object> msg2;public event Action<string> msgGetuser;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.MimeType.ToLower().IndexOf("text") > -1 || response.MimeType.ToLower().IndexOf("json") > -1){var filter = new AppendResponseFilter(request.Url, response.MimeType);filter.VOIDFUN += Filter_VOIDFUN;return filter;//var filter2 = FilterManager.CreateFilter(request.Identifier.ToString());//return filter2;}return null;//var filter1 = FilterManager.CreateFilter(request.Identifier.ToString());//return filter1;}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){//if (request.Url.Contains("https://wx2.qq.com/cgi-bin/mmwebwx-bin/webwxgetcontact?") || request.Url.Contains("https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxgetcontact?"))//{// //if (!response.ResponseHeaders["Content-Type"].Contains("application/json"))// //{// // return;// //}// var filter1 = FilterManager.GetFileter(request.Identifier.ToString()) as AppendResponseFilter;// if (filter1 != null)// Console.WriteLine(filter1.DataAll);// byte[] bys = filter1.DataAll.ToArray();// string s1 = System.Text.Encoding.UTF8.GetString(bys);// msgGetuser.Invoke(s1);//}}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;}}
转载于:https://www.cnblogs.com/lonelyxmas/p/11010337.html
使用CEfSharp之旅(7)CEFSharp 拦截 http 请求 websocket 内容相关推荐
- 拦截ajax的请求,拦截ajax请求
拦截ajax请求 内容精选 换一换 防护网站接入WAF后,您可以通过配置黑白名单规则或精准访问防护规则,使WAF仅允许指定IP访问防护网站,即WAF拦截除指定IP外的所有来源IP.例如,如果您需要放行 ...
- 使用CEfSharp之旅(1) 加载网络页面
使用CEfSharp之旅(1) 加载网络页面 原文:使用CEfSharp之旅(1) 加载网络页面 版权声明:本文为博主原创文章,未经博主允许不得转载.可点击关注博主 ,不明白的进群191065815 ...
- 使用CEfSharp之旅(8)CEFSharp 使用代理 更换位置IP
使用CEfSharp之旅(8)CEFSharp 使用代理 更换位置IP 原文:使用CEfSharp之旅(8)CEFSharp 使用代理 更换位置IP 版权声明:本文为博主原创文章,未经博主允许不得转载 ...
- iOS 开发中使用 NSURLProtocol 拦截 HTTP 请求
这篇文章会提供一种在 Cocoa 层拦截所有 HTTP 请求的方法,其实标题已经说明了拦截 HTTP 请求需要的了解的就是 NSURLProtocol. 由于文章的内容较长,会分成两部分,这篇文章介绍 ...
- android 拦截webview资源请求,Android Webview拦截ajax请求
Androi基接我果控近础收们,制近础收们,制近础收d Webview虽然提供了页面加载及资源请求的钩子,但是对于h5的ajax请求并没有提供干涉的接口,这意味着我们不能在webview中干涉java ...
- session会话拦截ajax,session过期,拦截ajax请求并跳转登录页面
1.方法一 :1.1使用filter 和ajaxsetup 对ajax进行拦截并跳转登录页面 public void doFilter(ServletRequest request, ServletR ...
- NSURLProtocol 拦截 NSURLSession 请求时body丢失问题解决方案探讨
摘要: "IP直连方案"主要在于解决DNS污染.省去DNS解析时间,通常情况下我们可以在项目中使用 NSURLProtocol 拦截 NSURLSession 请求,下面将支持 P ...
- ThinkPHP6项目基操(4.拦截无效请求 控制器或方法不存在)
拦截无效请求 控制器或方法不存在 一.默认无效请求 二.显示具体错误信息 方法1.配置`config/app.php` 方法2. 配置`.env`环境变量 三.处理错误 1. 方法不存在 2. 控制器 ...
- Burp Suite如何拦截GET请求提交POET请求的参数
今天打CTF靶场的时候遇到了一个问题, 使用Burp Suite拦截了一个GET请求后, 想在请求体中提交一个POST请求的参数, 结果参数不能被正常接收, 经过一下午的测试终于解决了这个问题, 下面 ...
最新文章
- c++监听键盘_你会为颜值买单吗?杜伽fusion复古键盘晒单体验_键盘
- darknet53网络结构及配置文件对比
- stm32 web ajax,STM32的WEB服务器怎么返回AJAX的JSON数据格式的?求教!
- 如何使用IDEA 显示一个类的所有方法?与eclipse的outline视图类似
- 继续Bargaining
- 237.删除链表中的节点
- EasyTouch5虚拟摇杆(Joystick)中文解析
- 如何用计算机录视频,怎么用电脑录制视频
- 支付宝 java 签名_支付宝APP支付(Java后台生成签名具体步骤)
- php对数据进行归一化处理方法,12种数据量纲化处理方式
- 11gR2 新特性--待定的统计信息(Pending Statistic)
- 宝塔安装phalcon扩展及nginx配置
- oracle误删了表怎么恢复数据,oracle误删除表或者表数据的恢复方法总结
- jqgrid控制多选按钮显示隐藏
- 开发项目中,360浏览器遇到的一个坑
- MacOS 系统 文件夹解析
- 华为matebook笔记本鸿蒙,聊聊鸿蒙对笔记本电脑行业的影响
- 单位计算机网络管理员论文,计算机专业毕业论文(计算机网络管理软件的研究)教案.doc...
- any, never, unknown的区别
- matlab验证采样定理
热门文章
- 2014腾讯校园招聘研发笔试题
- 从今天开始收集一些经典的算法。
- usaco snail trails(dfs)
- Ceres入门——Ceres的基本使用方法
- python定义一个汽车类_汽车类Python程序
- mybatis参数有list和实体类_Mybatis的几种传参方式,你了解吗?
- python拆分excel的sheet为单文件_python拆分Excel表格并发送邮件
- android预置第三方apk,android 内置APK成系统应用
- html设置右边界,CSS边界(margin)——CSS实验室
- 【Python line_profiler memory_profiler】分析每一行代码的耗时及内存占用情况