curl — кроссплатформенная служебная программа командной строки, позволяющая взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
Программа curl может автоматизировать передачу файлов или последовательность таких операций. Например, это хорошее средство для моделирования действий пользователя в веб-обозревателе. Программа поддерживает протоколы: FTP, FTPS, HTTP, HTTPS, TFTP, SCP, SFTP, Telnet, DICT, LDAP, а также POP3, IMAP и SMTP. Также cURL поддерживает сертификаты HTTPS, методы HTTP POST, HTTP PUT, загрузку на FTP, загрузку через формы HTTP.
Поддерживаемые методы аутентификации: базовая, дайджест, NTLM и Negotiate для HTTP, а также Kerberos для FTP. Возможно возобновление передачи файла с места обрыва (при поддержке протоколом), туннелирование через HTTP-прокси, поддержка HTTP-Cookie. cURL — это не офлайн-браузер типа HTTrack и не может целиком загрузить содержимое сайта.
Libcurl — это библиотека API для передачи, которую разработчики могут встроить в свои программы; cURL действует как автономная обёртка для библиотеки libcurl. libcurl используется, чтобы обеспечить возможность передачи файлов (адресуемых с помощью URL) многочисленным приложениям (как открытым, так и коммерческим).
Выпуск примечателен появлением возможности замены бэкендов для обработки протокола HTTP в curl и libcurl. В качестве опции в состав включён первый альтернативный HTTP-бэкенд Hyper, реализованный на языке Rust. Бэкенд построен с использованием одноимённой библиотеки c реализацией протоколов HTTP/1 и HTTP/2, и позиционируется как более защищённый за счёт применения технологий безопасной работы с памятью.
Изменения в новой версии программы:
- Добавлена опция "--create-file-mode [mode]", позволяющая задать права доступа для файлов, сохраняемых на удалённом сервере (для протоколов, поддерживающих подобное сохранение).
- В опции "--write-out" применяемой для настройки вывода информации о ходе передачи данных, добавлена поддержка новых переменных: onerror для определения сообщения при ошибке, url для подстановки url, exitcode для подстановки кода ошибки, errormsg для подстановки сообщения об ошибке, stderr для отправки в stderr и т.п.
- Расширен синтаксис параметра CURLOPT_RESOLVE, в котором теперь допускается добавление временных записей.
- Добавлена поддержка "gophers://", защищённого варианта протокола Gopher, работающего поверх TLS.
- Добавлена поддержка AWS HTTP v4 Signature.