logo
GeekFormat

Конвертер cURL в код

Ввод команды cURL

Вставьте команду cURL, автоматически распарсите URL, метод, заголовки и тело запроса, и сгенерируйте готовый код на JavaScript fetch, Axios, Node fetch, Python requests/httpx, Go net/http, PHP cURL, Java OkHttp, C# HttpClient, PowerShell Invoke-RestMethod, wget.

Распарсенный запрос

https://api.example.com/items1 заголовок(ов)Тело: 15 симв.curlToCode.flag.followRedirects

Сгенерированный код

curlToCode.target.fetch

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

Похожие

Варианты использования

  • В панели Network Chrome DevTools правой кнопкой по запросу → «Copy as cURL», затем вставьте в этот инструмент и конвертируйте в код для вашего проекта — в 10 раз быстрее, чем писать запрос вручную
  • При работе с сторонними API, когда в документации приведены curl примеры, быстро конвертируйте в код Python requests/Java OkHttp/C# HttpClient для встраивания в проект
  • При отладке API в продакшене копируйте curl команды из снифферов (Charles/mitmproxy/Wireshark), конвертируйте в код юнит-тестов для немедленной проверки
  • При написании документации API быстро переключайтесь между примерами на разных языках, предоставляя читателям с разными стеками готовый рабочий код
  • При расследовании проблем с запросами в продакшене воспроизведите проблему с помощью curl, конвертируйте в код и отправьте коллегам или создайте Issue — другие смогут сразу воспроизвести
  • При кросс-языковой разработке (например, переход с Python на проект на Go) быстро конвертируйте существующие curl запросы в вызовы HTTP клиента нового языка, экономя время на чтение документации
  • Конвертируйте curl команды в PowerShell Invoke-RestMethod для коллег-администраторов Windows в shell скриптах или наоборот
  • Изучение HTTP протокола: сравнивая код одного и того же запроса на разных языках, понимайте различия в API HTTP клиентских библиотек
  • Быстро конвертируйте curl -X POST -d 'json' в код с правильным Content-Type и JSON сериализацией, избегая ошибок при ручной конкатенации строк
  • При необходимости вызова API в CI/CD скриптах конвертируйте локально отлаженные curl команды в код соответствующего скриптового языка для встраивания в пайплайн

