Главная > Управление сетью > curl

curl: универсальный инструмент для передачи/тестирования данных на основе URL

Мощный инструмент командной строки для обмена данными с сервером по URL. Поддерживает различные протоколы, такие как HTTP/HTTPS, FTP/FTPS, SFTP, и широко используется для тестирования API, загрузки/скачивания файлов и устранения неполадок.

Что такое curl?

curl — это сокращение от 'Client URL', утилита командной строки, которая использует синтаксис URL для отправки/получения данных. Она используется в широком спектре областей, включая веб-разработку, тестирование API, автоматизацию CI/CD и устранение неполадок в операциях.

Ключевые особенности

  • Разнообразие протоколов: HTTP/HTTPS, FTP/FTPS, SFTP, LDAP, SMTP/SMTPS и т.д. (зависит от опций сборки).
  • Управление HTTP: Детальный контроль методов, заголовков, файлов cookie, сжатия, HTTP/2, перенаправлений, таймаутов, повторных попыток и т.д.
  • Загрузка/Скачивание: Скачивание файлов (-o/-O), возобновление прерванной загрузки (-C -), загрузка форм (-F), загрузка одного файла (-T).
  • Безопасность: Проверка сертификатов TLS (включена по умолчанию), указание доверенных корневых сертификатов (--cacert), клиентские сертификаты (--cert/--key).
  • Пригодность для автоматизации: Тихий вывод (-s), завершение при ошибке (-f), форматированный вывод (-w), подходит для скриптов.

Основные опции (Shell)

В основном требуется URL-адрес запроса. Несколько URL-адресов можно перечислить через пробел или прочитать из файла (@file).

1. Базовый запрос и скачивание

2. Методы HTTP и передача данных

3. Заголовки, аутентификация, файлы cookie

4. Управление выводом/надежность

5. Безопасность/TLS и прокси/диагностика

6. Протокол/Версия

7. Справка/Версия

Сгенерированная команда:

Комбинируйте команды.

Описание:

`curl` Запускает команду.

Комбинируйте эти опции, чтобы виртуально выполнять команды с помощью ИИ.

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

Здесь собраны часто используемые шаблоны запросов.

Вывод содержимого веб-страницы

curl https://example.com

Базовый GET-запрос.

Скачивание файла (с отслеживанием перенаправлений)

curl -O -L https://wordpress.org/latest.zip

-O исходное имя файла, -L отслеживание перенаправлений.

JSON GET + красивый вывод

curl -s https://api.github.com/users/google | jq

Парсинг/улучшение читаемости с помощью jq.

JSON POST

curl -X POST -H "Content-Type: application/json" -d '{"username":"test"}' https://api.example.com/users

Указать заголовки и тело запроса.

Загрузка файла формы (multipart)

curl -F "upload_file=@./my-image.png" https://example.com/upload

Имя поля=upload_file, путь к файлу указывается с помощью @.

Аутентификация с токеном Bearer

curl -H "Authorization: Bearer YOUR_ACCESS_TOKEN" https://api.example.com/me

Использование заголовка Authorization.

Проверить только заголовки ответа

curl -I https://google.com

Полезно для диагностики состояния сервиса/кэша.

Завершение с ненулевым кодом при ошибке + тихо

curl -sSf https://example.com/health

Комбинация -sS -f: подходит для скриптов.

Таймаут + повторная попытка

curl --connect-timeout 5 --max-time 20 --retry 3 --retry-all-errors https://example.com/api

Реагирование на нестабильную сеть.

Тестирование с определенным IP (--resolve)

curl --resolve 'api.example.com:443:203.0.113.10' https://api.example.com/status

Тестирование обхода DNS (с сохранением SNI).

Установка

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

Debian/Ubuntu

sudo apt update && sudo apt install -y curl

RHEL/CentOS/Fedora

sudo dnf install -y curl

Arch Linux

sudo pacman -S --needed curl

Советы и примечания

Полезные советы

  • curl vs wget: wget лучше подходит для больших/рекурсивных загрузок, curl — для взаимодействия с API/детального контроля.
  • Кавычки: Рекомендуется заключать JSON/специальные символы в -d/-H в одинарные кавычки.
  • Сжатый ответ: Использование --compressed позволяет автоматически распаковывать сжатые данные, если сервер поддерживает это, что уменьшает объем передаваемых данных.
  • Прокси: HTTP-прокси устанавливается с -x, SOCKS5 — с --socks5.
  • Внимание к безопасности (-k): -k/--insecure использовать только для разработки/тестирования. В продакшене рекомендуется настраивать доверенные корневые сертификаты (--cacert).

Связанные команды

Функционально схожие или часто используемые команды.



Те же команды в категории