Попробовать
Назад

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

Обобщите эту статью с помощью предпочитаемого вами AI
Попробуйте наши премиум-прокси

Протестируйте наши премиум-прокси без ограничений по качеству.

  • Мобильные и резидентные прокси
  • Таргетинг на уровне ZIP
  • Статические и ротируемые IP
  • Встроенный фильтр качества
Попробовать

Практическое руководство по настройке, аутентификации, проверке и ротации прокси в Selenium на Python.

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

Запускайте Selenium с надёжными прокси
Получите прокси NodeMaven от $3.50 и 750MB трафика, чтобы протестировать свои сценарии на Selenium

Попробовать

Что такое прокси для 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?
Протестируйте резидентные прокси с гибким выбором локаций, sticky-сессиями и ротацией IP. Старт от $3.50, включено 750MB

Попробовать

Как использовать прокси с авторизацией в 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
Получите надежные резидентные прокси для автоматизации браузера, скрапинга и тестирования по геолокации. Попробуйте NodeMaven от $3.50

Попробовать

Как ротировать прокси в Selenium на Python

Настройка прокси в Selenium применяется к сессии WebDriver целиком, а не к отдельным запросам. Запущенный процесс Chrome считывает настройки прокси один раз, при старте, поэтому изменение переменной Python после того, как webdriver.Chrome() уже запущен, никак не влияет на работающий браузер. Прокси в Selenium меняются на уровне сессии, а не в середине сессии.

На практике ротация прокси в Selenium сводится к нескольким вариантам:

  1. Ручное изменение конфигурации прокси между отдельными запусками скрипта.
  2. Запуск новой сессии WebDriver с другим адресом прокси для каждой единицы работы.
  3. Направление всех сессий на один ротационный gateway-эндпоинт который назначает новый IP на каждое подключение на стороне провайдера.
  4. Использование sticky-сессии, при которой один и тот же IP остаётся закреплённым на заданное время в течение одной или нескольких загрузок страницы.

Самый распространённый подход к тому, как ротировать прокси в Selenium, — закрывать браузер и запускать новую сессию для каждого прокси, поскольку именно в этот момент Selenium действительно считывает новые настройки прокси:

Каждая итерация цикла закрывает предыдущий браузер с помощью driver.quit() перед открытием нового, и именно это на деле заставляет установить новое прокси-соединение.

Если вы используете прокси с авторизацией через метод с расширением, создавайте отдельный zip-архив расширения для каждого набора учётных данных, так как расширение загружается один раз на каждый экземпляр драйвера.

Ротационные прокси и sticky-сессии

ВариантЛучшее дляПоведение IPSession continuity
Ротационный проксиWorkflows that need IP changes between requests or sessionsIP changes according to rotation rules set by the providerНижний
Sticky-сессияMulti step browser sessions, such as logins or checkout flowsSame IP for a defined periodВыше

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

Проверьте свою настройку прокси в Selenium
Используйте резидентные прокси NodeMaven с таргетингом до уровня города и ротируемыми или sticky-сессиями. Начните с 750MB за $3.50

Попробовать

Тесты прокси в 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 1Same IP
Page 2Same IP
Page 3Same IP
IP changed during sessionНет
Соединение через проксиУспешно
МестоположениеЛион, Франция

Результат Прокси сохранял один и тот же IP во всех трёх проверках. Это подтверждает, что sticky-сессия удерживала постоянный IP на протяжении всей сессии Selenium WebDriver.

Тест подтверждает стабильность IP на уровне сессии.

Тест 3: ротационный прокси

Цель: убедиться, что ротация прокси действительно выдает разные IP в отдельных сессиях.

Мы запустили одну и ту же конфигурацию прокси в Selenium в отдельных сессиях браузера. Внутри каждой сессии определяемый IP оставался неизменным во всех трех проверках. При запуске новой сессии WebDriver назначался другой IP.

ТестРезультат
Session 1Same IP across 3 checks
Session 2Same IP across 3 checks
IP changed between sessionsДа
Соединение через проксиУспешно
Rotation behaviorDifferent 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 становится реальным практическим различием между этими двумя инструментами.

Дайте своему скрейперу на Selenium более качественный пул IP
Получите доступ к резидентным прокси с гибким таргетингом и настройками сессий. Начните тестирование с 750MB за $3.50

Попробовать

FAQ

Создайте объект Proxy из selenium.webdriver.common.proxy, задайте его proxy_type към ProxyType.MANUAL, укажите хост и порт в http_proxy и ssl_proxy, затем задайте options.proxy перед созданием драйвера. Аргумент –proxy-server работает как более простая альтернатива для прокси без аутентификации.

Для прокси без аутентификации задайте прокси в ChromeOptions до запуска драйвера. Для прокси с аутентификацией используйте добавление IP вwhitelist если провайдер это поддерживает, либо загрузите небольшое расширение Chrome, которое автоматически отвечает на запрос аутентификации, поскольку в классе Proxy у Selenium’а нет полей для имени пользователя и пароля.

Закройте текущую сессию WebDriver с помощью driver.quit() и запустите новую с другими настройками прокси, так как Chrome считывает конфигурацию прокси только при запуске. Ротационный шлюз провайдера также может автоматически выдавать новый IP для каждой новой сессии.

Да. Прокси в Selenium не ограничены каким-то одним типом. Резидентные, мобильные, ISP и серверные прокси со стороны Selenium работают одинаково, через один и тот же Прокси объект или –proxy-server аргумент, если у вас есть прокси для Selenium с корректным хостом и портом.

Добавьте его через ChromeOptions до запуска драйвера — либо через объект Прокси назначенный для options.proxy, либо через options.add_argument(“–proxy-server=http://HOST:PORT”). И то, и другое нужно задать до вызова webdriver.Chrome().

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

Вам также могут понравиться эти статьи

Этот сайт использует Файлы cookie чтобы улучшить ваш опыт. Продолжая, вы соглашаетесь на использование файлов cookie.