HTTP-прокси и SOCKS5 решают одну задачу — подменить ваш адрес перед сервером, — но делают это на разных уровнях сетевого стека, и из этого вытекает всё остальное: какой трафик они пропускают, что видят и могут изменить, как ведут себя с DNS и UDP и с какими программами вообще совместимы. Скорость, вопреки распространённому мнению, здесь почти ни при чём. Ниже — разбор обоих протоколов, таблица отличий и правило выбора, которое закрывает девять случаев из десяти.

Коротко

  • HTTP-прокси понимает HTTP. Он читает запрос, знает, куда вы идёте, может добавить заголовки, закешировать ответ или запретить адрес. HTTPS он пропускает вслепую через команду CONNECT. Не-HTTP трафик — не его дело.
  • SOCKS5 ничего не понимает и не хочет понимать. После короткого рукопожатия он просто пересылает байты в обе стороны: TCP любого протокола и, при необходимости, UDP. Внутри может быть что угодно — сайт, почта, Telegram, игра, торрент.
  • Ни тот, ни другой не шифрует трафик сам по себе. Защита данных — забота протокола внутри (HTTPS, TLS), а не прокси.

На каком уровне работает каждый

HTTP-прокси живёт на прикладном уровне. Клиент отправляет ему обычный HTTP-запрос, только с полным адресом в первой строке (GET http://example.com/page HTTP/1.1), прокси сам открывает соединение с сервером, получает ответ и отдаёт его клиенту. Всё содержимое проходит через него открытым текстом, и он вправе его изменить.

Для HTTPS схема другая: клиент просит прокси установить туннель командой CONNECT example.com:443, прокси соединяет два сокета и дальше только перекладывает зашифрованные байты. Он видит имя хоста и порт, но не путь, не заголовки и не тело запроса.

SOCKS5 (RFC 1928) стоит ниже — между транспортом и приложением. Клиент договаривается с прокси о способе аутентификации, называет адрес назначения (IPv4, IPv6 или доменное имя) и порт, прокси открывает соединение и с этого момента становится прозрачной трубой. Он не знает, какой протокол внутри, и поэтому работает с любым. Если нужно освежить сами основы, начните со статьи о том, что такое прокси-сервер.

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

Что он умеет, потому что понимает протокол

  • Кеширование. Повторные запросы к одному ресурсу могут не доходить до сервера — так работают корпоративные и провайдерские прокси.
  • Фильтрация по URL. Прокси видит адрес и может запретить его, вырезать трекеры или перенаправить.
  • Изменение заголовков. Он может добавить Via, X-Forwarded-For или Forwarded (RFC 7239) — и тем самым выдать ваш реальный адрес. Может и убрать лишнее.
  • Аутентификация. Логин и пароль передаются заголовком Proxy-Authorization, чаще всего в схеме Basic — то есть в кодировке Base64, без шифрования. По незащищённому каналу их видно.

Что он не умеет

Всё, что не HTTP. Почтовые протоколы, SSH, игровые серверы, торрент-клиенты, VoIP либо не работают через HTTP-прокси вовсе, либо требуют, чтобы программа умела заворачивать соединение в CONNECT, а прокси разрешал такие туннели на произвольные порты. Многие прокси разрешают CONNECT только на порт 443.

Три степени анонимности

Из-за заголовков HTTP-прокси традиционно делят на три класса. Прозрачный передаёт ваш реальный IP в X-Forwarded-For и честно сообщает о себе в Via. Анонимный адрес скрывает, но заголовки о прокси оставляет — сервер понимает, что перед ним посредник. Элитный не добавляет ничего и выглядит как обычный клиент. У SOCKS5 этой классификации нет: он не имеет доступа к заголовкам и ничего не добавляет по определению.

Как устроен SOCKS5

Рукопожатие

Соединение начинается с того, что клиент перечисляет поддерживаемые методы аутентификации, а сервер выбирает один: без аутентификации, по логину и паролю (RFC 1929) или GSS-API. Затем клиент отправляет запрос с командой, типом адреса и портом. Команды три: CONNECT — обычное исходящее TCP-соединение, BIND — принять входящее соединение (нужно, например, активному FTP), UDP ASSOCIATE — открыть ретрансляцию UDP-датаграмм.

Удалённый DNS

Ключевое отличие от SOCKS4: адрес назначения можно передать доменным именем, и тогда имя разрешает прокси, а не ваш компьютер. В curl и Python это различие вынесено в схему URL: socks5:// резолвит имя локально, socks5h:// — на стороне прокси. Первый вариант оставляет DNS-запросы у вашего провайдера, второй уносит их вместе с трафиком. Для задач, где важно не светить адрес, нужен именно socks5h.

UDP

Через UDP ASSOCIATE уходит то, чему TCP не подходит: голос и видео в мессенджерах, DNS, часть игровых протоколов, QUIC. На практике UDP через SOCKS5 поддерживают не все серверы и не все клиенты, поэтому перед покупкой прокси под такую задачу это надо проверять отдельно.

Пароль без шифрования

Логин и пароль в SOCKS5 (метод RFC 1929) передаются открытым текстом, как и в HTTP Basic. Сам канал до прокси не защищён ни там, ни там; защищённым трафик делает только TLS внутри соединения. Если провайдер предлагает авторизацию по IP, это не менее надёжно и не оставляет пароль в логах программ.

Главные отличия в одной таблице

КритерийHTTP-проксиSOCKS5
УровеньПрикладной (понимает HTTP)Сеансовый (передаёт байты)
ТрафикHTTP, HTTPS через CONNECTЛюбой TCP, опционально UDP
Видит содержимоеДа для HTTP, только хост для HTTPSТолько адрес назначения
Может изменить запросДа (заголовки, кеш, фильтры)Нет
Разрешение DNSНа проксиНа прокси (socks5h) или локально (socks5)
ШифрованиеНет (только у HTTPS внутри)Нет (только у протокола внутри)
АутентификацияProxy-Authorization, BasicЛогин и пароль (RFC 1929), GSS-API, без аутентификации
Поддержка в программахПочти вездеШирокая, но не повсеместная
Накладные расходыРазбор заголовковМинимальные

Скорость: почему разница не там, где её ищут

SOCKS5 не разбирает заголовки и не буферизует ответы, поэтому теоретически экономит микросекунды на каждом запросе. На фоне сетевой задержки до прокси и от прокси до сервера это неразличимо. Реальную скорость определяют четыре вещи: расстояние до прокси-сервера и от него до цели, тип IP-адреса (мобильные и резидентные каналы медленнее датацентровых — подробнее в статье о типах прокси), загруженность конкретного сервера и число соединений, которые вы открываете параллельно. Протокола в этом списке нет.

Единственный случай, когда HTTP-прокси заметно быстрее, — кеширующий прокси на повторяющемся контенте. Единственный случай, когда SOCKS5 заметно быстрее, — трафик, который через HTTP-прокси вообще не пошёл бы.

Анонимность и утечки

Утечка адреса через прокси происходит не «из-за протокола», а из-за конкретных механизмов, и у каждого своя причина.

  • Заголовки. Прозрачный HTTP-прокси отдаёт ваш IP в X-Forwarded-For. Лечится выбором элитного прокси. У SOCKS5 этого канала утечки нет.
  • DNS. Если имя разрешается локально, ваш провайдер видит, куда вы ходите. HTTP-прокси и socks5h резолвят на своей стороне; socks5 — нет.
  • WebRTC. Браузер может раскрыть локальный и внешний адрес через STUN мимо любого прокси. Это свойство браузера, а не прокси; закрывается настройками или расширением.
  • Трафик мимо прокси. Прокси настраивается на приложение. Всё, что вы не настроили — системные обновления, другой браузер, мессенджер, — уходит напрямую. Если нужно закрыть устройство целиком, это задача VPN, см. прокси против VPN и Tor.

Совместимость с программами

  • Браузеры. Chrome и Edge берут прокси из системных настроек и понимают оба типа; Firefox имеет собственные настройки и умеет «проксировать DNS при SOCKS5» отдельной галочкой.
  • curl. curl -x http://user:pass@host:port для HTTP, curl -x socks5h://user:pass@host:port для SOCKS5 с удалённым DNS.
  • Python. В requests и httpx HTTP-прокси работают из коробки, SOCKS5 — после установки дополнительного пакета; схема socks5h:// так же переключает резолвинг на прокси.
  • Telegram, Discord, торрент-клиенты, игры. Как правило, только SOCKS5: их трафик не HTTP.
  • Антидетект-браузеры и парсеры. Поддерживают оба; провайдеры мобильных и резидентных прокси часто отдают один и тот же порт в обоих протоколах.
  • SSH. ssh -D 1080 user@server поднимает локальный SOCKS5-прокси через любой сервер, к которому у вас есть доступ, — удобный способ проверить, как программа ведёт себя с SOCKS5.

Когда что выбирать

ЗадачаВыборПочему
Браузер, работа с сайтамиЛюбой; HTTP чащеВесь трафик — HTTP(S), поддержка везде
Парсинг через HTTP-библиотекуHTTP или socks5hГлавное — резолвить DNS на прокси и не слать лишних заголовков
Мессенджеры, игры, торренты, почтаSOCKS5Не-HTTP трафик, иногда UDP
Много аккаунтов в антидетект-браузереЛюбой; смотреть на IP, не на протоколАнтифрод оценивает адрес и отпечаток, а не способ подключения
Корпоративная сеть, контроль и кешHTTPНужны фильтрация и логирование по URL
Полная приватность устройстваНи тот, ни другойЭто задача VPN или Tor
Правило: если у программы есть поле «HTTP-прокси» и она ходит только по HTTP(S) — берите HTTP. Если программа не про веб или у неё есть только «SOCKS5» — берите SOCKS5 с удалённым DNS. Спорить о скорости смысла нет.

Типичные ошибки

  1. Ждать от прокси шифрования. Ни HTTP, ни SOCKS5 не защищают трафик до прокси; защищает только TLS внутри.
  2. Использовать socks5:// вместо socks5h:// и потом искать, откуда «утекает» DNS.
  3. Настроить HTTP-прокси в программе, которая ходит не по HTTP, и списать её молчание на «плохой прокси».
  4. Выбирать протокол по скорости. Скорость определяют адрес и маршрут, и проверить их можно за минуту — см. как проверить прокси на анонимность, утечки и скорость.
  5. Считать элитный HTTP-прокси «анонимнее» SOCKS5. Оба не раскрывают адрес; разница только в том, что SOCKS5 не имеет и технической возможности его добавить.

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

Что быстрее — SOCKS5 или HTTP-прокси?

На одном и том же сервере разница неизмерима на фоне сетевой задержки. Скорость задают тип IP, расстояние и нагрузка на сервер, а не протокол.

Шифрует ли SOCKS5 трафик?

Нет. SOCKS5 передаёт байты как есть; логин и пароль тоже идут открытым текстом. Защищённым трафик делает TLS внутри соединения, например HTTPS.

Можно ли использовать HTTP-прокси для Telegram или торрентов?

Как правило, нет: их трафик не HTTP, а туннель через CONNECT на произвольные порты большинство HTTP-прокси запрещает. Для таких программ нужен SOCKS5.

Чем socks5h отличается от socks5?

Буква h означает, что доменное имя разрешает прокси-сервер. Без неё DNS-запрос уходит с вашего компьютера через вашего провайдера, и адрес назначения виден ему.

Какой протокол анонимнее?

Элитный HTTP-прокси и SOCKS5 одинаково не раскрывают ваш адрес. Прозрачный HTTP-прокси раскрывает его через заголовки; у SOCKS5 такого механизма нет. Остальные утечки — DNS, WebRTC, трафик мимо прокси — не зависят от протокола.