使用CEfSharp之旅(7)CEFSharp 拦截 http 请求 websocket 内容
原文:使用CEfSharp之旅(7)CEFSharp 拦截 http 请求 websocket 内容

版权声明:本文为博主原创文章,未经博主允许不得转载。可点击关注博主 ,不明白的进群191065815 我的群里问 https://blog.csdn.net/u010919083/article/details/80913948

废话不多说直接上代码:

  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;}}

posted on 2019-06-12 16:15 NET未来之路 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/lonelyxmas/p/11010337.html

使用CEfSharp之旅(7)CEFSharp 拦截 http 请求 websocket 内容相关推荐

  1. 拦截ajax的请求,拦截ajax请求

    拦截ajax请求 内容精选 换一换 防护网站接入WAF后,您可以通过配置黑白名单规则或精准访问防护规则,使WAF仅允许指定IP访问防护网站,即WAF拦截除指定IP外的所有来源IP.例如,如果您需要放行 ...

  2. 使用CEfSharp之旅(1) 加载网络页面

    使用CEfSharp之旅(1) 加载网络页面 原文:使用CEfSharp之旅(1) 加载网络页面 版权声明:本文为博主原创文章,未经博主允许不得转载.可点击关注博主 ,不明白的进群191065815 ...

  3. 使用CEfSharp之旅(8)CEFSharp 使用代理 更换位置IP

    使用CEfSharp之旅(8)CEFSharp 使用代理 更换位置IP 原文:使用CEfSharp之旅(8)CEFSharp 使用代理 更换位置IP 版权声明:本文为博主原创文章,未经博主允许不得转载 ...

  4. iOS 开发中使用 NSURLProtocol 拦截 HTTP 请求

    这篇文章会提供一种在 Cocoa 层拦截所有 HTTP 请求的方法,其实标题已经说明了拦截 HTTP 请求需要的了解的就是 NSURLProtocol. 由于文章的内容较长,会分成两部分,这篇文章介绍 ...

  5. android 拦截webview资源请求,Android Webview拦截ajax请求

    Androi基接我果控近础收们,制近础收们,制近础收d Webview虽然提供了页面加载及资源请求的钩子,但是对于h5的ajax请求并没有提供干涉的接口,这意味着我们不能在webview中干涉java ...

  6. session会话拦截ajax,session过期,拦截ajax请求并跳转登录页面

    1.方法一 :1.1使用filter 和ajaxsetup 对ajax进行拦截并跳转登录页面 public void doFilter(ServletRequest request, ServletR ...

  7. NSURLProtocol 拦截 NSURLSession 请求时body丢失问题解决方案探讨

    摘要: "IP直连方案"主要在于解决DNS污染.省去DNS解析时间,通常情况下我们可以在项目中使用 NSURLProtocol 拦截 NSURLSession 请求,下面将支持 P ...

  8. ThinkPHP6项目基操(4.拦截无效请求 控制器或方法不存在)

    拦截无效请求 控制器或方法不存在 一.默认无效请求 二.显示具体错误信息 方法1.配置`config/app.php` 方法2. 配置`.env`环境变量 三.处理错误 1. 方法不存在 2. 控制器 ...

  9. Burp Suite如何拦截GET请求提交POET请求的参数

    今天打CTF靶场的时候遇到了一个问题, 使用Burp Suite拦截了一个GET请求后, 想在请求体中提交一个POST请求的参数, 结果参数不能被正常接收, 经过一下午的测试终于解决了这个问题, 下面 ...

最新文章

  1. c++监听键盘_你会为颜值买单吗?杜伽fusion复古键盘晒单体验_键盘
  2. darknet53网络结构及配置文件对比
  3. stm32 web ajax,STM32的WEB服务器怎么返回AJAX的JSON数据格式的?求教!
  4. 如何使用IDEA 显示一个类的所有方法?与eclipse的outline视图类似
  5. 继续Bargaining
  6. 237.删除链表中的节点
  7. EasyTouch5虚拟摇杆(Joystick)中文解析
  8. 如何用计算机录视频,怎么用电脑录制视频
  9. 支付宝 java 签名_支付宝APP支付(Java后台生成签名具体步骤)
  10. php对数据进行归一化处理方法,12种数据量纲化处理方式
  11. 11gR2 新特性--待定的统计信息(Pending Statistic)
  12. 宝塔安装phalcon扩展及nginx配置
  13. oracle误删了表怎么恢复数据,oracle误删除表或者表数据的恢复方法总结
  14. jqgrid控制多选按钮显示隐藏
  15. 开发项目中,360浏览器遇到的一个坑
  16. MacOS 系统 文件夹解析
  17. 华为matebook笔记本鸿蒙,聊聊鸿蒙对笔记本电脑行业的影响
  18. 单位计算机网络管理员论文,计算机专业毕业论文(计算机网络管理软件的研究)教案.doc...
  19. any, never, unknown的区别
  20. matlab验证采样定理

热门文章

  1. 2014腾讯校园招聘研发笔试题
  2. 从今天开始收集一些经典的算法。
  3. usaco snail trails(dfs)
  4. Ceres入门——Ceres的基本使用方法
  5. python定义一个汽车类_汽车类Python程序
  6. mybatis参数有list和实体类_Mybatis的几种传参方式,你了解吗?
  7. python拆分excel的sheet为单文件_python拆分Excel表格并发送邮件
  8. android预置第三方apk,android 内置APK成系统应用
  9. html设置右边界,CSS边界(margin)——CSS实验室
  10. 【Python line_profiler memory_profiler】分析每一行代码的耗时及内存占用情况