硒无头铬与代理身份验证



我正在使用Selenium(4.1.0(和C#(.Net 5.0/Console应用程序(实现无头Chrome WebDriver(100.0.48.96.60(的自动化。我想添加代理身份验证,但似乎什么都不适合我。

到目前为止我尝试过的:

  1. 硒的BiDi API:https://www.selenium.dev/documentation/webdriver/bidirectional/bidi_api/#register-基本身份验证它在随机时间(可能是在打开url时(导致2个异常:

System.InvalidOperationException:"未收到命令响应:Fetch.getResponseBody">

OpenQA.Selenium.DevTools.CommandResponseException:"Fetch.continueRequest:InterceptionId无效。">

  1. 代理身份验证扩展:https://github.com/RDavydenko/OpenQA.Selenium.Chrome.ChromeDriverExtensions.它不适用于无头镀铬
  2. AutoIT。我认为无头铬也不起作用
  3. 这样设置代理:

"用户名:password@IP:PORT";

我能找到的所有答案要么不适用于headless,要么不再适用。所以,可以自由地留下你能想到的关于这个主题的任何想法。

此响应是用Java编写的,但您可以将其调整为同时具有两个库的C#,它使用硒的BI-DI增强器它在无头中为我工作(https://www.browserstack.com/docs/automate/selenium/event-driven-testing#register-基本身份验证(。

您有4个var要填充PROXY_HOST、PROXY_PORT、PROXY_USER、PROXY_PASS:

ChromeOptions options = new ChromeOptions();
options.setHeadless(true);
options.setProxy(new Proxy().setHttpProxy(PROXY_HOST + ":" + PROXY_PORT).setSslProxy(PROXY_HOST + ":" + PROXY_PORT));
driver = new ChromeDriver(options);
DevTools devTools = ((HasDevTools) driver).getDevTools();
devTools.createSession();
driver = new Augmenter().
addDriverAugmentation("chrome", HasAuthentication.class, (caps, exec) -> (whenThisMatches, useTheseCredentials) -> devTools.getDomains().network().addAuthHandler(whenThisMatches, useTheseCredentials)).augment(driver);
((HasAuthentication) driver).register(UsernameAndPassword.of(PROXY_USER, PROXY_PASS));

相关内容

  • 没有找到相关文章

最新更新