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

Selenium прокси не работает в headless: 3 причины и проверка

За несколько минут проверите, использует ли Chrome ваш прокси, и исправите самую частую проблему с логином и паролем.

Три самые частые причины

Причина 1: логин записан в адресе прокси. В документации Chrome сказано, что он не использует учётные данные, встроенные в настройки прокси, поэтому --proxy-server=http://LOGIN:PASSWORD@HOST:PORT не выполняет вход. В обычном окне можно увидеть форму входа и ввести логин вручную, а в headless вводить некуда, и страница просто не открывается.

Причина 2: окно и headless используют разные источники прокси. Сетевой стек Chromium по умолчанию берёт системные сетевые настройки, а в профиле на рабочем столе может стоять ещё и расширение для прокси. В контейнере или на CI-раннере нет ни того, ни другого, и тот же скрипт выходит с собственным IP машины или не подключается.

Причина 3: не совпадают протокол или порт. У шлюза Proxy302 для HTTP и SOCKS5 разные порты (2222 и 3333), а Chrome не поддерживает аутентификацию в SOCKS5. Если запускать SOCKS5 с логином в Chrome через Selenium, он не заработает при любом значении headless.

Четвёртое выглядит как обрыв: на ротационной линии каждое новое соединение получает новый IP, поэтому в длинном скрипте IP выхода может смениться посередине. Так устроена линия, это не сбой.

Способы задать прокси для Chrome и что они делают с логином

