cURL — это один из самых универсальных и мощных инструментов командной строки. Когда дело касается работы с интернетом, он способен почти на всё: если ресурс доступен по URL, cURL справится без вопросов!
Загрузка веб-страницы
Начнём с самого простого
В своей самой базовой форме cURL просто "берёт" содержимое по указанному URL и отображает его прямо в терминале:
Что именно появится — полностью зависит от самого ресурса. Запросите сайт — увидите HTML-код:
Хотите сохранить страницу в файл — делается это тоже очень просто:
При выводе в файл, cURL автоматически покажет информацию о скорости и времени загрузки в стандартный поток ошибок:
Если в адресе есть специальные символы — например, «?» или «#», — обязательно заключайте URL в одинарные кавычки. Лучше сделать это своей привычкой: так вы избежите случайных ошибок.
Скачиваем файлы на раз-два
Забудьте про “Сохранить как”
Если попытаться скачать через cURL бинарный файл, например, изображение или Word-документ, вы получите предупреждение: «Бинарный вывод может повредить ваш терминал». Это потому, что по умолчанию cURL выводит контент как текст прямо в экран.
В таком случае вам советуют явно указывать опцию --output (или коротко -o), чтобы сохранить файл, а не выводить его на экран:
Файл окажется в текущей папке. При сохранении в файл, вместо лавины нечитаемого текста вы увидите лаконичную статистику о загрузке. Хотите видеть симпатичный прогресс-бар? Используйте -# или --progress-bar:
Молниеносная установка программ прямо из интернета
Главное — доверяйте только проверенным источникам!
Порой в инструкциях предлагают установить программу через cURL — одной командой. Например, для утилиты atuin (продвинутая история команд) нужна всего строка в терминале:
Если просто открыть ссылку через браузер, вы увидите установочный shell-скрипт. Его можно сначала скачать, а можно ещё быстрее — сразу передать в shell с помощью конвейера. Важно: всё, что cURL скачает таким образом, тут же отправится на выполнение через sh.
В примере с atuin используется сразу несколько опций cURL:
Но всегда будьте осторожны: скачивать и запускать скрипты напрямую из интернета — это всегда риск. Не просто доверяйте адресу: убедитесь, что никто не подменил сайт или скрипт по пути (например, не было атаки "человек посередине"). HTTPS снижает риски, а самый верный способ — скачать файл, прочитать, а уже потом запускать.
Узнай свой внешний IP — мгновенно!
Абсолютный хит среди cURL-команд
Самый быстрый способ узнать свой внешний IP — воспользоваться сервисом ifconfig.co через cURL:
В результате вы получите только ваш IP-адрес:
Такой лаконичный ответ отлично подходит для автоматизации. Если зайти по этому адресу браузером, сервис покажет расширенную страницу — с вашей страной, регионом и прочей информацией:
Разница в ответе определяется User-Agent-ом. По умолчанию cURL отправляет что-то вроде «curl/8.x.x». Хотите выглядеть как обычный браузер? Укажите -A или --user-agent:
Теперь сайт пришлёт обычную, "браузерную" страницу:
Как узнать свой внешний IP в bash-скрипте на Linux
Посмотрите на себя глазами интернета.
Смотрим на HTTP-заголовки изнутри — прямой доступ
Погружаемся в дебри
Иногда нужно увидеть не сам контент, а только заголовки ответа — например, чтобы найти причину ошибки или понять, как кэшируются файлы. Для этого пригодятся опции -I или --head:
Этот способ делает HTTP HEAD-запрос, но не все серверы его поддерживают. Если получите ошибку — вместо него используйте GET и покажите только заголовки:
Чтобы увидеть все детали запроса и ответа, добавьте --verbose или коротко -v:
Работаем с API — всё под рукой!
На практике — проще некуда
Для работы с API есть специальные программы, как Postman, но часто проще и быстрее использовать cURL. Пример для тренировки — сервис DummyJSON: это учебный API с готовой базой данных. Здесь можно отрабатывать запросы, играться с авторизацией, проверять редиректы и случайные ответы.
Отправить запрос через cURL — дело одной команды: просто укажите нужный endpoint:
Результат — небольшой JSON: если используете GET, то в ответе поле method покажет именно "GET":
Результаты удобно обрабатывать стандартными инструментами унивсов Unix — например, извлекать нужные данные из JSON при помощи jq. Например, получаем первый товар из списка так:
Как распарсить JSON в Linux-терминале через jq
Благодаря jq вытаскиваем из JSON всё что угодно — покажу самые простые лайфхаки!
Получаем свежие новости (RSS) прямо из терминала
Намного круче, чем кажется!
В одном из моих последних проектов — консольном RSS-клиенте — cURL стал сердцем всей работы: он быстро скачивает ленты и отлично дружит с разными протоколами. Вот так можно просто забрать RSS-ленту и посмотреть её “сырьё”:
Если у вас стоит libxml, анализировать XML удобно через xmllint:
Например, чтобы вытащить заголовок канала из RSS-ленты с помощью XPath-запроса:
cURL для программистов — автоматизируйте всё подряд!
Почти безграничные возможности
Проект cURL — это не только консольная команда. Есть ещё библиотека libcurl, с которой и работает сам cURL. Она есть и для Linux, и для Windows, macOS, Android. Libcurl написана на C, но для неё есть обёртки для C++, Python, Rust, Go и многих других языков.
Подпишитесь на рассылку с лайфхаками по cURL и работе в терминале!
Через libcurl доступны почти все функции, что есть в командной строке cURL. Вот пример, как это реализуется на PHP:
curl_init() запускает новую сессию и возвращает дескриптор. Настройки делаются через curl_setopt(). curl_exec() отправляет запрос. Ошибки ловятся через curl_error(), а завершение — через curl_close().
В примере используется настройка CURLOPT_FILE — она позволяет сразу сохранить тело ответа в файл. Это аналог опции --output в обычном cURL.
Всегда есть что изучить!
Хотите ещё круче владеть терминалом? Начните с git или попробуйте пару bash-лайфхаков — какой простор для возможностей открывается!
Если вам понравилась эта статья, подпишитесь, чтобы не пропустить еще много полезных статей!
Премиум подписка - это доступ к эксклюзивным материалам, чтение канала без рекламы, возможность предлагать темы для статей и даже заказывать индивидуальные обзоры/исследования по своим запросам!Подробнее о том, какие преимущества вы получите с премиум подпиской, можно узнать здесь
Также подписывайтесь на нас в:
- Telegram: https://t.me/gergenshin
- Youtube: https://www.youtube.com/@gergenshin
- Яндекс Дзен: https://dzen.ru/gergen
- Официальный сайт: https://www-genshin.ru