Search code examples
c#wpfcefsharp

Block requests to specific domain CefSharp


I have cefsharp ChromiumWebBrowser. For example i'm opening discord.com website and in the background site itself making requests to discordapp.com. How can i block requests to discordapp.com domain?

I tried using custom IRequestHandler.OnBeforeBrowse, but it trigers only when opening site, not when site making requests.

In chrome i found this: https://chrome.google.com/webstore/detail/http-request-blocker/eckpjmeijpoipmldfbckahppeonkoeko and it's working fine, but idk how to do same in cefsharp.


Solution

  • Solution:

    public class CustomRequestHandler : CefSharp.Handler.RequestHandler
    {
        protected override IResourceRequestHandler GetResourceRequestHandler(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IRequest request, bool isNavigation, bool isDownload, string requestInitiator, ref bool disableDefaultHandling)
        {
    
            if (request.Url.Contains("discordapp"))
            {
                return new CustomResourceRequestHandler();
            }
    
            return null;
        }
    }
    
    public class CustomResourceRequestHandler : CefSharp.Handler.ResourceRequestHandler
    {
        protected override CefReturnValue OnBeforeResourceLoad(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IRequest request, IRequestCallback callback)
        {
    
            request.Url = "";
            request.Dispose();
    
            return CefReturnValue.Cancel;
        }
    }
    
    browser.RequestHandler = new CustomRequestHandler();