Страница сайта недоступна при использовании Selenid Proxy

При включении встроенного Selenid Proxy возникает проблема с доступом к страницам сайта. Проблема возникает абсолютно с любой страницей любого сайта при включении встроенного прокси. Если выключить прокси, то всё работает. Мой основной кейс, требует установки хедера X_REMOTE_USER в запросе.

Для упрощения воспроизведения проблемы создал простой тест, который должен вывести информацию о запросе:

import com.codeborne.selenide.Browsers;
import com.codeborne.selenide.Configuration;
import com.codeborne.selenide.WebDriverRunner;
import com.google.common.collect.ImmutableMap;
import io.qameta.allure.Story;
import org.junit.jupiter.api.Test;
import org.openqa.selenium.remote.DesiredCapabilities;

import static com.codeborne.selenide.Selenide.open;

public class CheckTest {

	@Story("Проверка")
	@Test
	public void checkTest() throws InterruptedException {

		String selenoidURL = "http://localhost:4444/wd/hub";

		Configuration.proxyEnabled = true;
		Configuration.remote = selenoidURL;
		Configuration.browser = Browsers.CHROME;
		Configuration.browserVersion = "128.0_en";
		Configuration.screenshots = false;
		Configuration.browserCapabilities = getCapabilities();

		String standURL = "http://httpbin.org/get";

		open();

		WebDriverRunner.getSelenideProxy().getProxy().addHeader("X_REMOTE_USER", "Marmeladova");

		System.out.println(WebDriverRunner.getSelenideProxy().getProxy().getAllHeaders() + " HEADERS!!!!");

		open(standURL);
		Thread.sleep(1000000); // для просмотра в Selenoid UI
		System.out.println(WebDriverRunner.getWebDriver() + " DRIVER!!!!"); //Убедиться что WebDriver не Null
	}

	private DesiredCapabilities getCapabilities() {
		DesiredCapabilities capabilities = new DesiredCapabilities();
		capabilities.setBrowserName("chrome");
		capabilities.setCapability("selenoid:options", ImmutableMap.of(
				"enableVNC", true,
				"enableVideo", true,
				"enableLog", true
		));
		return capabilities;
	}
}

Для поднятия Selenoid и Selenoid UI использую docker-compose:

version: '3.6'
networks:
  selenoid:
    name: selenoid
    driver: bridge
services:
  selenoid:
    container_name: selenoid
    image: "aerokube/selenoid:latest-release"
    ports:
      - "4444:4444"
    volumes:
      - ./config/:/etc/selenoid/:ro
      - /opt/video:/opt/selenoid/video
      - /opt/logs:/opt/selenoid/logs
      - /var/run/docker.sock:/var/run/docker.sock
    command: [ "-conf", "/etc/selenoid/browsers.json", "-container-network", "selenoid", "-limit", "10", "-retry-count", "2" ]
    networks:
      - selenoid
  selenoid-ui:
    container_name: selenoid-ui
    image: "aerokube/selenoid-ui:latest-release"
    ports:
      - "8080:8080"
    command: [ "--selenoid-uri", "http://selenoid:4444" ]
    networks:
      - selenoid

Настройка browsers.json:
{
“chrome”: {
“default”: “128.0_en”,
“versions”: {
“128.0_ru”: {
“port”: “4444”,
“image”: “selenoid/vnc_chrome:128.0”,
“env” : [“LANG=ru_RU.UTF-8”, “LANGUAGE=ru_RU.UTF-8”, “LC_ALL=ru_RU.UTF-8”]
},
“128.0_en”: {
“port”: “4444”,
“image”: “selenoid/vnc_chrome:128.0”,
“env” : [“LANG=en_US.UTF-8”, “LANGUAGE=en_US.UTF-8”, “LC_ALL=en_US.UTF-8”]
}
}
}
}

При выполнении теста захожу в Selenoid UI и вижу, сообщение о недоступности страницы, причем какой URL не указывал, всегда один результат:

Результат без использования прокси:

Тесты запускаются на машине с Windows 10, в проекте используется Java 19

Первое, что надо проверить - это какой URL селенидовского прокси. Он должен быть виден в логах. Возможно, этот URL недоступен из контейнера с браузером.

P.S. Проект Selenoid официально заморожен, автры советуют перебраться на Moon.
А я советую запускать браузер локально, без всякий мунов-селенов-гридов.

Пока более удобный вариант использование selenoid, если возможно, тесты должны работать на стенде удалённом, а не локально.

Выводил информацию по поводу прокси, изначально код подхватывал у меня адрес VPN, а не локальной машины в коде Configuration.proxyHost = new org.openqa.selenium.net.NetworkUtils().getNonLoopbackAddressOfThisMachine();
Если убрать ручное определение Configuration.proxyHost, то вообще будет null в поле, автоматически не определяется почему-то в моём случае.

Сейчас написал механизм, пока костыльный, чисто для определения адреса локальной машины, он определяет адрес верно, вот код:

private String getLocalIpv4Address() throws SocketException, UnknownHostException {
		List<NetworkInterface> netInts = Collections.list(NetworkInterface.getNetworkInterfaces());

		if (netInts.size() == 1) {
			return InetAddress.getLocalHost().toString();
		}

		boolean scip = true;
		for (NetworkInterface net : netInts) {
			if (!net.isLoopback() && !net.isVirtual() && net.isUp()) {
				Enumeration<InetAddress> addrEnum = net.getInetAddresses();
				while (addrEnum.hasMoreElements()) {
					InetAddress addr = addrEnum.nextElement();
					if ( !addr.isLoopbackAddress() && !addr.isAnyLocalAddress()
							&& !addr.isLinkLocalAddress() && !addr.isMulticastAddress()
					) {
						if (!scip) {
							return addr.getHostAddress();
						} else if (scip) {
							scip = false;
						}
					}
				}
			}
		}
		return null;
	}

Далее использую его Configuration.proxyHost = getLocalIpv4Address();

proxyHost устанавливается в значение адреса машины, вот вывод в консоль информации, которую сам логирую:

image

Вот код, который выводит данную информацию:

System.out.println(ipAddress + " !!!!! address PC");

		open();

		WebDriverRunner.getSelenideProxy().getProxy().addHeader("X_REMOTE_USER", "Marmeladova");

		System.out.println(WebDriverRunner.getSelenideProxy().getProxy().getAllHeaders() + " HEADERS!!!!");
		System.out.println(WebDriverRunner.getSelenideProxy().getProxy() + " PROXY!!!!");

		System.out.println(Configuration.proxyHost + " PROXY HOST!!!!");

Поднял сервер и через curl обратился к нему из контейнера Selenid, адрес доступен.

Есть идеи в чём может быть проблема или что-то может не так делаю ? Если нужна какая-то дополнительная информация, то пришлю.

Проблема к слову остаётся:

Привет!
Обычно вам не нужно определять proxyHost. Пусть там останется null.
Тогда Селенид определит его сам.

Проблема в том, что так и делал уже, проблема с недоступностью страницы вышеописанная остаётся.
Сейчас просто решил попробовать оставить всё на selenium и руками с помощью docker-compose прокидывать браузер в контейнер и запускать так тесты.
Чуть позже вернусь к варианту с Selenid, но пока нет догадок от чего такое поведение.