Блог Froxy | Новости, полезные статьи о использовании прокси

Сравнение SOCKS и HTTP Proxy: возможности и безопасность

Written by Команда Froxy | 16.11.2023 10:00:00

Прокси – это всегда некий узел в сети, который выступает посредником на пути проброса запросов. Но Интернет – это сеть сетей, которая может использовать для своей работы разные протоколы и технологии. Единственные важные стандарты, которые позволяют связывать узлы друг с другом – это стек TCP (транспортный протокол) и IP (адресное пространство, сетевой уровень).

Всё остальное работает поверх: HTTP/HTTPS, FTP, SFTP, L2TP, P2P, DNS, IMAP, SMTP, SSH и т.п.

Прокси – не исключение. Но у прокси нет своего собственного протокола или какой-то особенной технологии, поэтому для проброса данных логично использовать уже имеющиеся. Для нужд прокси лучше других подходят протоколы HTTP (HTTPS) и SOCKS (4 или 5 версии). О них, и об их различиях, а также о технических особенностях поговорим ниже.

Что такое HTTP-прокси

Наиболее востребованный протокол прикладного уровня (это 7 уровень по модели OSI) – HTTP или HTTPS.

HTTP – от англ. HyperText Transfer Protocol, протокол, используемый для передачи по сети гипертекста, то есть информации о структуре и разметке web-страниц, HTML-документов. Сейчас HTTP используется для передачи любых данных: изображения, видео, текст и т.п.

HTML и DNS-система отвечают за работу сайтов и web-сервисов. Благодаря им мы может обмениваться сообщениями, хранить фото и документы в облаках, редактировать их онлайн, искать любую информацию, просматривать видеоролики (ТВ, стриминговые сервисы).

Так как данные в HTTP-протоколе передаются в открытом виде, то со временем назрела необходимость «апгрейда». Так, на смену простому HTTP-протоколу пришёл защищённый HTTPS.

Здесь данные между клиентом и сервером шифруются на основе SSL/TLS-сертификатов (ключи асимметричного шифрования), поэтому, даже если их перехватить где-то посередине, то прочитать не получится. Расшифровать информацию может только браузер, отправивший запрос серверу или, наоборот, сервер, взаимодействующий с конкретным экземпляром браузера.

В открытом виде передаются только HTTP-заголовки.

И HTTP, и HTTPS-протокол для обмена данными требуют установки так называемой сессии подключения. Чтобы не открывать каждый раз новую сессию, клиент может сохранить её параметры в cookies.

В качестве транспортного протокола для HTTP/HTTPS всегда используется только TCP.

Какая связь между HTTP-протоколом и прокси?

HTTP-, как и HTTPS-прокси используют для своей работы ту же самую систему заголовков и передачи данных, как и любые другие участники HTTP-обмена: серверы и клиенты (браузеры, мобильные приложения, десктопные программы).

Единственное отличие: вместо основного порта (для HTTP это 80 порт, а для HTTPS – 443) используются преимущественно альтернативные. Смена порта нужна, чтобы проще было выполнять посредничество:

  • Браузер или другой прикладной софт формирует HTTP-запрос.
  • Отправляет его на адрес и порт прокси. Например, IP 127.0.0.1, порт 34296. Чтобы прокси-сервер понял какой конкретно узел будет конечным, к данным основного запроса добавляется дополнительная информация – обычно в виде специальных заголовков.
  • Прокси-сервер ждёт данные именно на этом порту, поэтому он их принимает.
  • Из тела запроса извлекаются дополнительные данные о конечном узле и затем запрос перенаправляется целевому ресурсу, но уже на стандартный порт 80 (или 443 для HTTPS).
  • Web-сервер целевого ресурса принимает запрос как положено и обрабатывает его (здесь всё штатно, web-сервер работает так, как если бы к нему напрямую подключился обычный браузер).
  • Ответ отдаётся на IP-прокси по стандартному 80-порту.
  • Прокси принимает данные, но он помнит, что не является конечной точкой, поэтому перенаправляет их реальному клиенту на свой порт 34296 (из примера).

Благодаря такой смене портов и посредничеству прокси стало возможно построение альтернативного маршрута. Как раз так и обходятся блокировки.

Для прикладного софта (особенно это важно для браузеров) всё работает, как и раньше.

Единственный важный нюанс – в тело запроса добавляются дополнительные данные.

Благодаря этому «нюансу» HTTP-прокси могут реализовывать кеширование данных, осуществлять фильтрацию и некоторые другие действия.

Что такое SOCKS-прокси

