NanUI网络拦截

发布时间 2023-09-26 14:37:58作者: 正在缓冲
public class MyResponseFilter : CefResponseFilter
    {
        private MemoryStream outputStream = new MemoryStream();
        /// <summary>
        /// 
        /// </summary>
        /// <param name="dataIn">数据输入</param>
        /// <param name="dataInSize"></param>
        /// <param name="dataInRead"></param>
        /// <param name="dataOut">数据输出</param>
        /// <param name="dataOutSize"></param>
        /// <param name="dataOutWritten"></param>
        /// <returns></returns>
        protected override CefResponseFilterStatus Filter(UnmanagedMemoryStream dataIn, long dataInSize, out long dataInRead, UnmanagedMemoryStream dataOut, long dataOutSize, out long dataOutWritten)
        {
            dataInRead = 0;
            dataOutWritten = 0;

            byte[] buffer = new byte[4096];
            int bytesRead = 0;

            do
            {
                bytesRead = dataIn.Read(buffer, 0, buffer.Length);
                if (bytesRead > 0)
                {
                    outputStream.Write(buffer, 0, bytesRead);
                }
            } while (bytesRead > 0);

            byte[] outputBytes = outputStream.ToArray();
            dataOut.Write(outputBytes, 0, outputBytes.Length);

            dataInRead = outputBytes.Length;
            dataOutWritten = outputBytes.Length;
            //var txt= Encoding.UTF8.GetString(outputBytes, 0, outputBytes.Length);
            return CefResponseFilterStatus.Done;
        }

        protected override bool InitFilter()
        {
            return true;
        }
    }
public class MyResourceRequestHandler : CefResourceRequestHandler
    {
        protected override CefCookieAccessFilter? GetCookieAccessFilter(CefBrowser browser, CefFrame frame, CefRequest request)
        {
            return null;
        }
        protected override CefResponseFilter? GetResourceResponseFilter(CefBrowser browser, CefFrame frame, CefRequest request, CefResponse response)
        {
          
            return new MyResponseFilter();
        }
       
    }
private void MainWindow_GetResourceRequestHandler(object? sender, GetResourceRequestHandlerEventArgs e)
        {
           e.Handler = new MyResourceRequestHandler();
        }
this.GetResourceRequestHandler += MainWindow_GetResourceRequestHandler;