Конвертировать curl в C

curl2code преобразует команды curl в код C с использованием libcurl. Конвертация выполняется в вашем браузере через WebAssembly для полной конфиденциальности. Для Rust ознакомьтесь с нашим конвертером curl в Rust. Для Go см. curl в Go. Ниже приведены практические примеры на C с правильным управлением памятью.

Как скопировать curl из браузера

  1. 1

    Откройте DevTools

    Нажмите F12 или Ctrl+Shift+I, чтобы открыть инструменты разработчика в браузере.

  2. 2

    Перейдите на вкладку Network

    Нажмите на вкладку Network и выполните действие, которое инициирует HTTP-запрос.

  3. 3

    Скопируйте как cURL

    Нажмите правой кнопкой мыши на запрос → CopyCopy as cURL. Затем вставьте его выше.

Часто задаваемые вопросы

Что такое libcurl?

libcurl — это C-библиотека, лежащая в основе консольной утилиты curl. Это самая переносимая и широко распространенная библиотека HTTP-клиента, поддерживающая более 25 протоколов. Используется в тысячах приложений и встраиваемых систем. Добавьте её через системный менеджер пакетов или линкуйте статически. curl2code генерирует C-код libcurl, используя easy-интерфейс.

libcurl easy vs multi interface — что использовать?

Easy interface (curl_easy_*) предназначен для одиночных синхронных передач — он прост и понятен. Multi interface (curl_multi_*) позволяет выполнять неблокирующие параллельные передачи в одном потоке. Используйте easy для скриптов и простых инструментов, multi — для высокопроизводительных приложений. Для более высокоуровневого языка семейства C см. curl в Rust.

Как обрабатывать аутентификацию в libcurl?

Для Bearer: установите кастомный заголовок с помощью curl_slist_append(headers, "Authorization: Bearer token"). Для Basic-аутентификации: curl_easy_setopt(curl, CURLOPT_USERPWD, "user:pass"). libcurl автоматически кодирует учетные данные Basic. curl2code преобразует флаги -u и заголовки в правильные вызовы C API.

Как отправить multipart form data в libcurl?

Используйте MIME API (libcurl 7.56+): curl_mime_init() для создания структуры mime, curl_mime_addpart() для каждого поля, curl_mime_name() и curl_mime_filedata() для загрузки файлов. Установите через CURLOPT_MIMEPOST. Освободите память с помощью curl_mime_free().

Как обрабатывать ошибки в libcurl?

Каждая функция curl_easy_* возвращает CURLcode — проверяйте его на соответствие CURLE_OK. Используйте curl_easy_strerror(code) для получения человекочитаемых сообщений. Установите CURLOPT_ERRORBUFFER для детальных строк ошибок. Получите статус HTTP с помощью curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &code).

Как управлять памятью в libcurl?

Всегда вызывайте curl_easy_cleanup() по завершении работы с дескриптором. Освобождайте списки заголовков с помощью curl_slist_free_all(). Освобождайте структуры MIME через curl_mime_free(). Для функций обратного вызова записи (write callbacks) управляйте выделением собственного буфера. Вызовите curl_global_cleanup() один раз при выходе из программы. Невыполнение очистки ресурсов приводит к утечкам памяти.

Как установить тайм-ауты в libcurl?

Установите CURLOPT_CONNECTTIMEOUT для тайм-аута соединения и CURLOPT_TIMEOUT для общего времени передачи (оба в секундах). Для точности в миллисекундах используйте CURLOPT_CONNECTTIMEOUT_MS и CURLOPT_TIMEOUT_MS. Это те же опции, что использует curl CLI с --connect-timeout и --max-time.

Как настроить прокси в libcurl?

Установите CURLOPT_PROXY в URL прокси: curl_easy_setopt(curl, CURLOPT_PROXY, "http://proxy:8080"). Для SOCKS5: установите CURLOPT_PROXYTYPE в CURLPROXY_SOCKS5. Для аутентификации прокси: CURLOPT_PROXYUSERPWD. libcurl также учитывает переменную окружения http_proxy.

Как отправить POST-запрос с телом JSON на C?

Преобразуйте команду curl POST, такую как curl -X POST -H "Content-Type: application/json" -d "{"key":"value"}" URL, в C с помощью curl2code. Сгенерированный код использует curl_easy_setopt(curl, CURLOPT_POSTFIELDS, json_string). curl2code автоматически обнаруживает флаги -d/--data с содержимым JSON и устанавливает соответствующий заголовок Content-Type в коде libcurl.

Как добавить авторизацию через Bearer token на C?

Передайте curl -H "Authorization: Bearer YOUR_TOKEN" URL в curl2code, и инструмент сгенерирует код libcurl с заголовком авторизации: struct curl_slist *headers = curl_slist_append(NULL, "Authorization: Bearer TOKEN"). curl2code распознает Bearer tokens как в флагах -H "Authorization: Bearer ...", так и в --oauth2-bearer. Для Basic auth используйте -u user:pass.

Как установить заголовок Content-Type на C?

curl2code преобразует curl -H "Content-Type: application/json" URL в код libcurl с правильным заголовком: curl_slist_append(headers, "Content-Type: application/json"). Для данных -d curl по умолчанию использует application/x-www-form-urlencoded; для загрузки форм -F используется multipart/form-data. curl2code сопоставляет каждый вариант с подходящим API libcurl.

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

Руководства по curl

Конвертировать curl в другие языки