Справочник cURL · 1 мин чтения

curl через SOCKS5-прокси: полный справочник

Исчерпывающий справочник по curl и прокси: SOCKS5 против SOCKS5h, флаги -x и --socks5-hostname, переменные окружения, постоянный .curlrc и узлы s4m с аутентификацией. Готово к копированию.

SOCKS5 против SOCKS5h — и почему это важно

curl поддерживает HTTP- и SOCKS-прокси. socks5:// разрешает имена целей локально; socks5h:// передаёт имя хоста прокси для разрешения. Параметр --socks5-hostname также выбирает удалённый DNS. Это не шифрует согласование SOCKS или аутентификацию по логину и паролю. HTTPS с проверкой сертификата защищает содержимое приложения. При необходимости защищайте путь от клиента до прокси зашифрованным туннелем; удалённый DNS его не заменяет.

s4m даёт оба протокола на одном аккаунте: SOCKS5 на порту 1080 и HTTP на порту 3128, оба с аутентификацией USER:PASS на proxy.s4m.online. Универсальный флаг -x / --proxy принимает полный URL вместе со схемой, поэтому одного флага хватает на все случаи. Об основах работы curl через прокси — гайд про curl и прокси; эта страница — более глубокий справочник по SOCKS5, переменным среды и постоянному конфигу. Теория протоколов — в что такое SOCKS5.

curl · RFC 1929

Все способы задать прокси — в одном месте

Используйте хост и учётные данные, выданные вашему аккаунту. В примерах прокси выбран явно. Просмотрите существующую конфигурацию перед редактированием: приведённые строки конфигурации являются комментариями, а не командами перезаписи файла.

bash
# Replace the host and dummy USER:PASS with your issued configuration.
PROXY_HOST='HOST_FROM_ACCOUNT'

# SOCKS5 with remote target DNS; this does not encrypt SOCKS authentication.
curl --noproxy "" --proxy "socks5h://$PROXY_HOST:1080" --proxy-user USER:PASS https://api.ipify.org

# Equivalent remote-DNS option with explicit authentication.
curl --noproxy "" --socks5-hostname "$PROXY_HOST:1080" --proxy-user USER:PASS https://api.ipify.org

# SOCKS5 with local target DNS, if that is specifically intended.
curl --noproxy "" --proxy "socks5://$PROXY_HOST:1080" --proxy-user USER:PASS https://api.ipify.org

# Plain HTTP proxy carrying HTTPS with CONNECT; keep TLS verification on.
curl --noproxy "" --proxy "http://$PROXY_HOST:3128" --proxy-user USER:PASS https://api.ipify.org

# Example default-config entries: edit your existing ~/.curlrc, preserving
# other settings. Protect a file containing credentials; do not commit it.
# proxy = "socks5h://HOST_FROM_ACCOUNT:1080"
# proxy-user = "USER:PASS"
# connect-timeout = 10

# Ignore the default config for this call while KEEPING an explicit proxy.
# -q must be the first curl option. Empty --noproxy clears bypass exclusions.
curl -q --noproxy "" --proxy "socks5h://$PROXY_HOST:1080" --proxy-user USER:PASS https://api.ipify.org

Постоянный прокси для curl

Задайте явные настройки по умолчанию и проверьте фактический маршрут, включая правила обхода прокси.

Выберите схему

Используйте socks5h:// для DNS цели на прокси или http:// для HTTP-прокси, передающего HTTPS через CONNECT. Проверяйте выданный хост, порт и поддерживаемый трафик. Ни один вариант сам по себе не шифрует соединение от клиента до прокси.

Создайте ~/.curlrc

Перед редактированием просмотрите существующий файл конфигурации по умолчанию. Сохраните другие параметры и защитите учётные данные в файле. curl обычно читает его первым; -q как первый параметр пропускает его. При проверке без файла задавайте прокси явно.

Задайте переменные среды для других инструментов

Проверяйте каждый инструмент отдельно. В curl переменные прокси для конкретной схемы имеют приоритет над ALL_PROXY; NO_PROXY может обходить прокси. Другие инструменты не обязательно поддерживают те же переменные или схемы SOCKS.

Проверьте и добавьте исключения

Проверьте выходной IP фактического запроса через соответствующий сервис. NO_PROXY и --noproxy намеренно разрешают прямые соединения с совпадающими хостами; добавляйте исключения только тогда, когда такой обход действительно нужен.

Способы аутентификации, приоритет и NTLM

Задавайте учётные данные в URL прокси или через -U / --proxy-user. Кодируйте зарезервированные символы, когда вставляете учётные данные в URL. Не записывайте секреты в журналы и общие файлы. curl читает свой стандартный ~/.curlrc перед обычными параметрами командной строки; более поздняя явная настройка прокси может переопределить предыдущую. Конфигурация прокси имеет приоритет над запасными значениями из окружения, а NO_PROXY всё равно может вызвать обход. Задавайте -q первым параметром, чтобы пропустить стандартный файл, а затем явно задавайте нужный прокси.

Согласование логина и пароля SOCKS5 и аутентификация HTTP Basic на прокси являются разными протоколами; обмен SOCKS не является HTTP Basic. Ни один из них сам по себе не обеспечивает шифрования. --proxy-ntlm предназначен для HTTP-прокси, которым нужен NTLM, а не для обычного доступа SOCKS5 по логину и паролю. При 407 Proxy Authentication Required проверяйте метод аутентификации HTTP-прокси и выданные учётные данные; сбой SOCKS5 имеет другой протокольный ответ. Смотрите руководство о 407, руководство wget, инструменты и отдельный список бесплатных публичных прокси.

FAQ

Ответы на вопросы

В чём разница между socks5 и socks5h в curl?

socks5:// разрешает имя цели локально; socks5h:// поручает это прокси. --socks5-hostname также выбирает разрешение на прокси. Это не шифрует аутентификацию SOCKS; оставляйте проверку HTTPS-сертификатов включённой для трафика приложения.

Как заставить curl ходить через прокси в каждой команде?

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

Нужна ли для s4m аутентификация NTLM?

Используйте метод, указанный для выданного адреса. Согласование логина и пароля SOCKS5 не является HTTP Basic; HTTP-прокси может использовать HTTP Basic. --proxy-ntlm применяется только к HTTP-прокси, которым нужен NTLM, а не к обычному доступу SOCKS5.

Почему я получаю 407 Proxy Authentication Required?

HTTP-прокси запрашивает аутентификацию. Проверьте выданные логин и пароль и поддерживаемый метод аутентификации. Кодируйте зарезервированные символы, если учётные данные вставлены в URL. Сбои аутентификации SOCKS5 сообщаются иначе; не диагностируйте их как HTTP 407.

Один эндпоинт — все трюки curl

Настройте доступ SOCKS5 или HTTP в s4m с учётными данными своего аккаунта.

Эту страницу нашли по запросу

Реальные поисковые фразы, на которые отвечает эта страница — по ссылкам откроются материалы, раскрывающие тему глубже.