Generador de código cURL
Entrada de cURL
Pega un comando cURL para analizar automáticamente la URL, el método, las cabeceras y el cuerpo de la solicitud.
Solicitud analizada
Código generado
Pega el comando curl y obtén código de petición HTTP ejecutable en 11 lenguajes en segundos.
Relacionado
Casos de uso
- Después de hacer clic derecho en una petición en el panel Network de Chrome DevTools y seleccionar «Copy as cURL», pégalo en esta herramienta para convertirlo directamente al código del lenguaje que usa tu proyecto, 10 veces más rápido que escribir la petición a mano
- Al depurar APIs de terceros cuando la documentación da ejemplos curl, conviértelos rápidamente a código Python requests/Java OkHttp/C# HttpClient para integrarlos en tu proyecto
- Al depurar interfaces de entorno de producción, copia comandos curl desde herramientas de captura (Charles/mitmproxy/Wireshark) y conviértelos a código de prueba unitaria para verificar directamente
- Al escribir documentación de API, cambia rápidamente entre ejemplos de múltiples lenguajes, proporcionando ejemplos de código listos para ejecutar a lectores de diferentes stacks tecnológicos
- Al solucionar problemas de peticiones en producción, usa curl para reproducir el problema y luego conviértelo a código para enviarlo a colegas o crear un Issue, facilitando que otros lo reproduzcan directamente
- En desarrollo multilenguaje (por ejemplo, pasar de un proyecto Python a Go), convierte rápidamente peticiones curl existentes a código de cliente HTTP del nuevo lenguaje, ahorrando tiempo de consulta de documentación
- En scripts Shell convierte comandos curl a PowerShell Invoke-RestMethod para colegas de operaciones Windows, o viceversa
- Aprende el protocolo HTTP: comparando el código que implementa la misma petición en diferentes lenguajes, comprende las diferencias de API de las bibliotecas cliente HTTP
- Convierte rápidamente curl -X POST -d 'json' a código con Content-Type correcto y serialización JSON, evitando errores de concatenación de cadenas a mano
- Cuando necesites llamar a APIs en scripts CI/CD, convierte comandos curl depurados localmente a código del lenguaje de script correspondiente para integrarlo en el pipeline
Cómo Usar
- Obtén el comando curl: en el panel Network de DevTools del navegador haz clic derecho en la petición → Copy → Copy as cURL (bash); o exporta cURL desde herramientas de captura como Postman/Charles/mitmproxy; o escribe el comando curl a mano
- Pega en el cuadro de entrada: pega el comando curl en el área de entrada superior, admite comandos de una o varias líneas (con barra invertida de continuación), eliminando automáticamente los saltos de línea
- Haz clic en botones de ejemplo para referencia: si no estás familiarizado con el formato puedes hacer clic en «Ejemplo 1/2/3» para cargar comandos curl preestablecidos y ver el efecto
- Ver resultados del análisis: el área de resultados mostrará URL, número de cabeceras, caracteres del cuerpo, e insignias de compresión/redirección/omitir certificado/autenticación Basic, mostrando avisos naranjas si hay problemas
- Ajusta el método si es necesario: si el método reconocido automáticamente es incorrecto (por ejemplo, curl no tiene -X POST pero debería ser POST), cambia manualmente el método HTTP en el desplegable
- Selecciona el lenguaje objetivo: en el área de código objetivo haz clic en el botón del lenguaje correspondiente (fetch/Axios/Python requests/Go/PHP/Java/C#/PowerShell/wget, etc.)
- Copia el código: haz clic en el botón «Copiar código», pégalo en tu proyecto/terminal y ejecútalo
Características
- 11 lenguajes/bibliotecas objetivo: cubre frontend (JS fetch/Axios), Node.js (node-fetch), Python (requests/httpx), Go (net/http), PHP (cURL), Java (OkHttp), C# (HttpClient), PowerShell (Invoke-RestMethod), línea de comandos (wget), todos los stacks tecnológicos principales
- Análisis inteligente de comandos curl: reconoce automáticamente URL, método HTTP, cabeceras, cuerpo, admite comillas simples/dobles, escape con barra invertida, comandos multilínea (barra invertida al final de línea)
- Soporte completo para parámetros curl comunes: -X/--request método, -H/--header cabecera, -d/--data/-F formulario/cuerpo JSON, -u/--user autenticación Basic, -A/--user-agent UA, -b/--cookie Cookie, -e/--referer Referer, -L/--location seguir redirecciones, --compressed descompresión automática, -k/--insecure omitir verificación de certificado, -I/--head petición HEAD
- Reconocimiento inteligente de cuerpo JSON: detecta Content-Type application/json y serializa automáticamente con JSON.parse/JSON.stringify/requests(json=)/json=, generando código que usa objetos directamente en lugar de cadenas, más idiomático
- Conversión automática de autenticación Basic: al detectar -u user:pass genera automáticamente la cabecera Authorization: Basic <base64>, usando mecanismos nativos de autenticación en cada lenguaje (Python auth=, OkHttp credentials, C# credentials, etc.)
- Insignias de indicadores de seguridad: detecta automáticamente parámetros como --compressed/-L/-k/-u, mostrándolos con insignias visibles en los resultados del análisis
- Cambio manual de método HTTP: después de analizar automáticamente el método curl, permite cambiar manualmente el método en el desplegable (GET/POST/PUT, etc. 7 tipos), viendo el código correspondiente al instante
- Escape de cadenas seguro: al generar código para cada lenguaje usa literales de cadena nativos (comillas triples/barra invertida en Python, acentos invertidos en Go, @"" en C#, comillas simples en PHP, comillas dobles escapadas en Java), evitando errores de sintaxis
- Avisos de error de análisis: cuando se introduce un comando curl inválido (falta URL, no empieza por curl, POST sin body, etc.) muestra un aviso naranja indicando el problema específico
- 3 ejemplos con un clic: proporciona 3 ejemplos típicos: GET+autenticación Token, POST+JSON, autenticación Basic+seguir redirecciones, para ver rápidamente la capacidad de la herramienta
- Limpiar entrada con un clic: el botón Clear restablece rápidamente, sin residuos al pegar nuevos comandos
- Procesamiento 100% local: los comandos curl y el contenido de las peticiones se analizan y convierten completamente en el navegador, no se suben a ningún servidor, los tokens/contraseñas sensibles no se filtran
- Copiar código con un clic: después de generar el código haz clic en el botón Copy para copiar al portapapeles, pégalo directamente en tu proyecto y ejecútalo
- Adaptación de modo inseguro HTTPS: el parámetro -k/--insecure genera la configuración correspondiente de omisión de verificación de certificado TLS en Node/Go/Python/PHP/C#/PowerShell (wget usa --no-check-certificate, C# muestra aviso ServicePointManager, Node establece NODE_TLS_REJECT_UNAUTHORIZED)
Preguntas Frecuentes
¿Para qué sirve la herramienta de conversión de cURL a código? ¿Por qué no usar directamente el comando curl?
Llamar directamente a comandos curl en el código (como shell_exec, subprocess.run) requiere iniciar subprocesos, es inseguro y difícil de manejar errores, obtener cabeceras de respuesta, hacer conversiones de tipos. El código de producción debería usar clientes HTTP nativos del lenguaje de programación (Python requests, Java OkHttp, JS fetch, etc.). El valor de curl-to-code es traducir automáticamente los comandos curl que copias desde DevTools/herramientas de captura al código de cliente HTTP del lenguaje correspondiente, ahorrándote el trabajo mecánico de consultar documentación de API, escapar comillas manualmente, procesar JSON/autenticación, etc., copia y pega para ejecutar.
¿Qué lenguajes/bibliotecas objetivo son compatibles?
Actualmente son compatibles 11 objetivos: JavaScript fetch (nativo del navegador), Axios (biblioteca HTTP universal Node/navegador), Node.js node-fetch, Python requests (biblioteca HTTP más popular de Python), Python httpx (biblioteca HTTP de nueva generación compatible con HTTP/2 y asíncrona), Go net/http (biblioteca estándar de Go), extensión PHP cURL, Java OkHttp (biblioteca de alto rendimiento universal Android/backend), C# HttpClient (cliente HTTP estándar de .NET), PowerShell Invoke-RestMethod (común en scripts de automatización Windows), wget (herramienta de descarga por línea de comandos). Si el lenguaje que necesitas no está en la lista (como Ruby, Rust reqwest, Dart http, Swift URLSession, etc.), puedes enviar comentarios en la página, lo añadiremos según la demanda.
¿Cómo copiar el comando curl desde Chrome DevTools?
Pasos: 1. Abre Chrome/Edge, presiona F12 para abrir DevTools; 2. Cambia al panel Network; 3. Actualiza la página o dispara la petición objetivo; 4. Encuentra la petición objetivo en la lista de peticiones (puedes filtrar por XHR/JS); 5. Haz clic derecho en la petición → Copy → selecciona «Copy as cURL (bash)» (recomendado versión bash, mejor compatibilidad); 6. Pega en el cuadro de entrada de esta herramienta. Ten cuidado de no seleccionar Copy as fetch (eso es código JS no curl). Firefox/Safari funcionan de forma similar, todos tienen la opción Copy as cURL.
El manejo de comillas en comandos curl es complicado, ¿qué formatos son compatibles?
La herramienta reconoce comillas simples, comillas dobles, escape con barra invertida estilo bash; comillas dobles+escape ^ de Windows cmd; escape con acento invertido de PowerShell básicamente. Se recomienda usar formato bash (envuelto en comillas simples). Los comandos multilínea (con barra invertida \ de continuación) también admiten pegado, la herramienta elimina automáticamente saltos de línea y caracteres de continuación. Si tu comando curl es especialmente complejo (contiene variables de shell, sustitución de comandos $(...), tuberías |, etc.), se recomienda ejecutar primero el comando echo en el terminal para imprimir el curl real expandido y luego copiar, o simplificar manualmente primero (sustituir variables por valores reales).
¿Por qué al enviar JSON con -d en curl el servidor recibe datos ilegibles/400?
Este es uno de los errores más comunes de curl. La opción -d/--data de curl tiene Content-Type por defecto application/x-www-form-urlencoded (formato formulario), no application/json. Si haces directamente curl -d '{"name":"demo"}' url, el servidor lo analizará como formulario (fallo de análisis o datos vacíos). Debes añadir explícitamente la cabecera -H "Content-Type: application/json" para enviar JSON correctamente. Esta herramienta muestra un aviso naranja cuando detecta cuerpo pero sin Content-Type.
¿El código generado se puede copiar y ejecutar directamente? ¿Qué dependencias necesito instalar?
El código de la mayoría de lenguajes se puede ejecutar directamente usando bibliotecas estándar (fetch/Go net/http/PHP cURL/C# HttpClient/PowerShell/wget son integrados), no requiere instalación adicional. Otros requieren bibliotecas de terceros: Axios (requiere npm install axios), node-fetch (requiere npm install node-fetch, Node 18+ tiene fetch integrado sin instalación), Python requests (pip install requests), Python httpx (pip install httpx), Java OkHttp (requiere importar dependencia okhttp3 con Maven/Gradle). El código por defecto imprime el código de estado y texto de la respuesta, puedes modificar la lógica de procesamiento según necesites.
¿Es compatible con la subida de archivos multipart/form-data (parámetro -F)?
Soporte básico: el parámetro -F se reconoce como cuerpo de petición (body), pero el código generado actualmente trata @file como cadena literal en lugar de subida de archivos real. La subida de archivos requiere leer el contenido del archivo local, los métodos de procesamiento varían mucho entre lenguajes (JS usa FormData/FormData.append, Python usa parámetro files=, Go usa multipart.Writer). Se recomienda, sobre la base del código generado por la herramienta, consultar la documentación de subida de archivos de la biblioteca correspondiente para hacer ajustes. Versiones posteriores mejorarán el soporte de multipart.
¿Se subirán mis comandos curl y datos sensibles?
Absolutamente no. Todo el proceso de análisis y generación de código se completa 100% localmente en tu navegador (JavaScript puramente de frontend), los comandos curl, Tokens/Cookies/contraseñas en las cabeceras, datos en el cuerpo de la petición no se envían a ningún servidor. Puedes usar esta herramienta sin conexión, no te preocupes por filtraciones de información sensible.
¿Cómo se maneja -k/--insecure para omitir verificación de certificado en el código de cada lenguaje?
Al detectar el parámetro -k, esta herramienta genera la configuración correspondiente de omisión de verificación de certificado para cada lenguaje objetivo: Python requests/httpx usa verify=False; Node.js establece process.env.NODE_TLS_REJECT_UNAUTHORIZED='0'; Go crea tls.Config{InsecureSkipVerify: true} personalizado; PHP establece CURLOPT_SSL_VERIFYPEER=false y CURLOPT_SSL_VERIFYHOST=0; Java OkHttp requiere TrustManager personalizado (se añade aviso en comentario en el código, porque el código es largo); C# puede personalizar ServerCertificateCustomValidationCallback; PowerShell usa -SkipCertificateCheck (PS6+); wget usa --no-check-certificate; fetch del navegador no puede omitir certificados (restricción de seguridad del navegador, se añade comentario explicativo en el código). Nota: estas configuraciones solo son para pruebas de desarrollo local, nunca desactives la verificación de certificados en producción.
¿Por qué el código Go generado no sigue redirecciones? ¿Con -L debería seguirlas?
El comportamiento por defecto de net/http de Go es no seguir redirecciones (coincide con el comportamiento por defecto de curl, curl debe añadir explícitamente -L para seguir). La herramienta, al detectar el parámetro -L, genera un client vacío (http.Client{} con CheckRedirect nil por defecto, es decir sigue 10 redirecciones); sin -L genera un client con CheckRedirect devolviendo http.ErrUseLastResponse, no sigue redirecciones (coincide con el comportamiento de curl sin -L). Si quieres que Go siga redirecciones siempre, puedes usar directamente http.DefaultClient en el código o personalizar Client{Timeout: ...}.
¿Cómo manejar peticiones que requieren inicio de sesión/con Cookies?
Hay dos formas:①Copiar curl directamente desde DevTools del navegador con sesión iniciada (recomendado): clic derecho en la petición→Copy as cURL, así cookies/cabeceras se incluyen automáticamente, pega y convierte para ejecutar directamente;②En curl especifica manualmente el valor de Cookie con -b/--cookie (-b 'sessionid=abc; token=xyz'), especifica autenticación Basic con -u/--user, especifica Bearer Token con -H "Authorization: Bearer xxx", la herramienta convierte estas cabeceras tal cual. Nota: las Cookies copiadas desde el navegador tienen caducidad, pueden expirar después de unas horas y necesitar volver a copiar.
¿Por qué el cuerpo JSON en Python requests usa el parámetro json= en lugar de data=?
El parámetro data de la biblioteca Python requests codifica dict como application/x-www-form-urlencoded, envía string tal cual, mientras que el parámetro json serializa automáticamente dict/lista como cadena JSON y establece automáticamente la cabecera Content-Type: application/json (si no la has establecido manualmente). Esta herramienta, al detectar que Content-Type contiene application/json y el body es JSON válido, analiza automáticamente el JSON como dict de Python y usa el parámetro json=, así el código es más conciso, no necesitas json.dumps manualmente, y no olvidas la cabecera Content-Type. Los body no JSON (formulario/XML/texto plano) usan el parámetro data= para enviar la cadena original.
El comando curl es muy largo con muchas cabeceras, ¿qué hago si el código generado lleva todas las cabeceras?
El comando curl copiado desde DevTools incluirá muchas cabeceras añadidas automáticamente por el navegador (Host, Connection, Accept, Accept-Encoding, Accept-Language, Sec-Fetch-*, sec-ch-ua, Upgrade-Insecure-Requests, etc.), la mayoría de estas cabeceras no necesitan configurarse explícitamente en el código (los clientes HTTP añadirán automáticamente valores por defecto razonables, como Accept-Encoding, Connection, Host, Content-Length, etc.). Se recomienda, después de copiar el código generado, eliminar manualmente las cabeceras innecesarias, conservando al menos: Content-Type, Authorization, Cookie (si es necesario), cabeceras de negocio personalizadas. Las cabeceras sobrantes no solo hacen que el código sea feo, sino que pueden causar comportamientos anómalos (por ejemplo establecer Accept-Encoding explícitamente pero el cliente no descomprime automáticamente).
¿Es compatible con el parámetro de proxy HTTPS (-x/--proxy)?
Actualmente el parámetro de proxy HTTP (-x/--proxy) aún no se convierte automáticamente. La configuración de proxy varía mucho entre lenguajes (JS fetch no tiene soporte de proxy nativo requiere Agent, Python usa parámetro proxies=, Go mediante Transport.Proxy, PHP usa CURLOPT_PROXY, C# usa WebProxy, Java usa OkHttpClient.Builder().proxy()). Las cabeceras de proxy (autenticación del proxy en sí) también requieren procesamiento separado. En la versión actual los parámetros relacionados con proxy se ignoran, puedes añadir manualmente la configuración de proxy sobre la base del código generado, versiones posteriores mejorarán el soporte de proxy.
¿Qué diferencias hay con herramientas online como curlconverter.com?
En comparación con herramientas conocidas como curlconverter.com, las ventajas de curl-to-code de GeekFormat:①Procesamiento totalmente local (la lógica de procesamiento de curlconverter está en el servidor o cliente), no sube datos más seguro;②Interfaz y explicaciones en chino, amigable para desarrolladores chinos;③El código generado se adapta mejor al uso de producción real (por ejemplo Python requests usa parámetro json= para body JSON en lugar de data=, comportamiento por defecto de Go alineado con curl, C# procesa Content-Type correctamente sin codificar rígidamente application/json);④Documentación completa, FAQ, tablas de comparación, resolución de problemas, no solo genera código sino que te ayuda a entender por qué se escribe así;⑤Gratis sin publicidad, no requiere registro ni inicio de sesión, no necesita ninguna petición de red para usar.
Solución de problemas
Después de pegar el comando curl aparece «No se encontró URL»
Falta el comando curl antes de la URL (pegaste directamente un fragmento de cabeceras HTTP) La URL está dividida en líneas pero no usa barra invertida para continuar, la herramienta no puede reconocer URLs concatenadas multilínea La URL contiene caracteres especiales (& etc.) que son truncados por el shell La URL está entre comillas simples pero tiene comillas simples anidadas sin escapar
El código Python requests generado devuelve 401/403 al ejecutarse
Cookie/Token expirado: al copiar curl desde DevTools la Cookie era válida en ese momento, expira después de un tiempo Falta User-Agent: algunas APIs validan User-Agent, el curl copiado desde el navegador lleva UA del navegador, pero el código generado puede conservarlo o perderlo Faltan cabeceras Referer/Origin: algunas comprobaciones anti-hotlink/CSRF verifican estas cabeceras No se pasa correctamente el sessionid: algunos sitios requieren iniciar sesión primero para obtener Cookie antes de la petición
Envío datos JSON POST pero el servidor no los recibe
Falta la cabecera Content-Type: application/json: el Content-Type por defecto de curl -d es application/x-www-form-urlencoded, no JSON Comillas dobles de cadena JSON sin escapar: diferentes shells (bash/cmd/PowerShell) procesan las comillas de forma diferente, copiar el formato incorrecto causa JSON incompleto En el código generado el JSON está doblemente escapado (el objeto es nuevamente JSON.stringify) Hay caracteres chinos en el Body pero no están codificados
Error de certificado SSL/TLS al ejecutar el código generado
El sitio HTTPS objetivo usa certificado autofirmado: curl añadió -k pero el código no lo aplicó (comprueba si se generó la configuración de omisión de certificado) Variable de entorno de Node.js no establecida: al detectar -k se genera process.env.NODE_TLS_REJECT_UNAUTHORIZED='0', debe colocarse antes de la llamada fetch SSL Inspection de proxy corporativo (certificado de hombre en el medio): necesitas añadir el certificado raíz de la empresa al almacén de confianza en lugar de deshabilitar la verificación verify=False de Python solo afecta a requests, urllib3 subyacente seguirá generando InsecureRequestWarning
El resultado de respuesta del código generado es diferente al de curl
Pérdida de cabeceras añadidas automáticamente: el navegador añade automáticamente cabeceras como Host/Connection/Accept/Accept-Encoding/Accept-Language/Sec-Fetch-*, si se conservan o no estas cabeceras afecta la respuesta Manejo inconsistente de redirecciones: fetch sigue redirecciones por defecto, Go no sigue por defecto, esta herramienta genera la configuración correspondiente según el parámetro -L Diferencias de compresión/descompresión: con --compressed algunas bibliotecas requieren configuración explícita para descompresión automática HTTP/2 vs HTTP/1.1: curl negocia HTTP/2 por defecto, algunos servidores antiguos son sensibles a la versión HTTP Cookie Jar: curl -b envía Cookies manualmente cada vez, algunas bibliotecas gestionan Cookies automáticamente causando cambios de Cookies en peticiones múltiples
El comando curl copiado es demasiado largo causando truncamiento/error al pegar
Demasiadas cabeceras (por ejemplo el navegador añadió decenas de cabeceras automáticamente): elimina manualmente las cabeceras innecesarias (sec-ch-ua, sec-fetch-*, Accept, Accept-Language y otras cabeceras no esenciales) Archivos codificados en Base64/Body grande hacen que el comando sea muy largo: usa --data-binary @file para leer el body desde archivo Límite de longitud de línea de comandos de Windows cmd (8191 caracteres): usa PowerShell o WSL para copiar curl formato bash Truncamiento por caracteres en blanco al copiar: asegúrate de copiar completamente desde DevTools con clic derecho
Glosario
- cURL / curl
- Herramienta de línea de comandos de código abierto y biblioteca libcurl, para enviar peticiones de protocolos como HTTP/HTTPS/FTP por línea de comandos mediante URL, es la herramienta más utilizada por desarrolladores para depurar APIs.
- Método HTTP
- Acción de petición HTTP, comunes son GET (leer), POST (crear), PUT (actualización completa), PATCH (actualización parcial), DELETE (eliminar), HEAD (obtener cabeceras), OPTIONS (consultar capacidades del servidor).
- Cabecera (Header)
- Pares clave-valor de metadatos en la petición HTTP, como Content-Type, Authorization, User-Agent, Cookie, Accept, etc., especificados en curl mediante -H/--header.
- Cuerpo (Body)
- Parte de datos de la petición HTTP, común en POST/PUT/PATCH, especificada en curl mediante -d/--data/--data-binary/-F, formatos comunes son JSON, form-urlencoded, multipart/form-data.
- Content-Type
- Cabecera de petición/respuesta que indica el tipo de medio del body. application/json indica JSON, application/x-www-form-urlencoded indica formulario codificado en URL, multipart/form-data indica formulario de subida de archivos.
- Autenticación Basic
- Autenticación básica HTTP, transmite usuario y contraseña mediante la cabecera Authorization: Basic base64(user:pass), especificada en curl con -u user:pass.
- Bearer Token
- Método de autenticación basado en tokens, transmitido mediante la cabecera Authorization: Bearer <token>, común en JWT/OAuth2.
- User-Agent
- Cabecera de petición que identifica el tipo de cliente (navegador/rastreador/script), curl envía por defecto "curl/número de versión", muchos sitios web bloquean UAs no de navegador, comúnmente especificado con -A.
- Cookie
- Pares clave-valor enviados por el servidor mediante Set-Cookie y devueltos por el navegador en peticiones posteriores mediante la cabecera Cookie, para mantener sesiones. curl -b envía Cookie, -c guarda Cookie.
- Referer
- Cabecera de petición que indica la URL de la página de origen de la petición actual, algunas comprobaciones de anti-hotlink/CSRF la verifican. Establecida en curl con -e.
- Redirección (3xx)
- Cuando el servidor devuelve códigos de estado 301/302/303/307/308, indica al navegador que salte a una nueva URL. curl por defecto no sigue, añade -L/--location para seguir.
- --compressed
- Opción de curl, añade automáticamente la cabecera Accept-Encoding: deflate, gzip y descomprime automáticamente la respuesta. Sin establecer, la respuesta puede ser datos comprimidos ilegibles.
- -k/--insecure
- Opción de curl, omite la verificación de certificado HTTPS, solo para entornos de prueba con certificados autofirmados, prohibido en producción.
- fetch API
- API de peticiones HTTP JavaScript nativa del navegador, devuelve Promise, compatible con navegadores modernos.
- Axios
- Popular biblioteca cliente HTTP basada en Promise, compatible con navegador y Node.js, serialización JSON automática, interceptores, cancelación por tiempo de espera.
- OkHttp
- Biblioteca cliente HTTP Java/Android de Square, alto rendimiento, compatible con HTTP/2, pool de conexiones, GZIP transparente.
- HttpClient (.NET)
- Cliente HTTP recomendado para C#/.NET, espacio de nombres System.Net.Http, API estándar de .NET Core/.NET 5+.
- Invoke-RestMethod
- Cmdlet de petición HTTP integrado en PowerShell 3.0+, analiza automáticamente respuestas JSON/XML como objetos de PowerShell.
Tabla de comparación de opciones comunes de cURL con 11 lenguajes objetivo
| Opción curl | Función | JS fetch | Axios | Python requests | Go net/http | PHP cURL | Java OkHttp | C# HttpClient | PowerShell | wget |
|---|---|---|---|---|---|---|---|---|---|---|
| -X METHOD | Especificar método HTTP | method: 'POST' | method: 'post' | requests.request('POST') | http.NewRequest('POST') | CURLOPT_CUSTOMREQUEST | .method() | HttpMethod.Post | -Method POST | --method=POST |
| -H 'K: V' | Añadir cabecera | headers: {} | headers: {} | headers={} | req.Header.Set | CURLOPT_HTTPHEADER | .addHeader() | .Headers.TryAddWithoutValidation | $headers=@{} | --header= |
| -d 'data' | Cuerpo de petición | body: data | data: data | data=/json= | strings.NewReader | CURLOPT_POSTFIELDS | RequestBody.create | new StringContent | -Body | --body-data= |
| -u user:pass | Autenticación Basic | Cabecera Authorization | auth:{} | auth=(u,p) | req.SetBasicAuth | CURLOPT_USERPWD | Credentials.basic | new NetworkCredential | Convierte a Header automáticamente | --user/--password |
| -L | Seguir redirecciones | redirect:'follow' | maxRedirects: N | allow_redirects=True | CheckRedirect por defecto | CURLOPT_FOLLOWLOCATION | .followRedirects | AllowAutoRedirect=true | Sigue por defecto | -L |
| -k | Omitir verificación de certificado | No soportado en navegador | httpsAgent | verify=False | TLSClientConfig | CURLOPT_SSL_VERIFYPEER=false | Requiere TrustManager personalizado | ServerCertificateCustomValidationCallback | -SkipCertificateCheck | --no-check-certificate |
| --compressed | Aceptar compresión | Soportado por defecto | Descomprime automáticamente | Descomprime automáticamente | Requiere gzip manual | Descomprime automáticamente | Soportado por defecto | AutomaticDecompression | -TransferEncoding | No descomprime por defecto |
| -A UA | User-Agent | Cabecera User-Agent | headers | headers={} | req.Header.Set | CURLOPT_USERAGENT | .header() | Por defecto | -UserAgent | --user-agent= |
| -b cookie | Cookie | Cabecera Cookie | headers/withCredentials | cookies={} | req.Header.Set | CURLOPT_COOKIE | .header() | CookieContainer | -WebSession | --header= |
| -m SECS | Tiempo de espera | AbortController | timeout:N | timeout=N | http.Client.Timeout | CURLOPT_TIMEOUT | .callTimeout | client.Timeout | -TimeoutSec | --timeout= |
Valores comunes de Content-Type y uso con curl
| Content-Type | Uso | Ejemplo curl | Notas |
|---|---|---|---|
| application/json | Enviar datos JSON | curl -H 'Content-Type: application/json' -d '{"a":1}' | Tipo de API más utilizado, -d no establece este encabezado por defecto, requiere -H explícito |
| application/x-www-form-urlencoded | Formulario codificado URL | curl -d 'name=a&age=1' | Este es el tipo por defecto cuando -d no tiene -H |
| multipart/form-data | Subida de archivos | curl -F 'file=@a.png' -F 'name=a' | -F establece automáticamente este Content-Type y boundary |
| text/plain | Texto plano | curl -H 'Content-Type: text/plain' -d 'hello' | Texto normal, poco utilizado en APIs |
| application/octet-stream | Datos binarios | curl --data-binary @file.bin | Usa --data-binary para enviar binario crudo |
| application/xml | Datos XML | curl -H 'Content-Type: application/xml' -d '<x/>' | Usado por SOAP/APIs empresariales antiguas |
Comparación de tres formatos de Copy as cURL en Chrome DevTools
| Formato | Estilo de comillas | Caracteres de escape | Escenario de uso |
|---|---|---|---|
| Copy as cURL (bash) | Comillas simples '...' | Escapa comillas simples con \' | Linux/macOS/WSL/Git Bash, recomendado para pegar en esta herramienta |
| Copy as cURL (cmd) | Comillas dobles "..." | Escapa caracteres especiales con ^ | Símbolo del sistema Windows cmd.exe |
| Copy as cURL (PowerShell) | Comillas dobles/acentos invertidos | Escapa con ` | Windows PowerShell 5/7 |
| Copy as fetch | Template strings JS | Sin escape necesario | Ejecutar directamente en la Consola del navegador |
- Generador de cabecera Authentication
- Analizador de Cache-Control
- Analizador de Content-Disposition
- Generador de cabeceras CORS
- Inspector CORS
- Generador de CSP
- Generador de código cURL
- Verificación de Propagación DNS Global
- Consulta DNS
- Analizador de cabecera Forwarded
- Generador de etiquetas hreflang
- Analizador de HSTS
- Analizador de cookies HTTP
- Comprobador de cabeceras HTTP
- Probador de peticiones HTTP
- Consulta de códigos de estado HTTP
- Búsqueda de IP
- Convertidor IPv4
- Expansor de Rango IPv4
- Caja de Herramientas IPv6
- Analizador de Cabecera Link
- Consulta MX
- Verificador de Puertos
- Constructor de Parámetros URL
- Analizador de Cabeceras de Límite de Tasa
- Comprobador de Cadenas de Redirección
- Generador de Robots.txt
- Verificador de robots.txt
- Verificador de Cabeceras de Seguridad
- Generador de Security.txt
- Analizador Set-Cookie
- Auditoría de Red del Sitio
- Generador de Sitemap
- Inspector de Sitemap
- Comprobador de Certificados SSL
- Calculadora de Subredes
- Analizador de URL
- Analizador User-Agent
- Generador de Enlaces UTM
- Probador de WebSocket
- ¿Cuál es mi IP?
- Consulta WHOIS