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иhttpxHTTP-прокси работают из коробки, 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. Спорить о скорости смысла нет.
Типичные ошибки
- Ждать от прокси шифрования. Ни HTTP, ни SOCKS5 не защищают трафик до прокси; защищает только TLS внутри.
- Использовать
socks5://вместоsocks5h://и потом искать, откуда «утекает» DNS. - Настроить HTTP-прокси в программе, которая ходит не по HTTP, и списать её молчание на «плохой прокси».
- Выбирать протокол по скорости. Скорость определяют адрес и маршрут, и проверить их можно за минуту — см. как проверить прокси на анонимность, утечки и скорость.
- Считать элитный 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, трафик мимо прокси — не зависят от протокола.