Conversor de curl a código: Python, JavaScript, Go, PHP y más

Pega un comando curl, incluido el "Copy as cURL" de Chrome, y obtén la misma petición en Python, JavaScript, Node, Go, PHP, Ruby, Java, C#, wget o HTTPie.

Ejemplos:
Convertir a
POST https://api.example.com/v1/orders · 2 cabeceras · cuerpo JSON
import requests

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

json_data = {
    'customer_id': 'cus_123',
    'items': [
        {
            'sku': 'TSHIRT-M',
            'qty': 2,
        },
    ],
    'note': 'Leave at the door',
}

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

Funciona por completo en tu navegador. El comando solo se analiza, nunca se ejecuta ni se envía a ningún sitio, así que los tokens y las cookies que contenga se quedan en tu equipo. Ver todas las herramientas gratis.

¿Encontraste un problema o algo que podría mejorar? Leemos todos los mensajes y lo arreglamos rápido.

Este conversor gratis de curl a código toma un comando curl y escribe la misma petición HTTP en Python (requests), JavaScript (fetch o Axios), Node.js, Go, PHP, Ruby, Java, C#, wget o HTTPie. El flujo habitual: encuentras una petición en las DevTools de tu navegador, eliges Copy as cURL, la pegas aquí y obtienes código que funciona sin volver a escribir las cabeceras ni escapar a mano un cuerpo JSON.

El analizador sigue las propias reglas de curl: las opciones cortas se pueden combinar (-sSL) o ir pegadas (-XPOST), la URL puede aparecer en cualquier parte, -d implica POST con un tipo de contenido de formulario, -G mueve los datos a la cadena de consulta y --data-urlencode codifica como lo hace curl. Entiende las comillas de bash, incluidas las cadenas $'…' que genera Chrome, y las comillas de cmd de Windows con escapes ^. Todo lo que un lenguaje de destino no puede expresar, como omitir la verificación TLS en un navegador, se indica en un comentario en lugar de descartarse sin avisar.

Cómo usarla

  1. En las DevTools de Chrome o Edge, abre la pestaña Network, haz clic derecho en una petición y elige Copy → Copy as cURL (bash o cmd). En Firefox, elige Copy Value → Copy as cURL. O escribe tu propio comando curl.
  2. Pégalo en el cuadro. El método, la URL, el número de cabeceras y el tipo de cuerpo aparecen encima de la salida para que compruebes que se ha leído bien.
  3. Elige el lenguaje de destino. El código se actualiza al instante.
  4. Lee las notas que aparezcan en el recuadro amarillo: enumeran las opciones que se han ignorado o que requieren atención.
  5. Copia el código o descárgalo. Sustituye los tokens y las cookies antes de subirlo a ningún sitio.

Preguntas frecuentes

¿Cómo copio una petición como cURL desde Chrome?

Abre las DevTools (F12 o Cmd+Option+I), ve a la pestaña Network y recarga la página si la lista está vacía. Haz clic derecho en la petición que quieras, elige Copy y luego Copy as cURL (bash) en macOS y Linux o Copy as cURL (cmd) en Windows. Aquí funcionan ambos formatos. El comando copiado incluye tus cookies y cabeceras de autorización, así que trátalo como una contraseña.

¿Por qué faltan algunas cabeceras en el código fetch para navegador?

Los navegadores no permiten que JavaScript establezca ciertas cabeceras de petición: Cookie, Host, Origin, Referer, en la práctica User-Agent, Content-Length, Accept-Encoding, Connection y cualquiera que empiece por Sec- o Proxy-. El estándar Fetch las llama forbidden request headers (cabeceras de petición prohibidas) y las rellena el propio navegador. La salida de fetch para navegador las omite y lo indica en un comentario; la salida de fetch para Node.js las conserva, porque Node no tiene esa restricción.

¿Qué diferencia hay entre -d, --data-raw y --data-binary?

-d (--data) envía el texto como cuerpo, pero un valor que empieza por @ se lee de un archivo, quitando los retornos de carro y los saltos de línea. --data-raw es lo mismo sin el comportamiento de archivo con @, y por eso lo usan los navegadores. --data-binary también lee archivos con @, pero conserva los bytes exactamente. Los tres establecen Content-Type: application/x-www-form-urlencoded salvo que pases tu propia cabecera, y varias opciones -d se unen con &.

¿curl sigue las redirecciones?

No por defecto; devuelve la respuesta 3xx salvo que añadas -L (--location). La mayoría de las bibliotecas HTTP hacen lo contrario: fetch, Python requests, Go net/http, Axios en Node y HttpClient de .NET siguen las redirecciones automáticamente. Java HttpClient, PHP cURL y Ruby Net::HTTP no, así que cuando tu comando lleva -L el código generado activa el seguimiento para ellas (Ruby recibe una nota, porque Net::HTTP no tiene una opción para ello).

¿Qué hace --compressed y lo necesito en el código?

Hace que curl envíe una cabecera Accept-Encoding (gzip, deflate, br y zstd, según cómo se haya compilado curl) y descomprima la respuesta. Los navegadores, Python requests, Go y el fetch de Node ya piden y decodifican respuestas comprimidas sin que se les diga. El código generado solo lo añade donde la biblioteca necesita activarlo: CURLOPT_ENCODING en PHP, AutomaticDecompression en C# y --compression=auto en wget.

¿Se envía mi comando curl a algún sitio?

No. El comando lo analiza y convierte JavaScript en esta página. Nunca se ejecuta ni se envía a un servidor, así que los tokens y las cookies de sesión de una petición copiada de las DevTools se quedan en tu equipo.

Opciones de curl y en qué se convierten

• -X / --request fija el método. Sin él, el método es GET; POST cuando hay -d, --json o -F; HEAD con -I, y PUT con -T.

• -H / --header añade una cabecera. "Name:" sin nada detrás elimina una cabecera, y "Name;" envía una vacía.

• --json body envía JSON y establece tanto Content-Type como Accept en application/json (curl 7.82 y posteriores).

• -F name=value y -F file=@photo.jpg;type=image/jpeg crean un cuerpo multipart/form-data; el código usa FormData, files=, CURLFile o MultipartFormDataContent según corresponda.

• -u user:password se convierte en autenticación Basic; -b "a=1; b=2" se convierte en una cabecera Cookie (o en un diccionario cookies en Python).

• -A y -e establecen User-Agent y Referer. -k / --insecure desactiva la comprobación de certificados; se muestra con un aviso cuando es posible, porque nunca debería llegar a producción.

• -G / --get añade todos los valores de -d y --data-urlencode a la URL como cadena de consulta y envía un GET.

• -s, -S, -v, -i, -o y las opciones de progreso solo afectan a cómo curl muestra la salida, así que no tienen equivalente en código y se ignoran.

Comillas en bash y en Windows, en resumen

En bash, el texto entre 'comillas simples' es literal; las "comillas dobles" permiten los escapes \" y \$; las cadenas $'…' entienden los escapes \n, \t, \' y \xHH. Una barra invertida al final de una línea continúa el comando en la línea siguiente. Chrome usa $'…' siempre que una cabecera o un cuerpo contiene una comilla simple o un carácter no ASCII.

En el cmd de Windows, ^ es el carácter de escape y también continúa una línea. El "Copy as cURL (cmd)" de Chrome envuelve cada valor en ^"…^" y escapa con ^ caracteres como &, %, { y }. PowerShell es distinto otra vez: en Windows PowerShell 5, curl es un alias de Invoke-WebRequest, así que allí ejecuta curl.exe explícitamente. Este conversor lee las formas de bash y de cmd; la sintaxis específica de PowerShell, como las continuaciones con acento grave, no es compatible.

Herramientas gratis relacionadas

  • JSON a TypeScript — Pega una muestra JSON y obtén interfaces de TypeScript, un esquema Zod, JSON Schema o tipos para Go, Python, Java, C#, Kotlin, Swift y Rust.
  • Formateador JSON — Formatea, minifica y valida JSON, con los errores de análisis localizados por línea y columna. En tu navegador, sin subir nada.
  • Decodificador de JWT — Decodifica la cabecera y el payload de un JWT, lee la caducidad en lenguaje claro, verifica firmas HS, RS, PS y ES o firma un token nuevo. Nada sale de tu navegador.
  • Codificador / decodificador Base64 — Codifica texto o archivos en Base64, convierte imágenes en data URI con fragmentos CSS e <img>, y decodifica Base64 a un archivo con vista previa. Nada sale de tu navegador.
  • Decodificador de certificados SSL — Pega un certificado PEM, una cadena o un CSR, o sube un archivo .crt, para ver los SAN, la caducidad, el emisor, el tipo de clave y las huellas. Se decodifica en tu navegador.