Невозможно получить доступ к 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 (х);