В curl выбирайте socks5h://, если имя целевого сервера должен разрешать прокси. Выбирайте socks5://, если curl должен разрешить его локально и передать прокси адрес. В обоих случаях используется SOCKS5; завершающая h — это соглашение о записи URL на стороне клиента.

Сравните режимы, подставив свою конечную точку SOCKS5 вместо локального слушающего порта:

curl --noproxy '' --proxy socks5://127.0.0.1:1080 --connect-timeout 5 --max-time 15 --verbose https://example.com/
curl --noproxy '' --proxy socks5h://127.0.0.1:1080 --connect-timeout 5 --max-time 15 --verbose https://example.com/

Меняется только режим разрешения имён. --noproxy '' очищает правила обхода прокси для этих вызовов, а ограничения времени задают предел длительности сравнения. Равнозначные отдельные параметры — --socks5 и --socks5-hostname. В качестве цели используйте имя хоста: IP-адрес, указанный напрямую, не требует разрешения имени назначения и не покажет эту разницу.

Имя может быть известно лишь одной стороне

Допустим, прокси работает в сети разработки, DNS которой знает имя внутреннего сервиса. Ноутбук может не разрешить это имя в режиме socks5, а socks5h позволит передать разрешение прокси. В обратной ситуации, когда имя задано только в файле hosts ноутбука, неудачным может оказаться уже удалённое разрешение.

Публичный DNS тоже может возвращать разные адреса из разных сетей. Разница в результатах — повод сравнить выбранные адреса и их доступность, а не немедленно менять прокси.

  • Не удаётся разрешить имя хоста прокси: ни один режим не сможет начать работу. Клиент по-прежнему разрешает proxy.example в socks5h://proxy.example:1080.
  • Локальное разрешение имени назначения завершается ошибкой: проверьте резолвер клиента или сравните с режимом передачи имени хоста прокси.
  • SOCKS-сервер отклоняет назначение: изучите его ответ и политику. Успешное локальное разрешение не доказывает доступность с удалённой стороны.
  • Туннель работает, но проверка сертификата не проходит: разбирайтесь с TLS целевого сервера; смена режима DNS не является универсальным решением проблем доверия.

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

Польза для приватности имеет чёткие границы

Разрешение на стороне прокси позволяет избежать локального разрешения имени назначения для этого запроса. Оно не шифрует SOCKS, не доказывает, что прокси использует зашифрованный DNS, и не перенаправляет трафик других приложений или предварительной загрузки браузера. Requests с поддержкой SOCKS использует то же различие между локальным разрешением и разрешением на прокси; в других клиентах вместо записи URL curl может быть отдельная настройка. Выберите протокол, который поддерживает ваше приложение, прежде чем копировать конечную точку из списка SOCKS5-прокси.

Похожие статьи