You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C# WinForms的WebView2中设置带账号密码的代理?

解决WebView2设置带用户名密码代理无效的问题

你当前的写法错误在于,Chromium(WebView2基于它)的--proxy-server参数不支持直接在地址后追加用户名和密码,所以这种格式不会生效。下面是两种可行的解决方案:

方案一:使用PAC脚本+注入认证头

PAC脚本可以定义代理规则,配合请求头注入认证信息实现带密码的代理:

  1. 构造PAC脚本并通过参数传入:
CoreWebView2EnvironmentOptions options = new CoreWebView2EnvironmentOptions();
// 用Data URI加载PAC脚本内容,无需本地文件
string pacScript = "function FindProxyForURL(url, host) { return \"PROXY 000.00.000.000:8080; DIRECT\"; }";
string pacDataUri = $"data:text/javascript;base64,{Convert.ToBase64String(Encoding.UTF8.GetBytes(pacScript))}";
options.AdditionalBrowserArguments = $"--proxy-pac-file={pacDataUri}";
  1. 在WebView2初始化后,注入代理认证头:
await webView2.EnsureCoreWebView2Async();

webView2.CoreWebView2.WebResourceRequested += (sender, args) =>
{
    if (!args.Request.Headers.Contains("Proxy-Authorization"))
    {
        string authBase64 = Convert.ToBase64String(Encoding.ASCII.GetBytes("username:password"));
        args.Request.Headers.Add("Proxy-Authorization", $"Basic {authBase64}");
    }
};

方案二:使用ProxySettings属性(需WebView2 Runtime 1.0.1587.40+)

如果你的WebView2 Runtime版本足够新,可直接通过内置属性设置带认证的代理:

// 先确保CoreWebView2初始化完成
await webView2.EnsureCoreWebView2Async();

webView2.CoreWebView2.ProxySettings.Mode = CoreWebView2ProxyMode.FixedServers;
webView2.CoreWebView2.ProxySettings.Server = "000.00.000.000:8080";
webView2.CoreWebView2.ProxySettings.UserName = "username";
webView2.CoreWebView2.ProxySettings.Password = "password";

注意事项

  • 优先确认WebView2 Runtime版本,旧版本不支持ProxySettings属性
  • 检查代理地址、端口、账号密码的正确性,避免拼写错误
  • 使用PAC脚本时,确保脚本逻辑无语法错误

内容的提问来源于stack exchange,提问作者raajrush

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 16:10:59