Як налаштувати проксі з авторизацією в Selenium WebDriver
Updated:
Стандартні прапорці ChromeDriver --proxy-server=http://ip:port ігнорують вбудовані облікові дані user:pass та відкривають блокуюче вікно входу. Щоб коректно використовувати HTTP(S)-проксі VinaProxy з авторизацією в Selenium, передавайте дані через selenium-wire або завантажте невелике фонове розширення Chrome onAuthRequired.
http://user:pass@ip:port (selenium-wire / Chrome proxy extension)- 1 IP40 000 VND
- 5+ IP35 000 VND
- 10+ IP25 000 VND
- 20+ IP25 000 VND
- 50+ IP25 000 VND
- 100+ IP25 000 VND
- 200+ IP25 000 VND
- 500+ IP25 000 VND
- 1000+ IP22 000 VND
- 2000+ IP20 000 VND
- 1 IP75 000 VND
- 3+ IP70 000 VND
- 5+ IP65 000 VND
- 10+ IP60 000 VND
- 50+ IP60 000 VND
- 100+ IP60 000 VND
- 200+ IP60 000 VND
- 500+ IP55 000 VND
Два надійні способи авторизації проксі в Selenium
Оберіть підхід, який підходить для вашого середовища розробки та драйвера браузера:
| Підхід | Синтаксис конфігурації | Найкраще для |
|---|---|---|
selenium-wire (Python) | seleniumwire_options={'proxy': {'http': 'http://user:pass@ip:port', 'https': 'http://user:pass@ip:port'}} | Найшвидше налаштування для Python; підтримує гарячу заміну проксі під час сесії |
| Розширення авторизації Chrome | Завантаження ZIP-розширення з обробкою chrome.webRequest.onAuthRequired | Стандартний Selenium для Python, Java, C# та undetected-chromedriver |
| Перехід на Playwright | browser.newContext({ proxy: { server, username, password } }) | Вбудована авторизація проксі для кожного контексту без додаткових розширень |
Поради щодо оптимізації скрапінгу через проксі в Selenium
- Встановіть
options.page_load_strategy = 'eager', щоб WebDriver починав взаємодію одразу після готовності DOM, не чекаючи завантаження повільних сторонніх трекерів - Використовуйте
--headless=new(Chrome 109+) для фонового режиму, щоб розширення Chrome та авторизація проксі працювали так само, як у звичайному режимі - Вимкніть завантаження зображень у налаштуваннях Chrome, якщо збираєте лише текстові дані про товари
- Завжди огортайте драйвер у блок
try / finally: driver.quit(), щоб уникнути завислих процесів Chromium
Покроково
- 1
Встановіть selenium-wire
Виконайте
pip install selenium-wireу віртуальному середовищі Python. - 2
Створіть словник конфігурації проксі VinaProxy
Вкажіть облікові дані у форматі
sw_options = {'proxy': {'http': 'http://user:pass@ip:port', 'https': 'http://user:pass@ip:port'}}. - 3
Запустіть webdriver.Chrome із параметром seleniumwire_options
Ініціалізуйте
driver = webdriver.Chrome(seleniumwire_options=sw_options). - 4
Перевірте вихідну IP-адресу
Перейдіть за адресою
driver.get('https://vinaproxy.com/api/my-ip')і переконайтеся, що у відповіді JSON відображається IP вашого проксі.
Часті запитання
Чому `--proxy-server=http://user:pass@ip:port` не працює в ChromeOptions?
Chromium навмисно видаляє user:pass@ з прапорця командного рядка --proxy-server. Використання selenium-wire, розширення onAuthRequired або Playwright легко вирішує цю проблему.
Чи можна змінювати проксі в selenium-wire без перезапуску Chrome?
Так. Призначте новий словник у driver.proxy = {'http': 'http://...', 'https': 'http://...'} у будь-який момент, щоб змінити активний проксі на льоту.
Чи працюють розширення проксі для Chrome у headless-режимі?
Так, якщо ви передаєте прапорець --headless=new замість застарілого --headless.
Масштабуйте Selenium WebDriver з безлімітними статичними IP
Миттєвий доступ до Dedicated IPv4 та Static ISP проксі у 7 країнах.
Купити проксі для Selenium