Если вы когда-нибудь писали запрос к API, тестировали веб-сервер или просто пытались понять, почему не грузится страница — скорее всего, сталкивались с curl.
Curl — утилита, с помощью которой можно отправлять HTTP-запросы, загружать и отправлять файлы, тестировать API и даже проверять заголовки сайта. Разбираемся, как работает curl, зачем он нужен и как с ним подружиться.
Что такое Curl
Curl — это консольная утилита, которая позволяет отправлять запросы по разным интернет-протоколам: HTTP, HTTPS, FTP, SMTP и не только. Название расшифровывается как Client for URLs, и это буквально то, что она делает — «разговаривает» с адресами в интернете.
Может скачать HTML-страницу, отправить данные на сервер, получить JSON от API, проверить ответ сайта или просто посмотреть, как работает тот или иной ресурс. Всё это — без браузера, через терминал, одной строкой.
Curl встроен почти во все Unix-системы — в macOS, Linux, даже в Windows его теперь добавляют по умолчанию. То есть ничего устанавливать не нужно: открываете терминал — и curl уже там, готов работать. Главное — понять, как его правильно использовать.
Сила curl — в гибкости. Он работает с заголовками, токенами, авторизацией, файлами, редиректами, кэшами и сотней других параметров. При этом вся команда помещается в одну строку. Научиться базовому синтаксису — дело пары минут, а пользы — как от полноценного инструмента для диагностики и взаимодействия с сетью.
Зачем нужен Curl
Curl применяется в самых разных задачах — от отладки API до автоматизации интеграций между системами. Его основное предназначение — выполнение HTTP-запросов к удалённым серверам и работа с их ответами. Это делает curl универсальным инструментом для всех, кто взаимодействует с веб-протоколами на низком уровне: разработчиков, тестировщиков, DevOps-инженеров, аналитиков и администраторов.
Для backend-разработчиков curl — быстрый способ протестировать REST API без необходимости запускать браузер или использовать интерфейсные инструменты вроде Postman. Он позволяет отправлять GET, POST, PUT, DELETE и другие запросы, передавать параметры, заголовки, авторизационные токены и тела запроса (в том числе в формате JSON, XML или form-data). Особенно это полезно при отладке эндпоинтов, проверке ответов и симуляции пользовательского поведения.
Тестировщики используют curl для создания запросов с разными конфигурациями, чтобы проверить, как API или веб-приложение обрабатывает ошибки, редиректы, коды состояния, CORS и безопасность. Также curl позволяет эмулировать плохие подключения, отправлять запросы с конкретным user-agent или заголовками cookies.
DevOps и системные администраторы применяют curl для мониторинга доступности ресурсов, проверки SSL-сертификатов, HEAD-запросов, скорости загрузки и времени отклика. Например, можно за пару секунд проверить, отдаёт ли сервер нужные заголовки, работает ли редирект или не истёк ли TLS-сертификат.
Еще его используют в скриптах и автоматизации: он хорошо встраивается в bash, cron и CI/CD пайплайны, где может загружать данные, отправлять уведомления или выполнять проверки. Благодаря поддержке более 20 сетевых протоколов (включая FTP, SMTP, SCP и другие), curl становится мощным инструментом далеко за пределами HTTP.
Своего рода, это язык прямого диалога с сервером. Он помогает не просто проверить, «работает или нет», а увидеть, как именно работает.
Как установить и запустить Curl
В большинстве случаев curl уже установлен в вашей системе — особенно если вы используете macOS, Linux или современные версии Windows. Чтобы проверить это, откройте терминал и введите:
curl --version
Если команда вернула номер версии и список поддерживаемых протоколов — curl работает, и можно сразу переходить к практике.
Установка на разных системах
Если curl по какой-то причине не установлен, его легко добавить:
На macOS (если используете Homebrew)
brew install curl
На Windows
С последних версий curl уже включён в систему. Если его нет, можно скачать с официального сайта, либо установить через Chocolatey:
choco install curl
Запуск Сurl
После установки curl готов к работе. Самый простой пример запроса — получить HTML‑код любой страницы:
curl https://example.com
Вы увидите сырое содержимое страницы прямо в терминале. А дальше — можно добавлять флаги, заголовки, методы, авторизацию и любые другие параметры. Curl работает прямо из командной строки, не требует графического интерфейса и запускается за доли секунды — в этом его главное удобство.
Разбираем базовый синтаксис
Curl позволяет гибко управлять практически всеми аспектами HTTP-запроса — от метода и тела до таймаутов, куки и прокси. Чем дальше вы с ним работаете, тем больше инструментов открывается.
Дополнительные флаги, которые пригодятся:
- —header — синоним -H, если хотите более читаемый вариант.
- —data или —data-raw — тоже самое, что -d, но иногда помогает при работе с JSON.
- —user — используется для базовой авторизации (Basic Auth).
curl -u login:password https://example.com/secure
- —cookie — отправка куки-файлов вручную.
curl --cookie "session_id=abc123" https://example.com
- —max-time — ограничивает продолжительность запроса (например, 10 секунд):
curl --max-time 10 https://example.com
- —compressed — позволяет запрашивать сжатый ответ (gzip), как это делают браузеры.
Пример запроса с куки, таймаутом и заголовками:
curl -X GET https://api.example.com/orders \ -H "Accept: application/json" \ --cookie "token=xyz" \ --max-time 5
Как протестировать свой API:
Если вы разработчик, curl пригодится для ручного тестирования backend-а. Например, вы можете проверить регистрацию:
curl -X POST https://myapp.dev/register \ -H "Content-Type: application/json" \ -d '{"email":"user@example.com","password":"123456"}'
А затем авторизацию:
curl -X POST https://myapp.dev/login \ -d "email=user@example.com&password=123456"
Curl удобен ещё и тем, что легко копируется и вставляется. Большинство популярных сервисов (например, Postman, Swagger или Insomnia) даже умеют экспортировать запрос в curl-формате — это делает его универсальным инструментом в любой техстеке. Освоив синтаксис однажды, вы сможете решать с его помощью десятки задач — быстро и без лишнего клика.
Как правильно использовать curl
- Проверка доступности сайта:
curl https://example.com
Это базовая команда, которая делает GET‑запрос к указанному URL и выводит содержимое ответа (обычно HTML‑код страницы). Подходит для быстрой проверки: «живой ли сайт», «отдаёт ли сервер хоть что-то» и есть ли соединение.
- Следовать за редиректами:
curl -L https://example.com
Если сайт настроен на автоматический редирект (например, с http на https), curl по умолчанию остановится на первом ответе. Флаг -L говорит утилите: «иди дальше», — и она выполнит полный переход по цепочке редиректов, как это делает браузер.
- Отправить POST‑запрос с данными формы:
curl -X POST -d "login=user&pass=1234" https://example.com/login
Это пример отправки формы в x-www-form-urlencoded формате — таком, как если бы вы нажали кнопку «Войти» на обычной веб-странице. Полезно при тестировании авторизации, регистрации, форм подписки и прочих действий.
- Работа с JSON (типичный API‑запрос):
curl -X POST https://api.example.com/data \
-H «Content-Type: application/json» \
-d ‘{«name»: «Alice», «age»: 30}’
curl -X POST https://api.example.com/data \ -H "Content-Type: application/json" \ -d '{"name": "Alice", "age": 30}'
Для работы с REST API часто нужно отправлять запрос в формате JSON. Здесь мы явно указываем метод POST, добавляем заголовок с типом содержимого и передаём тело запроса. Такая команда подойдёт, если вы работаете с backend-сервером или пишете интеграцию.
- Передача токена (авторизация):
curl -H "Authorization: Bearer YOUR_TOKEN" https://api.example.com/profile
Многие API требуют авторизации. Самый распространённый способ — токен в заголовке запроса. curl позволяет добавить любые заголовки, и с этим флагом вы легко получите доступ к защищённым данным.
- Сохранение файла:
curl -o filename.zip https://example.com/file.zip
Иногда нужно скачать файл напрямую. Этот флаг (-o) позволяет сохранить результат в конкретный файл, а не просто выводить его в терминал. Удобно для автоматизации загрузок, скриптов и просто скачивания больших архивов.
- Тихий режим (без лишней информации):
curl -s https://example.com
По умолчанию curl показывает прогресс, статус, ошибки и результат запроса. Если вам нужно просто «тихо» получить данные (например, в скрипте), флаг -s отключает весь лишний вывод, кроме самого содержимого ответа.
Эти команды покрывают 90% повседневных задач с curl. Остальное — дело комбинаций и чуть большего опыта. Главное — помнить, что curl работает как строительный конструктор: чем лучше вы понимаете, что хотите от сервера, тем точнее сможете это сформулировать в одной строке.