Что Selenium умеет переключать, что нет, и схема, при которой у каждой сессии свой прокси.
Что Selenium умеет переключать
В документации Selenium прокси задаётся в объекте options (options.proxy или аргумент Chrome) до вызова webdriver.Chrome(), и все примеры устроены так. В этой схеме нет команды, которая меняет прокси только для одной вкладки или подменяет его в запущенном браузере. На практике «сменить прокси» значит «запустить следующую сессию с другим прокси».
У самого Chrome есть экспериментальный вызов DevTools Target.createBrowserContext, принимающий proxyServer для нового пустого context. Он не входит в API Selenium, управление таким context через оконные команды Selenium мы не проверяли и строить на нём не советуем. В Playwright и Puppeteer прокси на context — обычная опция.
# 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 или откройте сессию нужной длительности.
Решите, что должно оставаться постоянным: один IP на задачу, один на аккаунт или новый на каждый запрос.
Шаг 2
Один IP на задачу или аккаунт: возьмите статический IP и запускайте по браузерной сессии на IP. Свежий профиль на сессию не смешивает cookie.
Шаг 3
Новый IP на запрос и фиксированный адрес не нужен: берите ротируемый прокси и учитывайте повторное использование соединений внутри браузера.
Шаг 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 на один день.
Selenium прокси с авторизацией в Chrome: HTTP-прокси в ChromeOptions и встроенный в Selenium обработчик BiDi, без расширений. Статические IP дата-центра для тестов.
Реальные домашние IP в 195+ странах; премиум-линия добавляет таргетинг по штату и крупному городу. Смена IP на каждое новое подключение или липкие сессии. От $1,50/ГБ, $1,35/ГБ при 100 ГБ. HTTP и SOCKS5.
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.
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.
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.
Read on 13 November 2026: proxy can be set globally for the browser or for each browser context individually.
Факты о продуктах и прайс-лист Proxy302
Наблюдение за продуктом · Проверено:
Файл фактов о продуктах, сверен 13 ноября 2026 с консолью, бэкендом и прайс-листом: цены аренды статического ISP за IP (US$, 1 PTC = US$1), цена бюджетной линии динамического резидентного прокси за ГБ, порт HTTP 2222 и порт SOCKS5 3333 на proxy.proxy302.com, какой протокол работает в каком продукте, нет бесплатного теста.
Готовы попробовать?
Создайте аккаунт, пополните баланс и выберите ротируемый резидентный, статический ISP или дата-центр IP — настроить его в браузере можно за несколько минут.