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

⚡ Розумний підсумок

Автентифікація проксі-сервера в Selenium WebDriver обробляє спливаюче вікно з обліковими даними, яке з'являється, коли браузер підключається через захищений проксі-сервер. Тому що Selenium не можна безпосередньо керувати рідними діалоговими вікнами, два підходи використовують інструмент AutoIt та вбудовані сповіщення.

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

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

Що таке проксі?

Проксі діє як посередник між клієнтами, які надсилають запити, і сервером, що відповідає. Основне використання проксі полягає в підтримці конфіденційності та інкапсуляції між кількома інтерактивними системами.

Проксі також може додати ще один рівень безпеки в Інтернеті, діючи як брандмауер між клієнтом і веб-серверами. Це особливо використовується, коли веб-сайти, якими користуються клієнти, потрібно позначити як дозволені або заблоковані на основі вмісту веб-сайту.

Цей процес відомий як «фільтрування вмісту» і найчастіше використовується в навчальних закладах, корпоративних офісах тощо. Фільтрування вмісту можна легко здійснити за допомогою проксі-сервера. З точки зору Інтернету, проксі-сервер може бути реалізований як окремий сервер, який стоїть між клієнтськими машинами та реальними веб-серверами або серверами баз даних, які відповідають.

Різниця між SOCKS і HTTP Proxy

SOCKS 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 webdriver за допомогою наведеного нижче коду

Source 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. Потім ви натискаєте кнопку OK на сповіщенні, використовуючи метод alert.accept
  • Потім ви переходите на оповіщення про пароль і надсилаєте пароль – guru99. Потім ви натискаєте кнопку OK у сповіщенні за допомогою методу alert.accept

Поширені запитання

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

AutoIt автоматизує Windows елементи керування робочим столом, які Selenium недоступні, такі як спливаючі вікна автентифікації та діалогові вікна завантаження файлів. Ви компілюєте скрипт AutoIt у виконуваний файл і викликаєте його з Selenium Код.

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

Так. Інструменти тестування на основі штучного інтелекту виявляють діалогові вікна автентифікації, вводять збережені облікові дані та самостійно відновлюють роботу спливаючих вікон, зменшуючи залежність від ненадійних скриптів AutoIt у різних браузерах.

Інструменти штучного інтелекту інтелектуально ротують проксі-сервери, виявляють заблоковані запити та адаптують очікування, коли з’являються запити автентифікації. Ця автоматизація покращує стабільність тестування для сайтів, що працюють за корпоративними проксі-серверами або проксі-серверами з фільтрацією контенту.

Так. Selenium У версії 4 додано підтримку протоколу Chrome DevTools, що дозволяє програмно встановлювати облікові дані HTTP та обробляти базову автентифікацію, уникаючи AutoIt для багатьох сценаріїв проксі-сервера.

Підсумуйте цей пост за допомогою: