# Прокси в Selenium: Chrome и Firefox со статическим ISP-IP | ProxyJam

Как задать прокси в Selenium для Chrome и Firefox, почему учётные данные в --proxy-server не работают и как их заменяет белый список IP. Проверенный код на Python.

- Canonical: https://proxyjam.com/ru/integrations/selenium/
- Updated: 2026-10-23
- Language: ru

Запускайте Chrome или Firefox под Selenium через один статический ISP-адрес. Каждый пример на этой странице перед публикацией проверили на локальном прокси, а о том, что не сработало, сказано прямо.


В Chrome передайте аргумент `--proxy-server=http://HOST:PORT`; в Firefox задайте ручной Proxy в параметрах. Firefox может ответить на запрос пароля от прокси через обработчик WebDriver BiDi в Selenium, `add_authentication_handler`. Chrome в нашем тесте этого не смог: он игнорирует учётные данные в `--proxy-server`, а оба обработчика BiDi завершились по тайм-ауту. Для Chrome внесите IP, с которого запускаются тесты, в белый список прокси, и прокси не потребует учётных данных ни по HTTP, ни по SOCKS5.


## Как задать прокси в Selenium

1. **Узнайте публичный IP, с которого запускаются тесты** Адрес компьютера или CI-раннера, каким его видит интернет, а не локальный. Его показывает [What Is My IP](/ru/what-is-my-ip/).
2. **Внесите этот IP в белый список прокси** Один вызов API, `PUT /orders/ORDER_ID/whitelist`, или инструмент `set_proxy_whitelist` MCP-сервера; в панели управления для этого пока нет настройки. Белый список принимает адреса IPv4, и каждый вызов заменяет список. Пока белый список задан, прокси пропускает только адреса из него, а логин и пароль для этого заказа перестают работать; если отправить пустой список, белый список выключается и вход по паролю снова работает.
3. **Скопируйте хост и порт из заказа** Из раздела «Мои прокси» или из API. Когда белый список задан, логин и пароль не нужны.
4. **Задайте прокси в параметрах браузера** Chrome: `--proxy-server=http://HOST:PORT` или `socks5://HOST:PORT` после переключения прокси на SOCKS5. Firefox: ручной `Proxy` с `httpProxy` и `sslProxy`.
5. **Откройте страницу и проверьте выходной адрес** Один раз загрузите What Is My IP в управляемом браузере и убедитесь, что там купленный вами адрес, а потом запускайте набор тестов.

## Проверенный код для Selenium 4 на Python

Пример Firefox с паролем отправляет логин и пароль, поэтому ему нужен заказ без белого списка. Остальные примеры для браузеров рассчитаны на то, что IP вашего компьютера есть в белом списке прокси; для примера с SOCKS5 прокси к тому же сначала нужно переключить на SOCKS5, после чего у него будет новый порт. Замените слова, набранные заглавными буквами, значениями из своего заказа, а в вызове белого списка замените ORDER_ID, YOUR_API_KEY и YOUR_IP.

### Chrome

Chrome через HTTP-прокси.

```
# The proxy has your machine's IP on its whitelist, so no credentials
# are sent: Chrome ignores them in --proxy-server anyway.
from selenium import webdriver

options = webdriver.ChromeOptions()
options.add_argument("--headless=new")  # remove to watch the browser
options.add_argument("--proxy-server=http://HOST:PORT")

driver = webdriver.Chrome(options=options)
try:
    driver.get("https://example.com/")
    print(driver.title)
finally:
    driver.quit()
```

### Firefox с паролем

Firefox отвечает на запрос пароля от прокси.

