chromium - send custom header info on initial page load c#

前端 未结 3 1914
闹比i
闹比i 2020-12-06 12:05

Or How to inject a custom header into the initial request to a site when new-ing up an instance of the ChromiumWebBrowser.

I\'m a noob with Chromium

3条回答
  •  夕颜
    夕颜 (楼主)
    2020-12-06 13:07

    Updated to reflect major Chromium changes

    Updated to reflect changes made in version 75 (should work in 75 and newer)

    The method you're after should be OnBeforeResourceLoad, a basic example should look like:

    public class CustomResourceRequestHandler : ResourceRequestHandler
    {
        protected override CefReturnValue OnBeforeResourceLoad(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IRequest request, IRequestCallback callback)
        {
            var headers = request.Headers;
            headers["User-Agent"] = "My User Agent";
            request.Headers = headers;
    
            return CefReturnValue.Continue;
        }
    }
    
    public class CustomRequestHandler : RequestHandler
    {
        protected override IResourceRequestHandler GetResourceRequestHandler(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IRequest request, bool isNavigation, bool isDownload, string requestInitiator, ref bool disableDefaultHandling)
        {
            return new CustomResourceRequestHandler();
        }
    }
    
    browser.RequestHandler = new CustomRequestHandler();
    

    Using the IRequest.Headers property you must read the headers property, make changes then reassign it. It's now possible to use the SetHeaderByName/GetHeaderByName functions to get/set a single header.

    • RequestHandler API Doc
    • ResourceRequestHandler API Doc
    • IRequest.GetHeaderByName API Doc
    • IRequest.SetHeaderByName API Doc

提交回复
热议问题