Команда curl. Синтаксис. Примеры использования
Сurl – утилита командной строки для скачивания и загрузки данных. Она выросла из проекта шведского программиста Даниэля Стенберга. Изначально в середине 90-х, на заре развития Интернета, он разрабатывал бота, который должен был загружать с веб-страницы курсы валют и сообщать пользователям IRC эквивалент шведских крон в долларах США. Со временем проект развивался, появлялась поддержка различных протоколов и новые функции. Теперь curl используется для передачи любых данных и ряда других полезных задач. Рассмотрим основные моменты работы с этим инструментом.
Синтаксис и опции curl
Синтаксис команды следующий:
В качестве аргумента задается, как правило, URL скачиваемого файла. Основные опции перечислены ниже
Основные опции мы рассмотрим на простых примерах.
Просмотр версии curl
Если вам требуется скачать файл, запустите curl с опцией –O или –o. Первая из них сохраняет файл в текущей рабочей директории под тем же именем, что и в удаленном месторасположении. Вторая опция позволяет вам указать другое имя и/или место для скачивания.
Cохранение файла под исходным именем (yourfile) в текущей рабочей директории.
Cохранение файла под именем newfile в директории /tmp/examplе/.
Возобновление прерванной загрузки
Если скачивание по какой-то причине было прервано (например, пользователь нажал Ctrl+C), вы легко можете возобновить его с момента остановки при помощи опции -C – (дефис, С, тире):
Скачивание нескольких файлов
Следующая команда позволит вам скачать info.html с http://yoursite.com и about.html c http://mysite.com в один прием:
Если использовать curl вместе с командой xargs, можно скачивать файлы в соответствии со списком URL, заданном в файле (в данном примере listurls.txt):
Использование прокси-сервера
Если вы подключены через прокси-сервер, нужно указать его команде curl при помощи следующих опций (в данном примере имя сервера proxy.yourdomain.com, порт 8080, имя пользователя user, пароль qwerty1234):
Запрос HTTP-заголовков
HTTP-заголовки позволяют удаленному веб-серверу помимо ответа на сам запрос отправлять дополнительную информацию. Она предоставляет клиенту данные о том, как обрабатывать ответ:
Также эту информацию можно получить, воспользовавшись функциями браузера для разработчиков.
cURL POST-запросы с параметрами
Следующая команда отправит на https://yourdomain.com/info.php параметры firstName и lastName с соответствующими значениями:
Этим приемом можно пользоваться для симуляции работы обычных веб-форм.
Следующая команда скачивает в текущую рабочую директорию файл yourfile с удаленного FTP-сервера ftp://yourftpserver (имя пользователя user, пароль qwerty1234):
Если FTP-сервер поддерживает анонимный вход, параметр –u с именем пользователя и пароля указывать не нужно.
Загрузка файлов на FTP-сервер
Для загрузки локального файла mylocalfile.tar.gz воспользуйтесь следующей командой:
Указание агента пользователя
Агент пользователя – часть информации HTTP-запроса. Она показывает, каким браузером пользуется клиент. Можно посмотреть, что имеющаяся версия curl передает по умолчанию и установить новое значение:
Запись файлов cookie с веб-сайта
Хотите посмотреть, какие файлы cookie скачиваются на ваш компьютер, когда вы заходите на определенный сайт? Опция —cookie-jar сохраняет их список в файл, который в дальнейшем можно просмотреть при помощи команды cat.
Отправка файлов cookie на сайт
Полученные в предыдущем примере файлы cookie можно использовать в дальнейших запросах к тому же самому сайту:
Изменение разрешения имен
Если вы веб-разработчик и хотите протестировать локальную версию сайта, прежде чем загружать его на сервер, при помощи опции —resolve можно указать curl выполнять разрешение имени вашего сайта на адрес локального узла, например:
Таким образом, при запросе на http://www.yourdomain.com curl будет запрашивать сайт с локального узла, а не использовать DNS или файл /etc/hosts.
Ограничение скорости скачивания
Чтобы curl не занимал всю пропускную способность канала, можно ограничить скорость скачивания при помощи опции —limit-rate:
Заключение
Мы рассмотрели краткую историю появления curl и наиболее характерные примеры применения этой команды. Для более подробной информации можно обратиться к соответствующей man-странице.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Команда Curl в Linux с примерами
В этом руководстве мы покажем вам, как использовать инструмент завивки, на практических примерах и подробных объяснениях наиболее распространенных вариантов завивки.
Установка Curl
Сегодня пакет curl предустановлен в большинстве дистрибутивов Linux.
Если curl не установлен, вы можете легко установить его с помощью диспетчера пакетов вашего дистрибутива.
Установите Curl в Ubuntu и Debian
Установите Curl на CentOS и Fedora
Как использовать Curl
Синтаксис команды curl следующий:
В простейшей форме при вызове без каких-либо параметров curl выводит указанный ресурс на стандартный вывод.
Например, чтобы получить домашнюю страницу example.com вы должны запустить:
Команда напечатает исходный код домашней страницы example.com в окне вашего терминала.
Сохранить вывод в файл
Скачать несколько файлов
В следующем примере мы загружаем iso-файлы Arch Linux и Debian:
Возобновить загрузку
Например, если вы загружаете iso-файл Ubuntu 18.04 с помощью следующей команды:
и внезапно ваше соединение прерывается, вы можете возобновить загрузку с помощью:
Получить HTTP-заголовки URL-адреса
Заголовки HTTP — это пары ключ-значение, разделенные двоеточиями, содержащие такую информацию, как пользовательский агент, тип контента и кодировка. Заголовки передаются между клиентом и сервером с запросом или ответом.
Проверьте, поддерживает ли веб-сайт HTTP / 2
Если удаленный сервер поддерживает HTTP / 2, curl печатает HTTP/2.0 200 :
В противном случае ответ будет HTTP/1.1 200 :
Следить за перенаправлениями
По умолчанию curl не следует за заголовками HTTP Location.
Если вы попытаетесь получить версию google.com без www, вы заметите, что вместо получения источника страницы вы будете перенаправлены на версию с www:
Сменить User-Agent
Иногда при загрузке файла удаленный сервер может быть настроен так, чтобы блокировать пользовательский агент Curl или возвращать различное содержимое в зависимости от устройства посетителя и браузера.
Например, для эмуляции Firefox 60 вы должны использовать:
Укажите максимальную скорость передачи
В следующем примере curl загрузит двоичный файл Go и ограничит скорость загрузки до 1 МБ:
Эта опция полезна для предотвращения использования curl всей доступной полосы пропускания.
Передача файлов через FTP
После входа в систему команда выводит список всех файлов и каталогов в домашнем каталоге пользователя.
Вы можете загрузить один файл с FTP-сервера, используя следующий синтаксис:
Отправить файлы cookie
Иногда вам может потребоваться выполнить HTTP-запрос с определенными файлами cookie для доступа к удаленному ресурсу или для отладки проблемы.
По умолчанию при запросе ресурса с помощью curl файлы cookie не отправляются и не сохраняются.
Например, чтобы загрузить rpm-файл Oracle Java JDK jdk-10.0.2_linux-x64_bin.rpm вам необходимо передать файл cookie с именем oraclelicense со значением a :
Использование прокси
Следующая команда загружает указанный ресурс с помощью прокси на 192.168.44.1 порт 8888 :
Выводы
curl — это инструмент командной строки, который позволяет передавать данные с удаленного хоста или на него. Это полезно для устранения неполадок, загрузки файлов и многого другого.
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.
Утилита командной строки CURL
CURL — утилита командной строки для Linux или Windows, поддерживает работу с протоколами: FTP, FTPS, HTTP, HTTPS, TFTP, SCP, SFTP, Telnet, DICT, LDAP, POP3, IMAP и SMTP. Она отлично подходит для имитации действий пользователя на страницах сайтов и других операций с URL адресами. Поддержка CURL добавлена в множество различных языков программирования и платформ.

Запускаем командную строку, переходим в директорию curl/bin и пытаемся скачать главную страницу Google:
Следовать за редиректами
Сохранить вывод в файл
Сохраняем страницу Google в файл google.html :
Сохраняем документ gettext.html в файл gettext.html :
Загрузить файл, только если он изменён
Прохождение аутентификации HTTP
Получение и отправка cookie
Cookie используются сайтами для хранения некой информации на стороне пользователя. Сервер сохраняет cookie на стороне клиента (т.е. в браузере), отправляя заголовки:
А браузер, в свою очередь, отправляет полученные cookie обратно на сервер при каждом запросе. Разумеется, тоже в заголовках:
Передать cookie на сервер, как будто они были ранее получены от сервера:
Чтобы сохранить полученные сookie в файл:
Затем можно отправить сохраненные в файле cookie обратно:
Файл cookie.txt имеет вид:
Получение и отправка заголовков
По умолчанию, заголовки ответа сервера не показываются. Но это можно исправить:
Если содержимое страницы не нужно, а интересны только заголовки (будет отправлен HEAD запрос):
А вот так можно отправить свой заголовок:
Отправка данных методом POST
Содержимое файла data.txt :
Пример URL-кодирования данных из файла перед отправкой POST-запроса:
Содержимое файла username.txt :
Загрузка файлов методом POST
Чтобы отправить на сервер данные такой формы:
Работа по протоколу FTP
Скачать файл с FTP-сервера:
Если заданный FTP путь является директорией, то по умолчанию будет выведен список файлов в ней:
Как пользоваться curl
Нам часто приходится загружать различные файлы из интернета, например, исполняемые файлы программ, файлы скриптов, архивы с исходниками. Но не всегда это нужно делать через браузер. Во многих ситуациях гораздо проще выполнить все действия через терминал. Поскольку таким образом вы можете автоматизировать процесс. С другой стороны, веб-мастерам время от времени приходится тестировать доступность веб-сайтов, проверять отправляемые и получаемые заголовки и многое другое.
Для решения таких задач и задач подобного круга можно воспользоваться утилитой curl. Она позволяет решить намного более широкий круг задач, среди которых даже имитация действий пользователя на сайте. В этой статье мы рассмотрим как пользоваться curl, что это такое и зачем нужна эта программа.
Что такое curl?
Команда curl
Перед тем как перейти к описанию того как может использоваться команда curl linux, давайте разберем саму утилиту и ее основные опции, которые нам понадобятся. Синтаксис утилиты очень прост:
$ curl опции ссылка
Теперь рассмотрим основные опции:
Это далеко не все параметры curl linux, но здесь перечислено все основное, что вам придется использовать.
Как пользоваться curl?
Мы рассмотрели все, что касается теории работы с утилитой curl, теперь пришло время перейти к практике, и рассмотреть примеры команды curl.
Загрузка файлов
Но тут вас ждет одна неожиданность, все содержимое файла будет отправлено на стандартный вывод. Чтобы записать его в какой-либо файл используйте:
Если загрузка была неожиданно прервана, вы можете ее возобновить:
Если нужно, одной командой можно скачать несколько файлов:
Данная команда скачает файл, только если он был изменен после 21 декабря 2017.
Ограничение скорости
Передача файлов
Или проверим отправку файла по HTTP, для этого существует специальный сервис:
В ответе утилита сообщит где вы можете найти загруженный файл.
Отправка данных POST
Здесь мы передаем формой поле password, с типом обычный текст, точно так же вы можете передать несколько параметров.
Передача и прием куки
Затем можно отправить cookie curl обратно:
Передача и анализ заголовков
Аутентификация curl
Точно так же будет выполняться аутентификация на серверах HTTP.
Использование прокси
Выводы
В этой статье мы рассмотрели как пользоваться curl, зачем нужна эта утилита и основные ее возможности. Несмотря на свою схожесть с wget, они очень сильно отличаются. Команда curl linux предназначена больше для анализа и имитации различных действий на сервере, тогда как wget больше подходит для загрузки файлов и краулинга сайтов.
Что JavaScript-разработчику следует знать о Curl
Доброго времени суток, друзья!
Представляю Вашему вниманию перевод статьи «What JavaScript Developers Should Know About Curl» автора Valery Karpov.
Curl — это популярный инструмент командной строки, часто используемый для отправки HTTP-запросов. Curl поддерживает большое количество протоколов, однако как Node.js-разработчик вы, скорее всего, будете использовать его для отпраки http-запросов к RESTful API.
Документация curl представляет собой перечень из 383 флагов командной строки, поэтому в ней очень трудно найти то, что ищешь. В этой статье я хочу поделиться с вами некоторыми часто используемыми мной шаблонами. Для примеров будет использоваться сервис httpbin.org.
Отправка http-запроса
Загрузка файлов
Wget — самый распространенный инструмент для загрузки файлов посредством командной строки. Он входит в комплект большинства диструбутивов Linux. Однако в OSX его нет.
Для загрузки этого изобюражения необходимо выполнить следующее:
Отправка авторизованного запроса
Вот что происходит при отправке неправильного имени пользователя или пароля:
Отправка POST-запроса, содержащего JSON
Отправка PUT-запроса, содержащего JSON-файл
Заключение
Резюмируя, вот опции curl, которые я нахожу самыми полезными:
Благодарю за потраченное время. Надеюсь, оно было потрачено не зря.















