К содержимому

Selenium смена прокси: на сессию или на вкладку

Что Selenium умеет переключать, что нет, и схема, при которой у каждой сессии свой прокси.

Что Selenium умеет переключать

В документации Selenium прокси задаётся в объекте options (options.proxy или аргумент Chrome) до вызова webdriver.Chrome(), и все примеры устроены так. В этой схеме нет команды, которая меняет прокси только для одной вкладки или подменяет его в запущенном браузере. На практике «сменить прокси» значит «запустить следующую сессию с другим прокси».

У самого Chrome есть экспериментальный вызов DevTools Target.createBrowserContext, принимающий proxyServer для нового пустого context. Он не входит в API Selenium, управление таким context через оконные команды Selenium мы не проверяли и строить на нём не советуем. В Playwright и Puppeteer прокси на context — обычная опция.

Способы получить другой прокси

Способы получить другой прокси
ПунктКак работаетПодходит дляНа что смотреть
Новый драйвер на каждый проксиЗакрыть браузер, запустить следующий с другим проксиЗадачи по очереди, один IP на задачуВремя запуска каждой сессии; каждый раз чистый профиль
Параллельные драйверыНесколько браузеров сразу, у каждого свой прокси и локальный портПотоки, которые должны идти рядомПамять на каждый браузер; если логин SOCKS5, нужен форвардер на каждый прокси
Ротируемый шлюзОдин адрес прокси, новое соединение получает новый IPМного разовых запросов без перезапускаЭто не переключение по вкладкам: Chrome переиспользует открытые соединения, см. ниже
Прокси на contextPlaywright или Puppeteer, прокси задан на contextМного изолированных сессий в одном браузереДругой инструмент; эта статья остаётся для существующих тестов Selenium

Источник: документация Selenium (опции драйвера), Chrome DevTools Protocol и документация Playwright, прочитано 13 ноября 2026; поведение шлюза — из файла фактов Proxy302.

Чистая сессия на каждый прокси (Python)

# pip install -U selenium    and install gost (see gost.run)
import socket, subprocess, tempfile, time
from selenium import webdriver
from selenium.webdriver.common.by import By

PROXIES = [  # one entry per IP, copied from My assets (SOCKS5 endpoints)
    ("HOST", "PORT", "LOGIN_1", "PASSWORD_1"),
    ("HOST", "PORT", "LOGIN_2", "PASSWORD_2"),
]

def start_forwarder(local_port, host, port, login, password):
    proc = subprocess.Popen(["gost", "-L", f"socks5://127.0.0.1:{local_port}",
                             "-F", f"socks5://{login}:{password}@{host}:{port}"])
    for _ in range(50):
        try:
            socket.create_connection(("127.0.0.1", local_port), timeout=0.2).close()
            return proc
        except OSError:
            time.sleep(0.2)
    proc.terminate()
    raise RuntimeError("forwarder did not start")

def run_session(local_port, entry):
    forwarder = start_forwarder(local_port, *entry)
    options = webdriver.ChromeOptions()
    options.add_argument(f"--proxy-server=socks5://127.0.0.1:{local_port}")
    options.add_argument(f"--user-data-dir={tempfile.mkdtemp()}")   # a clean profile per session
    driver = webdriver.Chrome(options=options)                       # the proxy is fixed from here on
    try:
        driver.get("https://ipinfo.io/json")
        print(entry[2], driver.find_element(By.TAG_NAME, "body").text)
    finally:
        driver.quit()
        forwarder.terminate()

for i, entry in enumerate(PROXIES):
    run_session(1080 + i, entry)   # next proxy = next browser session

Только пример: замените HOST, PORT, LOGIN и PASSWORD значениями из «Мои активы». Сам Chrome не отправляет логин SOCKS5, поэтому в примере перед каждым прокси стоит локальный форвардер.

Задание прокси классом Proxy в Selenium

from selenium import webdriver
from selenium.webdriver.common.proxy import Proxy, ProxyType

proxy = Proxy()
proxy.proxy_type = ProxyType.MANUAL
proxy.socks_proxy = "127.0.0.1:1080"   # the local forwarder, no login in the address
proxy.socks_version = 5

options = webdriver.ChromeOptions()
options.proxy = proxy                  # set before the browser starts
driver = webdriver.Chrome(options=options)

Только пример: прокси входит в опции, поэтому действует на всю сессию, запущенную с ними.

Новый IP без нового браузера

У динамических резидентных и датацентровых прокси Proxy302 без сессии новый IP получает каждое новое соединение, а не каждый запрос: открытое соединение (keep-alive) сохраняет свой IP. Chrome переиспользует открытые соединения, поэтому несколько загрузок страниц подряд в одном браузере какое-то время могут показывать один и тот же IP.

Если задаче точно нужен новый IP, запустите новую сессию браузера. Если нужен один IP надолго, возьмите статический IP или откройте сессию нужной длительности.

Выбор за 4 шага

  1. Шаг 1

    Решите, что должно оставаться постоянным: один IP на задачу, один на аккаунт или новый на каждый запрос.

  2. Шаг 2

    Один IP на задачу или аккаунт: возьмите статический IP и запускайте по браузерной сессии на IP. Свежий профиль на сессию не смешивает cookie.

  3. Шаг 3

    Новый IP на запрос и фиксированный адрес не нужен: берите ротируемый прокси и учитывайте повторное использование соединений внутри браузера.

  4. Шаг 4

    Много изолированных сессий одновременно: эту часть работы переведите на инструмент с прокси на context.

