Руководство для разработчиков · 2 мин чтения

Как использовать прокси с curl

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

Зачем пускать curl через прокси

Когда curl ходит напрямую, сервер назначения видит в соединении настоящий IP-адрес вашей машины. Если пустить запрос через прямой прокси, в цепочке появляется посредник: назначение теперь видит адрес прокси, а ваш собственный в обмене не фигурирует. В этом и вся суть проксирования автоматизированного трафика — вы скрываете настоящий IP того хоста, который на самом деле делает запрос, и ваш основной сервер остаётся вне поля зрения третьих сторон.

Платные прокси s4m — это дата-центровые SOCKS5 и HTTP-эндпоинты с авторизацией, с тарификацией по гигабайтам. Такая модель хорошо ложится на скрипты, тестовые прогоны скраперов, CI-конвейеры и запросы к API со стабильного адреса. Если же вам нужно провести через туннель все приложения машины за фиксированную месячную плату (а не по гигабайтам), лучшим инструментом обычно будет соединение WireGuard VPN — сравните оплату за трафик прокси и фиксированные тарифы VPN на странице тарифов. Для быстрых одноразовых проверок есть бесплатный публичный список прокси: это сторонние прокси, которые s4m постоянно проверяет, но пользоваться ими вы можете строго на свой риск — мы их не держим.

curl понимает оба протокола прокси из коробки, поэтому никаких дополнительных инструментов не нужно — вы меняете один флаг или схему URL. Практические различия:

АспектHTTP-прокси (порт 3128)SOCKS5-прокси (порт 1080)
Синтаксис curl-x http://...:3128-x socks5h://...:1080
Что умеетHTTP и HTTPS (через CONNECT)Любое TCP-соединение
Удалённый DNSДа, резолвит проксиДа, с socks5h:// или --socks5-hostname
АвторизацияUSER:PASSUSER:PASS

Берите HTTP, когда вам нужен только веб-трафик; берите SOCKS5, когда нужен удалённый DNS или надо провести не-HTTP протокол.

Основные флаги: -x, --socks5-hostname и аутентификация

Каждый пример нацелен на ваш эндпоинт s4m по адресу proxy.s4m.online — порт 3128 для HTTP, 1080 для SOCKS5 — где USER:PASS заменяет ваши реальные учётные данные.

bash
# 1) HTTP/HTTPS through the HTTP proxy (port 3128)
#    curl auto-issues CONNECT for https:// URLs, so TLS stays end-to-end
curl -x http://USER:[email protected]:3128 https://example.com

# 2) SOCKS5 with remote DNS (port 1080)
#    socks5h:// resolves the hostname AT the proxy (avoids local DNS leaks)
curl -x socks5h://USER:[email protected]:1080 https://example.com

# 3) Same SOCKS5 call using dedicated flags instead of a URL scheme
curl --socks5-hostname proxy.s4m.online:1080 \
     --proxy-user USER:PASS \
     https://example.com

# 4) Keep credentials out of the proxy URL with -U / --proxy-user
curl -x http://proxy.s4m.online:3128 -U USER:PASS https://example.com

# 5) --proxy is just the long form of -x
curl --proxy http://USER:[email protected]:3128 https://example.com

Настройте один раз с помощью переменных среды прокси

Вместо добавления -x к каждой команде экспортируйте прокси один раз, и пусть curl использует его на протяжении всей сессии оболочки.

bash
# curl reads http_proxy in LOWERCASE only (a historical CGI safeguard);
# HTTPS_PROXY, ALL_PROXY and NO_PROXY work in either case.
export http_proxy="http://USER:[email protected]:3128"
export HTTPS_PROXY="http://USER:[email protected]:3128"

# No -x needed now:
curl https://example.com

# Prefer a SOCKS5 endpoint for everything instead:
export ALL_PROXY="socks5h://USER:[email protected]:1080"

# Let some hosts bypass the proxy entirely:
export NO_PROXY="localhost,127.0.0.1,.internal.example"

# Confirm the exit IP, then clean up:
curl https://api.ipify.org; echo
unset http_proxy HTTPS_PROXY ALL_PROXY NO_PROXY

Проверьте выходной IP и распространённые подводные камни

Самый быстрый способ подтвердить, что трафик действительно выходит через прокси, — спросить эхо-сервис, какой IP он видит. Выполните один и тот же запрос с -x и без него и сравните результаты.

Без прокси вы получите собственный адрес вашей машины; с ним вы должны получить выходной адрес s4m. Если оба одинаковы, прокси не применяется — перепроверьте схему, порт и нужно ли URL-кодирование вашим учётным данным.

  • Учётные данные с символами: кодируйте в процентах символы вроде @ или : внутри USER или PASS, либо избегайте проблемы полностью, передавая их через --proxy-user.
  • Утечки DNS в SOCKS: используйте socks5h:// или --socks5-hostname, чтобы разрешение имён происходило на прокси, а не на вашем локальном резолвере.
  • 407 Proxy Authentication Required: пара USER:PASS отсутствует или неверна для этого эндпоинта.
  • Реальность дата-центра: прокси s4m — это IP дата-центров, поэтому сайт, который специально блокирует диапазоны дата-центров, всё равно распознает их как таковые.
Поделиться страницей
FAQ

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

Следует ли использовать socks5:// или socks5h:// с curl?

Отдавайте предпочтение socks5h:// (или флагу --socks5-hostname). Он выполняет разрешение целевого хоста на прокси, поэтому ваш локальный DNS-сервер никогда не видит запрос. Обычный socks5:// сначала выполняет разрешение локально, что может раскрыть получателя и задействовать ваш собственный резолвер.

Работает ли HTTPS через HTTP-прокси?

Да, и дополнительные флаги не нужны. Для URL https:// curl отправляет HTTP CONNECT на прокси и туннелирует TLS сквозным образом, поэтому прокси передаёт только зашифрованный поток (он видит хост через SNI, а не содержимое страницы).

Являются ли прокси s4m резидентными?

Нет. Платные прокси s4m — это аутентифицированные дата-центровые SOCKS5- и HTTP-эндпоинты. Они стабильны и измеряемы по гигабайту, но диапазоны дата-центров распознаются как IP дата-центра, поэтому они не сойдут за домашнее соединение.

Почему моя переменная HTTP_PROXY игнорируется?

curl читает переменную http_proxy только в нижнем регистре — это давняя защита от инъекции CGI-заголовков. HTTPS_PROXY, ALL_PROXY и NO_PROXY читаются в любом регистре. Используйте http_proxy в нижнем регистре или просто передавайте -x в командной строке.

Могу ли я всегда выходить с одного и того же IP?

Да, с дополнительной опцией выделенного персонального IP. Это статический адрес, принадлежащий только вам, который можно привязать к вашему прокси (или VPN); при этом выделение IP остаётся привязанным к вашему аккаунту s4m. Подробнее — на странице тарифов.

Получите учётные данные прокси за считанные минуты

Создайте бесплатный аккаунт s4m, чтобы получить аутентифицированные SOCKS5 и HTTP эндпоинты с трафиком, тарифицируемым по факту использования, а также необязательный выделенный IP. Поддерживаются анонимная регистрация и оплата криптой, и вы можете протестировать флажки выше.

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

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