Использование HTTPkerberosauth с веб-скребком с поддержкой JavaScriptPython

Программы на Python
Ответить
Anonymous
 Использование HTTPkerberosauth с веб-скребком с поддержкой JavaScript

Сообщение Anonymous »

Я работаю над интеграционными тестами для веб-приложения, которое работает в контейнере Docker в нашем конвейере GitLab CI/CD. Приложение представляет собой интерфейс, требующий аутентификации Kerberos/SPNEGO, за которой следует аутентификация Kerberos на основе токенов для доступа к BAM.
Я успешно настроил аутентификацию Kerberos в своем конвейере GitLab CI (krb5.conf, файлы keytab и т. д.) и могу убедиться, что аутентификация Kerberos работает правильно, потому что когда я использую библиотеку запросов с запросами-kerberos, я получаю успешные ответы со всеми подробностями подключения и возвращаемыми токенами аутентификации. правильно.
Однако, когда я пытаюсь использовать Selenium WebDriver для доступа к тому же приложению с той же настройкой аутентификации, я постоянно получаю ошибку 401 Unauthorized и совершенно пустой HTML (). Это расстраивает, потому что мне нужен Selenium для обработки содержимого на странице, обработанного JavaScript — сама по себе библиотека запросов не будет работать, поскольку данные, которые мне нужно очистить, загружаются динамически с помощью JavaScript после начальной загрузки страницы.
Что работает
Когда я использую библиотеку запросов с аутентификацией Kerberos, все работает отлично. Я делаю запрос к URL-адресу приложения и получаю правильный ответ HTTP 200. Этот HTML-код включает форму аутентификации BAM со скрытыми полями, такими как bamToken, Challenge и RedirectURL. Форма предназначена для автоматической отправки и перенаправления пользователя к фактическому приложению, и процесс аутентификации завершается успешно.
Я вижу все заголовки аутентификации в ответе, файлы cookie установлены правильно, и сервер явно принимает мои учетные данные Kerberos. Сведения о соединении подтверждают, что конфигурация Kerberos в моем конвейере GitLab настроена правильно и работает должным образом.
Проблема возникает, когда я пытаюсь использовать Selenium WebDriver для доступа к тому же приложению. Я настроил Chrome со всеми необходимыми аргументами аутентификации SPNEGO (auth-server-allowlist, auth-negotiate-delegate-allowlist, для auth-schemes установлено значение Basic,digest,ntlm,negotiate), но когда Selenium пытается перейти к URL-адресу, он получает несанкционированный ответ 401, а источником страницы являются просто пустые HTML-теги без какого-либо содержания.
Я пробовал несколько подходов к решению проблемы. это. Сначала я попытался пройти аутентификацию с помощью запросов, затем передать файлы cookie из этого аутентифицированного сеанса в Selenium, прежде чем перейти на страницу. Даже после успешного добавления всех файлов cookie в драйвер Selenium я все равно получаю ошибку 401.
Я также пытался извлечь данные формы токена BAM из ответа на успешный запрос и отправить их программно, а затем передать эти файлы cookie после аутентификации в Selenium. Все равно не повезло — та же ошибка 401 с пустым HTML.
Я экспериментировал с различными аргументами и параметрами Chrome, включая отключение функций автоматического обнаружения, настройку пользовательских агентов пользователя в соответствии с тем, что используют запросы, и даже пробовал разные схемы аутентификации. Я также попытался настроить корпоративные политики Chrome для автоматической аутентификации. Ни один из этих подходов не решил проблему.
Похоже, что браузер Selenium Chrome неправильно представляет учетные данные Kerberos на сервере, хотя эти учетные данные доступны в среде и работают для запросов. Мне нужно использовать Selenium, потому что содержимое страницы динамически загружается через JavaScript, поэтому я не могу просто анализировать HTML из запросов. Есть ли какой-нибудь способ устранить этот пробел - либо заставив Selenium правильно аутентифицироваться, либо каким-то образом визуализировать JavaScript из ответа на успешно аутентифицированный запрос?

Подробнее здесь: https://stackoverflow.com/questions/798 ... eb-scraper
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»