HTTP(S) и SOCKS5: какой протокол прокси выбрать
Объясняем различия HTTP(S)-прокси и SOCKS5, поддержку приложений, DNS и критерии выбора без лишней теории.
HTTP(S) и SOCKS5 — это два способа, которыми приложение может обратиться к прокси. Они не определяют происхождение IP: один и тот же мобильный канал может быть доступен через разные входные протоколы. Выбирать нужно тот режим, который поддерживает конкретная программа и который подходит её трафику.
Как работает HTTP(S)-прокси
HTTP-прокси понимает формат HTTP-запросов. Когда приложение открывает обычный
HTTP-адрес, оно передаёт прокси запрос к целевому URL. Для HTTPS обычно
используется метод CONNECT: прокси устанавливает TCP-туннель к указанным
серверу и порту, после чего зашифрованный TLS-трафик проходит внутри туннеля.
Обозначение «HTTP(S)-прокси» часто означает, что через HTTP-прокси можно открывать и HTTP-, и HTTPS-сайты. Это отличается от отдельного HTTPS-прокси, где TLS защищает участок от клиента до самого прокси. Наличие такого шифрования нельзя выводить только из возможности открывать HTTPS-сайты: нужно смотреть схему адреса и документацию конкретного сервиса.
HTTP(S)-режим удобен для браузеров, HTTP-клиентов, парсеров и инструментов, которые явно имеют поле «HTTP proxy».
Как работает SOCKS5
SOCKS5 не разбирает прикладной HTTP-запрос. Клиент передаёт прокси команду и
адрес назначения, а затем использует созданное соединение для данных своего
приложения. Стандарт описывает команды CONNECT, BIND и UDP ASSOCIATE, но
наличие этих возможностей в стандарте не гарантирует, что каждый сервис и
каждый клиент поддерживает их все.
SOCKS5 часто выбирают программы, которым нужен более общий TCP-прокси и у
которых есть явная поддержка SOCKS. Важная настройка — где разрешается DNS-имя:
локально или на стороне прокси. Названия вроде socks5 и socks5h в разных
инструментах могут обозначать разное поведение, поэтому нужно сверяться с
документацией конкретного клиента.
Короткое сравнение
| Вопрос | HTTP(S) | SOCKS5 |
|---|---|---|
| Подходит для браузерного HTTP/HTTPS | Обычно да | Если браузер поддерживает SOCKS |
| Понимает HTTP-запрос | Да | Нет, передаёт поток на более общем уровне |
| HTTPS-туннель | Обычно через CONNECT |
Через SOCKS-команду CONNECT |
| DNS | Зависит от клиента и режима | Зависит от клиента; может выполняться через прокси |
| UDP | Не является общим свойством HTTP-прокси | Предусмотрен стандартом, но может не поддерживаться сервисом |
| Настройка в приложениях | Часто поле HTTP proxy | Нужна явная поддержка SOCKS5 |
Как выбрать протокол
Начните не с теоретических преимуществ, а с возможностей программы:
- Если приложение предлагает только HTTP proxy, используйте HTTP(S).
- Если оно явно поддерживает SOCKS5 и работает не только с HTTP-трафиком, SOCKS5 может быть удобнее.
- Если важна обработка DNS на стороне прокси, проверьте отдельную настройку клиента и подтвердите результат тестом.
- Если сервис выдаёт разные адреса для HTTP и SOCKS5, не подменяйте один другим, даже когда порт и авторизация выглядят одинаково.
- После переключения перезапустите тестовое соединение: уже открытый поток не обязан перейти на новый протокол.
Типичные ошибки выбора
Протокол угадан по номеру порта
Распространённые номера портов — лишь соглашения. Фактический режим задаёт конфигурация сервиса. Всегда используйте вместе выданные протокол, адрес и порт.
SOCKS5 введён в поле HTTP proxy
Программа начинает отправлять HTTP-команды туда, где ожидается SOCKS- рукопожатие, или наоборот. Результатом обычно становится немедленный разрыв, истечение времени ожидания или ошибка формата ответа.
Проверен только браузер
Если браузер работает, это подтверждает его настройку, но ничего не доказывает про отдельный скрипт или приложение. У каждого клиента может быть собственная настройка подключения.
Ожидается автоматическая поддержка UDP
RFC 1928 определяет UDP ASSOCIATE, однако и прокси-сервис, и клиент должны
реализовать этот режим. Без подтверждённой поддержки рассчитывать на него
нельзя.
Безопасная проверка
Сначала откройте через прокси простой HTTPS-сайт и проверьте внешний IP. Затем проверьте именно целевое приложение. Если результат различается, сопоставьте его настройки с инструкцией по типичным ошибкам подключения.
Для браузеров полезно отдельно выяснить, использует ли он системные параметры или собственный профиль. Это разобрано в статье как настроить прокси в браузере.
В Proxy5G ориентируйтесь на протокол и реквизиты, показанные у конкретного подключения в разделе «Мои прокси». Наличие в статье двух протоколов не означает, что их можно переключать для любого выданного прокси.