ERR_SOCKS_CONNECTION_FAILED: SOCKS-прокси не установил соединение

Chrome добрался до SOCKS-прокси, но рукопожатие не удалось. В обычном Chrome самая частая причина — SOCKS5 с логином и паролем, которые браузер не поддерживает.

Обновлено · Редакция Prokso

Коротко
  • ERR_SOCKS_CONNECTION_FAILED означает, что рукопожатие с SOCKS-прокси не удалось
  • В Chrome самая частая причина — SOCKS5 с логином и паролем, которые браузер не поддерживает, или тип, не совпадающий с портом
  • Для SOCKS5 в Chrome включите доступ по IP, а для входа по логину берите HTTP-порт 823

Что означает ошибка

В net_error_list.h Chromium код -120 ERR_SOCKS_CONNECTION_FAILED означает, что не удалось установить соединение с SOCKS-прокси для целевого хоста. Код -121 ERR_SOCKS_CONNECTION_HOST_UNREACHABLE — SOCKS-прокси не смог подключиться к целевому хосту, потому что тот недоступен.

Исходный код Chromium показывает, когда именно появляется -120 для SOCKS5. Браузер в приветствии предлагает только режим без аутентификации, и если сервер требует другой способ, например логин и пароль, соединение завершается этой ошибкой. Так же -120 бывает, когда сервер закрыл соединение во время рукопожатия, ответил не по протоколу SOCKS5 или вернул любой код ошибки, а также когда имя сайта длиннее 255 символов.

Код -121 в нынешнем коде Chromium возвращает только клиент SOCKS4. Если вы видите именно его, браузер говорит с прокси по протоколу SOCKS4, хотя порт 824 Prokso работает по SOCKS5. А если не удалось даже открыть TCP-соединение с прокси, Chrome покажет уже не SOCKS-ошибку, а ERR_PROXY_CONNECTION_FAILED.

Причины

  • SOCKS5 с логином и паролем в Chrome. Документация Chromium прямо говорит, что для SOCKSv5 Chrome не поддерживает никаких методов аутентификации. Шлюз просит логин, браузер его не предлагает, и рукопожатие останавливается.
  • Тип прокси не соответствует порту. В настройках выбран SOCKS5, а порт 823 — HTTP. Шлюз отвечает не по протоколу SOCKS5, и Chrome завершает соединение с ошибкой -120.
  • Запись socks= без схемы. По документации Chromium, в правиле socks=gw.prokso.com:824 без схемы прокси считается SOCKS4. Отсюда и -121 там, где должен был работать SOCKS5.
  • Ошибка на стороне шлюза или сайта. Если прокси не смог подключиться к сайту, он возвращает код ошибки SOCKS5, а Chrome показывает -120. Подробнее — на страницах general SOCKS server failure и connection refused.
  • Неверный тип в профиле антидетект-браузера. У профиля свои поля типа, хоста, порта, логина и пароля. Если SOCKS5 стоит на HTTP-порту или наоборот, рукопожатие не удастся так же.

Как исправить

  1. Проверьте пару тип и порт: SOCKS5 — порт 824 (новый IP на каждый запрос), HTTP — порт 823, а фиксированные порты 10000–20000 принимают оба протокола. Справка — на странице шлюза.
  2. В обычном Chrome для SOCKS5 включите доступ по IP в личном кабинете (до 5 адресов): логин тогда не нужен, и рукопожатие без аутентификации пройдёт.
  3. Если нужен вход по логину и паролю, в Chrome берите HTTP-прокси: для HTTP-прокси Chromium поддерживает схемы Basic, Digest, Negotiate и NTLM.
  4. В строке --proxy-server пишите схему явно: socks5://gw.prokso.com:824, а не socks=gw.prokso.com:824.
  5. Проверьте SOCKS5-доступ вне браузера: curl -x socks5h://ЛОГИН:ПАРОЛЬ@gw.prokso.com:824 https://prokso.com/ip. Ошибка curl (97) с текстом «User was rejected by the SOCKS5 server» означает неверный логин или пароль. Больше примеров — в инструкции curl.

Как проверить, что всё заработало

Откройте в браузере страницу проверки IP: там должен быть адрес прокси и страна, которую вы выбрали. Если вместо SOCKS-ошибки появилась ERR_PROXY_CONNECTION_FAILED, браузер не может открыть соединение с самим шлюзом: проверьте хост, порт и сеть.

Диагностика за 2 минуты

Сначала вставьте строку в проверку прокси. Если там прокси работает, причина в программе или её настройках. Если нет — проверьте строку из терминала:

curl -v -x "http://ЛОГИН:ПАРОЛЬ@gw.prokso.com:823" https://api.ipify.org
  • Строка < HTTP/1.1 407 сразу после CONNECT — отвечает прокси. Название после кода, например NO_USER, подсказывает причину.
  • Прокси ответил на CONNECT кодом 200, а дальше пришёл другой код — прокси работает, этот ответ дал сайт.
  • Никакого ответа, только тайм-аут — соединение не дошло до прокси: проверьте хост, порт и сеть.

Инструкции, где встречается эта ошибка

Вопросы и ответы

Почему SOCKS5 работает в curl и Python, а в Chrome нет?

curl и библиотеки Python умеют передавать логин и пароль SOCKS5. Chrome — нет: по документации Chromium, для SOCKSv5 он не поддерживает никаких методов аутентификации. Что такое SOCKS5 — в <a href="/ru/glossary/socks5">глоссарии</a>.

Сколько Chrome ждёт рукопожатие SOCKS?

В исходном коде Chromium тайм-аут рукопожатия SOCKS составляет 30 секунд с момента, когда соединение с прокси уже открыто. Если прокси не отвечает дольше, попытка прерывается.

Что делать, если ошибка только на одном сайте?

Тогда соединение с прокси есть, а не удаётся подключение к сайту, и шлюз возвращает код ошибки SOCKS5. Повторите запрос: на порту 824 он пойдёт через новый IP. Если сайт недоступен и без прокси, причина в самом сайте.

Резидентские $1.59, мобильные $2.50, серверные $0.65 за 1 ГБ

Регистрация за минуту, доступы сразу после оплаты.

Создать аккаунт