Cookies Este sitio guarda solo lo imprescindible para funcionar. Hoy no usa analítica ni publicidad, y nada de lo que hay aquí te sigue a otras webs. Leer la política de privacidad

Elegir qué permitir
+92 312 8299940Presupuesto gratis
Herramienta gratis, sin cuenta

Conversor curl
Convierte un comando en código

Este conversor curl convierte un comando en código que funciona. Elige PHP, Python, JavaScript, Go, Ruby, Java, C# o HTTP sin procesar. Así que pegas una vez, y después dejas de reescribir cabeceras a mano. El trabajo ocurre en tu navegador, y no subimos nada.

  • GratisPrecio
  • TreceIdiomas
  • NingunoRegistro
  • NingunoSubidas

curl Converter

Convierte un comando curl en PHP, Python, JavaScript, Go, Ruby, Java, C# o HTTP sin procesar

Listo. Pega un comando curl o pulsa Probar un ejemplo.

Tu navegador hace todo el trabajo aquí, en esta pestaña. No subimos nada, no guardamos nada y no registramos nada.
La versión corta

Qué hace un conversor curl

Un comando curl escribe una solicitud como línea de comandos. Este conversor curl convierte esa línea en código que puedes meter en un proyecto. Por eso la cabecera que copiaste de devtools conserva su valor exacto, y dejas de reescribirla.

De un pegado salen cuatro cosas. Primero, la solicitud en sí: método, dirección, cabeceras y cuerpo, leídos de vuelta para que los revises. Después, el código en el idioma que elegiste. Luego, las opciones que curl habría aplicado, como seguir redirecciones o un tiempo de espera. Por último, una lista de todo lo que el lector tuvo que decidir por su cuenta.

Esa última lista importa más de lo que parece. Una suposición silenciosa dentro del código generado es un error que encuentras en producción. Así que la página imprime cada decisión junto al código.

No instalas nada y no envías nada. Así que pegas un comando, lees el código y cierras la pestaña cuando te convenga.

Cómo lee un conversor curl un comando

El trabajo se divide en tres pasadas. Primero, la página parte el comando en palabras como lo haría un shell. Después lee cada palabra como opción, valor o dirección. Por último entrega la solicitud a un escritor del idioma que elegiste.

Diagrama de las tres pasadas que hace un conversor curl: a la izquierda un comando curl con tres cabeceras y un cuerpo JSON, en el medio tres pasos numerados que leen separar las palabras como lo haría un shell, marcar cada palabra como opción, valor o dirección, y entregar la solicitud a un escritor, y a la derecha la misma solicitud como script PHP con la dirección, las cabeceras y el cuerpo ya rellenados
Separa las palabras, lee las opciones y escribe la solicitud.

El corte sigue las reglas del shell para el entrecomillado, porque un comando pegado de devtools se apoya en ellas. Un cuerpo dentro de comillas simples es una sola palabra aunque contenga espacios. Una barra invertida al final de una línea la une a la siguiente.

Leer opciones es donde un conversor se gana el sueldo. Como curl lista más de doscientas opciones, solo algunas merecen conservarse. Las que importan cambian lo que ve un servidor. Son el método, las cabeceras, el cuerpo, las cookies, las redirecciones y el tiempo de espera. La página reporta el resto en lugar de adivinarlo.

Los escritores nunca tocan la red. Así que la página funciona sin conexión. También funciona en una máquina sin curl instalado. Un comando puede apuntar a una dirección que tu navegador no alcanza, y la página igual lo convierte.

Por qué el entrecomillado es la parte difícil

Un conversor que solo corta por espacios se equivoca en casi todos los comandos. Como el valor de una cabecera a menudo lleva un espacio, un corte ingenuo lo parte en dos. Entonces el código lleva medio token y la solicitud falla con un 401.

Así que el lector sigue el estado de las comillas mientras recorre la línea. Una comilla doble agrupa una serie de palabras en una, y una comilla simple hace lo mismo sin ningún escape dentro. Solo cuenta una comilla que abre y cierra en los sitios correctos.

