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

C# Selenium中Chrome代理账号密码弹窗的自动输入方案

解决Selenium C#中代理认证弹窗问题

你当前使用--proxy-auth参数可能无法正确绕过代理认证弹窗,这是因为Chrome的--proxy-auth参数在部分环境下不生效,或者代理服务器要求的是HTTP基础认证弹窗。以下是两种可行的解决方法:

方法1:将认证信息嵌入代理地址(推荐)

直接把用户名和密码嵌入到代理服务器地址中,Chrome会自动携带认证信息,不会弹出认证窗口。如果密码包含特殊字符(如@、:、/),需要先进行URL编码。

var options = new ChromeOptions();
string proxyHost = "your-proxy-host";
int proxyPort = 8080; // 替换为你的代理端口
string proxyUser = "your-username";
string proxyPassword = "your-password";

// 对用户名和密码进行URL编码,处理特殊字符
string encodedUser = Uri.EscapeDataString(proxyUser);
string encodedPass = Uri.EscapeDataString(proxyPassword);

// 构造带认证信息的代理地址
string proxyUrl = $"http://{encodedUser}:{encodedPass}@{proxyHost}:{proxyPort}";
options.AddArgument($"--proxy-server={proxyUrl}");

var driver = new ChromeDriver(options);
driver.Navigate().GoToUrl("https://whatismyipaddress.com/");

方法2:通过Selenium Alert接口处理弹窗

如果嵌入地址的方法无效,可以直接操作浏览器的原生认证弹窗(属于HTTP基础认证Alert):

using OpenQA.Selenium.Support.UI;

var options = new ChromeOptions();
string proxyHost = "your-proxy-host";
int proxyPort = 8080;
string proxyUser = "your-username";
string proxyPassword = "your-password";

options.AddArgument($"--proxy-server=http://{proxyHost}:{proxyPort}");

var driver = new ChromeDriver(options);

try
{
    // 等待认证弹窗出现,超时时间10秒
    WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
    IAlert authAlert = wait.Until(driver => driver.SwitchTo().Alert());
    
    // 输入用户名和密码,用换行符分隔
    authAlert.SendKeys($"{proxyUser}\n{proxyPassword}");
    // 确认弹窗
    authAlert.Accept();
}
catch (WebDriverTimeoutException)
{
    // 没有弹窗则继续执行
}

driver.Navigate().GoToUrl("https://whatismyipaddress.com/");

注意事项

  • 优先使用方法1,避免弹窗交互带来的不稳定因素;
  • 方法2需要确保弹窗是浏览器原生的HTTP基础认证窗口,而非页面自定义弹窗;
  • URL编码必须处理用户名和密码中的特殊字符,否则会导致代理地址格式错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 11:12:17