Конвертер cURL

Конвертируй cURL-команду в код — Python, JavaScript, Java, PHP, Go, Ruby и C#

Правый клик по запросу в DevTools, «Copy as cURL», вставил сюда — и тот же запрос лежит перед тобой кодом на Java, JavaScript, Python, PHP, Go, Ruby или C#. URL, метод, заголовки, куки и тело переносятся как есть, поэтому скрапер стартует ровно с того, что отправлял браузер. Разбор и генерация идут в браузере: команда с сессионной кукой или токеном не покидает машину.

Команда cURL
Язык
Сгенерированный код
Вставь cURL-команду выше — код появится здесь…

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

  1. 1Скопируй запрос как cURL — В DevTools Chrome или Firefox открой Network, правый клик по запросу → Copy → Copy as cURL. Chrome под Windows предлагает два варианта, bash и cmd — понятны оба, включая cmd с экранированием кареткой (^).
  2. 2Вставь команду — Одной строкой или несколькими, с переносами через обратный слэш или без них. Postman, Insomnia и большинство документаций API отдают тот же формат.
  3. 3Выбери язык и клиент — Java, JavaScript, Python, PHP, Go, Ruby или C#. Там, где у языка несколько ходовых клиентов, они лежат в списке «Клиент»: java.net.http, OkHttp или Apache HttpClient для Java; fetch или axios для JavaScript.
  4. 4Забери код — Импорты, словарь заголовков и тело запроса уже на месте — сниппет работает как есть, заглушек подставлять не надо.
  5. 5Проверь, что запрос ещё живой — В команде лежат куки того момента, когда ты её забрал из браузера. Если код отвечает 403 там, где cURL отвечал 200, отправь тот же запрос через Отправку запросов и посмотри, что реально отвечает сервер.

Примеры

curl в Python (requests)
curl -X POST … -d '{"q":1}' → requests.post(url, headers=headers, data=data)
Скрипт на requests со словарём заголовков и собранным телом, в конце print(response.text).
curl в JavaScript (fetch)
const options = { method: "POST", headers: {…}, body: "…" } → fetch(url, options)
Чистый fetch без зависимостей — работает в Node 18+ и в браузере. Если в проекте уже axios, переключи клиент.
curl в Java (java.net.http)
HttpRequest.newBuilder().uri(URI.create(url)).method("GET", …).build()
Готовый класс Main на клиенте из JDK, без сторонних библиотек. OkHttp и Apache HttpClient 5 — соседний пункт списка.
Заголовки становятся словарём
-H 'Authorization: Bearer eyJ…' → .header("Authorization", "Bearer eyJ…")
Каждый -H переносится дословно — Authorization, Referer, длинный User-Agent Chrome, набор sec-ch-ua. Ничего не теряется и не переставляется.
Куки остаются заголовком Cookie
-b 'sid=8f2c…; lang=ru' → "Cookie": "sid=8f2c…; lang=ru"
Флаг -b сворачивается в обычный заголовок Cookie — именно он и нужен сессии скрапера.
Basic-авторизация превращается в заголовок
-u admin:secret → "Authorization": "Basic YWRtaW46c2VjcmV0"
Пара кодируется в base64 при конвертации, поэтому отдельного вызова авторизации в коде нет.
Формат Windows cmd
curl ^"https://example.com^" -H ^"Accept: */*^"
Copy as cURL (cmd) экранирует кареткой и удваивает кавычки. Вставляй как есть, чистить руками не нужно.

Когда использовать

У тебя есть рабочий запрос — из DevTools, Postman или документации API — и нужен код. Переписывать руками URL, метод, пятнадцать заголовков и JSON-тело долго, и рано или поздно ошибёшься в символе. Со вставленной командой этого не случается. В скрапинге с этого обычно всё и начинается. Находишь во вкладке Network запрос, который отдаёт данные, копируешь как cURL, конвертируешь в Python или Node — и скрипт стартует ровно с тех заголовков и кук, которых ждёт сервер, а не с догадок о них. Когда ответ приходит не тот, Отправка запросов отправит тот же запрос через прокси и покажет сырой ответ, а Проверка прокси скажет, не сам ли прокси виноват. Всё считается локально. Здесь это важнее, чем на других инструментах: в скопированном запросе почти всегда лежит живая сессионная кука или access-токен, и они остаются во вкладке браузера.

Частые вопросы

Как сконвертировать cURL в Python?›
Вставь команду и выбери Python. Получишь скрипт на requests: url, словарь headers, тело (если оно есть) и подходящий вызов requests.get или requests.post. Запускается сразу, подставлять ничего не нужно.
Можно ли сконвертировать cURL в Node.js?›
Да. Выбери JavaScript, дальше в списке «Клиент» — fetch или axios. fetch не тянет зависимостей на Node 18 и выше и работает в браузере; axios пригодится, если он в проекте уже есть. Заголовки и тело попадают в код в обоих случаях.
Какой Java HTTP-клиент поддерживается?›
Три, и выбираешь ты: java.net.http.HttpClient — встроен в Java 11+, без зависимостей; OkHttp; Apache HttpClient 5. На выходе целый класс Main, он компилируется и запускается сам по себе.
А PHP, Go, Ruby и C#?›
Все четыре на месте. PHP отдаёт код на ext-curl (curl_init / curl_setopt), Go и Ruby — на штатном net/http, C# — на HttpClient. У каждого из них один ходовой клиент, поэтому список «Клиент» для них не показывается.
Что такое «Copy as cURL (bash)» и чем он отличается от cmd?›
Это один и тот же запрос, записанный для двух разных оболочек. Вариант bash берёт значения в одинарные кавычки и переносит строки обратным слэшем. Вариант cmd, который Chrome предлагает под Windows, вместо этого экранирует кареткой (^) и удваивает кавычки — cmd.exe читает одинарную кавычку как обычный символ. Вставляй любой: разбор понимает оба, и помнить, что именно ты скопировал, не нужно.
Как прочитать чужую cURL-команду, не запуская её?›
Вставь её и смотри не на команду, а на сгенерированный код. Длинную строку cURL читать тяжело: URL, два десятка заголовков и тело идут сплошняком. Код разносит их по местам: метод отдельно, заголовки списком, тело отдельной строкой. Что запрос делает, видно до того, как ты его отправишь. Сама конвертация никуда ничего не отправляет.
Что происходит с --data-raw, -F и --compressed?›
--data-raw, --data, --data-binary и --data-urlencode становятся телом запроса. Multipart (-F) упрощается, и инструмент об этом предупреждает — сверь полученное тело перед использованием. Флаги, которые управляют только поведением самой утилиты cURL, — --compressed, -L, -k, -s, -v — принимаются, но в код не переносятся: HTTP-библиотеки разбираются с редиректами и сжатием по-своему. Флаг -x / --proxy тоже отбрасывается: прокси выбирается в Отправке запросов, там это настоящая настройка.
Конвертация идёт на сервере?›
Нет, разбор и генерация целиком во вкладке браузера. В команде, скопированной из DevTools, обычно лежит сессионная кука или bearer-токен — ни то, ни другое никуда не уходит.
cURL-команда работает, а сконвертированный код получает 403. Почему?›
Почти всегда с запросом всё в порядке, а не в порядке то, что вокруг. Куки, скопированные час назад, могли протухнуть. Часть защит смотрит и ниже HTTP, на TLS-рукопожатие: у клиента на Python или Java отпечаток не такой, как у Chrome, поэтому те же самые заголовки читаются как другой клиент. Сравни ответы через Отправку запросов, а если трафик идёт через прокси — проверь его в Проверке прокси.

Похожие инструменты