Как использовать SeleniumBase с прокси: Полное руководство 2026 года
TL;DR
SeleniumBase читает прокси из одного из трех взаимозаменяемых способов — через флаг командной строки pytest --proxy, аргумент proxy для Driver(), или аргумент proxy для контекстного менеджера SB() — и все три маршрутизируют через один и тот же код запуска драйвера.
Авторизованные HTTP/HTTPS прокси в Chrome и Edge работают без всплывающего окна для входа, потому что SeleniumBase в режиме реального времени создает расширение браузера Manifest V3, которое автоматически отвечает на каждый вызов 407; вам никогда не потребуется отдельный слой анонимизации прокси для этих двух браузеров.
Firefox обрабатывает прокси иначе и не заполняет учетные данные автоматически. SeleniumBase устанавливает родные параметры network.proxy.* Firefox (включая SOCKS4/5/5h), но нет этапа инъекции учетных данных, поэтому авторизованный прокси все равно вызывает собственный запрос на вход Firefox.
SOCKS4, SOCKS5 и SOCKS5h являются действительными схемами прокси как для флага командной строки, так и для конструктора Python (например, socks5://host:port), что подтверждается напрямую из источника proxy_helper.validate_proxy_string() SeleniumBase 4.51.10.
Режим UC принимает тот же аргумент proxy= как стандартная сессия, но SeleniumBase не поставляет встроенный планировщик ротации для каждого запроса — ротация IP-адресов между запросами должна происходить либо от шлюза прокси, либо от повторного запуска драйвера с новым значением.
Изменение Chrome 137 в внутренних расширениях временно сломало расширение для авторизации прокси SeleniumBase. Текущие версии включают исправление; в новых сборках Chrome, где все еще появляется всплывающее окно для входа, переключение в режим CDP перед навигацией является задокументированным обходным путем.
Попробуйте Nstproxy - Начните бесплатный тест сегодня
Резидентский шлюз Nstproxy подключается к любому из трех точек интеграции с одной строкой (username:password@gw-us.nstproxy.com:24125), пропуская локальный слой анонимизации прокси, который обычно требуется для авторизованных прокси в стандартных настройках Selenium, Puppeteer и Playwright.
Введение: Что на самом деле охватывает поддержка прокси в SeleniumBase
SeleniumBase — это фреймворк автоматизации и тестирования браузера на Python, построенный на базе Selenium WebDriver и pytest, который добавляет уровень прокси, выходящий за рамки того, что предоставляет обычный Selenium. Там, где параметр Chrome --proxy-server обычного Selenium не может передать имя пользователя и пароль, SeleniumBase парсит строку username:password@host:port, создает небольшое расширение браузера в реальном времени для браузеров Chromium и подключает это расширение для автоматического ответа на вызовы аутентификации. Фреймворк, опубликованный как seleniumbase на PyPI, в настоящее время находится на версии 4.51.10 и поддерживается Майклом Минцом на GitHub. Документация по прокси фреймворка охватывает синтаксис флага командной строки, используемого на протяжении этого руководства, в своем подробном справочном руководстве по настройке.
Это руководство охватывает три способа передачи прокси в SeleniumBase, что на самом деле происходит за кулисами для авторизованных прокси, куда вписываются SOCKS5 и режим UC, где находятся честные ограничения (обработка учетных данных в Firefox, отсутствие планировщика ротации, реартегрессия для версии Chrome) и как указать настройки на резидентский шлюз Nstproxy.
Установите SeleniumBase и подтвердите настройку
Установка SeleniumBase включает Selenium, pytest и инструменты управления драйвером фреймворка за один шаг:
seleniumbase install chromedriver загружает сборку chromedriver, соответствующую версии Chrome, уже установленной на машине, что делает последующее тестирование прокси предсказуемым — несовпадающая пара драйвера и браузера вызывает свои собственные ошибки соединения, которые не имеют ничего общего с конфигурацией прокси и легко могут быть неверно диагностированы как проблема с прокси. Подтвердите установку с помощью:
SeleniumBase отвечает на это одной строкой: передайте прокси в виде строки, и формат будет идентичен, независимо от того, поступает ли он из командной строки или из Python. CLI принимает его в качестве флага pytest:
API Python предоставляет то же значение в качестве именованного аргумента как для Driver(), так и для контекстного менеджера SB() — это подтверждено путем инспекции обеих сигнатур напрямую в установленном пакете:
from seleniumbase import Driver
import inspect
print(inspect.signature(Driver).parameters["proxy"].default)# None
from seleniumbase import Driver
driver = Driver(browser="chrome", headless=True, proxy="USERNAME:PASSWORD@SERVER:PORT")driver.get("https://example.com")driver.quit()
Неаутентифицированные прокси полностью удаляют часть USERNAME:PASSWORD@; функция validate_proxy_string() в SeleniumBase рассматривает обнаженные ip_address:port или server:port как одинаково действительные.
Базовая реализация: Аутентифицированный прокси от начала до конца
Передача proxy="user:pass@host:port" в Driver() обрабатывается одним специфическим механизмом в Chrome и Edge: функция create_proxy_ext() в SeleniumBase создает расширение Manifest V3 с вызовом chrome.proxy.settings.set() и слушателем chrome.webRequest.onAuthRequired, который возвращает сохраненные учетные данные каждый раз, когда прокси выдает запрос на аутентификацию 407. Чтобы проверить, что это действительно реализация, а не просто задокументированное поведение, данное руководство протестировало это на локальном аутентифицированном прокси (mitmproxy, настроенном с тестовым именем пользователя и паролем) и перехватило трафик:
from seleniumbase import Driver
driver = Driver( browser="chrome", headless=True, proxy="testuser:testpass123@127.0.0.1:8899",)driver.get("http://internal-test-host:9000/")print(driver.page_source[:80])driver.quit()
Журнал самого прокси показал точно ту последовательность, которая подразумевается в исходном коде SeleniumBase: первый запрос браузера пришел без заголовка аутентификации и получил ответ 407 Proxy Authentication Required, затем сработал обратный вызов onAuthRequired расширения, и идентичный запрос был повторен с сохраненными учетными данными, вернув 200 OK с ожидаемым содержимым страницы — без всплывающего окна, без ручного повторного запроса и без дополнительных библиотек. Этот обмен, а не просто наличие параметра proxy, и означает "поддержка аутентифицированного прокси" в SeleniumBase.
Быстрый обзор
Если ваши запуски SeleniumBase постоянно сталкиваются с всплывающими окнами аутентификации прокси или блокировками в середине сеанса, шлюз Nstproxy предоставляет вам стабильную, предварительно аутентифицированную строку `username:password@host:port` с встроенным контролем сеанса, так что тот же аргумент `proxy=` выше продолжает работать.
Если напечатанный IP соответствует адресу самого прокси, а не реальному IP машины, значит, прокси находится в пути запроса. Несоответствие в данном случае обычно означает, что значение прокси было некорректным (случайный префикс http:// перед строкой SOCKS с уже установленным протоколом является распространенной причиной), а не сбой аутентификации, поскольку сбои аутентификации в Chrome обычно проявляются как пустая вкладка или прерванная навигация, а не как неправильный IP.
Выбор провайдера прокси для автоматизации браузера
Строка прокси столь же надежна, как и IP за ней, а автоматизация браузера более требовательна к пулу прокси, чем простые HTTP-запросы: многостраничный поток SeleniumBase требует, чтобы тот же выходной IP сохранялся при нескольких навигациях, а пул отмеченных или чрезмерно используемых IP-адресов центров обработки данных проявляется в виде неудачных входов и стен CAPTCHA, а не чистых ошибок. Nstproxy — это поставщик инфраструктуры прокси, чьи жилые линии созданы именно для этой необходимости в постоянстве, продаваемые либо по принципу "плати по мере использования", либо в виде ежемесячных пакетов, и они подходят для команд, выполняющих скрейпинг, мониторинг цен или управление аккаунтами через инструменты, такие как SeleniumBase, а не через сырые HTTP-клиенты. Шлюз принимает ту же форму username:password@host:port, используемую на протяжении всего данного руководства, так что переход тестового набора с временного прокси на производственный — это изменение в одну строку.
Постоянные или ротационные сеансы по запросу — Residential Prime Proxies поддерживают как фиксированный сеанс (одинаковый выходной IP на протяжении всего потока входа или многостраничного обхода), так и ротацию по запросу, что соответствует тому, как аргумент proxy= в SeleniumBase рассматривает сеанс как одну фиксированную конечную точку на время жизни драйвера.
HTTP(S) и SOCKS5 на одном шлюзе — оба протокола напрямую соответствуют значениям схемы, которые функция validate_proxy_string() в SeleniumBase уже принимает (http, https, socks4, socks5, socks5h), так что тестирование обоих транспортов — это изменение в одну строку, а не другая интеграция.
195 отслеживаемых локаций с целевыми странами, городами и ASN — полезно, когда набор SeleniumBase должен проверить, как страница отображается или ограничивает контент для конкретного региона.
Предоплаченная точка доступа для меньших наборов — Residential Lite Proxies охватывают более 50 миллионов IP-адресов в более чем 200 странах и регионах, выставляемые по счетам в предоплаченных пакетах, начиная с $10 за 10 ГБ ($1,00/ГБ), что является разумной стартовой точкой, прежде чем проект потребует контроля сессий Residential Prime Proxies.
Residential Prime Proxies указывают на 99,98% уровень успеха по сравнению с более чем 110 миллионами жилых IP-адресов по цене $1,60/ГБ в 50 ГБ пакете, а Residential Lite Proxies указывают на 99,5% уровень успеха; обе цифры получены с собственных страниц цен на Nstproxy и стоит перепроверить их там, прежде чем основываться на них при принятии решения о покупке, поскольку провайдеры прокси часто обновляют размер пула и цены.
Собственные примеры интеграции Nstproxy для ванильного Selenium, Puppeteer и Playwright направляют этот же шлюз через библиотеку proxy-chain, чтобы обойти отсутствие встроенных учетных данных прокси в этих инструментах — шаг, который делает ненужным встроенная обработка расширений SeleniumBase.
Продвинутые Шаблоны: SOCKS5, UC Режим и Ротация
SOCKS5 работает через такой же аргумент proxy=, просто с явно указанной схемой:
from seleniumbase import Driver
driver = Driver(browser="chrome", headless=True, proxy="socks5://USERNAME:PASSWORD@SERVER:PORT")driver.get("https://api.ipify.org")driver.quit()
Парсер схем SeleniumBase также принимает socks4:// и socks5h:// (последний разрешает DNS через прокси, а не локально) и передает любую обнаруженную схему в то же расширение Chrome, которое обрабатывает HTTP-аутентификацию, так что аутентифицированный прокси SOCKS5 проходит через тот же поток onAuthRequired, проверенный выше, а не через отдельный кодовый путь.
UC Режим — интеграция undetected-chromedriver от SeleniumBase для сайтов с более строгим детектированием ботов — принимает тот же аргумент:
from seleniumbase import Driver
driver = Driver(uc=True, headless=False, proxy="USERNAME:PASSWORD@SERVER:PORT")driver.uc_open_with_reconnect("https://example.com", reconnect_time=4)driver.quit()
Что UC Режим не добавляет, так это планировщик ротации. SeleniumBase предоставляет статический PROXY_LIST "телефонный справочник" в seleniumbase/config/proxy_list.py, чтобы именованный ключ мог заменять полную строку прокси в CLI, и флаг --multi-proxy, который существует специально для того, чтобы позволить параллельным рабочим pytest (pytest -n) каждому создавать собственное расширение прокси без конфликта блокировки файлов — ни одно из них не меняет выходной IP между запросами внутри одной сессии. Ротация между запросами должна осуществляться путем перезапуска драйвера с другим значением прокси или от самой шлюзовой стороны, что и предназначено для плана прокси с ротацией сессий.
Честные Ограничения
Три ограничения, о которых стоит продумать заранее, а не обнаруживать в ходе проекта. Во-первых, Firefox не является заменой Chrome здесь: SeleniumBase настраивает прокси Firefox через нативные network.proxy.type, network.proxy.http и network.proxy.socks* настройки, включая полную поддержку SOCKS4/5/5h, но нет эквивалента автозаполнения учетных данных расширения Chrome, поэтому аутентифицированный прокси в Firefox по-прежнему вызывает нативный запрос на вход в браузере, который не может быть отклонен в безголовом режиме. Во-вторых, механизм, основанный на расширениях, привязан к собственной платформе расширений Chrome, что означает, что он может перестать работать, когда Chrome изменяет эту платформу: обновление Chrome 137 изменило внутренности расширения таким образом, что сломало расширение аутентификации прокси SeleniumBase на лету на определенный период в 2025 году, что задокументировано в теме обсуждения поддерживающих, а исправление появилось в релизе SeleniumBase, а не стало чем-то, что пользователь мог бы обойти в своем тестовом коде. В-третьих, нет встроенного планировщика ротации, как было рассмотрено выше — SeleniumBase предоставляет вам чистый примитив один прокси на сессию, а создание стратегии ротации на его основе (или покупка ее у провайдера прокси) остается на усмотрение вызывающего кода.
Устранение Распространенных Ошибок Прокси
Появление всплывающего окна аутентификации прокси, несмотря на корректно отформатированную строку proxy="user:pass@host:port", почти всегда связано с проблемой версии Chrome, а не с учетными данными. Подтвердите, что SeleniumBase обновлен до последней версии (pip install -U seleniumbase), и в случае недавних сборок Chrome, где всплывающее окно все равно появляется, руководство сектантов SeleniumBase заключается в том, чтобы включить режим CDP перед первым переходом, что позволяет избежать проблем с затронутыми API расширений.
Сообщение 407 Proxy Authentication Required, которое проявляется в виде пустой страницы, а не всплывающего окна, обычно означает, что учетные данные неверны или IP-адрес устройства не входит в белый список IP-адресов учетной записи, оба аспекта стоит проверить непосредственно на панели управления провайдера прокси перед внесением изменений в тестовый код.
Прокси, который подключается, но возвращает неправильный выходной IP-адрес (проверено, как показано в разделе проверки выше), обычно связано с неправильно сформированной строкой прокси — случайный http:// перед значением с префиксом socks5://, или отсутствующий порт, а не с неисправным прокси.
Медленные или нестабильные ответы через работающий, правильно аутентифицированный прокси указывают на сам пул прокси: узлы выходного трафика Residential с ограниченной пропускной способностью или перегруженные ведут себя точно так же, как медленная сеть, а не как ошибка конфигурации.
Команды, проводящие те же проверки на Playwright вместо SeleniumBase, сталкиваются с похожим коротким списком причин — неправильно сформированные значения прокси, неправильная область и отклоненная аутентификация — поскольку ошибки происходят на уровне прокси, а не на уровне конкретной автоматизированной платформы поверх него. Для команд, создающих собственный прямой прокси, а не покупающих доступ к шлюзу, компромиссы при обработке как HTTP, так и HTTPS трафика и обеспечении аутентификации обсуждаются в отдельном руководстве по созданию Python-прокси-сервера.
Заключение
Поддержка прокси в SeleniumBase сводится к одному формату строки, который последовательно обрабатывается через флаг CLI, Driver() и SB(), с реальной сложностью, скрывающейся в том, что происходит с аутентифицированными прокси на Chrome по сравнению с Firefox, и в отсутствии автоматической ротации между запросами. Проверка выходного IP после каждого изменения прокси, обновление SeleniumBase, чтобы избежать регрессий расширений Chrome, которые иногда появляются, и выбор прокси-шлюза, который обрабатывает постоянство сессий и ротацию самостоятельно, а не полагается на тестовый код, покроет большинство проблем, которые возникают на практике.
В: Поддерживает ли SeleniumBase аутентифицированные прокси без сторонней библиотеки?
Да — передача proxy="username:password@host:port" в Driver(), SB() или флаг CLI --proxy достаточна для Chrome и Edge, поскольку SeleniumBase генерирует собственное расширение Manifest V3 для ответа на запрос аутентификации прокси; никакой слой анонимизации в стиле proxy-chain не требуется, как это бывает с некоторыми сырыми установками Selenium.
В: Работает ли поддержка аутентифицированных прокси в SeleniumBase на Firefox?
Нет, не автоматическая часть — настройки прокси Firefox проходят через родные параметры network.proxy.*, которые охватывают SOCKS4/5/5h, но SeleniumBase не внедряет сохраненные учетные данные для Firefox, поэтому аутентифицированный прокси все равно вызывает собственный запрос аутентификации Firefox.
В: Может ли SeleniumBase автоматически менять прокси в процессе тестирования?
Нет — SeleniumBase предоставляет примитив "один прокси на сессию" и статический поиск именованного PROXY_LIST, но нет встроенного планировщика ротации на уровне запросов; ротация IP по запросам требует либо перезапуска драйвера с новым значением прокси, либо использования прокси-шлюза, который сам меняет IP.
В: Почему появляется всплывающее окно аутентификации прокси, даже с правильной строкой proxy=?
Это чаще всего связано с проблемой версии Chrome: изменение в версии Chrome 137 временно сломало механизм расширений, который использует SeleniumBase для аутентификации прокси, и текущие версии SeleniumBase содержат исправление, при этом режим CDP является документированным обходным путем на более новых сборках Chrome, где всплывающее окно все еще появляется.
В: Поддерживает ли SeleniumBase прокси SOCKS5?
Да — socks4://, socks5:// и socks5h:// являются действительными префиксами схемы в той же строке прокси, использованной для HTTP-прокси, а аутентифицированные прокси SOCKS5 проходят ту же аутентификацию через расширение Chrome, что и аутентифицированные HTTP-прокси.
В: Безопасно ли запускать SeleniumBase с прокси против сайта, которым я не владею?
Только если автоматизация остается в рамках условий обслуживания сайта и применимого законодательства — прокси изменяет выходной IP, с которого виден запрос, но не изменяет, разрешены ли скрапинг, автоматизация аккаунтов или нагрузка на определенную цель, так что проверка должна происходить перед настройкой прокси, а не после нее.
Marcus Chen
Aug. 6th 2026
110M+ реальных IP с 99.9% успешных доступов
Средний отклик ~0.5с для задач высокой конкуренции
Всего от $0.1/GB
Мгновенный доступ к премиальным residential, datacenter, IPv6 и ISP пулам.