Невозможно получить доступ к Selenium Proxy при настройке через BrowserMob

Я могу создать прокси-сервер Selenium с помощью BrowserMob, все отлично работает на моем локальном ПК. Когда я запускаю один и тот же код на сервере (Windows Server 2008 R2 Standard), он выдает ошибку "мы не можем подключиться к туннелю".

Я пробовал разные комбинации переключателей Chrome, такие как --ignore-certificate-errors, -user-data-dir=C:/temp/insecurechrome,- ignore-certificate-errors. Я заверил, что.setTrustAllServer (true) установлен. Я попытался настроить Windows Firewal без какого-либо эффекта.

Я добавлю свой код, который я использую, однако он работает на моем локальном ПК, но не на сервере. Я надеюсь, что кто-то может предложить другие настройки на сервере, которые я могу изменить, или что-то в моем коде, который я мог пропустить.

Сначала я получаю сообщение браузера Chrome: в ожидании прокси-туннеля. Несколько секунд спустя (15-20). Я получаю ошибку: ERR_TUNNEL_CONNECTION_FAILED.

    browserMobProxyServer = new BrowserMobProxyServer(); 
    browserMobProxyServer.setTrustAllServers(true);
    browserMobProxyServer.start(0);
    port = browserMobProxyServer.getPort();
    seleniumProxy = ClientUtil.createSeleniumProxy(browserMobProxyServer);

    ChromeOptions options = new ChromeOptions();
    options.addArguments("--proxy-server","--ignore-certificate-errors","--user-data-dir=C:/temp/insecurechrome");

    Map<String, Object> prefs = new HashMap<String, Object>();
    prefs.put("credentials_enable_service", false);
    prefs.put("profile.password_manager_enabled", false);
    options.setExperimentalOption("prefs", prefs);
    PropertyConfigurator.configure("./resources/properties/log4j.properties");
    DesiredCapabilities desiredCapabilities = new DesiredCapabilities();

    desiredCapabilities.setCapability(ChromeOptions.CAPABILITY, options);
    desiredCapabilities.setCapability(CapabilityType.PROXY, seleniumProxy);
    //desiredCapabilities.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);  //Has no effect

    driverService = new ChromeDriverService.Builder().usingDriverExecutable(new File("./resources/driver/chromedriver.exe")).usingPort(Integer.parseInt(portRequested)).build();
    driverService.start();
    return new ChromeDriver((ChromeDriverService)driverService, desiredCapabilities);   

1 ответ

Я смог выяснить свою собственную проблему. Существовал корпоративный прокси, который перехватывал трафик. Этот прокси имеет разные протоколы для серверов и пользователей. При запуске на моем компьютере все работало нормально. Когда я запускал свою программу на сервере, мне нужно было разрешить переадресацию или цепочку прокси. Я достиг этого, добавив следующие строки в мой код выше:

import java.net.InetSocketAddress;......

InetSocketAddress x = new InetSocketAddress ("proxy.example.com", 80); browserMobProxyServer.setChainedProxy (х);

Другие вопросы по тегам