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

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

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

Запускайте 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](/uk/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-проксі](/uk/isp-proxies/), перегляньте [ціни](/uk/pricing/) і задайте ту саму адресу у звичайних HTTP-викликах за посібником для [Python requests](/uk/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 у нашому тесті цього не зробив.

