# SOCKS5-прокси

SOCKS5-прокси передаёт TCP-соединения на транспортном уровне, не анализируя прикладной протокол, поэтому через него можно передавать HTTP, HTTPS, SMTP, собственные двоичные протоколы и любой другой трафик поверх TCP. SOCKS5 поддерживает аутентификацию по имени пользователя и паролю, а также, при необходимости, удалённое разрешение DNS и UDP-ассоциации. Этот протокол подходит для инструментов, которые не являются HTTP-клиентами или должны разрешать имена хостов через прокси.


## SOCKS5 и HTTP-прокси

|  | SOCKS5 | HTTP-прокси |
| --- | --- | --- |
| Поддерживаемые протоколы | Любые поверх TCP | HTTP и HTTPS (CONNECT также может туннелировать другой TCP-трафик) |
| Анализирует запрос | Нет | Да, для обычного HTTP |
| Разрешение DNS | На прокси (socks5h) или локально (socks5) | На прокси для запросов с полным URL; имя хоста передаётся в CONNECT |
| Поддержка клиентами | Большинство инструментов; некоторым нужна библиотека | Повсеместная |


## socks5 и socks5h

В cURL и Python схема `socks5://` разрешает имя целевого хоста на вашем компьютере и передаёт прокси его IP-адрес; схема `socks5h://` передаёт имя хоста, чтобы его разрешил выходной узел. Используйте `socks5h`, чтобы DNS-запросы выполнялись в стране выходного узла и имена хостов не раскрывались локальному DNS-резолверу.

```text
socks5h://USER-cc-us:PASS@res.hodlproxy.com:9001
```


## Как это работает в HodlProxy

Шлюзы HodlProxy поддерживают SOCKS5 на порту 9001 с теми же учётными данными и параметрами имени пользователя, что и HTTP; выделенные адреса используют порт 8001. Команды UDP ASSOCIATE и BIND не поддерживаются: только TCP.

## Вопросы

**SOCKS5 быстрее HTTP?**

Заметной разницы нет. Оба варианта добавляют один промежуточный узел; SOCKS5 выполняет немного меньше разбора данных, но основную роль играет сетевой маршрут. Выбирайте по поддержке инструментом и способу работы с DNS, а не по скорости.

Источник: https://hodlproxy.com/ru/glossary/socks5-proxy
