.NET 版 Chromium WebBrowser 动态设置 http, https, socks5 代理方法。
private void InitWebBrowser(string url) { ChromiumWebBrowser browser = new ChromiumWebBrowser(url); browser.Dock = DockStyle.Fill; //绑定 WebBrowser 初始化完成事件 browser.IsBrowserInitializedChanged += Browser_IsBrowserInitializedChanged; //添加到WinForm中 this.Controls.Add(browser); browser.BringToFront(); } private void Browser_IsBrowserInitializedChanged(object sender, IsBrowserInitializedChangedEventArgs e) { if(e.IsBrowserInitialized) { //只能在WebBrowser UI呈现后获取 Request 上下文 Cef.UIThreadTaskFactory.StartNew(delegate { //获取 Request 上下文 var rc = browser.GetBrowser().GetHost().RequestContext; var dict = new Dictionary<string, object>(); dict.Add("mode", "fixed_servers"); dict.Add("server", "127.0.0.1:1080"); string error; //设置代理 rc.SetPreference("proxy", dict, out error); //如果 error 不为空则表示设置失败。 if(!string.IsNullOrWhiteSpace(error)) { MessageBox.Show(error, "Tip", MessageBoxButtons.OK, MessageBoxIcon.Error); } }); } }
不要在 Cef.Initialize 时设置 CefCommandLineArgs.Add("proxy-server", "127.0.0.1:1080");,否则修改代理设置会失败。