Функции

  • 11 целевых языков/библиотек: фронтенд (JS fetch/Axios), Node.js (node-fetch), Python (requests/httpx), Go (net/http), PHP (cURL), Java (OkHttp), C# (HttpClient), PowerShell (Invoke-RestMethod), командная строка (wget) — все основные стеки технологий
  • Умный парсинг curl команд: автоматическое распознавание URL, HTTP методов, заголовков, тела запроса, поддержка одинарных/двойных кавычек, экранирования обратной косой чертой, многострочных команд (обратная косая для переноса строки)
  • Полная поддержка часто используемых опций curl: -X/--request для указания метода, -H/--header для заголовков, -d/--data/-F для формы/JSON тела, -u/--user для Basic Auth, -A/--user-agent для UA, -b/--cookie для Cookie, -e/--referer для Referer, -L/--location для следования перенаправлениям, --compressed для авто-распаковки, -k/--insecure для пропуска проверки сертификата, -I/--head для HEAD запросов
  • Умное распознавание JSON тела: при детекции Content-Type как application/json автоматически используется JSON.parse/JSON.stringify/requests(json=)/json= сериализация, сгенерированный код использует объекты вместо строк
  • Автоматическая конвертация Basic Auth: распознавание -u user:pass автоматически генерирует заголовок Authorization: Basic <base64>, целевой язык использует нативный механизм auth (Python auth=, OkHttp credentials, C# credentials и т.д.)
  • Индикаторы безопасности: автоматическое детектирование флагов --compressed/-L/-k/-u, отображение бейджами в результатах парсинга
  • Ручное переключение метода запроса: после автоматического парсинга метода curl, пользователь может вручную переключить метод в выпадающем списке (GET/POST/PUT и другие 7 методов) и сразу увидеть соответствующий код
  • Безопасное экранирование строк: при генерации кода для каждого языка используются нативные строковые литералы (тройные кавычки/экранирование в Python, обратные кавычки в Go, @"" в C#, одинарные кавычки в PHP, двойные кавычки с экранированием в Java)
  • Подсказки об ошибках парсинга: при вводе невалидной curl команды (отсутствует URL, не начинается с curl, POST без body и т.д.) отображается оранжевое предупреждение с указанием проблемы
  • 3 примера для загрузки в один клик: предоставлены 3 типовых примера: GET+Token авторизация, POST+JSON, Basic Auth+следование перенаправлениям
  • Очистка ввода в один клик: кнопка Clear для быстрого сброса, вставка новых команд без остатков
  • Полностью локальная обработка: парсинг и конвертация curl команд происходят полностью в браузере локально, данные не отправляются на сервер, чувствительные Token/пароли не утекают
  • Копирование кода в один клик: после генерации кода кнопка Copy копирует его в буфер обмена
  • Поддержка небезопасного режима HTTPS: параметр -k/--insecure генерирует соответствующую конфигурацию пропуска проверки сертификата TLS для Node/Go/Python/PHP/C#/PowerShell (wget использует --no-check-certificate, C# использует ServicePointManager, Node устанавливает NODE_TLS_REJECT_UNAUTHORIZED)

Как использовать

  1. Получите curl команду: в панели Network браузера DevTools правой кнопкой по запросу → Copy → Copy as cURL (bash); или экспортируйте cURL из снифферов Postman/Charles/mitmproxy; или напишите curl команду вручную
  2. Вставьте в поле ввода: вставьте curl команду в верхнюю область ввода, поддерживаются одно-/многострочные команды (перенос через обратную косую), переносы строк автоматически удаляются
  3. Используйте кнопки примеров для справки: если не знакомы с форматом, нажмите «Пример 1/2/3» для загрузки предустановленных curl команд и просмотра результата
  4. Просмотрите результат парсинга: в области результатов отображается URL, количество заголовков, количество символов Body, а также бейджи для сжатия/перенаправления/пропуска сертификата/Basic Auth, при проблемах отображается оранжевое предупреждение
  5. При необходимости скорректируйте метод: если автоматически распознанный метод неверен (например, curl без -X POST, но должен быть POST), вручную переключите HTTP метод в выпадающем списке
  6. Выберите целевой язык: в области целевого кода нажмите кнопку соответствующего языка (fetch/Axios/Python requests/Go/PHP/Java/C#/PowerShell/wget и т.д.)
  7. Скопируйте код: нажмите кнопку «Копировать код», вставьте в ваш проект/терминал — код готов к запуску

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

Для чего нужен конвертер cURL в код? Почему не использовать curl команду напрямую?

Прямой вызов curl команды в коде (например, shell_exec, subprocess.run) требует запуска дочернего процесса, небезопасен и затрудняет обработку ошибок, получение заголовков ответа, преобразование типов. Продакшен код должен использовать нативные HTTP клиенты языков программирования (Python requests, Java OkHttp, JS fetch и т.д.). Ценность curl-to-code в автоматическом переводе curl команд, скопированных из DevTools/снифферов, в код HTTP клиента соответствующего языка, избавляя от механической работы по поиску документации API, ручному экранированию кавычек, обработке JSON/авторизации — достаточно скопировать и вставить для запуска.

Какие целевые языки/библиотеки поддерживаются?

В настоящее время поддерживается 11 целей: JavaScript fetch (браузерный нативный), Axios (универсальная HTTP библиотека для Node/браузера), Node.js node-fetch, Python requests (самая популярная HTTP библиотека Python), Python httpx (новое поколение HTTP библиотеки с поддержкой HTTP/2 и асинхронности), Go net/http (стандартная библиотека Go), расширение PHP cURL, Java OkHttp (универсальная высокопроизводительная библиотека для Android/бэкенда), C# HttpClient (стандартный HTTP клиент .NET), PowerShell Invoke-RestMethod (часто используется в скриптах автоматизации Windows), wget (командный инструмент для загрузки). Если нужного вам языка нет в списке (например, Ruby, Rust reqwest, Dart http, Swift URLSession и т.д.), вы можете оставить отзыв на странице, мы добавим по запросу.

Как скопировать curl команду из Chrome DevTools?

Шаги: 1. Откройте Chrome/Edge, нажмите F12 для открытия DevTools; 2. Перейдите на панель Network; 3. Обновите страницу или вызовите целевой запрос; 4. Найдите целевой запрос в списке запросов (можно отфильтровать по XHR/JS); 5. Правой кнопкой по этому запросу → Copy → выберите «Copy as cURL (bash)» (рекомендуется bash версия, лучшая совместимость); 6. Вставьте в поле ввода этого инструмента. Обратите внимание: не выбирайте Copy as fetch (это JS код, не curl). В Firefox/Safari действия аналогичны, там тоже есть опция Copy as cURL.

Обработка кавычек в curl команде доставляет неудобства, какие форматы поддерживаются?

Инструмент поддерживает bash-стиль одинарных/двойных кавычек с экранированием обратной косой чертой; двойные кавычки Windows cmd+экранирование через ^; экранирование через обратный апостроф PowerShell в основном распознаются. Рекомендуется использовать bash формат (обёртка одинарными кавычками). Многострочные команды (перенос обратной косой \) также поддерживаются для вставки, инструмент автоматически удаляет переносы строк и символы продолжения. Если ваша curl команда особенно сложная (содержит переменные оболочки, подстановку команд $(...), конвейер | и т.д.), рекомендуется сначала выполнить команду echo в терминале для печати фактического развёрнутого curl и затем скопировать, или вручную упростить (заменить переменные на фактические значения).

Почему при отправке JSON через -d в curl сервер получает кракозябры/400?

Это одна из самых частых ошибок curl. Опция -d/--data в curl по умолчанию использует Content-Type application/x-www-form-urlencoded (формат формы), а не application/json. Если вы напрямую выполните curl -d '{"name":"demo"}' url, сервер будет парсить как форму (парсинг завершится ошибкой или получатся пустые данные). Необходимо явно добавить заголовок -H "Content-Type: application/json" для корректной отправки JSON. Этот инструмент при детекции body без Content-Type выдаёт оранжевое предупреждение.

Можно ли напрямую копировать и запускать сгенерированный код? Какие зависимости нужно установить?

Код большинства языков использует стандартные библиотеки и может запускаться напрямую (fetch/Go net/http/PHP cURL/C# HttpClient/PowerShell/wget — встроенные), дополнительная установка не требуется. Для других требуются сторонние библиотеки: Axios (требуется npm install axios), node-fetch (требуется npm install node-fetch, в Node 18+ fetch уже встроен, установка не нужна), Python requests (pip install requests), Python httpx (pip install httpx), Java OkHttp (требуется подключение зависимости okhttp3 через Maven/Gradle). Код по умолчанию выводит статус-код ответа и текст, вы можете модифицировать логику обработки по необходимости.

Поддерживается ли загрузка файлов multipart/form-data (параметр -F)?

Базовая поддержка: параметр -F распознаётся как тело запроса (body), но сгенерированный код в настоящее время обрабатывает @file как буквальную строку, а не фактическую загрузку файла. Загрузка файлов требует чтения содержимого локальных файлов, способы обработки сильно различаются в разных языках (JS использует FormData/FormData.append, Python использует параметр files=, Go использует multipart.Writer). Рекомендуется на основе сгенерированного инструментом кода обратиться к документации по загрузке файлов соответствующей библиотеки для внесения корректировок. В будущих версиях поддержка multipart будет расширена.

Будут ли загружены мои curl команды и чувствительные данные?

Абсолютно нет. Весь процесс парсинга и генерации кода на 100% выполняется локально в вашем браузере (чисто фронтенд JavaScript), curl команды, Token/Cookie/пароли в заголовках, данные в теле запроса не отправляются ни на какие серверы. Вы можете использовать этот инструмент при отключённом интернете, не беспокоясь об утечке чувствительной информации.

Как обрабатывается пропуск проверки сертификата -k/--insecure в коде для разных языков?

При детекции параметра -k этот инструмент генерирует для каждого целевого языка соответствующую конфигурацию пропуска проверки сертификата: Python requests/httpx используют verify=False; Node.js устанавливает process.env.NODE_TLS_REJECT_UNAUTHORIZED='0'; Go создаёт кастомный tls.Config{InsecureSkipVerify: true}; PHP устанавливает CURLOPT_SSL_VERIFYPEER=false и CURLOPT_SSL_VERIFYHOST=0; Java OkHttp требует кастомный TrustManager (в коде добавлен комментарий с подсказкой, так как код довольно длинный); C# может кастомизировать ServerCertificateCustomValidationCallback; PowerShell использует -SkipCertificateCheck (PS6+); wget использует --no-check-certificate; браузерный fetch не может пропустить проверку сертификата (ограничение безопасности браузера, в коде добавлен комментарий с пояснением). Примечание: эти конфигурации предназначены только для локальной разработки и тестирования, никогда не отключайте проверку сертификата в продакшен окружении.

Почему сгенерированный Go код не следует перенаправлениям? Добавил -L, должен же следовать?

Поведение net/http в Go по умолчанию — не следовать перенаправлениям (соответствует поведению curl по умолчанию, curl явно требует -L для следования). Инструмент при детекции параметра -L генерирует пустой client (http.Client{} с CheckRedirect по умолчанию nil, то есть следует 10 перенаправлениям); без -L генерируется client с CheckRedirect, возвращающим http.ErrUseLastResponse, не следует перенаправлениям (соответствует поведению curl без -L). Если вы хотите, чтобы Go всегда следовал перенаправлениям, можно напрямую использовать http.DefaultClient или кастомный Client{Timeout: ...} в коде.

Как обрабатывать запросы, требующие логина/с Cookie?

Есть два способа: ①Напрямую скопируйте curl из DevTools авторизованного браузера (рекомендуется): правой кнопкой по запросу→Copy as cURL, тогда cookie/заголовки автоматически включаются, вставьте для конвертации — код можно запускать сразу; ②Вручную укажите значение Cookie в curl через -b/--cookie (-b 'sessionid=abc; token=xyz'), -u/--user для Basic Auth, -H "Authorization: Bearer xxx" для Bearer Token, инструмент преобразует эти заголовки как есть. Примечание: Cookie, скопированные из браузера, имеют срок действия, через несколько часов могут истечь и потребовать повторного копирования.

Почему для JSON тела запроса в Python requests используется параметр json=, а не data=?

Параметр data библиотеки Python requests кодирует dict как application/x-www-form-urlencoded, отправляет string как есть, а параметр json автоматически сериализует dict/список в JSON строку и автоматически устанавливает заголовок Content-Type: application/json (если вы не установили его вручную). Этот инструмент при детекции Content-Type, содержащего application/json, и валидного JSON в body автоматически парсит JSON в Python dict и использует параметр json=, делая код более лаконичным, не требуя ручного json.dumps и не забывая заголовок Content-Type. Не-JSON body (форма/XML/простой текст) отправляются через параметр data= как исходные строки.

curl команда длинная, со множеством заголовков, что делать, если сгенерированный код содержит все заголовки?

curl команда, скопированная из DevTools, содержит множество автоматически добавляемых браузером заголовков (Host, Connection, Accept, Accept-Encoding, Accept-Language, Sec-Fetch-*, sec-ch-ua, Upgrade-Insecure-Requests и т.д.), большинство этих заголовков в коде не нужно явно устанавливать (HTTP клиент автоматически добавит разумные значения по умолчанию, такие как Accept-Encoding, Connection, Host, Content-Length и т.д.). Рекомендуется после копирования сгенерированного кода вручную удалить ненужные заголовки, как минимум сохранив: Content-Type, Authorization, Cookie (если требуется), пользовательские бизнес-заголовки. Лишние заголовки не только делают код некрасивым, но и могут приводить к аномальному поведению (например, явная установка Accept-Encoding, но клиент не будет автоматически распаковывать).

Поддерживается ли параметр HTTPS прокси (-x/--proxy)?

В настоящее время параметр HTTP прокси (-x/--proxy) ещё не конвертируется автоматически. Конфигурация прокси сильно различается в разных языках (JS fetch не имеет нативной поддержки прокси, требуется Agent, Python использует параметр proxies=, Go через Transport.Proxy, PHP использует CURLOPT_PROXY, C# использует WebProxy, Java использует OkHttpClient.Builder().proxy()). Заголовки прокси (авторизация самого прокси) также требуют отдельной обработки. В текущей версии параметры, связанные с прокси, игнорируются, вы можете вручную добавить конфигурацию прокси на основе сгенерированного кода, в будущих версиях поддержка прокси будет расширена.

В чём отличие от онлайн-инструментов вроде curlconverter.com?

По сравнению с известными инструментами вроде curlconverter.com, преимущества curl-to-code от GeekFormat: ①Полностью локальная обработка (логика обработки curlconverter на сервере или клиенте), данные не загружаются, более безопасно; ②Локализованный интерфейс и подробные пояснения на русском языке; ③Сгенерированный код больше соответствует реальному продакшен использованию (например, Python requests использует параметр json= для JSON body вместо data=, поведение Go по умолчанию соответствует curl, C# корректно обрабатывает Content-Type без жёсткого кодирования application/json); ④Сопутствующая глубокая документация, FAQ, таблицы соответствия, устранение неполадок — не просто генерирует код, но и помогает понять, почему он написан так; ⑤Бесплатно, без рекламы, не требует регистрации и входа, не нуждается в сетевых запросах для использования.

术语表

cURL / curl
Открытый командный инструмент и библиотека libcurl для отправки HTTP/HTTPS/FTP и других запросов по URL из командной строки, самый популярный инструмент разработчика для отладки API.
HTTP метод
Действие HTTP запроса, распространённые: GET (чтение), POST (создание), PUT (полное обновление), PATCH (частичное обновление), DELETE (удаление), HEAD (получение заголовков), OPTIONS (запрос возможностей сервера).
Заголовок запроса (Header)
Пары ключ-значение метаданных в HTTP запросе, такие как Content-Type, Authorization, User-Agent, Cookie, Accept и т.д., указываются в curl через -H/--header.
Тело запроса (Body)
Часть данных HTTP запроса, часто используется в POST/PUT/PATCH, указывается в curl через -d/--data/--data-binary/-F, распространённые форматы: JSON, form-urlencoded, multipart/form-data.
Content-Type
Заголовок запроса/ответа, указывающий медиа тип body. application/json означает JSON, application/x-www-form-urlencoded означает URL-кодированную форму, multipart/form-data означает форму для загрузки файлов.
Basic Auth
Базовая HTTP авторизация, передаёт имя пользователя и пароль через заголовок Authorization: Basic base64(user:pass), в curl указывается через -u user:pass.
Bearer Token
Авторизация на основе токена, передаётся через заголовок Authorization: Bearer <token>, часто используется в JWT/OAuth2.
User-Agent
Заголовок запроса, идентифицирующий тип клиента (браузер/бот/скрипт), curl по умолчанию отправляет «curl/версия», многие сайты блокируют не-браузерные UA, часто указывается через -A.
Cookie
Пары ключ-значение, отправляемые сервером через Set-Cookie и возвращаемые браузером в последующих запросах через заголовок Cookie, используются для поддержания сессии. curl -b отправляет Cookie, -c сохраняет Cookie.
Referer
Заголовок запроса, указывающий URL страницы-источника текущего запроса, некоторые проверки хотлинкинга/CSRF проверяют его. curl -e устанавливает.
Перенаправление (3xx)
Когда сервер возвращает коды статуса 301/302/303/307/308, указывая браузеру перейти на новый URL. curl по умолчанию не следует, добавьте -L/--location для следования.
--compressed
Опция curl, автоматически добавляет заголовок Accept-Encoding: deflate, gzip и автоматически распаковывает ответ. Без неё ответ может быть сжатыми данными с кракозябрами.
-k/--insecure
Опция curl, пропускает проверку HTTPS сертификата, используется только в тестовых окружениях с самоподписанными сертификатами, запрещено в продакшене.
fetch API
Нативный браузерный JavaScript API для HTTP запросов, возвращает Promise, поддерживается всеми современными браузерами.
Axios
Популярная HTTP клиентская библиотека на основе Promise, универсальная для браузера и Node.js, автоматическая JSON сериализация, интерсепторы, таймаут и отмена.
OkHttp
Java/Android HTTP клиентская библиотека от компании Square, высокопроизводительная, с поддержкой HTTP/2, пулом соединений, прозрачным GZIP.
HttpClient (.NET)
Рекомендуемый HTTP клиент для C#/.NET, пространство имён System.Net.Http, стандартный API в .NET Core/.NET 5+.
Invoke-RestMethod
Встроенный в PowerShell 3.0+ командлет для HTTP запросов, автоматически парсит JSON/XML ответы в объекты PowerShell.

Таблица соответствия часто используемых опций cURL 11 целевым языкам

Распространённые значения Content-Type и использование в curl

Сравнение трёх форматов Copy as cURL из Chrome DevTools

Troubleshooting