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

WebView2运行时多次修改代理设置报错,如何实现轮换代理?

WebView2运行时多次修改代理的解决方案

你遇到的错误是因为WebView2一旦完成初始化(调用过EnsureCoreWebView2Async或设置过Source属性),就会绑定到对应的CoreWebView2Environment,无法再通过创建新环境重新初始化,重复调用EnsureCoreWebView2Async必然触发冲突报错。

要实现运行时多次修改代理,无需重新创建CoreWebView2Environment,直接通过已初始化的**CoreWebView2实例的ProxySettings**操作即可,具体步骤和代码如下:


1. 首次初始化WebView2(可选初始化时设置代理)

Private Async Sub InitializeWebView2()
    Dim options As New CoreWebView2EnvironmentOptions With {.Language = "en-GB"}
    ' 可选:初始化时设置初始代理
    options.AdditionalBrowserArguments = "--proxy-server=geo.xxxxx.com:12345"
    
    Dim env = Await CoreWebView2Environment.CreateAsync(Nothing, Nothing, options)
    Await WebView21.EnsureCoreWebView2Async(env)
    
    ' 初始化完成后,即可随时调用修改代理的方法
End Sub

2. 运行时动态修改代理

' 传入新代理地址(格式如"new.proxy.host:port")
Private Sub UpdateProxy(proxyAddress As String)
    ' 先确保WebView2已完成初始化
    If WebView21.CoreWebView2 Is Nothing Then
        MessageBox.Show("WebView2尚未完成初始化")
        Return
    End If

    ' 设置新代理:参数分别为代理地址、绕过代理的地址列表(空表示无)、是否绕过本地地址
    WebView21.CoreWebView2.ProxySettings.SetProxyOverride(proxyAddress, String.Empty, False)
    
    ' 若需恢复系统默认代理,调用以下代码:
    ' WebView21.CoreWebView2.ProxySettings.ClearProxyOverride()
End Sub

关键说明

  • 修改代理后无需重启WebView2,设置会立即生效,后续网络请求自动使用新代理配置。
  • SetProxyOverride的第三个参数设为True时,本地地址(如localhost)会绕过代理,根据需求调整即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 22:07:13