La barra invertida es el tercer caso. Fuera de comillas escapa el carácter siguiente, y antes de un salto de línea elimina el propio salto. Por eso un comando pegado en veinte líneas sigue leyéndose como un solo comando.

Qué idiomas escribe

Trece destinos cubren el trabajo que casi todos traen aquí. Para PHP hay cURL básico y el cliente Guzzle. Para Python hay requests. Para JavaScript hay fetch, axios y el módulo http de Node.js. Go, Ruby, Java y C# reciben uno cada uno. Después vienen HTTP sin procesar, una línea curl limpia y JSON.

Captura del cuadro de código generado con el destino Python requests elegido: el ejemplo escrito como script que importa requests, mantiene intacta la dirección de pedidos, construye un diccionario de tres cabeceras con el token bearer en su sitio, pasa la carga JSON como una sola cadena, luego llama a post con verify y allow_redirects en true y un tiempo de espera de veinte segundos, e imprime el estado y el cuerpo
La misma solicitud como Python, con las cabeceras y el cuerpo byte a byte.

Cada escritor es una función pequeña sobre el mismo objeto de solicitud. Por eso todos los destinos ven bytes idénticos. El cuerpo que envía el ejemplo de PHP es el cuerpo que envía el de Go. Nada recorta una cabecera por idioma ni reformatea la carga en silencio.

Los escritores de PHP y Python apuntan a código que puedes ejecutar tal cual. Así que el de PHP abre con la etiqueta, define las opciones y cierra el manejador. El de Python importa requests, construye las cabeceras e imprime tanto el estado como el cuerpo.

JavaScript se divide en tres a propósito. Fetch viene en el navegador. Axios trae sus propias comodidades, y el módulo http de Node.js encaja en un script sin dependencias. Así que los tres se ganan un sitio.

Dos destinos son para leer más que para ejecutar. HTTP sin procesar imprime el mensaje como iría por el cable. Esa es la forma más rápida de ver si una cabecera está de verdad. JSON imprime la misma solicitud como datos, lista para un fixture de prueba.

Qué muestra el panel de lectura

Antes de que aparezca ningún código, la página imprime la solicitud que entendió. Nueve hechos reciben una línea cada uno. Cubren el método, la dirección, el número de cabeceras, el tamaño del cuerpo y el tipo de contenido. Después vienen la autorización, las cookies, las opciones y el tiempo de espera.

Captura del panel de lectura bajo el generador: nueve hechos en una rejilla que leen método POST, la dirección de pedidos con una consulta status, tres cabeceras, un cuerpo de solicitud de cincuenta y tres bytes, tipo de contenido application slash json, autorización definida por una cabecera, sin cookies, la opción follow y un tiempo de espera de veinte segundos, con la lista de cabeceras debajo mostrando accept, content type y authorization una por línea, la última con un token bearer enmascarado
La solicitud se lee de vuelta antes de escribir el código, así que una cabecera perdida aparece aquí.

Las direcciones no son la parte interesante. Más bien, el punto es la comprobación. Una cabecera que se perdió aparece aquí antes de que pegues nada. También un cuerpo que llegó como formulario en vez de JSON. Una contraseña en el sitio equivocado también aparece.

La página imprime la lista de cabeceras completa debajo, una por línea. Por lo tanto comparas lo que enviaría curl con lo que espera tu servidor. Entonces la diferencia se ve en lugar de suponerse.

El panel nombra las opciones con palabras llanas. Quien lee el código no debería tener que saber que -L significa seguir redirecciones. El panel dice follow, insecure, compressed o silent en su lugar.

De devtools a un script en un pegado

La vía habitual es el navegador. Todo navegador grande puede copiar una solicitud como curl. Así que abre el panel de red, haz clic derecho en la llamada que falló, cópiala y pégala aquí. El comando llega con las cabeceras reales, el cuerpo real y las cookies reales.

