Небольшое руководство по использованию команды curl в Linux
Время прочтения: 3 мин.
13

    Что такое curl?

    curl — это инструмент для передачи данных с сервера на клиент и наоборот. Он поддерживает множество протоколов, включая HTTP, HTTPS, FTP, FTPS, SCP, SFTP и другие. Это мощный инструмент, который позволяет выполнять разнообразные задачи сетевых взаимодействий без необходимости написания сложного кода. Благодаря этому он стал незаменимым для системных администраторов и разработчиков.

    Синтаксис

    Основной синтаксис команды curl:

    curl [options] [URL]

    Вы можете использовать множество опций и URL-адресов одновременно, что делает curl гибким инструментом для различных сценариев. Кроме того, порядок указания опций и URL не имеет значения — они могут перемешиваться.

    Поддерживаемые протоколы

    curl поддерживает следующие протоколы:

    • HTTP (HyperText Transfer Protocol) — Протокол для передачи гипертекстовых документов
    • HTTPS (HTTP Secure) — Защищенная версия HTTP, использующая шифрование с SSL/TLS
    • FTP (File Transfer Protocol) — Протокол для передачи файлов между клиентом и сервером
    • FTPS (FTP Secure) — Расширение протокола FTP с поддержкой шифрования SSL/TLS
    • SCP (Secure Copy Protocol) — Протокол для безопасной передачи файлов через SSH
    • SFTP (SSH File Transfer Protocol) — Протокол для передачи данных поверх SSH
    • IMAP (Internet Message Access Protocol) — Управление почтовыми ящиками на сервере
    • POP3 (Post Office Protocol v3) — Простой протокол для получения электронной почты
    • MQTT (Message Queuing Telemetry Transport) — Передача сообщений в реальном времени

    Важно отметить, что поддержка каждого протокола может зависеть от конкретной сборки curl, а также от установленных библиотек. Например, для работы с FTP потребуется соответствующая поддержка в установленной версии libcurl (libcurl3, libcurl4).

    Вывод данных

    По умолчанию curl выводит полученные данные в стандартный вывод (stdout). Чтобы сохранить данные в файл, используйте опцию -o:

    curl -o index.html https://example.com

    Эта команда сохранит ответ от сервера в формате HTML и создаст файл index.html.

    Опции

    Основные опции

    • -d, --data: Отправка данных в POST-запросе.
    • -H, --header: Добавление заголовков в запрос, чтбы настраивать отправляемую информацию.
    • -X, --request: Указание метода HTTP (GET, POST, PUT и др.). Это важно для работы с API.
    • -L, --location: Перенаправление при ответе 3xx, для работы с URL, которые могут изменяться.
    • -u, --user: Учетные данные для аутентификации для доступа к защищенным ресурсам.

    Опции для работы с файлами

    • -T, --upload-file: Загрузка файла на сервер позволяет отправлять данные на удаленные сервера.
    • -C, --continue-at: Возобновление загрузки с указанного смещения для прерванных соединений.
    • -O, --remote-name: Сохранение файла с оригинальным именем, указанным на сервере.

    Опции для работы с прокси

    • -x, --proxy: Указание прокси-сервера позволяет маршрутизировать запросы через заданный адрес.
    • -U, --proxy-user <user:password>: Аутентификация в прокси к защищенным ресурсам внутри сетей.

    Примеры использования

    Загрузка файла

    curl -O https://example.com/file.txt

    Этот параметр позволяет загружать файл напрямую на локальную машину, сохраняя его оригинальное имя.

    Отправка POST-запроса

    curl -v -d "name=value" -H "Content-Type: application/x-www-form-urlencoded" https://example.com/submit

    В этом примере мы отправляем данные, указывая тип контента, что может потребоваться для правильной обработки сервером.

    Использование прокси

    curl -x https://proxy.example.com:8080 https://example.com

    Такой способ позволяет отправлять запросы через указанный прокси-сервер для обхода ограничений в корпоративных сетях.

    Советы по использованию

    • Используйте -s, --silent для тихого режима, если хотите скрыть прогресс при использовании curl в скриптах. На этом сайте я использую такую команду для обращения к WP-Cron:

      curl -s https://onstartup.ru/wp-cron.php
    • При отладке используйте -v для получения дополнительной информации о запросе — это может выявить проблемы с соединением.
    • С помощью --limit-rate <speed> можно ограничить скорость передачи данных для работы с ограниченными каналами связи:

      curl --limit-rate 100K https://example.com