Библиотека сайта rus-linux.net
Введение в cURL
Оригинал: An Introduction to cURL
Автор: Obaro Ogbo
Дата публикации: 29 апреля 2015 года
Перевод: А. Кривошей
Дата перевода: июль 2015 г.
curl - это кроссплатформенная утилита командной строки для получения и отправки файлов, использующая синтаксис URL. Название является рекурсивным акронимом для Curl URL Request Library, и это очень мощная программа, поддерживающая большое количество сетевых протоколов, включая HTTP, HTTPS, FTP, FTPS, SCP, SFTP, TFTP, LDAP, LDAPS, DICT, TELNET, FILE, IMAP, POP3, SMTP и RTSP.
curl поддерживает огромное количество полезных функций, в том числе аутентификацию пользователей, прокси-серверы, FTP, HTTP post, куки, возобновление передачи файлов, SSL-соединения и многое другое. В этой статье мы рассмотрим основные возможности curl для тех, кто впервые сталкивается с этой программой или мало знает о ней.
Установка
Для установки curl в системе Debian/Ubuntu используйте следующую команду:
$ sudo apt-get install curl
Синтаксис
curl ждет аргумент в виде url, и будет пытаться скачать любой файл, доступный по этому адресу.
$ curl http://www.maketecheasier.com
По умолчанию содержимое передаваемого файла отображается в командной строке. Если задан выходной файл, программа будет показывать индикатор прогресса с отображением количества переданных данных, скорость передачи, предполагаемое оставшееся время и потраченное время. Для сохранения скачиваемого файла под заданным именем используется опция -o:
$ curl -o mte-index.html http://www.maketecheasier.com
Для сохранения файла с тем же именем, что и на сервере, используется опция -O:
$ curl -O ftp://ftp.kernel.org/pub/linux/kernel/v4.x/linux-4.0.tar.xz
Получение файла с ftp-сервера, где требуется авторизация:
$ curl -O ftp://username:password@ftp.kernel.org/pub/linux/kernel/v4.x/linux-4.0.tar.xz
Для того, чтобы задать несколько URL или частей URL, поместите эти части в фигурные скобки:
$ curl -O http://www.maketecheasier.com/author/{obaro,ivana,vamsi}
Вы также можете задать последовательный диапазон с помощью квадратных скобок:
$ curl -O ftp://ftp.numericals.com/file[1-100].txt $ curl -O ftp://ftp.letters.com/file[a-z].txt $ curl -O http://any.org/archive[1996-1999]/vol[1-4]/part{a,b,c}.html
Для того, чтобы скачать и сохранить несколько файлов в нескольких документах, используется символ "#" в имени файла, за которым следует номер. Они будут заменяться на текущую строку из URL.
$ curl -o "file_#1.txt" http://{one,two}.site.com $ curl -o "output_#1_#2" http://{site,host}.host[1-5].com
Вы можете задать строку User-Agent для идентификации на серверах, для соединений http используйте флаг -A:
$ curl -A "Mozilla/5.0 (Windows NT 6.3; rv:36.0) Gecko/20100101 Firefox/36.0"-o mte-index.html http://www.maketecheasier.com
Для отправки данных с использованием HTTP POST предназначена опция -d:
$ curl -d "username=obaro" -d "password=password" http://maketecheasier.com
Если вы, например, авторизуетесь на сайте, вы можете сохранить куки для последующего использования с помощью опции-c (или --cookie-jar):
$ curl -d "username=obaro" -d "password=password" -c mte-cookies http://maketecheasier.com
Для использования этих сохраненных куки предназначена опция -b:
$ curl -b mte-cookies -d "hc_comment=This is a comment&submit=true" http://www.maketecheasier.com/monitor-hard-disk-health-linux/
Чтобы закачать файл на сайт, воспользуйтесь опцией -T. Для серверов http(s) вместо этого используется команда PUT:
$ curl -T "file1.jpg" http://www.uploadmania.com/upload
Чтобы в принудительном порядке задействовать соединение SSL/TLS, используется флаг --ssl-reqd. Также вы можете активировать SSL/TLS одной командой для нескольких файлов:
$ curl --ssl-reqd -T "file[1-100].jpg" ftp://username:password@ftp.uploadmania.com/upload
С помощью опции -u вы можете задать данные для авторизации:
$ curl -u username:password --ssl-reqd -T "file[1-100].jpg" ftp://ftp.uploadmania.com/upload
curl - очень простая, надежная и функциональная программа. Она имеет огромное количество опций и поддерживает множество протоколов, мы рассмотрели лишь малую долю ее возможностей. Если вы хотите изучить ее в совершенстве, читайте man-страницу:
$ man curl