C# 如何在c selenium chrome驱动程序中验证(用户/密码)代理

C# 如何在c selenium chrome驱动程序中验证(用户/密码)代理,c#,google-chrome,selenium,C#,Google Chrome,Selenium,我有一个HTTP/HTTPS代理,需要使用用户名和密码进行身份验证。如何使用C selenium chrome webdriver实现这一点 string host = proxies[count].Split(':')[0]; int port = Convert.ToInt32(proxies[count].Split(':')[1]) + 1; string prox = host + ":" + port.ToString(); OpenQA.Selenium.Proxy proxy

我有一个HTTP/HTTPS代理,需要使用用户名和密码进行身份验证。如何使用C selenium chrome webdriver实现这一点

string host = proxies[count].Split(':')[0];
int port = Convert.ToInt32(proxies[count].Split(':')[1]) + 1;

string prox = host + ":" + port.ToString();

OpenQA.Selenium.Proxy proxy = new OpenQA.Selenium.Proxy();
proxy.HttpProxy = prox;
proxy.SslProxy = prox;
options.Proxy = proxy;

选项是我分配给驱动程序的ChromeOptions类。

这是针对firefox的,但上面的答案可能会有所帮助

您可以做的是创建一个配置文件并将身份验证数据保存在其中。如果您的配置文件名为webdriver,则可以从初始化中的代码中选择它:

ProfilesIni allProfiles = new ProfilesIni(); 
FirefoxProfile profile = allProfiles.getProfile("WebDriver"); 
profile.setPreferences("foo.bar",23);
WebDriver driver = new FirefoxDriver(profile);

我发现唯一成功的方法就是使用AutoIT

我已经为所有主要浏览器设置了代理身份验证,但这应该适用于Chrome。 这是我用记忆写在手机上的。如果它不起作用,让我知道,我会纠正的

WinWait("data:, - Google Chrome","","10")
If WinExists("data:, - Google Chrome","")Then
WinActivate("data:, - Google Chrome")
Send("USERNAMEGOESHERE"{TAB}")
Send("USERPASSWORDGOESHERE"{ENTER}")
使用AutoIT,将其创建为脚本,将其编译为exe,保存在某个位置,并使用以下Java代码引用该文件:

Runtime.getRuntime().exec("C:\\users\\USERID\\desktop\\FILENAME.exe");
我发现在调用触发代理身份验证的URL之前,最好先调用代理脚本。

2019更新

在多次不幸的尝试之后,最简单的解决方案是为Chrome创建一个扩展,正如Mike在文章中解释的那样

听起来很奇怪,但实际上很简单。

2021更新 我创建了一个简单的库,可以帮助您进行selenium代理身份验证。您可以在查看源代码。当使用无头驾驶时,它也可以工作

用法:

公共空隙试验 { //创建本地代理服务器 var proxyServer=新的SeleniumProxyAuth; //不要等待,使用本地代理服务器同时拥有多个驱动程序 TestSeleniumProxyServerproxyServer,新的ProxyAuth123.123.123,80,prox-username1,prox-password1; TestSeleniumProxyServerproxyServer,新的ProxyAuth11.22.33.44,80,prox-username2,prox-password2; TestSeleniumProxyServerproxyServer,新的ProxyAuth111.222.222.111,80,prox-username3,proxy-password3; 而true{} } 专用异步任务TestSeleniumProxyServerSeleniumProxyAuth代理服务器,代理身份验证 { //添加新的本地代理服务器终结点 var localPort=proxyServer.AddEndpointauth; ChromeOptions选项=新的ChromeOptions; //选项1.AddArgumentsheadless; //将驱动程序的代理服务器配置为本地端点端口 options.AddArgument$-proxy server=127.0.0.1:{localPort}; //可选的 var service=ChromeDriverService.CreateDefaultService; service.HideCommandPromptWindow=true; //创建驱动程序 var驱动程序=新的ChromeDriver服务,选项; //测试驾驶员是否工作正常 driver.Navigate.GoToUrlhttps://www.myip.com/; 等待任务。延迟5000; driver.Navigate.GoToUrlhttps://amibehindaproxy.com/; 等待任务。延迟5000; //处置司机 司机:处理; }
那么问题是什么?你已经有了上面的代码,很好,它有什么问题吗?它没有用户名:密码进行身份验证。我在chrome窗口中得到一个弹出框,输入登录信息以使用代理。我也成功使用AutoIT,但发现AutoIT在Selenium网格上运行时存在局限性。如果你没有并行化你的测试运行,@TheBear的解决方案应该会让你走上正轨。嗨!我第一次使用它时,chrome阻止我说你想继续吗?高级,但我就是无法到达该站点。但是第二个第三次站点返回一个空值。你能帮助@Erik吗Kokalj@PriyankaArora你什么意思?如果您不需要headless功能,可以尝试使用chrome扩展进行代理身份验证