Частые проблемы

Во второй сессии виден IP первой

Проверьте Старый браузер или его форвардер ещё работает, либо обе сессии используют один профиль.

Решение Вызывайте driver.quit() и останавливайте форвардер в блоке finally, а для каждой сессии берите свой --user-data-dir.

На ротируемом прокси IP не меняется между загрузками страниц

Проверьте Chrome держит открытое соединение, а вместе с ним и IP.

Решение Когда нужен новый IP, запускайте новую сессию или берите статический IP на сессию.

Во всех сессиях виден ваш собственный IP

Проверьте Флаг прокси или объект Proxy не попал в options, из которых создан драйвер.

Решение Проверьте options, переданные в webdriver.Chrome, и сначала проверьте прокси через curl.

Когда остановиться Если curl через прокси тоже не проходит, дело в адресе или логине, а не в Selenium.

Прокси с логином SOCKS5 не работает в Chrome

Проверьте Chromium не отправляет логин SOCKS5.

Решение Поставьте перед ним локальный форвардер, как в примере, или используйте HTTP-адрес.

Как это сделать с Proxy302

Для постоянного адреса на сессию подойдёт статический ISP IP: 1 день стоит $0,50, 30 дней — $7,99 (около $0,27 в сутки), в течение срока аренды IP не меняется, в одном заказе можно оформить до 100 IP. Для набора меняющихся IP есть динамический резидентный прокси, бюджетная линия — $1,50 за ГБ.

Поскольку Chrome не отправляет логин SOCKS5, передавайте Selenium либо HTTP-адрес (порт 2222), либо адрес SOCKS5 (порт 3333) через локальный форвардер. Бесплатного теста нет, минимальная покупка — 1 ГБ резидентного трафика или один IP на один день.

Шаги в Proxy302

  1. Шаг 1

    Откройте страницу статического ISP (или динамического резидентного), выберите страну и протокол, проверьте стоимость и оплатите с кошелька.

  2. Шаг 2

    Откройте «Мои активы» и скопируйте хост, порт, логин и пароль для каждого нужного IP.

  3. Шаг 3

    Добавьте по записи на сессию в список PROXIES из примера.

  4. Шаг 4

    Запустите и убедитесь по https://ipinfo.io/json, что каждая сессия выводит свой выход.

Частые вопросы о смене прокси в Selenium

Можно ли сменить прокси в уже запущенном браузере Selenium?

По документированным опциям Selenium — нет: прокси задаётся при запуске драйвера. Закройте драйвер и запустите новый с другим прокси.

Может ли каждая вкладка в Selenium использовать свой прокси?

В обычной схеме Selenium — нет, вкладки используют прокси браузера. Запускайте по браузеру на прокси или берите инструмент с прокси на context.

Как использовать несколько прокси в Selenium одновременно?

Запустите несколько драйверов, у каждого свой флаг прокси и свой --user-data-dir, например в разных потоках или процессах.

Ротируемый прокси меняет IP при каждой загрузке страницы?

Не обязательно. Новое соединение получает новый IP, но Chrome переиспользует открытые. Когда новый IP нужен наверняка, запускайте новую сессию.

Перезапуск браузера — единственный путь?

Для Selenium да. Если перезапуск слишком медленный, используйте Playwright или Puppeteer, где у context может быть свой прокси.

Ссылки и источники

5
  1. Selenium documentation: driver options, proxy

    Официальная документация · Проверено:

    Read on 13 November 2026: the Python example builds ChromeOptions, sets options.proxy = Proxy({"proxyType": ProxyType.MANUAL, "httpProxy": "http.proxy:1234"}) and only then starts webdriver.Chrome(options=options); the examples contain no user:pass.

    The visible part of the page does not state in so many words that the proxy cannot be changed after the session starts; this guide relies on the examples, where the proxy is always part of the options passed at start.

  2. Chrome DevTools Protocol: Target.createBrowserContext

    Официальная документация · Проверено:

    Read on 13 November 2026 in the protocol JSON: createBrowserContext creates a new empty browser context, similar to an incognito profile; its parameters proxyServer ("similar to the one passed to --proxy-server") and proxyBypassList are marked experimental.

    Not tested with Selenium window commands.

  3. Chromium source: socks5_client_socket.cc

    Официальная документация · Проверено:

    Read on 13 November 2026: the SOCKS5 greeting Chromium sends is 05 01 00 (one method, "no authentication"), so a login cannot be passed to a SOCKS5 proxy from Chrome.

  4. Playwright: Network, HTTP proxy

    Официальная документация · Проверено:

    Read on 13 November 2026: proxy can be set globally for the browser or for each browser context individually.

  5. Факты о продуктах и прайс-лист Proxy302

    Наблюдение за продуктом · Проверено:

    Файл фактов о продуктах, сверен 13 ноября 2026 с консолью, бэкендом и прайс-листом: цены аренды статического ISP за IP (US$, 1 PTC = US$1), цена бюджетной линии динамического резидентного прокси за ГБ, порт HTTP 2222 и порт SOCKS5 3333 на proxy.proxy302.com, какой протокол работает в каком продукте, нет бесплатного теста.

Готовы попробовать?

Создайте аккаунт, пополните баланс и выберите ротируемый резидентный, статический ISP или дата-центр IP — настроить его в браузере можно за несколько минут.