Как обрабатывать аутентификацию прокси в Selenium Вебдрайвер

⚡ Умное резюме

Аутентификация через прокси в Selenium WebDriver обрабатывает всплывающее окно с запросом учетных данных, которое появляется при подключении браузера через защищенный прокси-сервер. Потому что Selenium Невозможно напрямую управлять встроенными диалоговыми окнами; существуют два подхода: использование инструмента AutoIt и встроенных оповещений.

  • 🛡️ Роль прокси: Прокси-сервер — это посредник, обеспечивающий конфиденциальность, безопасность и фильтрацию контента.
  • 🔀 SOCKS против HTTP: SOCKS не интерпретирует данные; HTTP-прокси читает только HTTP-запросы.
  • 🪟 Всплывающие окна, встроенные в операционную систему: Selenium не может обрабатывать диалоги операционной системы, поэтому требуется помощь извне.
  • 🇧🇷 Метод AutoIt: Скомпилированный скрипт AutoIt отправляет имя пользователя и пароль во всплывающее окно.
  • ???? Метод оповещения: Переключитесь на всплывающее окно и отправьте учетные данные с помощью функции sendKeys, затем подтвердите.

Обработка аутентификации прокси-сервера в Selenium Вебдрайвер

Что такое прокси?

Прокси действует как посредник между клиентами, отправляющими запросы, и ответом сервера. Основное использование прокси-сервера — обеспечение конфиденциальности и инкапсуляции между несколькими интерактивными системами.

Прокси-сервер также может добавить еще один уровень безопасности в сети, выступая в качестве брандмауэра между клиентом и веб-серверами. Это особенно используется, когда веб-сайты, которые используют клиенты, должны быть помечены как разрешенные или заблокированные в зависимости от содержимого веб-сайта.

Этот процесс известен как «Фильтрация контента» и чаще всего используется в образовательных учреждениях, корпоративных офисах и т. д. Фильтрацию контента можно легко выполнить с помощью прокси-сервера. Говоря языком Интернета, прокси-сервер может быть реализован как отдельный сервер, который стоит между клиентскими компьютерами и реальными веб-серверами или серверами баз данных, отвечающими на запросы.

Разница между SOCKS и HTTP-прокси

НОСКИ HTTP-прокси
SOCKS означает защищенные розетки. Обычно он используется в качестве межсетевого экрана между клиентом и сервером. HTTP-прокси также можно использовать в качестве межсетевого экрана между клиентом и сервером, но его можно использовать только для HTTP-запросов.
SOCKS не интерпретирует обмениваемые данные HTTP-прокси интерпретирует данные, которыми обмениваются клиент и сервер.
Медленнее с точки зрения производительности Лучшая производительность по сравнению с SOCKS

Как работать с прокси в Selenium Вебдрайвер в Chrome

Аутентификация HTTP-прокси с помощью Selenium в Chrome можно решить с помощью следующих подходов

  • Использование инструмента AutoIt
  • Использование оповещений

Использование инструмента AutoIt

AutoIt — это сторонний инструмент, используемый для автоматизации рабочих столов Windows. Selenium обрабатывает только всплывающие окна и веб-окна, обработка элементов управления операционной системы невозможна с помощью Selenium.

Для этого требуется интеграция с внешними сторонними инструментами, такими как AutoIt. SeleniumДля этой цели AutoIt чаще всего используется для обработки загрузки и скачивания файлов с веб-сайтов.

Для использования AutoIt необходимо загрузить и установить программное обеспечение AutoIt на ваши локальные компьютеры.

Загрузка и установка AutoIt описаны в соответствующем разделе. статья.

Откройте «Программы» — «Инструмент Autoit» — «Редактор сценариев SciTE», добавьте указанный ниже сценарий AutoIt в редактор Autoit и сохраните его как «ProxyAuthentication.au3» в своей системе.

Скомпилируйте файл и преобразуйте его как «ProxyAuthentication.exe».

In Eclipseдобавьте файл AutoIt в Selenium Скрипт и запуск

Ниже приведён скрипт AutoIt для аутентификации HTTP-прокси.

Send("guru99{ENTER}")
Send("guru99{ENTER}")

Для выполнения необходимо передать файл AutoIt. Selenium веб-драйвер, используя приведенный ниже код

Источник Code:

