Задача: необходимо подключиться к ресурсу, на котором используется собственный сертификат.
Данная задачу удобнее решать по этапам:
- Подключиться к ресурсу, игнорируя предупреждения безопасности
- Подключиться к ресурсу, используя свой собственный сертификат
Подключение к ресурсу, игнорируя предупреждения безопасности
Для игнорирования предупреждений необходимо написать код:
- для 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 и настройка пользовательского сертификата
Необходимо выполнить шаги:
- Открыть мастер создания нового профиля
Для запущенного Firefox:
- в адресной строке набрать about:profiles
- в открывшейся области нажать кнопку «Создать новый профиль»
Для не запущенного Firefox:
- открыть окно «Выполнить», нажав комбинацию «Windows» + «R»
- ввести команду:
firefox.exe -P
- в открывшемся окне нажать кнопку «Создать …»
- Выбрать место хранения и наименование папки для профиля
- Запустить Firefox с созданным профилем:
- нажать на кнопку «Запустить еще один браузер с этим профилем», если профиль создавался через ввод about:profiles в адресной строке
- нажать кнопку «Запуск Firefox» в окне «Firefox – выбор профиля пользователя»
- Импортировать необходимый сертификат
- Закрыть Firefox
- Перейти в папку, в которой был сохранен новый профиль
- Найти в папке файлы cert*.db, key*.db (вместо * указываются цифры)
- Скопировать указанные файлы в пустую папку, которая будет использоваться для хранения профиля в 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