Прокси для Selenium: как настроить и ротировать прокси в Python

Практическое руководство по настройке, аутентификации, проверке и ротации прокси в Selenium на Python.
Прокси находится между браузером, которым управляет Selenium, и сайтом, который он загружает. Сайт видит IP-адрес прокси вместо вашего. В этом руководстве рассказывается, как задать прокси в Selenium на Python, как обработать аутентификацию, как убедиться, что прокси действительно работает, и как ротировать прокси между сессиями.
Что такое прокси для Selenium?
Прокси-сервер для Selenium — это IP-адрес, который WebDriver передаёт браузеру при запуске. После этого каждый запрос браузера идёт через этот адрес, а не через ваше прямое подключение.
Selenium по-прежнему управляет самим браузером: открывает страницы, кликает по элементам, заполняет формы, ждёт загрузки контента. Прокси для Selenium управляет сетевым маршрутом: какой IP-адрес видит целевой сайт и часто к какой стране или городу этот IP относится.
Связки Selenium с прокси нужны в нескольких ситуациях:
- Веб-скрейпинг, когда сайт ограничивает количество запросов с одного IP за определённый промежуток времени.
- Автоматизация браузера, которая запускает много сессий параллельно и требует более одного исходящего адреса.
- Географическое тестирование, где страница должна загружаться так, как если бы её открыл реальный посетитель из конкретной страны.
- QA-процессы которые проверяют контент с региональными ограничениями, валюту по умолчанию или локализованные цены.
Как настроить прокси в Selenium на Python
Selenium настраивает прокси через Прокси class in selenium.webdriver.common.proxy, который применяется к объекту Options браузера до запуска драйвера. Именно этот подход описан на selenium.dev, и он одинаково работает в Chrome, Firefox и Edge.
Установите Selenium, если его ещё нет в вашем окружении:
Вот полный пример который добавляет прокси в Selenium, открывает тестовую страницу и корректно закрывает браузер:
Заменить PROXY_HOST и PROXY_PORT на адрес шлюза и порт вашего провайдера. Поля http_proxy и ssl_proxy охватывают как обычный HTTP-, так и HTTPS-трафик, поскольку большинство сайтов сегодня загружается по HTTPS. Если драйвер запускается без ошибок и driver.title выводит значение, значит браузер открылся корректно.
Это ещё не доказывает, что прокси был использован, такая проверка будет в следующем разделе. Если браузер зависает при запуске, убедитесь, что хост и порт указаны верно и доступны с вашей машины, прежде чем винить Selenium.
Настройка прокси в Chrome через Selenium
Когда в ChromeOptions передан объект Прокси , Selenium преобразует его в W3C-возможность прокси и отправляет её в ChromeDriver при старте сессии. Затем ChromeDriver передаёт этот адрес самому Chrome при запуске процесса браузера, аналогично действию флага командной строки –proxy-server который применяется напрямую:
Оба подхода работают для настройки прокси в ChromeDriver Selenium с прокси без аутентификации.
Важная деталь — это момент применения: Chrome считывает свою прокси-конфигурацию один раз, при запуске. Ни один из подходов не позволяет сменить прокси в уже запущенном браузере, поскольку Selenium не может перенастроить сеть у работающего процесса Chrome.
Чтобы убедиться, что настройки прокси в Selenium действительно применились, откройте страницу проверки IP, о чём пойдёт речь в следующем разделе.
Как использовать прокси с авторизацией в Selenium
На практике встречаются два типа прокси. Одним нужны только хост и порт. Другим дополнительно требуются имя пользователя и пароль, прежде чем они начнут передавать трафик. Большинство платных провайдеров, включая NodeMaven , по умолчанию используют прокси с аутентификацией.
У Selenium Прокси class has no username or password field. Это реальное ограничение, а не недоработка. Selenium лишь передаёт браузеру адрес прокси, а сам Chrome выполняет аутентификацию на сетевом уровне.
Когда Chrome подключается к прокси с аутентификацией без встроенных учётных данных, он открывает нативное диалоговое окно браузера с запросом имени пользователя и пароля, и это диалоговое окно находится за пределами DOM страницы, поэтому стандартные команды WebDriver, такие как find_element не могут до него добраться.
В текущих версиях Chrome реально работают два подхода к тому, как использовать прокси с Selenium на Python.
Белый список IP-адресов
Вместо передачи учётных данных провайдер прокси разрешает подключения с публичного IP-адреса вашей машины, не запрашивая логин. NodeMaven рекомендует именно этот подход для Selenium.
Сгенерированное расширение Chrome
Когда добавление в белый список неудобно, например на машине с меняющимся IP, стандартным обходным решением является небольшое распакованное расширение Chrome которое автоматически отвечает на запрос аутентификации с помощью события chrome.webRequest.onAuthRequired . Selenium загружает расширение через ChromeOptions.add_extension():
При правильно настроенном расширении Chrome может автоматически передавать учётные данные прокси когда прокси запрашивает аутентификацию. Если диалог аутентификации всё равно появляется, проверьте, что расширение было загружено до запуска браузера, что файлы расширения корректны и что учётные данные прокси и настройки хоста указаны верно.
У этого подхода могут быть ограничения совместимости в зависимости от версии Chrome, конфигурации Selenium и того, работает ли браузер в headless-режиме. Если подход с расширением не подходит для вашей среды, добавление IP в белый список является более простой альтернативой если ваш провайдер прокси это поддерживает.
Как проверить, работает ли ваш прокси в Selenium
Настройка прокси в коде не гарантирует, что браузер действительно его использовал. Опечатка в порту, недоступный шлюз или незаметно проигнорированная возможность - любая из этих причин может оставить браузер на вашем обычном соединении, не вызвав никакой ошибки. Подтвердить изменение означает открыть страницу, которая показывает видимый IP-адрес, и сравнить его с вашим настоящим.
api.ipify.org возвращает ваш видимый IP в формате JSON. В примере читается тело страницы и разбирается JSON-ответ, чтобы извлечь IP-адрес.
Запустите скрипт один раз без настроенного прокси и один раз с ним. Сравните:
- Прямой IP против IP прокси
- Страну, а также регион или город, если endpoint их сообщает
- Загружается ли целевая страница и сколько примерно времени это занимает
- Загружаются ли HTTPS-страницы без предупреждений о сертификате
Сервис проверки IP подтверждает видимый IP-адрес и помогает проверить локацию прокси. Он не измеряет все аспекты качества прокси, такие как репутация IP, количество пользователей, делящих один IP, или долгосрочная доступность.
Как ротировать прокси в Selenium на Python
Настройка прокси в Selenium применяется к сессии WebDriver целиком, а не к отдельным запросам. Запущенный процесс Chrome считывает настройки прокси один раз, при старте, поэтому изменение переменной Python после того, как webdriver.Chrome() уже запущен, никак не влияет на работающий браузер. Прокси в Selenium меняются на уровне сессии, а не в середине сессии.
На практике ротация прокси в Selenium сводится к нескольким вариантам:
- Ручное изменение конфигурации прокси между отдельными запусками скрипта.
- Запуск новой сессии WebDriver с другим адресом прокси для каждой единицы работы.
- Направление всех сессий на один ротационный gateway-эндпоинт который назначает новый IP на каждое подключение на стороне провайдера.
- Использование sticky-сессии, при которой один и тот же IP остаётся закреплённым на заданное время в течение одной или нескольких загрузок страницы.
Самый распространённый подход к тому, как ротировать прокси в Selenium, — закрывать браузер и запускать новую сессию для каждого прокси, поскольку именно в этот момент Selenium действительно считывает новые настройки прокси:
Каждая итерация цикла закрывает предыдущий браузер с помощью driver.quit() перед открытием нового, и именно это на деле заставляет установить новое прокси-соединение.
Если вы используете прокси с авторизацией через метод с расширением, создавайте отдельный zip-архив расширения для каждого набора учётных данных, так как расширение загружается один раз на каждый экземпляр драйвера.
Ротационные прокси и sticky-сессии
| Вариант | Лучшее для | Поведение IP | Session continuity |
| Ротационный прокси | Workflows that need IP changes between requests or sessions | IP changes according to rotation rules set by the provider | Нижний |
| Sticky-сессия | Multi step browser sessions, such as logins or checkout flows | Same IP for a defined period | Выше |
A ротируемый прокси подходит для задач, состоящих из множества независимых загрузок страниц, где каждой из них выгоден отдельный адрес. Sticky-сессия подходит для любого сценария, где сайт должен видеть один и тот же IP на протяжении нескольких шагов, поскольку смена IP посреди сессии на некоторых сайтах может выглядеть как другой посетитель и нарушить вход в аккаунт или содержимое корзины.
Тесты прокси в Selenium
Одна лишь настройка не доказывает, что схема с прокси работает от начала до конца. Эти три теста охватывают основное поведение, которое стоит проверить прежде чем полагаться на неё в реальной автоматизации.
Тест 1: Прямое соединение против прокси
Цель: убедиться, что Selenium действительно использует прокси, а не локальное соединение.
Первый тест проверял, действительно ли Selenium направляет трафик браузера через прокси.
Мы выполнили одну и ту же проверку IP с настроенным прокси и без него. Прямое соединение вернуло один публичный IP, тогда как сессия Selenium с прокси вернула другой IP. Это подтвердило, что трафик браузера шёл через прокси.
Затем мы проверили IP прокси с помощью инструмента геолокации IP. IP был определён как Франция, Рона-Альпы, Лион, что совпадает с локацией, выбранной для прокси.
| Тест | Результат |
| Прямое соединение | One public IP detected |
| Соединение через прокси | Different public IP detected |
| IP changed | Да |
| Selected proxy location | Лион, Франция |
| Detected country | Франция |
| Detected region | Рона-Альпы |
| Detected city | Лион |
| Browser connection | Успешно |
Тест подтверждает два важных момента. Во-первых, Selenium успешно использовал настроенный прокси вместо локального соединения. Во-вторых, геолокация IP прокси соответствовала запрошенным городу и стране.
Тест 2: Sticky-сессия
Цель: убедиться, что один и тот же IP остаётся активным на протяжении одной сессии браузера.
Мы настроили sticky-прокси NodeMaven для Лиона, Франция, и трижды проверили видимый IP в рамках одной сессии WebDriver.
| Проверить | Результат |
| Page 1 | Same IP |
| Page 2 | Same IP |
| Page 3 | Same IP |
| IP changed during session | Нет |
| Соединение через прокси | Успешно |
| Местоположение | Лион, Франция |
Результат Прокси сохранял один и тот же IP во всех трёх проверках. Это подтверждает, что sticky-сессия удерживала постоянный IP на протяжении всей сессии Selenium WebDriver.
Тест подтверждает стабильность IP на уровне сессии.
Тест 3: ротационный прокси
Цель: убедиться, что ротация прокси действительно выдает разные IP в отдельных сессиях.
Мы запустили одну и ту же конфигурацию прокси в Selenium в отдельных сессиях браузера. Внутри каждой сессии определяемый IP оставался неизменным во всех трех проверках. При запуске новой сессии WebDriver назначался другой IP.
| Тест | Результат |
| Session 1 | Same IP across 3 checks |
| Session 2 | Same IP across 3 checks |
| IP changed between sessions | Да |
| Соединение через прокси | Успешно |
| Rotation behavior | Different IP assigned to a new session |
Результат Тест подтвердил, что ротационный прокси выдавал другой IP при запуске новой сессии Selenium, сохраняя при этом назначенный IP стабильным внутри каждой отдельной сессии.
Это показывает разницу между стабильностью на уровне сессии и ротацией IP между сессиями.
Использование прокси NodeMaven с Selenium
В трех тестах выше использовались резидентные прокси NodeMaven с Лион, Франция таргетингом. Результаты показали, как одна и та же настройка прокси может поддерживать разные рабочие сценарии Selenium.
NodeMaven предлагает резидентские прокси с таргетингом по стране, региону, городу, ISP и ZIP. Вы также можете выбирать между ротационными и sticky-сессиями. Sticky-сессии сохраняют один и тот же IP в течение заданного периода, а ротационные сессии выдают новый IP согласно выбранным настройкам ротации.