SOCKS – от англ. SOCKet Secure, «защищённый сокет», это протокол сеансового уровня (5 уровень по модели OSI), который выступает в роли своего рода туннеля для обхода межсетевых экранов (брандмауэров).

Что примечательно: итоговое слово «Socks» переводится как «носки». Получается «прокси-носки».

В отличие от HTTP-протокола SOCKS сам умеет управлять TCP и UDP-подключениями, поэтому он не зависит от протоколов высокого уровня – 6 и 7 по модели OSI. Это изначально специализированное решение для проксирования (можно сказать оригинальный протокол для прокси). Поэтому связь между SOCKS и proxy очевидна.

Благодаря тому, что SOCKS-сессия (туннель) организуется на низком уровне, для прикладных программ, в том числе для браузеров, обмен данными происходит незаметно: никакие дополнительные заголовки в тело HTTP(HTTPS)-запросов не добавляются.

Основной пакет данных может шифроваться, примерно так, как это происходит в VPN-сетях. И именно поэтому брандмауэры не могут отфильтровать/отсечь конкретные данные или подключения.

В настоящее время в обиходе остаются параллельно две версии протокола:

  • SOCKS 4,
  • SOCKS 5.

Давайте расскажем о каждом из них подробнее.

Сравнение SOCKS4 и SOCKS5-прокси

Протокол Proxy SOCKS изначально создавался для упрощения администрирования удалённых брандмауэров, как итог он мог обходить сетевой экран, чтобы передавать данные внутрь защищённого контура.

Проход за брандмауэр открывался за счёт связки программ сервера и клиента (как и в случае с HTTP-подключениями), но данные между ними защищались шифрованием.

Наиболее популярной в обиходе стала 4 версия протокола SOCKS, которую разработал инженер Инь-Да Ли из компании NEC (первая версия SOCKS была разработана Дэвидом Кобласом из компании MIPS, он сделал протокол общедоступным в 1992 году).

SOCKS 5 версии был представлен в 1996 году, над ним работало уже сразу 6 специалистов. SOCKS 5 оформлен в виде стандарта RFC 1928.

Чем отличаются SOCKS4 и SOCKS5?

Сначала о SOCKS4:

  • Эта версия протокола более простая и умеет работать только поверх TCP-подключений.
  • В качестве конечной точки можно указать только IP-адрес (в версии протокола SOCKS4a добавлена возможность указания доменного имени).
  • В 4 версии SOCKS нет возможности авторизации (передаётся только идентификатор клиента).

Теперь о прокси SOCKS5:

  • Этот протокол разрабатывался как универсальный стандарт, поэтому он сложнее и безопаснее.
  • SOCKS5 умеет работать поверх TCP и UDP-подключений.
  • Обеспечена совместимость с IPv6-адресами и с доменными именами.
  • Поддерживается возможность аутентификации на сервере.

Обратите внимание: SOCKS4 и SOCKS5 несовместимы между собой. Это значит, что клиент, работающий по протоколу SOCKS 4 версии не сможет подключиться к серверу, использующему 5 версию протокола, и наоборот.

Разница между SOCKS4, SOCKS5 и HTTP (HTTPS) proxy – безопасность, производительность, возможности

Сравним технические особенности каждого типа прокси ниже.

Безопасность, производительность и возможности HTTP (HTTPS) прокси:

  • Работают только по HTTP/HTTPS-протоколу. Фактически это прикладной (самый высокий) уровень модели OSI.
  • Поддерживаются IPv4, IPv6-адреса и доменные имена.
  • В качестве транспортного уровня может использоваться только TCP (у него скорость не всегда высокая, так как задействуется система корректировки ошибок и применяется ожидание ответа о готовности к приёму/обмену данными).
  • На уровне HTTP-протокола возможна фильтрация содержимого/контента и кеширование.
  • С помощью HTTP-прокси можно подключаться напрямую к конкретным сайтам и web-сервисам (идеально для парсинга данных).
  • Заголовки HTTP-пакета могут модифицироваться прокси-сервером для добавления в них служебной информации.
  • HTTP-прокси имеют низкий уровень безопасности, так как сами данные в запросах не шифруются.
  • HTTP-прокси совместимы практически с любым профильным софтом, в том числе со скриптами и программами для парсинга, со сникер-ботами, с SMM-утилитами и т.п.