```
# Selenium 4.51+ with WebDriver BiDi; pip install selenium
from selenium import webdriver
from selenium.webdriver.common.proxy import Proxy, ProxyType

options = webdriver.FirefoxOptions()
options.enable_bidi = True
options.add_argument("-headless")  # remove to watch the browser
options.proxy = Proxy({
    "proxyType": ProxyType.MANUAL,
    "httpProxy": "HOST:PORT",
    "sslProxy": "HOST:PORT",
})

driver = webdriver.Firefox(options=options)
try:
    # Answers the proxy's 407 with your username and password
    driver.network.add_authentication_handler(
        lambda request: request.provide_credentials("USERNAME", "PASSWORD")
    )
    driver.get("https://example.com/")
    print(driver.title)
finally:
    driver.quit()
```

### Firefox

Firefox через HTTP-прокси с белым списком.

```
# The proxy has your machine's IP on its whitelist, so no credentials
# are sent. For a password instead, see selenium-firefox-auth.
from selenium import webdriver
from selenium.webdriver.common.proxy import Proxy, ProxyType

options = webdriver.FirefoxOptions()
options.add_argument("-headless")  # remove to watch the browser
options.proxy = Proxy({
    "proxyType": ProxyType.MANUAL,
    "httpProxy": "HOST:PORT",
    "sslProxy": "HOST:PORT",
})

driver = webdriver.Firefox(options=options)
try:
    driver.get("https://example.com/")
    print(driver.title)
finally:
    driver.quit()
```

### Chrome SOCKS5

Chrome через SOCKS5-прокси.

```
# Switch the proxy to SOCKS5 first, then use the port the order shows.
# The whitelist applies to SOCKS5 as well, so no credentials here either.
from selenium import webdriver

options = webdriver.ChromeOptions()
options.add_argument("--headless=new")  # remove to watch the browser
options.add_argument("--proxy-server=socks5://HOST:PORT")

driver = webdriver.Chrome(options=options)
try:
    driver.get("https://example.com/")
    print(driver.title)
finally:
    driver.quit()
```

### Белый список

Добавьте свой IP в белый список прокси.

```
# Put the public IPv4 address your code runs from on the proxy's
# whitelist. Replaces the list; an empty list turns whitelisting off
# and the proxy falls back to username and password.
curl -X PUT "https://api.proxyjam.com/public/v1/orders/ORDER_ID/whitelist" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"whitelisted_ips": ["YOUR_IP"]}'
```


## Настройки прокси в Selenium для каждого браузера

|  | HTTP-прокси | SOCKS5-прокси | Логин и пароль |
|---|---|---|---|
| Chrome | --proxy-server=http://HOST:PORT | --proxy-server=socks5://HOST:PORT | Игнорируются в --proxy-server; используйте белый список |
| Firefox | Proxy с httpProxy и sslProxy | Proxy с socksProxy и socksVersion 5 | Сработало через add_authentication_handler (BiDi), по HTTP |
| Chrome, обработчики BiDi | add_auth_handler и add_authentication_handler оба завершились по тайм-ауту | Не проверялось | Используйте белый список, пока это не изменит новая версия Selenium или Chrome |

Проверено 2026-10-22 на Selenium 4.51, Chrome и Firefox в headless-режиме, на локальном прокси, который на одном порту требовал пароль, а на другом принимал клиента из белого списка.


## Что браузерный тест получает от адреса

- **Без пароля в браузере:** Белый список пропускает IPv4-адрес вашего раннера, поэтому ни в параметрах, ни в логах нет секрета
- **Обе браузерные схемы:** http:// для обычных страниц, socks5:// после переключения заказа
- **Один исходный адрес при каждом запуске:** Вчерашний и сегодняшний запуск уходят с одного IP, закреплённого на весь оплаченный период
- **Параллельные драйверы:** Несколько драйверов могут делить адрес, или каждый драйвер может получить свой

## Что идёт не так с Selenium и прокси

### Учётные данные внутри --proxy-server

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

### Загрузка драйвера идёт через прокси

Когда в параметрах Firefox задан прокси, Selenium Manager скачивает драйвер через этот же прокси. С прокси, который пускает только по паролю, эта загрузка не проходит ещё до запуска браузера; с белым списком она проходит.

### В белом списке не тот адрес

