Конвертер cURL в Python

Вставьте команду curl, например скопированную со вкладки «Сеть» в браузере или из документации API, и получите тот же запрос в виде кода на Python с библиотекой requests. Тела JSON превращаются в словари Python, поэтому их легко править.

Работает в браузере: всё, что вы вводите, никуда не отправляется.

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

  1. Вставьте команду curl. Можно с curl или $ curl в начале, можно многострочную с \ в конце строк.
  2. Скопируйте код на Python и запустите его с установленной библиотекой requests (pip install requests).
  3. Проверьте пометку под результатом — там то, что не удалось перенести.

Как это работает

Команда разбивается на части так же, как это сделала бы оболочка, затем читается каждая опция:

  • Метод берётся из -X; если его нет — POST при наличии тела или формы, HEAD с -I, иначе GET. Для стандартных методов используются requests.get, requests.post и т. д., для остальных — requests.request.
  • Заголовки (-H, -A, -b, -e и -u как Basic-авторизация) попадают в словарь headers.
  • Тело JSON с типом содержимого JSON становится json_data (true → True, null → None); другие тела — строкой data; поля -F — files. С -G данные добавляются в URL.

Пример

curl -X POST https://api.example.com/items -H 'Content-Type: application/json' -d '{"name":"x","ok":true}'

превращается в

import requests

headers = {
    'Content-Type': 'application/json',
}

json_data = {
    'name': 'x',
    'ok': True,
}

response = requests.post('https://api.example.com/items', headers=headers, json=json_data)
print(response.status_code)
print(response.text)

Советы

  • Скопированные из браузера команды содержат cookie и токены. Удалите их или вынесите в переменные окружения, прежде чем делиться кодом.
  • Если API возвращает JSON, используйте response.json() вместо response.text.
  • Для JavaScript ту же команду можно преобразовать конвертером cURL в fetch.

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

Какие опции curl переносятся?

-X, -H, -d и его варианты --data, --data-urlencode, --json, -u, -F, -G, -I, -A, -b, -e и --url, с кавычками ', " и $'…' и переносами строк через обратную косую черту. Опции, которые меняют только поведение самого curl, например -L, -s или --compressed, отбрасываются.

Когда используется json=, а когда data=?

json= — когда у запроса тип содержимого JSON (задан через -H или добавлен --json) и тело является корректным JSON. Тогда тело записывается как словарь Python и передаётся через json=. Любое другое тело передаётся строкой через data=.

Во что превращается -u user:pass?

В заголовок Authorization со схемой Basic и user:pass в Base64 — тот же заголовок, что отправляет curl. При желании его можно заменить на auth=('user', 'pass').

Как переносится загрузка файлов?

Поля -F становятся словарём files. Текстовые поля записываются как (None, 'value'), файлы — как open('name', 'rb'). Убедитесь, что путь к файлу верен там, где запускается скрипт.

Что не переносится?

Прокси, тайм-ауты, сертификаты, -k и опции вывода не имеют здесь прямого аналога и отбрасываются или перечисляются под результатом. Если они нужны, добавьте timeout= или verify= в вызов сами.

Ещё в разделе «Разработчикам»

Все инструменты раздела: Разработчикам ·Обновлено 4 ноября 2026 г.

Настройки конфиденциальности

Google Analytics показывает нам, какими инструментами пользуются и работают ли они. Он может ставить cookie. Ваш выбор сохраняется в этом браузере.