Безопасность, производительность и возможности SOCKS4 прокси:

  • SOCKS-прокси могут работать без HTTP-протокола. Поэтому они могут использоваться для дополнительных задач: почта (POP3/IMAP), обмен файлами (FTP), торренты (P2P) и пр.
  • Поддерживаются только IPv4-адреса (в реализации протокола SOCKS4a возможно указание доменов).
  • В качестве транспортного протокола допускается только TCP (быстродействие низкое).
  • SOCKS-протокол исключает возможность кеширования данных или фильтрации содержимого.
  • Безопасность SOCKS4 выше, чем у HTTP-прокси, но ниже, чем у SOCKS5-прокси. У SOCKS4-протокола не предусмотрена возможность аутентификации.
  • Заголовки HTTP-пакетов никак не модифицируются. Ни браузеры, ни какой-либо другой прикладной софт не знает о том, что его запросы проксируются.
  • Для работы с SOCKS-прокси требуется специальный софт. Например, программы для парсинга данных могут быть с ними несовместимы.

Безопасность, производительность и возможности SOCKS5 прокси:

  • SOCKS5-прокси, как и SOCKS4 работают без HTTP-протокола (могут использоваться как транспортный уровень для других протоколов: HTTP, FTP, SMTP, IMAP и пр.).
  • Поддерживаются IPv4 и IPv6-адреса, доменные имена.
  • SOCKS5-прокси могут работать поверх TCP или UDP-подключений. В последнем случае существенно возрастает быстродействие и производительность, так как UDP не требует подтверждений по итогам сессий и не пытается исправлять ошибки в данных, как TCP.
  • Как и в SOCKS4, здесь нет возможности кеширования данных или фильтрации содержимого.
  • Безопасность SOCKS5 максимальная – поддерживается аутентификация на сервере, есть возможность организации защищённого туннеля.
  • Заголовки HTTP-пакетов, как и в SOCKS4 не модифицируются (прикладной софт не будет знать о работе через прокси).
  • Для работы с SOCKS5-прокси требуется специальный софт.
  • Протокол несовместим с SOCKS4-версией.

Причины использования SOCKS или HTTP-прокси

У каждой технологии своя сфера применения. Так, SOCKS-прокси будут максимально интересны для работы с разными прикладными протоколами и задачами:

  • Обмен файлами по FTP или в торрент-сетях (P2P).
  • Чтение и отправка электронной почты (через протоколы SMTP, POP3, IMAP).
  • Обмен сообщениями, телефония, VoIP (XMPP, SIP, Telnet).
  • И т.п.

SOCKS-прокси могут быть максимально безопасными и прозрачными. Более того, доступ к UDP (для SOCKS5-прокси) может увеличить быстродействие и производительность, если качество сетевого канала позволяет работать без корректировки ошибок.

Но вместе с тем, SOCKS-прокси требуют установки и настройки специального софта на рабочем месте. Либо совместимость должна быть реализована на уровне конкретного прикладного приложения, например, так поступают многие торрент-клиенты.

Но вот найти встроенную поддержку SOCKS-прокси в программах-парсерах вам скорее всего не удастся (это большая редкость).

HTTP-прокси распространены намного шире. Причина – их простота и доступность. Да, они не такие быстрые, как SOCKS, но современные скорости подключений эффективно нивелируют проблему производительности.

HTTP-прокси имеют низкую безопасность, но они умеют модифицировать HTTP-заголовки, кешировать и фильтровать контент. Например, подмена заголовков будет эффективной на случай, если вам нужно скрыть своё реальное местоположение, сымитировать нужный тип юзер-агента (тип и версию браузера) и т.п.

По этим простым причинам HTTP-прокси лучше подходят для задач парсинга и анализа сайтов конкурентов. С их помощью можно решать многие SMM и SEO-задачи, проводить тестирования, обходить блокировки и т.п.

Выводы и рекомендации

SOCKS и HTTP-прокси созданы не как конкуренты, а как решения для разных задач. Поэтому сравнивать их между собой не стоит, по крайней мере в разрезе какой-то одной конкретной сферы применения.

SOCKS-прокси нужны в первую очередь для пробрасывания надёжных туннелей, по аналогии с VPN. А HTTP-прокси будут идеальны для работы с сайтами и web-ресурсами, например, для парсинга, а также для ряда других бизнес-задач (мультиаккаунты, накрутка поведенческих факторов, аналитика, тестирование).

Каким бы ни был тип прокси, основные технические параметры (скорость подключения, пинг, стабильность, расположение), а также уровень безопасности и анонимности во многом будут зависеть от провайдера услуги.

Самые надёжные HTTP и SOCKS5-прокси с ротацией (мобильные и резидентные) можно арендовать у нас. Froxy предоставляет доступ к пулу из более чем 8 млн. IP-адресов в 200+ локациях по всему миру. Точность таргетинга – до населённого пункта и провайдера связи. Одновременное подключение – до 1000 портов. Оплачивается только трафик. Чем больше предоплата, тем выгоднее будет каждый гигабайт.