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

如何在TEdgeBrowser中设置User Agent和代理?

TEdgeBrowser 设置User Agent与代理参数教程

1 设置User Agent

TEdgeBrowser 基于 Chromium 内核的 WebView2 组件,支持全局初始化配置和运行时动态修改两种UA设置方式。

1.1 全局固定UA(初始化时配置)

适合整个控件生命周期内使用同一份UA的场景,在BeforeCreateWebView事件中配置即可:

uses Vcl.Edge;

procedure TMainForm.EdgeBrowserBeforeCreateWebView(Sender: TObject);
begin
  // 替换为你需要的自定义UA字符串
  EdgeBrowser.EnvironmentOptions.UserAgent := 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) CustomUA/1.0';
end;

1.2 运行时动态修改UA

如果需要在控件初始化完成后切换UA,直接调用WebView2原生接口修改配置:

uses Winapi.WebView2, Vcl.Edge;

procedure TMainForm.ChangeUserAgent(const NewUA: string);
var
  WebView2: ICoreWebView2;
  WebSettings: ICoreWebView2Settings;
begin
  // 确保控件已完成初始化
  if not EdgeBrowser.Initialized then Exit;
  if Supports(EdgeBrowser.DefaultInterface, ICoreWebView2, WebView2) then
  begin
    if Succeeded(WebView2.get_Settings(WebSettings)) then
    begin
      WebSettings.put_UserAgent(PWideChar(NewUA));
    end;
  end;
end;

2 设置代理参数

WebView2的代理属于环境级配置,必须在控件初始化完成前设置,已经初始化的实例无法修改代理,需要销毁重建才能生效。

2.1 无认证代理配置

同样在BeforeCreateWebView事件中通过附加浏览器启动参数配置:

uses Vcl.Edge;

procedure TMainForm.EdgeBrowserBeforeCreateWebView(Sender: TObject);
var
  ProxyArgs: string;
begin
  // 代理格式支持:http://[IP]:[端口]、socks5://[IP]:[端口]
  ProxyArgs := '--proxy-server=socks5://127.0.0.1:1080';
  // 可选配置:本地地址跳过代理
  ProxyArgs := ProxyArgs + ' --proxy-bypass-list=<-loopback>';
  
  EdgeBrowser.EnvironmentOptions.AdditionalBrowserArguments := ProxyArgs;
end;

2.2 带账号密码的认证代理配置

需要额外注册代理认证事件填充账号密码:

uses Winapi.WebView2, Vcl.Edge;

procedure TMainForm.EdgeBrowserCreateWebViewCompleted(Sender: TObject; AResult: HRESULT);
var
  WebView2: ICoreWebView2;
begin
  if not Succeeded(AResult) then Exit;
  if Supports(EdgeBrowser.DefaultInterface, ICoreWebView2, WebView2) then
  begin
    // 注册基础认证请求回调
    WebView2.add_BasicAuthenticationRequested(
      TCallback<ICoreWebView2, ICoreWebView2BasicAuthenticationRequestedEventArgs>.Create(
        procedure(const Sender: ICoreWebView2; const Args: ICoreWebView2BasicAuthenticationRequestedEventArgs)
        var
          AuthResponse: ICoreWebView2BasicAuthenticationResponse;
        begin
          // 仅处理代理认证请求
          if not Args.get_IsProxyAuthentication then Exit;
          
          Args.get_Response(AuthResponse);
          AuthResponse.put_UserName(PWideChar('你的代理账号'));
          AuthResponse.put_Password(PWideChar('你的代理密码'));
          Args.put_Cancel(False);
        end
      ), nil
    );
  end;
end;

注意事项

  • 多个TEdgeBrowser实例默认共用同一个WebView2环境,会复用同一份代理配置,需要不同实例用不同代理时要为每个实例创建独立的WebView2环境
  • 运行时修改UA仅对修改之后发起的网络请求生效,已经加载的页面需要刷新才会应用新的UA

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 07:18:04