Способы задать прокси для Chrome и что они делают с логином
ПунктЛогин поддерживается?Примечание
--proxy-server=http://HOST:PORTНетИспользуется для прокси без логина; иначе запрос будет отклонён
Логин в адресе (http://LOGIN:PASSWORD@HOST:PORT)НетChrome не использует учётные данные, встроенные в настройки прокси
Объект Proxy в Selenium (options.proxy)НетЗадаёт адрес и тип, логина для Chrome в нём нет
Локальный перенаправитель (например, gost), который добавляет логинДаChrome подключается к 127.0.0.1 без логина, вход на прокси выполняет перенаправитель
selenium-wireДа, описано в READMEРепозиторий заархивирован 3 января 2024 и больше не поддерживается, в новых проектах не рекомендуется

Составлено по документации Chromium о прокси, странице опций драйвера Selenium и репозиторию selenium-wire, прочитанным 13 ноября 2026. «Да» значит, что это описано в документации; проверьте на своих версиях Chrome и chromedriver.

Проверка за 4 шага

  1. Шаг 1: проверьте логин вне браузера

    Откройте «Мои активы», скопируйте HOST, PORT, USERNAME и PASSWORD и выполните строку curl из блока кода ниже. Она должна вывести IP выхода и страну. Если curl не работает, дело в данных прокси, а не в Selenium или headless.

    Ожидаемый результат curl печатает IP выхода прокси.

  2. Шаг 2: для браузера берите HTTP-порт

    Chrome не поддерживает логин в SOCKS5, поэтому ему нужен HTTP-актив (порт 2222 у Proxy302). Статический IP, арендованный поштучно, отвечает по HTTP на 2222 с тем же логином, даже если куплен как SOCKS5 (проверено 4 ноября 2026); остальные активы работают только по протоколу, с которым созданы.

  3. Шаг 3: запустите локальный перенаправитель и направьте Chrome на него

    Выполните строку gost ниже. Она слушает 127.0.0.1:8080 и сама входит на прокси. Затем запустите Chrome с --proxy-server=http://127.0.0.1:8080 без какого-либо логина. Перед использованием сверьте параметры вашей версии gost.

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

  4. Шаг 4: выведите IP выхода из самого headless-браузера

    Запустите тест на Python ниже. Если страница открылась, это ничего не доказывает: Chrome мог выйти напрямую. Реальный маршрут показывает только выведенный IP, он должен совпасть с результатом curl из шага 1.

    Ожидаемый результат Выведенный IP совпадает с IP из curl.

Проверка логина и запуск перенаправителя

# 1) test the login outside the browser (HTTP port)
curl -x http://LOGIN:PASSWORD@HOST:2222 https://ipinfo.io/json

# 2) local forwarder: Chrome connects here without a login
gost -L http://127.0.0.1:8080 -F http://LOGIN:PASSWORD@HOST:2222

Только пример: подставьте LOGIN, PASSWORD и HOST из «Мои активы»; специальные символы вроде @ в логине кодируйте через проценты (@ это %40).

Тест Selenium, который печатает IP выхода

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By

options = Options()
options.add_argument("--headless=new")
# the local forwarder from step 3: no login in this address
options.add_argument("--proxy-server=http://127.0.0.1:8080")

driver = webdriver.Chrome(options=options)
try:
    driver.get("https://ipinfo.io/json")
    print(driver.find_element(By.TAG_NAME, "body").text)
finally:
    driver.quit()

Только пример. Нужны Chrome и подходящий по версии chromedriver (или Selenium Manager). Если выведен ваш собственный IP, Chrome не использует прокси.

Если всё равно не работает

С окном работает, в headless виден ваш собственный IP

Проверьте Откуда окно брало прокси: системные настройки, расширение или профиль?

Решение Задайте прокси явно через --proxy-server в headless-запуске и выводите IP, как в шаге 4. Не полагайтесь на настройки, которые есть только на вашем рабочем столе.

Ошибка ERR_PROXY_CONNECTION_FAILED или ERR_TUNNEL_CONNECTION_FAILED

Проверьте Проходит ли curl из шага 1 и работает ли ещё перенаправитель?

Решение Сначала исправьте хост, порт и протокол (HTTP, порт 2222). Порядок проверок описан в статье об ошибке подключения к прокси.

Ошибка 407 или страница входа вместо сайта

Проверьте Не остался ли логин в адресе --proxy-server?

Решение Уберите его из адреса и пусть его отправляет перенаправитель. Chrome игнорирует встроенный логин.

IP выхода меняется посреди длинного скрипта

Проверьте Это ротационная линия? Каждое новое соединение получает новый IP.

Решение Если задача требует один и тот же IP, берите статический IP или откройте сессию на динамической линии.

С Proxy302

У шлюза есть HTTP-порт 2222 и SOCKS5-порт 3333. Для Selenium с Chrome используйте HTTP. Ротационные резидентные прокси меняют IP на каждом новом соединении, это удобно для множества независимых загрузок страниц. Если тесту нужен один постоянный выход, статический ISP-IP не меняется в течение аренды и стоит $0,50 за 1 день или $7,99 за 30 дней.

Бесплатного пробного периода нет; минимальная покупка это один IP на один день или 1 ГБ ротационного трафика.

Частые вопросы

Игнорирует ли headless Chrome прокси?

По замыслу нет. В Chrome теперь один объединённый headless-режим, и --proxy-server действует в нём так же, как в обычном окне. Различаются источник прокси и то, кто отвечает на окно входа, поэтому один и тот же скрипт ведёт себя по-разному.

Что писать: --headless или --headless=new?

В документации Selenium --headless=new указан среди частых аргументов Chrome, а в документации Chrome сказано, что --headless запускает объединённый режим. С актуальным Chrome подойдёт любой вариант; старый режим теперь есть только в chrome-headless-shell.

Можно ли в Selenium писать логин и пароль в адрес прокси?

С Chrome нет: он не использует учётные данные, встроенные в настройки прокси. Используйте локальный перенаправитель, который добавляет логин, как в шаге 3.

Как убедиться, что браузер действительно использует прокси?

Откройте страницу с IP в той же headless-сессии и сравните выведенный IP с результатом curl. Открывшаяся страница не доказательство.

Стоит ли сейчас использовать selenium-wire?

Репозиторий заархивирован 3 января 2024, на странице сказано, что он не поддерживается. В старых окружениях он может ещё работать, но для нового проекта проще поддерживать локальный перенаправитель.

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

8
  1. Документация Chromium: поддержка прокси в Chrome

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

    Прочитано 13 ноября 2026: Chrome не использует учётные данные, встроенные в настройки прокси; проверка подлинности прокси идёт обычным путём поиска учётных данных; в Chrome не поддерживаются методы аутентификации SOCKSv5; при HTTP-прокси разрешение имён выполняет прокси.

  2. Документация Chromium: сетевые настройки

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

    Прочитано 13 ноября 2026: сетевой стек Chromium использует системные сетевые настройки, в том числе прокси; --proxy-server принимает один адрес или соответствие схем, а --proxy-bypass-list действует только вместе с --proxy-server.

  3. Chrome for Developers: режим Headless

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

    Прочитано 13 ноября 2026: в Chrome объединены режимы Headless и с окном, флаг --headless запускает объединённый режим; начиная с Chrome 132.0.6793.0 старый Headless доступен только как отдельный бинарник chrome-headless-shell.

  4. Документация Selenium: опции Chrome

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

    Прочитано 13 ноября 2026: среди частых аргументов Chrome указаны --start-maximized, --headless=new и --user-data-dir; основные версии Chrome и chromedriver должны совпадать.

  5. Документация Selenium: опции драйвера (прокси)

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

    Прочитано 13 ноября 2026: в примере для Python прокси задаётся через options.proxy = Proxy({'proxyType': ProxyType.MANUAL, 'httpProxy': 'http.proxy:1234'}), классы Proxy и ProxyType импортируются из selenium.webdriver.common.proxy.

  6. Репозиторий selenium-wire

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

    Прочитано 13 ноября 2026: репозиторий заархивирован владельцем 3 января 2024, указано, что Selenium Wire больше не поддерживается; в README описан логин и пароль в адресе прокси для HTTP Basic Auth.

  7. Документация GOST: цепочка пересылки

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

    Прочитано 13 ноября 2026: на странице приведены команды вида gost -L http://:8080 -F https://192.168.1.1:8080, где -L задаёт локальный сервис, а каждый -F добавляет звено цепочки. Логин и пароль в адресе -F пишутся в той же URL-форме; сверьтесь с вашей версией gost.

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

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

    Файл фактов о продуктах сайта (цены в долларах, 1 PTC = $1, протоколы и порты, сроки аренды; тесты протоколов от 4 ноября 2026 и линии динамических дата-центровых прокси от 10 ноября 2026). Проверено 13 ноября 2026.

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

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