Все локации активны · 99.99% uptime
SOCKS5

Как работает аутентификация в SOCKS5?

Аутентификация в SOCKS5 выполняется не через заголовок, как в HTTP-прокси, а отдельным подсогласованием . Эта разница объясняет и то, почему сообщения об ошибках настолько неинформативны: при предложении неверного метода сервер не возвращает пояснительного текста, а отправляет один байт и закрывает соединение.

Согласование метода

СХЕМАСогласование аутентификации SOCKS5
СОГЛАСОВАНИЕCONNECT ornek.com:443 HTTP/1.1Сервер SOCKS50x05 0x02 0x00 0x02 (версия + 2 метода)0x05 0x02 (выбран логин/пароль)0x01 len user len passПодсогласование RFC 19290x01 0x00 (успешно)CONNECT цель:порт0x05 0x00 (соединение установлено)

Каждый шаг — это несколько байтов в одну сторону. Если согласование не удалось, сервер возвращает 0xFF либо 0x01 0x01 и закрывает соединение — пояснительного текста ошибки нет.

Поддерживаемые методы

КодМетодИспользование
0x00Аутентификация не требуетсяСерверы, защищённые IP whitelist
0x01GSSAPIКорпоративные среды Kerberos (редко)
0x02Имя пользователя / парольСамый распространённый коммерческий метод
0xFFНет подходящего методаОтвет сервера с отказом
Безопасность

Имя пользователя и пароль передаются открытым текстом . Сам по себе SOCKS5 не выполняет шифрования. Если вы используете его в ненадёжной сети, ваши учётные данные могут быть прочитаны; в таком сценарии безопаснее работать через SSH-туннель.

Часто встречающиеся проблемы

СХЕМАОшибки аутентификации SOCKS5
407 Proxy AuthenticationКОД / ПРИЗНАКВОЗМОЖНАЯ ПРИЧИНАРЕШЕНИЕСоединение закрылось без сообщенийКлиент не предлагает метод 0x02Используйте клиент или библиотеку с поддержкой аутентификацииВернулось 0x01 0x01Неверное имя пользователя или парольСкопируйте учётные данные из панели зановоУчётные данные не запрашиваются, ноотклоняетсяПодключение идёт не с адреса из IP whitelistДобавьте свой публичный IP в панелиИскажение спецсимволовНезакодированный символ внутри URLЗапишите пароль с процентным кодированием либо используйте отдельное полеиспользуйтеБраузер не запрашивает парольБраузер не поддерживает аутентификацию SOCKSИспользуйте локальный промежуточный прокси

Строка про браузер важна: многие браузеры не поддерживают аутентификацию SOCKS5 через интерфейс. В этом случае нужен локальный промежуточный прокси, передающий учётные данные.

Проблема с браузером и её решение

Поддержка аутентификации SOCKS5 в Chrome и Firefox ограничена или отсутствует вовсе. Есть два практичных решения:

01

Перейдите на IP whitelist

Если провайдер это поддерживает — самое чистое решение: учётные данные вообще не передаются, браузер работает без проблем.

02

Настройте локальный промежуточный прокси

Запустите на машине небольшой прокси, хранящий учётные данные, и укажите его 127.0.0.1 в браузере. Метод описан в нашей статье о цепочках — загляните туда.

Настройка в разрезе библиотек

СХЕМАПравильная передача имени пользователя и пароля
Аутентификация SOCKS5 в разных языках01# curl — отдельной опцией (без проблем с URL-кодированием)02curl --socks5-hostname proxy.example.com:1080 \\03 --proxy-user "kullanici:sifre" https://example.com0405# Python — requests[socks]06proxies = {"https": "socks5h://kullanici:sifre@proxy.example.com:1080"}07r = requests.get("https://example.com", proxies=proxies, timeout=25)0809# Python — httpx10import httpx11with httpx.Client(proxy="socks5://kullanici:sifre@proxy.example.com:1080") as c:12 r = c.get("https://example.com")1314# Node.js — socks-proxy-agent15import { SocksProxyAgent } from "socks-proxy-agent";16const agent = new SocksProxyAgent("socks5h://kullanici:sifre@proxy.example.com:1080");

Если в вашем пароле есть @, : или / , используйте отдельное поле вместо формата URL; иначе потребуется процентное кодирование.

Сравнение с whitelist

В SOCKS5 также действуют две модели, и критерии выбора те же, что и у HTTP-прокси. За подробным сравнением к нашей статье о методах аутентификации можете обратиться. Единственное отличие, специфичное для SOCKS5, — проблема поддержки браузерами: whitelist полностью её устраняет.

Проверка

СХЕМАКак убедиться, что аутентификация работает
# подробный вывод curl — посмотрите строки CONNECT01# Следить за согласованием с подробным выводом02curl -v --socks5-hostname proxy.example.com:1080 \\03 --proxy-user "kullanici:sifre" https://example.com 2>&1 | head -200405# При успехе: строка вида "SOCKS5 request granted"06# При неудаче: "Unable to receive initial SOCKS5 response" или07# "User was rejected by the SOCKS5 server"0809# Проверьте с заведомо неверным паролем и посмотрите на ошибку (чтобы изучить поведение)10curl -v --socks5-hostname proxy.example.com:1080 \\11 --proxy-user "kullanici:yanlis" https://example.com 2>&1 | grep -i socks

Намеренная проверка с неверным паролем упрощает распознавание сообщения об ошибке, когда у вас возникнет реальная проблема.

Резюме

Аутентификация SOCKS5 выполняется отдельным подсогласованием, и сообщения об ошибках неинформативны. Две самые частые проблемы — клиент вообще не предлагает метод аутентификации и браузеры не поддерживают этот метод. Поскольку учётные данные передаются открытым текстом, будьте внимательны в ненадёжных сетях. Whitelist — самое чистое решение, устраняющее и проблему с браузером, и риск утечки. Чтобы протестировать свои адреса, Заголовки прокси можете использовать.

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

01Передаётся ли пароль SOCKS5 в зашифрованном виде?

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

02Почему Chrome запрашивает или не запрашивает пароль SOCKS5?

Поддержка аутентификации SOCKS5 в Chrome ограничена и различается от версии к версии. Самое надёжное решение — использовать IP whitelist либо запустить локальный промежуточный прокси, который передаёт учётные данные.

03Соединение сразу закрывается, сообщения об ошибке нет — почему?

Возможно, сервер вернул 0xFF (нет подходящего метода) и закрыл соединение. Это означает, что ваш клиент вообще не предложил метод «логин/пароль».

04В пароле есть спецсимволы, как их записать?

Вместо формата URL используйте отдельное поле учётных данных в клиенте (в curl — --proxy-user). Если иначе нельзя, применяйте процентное кодирование: вместо @ — 40%, вместо : — 3%A.

05Можно ли использовать IP whitelist в SOCKS5?

Да, и в большинстве сценариев это практичнее. Сервер выбирает метод 0x00 (аутентификация не требуется), на стороне клиента не нужна никакая настройка учётных данных, а проблема с браузером исчезает.

Связанные статьи и страницы

СЛЕДУЮЩИЙ ШАГ

Усильте свою прокси-инфраструктуру уже сегодня.

Начните с платным тарифом за считанные минуты или сначала попробуйте наш бесплатный список прокси.

FREEPROXY.TR

Ищете бесплатные прокси — вы попали по адресу

Комплексная прокси-платформа, где можно посмотреть актуальные адреса бесплатных прокси, сравнить типы HTTP и SOCKS и проверить свои прокси-подключения бесплатными инструментами.