package Guru99Demo;
import java.io.IOException;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
public class AutoItDemo {
    public static void main(String[] args) throws IOException {
        System.setProperty("webdriver.chrome.driver", "D:\\ chromedriver.exe");;
        WebDriver driver = new ChromeDriver();
        driver.get("https://demo.guru99.com/test/basic_auth.php");
        //Passing the AutoIt Script to Selenium	
        Runtime.getRuntime().exec("D:\\Data_Personal\\ProxyAuthentication.exe");
    }
}

Code Объяснение:

  • На первом этапе вы инициализируете экземпляр драйвера Chrome, устанавливая системное свойство, указывающее на файл chromedriver.exe.
  • На втором шаге вы инициализируете объект веб-драйвера и передаете ему веб-сайт. URL используя метод get
  • Наконец, вы передаете имя пользователя и пароль во всплывающее окно аутентификации HTTP-прокси с помощью скрипта AutoIt.

Code Выход:

Обработка оповещений об имени пользователя с помощью AutoIt
Обработка оповещений об имени пользователя с помощью AutoIt
Обработка предупреждений о пароле с помощью AutoIt

Обработка предупреждений о пароле с помощью AutoIt
Экран успешной аутентификации прокси

Экран успешной аутентификации прокси

Использование оповещений

Оповещения — это простая встроенная функция, предоставляемая Selenium веб-драйвер. Вы можете обрабатывать всплывающие окна аутентификации прокси, используя Selenium веб-драйвер, переключившись на оповещение об аутентификации HTTP-прокси и передав имя пользователя и пароль непосредственно в оповещение. С помощью метода отправки ключей.

Пример:

Сценарий тестирования:

Обработайте всплывающее окно аутентификации HTTP-прокси на веб-сайте: https://demo.guru99.com/test/basic_auth.php используя оповещения в Selenium веб-драйвер.

Пример исходного кода:

package Guru99Demo;
import java.io.IOException;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
public class AlertsDemo {
    public static void main(String args[]) throws IOException {
        System.setProperty("webdriver.chrome.driver", "D:\\Data_Personal\\Software\\chromedriver_win32\\chromedriver.exe");;
        WebDriver driver = new ChromeDriver();
        driver.get("https://demo.guru99.com/test/basic_auth.php");
        // Handling Username alert
        driver.switchTo().alert().sendKeys("guru99");
        driver.switchTo().alert().accept();
        // Handling Password alert
        driver.switchTo().alert().sendKeys("guru99");
        driver.switchTo().alert().accept();
    }
}

Code Результат

Аутентификация прокси выполнена успешно.

Code Объяснение:

  • Первоначально вы создаете экземпляр драйвера Chrome, устанавливая свойство webdriver, чтобы указать расположение файла chromedriver.exe.
  • Затем вы открываете URL необходимого веб-сайта, пройдя через URL в качестве параметра для метода driver.get()
  • Как только URL После открытия окна вы переключаетесь на всплывающее окно с именем пользователя и отправляете имя пользователя – guru99. Затем вы нажимаете кнопку «ОК» в этом окне, используя метод alert.accept.
  • Затем вы переключаетесь на оповещение о пароле и отправляете пароль — guru99. Затем вы нажимаете кнопку «ОК» в предупреждении, используя метод alert.accept.

Часто задаваемые вопросы (FAQ)

Вы можете встроить учетные данные в формате https://user:pass@site.com, но современные Chrome и Firefox Заблокируйте это в целях безопасности. Теперь оповещения или расширения для браузера стали более надежными средствами аутентификации через прокси.

AutoIt автоматизирует Windows элементы управления рабочего стола, которые Selenium Невозможно получить доступ к таким элементам, как всплывающие окна аутентификации и диалоговые окна загрузки файлов. Вы компилируете скрипт AutoIt в исполняемый файл и вызываете его из... Selenium код.

Прокси-сервер перенаправляет трафик для определенных приложений или браузеров, в основном скрывая IP-адреса или фильтруя контент. VPN шифрует весь трафик устройства на системном уровне, обеспечивая более высокий уровень конфиденциальности, чем стандартный прокси-сервер.

Да. Инструменты тестирования на основе ИИ обнаруживают диалоговые окна аутентификации, внедряют сохраненные учетные данные и самовосстанавливаются при изменении поведения всплывающих окон, снижая зависимость от ненадежных скриптов AutoIt в разных браузерах.

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

Да. Selenium В версии 4 добавлена ​​поддержка протокола Chrome DevTools, позволяющая программно устанавливать учетные данные HTTP и обрабатывать базовую аутентификацию, что позволяет избежать использования AutoIt во многих сценариях с прокси-серверами.

Подведем итог этой публикации следующим образом: