Использование cURL с прокси-сервером

Это пошаговое руководство объяснит, как использовать cURL или просто curl с прокси-серверами. Оно охватывает все аспекты, начиная с установки и заканчивая объяснением различных опций для настройки прокси.

Мы не ориентировались на какой-либо конкретный прокси-сервис. Поэтому это руководство должно работать со всеми прокси-серверами. Все, что вам нужно знать, это детали сервера и учетные данные.

Что такое cURL?

cURL - это инструмент командной строки для отправки и получения данных с помощью url. Давайте рассмотрим простейший пример использования curl. Откройте терминал или командную строку, введите эту команду и нажмите Enter:

Это позволит получить HTML-файл страницы и вывести его на консоль.

Это выведет информацию о документе.

Что нужно для подключения к прокси-сервису

Независимо от того, какой прокси-сервис вы используете, вам понадобится следующая информация:

  • адрес прокси-сервера
  • порт
  • протокол
  • имя пользователя (если требуется аутентификация)
  • пароль (если требуется аутентификация)

В этом руководстве мы будем считать, что прокси-сервер находится по адресу 127.0.0.1, порт - 1234, имя пользователя - user, а пароль - pwd. Мы рассмотрим несколько примеров, охватывающих различные протоколы.

Если вы работаете в сети, использующей аутентификацию NTLM, вы можете использовать переключатель --proxy-ntlm при запуске curl. Аналогично, --proxy-digest можно использовать для аутентификации по дайджесту. Вы можете просмотреть все доступные опции, выполнив команду curl -help. В этом руководстве будут приведены примеры для сценария, когда необходимо указать имя пользователя и пароль.

В следующем разделе будет рассмотрен первый сценарий использования прокси curl, который является наиболее распространенным - проксирование HTTP и HTTPS с помощью curl.

Использование cURL с HTTP/HTTPS прокси

Cutl, без прокси сервера, используется следующим образом

Этот конкретный сайт особенно полезен для тестирования прокси, так как на выходе этой страницы мы получаем IP-адрес источника. Если вы правильно используете прокси, страница вернет IP-адрес, отличный от IP-адреса вашей машины, то есть IP-адрес прокси.

Существует несколько способов запустить curl с командой proxy. В следующем разделе мы рассмотрим отправку данных прокси в качестве аргумента командной строки.

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

Аргумент командной строки для установки прокси в cURL

Откройте терминал, введите следующую команду и нажмите Enter:

На выходе вы получите огромный список опций. Одна из них будет выглядеть следующим образом:

Обратите внимание, что x - маленький, и он чувствителен к регистру. Детали прокси можно указать с помощью переключателя -x или -proxy. Оба означают одно и то же. Бот команды curl с прокси одинаковый:

или

Если есть ошибки SSL сертификата, добавьте -k (обратите внимание на маленькую k) к команде curl. Это разрешит небезопасные соединения с сервером при использовании SSL.

Вы могли заметить, что url прокси и url цели заключены в двойные кавычки. Это рекомендуемая практика для обработки специальных символов в url.

Еще одна интересная вещь, которую следует отметить, это то, что протокол прокси по умолчанию - http. Таким образом, следующие две команды будут делать одно и то же:

Использование переменных окружения

Другой способ использовать прокси с curl - установить переменные окружения http_proxy и https_proxy.

Обратите внимание, что установка прокси с помощью переменных окружения работает только в MacOS и Linux. Для Windows смотрите следующий раздел, в котором объясняется, как использовать файл _curlrc_curlrc.

Если вы посмотрите на первую часть имен этих переменных, то она четко показывает протокол, для которого будут использоваться эти прокси. Это не имеет ничего общего с протоколом, используемым для самого прокси-сервера.

  • http_proxy - прокси будет использоваться для доступа к адресам, использующим протокол http
  • https_proxy - прокси будет использоваться для доступа к адресам, использующим протокол https.

Просто установите переменные http_proxy для адреса http-прокси и https_proxy для адреса https-прокси. Откройте терминал и выполните эти две команды.

После выполнения этих двух команд запустите curl в обычном режиме.

Если вы увидите ошибки SSL-сертификата, добавьте -k, чтобы игнорировать эти ошибки.

Еще одна вещь, которую следует отметить, это то, что эти переменные применяются в масштабах всей системы. Если такое поведение нежелательно, отключите глобальный прокси, сняв эти две переменные:

Смотрите следующий раздел, чтобы установить прокси по умолчанию только для curl, а не для всей системы.

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

Если вам нужен прокси для curl, но не для других программ, этого можно добиться, создав файл конфигурации curl.

Для Linux и MacOS откройте терминал и перейдите в свой домашний каталог. Если там уже есть файл .curlrc, откройте его. Если его нет, создайте новый файл. Ниже приведен набор команд, которые можно выполнить:

В этот файл добавьте следующую строку:

Сохраните файл. Теперь curl с прокси готов к использованию. Просто запустите curl в обычном режиме, и он прочитает прокси из файла .curlrc.

В Windows этот файл называется _curlrc. Этот файл может быть помещен в каталог %APPDATA%.

Чтобы узнать точный путь к %APPDATA%, откройте командную строку и выполните следующую команду:

Эта директория будет иметь вид C:\Users\<ваш_пользователь>\AppData\Roaming. Теперь перейдите в эту директорию и создайте новый файл _curlrc, и установите прокси, добавив эту строку:

Это работает точно так же в Linux, MacOS и Windows.

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

Если прокси установлен глобально или путем изменения файла .curlrc, его можно переопределить, чтобы установить другой прокси или даже обойти его.

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

Если вы хотите полностью обойти прокси для запроса, вы можете передать -noproxy, за которым следует "*". Это даст команду curl не использовать прокси для всех URL.

Если у вас много запросов curl, которые нужно выполнить без прокси, но не менять системные настройки прокси, в следующем разделе будет показано, как это сделать.

Быстрое отключение и включение прокси-серверов

Этот совет предназначен только для опытных пользователей. Если вы не знаете, что такое файл .bashrc, вы можете пропустить этот раздел.

Вы можете создать псевдоним в файле .bashrc для установки прокси и снятия прокси. Например, откройте файл .bashrc с помощью любого редактора и добавьте следующие строки:

После добавления этих строк сохраните .bashrc и обновите оболочку, чтобы она читала этот .bashrc. Для этого выполните в терминале следующую команду:

Теперь, когда вам нужно включить прокси, вы можете быстро включить прокси, запустить одну или несколько команд curl, а затем выключить прокси следующим образом:

cURL socks proxy

Если прокси-сервер использует протокол socks, синтаксис остается тем же:

Аналогично можно использовать socks4://, socks4a://, socks5:// или socks5h:// в зависимости от версии socks.

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

Опять же, можно использовать -socks4, -socks4a или -socks5, в зависимости от версии.

Понравилась статья? Поделиться с друзьями:
Добавить комментарий