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 и авторизацией по логину и паролю.