首页 > 其他 > 详细

cefsharp入坑实践3

时间:2019-06-20 13:27:30      阅读:668      评论:0      收藏:0      [点我收藏+]

 

关于浏览器拦截的问题,解决方案是加入自定义的资源处理器,代码如下:

//设置自定义的资源处理器工厂
// browser.ResourceHandlerFactory = new MyResourceHandlerFactory();
var request = new MyRequestHandler();
(browser as IWebBrowser).RequestHandler = new MyRequestHandler();

 

/// <summary>
/// 自定义请求处理器(涉及到敏感信息的,用internal类型)
/// </summary>
internal class MyRequestHandler : CefSharp.Handler.DefaultRequestHandler
{

public override IResponseFilter GetResourceResponseFilter(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, IResponse response)
{
if (request.Url.StartsWith("file") && request.Url.EndsWith(".png") && request.Url.IndexOf("/png/") > 0)
{
string keyfile= request.Url.Substring(0, request.Url.Length - 4) + ".key";
keyfile = keyfile.Substring(8);
if (File.Exists(keyfile))
//此处判断当需要对response进行额外处理时,返回一个Filter实例。(判断语法仅供参考)
return new MyResponseFilter();
else
return base.GetResourceResponseFilter(browserControl, browser, frame, request, response);
}
else
return base.GetResourceResponseFilter(browserControl, browser, frame, request, response);
}

}


/// <summary>
/// 自定义响应过滤器(涉及到敏感信息的,用internal类型)
/// </summary>
internal class MyResponseFilter : IResponseFilter
{
int _filterindex = 0;
public MyResponseFilter()
{

}

public void Dispose()
{
}

/// <summary>
/// 获取输入流,经过处理后,写到输出流
/// </summary>
/// <param name="dataIn">输入流</param>
/// <param name="dataInRead">从输入流中读取的数量</param>
/// <param name="dataOut">输出流</param>
/// <param name="dataOutWritten">写入输出流的数量</param>
/// <returns></returns>
public FilterStatus Filter(Stream dataIn, out long dataInRead, Stream dataOut, out long dataOutWritten)
{
//注意,除本函数内,其它任何位置不得引用dataIn,dataOut
if (dataIn == null)
{
dataInRead = 0;
dataOutWritten = 0;

return FilterStatus.Done;
}

//若有更复杂的加密方式,处理方式应该类似

dataIn.CopyTo(dataOut);
dataInRead = dataIn.Length;
dataOutWritten = Math.Min(dataInRead, dataOut.Length);
_filterindex++;
return FilterStatus.NeedMoreData;
}

public bool InitFilter()
{
return true;
}
}

cefsharp入坑实践3

原文:https://www.cnblogs.com/talentsnail/p/11058100.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!