Настройка использования прокси сервера в cURL

  • 29.08.2022
  • 4 773
  • 2
  • 02.12.2023
  • 2
  • 2
  • 0
Настройка использования прокси сервера в cURL

В данной статье мы разберем, какие действия необходимо выполнить с утилитой cURL, чтобы заставить её работать через прокси-сервер.

Использование аргументов командной строки

Для того, чтобы указать вручную прокси-сервер, следует использовать параметры -x или –proxy:

curl -x "http://[АДРЕС]:[ПОРТ]" "http://yandex.ru"
curl -proxy "http://[АДРЕС]:[ПОРТ]" "http://yandex.ru"

То есть, для прокси-сервера по адресу 192.168.2.200 и порту 3128, строка запуска cURL будет выглядеть так:

curl -x "http://192.168.2.200:3128" "http://yandex.ru"
curl -proxy "http://192.168.2.200:3128" "http://yandex.ru"

Если же, на данном сервере требуется авторизация (пусть это будет пользователь user и пароль 1234), то строка запуска приобретет следующий вид:

curl -x "http://192.168.2.200:3128" "http://yandex.ru" -U user:1234
curl -proxy "http://92.168.2.200:3128" "http://yandex.ru" -U user:1234

Использование переменных среды

Данный способ будет работать только в Linux и MacOS. Для Windows этот способ не подойдет!

Альтернативным способом настройки использования прокси-сервера, является возможность задать используемый прокси-сервер в переменных среды операционной системы. Делается это двумя командами:

export http_proxy="http://[ЛОГИН]:[ПАРОЛЬ]@[АДРЕС]:[ПОРТ]"
export https_proxy="http://[ЛОГИН]:[ПАРОЛЬ]@[АДРЕС]:[ПОРТ]"

В данном случае, пареметр http_proxy отвечает за прокси-сервер, который будет использоваться для соединения по http протоколу, а параметр https_proxy - за прокси-сервер, который будет использоваться для защищенных соединений по https. При этом, не обязательно, чтобы https_proxy работал по https.

Таким образом, для использования прокси-сервера с адресом 192.168.2.200 и портом 3128, следует выполнить следующие команды:

export http_proxy="http://192.168.2.200:3128"
export https_proxy="http://192.168.2.200:3128"

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

export http_proxy="http://user:1234@192.168.2.200:3128"
export https_proxy="http://user:1234@192.168.2.200:3128"

Использование файла конфигурации

В зависимости от операционной системы, меняется местоположение и имя данного файла:

  • В Linux и MacOS данный файл находится в домашней директории пользователя, и имеет имя .curlrc
  • В Windows данный файл находится в директории %appdata%, и называется _curlrc

В данный файл следует добавить одну единственную строку, которая отвечает за настройку использования cURL прокси-сервера:

proxy="http://[ЛОГИН]:[ПАРОЛЬ]@[АДРЕС]:[ПОРТ]"

То есть, для прокси-сервера с адресом 192.168.2.200 и портом 3128, следует писать следующее:

proxy="http://192.168.2.200:3128"

А если нужна авторизация, то добавить данные авторизации в эту же строку (для примера, это будет пользователь user и пароль 1234):

proxy="http://user:1234@192.168.2.200:3128"

Использование socks прокси

В примерах выше, мы использовали только http или https прокси, но помимо них есть еще socks прокси, работу с которыми cURL так же поддерживает. Для того, чтобы задать использование socks прокси, следует просто заменить адрес прокси сервера с http на нужную версию socks - socks4, socks4a, socks5 или socks5h. В итоге, получится примерно следующее (в случае использования запуска программы из командной строки или терминала):

curl -x "socks5://[ЛОГИН]:[ПАРОЛЬ]@[АДРЕС]:[ПОРТ]" "http://yandex.ru"

Так же, при запуске из командной строки или терминала, можно использовать отдельный аргумент --socks5 (или иной версии socks), вместо параметра -x. Выглядеть это будет следующим образом:

curl --socks5 "[АДРЕС]:[ПОРТ]" "http://yandex.ru" --proxy-user [ЛОГИН]:[ПАРОЛЬ]

Обход прокси

На последок, хотелось бы отметить о полезной возможности указать в параметрах запуска программы игнорирование настроек прокси. Делается это с помощью параметра --noproxy "*":

curl --noproxy "*" "http://yandex.ru"

В результате выполнения данной команды, cURL попытается установить соединение напрямую, игнорируя заданные в настройках параметры прокси-сервера.

Была ли эта статья Вам полезна?

Комментарии к статье (2)

    • Prog

    Но ведь пример с авторизацией неправильный и не рабочий(проверено).

    В другом источнике рабочий вариант:

    url -U "user:p@assword" --proxy http://127.0.0.1:5000 https://httpbin.org/ip

    • Спасибо, правда ваша. Исправил пример в статье.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Напоминаем Вам, что Ваше сообщение будет опубликовано только после проверки администратором сайта. Обычно это занимает 1-2 рабочих дня.