原文:使用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;
}
}

使用CEfSharp之旅(7)CEFSharp 拦截 http 请求 websocket 内容的更多相关文章

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

    直接上代码: var settings = new CefSettings(); settings.CachePath = "cache"; settings.CefCommand ...

  2. 使用CEfSharp之旅(6)拦截网络请求 截取response返回

    原文:使用CEfSharp之旅(6)拦截网络请求 截取response返回 版权声明:本文为博主原创文章,未经博主允许不得转载.可点击关注博主 ,不明白的进群191065815 我的群里问 https ...

  3. 使用CEfSharp之旅(5)CEFSharp 隔离Cookie

    原文:使用CEfSharp之旅(5)CEFSharp 隔离Cookie 版权声明:本文为博主原创文章,未经博主允许不得转载.可点击关注博主 ,不明白的进群191065815 我的群里问 https:/ ...

  4. 使用CEfSharp之旅(4)cefsharp 调用F12

    原文:使用CEfSharp之旅(4)cefsharp 调用F12 版权声明:本文为博主原创文章,未经博主允许不得转载.可点击关注博主 ,不明白的进群191065815 我的群里问 https://bl ...

  5. 使用CEfSharp之旅(3)下载文件 弹出保存框 IDownloadHandler

    原文:使用CEfSharp之旅(3)下载文件 弹出保存框 IDownloadHandler 版权声明:本文为博主原创文章,未经博主允许不得转载.可点击关注博主 ,不明白的进群191065815 我的群 ...

  6. 使用CEfSharp之旅(2) js前台事件执行后台方法

    原文:使用CEfSharp之旅(2) js前台事件执行后台方法 版权声明:本文为博主原创文章,未经博主允许不得转载.可点击关注博主 ,不明白的进群191065815 我的群里问 https://blo ...

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

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

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

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

  9. 使用一个HttpModule拦截Http请求,来检测页面刷新(F5或正常的请求)

    在Web Application中,有个问题就是:“我怎么来判断一个http请求到底是通过按F5刷新的请求还是正常的提交请求?” 相信了解ASP.NET的人知道我在说什么,会有同感,而且这其实不是一个 ...

随机推荐

  1. Java Swing 窗体屏幕居中

    Java开发桌面程序用AWT或SWING,可以用设置主窗口位置,使主窗口居中一般使用下面的方法: 01.第一种方法              int windowWidth = frame.getWi ...

  2. Detours的使用准备

    Detours是微软开发的一个函数库,可用于捕获系统API.在用其进行程序开发之前,得做一些准备工作: 一.下载Detours 在http://research.microsoft.com/sn/de ...

  3. element ui 查询过滤

    1.搜索框v-model="searchText" 2.data 声明searchText:"" 3.el-table:data="tables&qu ...

  4. 13. DMA

    1. DMA简介 直接存储器存取(Dma)是为了提供高速数据传输外围设备和内存以及内存到内存.数据可以通过dma快速移动.没有任何CPU操作.这使得CPU资源可以用于其他操作. 这两个DMA控制器总共 ...

  5. [kuangbin带你飞]专题一 简单搜索 - L - Oil Deposits

    #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #i ...

  6. 从0的1学习JavaSE,Jdk的安装

    一.常用的dos命令 dir 罗列出当前目录的下所有文件名字 cd 路径 切换路径,该路径可以是相对于路径也可以是绝对路径 相对路径,只相对于当前的目录下的文件 绝对路径,是从盘符开始的路径地址 注意 ...

  7. 关于ctype.h头文件使用说明

    ctype.h里的函数概况: 1.字符测试函数 (1)函数原型均为 int isXXX( int ch) (2)参数为int,任何参数均被转换为整形 (3)只能处理[0,127]之间的值 2.字符映射 ...

  8. json对象数组的创建、遍历、添加、删除、修改、js的splice()用法

    本文链接:https://blog.csdn.net/houfengfei668/article/details/79843625 )第二种方式:手动构造json对象数组 )for )用splice方 ...

  9. iOS开发系列-iOS布局相关

    LayoutSubViews 需要在某个View调整子视图的位置时,可以重写. 以下情况会出发LayoutSubViews方法的调用 init初始化不会触发layoutSubviews,但是是用ini ...

  10. mysql UDF提权问题

    测试UDF提权,时候遇到问题,创建函数shell提示存在 当执行操作的时候又提示,shell函数不存在. FUNCTION mysql.shell does not exist 如果在测试环境下,一般 ...