簡體   English   中英

具有代理身份驗證的 Selenium 無頭 chrome

[英]Selenium headless chrome with proxy authentication

我正在使用 Selenium (4.1.0) 和 C# (.Net 5.0/Console 應用程序) 自動化 Headless Chrome WebDriver (100.0.48.96.60)。 我想添加代理身份驗證,但似乎沒有什么對我有用。

到目前為止我已經嘗試過:

  1. Selenium 的 BiDi API: https ://www.selenium.dev/documentation/webdriver/bidirectional/bidi_api/#register-basic-auth 它在隨機時間導致 2 個異常(可能在打開 url 時):

System.InvalidOperationException:'未收到命令響應:Fetch.getResponseBody'

OpenQA.Selenium.DevTools.CommandResponseException: 'Fetch.continueRequest: Invalid InterceptionId。'

  1. 代理身份驗證擴展: https ://github.com/RDavydenko/OpenQA.Selenium.Chrome.ChromeDriverExtensions。 它不適用於無頭鍍鉻。
  2. 汽車信息技術。 我認為也不適用於無頭鍍鉻。
  3. 像這樣設置代理:

“用戶名:密碼@IP:端口”

我能找到的所有答案要么不適用於無頭,要么不再適用。 因此,您可以隨意留下您對該主題的任何想法。

這個響應是用 Java 編寫的,但你可以將它調整為具有兩個庫的 C#,它使用帶有硒的 BI-DI 的 Augmenter,它對我來說無頭( 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)).setSsl(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));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM