BrowserMobProxy: как определить IP для прокси-сервера?

#java #docker #selenium #proxy #devops

#java #docker #селен #прокси #devops

Вопрос:

У меня есть BrowserMobProxy реализация в проекте. Эта логика использует IP-адрес для подключения к прокси и тестового веб-сервиса пользовательского интерфейса (прокси используется для сохранения статистики запросов / ответов). Раньше все работало нормально, но мы перезапускаем docker, и IP-адрес прокси-сервера был изменен. Теперь мне нужно найти новый IP-адрес для прокси.

Код, в котором используется IP-адрес

   public static void startProxyServer(String address) {//address = "172.17.0.2"
    if (browserMobProxy.isStarted()) {
      browserMobProxy.stop();
    }
    try {
      browserMobProxy.start(9090, Inet4Address.getByName(address)); // {1}
      useExclusivePort = browserMobProxy.getPort();
    } catch (Exception e) {
      throw new RuntimeException(e);
    }
  }
 

После перезапуска docker проект начал сбой в строке {1} .
Я начал поиск нового IP на сервере. К сожалению, я не могу использовать ifconfig команду из образа docker, поскольку эта команда там не устанавливается. Итак, я определил адрес с сервера следующим образом:

введите описание изображения здесь

После того, как я использую IP 172.17.0.2, код работает хорошо, и я надеялся, что решил эту проблему, но, как оказалось, я потерял соединение с этим прокси-сервером — в пользовательском интерфейсе я получил следующий результат:

введите описание изображения здесь

Так что я совершенно запутался:

  1. Все работает хорошо до перезапуска образа docker
  2. Старый IP выглядит как 172.19.0.5, но теперь с ним происходит сбой кода.
  3. Я «нашел» новый IP 172.17.0.2 и код, работающий с ним.
  4. Я не уверен, что определил правильный IP, поскольку все старые IP были запущены с 172.19.0.{4,5,8}
  5. У меня нет связи с новым IP
  6. Я не знаю или я нашел правильный IP и почему он подходит для кода, но не подходит для подключения
  7. Проект развертывается с помощью образа Jenkins docker. Браузеры запускаются в сетке selenium

#Вопрос:

Как мне нужно найти правильный IP, который я могу использовать для прокси-соединения?

Комментарии:

1. вам нужен способ программной передачи IP-адреса, например, с помощью аргумента env vairable или командной строки.

2. @DMart Ок. Как узнать, какой IP мне нужно передать?

3. Похоже, вы настроили внешний прокси, да? Нам понадобится более подробная информация об этом. Это не похоже на обычный прокси-сервер browsermob, который просто используется для управления запросами / ответами.

4. @DMart Я сам не настраиваю прокси. Может быть, изображение docker делает это

5. Какой браузер вы используете?

Ответ №1:

существуют и другие команды, с помощью которых вы можете узнать, на каком IP-адресе работает ваш сервер. проверьте, есть ли у вас доступ к любому из следующих

сначала вы можете попробовать

 netstat -an
 

который даст вам все IP-адреса, которые прослушивает ваш сервер, вместе с какими портами и какие IP-адреса подключены к нему вместе с портами

если это не сработает, попробуйте следующее https://dev.to/trexinc/netstat-without-netstat-inside-containers-9ak

затем попробуйте

 ip addr
 

что даст вам результат, аналогичный ifconfig

и последнее, что вы можете попробовать с

 docker inspect -f '{{ .NetworkSettings.IPAddress }}' containerID
 

который предоставит вам сетевые интерфейсы вашего docker

Комментарии:

1. Я получаю ошибку: ошибка синтаксического анализа шаблона: template: :1:18: выполнение «» в <.NetworkSettings . IPAddress>: на карте нет записи для ключа «NetworkSettings» с последней командой. Можете ли вы мне разъяснить?