且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

带有CefSharp Offscreen的仅一个浏览器的代理

更新时间:2023-08-31 22:24:10

实际上,这非常容易。

我的问题是我试图设置RequestContext在浏览器初始化之后,它是只读的。

My problem was that I was trying to set the RequestContext after the browser initialization, while it's read only.

但是它可以在构造函数中作为参数传递:

But it can be passed as a parameter in the constructor :

        var rc1 = new RequestContext();
        ChromiumWebBrowser firstbrowser = new ChromiumWebBrowser("", null, rc1);
        var rc2 = new RequestContext();
        ChromiumWebBrowser secondbrowser = new ChromiumWebBrowser("", null, rc2);

对Amaitland的所有信用

All credit to Amaitland

对于更可重用的方式是,可以像这样将代理设置过程逐出:

For a more reusable way, the process to set the proxy can be deported like this :

    async private Task SetProxy(ChromiumWebBrowser cwb, string Address)
    {
        await Cef.UIThreadTaskFactory.StartNew(delegate
        {
            var rc = cwb.GetBrowser().GetHost().RequestContext;
            var v = new Dictionary<string, object>();
            v["mode"] = "fixed_servers";
            v["server"] = Address;
            string error;
            bool success = rc.SetPreference("proxy", v, out error);
        });
    }

然后我可以打电话:

SetProxy(firstbrowser, "123.123.123.123:1234")