Такая гибкость полезна, когда рабочие сценарии Selenium предъявляют разные требования. Sticky-сессия может сохранять один и тот же IP на протяжении всей многошаговой сессии браузера. Ротационные прокси может выдавать разные IP при запуске отдельных сессий или при работе с более крупными сценариями автоматизации.
NodeMaven также поддерживает подключения HTTP и SOCKS5. Его сеть резидентных прокси охватывает более 190 стран с таргетингом по местоположению.
Прежде чем подключать прокси к Selenium, вы также можете проверить его с помощью бесплатного Proxy Checker от NodeMaven. Инструмент проверяет подключение прокси, HTTP-статус, время передачи данных и расход трафика.
Для пользователей Selenium: выберите нужную локацию и тип сессии, проверьте подключение прокси, затем подключите его к Selenium и протестируйте сессию браузера.
Частые проблемы с прокси в Selenium и способы их устранения
Не проходит аутентификация прокси
Обычно причина в опечатке в учётных данных, истёкшем пароле или в диалоге аутентификации, на который Selenium не может ответить, поскольку тот находится вне DOM страницы.
Ещё раз сверьте имя пользователя и пароль с панелью управления провайдера и убедитесь, что вы используете либо добавление IP вwhitelist, либо рабочее расширение для аутентификации.
Chrome не использует прокси
Чаще всего это означает, что параметр прокси был задан уже после запуска драйвера, либо опечатка в хосте или порте незаметно сделала настройку недействительной.
Убедитесь, что объект прокси присвоен options.proxy или передан через –proxy-server перед вызовом webdriver.Chrome(), и проверьте результат скриптом проверки IP.
Истекает время ожидания подключения к прокси
Проверьте, что хост и порт указаны верно и что прокси работает на стороне провайдера. Брандмауэр на вашем компьютере или в сети также может блокировать исходящие подключения к порту прокси.
Проверка того же хоста и порта простой командой curl вне Selenium поможет понять, в чём проблема: в прокси или в настройке браузера.
IP не меняется
Если вы ожидаете ротацию, но постоянно видите один и тот же IP, проверьте, активна ли sticky-сессия, поскольку sticky-сессии намеренно удерживают один IP на всё время своего действия.
Также убедитесь, что вы действительно закрываете и перезапускаете браузер между проверками.
HTTPS-страницы не загружаются
Некоторые прокси не поддерживают HTTPS-трафик на том же порту, что и HTTP, или ожидают отдельный адрес SSL-прокси.
Задать proxy.ssl_proxy в дополнение к proxy.http_proxy, указав тот порт, который ваш провайдер выделяет для защищённого трафика. Предупреждения о сертификатах, не связанные с прокси, также могут приходить от самого целевого сайта.
Заключение
Прокси в Selenium работают через конфигурацию браузера, заданную до запуска драйвера, а не через настройки, изменённые в уже запущенной сессии. Рабочую конфигурацию всё равно нужно проверить с помощью проверки IP, поскольку неправильно настроенный прокси может давать сбой незаметно.
Аутентификация требует дополнительных мер: либо добавления IP в белый список, либо сгенерированного расширения, потому что в Selenium нет встроенного поля для учётных данных прокси. Качество прокси важно не меньше, чем сам код: медленный или нестабильный пул проявится как неудачные загрузки страниц, каким бы ни был написанный скрипт.
Резидентные и мобильные прокси NodeMaven начинаются с $3.50 за пробный доступ с 750MB трафика, и поддерживают как схемы аутентификации, так и работу с сессиями, описанные в этом руководстве.
Присматриваетесь к Playwright? Наше практическое сравнение Playwright и Selenium разбирает настройку, скрейпинг и аутентификацию прокси бок о бок, в том числе то, где диалог аутентификации в Selenium становится реальным практическим различием между этими двумя инструментами.




