HTTP или SOCKS5 прокси: в чём разница и что выбрать

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

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

HTTP-прокси понимает протокол HTTP. Когда программа отправляет обычный HTTP-запрос, прокси получает его целиком, пересылает на сайт и возвращает ответ.

С HTTPS всё иначе. Клиент отправляет прокси команду CONNECT example.com:443, прокси открывает TCP-соединение до сайта, и дальше через него идёт зашифрованный трафик. Содержимое запросов прокси при этом не видит — он просто передаёт байты. Поэтому «HTTP-прокси» на практике отлично работает и с HTTPS-сайтами; часто такой тип называют HTTP(S).

Сильные стороны: - поддерживается почти везде: браузеры, системные настройки, библиотеки, парсеры, SEO-софт; - привычная авторизация через заголовок Proxy-Authorization; - понятные ошибки: например, при неверном пароле прокси отвечает кодом 407.

Как работает SOCKS5

SOCKS5 работает на уровне ниже: он не разбирает HTTP, а просто устанавливает соединение до нужного хоста и порта и пересылает данные в обе стороны. Ему всё равно, что внутри — веб-страница, почтовый протокол или трафик мессенджера.

Сильные стороны: - подходит для любых TCP-приложений, а не только для веба; - может передавать имя домена на сторону прокси, и тогда DNS-запрос выполняется там, а не на вашем компьютере; - протокол поддерживает и UDP, но на практике это зависит от прокси-сервера и клиента, поэтому для UDP-задач поддержку стоит уточнять заранее.

Сравнение на практике

HTTP(S) SOCKS5
Сайты по HTTP и HTTPS да да
Другие TCP-протоколы нет (только через CONNECT, если клиент умеет) да
Поддержка в программах почти везде в большинстве, но не везде
DNS на стороне прокси при HTTPS через CONNECT — да да, если клиент передаёт домен
Авторизация логин/пароль да да

Разницы в скорости «вообще» нет: она определяется каналом и сервером прокси, а не протоколом.

Авторизация по логину и паролю

Оба протокола поддерживают доступ по логину и паролю. В Vynx Proxy авторизация именно такая, поэтому привязывать IP вашего компьютера не нужно — прокси будет работать с любого устройства, где вы укажете данные.

Строка подключения обычно выглядит так:

http://user:pass@203.0.113.10:8000
socks5://user:pass@203.0.113.10:8000

или в формате списка:

203.0.113.10:8000:user:pass

В личном кабинете строки можно скопировать сразу в нужном виде или скачать списком в форматах ip:port:login:password и protocol://login:password@ip:port.

Где бывают сложности с авторизацией

  • Браузеры в штатных настройках. Обычные браузеры часто не умеют передавать логин и пароль для SOCKS5. Для HTTP-прокси браузер покажет окно ввода пароля, а для SOCKS5 подключение может просто не заработать. Решение — HTTP-протокол, расширение для прокси или антидетект-браузер.
  • Спецсимволы в пароле. Если в пароле есть @, : или /, в URL-формате их нужно кодировать (например, @ → %40), иначе программа неправильно разберёт строку.
  • Перепутан порт или протокол. SOCKS5-клиент, подключённый к HTTP-порту (и наоборот), выдаст ошибку соединения или «пустой ответ». Подробный разбор таких ситуаций — в чек-листе «Прокси не работает».

Проверка через curl

Проще всего убедиться, что прокси работает, командой в терминале:

# HTTP(S)-прокси
curl -x http://user:pass@203.0.113.10:8000 https://api.ipify.org

# SOCKS5, DNS выполняется на стороне прокси
curl -x socks5h://user:pass@203.0.113.10:8000 https://api.ipify.org

Обратите внимание на socks5h: буква h означает, что имя домена разрешается на прокси. С обычным socks5 curl сначала сам выполнит DNS-запрос на вашем компьютере.

В Python библиотека requests работает с SOCKS5 только после установки дополнительной зависимости:

pip install "requests[socks]"
import requests

proxies = {
    "http": "socks5h://user:pass@203.0.113.10:8000",
    "https": "socks5h://user:pass@203.0.113.10:8000",
}
print(requests.get("https://api.ipify.org", proxies=proxies, timeout=15).text)

Что выбрать под задачу

Выбирайте HTTP(S), если:

  • работаете с сайтами через браузер, парсер или SEO-программу;
  • настраиваете прокси в системе или в программе, где SOCKS5 нет в списке;
  • хотите самый совместимый вариант без сюрпризов.

Выбирайте SOCKS5, если:

  • нужно проксировать не только веб: мессенджеры, почтовые клиенты, игровые или собственные TCP-приложения;
  • важно, чтобы DNS-запросы шли через прокси, а не через вашего провайдера;
  • программа прямо рекомендует SOCKS5 (так бывает в некоторых антидетект-браузерах и ботах).

Если сомневаетесь, начните с HTTP: он поддерживается почти везде. Пошаговую настройку в популярных программах смотрите на странице /setup, а про подключение в антидетектах — в статье о настройке прокси в антидетект-браузере.

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

Можно ли использовать один и тот же прокси и по HTTP, и по SOCKS5? Это зависит от того, какие порты и протоколы выданы. Смотрите данные в личном кабинете и используйте протокол, указанный для конкретного порта.

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

Влияет ли протокол на доверие сайтов? Почти нет. Сайт видит IP и его принадлежность, а не то, по какому протоколу вы подключились к прокси. Доверие зависит от типа адреса — подробнее в разделе типов прокси.

Коротко

  • HTTP(S)-прокси работает с любыми сайтами, включая HTTPS, и поддерживается почти везде.
  • SOCKS5 универсальнее: подходит для любых TCP-приложений и умеет выполнять DNS на стороне прокси.
  • Оба протокола поддерживают авторизацию по логину и паролю.
  • Обычные браузеры часто не поддерживают пароль для SOCKS5 — в таком случае используйте HTTP.
  • Проверить работу проще всего командой curl -x.

Если нужен недорогой универсальный вариант для старта, посмотрите серверные IPv4 прокси — они выдаются с поддержкой HTTP и SOCKS5 и авторизацией по логину и паролю.