Captura de las notas de decisión bajo un comando convertido: una línea explica que un cuerpo multipart se construye aquí y se envía como bytes sin procesar, y que una parte de archivo es un marcador porque la página no puede leer tu disco
Todo lo que el lector tuvo que decidir se imprime junto al código, no se esconde en él.

Esa es también la forma habitual de depurar una llamada privada. Así que reproduces una solicitud fallida como código. Después añades un print y miras qué dice el servidor, en lugar de adivinar desde un panel de red.

Los saltos de línea no importan. Por lo tanto la página lee un comando copiado en veinte líneas igual que lee una sola. La indentación tampoco importa.

Paso a paso

Cómo usar el conversor curl

Cuatro pasos, y ninguno necesita una cuenta.

  • 1

    Copia el comando

    Así que abre devtools, haz clic derecho en la solicitud y elige Copiar como curl. Desde un documento o un README, selecciona el comando entero, incluidas las barras invertidas al final de una línea.

  • 2

    Pégalo en el cuadro izquierdo

    Después pega todo. El cuadro toma el comando exactamente como lo copiaste. Así que no hace falta unir las líneas ni ordenar la indentación antes.

  • 3

    Revisa el panel de lectura

    A continuación compara los hechos con lo que esperas. Una cabecera que falta se ve mejor aquí que en el código de abajo. Y un cuerpo que llegó como formulario también.

  • 4

    Elige un idioma y llévate el código

    Por último, elige un destino y cópialo o descárgalo. Lee también las notas de decisión: la página lista a propósito todo lo que el lector adivinó.

Por qué esta página

Por qué usar este conversor curl

Cuatro razones, y cada una va sobre la solicitud en vez del código.

  • Un pegado, trece destinos

    Así que comparas dos idiomas lado a lado y zanjas la discusión sobre qué cabecera falta. Como la misma solicitud alimenta a todos los escritores, los ejemplos concuerdan entre sí por construcción.

  • Nada sale del navegador

    Por lo tanto un token bearer o una cookie de sesión se quedan en tu máquina. No hay subida, ni registro, ni cuenta. Eso importa cuando un comando lleva un secreto vivo.

  • La página imprime cada suposición

    Como una suposición silenciosa dentro del código generado es un error que encuentras después, la página lista cada decisión junto al código, con la opción de la que viene.

  • Cada ejemplo de PHP pasa php -l primero

    Después la compilación escribe cada ejemplo de PHP en un archivo. Ejecuta cada uno por php -l antes de que la página salga. Así que los errores de entrecomillado se pillan aquí y no en tu editor.

Reglas que sigue

Las reglas que mantiene este conversor

Seis reglas, y son lo que hace fiable la salida en vez de solo plausible.

  • El método viene del comando Un -X explícito gana. Si no, se aplican las reglas de curl. Un cuerpo lo convierte en POST, una opción HEAD lo convierte en HEAD, y el resto se queda en GET.
  • Un tipo de contenido declarado vence a un valor por defecto Devtools siempre envía la cabecera. Así que el código lleva el valor que copiaste, incluso cuando curl habría adivinado otra cosa.
  • Las partes de cuerpo repetidas se unen con un ampersand Así que tres opciones -d se convierten en un cuerpo de formulario, exactamente como las envía curl. La página dice que las unió, para que lo sepas.
  • La autenticación básica se construye, no se copia Entonces el usuario y la contraseña de -u se convierten en una cabecera Authorization. Así que el código envía los mismos bytes sin necesitar que curl lo haga.
  • No se envía nada a ningún sitio La lectura y la escritura se ejecutan ambas en tu navegador. Así que un comando que apunta a un host interno igual convierte bien, y nunca se hace ninguna solicitud.
  • Una negativa es un resultado Así que la página reporta una opción sin equivalente en el idioma de destino. Nunca descarta esa opción en silencio. Después decides qué hacer, con la opción nombrada.
Cuidado aquí

Errores que evitar con solicitudes generadas