CI-раннер часто выходит в интернет с другого публичного IP, чем ваш ноутбук, а у некоторых раннеров он меняется от запуска к запуску. Вносите в белый список адрес, с которого запускаются тесты, и обновляйте его, когда он меняется: каждый вызов заменяет список.

### SOCKS5 в браузере до переключения

Адрес, настроенный на HTTP, не отвечает по SOCKS5. Сначала переключите прокси в заказе и используйте порт, который после этого появится; если поменять только схему в аргументе, браузер не сможет подключиться.


## Вопросы о прокси в Selenium

### Как использовать прокси с аутентификацией в Selenium?

В Firefox включите WebDriver BiDi и зарегистрируйте через driver.network.add_authentication_handler обработчик, который передаёт логин и пароль; с Selenium 4.51 это сработало. В Chrome в нашем тесте не сработало ничего, что отправляет учётные данные: он игнорирует их в параметре прокси, а оба обработчика BiDi завершились по тайм-ауту. Для Chrome внесите в белый список публичный IP, с которого запускаются тесты, и браузер будет подключаться вообще без учётных данных.

### Как настроить прокси в Python Selenium для Chrome?

Создайте ChromeOptions, добавьте аргумент --proxy-server=http://HOST:PORT и передайте параметры в webdriver.Chrome. Для SOCKS5 переключите прокси на SOCKS5 в заказе и используйте socks5://HOST:PORT с портом, который после этого покажет заказ.

### Работает ли белый список IP с SOCKS5?

Да. Адрес из белого списка принимается без учётных данных по HTTP и по SOCKS5, и именно это делает SOCKS5 пригодным для Chrome, ведь Chrome не умеет отправлять логин и пароль для SOCKS5. Белый список задаётся через API или MCP-сервер и принимает адреса IPv4.

### Может ли каждый браузер в наборе тестов использовать свой прокси?

Да, по одному на драйвер: прокси входит в параметры, с которыми запускается драйвер, поэтому два драйвера могут использовать два адреса. Сменить прокси у работающего Chrome нельзя; вместо этого запустите новый драйвер.

### Сменит ли длинный набор тестов адрес на полпути?

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

### Для чего можно использовать прокси?

Сквозные тесты собственного продукта, региональные проверки вашего магазина, верификация рекламы, исследование цен и защита бренда работают без предварительной проверки по нашей политике допустимого использования. Управлять браузером, чтобы обойти CAPTCHA, защиту от ботов, ограничения частоты запросов или блокировки аккаунтов, совсем другое дело: адрес этого не делает, а политика запрещает такие попытки.


Статический адрес делает браузерные тесты воспроизводимыми: тот же набор, запущенный через неделю, приходит из того же места, поэтому изменение результата идёт от сайта. Закажите адрес на странице [ISP-прокси](/ru/isp-proxies/), посмотрите [цены](/ru/pricing/) и задайте тот же адрес в обычных HTTP-вызовах по руководству для [Python requests](/ru/integrations/python-requests/).



## Источники

- [Selenium documentation, Proxy](https://www.selenium.dev/documentation/webdriver/drivers/options/#proxy): как задать прокси в параметрах браузера
- [Selenium documentation, Selenium Manager](https://www.selenium.dev/documentation/selenium_manager/): как скачиваются драйверы и что для этого используется настроенный прокси
- [Chromium, network settings](https://www.chromium.org/developers/design-documents/network-settings/): параметр `--proxy-server` и его схемы




Selenium сам трафик не направляет: он запускает браузер и передаёт ему прокси в составе параметров браузера. Поэтому ответ для Chrome и Firefox разный, и поэтому большинство настроек ломается на аутентификации в прокси.

## Прокси в Python Selenium для Chrome и Firefox

Chrome читает прокси из параметра командной строки, Firefox читает его из объекта прокси в своих параметрах. Оба принимают прокси с белым списком без дополнительной настройки; Firefox к тому же может ответить на запрос пароля от прокси через WebDriver BiDi, а Chrome в нашем тесте этого не сделал.

