Утилита curl
Отредактирована 23.12.2025
Основные возможности curl:
1. HTTP/HTTPS запросы
# Простой GET запрос curl https://api.example.ru/data # GET запрос с сохранением результата в файл output.json curl -o output.json https://api.example.ru/data # GET запрос с сохранением результата в файл с расширением .txt для дальнейшего анализа curl https://api.example.ru/data > site-example.ru.txt # Следовать перенаправлениям curl -L https://api.example.ru/data
2. Отправка данных (POST, PUT)
# POST с form-date curl -X POST -d "name=John&age=30" https://api.example.ru/users # POST с JSON данными curl -X POST -H "Content-Type: application/json" \ -d '{"name":"John", "age":30}' \ https://api.example.ru/users # POST с файлом curl -x POST -F "file=@document.pdf" https://api.example.ru/upload
3. Работа с заголовками
# Показать заголовки ответа curl -I https://example.com # Отправить кастомные заголовки curl -H "Authorization: Bearer token123" \ -H "User-Agent: MyApp/1.0" \ https://api.example.com/data
4. Аутентификация
# Базовая аутентификация curl -u username:password https://api.example.ru # Аутентификация с токеном curl -H "Authorization: Token your-token" https://api.example.ru
Практические примеры использования curl:
1. Тестирование API
# Проверка здоровья сервиса curl -X GET https://api.service.ru/health # Создание ресурса через API curl -X POST -H "Content-Type: application/json" \ -d '{"title":"Test", "completed":false}' \ https://jsonplaceholder.typicode.com/todos
2. Загрузка файлов
# Скачать файл curl -O https://example.ru/file.zip # Продолжить прерванную загрузку curl -C - -O https://example.ru/large-file.iso
3. Отладка и диагностика
# Подробный вывод (verbose) curl -v https://api.nocip.ru
# Только заголовки curl -I https://nocip.ru
# Проверить код состояния от веб-сервера curl -s -o /dev/null -w "%{http_code}" https://nocip.ru
# Измерить время запроса, простой способ curl -w "Total time: %{time_total} seconds\n" -o /dev/null -s "https://nocip.ru"
# Измерить время запроса, детальный способ curl -w " DNS lookup: %{time_namelookup}s TCP connect: %{time_connect}s SSL handshake: %{time_appconnect}s Server processing: %{time_starttransfer}s Total time: %{time_total}s\n" -o /dev/null -s "https://www.nocip.ru"
- 200 OK - запрос успешно выполнен;
- 202 Accepted - запрос принят, но ещё не обработан;
- Ошибки в коде приложения (PHP/Python/Node.js);
- Проблемы с базой данных;
- Нехватка оперативной памяти.
504 Gateway Timeout - время шлюза истекло
- Падение backend-сервиса;
- Таймауты между серверами;
- Перегрузка прокси-сервера.
4. Работа с cookies
# Сохранить cookies в файл curl -c cookies.txt https://example.ru/login # Использовать сохранённые cookies curl -b cookies.txt https://example.ru/dashboard
- -X - метод HTTP (GET, POST, PUT, DELETE);
- -H - добавить заголовок;
- -d - данные для отправки (POST);
- -F - отправка form-data;
- -u - аутентификация;
- -o - сохранить вывод в файл;
- -O - сохранить с оригинальным именем;
- -L - следовать перенаправлениям;
- -v - подробный вывод;
- -I - только заголовки ответа (где -I это i с заглавной буквы);
- -c - сохранить cookies;
- -b - отправить cookies.
- HTTP/HTTPS
- FTP/FTPS
- SCP/SFTP
- LDAP
- SMTP
- POP3
- IMAP
- и многие другие
- Тестирование REST API
- Автоматизация веб-запросов
- Отладка сетевых проблем
- Веб-скрапинг
- Мониторинг доступности сервисов
- Интеграция в скрипты и CI/CD