Seis cosas que la gente hace mal, y cómo esquivar cada una.

  • Pegar un comando con comillas rotas

    Ojo cuando un shell o una ventana de chat ha quitado las comillas externas. Como una comilla sin cerrar se traga el resto de la línea, revisa la marca de cierre antes de culpar al conversor.

  • Dejar un token real en el ejemplo

    Por lo tanto reemplaza un token bearer vivo por un marcador antes de subir el archivo. El conversor conserva el valor que le diste, así que el orden es cosa tuya.

  • Confiar en una cabecera leída de un archivo

    Una opción -H @file significa que la cabecera vive en el disco. Como esta página no puede abrir tu disco, la cabecera falta en el código, y la nota lo dice.

  • Olvidar que las redirecciones difieren por defecto

    Así que curl no sigue una redirección salvo que pases -L. Varios clientes HTTP sí siguen por defecto, y esa diferencia muerde. El panel nombra la elección que hizo el comando.

  • Pegar un cuerpo multipart y esperar un archivo real

    Esta página no puede leer el archivo que nombraste. Así que el cuerpo lleva un marcador, y después pones la ruta real. Tu librería cliente puede construir el formulario multipart por su cuenta.

  • Suponer que todos los idiomas entrecomillan igual

    Un cuerpo con un apóstrofo rompe una cadena PHP descuidada y una cadena Python descuidada en sitios distintos. Por lo tanto cada escritor escapa para su propio idioma, y la compilación pasa php -l sobre los de PHP.

Preguntas

Preguntas sobre el conversor curl

¿Es gratis este conversor curl?

Sí. No hay cuenta, ni límite, ni plan de pago. Así que conviertes tantos comandos como quieras.

¿Envía mi comando a algún sitio?

No. Como la lectura y la escritura se ejecutan en tu navegador, el comando nunca sale de tu máquina. Por eso una solicitud con un token vivo se queda privada.

¿Ejecuta la solicitud?

No. Solo lee el comando y escribe código. Así que nada va a la dirección del comando, y eso hace seguro pegar un host interno.

¿Qué idiomas puede escribir?

Trece destinos. Para PHP hay dos: cURL básico y Guzzle. Python recibe requests, y JavaScript recibe fetch, axios y el módulo http de Node.js. Go, Ruby, Java y C# reciben uno cada uno. Los tres últimos son HTTP sin procesar, una línea curl limpia y JSON.

¿Puede leer un comando copiado de devtools de Chrome o Firefox?

Sí. Esa es la vía principal. Después el comando copiado llega con sus comillas y sus barras invertidas, y el lector maneja las dos.

¿Y un comando escrito en una sola línea muy larga?

Lo lee igual. El separador trabaja sobre espacios y comillas, no sobre líneas. Así que una línea larga y veinte cortas dan la misma solicitud.

¿Entiende --data-raw, --data-binary y --data-urlencode?

Sí, y cada uno conserva su significado. Así que una parte urlencoded sigue codificada, y una parte binaria pasa tal cual.

¿Qué pasa con las subidas de archivo -F?

La página construye el cuerpo multipart por su cuenta y lo envía como bytes sin procesar. Como no puede leer tu disco, una parte de archivo lleva un marcador, y la nota dice cuál.

¿Sigue las redirecciones como curl?

Coincide con el comando. Así que curl no sigue una redirección sin -L, y el código solo sigue cuando el comando lo hizo.

¿Cómo maneja -u usuario:contraseña?

Construye la cabecera Authorization por su cuenta a partir de las dos partes. En consecuencia el código generado envía la misma cabecera Basic sin necesitar una opción de curl.

¿Por qué aparece una opción en las notas de decisión?

Porque el lector tuvo que elegir por ti o tuvo que dejar algo fuera. Entonces la nota nombra la opción, para que puedas revisarla a mano.

¿Puedo convertir un comando curl sin dirección?

En parte. Entonces la página lee y reporta las opciones, pero no hay solicitud que escribir. En su lugar pide una dirección.

