我可以使用 BrowserMob 创建一个 Selenium 代理,一切都在我的本地 PC 上运行良好。当我在服务器(Windows Server 2008 R2 Standard)上运行相同的代码时,它会出错我们的“无法连接到隧道”。
我尝试了 Chrome 开关的不同组合,例如 --ignore-certificate-errors、--user-data-dir=C:/temp/insecurechrome、--ignore-certificate-errors。我已确保 .setTrustAllServer(true) 已设置。我试过调整 Windows 防火墙没有任何效果。
我将添加我正在使用的代码,但是,它确实可以在我的本地 PC 上运行,但不能在服务器上运行。我希望有人可以建议我可以更改的服务器上的其他设置或我可能错过的代码中的某些内容。
我首先收到一条 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);