Как исправить ошибку ERR_TUNNEL_CONNECTION_FAILED при работе с прокси

Обновлено:

Чтобы открыть страницу по https:// через прокси, браузер отправляет запрос CONNECT и ожидает, пока прокси создаст туннель к сайту. Ошибка ERR_TUNNEL_CONNECTION_FAILED возникает, когда в ответ на этот запрос прокси возвращает ошибку вместо подтверждения. Сложность в том, что Chrome не показывает сам код ошибки, поэтому в первую очередь нужно выяснить его значение.

Прокси, совместимые с Puppeteer и Playwright

Два воспроизведенных сценария

Оба случая воспроизведены на тестовом прокси с учебным адресом 203.0.113.10:8080 и авторизацией user123:pass456. В обычном окне Chrome статус 407 не приводит к ошибке туннеля: браузер просто выводит диалоговое окно для ввода логина и пароля прокси. Ошибки туннеля из-за статуса 407 возникают преимущественно в скриптах автоматизации и приложениях, которые не могут запросить пароль.

Ответ прокси на CONNECTЧто отображает ChromeЧто отображает curl
407 без возможности ввода пароля (headless Chrome)ERR_TUNNEL_CONNECTION_FAILEDcurl: (56) CONNECT tunnel failed, response 407
502, так как прокси не может подключиться к сайтуERR_TUNNEL_CONNECTION_FAILEDcurl: (56) CONNECT tunnel failed, response 502

Причины в порядке убывания вероятности

  • Скрипт автоматизации не передает учетные данные. Флаг --proxy-server в Chrome принимает только хост и порт, без user:pass. При работе в headless-режиме Puppeteer или Selenium получает код 407 и сообщает о сбое туннеля.
  • Мобильное приложение работает через защищенный паролем прокси для Wi-Fi. В приложении нет формы авторизации, поэтому HTTPS-трафик блокируется, хотя в браузере все работает.
  • Прокси не может установить соединение с целевым ресурсом. На запрос CONNECT возвращается код 502; подробно этот случай разобран на странице 502 Bad Gateway.
  • Сбой возникает только на определенных сайтах. Целевой ресурс заблокирован или недоступен, тогда как остальные сайты через этот же прокси открываются нормально.

Как узнать точный код с помощью одной команды curl

Выполните команду curl -v -x http://user123:[email protected]:8080 https://example.com, подставив свои данные. Обратите внимание на строку сразу после > CONNECT example.com:443 HTTP/1.1: код 407 указывает на необходимость следовать инструкции по 407; код 502 указывает на проблему с целевым сайтом или маршрутом за прокси. Если вы предпочитаете не использовать терминал, вставьте строку прокси в прокси-чекер, который покажет auth failed (407) или HTTP 502 в аналогичных ситуациях.

Решения для разных платформ и окружений

  • Puppeteer: укажите при запуске --proxy-server=http://host:port и вызовите page.authenticate({ username, password }) перед переходом по ссылке. Подробный пример приведен в руководстве по настройке прокси в Puppeteer.
  • Playwright: передайте proxy: { server, username, password } при инициализации браузера, и Playwright автоматически обработает ответ 407; подробнее см. Playwright.
  • Selenium: Chrome не принимает параметры user:pass через аргументы командной строки; рабочие способы настройки описаны в руководстве по Selenium.
  • Chrome на Windows: если окно авторизации не появляется, проверьте, не блокирует ли его установленное расширение для прокси, и повторите попытку в окне без расширений.
  • Мобильные устройства: для приложений, требующих авторизации на прокси, используйте отдельное прокси-приложение с поддержкой user:pass, как описано в руководстве по настройке для Android.

Пошаговая инструкция

  1. 1

    Определите ответ на запрос CONNECT

    Выполните curl -v -x со строкой вашего прокси или вставьте ее в чекер, чтобы узнать, какой код возвращается — 407 или 502.

  2. 2

    При ошибке 407: настройте корректную передачу данных авторизации

    В скриптах используйте встроенные методы аутентификации библиотек вместо передачи user:pass внутри --proxy-server.

  3. 3

    При ошибке 502: проверьте доступность другого сайта

    Попробуйте загрузить надежный ресурс (например, example.com) через тот же прокси. Если он открывается, проблема на стороне исходного сайта.

  4. 4

    Повторите проверку и подтвердите выходной IP

    Как только туннель откроется, перейдите на страницу мой IP в этом же браузере, чтобы убедиться, что трафик идет через прокси.

Часто задаваемые вопросы

Почему страницы http открываются, а https выдают ошибку?

Для обычного http запрос CONNECT не нужен: прокси сразу перенаправляет трафик. Туннель создается исключительно для https, поэтому ошибки туннелирования возникают только на защищенных сайтах.

Из-за чего возникает ERR_TUNNEL_CONNECTION_FAILED на Android?

Чаще всего дело в приложении, которое не может передать логин и пароль для прокси в сети Wi-Fi. Откройте эту же страницу в Chrome для Android: если браузер запрашивает данные и загружает сайт, проблема кроется в самом приложении.

Можно ли указать user:pass прямо в параметре --proxy-server?

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

Поможет ли переключение на SOCKS5 избавиться от ошибки туннеля?

Только если ваш тарифный план предусматривает SOCKS5. Сервис VinaProxy поддерживает протоколы HTTP(S) и SOCKS5; выбирайте протокол, указанный в панели управления для вашего заказа, так как несовпадение протоколов приведет к другим ошибкам.

Прокси, совместимые с Puppeteer и Playwright

Прокси от VinaProxy поддерживают стандартную авторизацию по user:pass, которая поддерживается популярными библиотеками автоматизации без дополнительной настройки.

Смотреть тарифы

Похожие статьи

Ошибки прокси
Как исправить ошибку 407 Proxy Authentication Required
Ошибка 407 Proxy Authentication Required означает, что прокси ответил, но отклонил данные для входа. Реальный вывод curl, частые причины и способы решения для разных программ.
Ошибки прокси
Ошибка прокси 502 Bad Gateway: как узнать, кто ее вернул
Ошибка 502 Bad Gateway при работе через прокси означает, что промежуточный сервер не получил корректного ответа. Как определить причину — прокси или сайт — с реальными примерами вывода curl.
Настройка прокси
Как настроить прокси с авторизацией в Puppeteer (руководство для Node.js)
Настройка HTTP(S)-прокси с авторизацией в Node.js Puppeteer с использованием флага --proxy-server и метода await page.authenticate().
Настройка прокси
Как настроить прокси в Playwright (уровень браузера и контекста с авторизацией)
Настройка HTTP(S)-прокси с авторизацией в Playwright для Node.js и Python. Запуск нескольких изолированных статических IP через BrowserContext.
Настройка прокси
Как настроить прокси с авторизацией в Selenium WebDriver
Настройка HTTP(S) прокси с авторизацией по логину и паролю в Selenium WebDriver через selenium-wire или расширение onAuthRequired.
Бесплатные инструменты
Проверка прокси: проверьте свои прокси онлайн
Бесплатная проверка прокси онлайн: вставьте до 100 прокси в формате ip:port:user:pass и узнайте статус, выходной IP и задержку. Разбор каждой ошибки.
Настройка прокси
Руководство по настройке прокси в Google Chrome
Настройка HTTP(S) прокси VinaProxy в Google Chrome без изменения IP всей системы: браузерные расширения, флаги командной строки --proxy-server и профили.
Настройка прокси
Как настроить прокси в Windows 10 и Windows 11
Настройка HTTP(S) прокси VinaProxy в Windows 10 и Windows 11 через системные параметры WinINET, переменные среды PowerShell или netsh winhttp.