Управление сертификатами в Selenium, запущенном в Docker контейнере

Задача: необходимо подключиться к ресурсу, на котором используется собственный сертификат.

Данная задачу удобнее решать по этапам:

  • Подключиться к ресурсу, игнорируя предупреждения безопасности
  • Подключиться к ресурсу, используя свой собственный сертификат

Подключение к ресурсу, игнорируя предупреждения безопасности

Для игнорирования предупреждений необходимо написать код:

  • для Chrome
from selenium import webdriver

options = webdriver.ChromeOptions()
options.add_argument( 'ignore-certificate-errors' )
  • для Firefox
from selenium import webdriver

options = webdriver.FirefoxOptions()
options.add_argument( 'ignore-certificate-errors' )

Подключиться к ресурсу, используя свой собственный сертификат

Ниже приведено решение, которое позволило выполнить задачу, но не предусматривает выбор сертификата из нескольких доступных:

  • использовать в Selenium Firefox
  • создать профиль пользователя, в котором будет использоваться пользовательский сертификат
  • использование созданного профиля при обращении к ресурсу

Использование в Selenium Firefox

Необходимо использовать образ: selenium/standalone-firefox:

version: "3"

services:
  browser:
    image: selenium/standalone-firefox
    ports:
      - "4444:4444"
    environment:
      VNC_NO_PASSWORD: 1

Создание профиля пользователя в Firefox и настройка пользовательского сертификата

Необходимо выполнить шаги:

  1. Открыть мастер создания нового профиля

Для запущенного Firefox:

  • в адресной строке набрать about:profiles
  • в открывшейся области нажать кнопку «Создать новый профиль»
управление профилями в Firefox

Для не запущенного Firefox:

  • открыть окно «Выполнить», нажав комбинацию «Windows» + «R»
  • ввести команду:
firefox.exe -P
  • в открывшемся окне нажать кнопку «Создать …»
создание нового профиля пользователя в Firefox через окно "Firefox - выбор профиля пользователя"
  1. Выбрать место хранения и наименование папки для профиля
выбор папки для сохранения профиля пользователя в Firefox
  1. Запустить Firefox с созданным профилем:
  • нажать на кнопку «Запустить еще один браузер с этим профилем», если профиль создавался через ввод about:profiles в адресной строке
  • нажать кнопку «Запуск Firefox» в окне «Firefox – выбор профиля пользователя»
  1. Импортировать необходимый сертификат
  2. Закрыть Firefox
  3. Перейти в папку, в которой был сохранен новый профиль
  4. Найти в папке файлы cert*.db, key*.db (вместо * указываются цифры)
  5. Скопировать указанные файлы в пустую папку, которая будет использоваться для хранения профиля в Selenium

Использование подготовленного профиля Firefox в Selenium

  • необходимо отобразить папку с подготовленным профилем в контейнер с Selenium (использовать volume)
  • для установки профиля использовать код
from selenium import webdriver

options = webdriver.FirefoxOptions()
options.add_argument( '-profile' )
options.add_argument( 'FULL_PATH_IN_DOCKER_CONTAINER' )
  • при первом обращении к ресурсу, будет показано окно, с выбором сертификата. Его придется выбрать руками. Информация об этом выборе будет сохранена в профиль, и в дальнейшем окно с выбором сертификата отображаться не будет.

Можно упростить этот шаг, зайдя на ресурс и выбрав сертификат на этапе подготовки профиля пользователя, в этом случае придется копировать всю папку с профилем, а не только файлы *.db