Незащищенное соединение из-за браузера mob proxy selenium-grid java. Даже сбой после загрузки сертификата root - PullRequest
0 голосов
/ 23 марта 2020

Мы сталкиваемся с проблемой в потоке автоматизации, когда мы пытаемся запустить URL через автоматизацию, он показывает, как небезопасный из-за того, что сайт не загружает надлежащее содержимое на странице, так как вызовы API становятся сбой из-за из соображений безопасности, поскольку это не безопасно. Мы видели, что прокси-сервер browsermob вызвал эту ошибку с прошлой недели, до этого она работала нормально. Мы предполагаем, что прокси-сервер browsermob создает проблему, потому что, если мы комментируем код настройки прокси-сервера (код, упомянутый ниже), то он ведет себя как ожидалось.

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

Инструменты, которые мы используем: 1.Selnium Grid Java TestNG framework 2.Selenium 3.141.59 3. Java 12 4. Browsermob-proxy 2.1.5 5.Guava 28.2-jre

Соединение url показывается как небезопасное, поскольку сертификат недействителен. (Ошибка: этот сертификат CA Root не является доверенным, поскольку он не находится в Trusted Root Магазин центров сертификации.) Фрагмент кода приведен здесь:

        public RemoteWebDriver startUpDriver(String browserType, String nodeURL) {              
                ChromeOptions options = new ChromeOptions();
                options.setCapability(CapabilityType.BROWSER_NAME, "chrome");
                options.setCapability(CapabilityType.PLATFORM_NAME, Platform.ANY);
                //options.addArguments("--incognito");
                options.setAcceptInsecureCerts(true);
                options.addArguments("--allow-insecure-localhost");
                options.addArguments("--ignore-certificate-errors");
                options.addArguments(CapabilityType.ACCEPT_SSL_CERTS);
                options.addArguments(CapabilityType.ENABLE_PROFILING_CAPABILITY);
                options.addArguments(CapabilityType.ACCEPT_INSECURE_CERTS);
                //options.addArguments(CapabilityType.SUPPORTS_APPLICATION_CACHE);
                options.setCapability("networkConnectionEnabled", true);
                options.setCapability("browserConnectionEnabled", true);
                options.addArguments("--disable-gpu");
                logPrefs = new LoggingPreferences();
                logPrefs.enable(LogType.BROWSER, Level.ALL);
                options.setCapability(CapabilityType.LOGGING_PREFS, logPrefs);
                proxy = getProxyServer();
                Proxy seleniumProxy = getSeleniumProxy(proxy);
                options.setCapability(CapabilityType.PROXY, seleniumProxy);
                options.addArguments("--start-maximized");
                remoteWebDriver = new RemoteWebDriver(new URL(nodeURL), options);
        }
        public BrowserMobProxy getProxyServer() {
            File pemEncodedCAFile = new File("path to certificate\\ca-certificate-ec.cer");
            //ca-certificate-ec.cer has been downloaded from (https://raw.githubusercontent.com/lightbody/browsermob-proxy/master/browsermob-core/src/main/resources/sslSupport/ca-certificate-rsa.cer)
            TrustSource trustSource = TrustSource.defaultTrustSource().add(pemEncodedCAFile);
            ImpersonatingMitmManager mitmManager = ImpersonatingMitmManager.builder()
            .trustSource(trustSource)
            .trustAllServers(true)
            .build();
            BrowserMobProxy proxy = new BrowserMobProxyServer();
            proxy.setTrustSource(trustSource);
            proxy.setMitmManager(ImpersonatingMitmManager.builder().trustAllServers(true).build());
            //proxy.setMitmManager(mitmManager);
            proxy.setTrustAllServers(true);
            proxy.start();
            return proxy;
        }

public Proxy getSeleniumProxy(BrowserMobProxy proxyServer) {
    Proxy seleniumProxy = ClientUtil.createSeleniumProxy(proxyServer);
    try {
        String hostIp = Inet4Address.getLocalHost().getHostAddress();
        int port = proxyServer.getPort();

        seleniumProxy.setHttpProxy(hostIp + ":" + port);
        seleniumProxy.setSslProxy(hostIp + ":" + port);
    } catch (UnknownHostException e) {

    }
    return seleniumProxy;
}

Любая помощь очень ценится, поскольку мы застряли здесь полностью и не можем двигаться дальше, что в конечном итоге затрудняет наши ежедневные результаты.

Пожалуйста, найдите скриншот ниже: введите описание изображения здесь

...