Главное различие между SOCKS5- и HTTP-прокси — в том, что они могут передавать. HTTP-прокси работает с HTTP и туннелирует TCP-соединения методом CONNECT. SOCKS5-прокси работает на уровень ниже: он передает любое TCP-соединение и умеет ретранслировать UDP, который нужен звонкам, играм и QUIC. Ни один из них сам по себе не шифрует трафик.

В этом сравнении подробно разберем, что выбрать — SOCKS5 или HTTP прокси: UDP, DNS и socks5h, шифрование с HTTPS-прокси и SOCKS5 over TLS, скорость и рекомендации по выбору.

SOCKS5 и HTTP прокси: краткое сравнение

HTTP-прокси SOCKS5-прокси
Стандарт HTTP CONNECT (RFC 9110) RFC 1928
TCP Да Да
UDP Нет Да, если сервер разрешает
Кто разрешает доменные имена Всегда прокси Ваше устройство или прокси (socks5h)
Аутентификация Имя пользователя и пароль (Basic) Имя пользователя и пароль (RFC 1929)
Шифрование Нет; HTTPS-прокси добавляет TLS Нет; SOCKS5 over TLS добавляет TLS для TCP
Может читать обычные HTTP-запросы Да, в режиме пересылки Нет
Типичные порты 8080, 3128 1080
Встроен в Настройки iOS Да, для отдельной сети Wi-Fi Нет

Как работает HTTP-прокси

HTTP-прокси понимает веб-запросы. Он работает двумя способами:

  • Пересылка. Для обычных страниц http:// браузер отправляет весь запрос прокси, а тот сам загружает страницу. Прокси видит все и может что угодно изменить.
  • Туннелирование. Для всего остального, включая любой HTTPS-сайт, клиент отправляет запрос CONNECT, и прокси открывает простой TCP-туннель:
CONNECT example.org:443 HTTP/1.1
Host: example.org:443
Proxy-Authorization: Basic YWxpY2U6czNjcmV0

После того как прокси ответит 200, клиент устанавливает через туннель TLS с сайтом. Прокси видит только имя и порт назначения. Обратите внимание: строка Proxy-Authorization — это просто alice:s3cret в Base64, так что при обычном HTTP-прокси ваш пароль может прочитать любой на пути трафика.

Как работает SOCKS5-прокси

SOCKS5 — небольшой двоичный протокол, которому все равно, что вы через него передаете. Клиент приветствует сервер, договаривается о способе аутентификации, а затем отправляет одну из трех команд:

  • CONNECT открывает TCP-соединение с адресом IPv4 или IPv6 либо с доменным именем.
  • UDP ASSOCIATE настраивает ретрансляцию UDP на отдельном порту.
  • BIND принимает входящее соединение; нужна немногим старым протоколам, например FTP в активном режиме.

SOCKS5 никогда не заглядывает внутрь трафика, поэтому подходит для любых приложений, а не только для браузеров.

UDP: главное практическое отличие

UDP используют голосовые и видеозвонки, многие онлайн-игры, DNS и QUIC — транспорт, на котором работает HTTP/3. HTTP-прокси передают только TCP. Есть и более новый стандарт CONNECT-UDP, но его поддерживают немногие прокси.

SOCKS5 умеет ретранслировать UDP, но только если это включено на сервере, а брандмауэр пропускает UDP-порт. Многие провайдеры этого не включают, так что проверьте заранее, прежде чем на это рассчитывать.

Когда UDP не может пройти через прокси, происходит одно из двух:

  • Приложение переключается на TCP. Браузеры обычно переходят с QUIC на HTTP/2, так что сайты продолжают работать.
  • UDP-трафик идет напрямую или не проходит вовсе. Прямой UDP использует ваш настоящий IP-адрес, что важно, если вы пользуетесь прокси ради приватности.

DNS: удаленное разрешение имен и socks5h

Прежде чем подключиться к example.org, кто-то должен узнать его IP-адрес.

  • HTTP-прокси всегда получает имя в запросе CONNECT и разрешает его сам.
  • Клиент SOCKS5 может либо разрешить имя локально и отправить IP, либо отправить имя и поручить его разрешение серверу. Второй способ называется удаленным DNS, и инструменты вроде curl записывают его как socks5h://.

Обычно нужен именно удаленный DNS. Ваша локальная сеть не видит, какие имена вы запрашиваете, а ответы соответствуют местоположению прокси, что важно для сайтов с региональными ограничениями. Potatso для TCP-соединений всегда отправляет имя, поэтому ссылки socks5:// и socks5h:// работают одинаково. См. справку по SOCKS5.

