具有代理认证功能的 selenium Headless Chromium 合金

gev0vcfq  于 2022-11-10  发布在  其他
关注(0)|答案(1)|浏览(131)

我的工作是使用Selify(4.1.0)和C#(.NET5.0/控制台应用程序)实现Headless Chrome WebDriver(100.0.48.96.60)的自动化。我想添加代理身份验证,但似乎都不适用于我。
到目前为止,我尝试过的是:
1.Selify的BiDi接口:https://www.selenium.dev/documentation/webdriver/bidirectional/bidi_api/#register-basic-auth随机时刻(可能是打开url时)导致2次异常:
System.InvalidOperationException:‘未收到命令响应:Fetch.getResponseBody’
OpenQA.Selenium.DevTools.CommandResponseException:‘Fetch.ContineRequest.无效的拦截ID。’
1.代理认证扩展:https://github.com/RDavydenko/OpenQA.Selenium.Chrome.ChromeDriverExtensions。它不适用于Headless Chromium 合金。
1.AutoIT。我认为在Headless Chromium 合金上也不能使用。
1.设置代理如下:
“用户名:密码@IP:端口”
我能找到的所有答案要么是不再为无头工作,要么就是不再工作。所以你可以自由地留下你能想到的关于这个主题的任何想法。

ruarlubt

ruarlubt1#

这个响应是用JAVA写的,但我想你可以把它改编成C#,C#同时有两个库,它与Selify的BI-DI一起使用它在无头(https://www.browserstack.com/docs/automate/selenium/event-driven-testing#register-basic-auth).中工作
您有4个变量来填充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));

相关问题