Я работаю над интеграционными тестами для веб-приложения, которое работает в контейнере 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
Использование HTTPkerberosauth с веб-скребком с поддержкой JavaScript ⇐ Python
Программы на Python
1761846438
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 из ответа на успешно аутентифицированный запрос?
Подробнее здесь: [url]https://stackoverflow.com/questions/79805083/using-httpkerberosauth-with-a-javascript-enabled-web-scraper[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия