Curl - это популярная утилита командной строки для передачи данных на сервер или с сервера по более чем 25 протоколам. Инструмент командной строки Curl предоставляет несколько дополнительных возможностей, таких как аутентификация пользователей, поддержка прокси, возобновление передачи, ограничение пропускной способности и скорости передачи данных и многое другое. Команды Curl работают без участия пользователя и поэтому идеально подходят для использования в сценариях автоматизации. В этой статье мы рассмотрим 12 наиболее важных команд Curl для повседневного использования при выполнении запросов по протоколам HTTP/HTTPS.
Как установить Curl?
Вы можете установить Curl на Linux, Windows и macOS следующими способами:
Установка Curl в Linux
В Linux введите следующую команду для установки Curl:
Пример установки Curl в Linux
1 | sudo apt install curl |
или
1 | sudo apt-get install curl |
Установка Curl в Windows
Чтобы использовать Curl на Windows, скачайте программу установки с официального сайта Curl и распакуйте архив curl.zip в нужную локальную папку на вашем компьютере. Добавьте папку Curl (обычно C:\Curl\bin) в переменную окружения Windows PATH, чтобы вызывать команду Curl из любого другого места. Введите curl --version в командной строке, чтобы убедиться, что вы можете использовать Curl в Windows.
1 | curl --version |
Установка Curl на macOS
Curl уже поставляется с macOS. Вы можете обновить Curl до последней версии, установив менеджер пакетов macOS Homebrew. После установки Homebrew откройте Терминал и введите:
1 | brew install curl |
Как использовать инструмент командной строки Curl?
Синтаксис команд Curl зависит от протокола. Для протокола HTTP синтаксис командной строки Curl выглядит следующим образом:
1 | curl [options] [URL] |
Получение содержимого ресурса по URL
Команда Curl для получения содержимого страницы
1 | curl https://example.com/echo |
Если параметры не указаны, Curl отправляет HTTP GET-запрос на сервер и выводит содержимое ресурса (например, HTML-код страницы) на стандартный вывод (обычно в окно терминала).
Сохранение содержимого URL в файл
Команда Curl для сохранения содержимого URL в файл
1 | curl -o logo.png https://example.com/static/img/logo.png |
Опция командной строки Curl -o указывает Curl на сохранение содержимого URL в текущем рабочем каталоге с указанным именем файла. Ресурс загружается с помощью метода запроса GET.
Загружайте несколько файлов одновременно
1 2 3 | curl -O https://example.com/static/img/code/curl.png -O https://example.com/static/img/code/java.png -O https://example.com/static/img/code/python.png |
Список URL-адресов передается Curl с одним из параметров командной строки -o или -O. Как мы видели в примере № 2, для параметра командной строки -o можно передать имя файла, под которым будет сохранен ресурс, а параметр командной строки -O указывает Curl на сохранение загруженного ресурса с исходным именем файла.
Проверка HTTP-заголовков страницы
1 | curl -I https://example.com/echo |
Параметр -I указывает Curl отправить серверу запрос HTTP HEAD вместо GET. Запрос HEAD похож на GET, за исключением того, что сервер возвращает только HTTP-заголовки. Это удобно, если вы хотите проверить только заголовки URL и не загружать содержимое страницы (для экономии интернет-трафика).
Заставьте Curl использовать протокол HTTP/2
1 | curl --http2 https://example.com |
Параметр --http2 заставляет Curl использовать протокол HTTP/2 вместо HTTP/1.1. В сочетании с параметром командной строки -I мы можем использовать эту команду Curl, чтобы проверить, поддерживает ли веб-сайт протокол HTTP/2.
Перенаправления по принципу "следуй за мной"
1 | curl -L //www.example.com/echo |
По умолчанию Curl не выполняет перенаправления (коды состояния HTTP 301 и 302). Параметр -L указывает Curl на необходимость выполнения HTTP-перенаправлений.
Используйте прокси-сервер
1 | curl -x proxy.domain.com:8080 -U user:password https://example.com |
Если вы находитесь за прокси-сервером, параметр командной строки -x позволит вам отправлять запросы через прокси-сервер. Параметр командной строки -U передает прокси-серверу имя пользователя и пароль.
Предоставьте дополнительные HTTP-заголовки к запросу
1 | curl -H "Accept: application/json" https://example.com/echo/get/json |
Параметр командной строки -H позволяет передавать серверу дополнительные HTTP-заголовки. Вы можете указать столько HTTP-заголовков, сколько хотите, используя опцию -H несколько раз.
Отправка данных на сервер
1 2 3 | curl -d '{"id": 123456}' -H "Content-Type: application/json" https://example.com/echo/post/json |
Параметр -d командной строки указывает Curl на отправку предоставленных данных на сервер с помощью метода запроса HTTP POST. За параметром -d обычно следует параметр -H для указания типа данных.
Измените строку User-Agent
1 | curl --user-agent "MyAppName 1.0" https://example.com/echo |
Параметр командной строки --user-agent позволяет передать любую строку, которая будет использоваться вместо стандартной строки Curl User-Agent. Это может быть полезно, если сервер принимает запросы только от определенных браузеров.
Отправка файлов cookie на веб-сайт
1 | curl -b "name1=value1; name2=value2" https://example.com |
Параметр командной строки -b позволяет отправлять файлы cookie обратно на веб-сайт. Вы можете использовать ключ -b с именем файла, содержащего куки, или передать куки в строке.