C# 如何在c selenium chrome驱动程序中验证(用户/密码)代理
我有一个HTTP/HTTPS代理,需要使用用户名和密码进行身份验证。如何使用C selenium chrome webdriver实现这一点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
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扩展进行代理身份验证