Аутентификация в SOCKS5 выполняется не через заголовок, как в HTTP-прокси, а отдельным подсогласованием . Эта разница объясняет и то, почему сообщения об ошибках настолько неинформативны: при предложении неверного метода сервер не возвращает пояснительного текста, а отправляет один байт и закрывает соединение.
Согласование метода
Каждый шаг — это несколько байтов в одну сторону. Если согласование не удалось, сервер возвращает 0xFF либо 0x01 0x01 и закрывает соединение — пояснительного текста ошибки нет.
Поддерживаемые методы
| Код | Метод | Использование |
|---|---|---|
0x00 | Аутентификация не требуется | Серверы, защищённые IP whitelist |
0x01 | GSSAPI | Корпоративные среды Kerberos (редко) |
0x02 | Имя пользователя / пароль | Самый распространённый коммерческий метод |
0xFF | Нет подходящего метода | Ответ сервера с отказом |
Имя пользователя и пароль передаются открытым текстом . Сам по себе SOCKS5 не выполняет шифрования. Если вы используете его в ненадёжной сети, ваши учётные данные могут быть прочитаны; в таком сценарии безопаснее работать через SSH-туннель.
Часто встречающиеся проблемы
Строка про браузер важна: многие браузеры не поддерживают аутентификацию SOCKS5 через интерфейс. В этом случае нужен локальный промежуточный прокси, передающий учётные данные.
Проблема с браузером и её решение
Поддержка аутентификации SOCKS5 в Chrome и Firefox ограничена или отсутствует вовсе. Есть два практичных решения:
Перейдите на IP whitelist
Если провайдер это поддерживает — самое чистое решение: учётные данные вообще не передаются, браузер работает без проблем.
Настройте локальный промежуточный прокси
Запустите на машине небольшой прокси, хранящий учётные данные, и укажите его 127.0.0.1 в браузере. Метод описан в нашей статье о цепочках — загляните туда.
Настройка в разрезе библиотек
Если в вашем пароле есть @, : или / , используйте отдельное поле вместо формата URL; иначе потребуется процентное кодирование.
Сравнение с whitelist
В SOCKS5 также действуют две модели, и критерии выбора те же, что и у HTTP-прокси. За подробным сравнением к нашей статье о методах аутентификации можете обратиться. Единственное отличие, специфичное для SOCKS5, — проблема поддержки браузерами: whitelist полностью её устраняет.
Проверка
Намеренная проверка с неверным паролем упрощает распознавание сообщения об ошибке, когда у вас возникнет реальная проблема.
Резюме
Аутентификация SOCKS5 выполняется отдельным подсогласованием, и сообщения об ошибках неинформативны. Две самые частые проблемы — клиент вообще не предлагает метод аутентификации и браузеры не поддерживают этот метод. Поскольку учётные данные передаются открытым текстом, будьте внимательны в ненадёжных сетях. Whitelist — самое чистое решение, устраняющее и проблему с браузером, и риск утечки. Чтобы протестировать свои адреса, Заголовки прокси можете использовать.