Шифрование: HTTPS-прокси и SOCKS5 over TLS

Обычные HTTP- и SOCKS5-прокси передают все между вами и прокси в открытом виде, включая пароль от прокси и имена сайтов, которые вы посещаете. HTTPS-сайты по-прежнему зашифрованы от начала до конца, а вот трафик по обычному HTTP — нет.

Два варианта добавляют TLS между вами и прокси:

  • HTTPS-прокси — это HTTP-прокси, к которому вы подключаетесь по TLS. Зашифровано все, включая запрос CONNECT и пароль. См. справку по HTTP и HTTPS.
  • SOCKS5 over TLS оборачивает соединение SOCKS5 в TLS. TCP шифруется, но UDP протокол SOCKS5 по-прежнему отправляет вне TLS-соединения, так что UDP доходит до сервера незашифрованным.

Для любого, кто анализирует трафик, оба варианта все равно выглядят как прокси. Если нужен трафик, который сложнее распознать, обратите внимание на протоколы, созданные для этого, например Shadowsocks или Trojan.

Скорость

Когда соединение открыто, оба протокола почти ничего не добавляют: несколько байтов на соединение, а дальше данные идут без изменений. Рукопожатие SOCKS5 чуть компактнее, а HTTP-прокси может добавить один-два заголовка. На практике скорость гораздо больше зависит от расстояния до сервера, его нагрузки и пропускной способности, чем от протокола. Добавление TLS стоит одного лишнего рукопожатия на каждое соединение.

Что выбрать?

  • Выбирайте SOCKS5, если хотите пустить через прокси все устройство или нужен UDP для звонков, игр или QUIC. Он также лучше подходит для приложений, которые не являются браузерами.
  • Выбирайте HTTP, если вы только просматриваете сайты, провайдер предлагает лишь HTTP или вы хотите использовать встроенную настройку прокси для Wi-Fi в iOS, которая принимает только HTTP.
  • Выбирайте вариант с TLS (HTTPS-прокси или SOCKS5 over TLS), когда путь до прокси проходит через сети, которым вы не доверяете, например через общественный Wi-Fi.
  • Предлагают оба с одними учетными данными? Многие провайдеры резидентных и серверных прокси дают порт HTTP и порт SOCKS5. Выбирайте SOCKS5, а HTTP оставьте как запасной вариант.

SOCKS5 и HTTP прокси на iPhone

В iOS есть только настройка HTTP-прокси для отдельной сети Wi-Fi, а для SOCKS5 и мобильного интернета ничего нет. Potatso, бесплатный прокси-клиент для iPhone и iPad, поддерживает SOCKS5, SOCKS5 over TLS, HTTP- и HTTPS-прокси для всего устройства в любой сети. Инструкция: Как настроить SOCKS5 прокси на iPhone. Чтобы сравнить их с зашифрованными протоколами, прочитайте Сравнение протоколов прокси.

Частые вопросы

SOCKS5 быстрее, чем HTTP-прокси?
Обычно разницы не заметно. Когда соединение открыто, оба добавляют совсем немного накладных расходов. Расположение сервера, его нагрузка и пропускная способность значат гораздо больше, чем выбор между этими двумя протоколами.
Шифрует ли SOCKS5-прокси мой трафик?
Нет. Обычные SOCKS5- и HTTP-прокси ничего не шифруют, включая пароль от прокси. HTTPS-сайты остаются зашифрованными от начала до конца, но чтобы защитить само соединение с прокси, используйте SOCKS5 over TLS, HTTPS-прокси или зашифрованный протокол, например Shadowsocks или Trojan.
Что такое socks5h?
socks5h означает, что доменное имя сайта разрешает прокси-сервер, а не ваше устройство. Инструменты вроде curl используют для этого схему socks5h://. Так DNS-запросы не попадают в вашу локальную сеть, а ответы соответствуют местоположению прокси.
Может ли HTTP-прокси работать с HTTPS-сайтами?
Да. Клиент просит прокси открыть туннель запросом HTTP CONNECT, а затем устанавливает через него TLS с сайтом. Прокси видит имя сайта и порт, но не страницы и не данные.
Какой тип прокси поддерживает UDP?
SOCKS5 — с помощью команды UDP ASSOCIATE, если она включена на сервере. HTTP-прокси передают только TCP, поэтому голосовые звонки, многие игры и QUIC через них не работают.

Другие языки: English · 简体中文 · 繁體中文 · 日本語