Что такое proxy-протоколы
Когда вы подключаетесь через proxy-сервер, протокол, который ваш клиент использует для связи с proxy, определяет, какой трафик он может обрабатывать, как он работает с шифрованием и сколько накладных расходов добавляет. Два основных протокола — HTTP(S) и SOCKS5.
Выбор правильного протокола влияет на производительность, совместимость и безопасность вашего приложения. Данное руководство разбирает оба протокола, сравнивает их и показывает, когда использовать каждый из них.
Как работают HTTP proxy
HTTP proxy разработан специально для веб-трафика. Когда ваш клиент отправляет запрос через HTTP proxy, proxy считывает HTTP-заголовки, определяет целевой URL и пересылает запрос на целевой сервер. Для HTTPS-трафика клиент отправляет метод CONNECT proxy-серверу, который затем устанавливает TCP-туннель до целевого сервера — зашифрованный TLS-трафик проходит через туннель без инспекции со стороны proxy.
Основные характеристики HTTP proxy
- Осведомлённость на уровне приложения: proxy может читать, модифицировать и кешировать HTTP-заголовки и контент
- Внедрение заголовков: HTTP proxy могут добавлять заголовки вроде
X-Forwarded-For, хотя качественные провайдеры удаляют их для анонимности - Переиспользование соединений: HTTP/1.1 keep-alive и мультиплексирование HTTP/2 снижают накладные расходы на соединения
- Встроенная аутентификация: аутентификация по логину/паролю через заголовок
Proxy-Authorization - Широкая поддержка: каждый HTTP-клиент, браузер и библиотека поддерживают HTTP proxy нативно
# HTTP proxy с curl
curl -x http://USERNAME:PASSWORD@gate.proxyhat.com:8080 https://httpbin.org/ip
# Явный CONNECT-туннель для HTTPS
curl --proxy http://USERNAME:PASSWORD@gate.proxyhat.com:8080 https://httpbin.org/ip
Как работают SOCKS5 proxy
SOCKS5 (Socket Secure версии 5) работает на транспортном уровне — ниже HTTP. Он не интерпретирует проходящий через него трафик. Вместо этого он устанавливает TCP- (или UDP-) соединение с целевым сервером и ретранслирует «сырые» байты в обоих направлениях. Это делает SOCKS5 протоколо-независимым: он может проксировать HTTP, HTTPS, FTP, SMTP, DNS-запросы или любой другой TCP/UDP-протокол.
Основные характеристики SOCKS5 proxy
- Протоколо-независимость: обрабатывает любой TCP- или UDP-трафик, не только HTTP
- Без модификации заголовков: поскольку SOCKS5 не понимает содержимое прикладного уровня, он никогда не добавляет и не изменяет заголовки
- Поддержка UDP: SOCKS5 может ретранслировать UDP-трафик, что полезно для DNS, VoIP и игр
- Методы аутентификации: поддерживает без аутентификации, по логину/паролю и GSS-API
- Контроль DNS-резолвинга: DNS может резолвиться локально или на стороне proxy (удалённый DNS), предотвращая утечки DNS
# SOCKS5 proxy с curl
curl --socks5-hostname USERNAME:PASSWORD@gate.proxyhat.com:1080 https://httpbin.org/ip
# Использование socks5h:// для удалённого DNS-резолвинга
curl -x socks5h://USERNAME:PASSWORD@gate.proxyhat.com:1080 https://httpbin.org/ip
HTTP vs SOCKS5: детальное сравнение
| Характеристика | HTTP Proxy | SOCKS5 Proxy |
|---|---|---|
| Уровень OSI | Уровень 7 (Приложение) | Уровень 5 (Сессия) |
| Поддерживаемые протоколы | HTTP, HTTPS | Любой TCP/UDP-протокол |
| Работа с заголовками | Может читать/модифицировать HTTP-заголовки | Не осведомлён о заголовках |
| Поддержка UDP | Нет | Да |
| DNS-резолвинг | Proxy резолвит для CONNECT | Локальный или удалённый (настраивается) |
| Скорость | Быстрее для HTTP-трафика | Немного больше накладных расходов на соединение |
| Кеширование | Возможно (для HTTP) | Невозможно |
| Поддержка клиентами | Универсальная | Большинство современных клиентов |
| Порт | 8080 (ProxyHat) | 1080 (ProxyHat) |
Различия в производительности
Установка соединения
HTTP proxy с CONNECT требуют один дополнительный round trip для установки туннеля перед началом TLS-согласования. SOCKS5 имеет более длинное рукопожатие: согласование версии, аутентификация и запрос на соединение — обычно 2-3 round trip перед передачей данных.
На практике разница пренебрежимо мала для большинства сценариев. Она имеет значение при высокочастотном скрапинге с тысячами короткоживущих соединений — здесь HTTP proxy имеют небольшое преимущество благодаря переиспользованию соединений через keep-alive.
Пропускная способность
После установки соединения оба протокола добавляют минимальные накладные расходы. SOCKS5 имеет незначительное преимущество при больших объёмах передачи данных, так как не выполняет инспекцию заголовков. Для типичных задач веб-скрапинга разница в пропускной способности неизмерима.
Задержка
Для веб-скрапинга задержка определяется сетевым расстоянием до целевого сервера, а не накладными расходами протокола. Использование гео-таргетированных proxy, расположенных близко к целевому серверу, важнее выбора протокола.
Когда использовать HTTP proxy
- Веб-скрапинг: если вы собираете данные только через HTTP/HTTPS, HTTP proxy — самый простой и эффективный выбор
- Автоматизация браузера: Puppeteer, Playwright и Selenium имеют первоклассную поддержку HTTP proxy
- Сбор данных API: REST и GraphQL API работают через HTTP, что делает HTTP proxy естественным выбором
- Отслеживание SERP: все запросы к поисковым системам идут через HTTPS, поэтому поддержки HTTP proxy достаточно
- Пулинг соединений: когда нужно переиспользовать соединения для эффективности
Пример на Python с HTTP Proxy
import requests
proxy = "http://USERNAME:PASSWORD@gate.proxyhat.com:8080"
response = requests.get(
"https://httpbin.org/ip",
proxies={"http": proxy, "https": proxy},
timeout=15,
)
print(response.json())
Пример на Node.js с HTTP Proxy
import axios from "axios";
import { HttpsProxyAgent } from "https-proxy-agent";
const agent = new HttpsProxyAgent("http://USERNAME:PASSWORD@gate.proxyhat.com:8080");
const { data } = await axios.get("https://httpbin.org/ip", { httpsAgent: agent });
console.log(data);
Когда использовать SOCKS5 proxy
- Не-HTTP протоколы: FTP-передачи, SMTP-почта или пользовательские TCP-протоколы
- Предотвращение утечек DNS: когда нужно, чтобы proxy резолвил DNS (удалённый DNS через
socks5h://) - UDP-трафик: DNS через UDP, тестирование игровых протоколов или потоковая передача в реальном времени
- Прозрачное проксирование: когда нужно ретранслировать трафик без модификации
- Инструменты со смешанными протоколами: приложения, использующие несколько протоколов одновременно
Пример на Python с SOCKS5 Proxy
import requests
# Требуется: pip install requests[socks]
proxy = "socks5h://USERNAME:PASSWORD@gate.proxyhat.com:1080"
response = requests.get(
"https://httpbin.org/ip",
proxies={"http": proxy, "https": proxy},
timeout=15,
)
print(response.json())
Пример на Go с SOCKS5 Proxy
package main
import (
"fmt"
"io"
"net/http"
"net/url"
)
func main() {
proxyURL, _ := url.Parse("socks5://USERNAME:PASSWORD@gate.proxyhat.com:1080")
client := &http.Client{
Transport: &http.Transport{Proxy: http.ProxyURL(proxyURL)},
}
resp, err := client.Get("https://httpbin.org/ip")
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))
}
Для production-интеграций используйте Python SDK, Node SDK или Go SDK со встроенной логикой повторных попыток и обработки ошибок.
Аспекты безопасности
Шифрование
Ни HTTP, ни SOCKS5 proxy не шифруют само proxy-соединение по умолчанию. С HTTP proxy туннель CONNECT передаёт TLS-трафик непрозрачно. С SOCKS5 — тот же принцип: TLS работает сквозным образом между вашим клиентом и целевым сервером, а не между вами и proxy.
Для безопасности важно, использует ли целевое соединение HTTPS/TLS. Proxy-протокол обеспечивает маршрутизацию, а не шифрование.
Утечки DNS
HTTP proxy резолвят DNS на уровне proxy при использовании CONNECT. SOCKS5 предлагает выбор: socks5:// резолвит DNS локально (потенциальная утечка), тогда как socks5h:// резолвит DNS на proxy (без утечки). Всегда используйте socks5h://, когда анонимность важна.
Аутентификация
Оба протокола поддерживают аутентификацию по логину/паролю. HTTP отправляет учётные данные в заголовке Proxy-Authorization (Base64). SOCKS5 использует собственный подпротокол аутентификации. В обоих случаях используйте TLS до целевого сервера для защиты учётных данных proxy от перехвата.
Ключевой вывод: Для веб-скрапинга и большинства HTTP-задач используйте HTTP proxy — они обеспечивают лучшую совместимость и производительность. Выбирайте SOCKS5, когда нужно проксировать не-HTTP протоколы, требуется поддержка UDP или тонкий контроль DNS-резолвинга.
ProxyHat поддерживает оба протокола
ProxyHat предоставляет доступ через HTTP и SOCKS5 через единый шлюз. HTTP proxy работает на порте 8080, а SOCKS5 — на порте 1080, оба на gate.proxyhat.com. Ваши учётные данные, настройки ротации IP и правила гео-таргетинга работают идентично на обоих портах. Ознакомьтесь с тарифными планами и изучите документацию для руководств по интеграции.
Часто задаваемые вопросы
SOCKS5 быстрее HTTP proxy?
Не существенно для веб-трафика. SOCKS5 выполняет меньше обработки на каждый запрос, но разница пренебрежима. HTTP proxy могут быть даже быстрее для веб-скрапинга благодаря переиспользованию соединений через keep-alive.
Можно ли использовать SOCKS5 для веб-скрапинга?
Да, SOCKS5 отлично подходит для веб-скрапинга. Однако HTTP proxy проще настроить для чисто HTTP-задач и имеют более широкую поддержку библиотеками.
Нужно ли выбирать один протокол?
Нет. С ProxyHat можно использовать оба одновременно — HTTP на порте 8080 и SOCKS5 на порте 1080. Используйте тот, который подходит для каждого компонента вашей инфраструктуры.
SOCKS5 лучше скрывает IP, чем HTTP?
Оба протокола скрывают ваш IP одинаково хорошо. Ключевое различие в том, что HTTP proxy могут добавлять заголовки переадресации (качественные провайдеры этого не делают), тогда как в SOCKS5 нет механизма для утечки вашего IP на уровне протокола.






