Команда curl в Linux
Что такое команда curl?
curl (Client URL) — это мощный инструмент командной строки, используемый для передачи данных в системах Linux/Unix. Он поддерживает множество протоколов, включая HTTP, HTTPS, FTP, SFTP и т. д., и является незаменимым инструментом для разработчиков и системных администраторов в их повседневной работе.
Основные возможности curl
- Поддержка множества протоколов: Поддерживает почти все основные сетевые протоколы
- Работа без интерфейса: Полностью консольный инструмент, подходит для скриптов и автоматизированных задач
- Богатый функционал: Поддерживает загрузку/скачивание файлов, отправку форм, обработку Cookie и т. д.
- Кроссплатформенность: Доступен на Linux, macOS и Windows
Базовая структура синтаксиса
Базовый формат синтаксиса команды curl выглядит следующим образом:
curl [options] [URL...]
Описание параметра
options: Различные необязательные параметры, используемые для управления поведением curlURL: Один или несколько URL-адресов для доступа
Подробное объяснение общих опций и параметров
1. Базовое управление запросами
| Опция | Описание | Пример |
|---|---|---|
-X |
Указать метод HTTP | curl -X POST https://example.com |
-d |
Отправить данные POST | curl -d "name=John" https://example.com |
-G |
Отправить данные -d как GET-параметры | curl -G -d "q=keyword" https://search.com |
-H |
Добавить заголовок запроса | curl -H "Content-Type: application/json" https://api.com |
2. Управление выводом
| Опция | Описание | Пример |
|---|---|---|
-o |
Сохранить вывод в файл | curl -o output.html https://example.com |
-O |
Сохранить с использованием имени удалённого файла | curl -O https://example.com/file.zip |
-s |
Тихий режим (не показывать ход выполнения) | curl -s https://api.com/data.json |
-v |
Показывать подробный процесс обмена | curl -v https://example.com |
3. Аутентификация и безопасность
| Опция | Описание | Пример |
|---|---|---|
-u |
Аутентификация по имени пользователя и паролю | curl -u user:pass https://secure.com |
-k |
Игнорировать проверку SSL-сертификата | curl -k https://self-signed.com |
--cacert |
Указать CA-сертификат | curl --cacert cert.pem https://secure.com |
4. Другие практические параметры
| Опция | Описание | Пример |
|---|---|---|
-L |
Следовать перенаправлениям | curl -L https://short.url |
-I |
Получать только информацию заголовка | curl -I https://example.com |
--limit-rate |
Ограничить скорость передачи | curl --limit-rate 100K https://largefile.com |
Разбор практического примера
Пример 1: Получить содержимое веб-страницы
Пример
Эта простейшая команда получит содержимое указанного URL и отобразит его в терминале.
Пример 2: Скачивание файлов
Пример
-OЭта опция сохранит его локально, используя имя удалённого файла (document.pdf).
Пример 3: Отправка POST-запроса
Пример
Эта команда отправляет имя пользователя и пароль в конечную точку входа.
Пример 4: POST-запрос с данными JSON
Пример
-d '{"name":"John","age":30}' \
https://api.example.com/users
Пример 5: Использование Cookie для поддержания сессии
Пример
-cСохранить Cookie, возвращённый сервером-bОтправить сохранённый Cookie
Продвинутое использование
1. Загрузка файла
Пример
-FИспользуется для отправки форм типа multipart/form-data, обычно применяется для загрузки файлов.
2. Проверка времени отклика веб-сайта
Пример
Эта команда выведет:
- Время подключения
- Время до первого байта (TTFB)
- Общее время
3. Используйте прокси-сервер
Пример
-xОпция задаёт адрес и порт прокси-сервера.
Часто задаваемые вопросы
Вопрос 1: Как устранить ошибки проверки сертификата в curl?
При возникновении ошибок SSL-сертификата можно временно использовать-kопцию игнорирования проверки (не рекомендуется для производственных сред) или правильно настроить сертификат CA:
Пример
Вопрос 2: Как отобразить заголовки запроса и ответа?
Используйте-vили-ioption:
Пример
curl -i https://example.com # Показывать только заголовки ответа
Вопрос 3: Как ограничить скорость скачивания?
Используйте--limit-rateопция (единица измерения может быть K, M):
Пример
Практические упражнения
- Попробуйте скачать данные публичного JSON API и сохранить их в файл
- Используйте curl для проверки времени отклика вашего локального сервера разработки
- Попрактикуйтесь в отправке GET-запроса с заголовком аутентификации
- Попробуйте загрузить тестовый файл в бесплатный сервис HTTP bin
Пример
curl https://httpbin.org/get
curl -o test.json https://api.github.com/users/octocat
curl -X POST -F "file=@test.txt" https://httpbin.org/post
Итог
curl — мощный инструмент передачи сетевых данных в системах Linux. После изучения этой статьи вы должны освоить:
- Базовый синтаксис и общие параметры curl
- Примеры использования в различных типичных сценариях
- Расширенные возможности и практические советы
- Решения типичных проблем
Чтобы узнать больше подробностей, вы можете обратиться к официальной документации curl или использоватьman curlПросмотрите страницу руководства. По мере накопления практического опыта вы обнаружите, что curl способен на гораздо большее, чем эти базовые функции.
Энциклопедия команд Linux