Шпаргалка по cURL

Полезные команды cURL с параметрами

Вот шпаргалка по самым полезным командам cURL с их параметрами:

человек с табличкой curl

Изображение выше сгенерировано с помощью Flux — AI-модели преобразования текста в изображение.

cURL — это незаменимый инструмент командной строки для выполнения HTTP-запросов и передачи данных. Для подробного руководства по инструментам разработчика, включая Git, Docker, VS Code, bash, Terraform, PostgreSQL, GitHub Actions и управление пакетами Linux, см. Инструменты разработчика: Полное руководство по современным рабочим процессам разработки.

Базовое использование cURL

  • Загрузка файла: curl http://example.com/file.zip -o file.zip
  • Загрузка нескольких файлов: curl -O URL1 -O URL2
  • Следовать перенаправлениям: curl -L http://example.com/file
  • Отображать только заголовки: curl -I http://example.com

Аутентификация

  • Базовая аутентификация: curl -u username:password http://example.com. Curl устанавливает заголовок Authorization: Basic на основе указанных пользователя и пароля. Тот же заголовок, сформированный с помощью printf и base64, описан в Шпаргалке по кодированию и декодированию Base64.
  • Использование файла .netrc: curl --netrc-file .netrc http://example.com

Методы HTTP

  • Запрос POST: curl -X POST -d 'name=value' http://example.com
  • Запрос PUT: curl -X PUT -d @file http://example.com
  • Пользовательский метод: curl -X METHOD http://example.com

Заголовки и данные

  • Добавить пользовательский заголовок: curl -H "X-Header: Value" http://example.com
  • Отправить данные JSON: curl -H "Content-Type: application/json" -d '{"key":"value"}' http://example.com
  • Отправить данные формы: curl -F "key=value" -F "file=@localfile" http://example.com

Опции SSL/TLS

  • Игнорировать проверку сертификата SSL: curl -k https://example.com
  • Использовать клиентский сертификат: curl --cert cert.pem --key key.pem https://example.com

Прокси и сеть

  • Использование прокси: curl -x proxysever.server.com:PORT http://example.com
  • Ограничение скорости загрузки: curl --limit-rate 1000B -O http://example.com/file

Управление выводом

  • Беззвучный режим: curl -s http://example.com
  • Подробный режим: curl -v http://example.com
  • Запись вывода в файл: curl -o file.html http://example.com
  • Сохранение с удаленным именем файла: curl -O http://example.com/file.zip

Разное

  • Возобновление прерванной загрузки: curl -C - -o partial_file.zip http://example.com/file.zip
  • Установка тайм-аута: curl --connect-timeout 10 http://example.com
  • Использование конфигурационного файла: curl -K config_file http://example.com

Эта шпаргалка охватывает наиболее часто используемые команды cURL и их параметры, предоставляя быстрый справочник для различных операций HTTP и передачи данных.

Расширенные команды cUrl

Ниже приведены некоторые расширенные команды curl для отладки:

  1. Подробный вывод: curl -v https://example.com Эта команда предоставляет подробную информацию о запросе и ответе, включая заголовки и данные о соединении.

  2. Полный дамп следа: curl --trace - https://example.com Эта команда выводит hex-дампом все входящие и исходящие данные, предоставляя комплексное представление о всего взаимодействии.

  3. След с метками времени: curl --trace - --trace-time https://example.com Эта команда добавляет метки времени к выводу следа, помогая анализировать проблемы, связанные с таймингом.

  4. Печать только заголовков ответа: curl -s -o /dev/null -D - https://example.com Эта команда показывает только заголовки ответа, что полезно для быстрого анализа заголовков.

  5. Печать только заголовков запроса: curl -v -s -o /dev/null --stderr - https://example.com | grep '^>' Эта сложная команда фильтрует только заголовки запроса, что помогает проверять отправляемые данные.

  6. Использование Pantheon Debugger: curl -I -H "Pantheon-Debug:1" https://example.com Эта команда использует заголовок Debug от Pantheon для получения дополнительной информации о запросе, что полезно для сайтов, размещенных на Pantheon.

  7. Принудительное использование протокола HTTP/2: curl --http2 https://example.com Это обеспечивает использование протокола HTTP/2, который можно объединить с -I для проверки поддержки HTTP/2.

  8. Отладка с netcat: В одном терминале: nc -l 1234 В другом: curl http://127.0.0.1:1234 Это позволяет увидеть точно, что отправляет curl, что полезно для отладки полезной нагрузки (payload).

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

Общие сценарии использования cUrl

curl — это универсальный инструмент командной строки с множеством приложений. Вот некоторые из наиболее распространенных сценариев использования curl:

Взаимодействие с веб

  1. Загрузка файлов: curl может загружать файлы по URL.
  2. Веб-скрапинг: curl может извлекать содержимое веб-страниц для целей скрапинга.
  3. Тестирование сайтов: curl полезен для проверки доступности веб-сайта и извлечения его содержимого.

Взаимодействие с API

  1. Отправка запросов к API: curl поддерживает различные методы HTTP (GET, POST, PUT, DELETE) для взаимодействия с API.
  2. Тестирование конечных точек API: curl обеспечивает быстрый способ тестирования и отладки конечных точек API без необходимости в специализированном клиенте API.

Устранение неполадок в сети

  1. Проверка подключения: curl может использоваться для проверки сетевых подключений и устранения неполадок.
  2. Тестирование DNS: curl позволяет принудительно использовать определенные DNS-серверы для устранения проблем, связанных с DNS.
  3. Осмотр заголовков: curl может отображать заголовки HTTP, что полезно для отладки.

Передача данных

  1. Операции FTP: curl поддерживает передачу файлов с использованием протокола передачи файлов (FTP).
  2. Взаимодействие с SMTP: curl можно использовать для отправки электронной почты через простой протокол передачи почты (SMTP).

Безопасность и аутентификация

  1. Соединения SSL: curl поддерживает безопасные соединения с использованием SSL/TLS.
  2. Аутентификация: curl может обрабатывать различные методы аутентификации, включая базовую аутентификацию и клиентские сертификаты.

Разработка и отладка

  1. Имитация различных методов HTTP: curl позволяет разработчикам легко тестировать различные методы HTTP.
  2. Подробное журналирование: подробный режим curl предоставляет детальную информацию о цикле «запрос-ответ», что помогает в отладке.

Эти сценарии использования демонстрируют гибкость curl как инструмента для веб-взаимодействий, тестирования API, устранения сетевых неполадок и задач разработки.

Тестирование производительности веб-сайтов с cURL

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

Базовый тест производительности

Чтобы получить простое измерение времени загрузки веб-сайта, используйте эту команду:

curl -o /dev/null -s -w "Total Time: %{time_total}s\n" "https://example.com"

Эта команда выведет общее время, необходимое для получения веб-сайта[2].

Подробные метрики производительности

Для более комплексного анализа вы можете использовать curl для измерения нескольких метрик производительности:

curl -s -w 'Testing Website Response Time for :%{url_effective}\n\nLookup Time:\t\t%{time_namelookup}\nConnect Time:\t\t%{time_connect}\nPre-transfer Time:\t%{time_pretransfer}\nStart-transfer Time:\t%{time_starttransfer}\n\nTotal Time:\t\t%{time_total}\n' -o /dev/null https://example.com

Эта команда предоставляет разбор различных этапов процесса загрузки, включая время поиска DNS, время соединения и общее время[1].

Расширенные метрики

Для еще более детального анализа вы можете включить дополнительные метрики:

curl -o /dev/null -w "HTTP Version: %{http_version}\nPage Size: %{size_download} bytes\nResponse Code: %{response_code}\nDNS Lookup: %{time_namelookup} sec\nConnect Time: %{time_connect} sec\nTime to First Byte: %{time_starttransfer} sec\nTotal Time: %{time_total} sec\n" -s https://example.com

Эта команда включает информацию о версии HTTP, размере страницы и коде ответа[3].

Бенчмаркинг нескольких запросов

Чтобы протестировать стабильность или отслеживать производительность со временем, вы можете использовать цикл для выполнения нескольких запросов:

for i in {1..5}; do curl -o /dev/null -s -w "Request $i Total Time: %{time_total}\n" https://example.com; done

Это выполнит тест пять раз и покажет общее время для каждого запроса[3].

Создание скрипта тестирования производительности

Вы можете создать простой bash-скрипт для автоматизации этих тестов и сохранения результатов:

#!/bin/bash
curl -s -w 'Testing Website Response Time for :%{url_effective}\n\nLookup Time:\t\t%{time_namelookup}\nConnect Time:\t\t%{time_connect}\nPre-transfer Time:\t%{time_pretransfer}\nStart-transfer Time:\t%{time_starttransfer}\n\nTotal Time:\t\t%{time_total}\n' -o /dev/null URL > webspeedtest_"$(date)"

Замените “URL” на сайт, который вы хотите протестировать. Этот скрипт сохранит результаты в файл с меткой даты[5].

Используя эти команды и скрипты curl, вы можете эффективно измерять и отслеживать производительность веб-сайтов, помогая выявлять потенциальные узкие места и оптимизировать время загрузки.

Полезные ссылки

Подписаться

Получайте новые материалы про системы, инфраструктуру и AI engineering.