¿Puedo ejecutar el PHP generado tal cual?

Sí. Abre con la etiqueta, define las opciones, ejecuta y cierra el manejador. Además pasa por php -l antes de que esta página salga, así que el entrecomillado aguanta.

¿Y el Python generado?

Importa requests, construye las cabeceras, envía la llamada con el método correcto e imprime el estado y el cuerpo. Así que lo pegas en un archivo y lo ejecutas.

¿Por qué fetch necesita un ajuste de redirección?

Porque el valor por defecto del navegador difiere del de curl. Así que el código nombra follow o manual, y ambos coinciden con lo que pidió el comando.

¿Conserva el orden de las cabeceras?

Sí. El código escribe las cabeceras en el orden en que aparecieron en el comando. Así que un diff contra la línea original se lee bien.

¿Puede leer un archivo de cookies?

La página reporta la ruta, pero no abre el archivo. Como un navegador no puede leer tu disco en silencio, no inventa ninguna cabecera Cookie a partir de él.

¿Qué hace el destino curl limpio?

Escribe la misma solicitud de vuelta como una línea curl más ordenada, con una opción por línea. Así que puedes pegarla en un script o en un ticket y ver cada parte.

¿Para qué sirve el destino JSON?

Imprime la solicitud como datos. Entonces lo dejas en un fixture de prueba y comparas lo que envía tu código con lo que envió curl.

¿Maneja --json?

Sí. Esa opción define a la vez el tipo de contenido y la cabecera accept, y el panel muestra las dos. Cuando se mezcla una parte de cuerpo normal, la página dice que la combinación es ambigua.

¿Cuántas cabeceras puede aceptar?

Cientos. El lector es una sola pasada sobre las palabras. Así que un comando con trescientas cabeceras convierte en el mismo instante que uno con tres.

¿Funciona en un teléfono?

Sí. Los cuadros se apilan y el ejemplo se lee bien a poca anchura. Así que puedes convertir un comando cuando estás lejos de un escritorio.

¿Puedo usar la salida en un proyecto comercial?

Sí. No hay licencia sobre el código generado, porque el código generado es tuyo y nadie pide atribución.

¿Por qué el código a veces lleva un comentario?

Porque el idioma de destino tiene un sitio donde explicarse. Así que el código aclara una opción con un significado sorprendente donde la encontrará quien lea el archivo.

¿Y si el conversor lee una opción que nunca he visto?

La página la reporta como opción desconocida y la salta. Sobre todo, no inventa nada en su lugar, y eso mantiene honesto el resto de la solicitud.

¿Hay una API?

No, y no hace falta, porque el trabajo ya ocurre en tu navegador. Por eso también nada llega a un registro del servidor.

Sigue avanzando

Herramientas que van con esta

Cuatro páginas a las que suele llevar el mismo trabajo.

  • Formateador JSON

    Después embellece el cuerpo de la solicitud antes de pegarlo en un fixture. Como una carga de una sola línea esconde una clave mala, esto lo deja a la vista.

    Abrir herramienta →
  • Codificador y decodificador de URL

    También revisa un valor de consulta que pasó por --data-urlencode. Entonces ves si los signos de porcentaje están bien antes de que un servidor los rechace.

    Abrir herramienta →
  • Codificador y decodificador de entidades HTML

    Para un cuerpo de solicitud que lleva marcado, esto muestra lo que el servidor leerá de verdad. Así que un ampersand escapado deja de ser una suposición.

    Abrir herramienta →
  • Minificador de JavaScript

    Después de pegar el ejemplo de fetch en un proyecto, esto lo reduce para la compilación del navegador. Entonces el archivo que se publica se queda pequeño.

    Abrir herramienta →

Convierte ahora un comando curl

Pega el comando, revisa la solicitud que devuelve y llévate el código en el idioma que necesites. Nada sale de tu navegador, así que un token sigue siendo tuyo. Todo el trabajo cabe en un pegado.