Guía rápida de opciones de curl

Las opciones de curl que realmente se usan: métodos, cabeceras, datos, JSON, formularios, autenticación, cookies, redirecciones, descargas, TLS, proxies, tiempos y depuración, con ejemplos.

Última revisión:

AdSense Placeholder
Slot: header_reference_page
En esta página

curl transfiere datos desde y hacia URL desde la línea de comandos. Todas las opciones de abajo existen en curl 8.18 (curl --help all), y las cabeceras que envía cada una se comprobaron contra un servidor local que devuelve la petición recibida. Construya comandos de forma visual con el generador de comandos curl o conviértalos a Python, JavaScript o Go con el conversor de curl a código. Los ejemplos usan https://api.example.com.

Método y cuerpo de la petición

Opción Forma larga Qué hace Ejemplo
-X --request Fija el método curl -X DELETE https://api.example.com/items/7
-d --data Envía un cuerpo; implica POST y Content-Type: application/x-www-form-urlencoded curl -d 'a=1&b=2' https://api.example.com/form
--data-raw Como -d, pero una @ inicial no se interpreta como nombre de archivo curl --data-raw '@not-a-file' ...
--data-binary Envía los datos tal cual, conservando los saltos de línea curl --data-binary @dump.bin ...
--data-urlencode Codifica el valor como URL curl --data-urlencode 'q=a b&c' ...
--json Envía JSON: POST, Content-Type y Accept: application/json curl --json '{"name":"Ana"}' https://api.example.com/users
-F --form Formulario multipart (subida de archivos) curl -F '[email protected]' -F 'title=Hi' ...
-G --get Pone los datos de -d en la cadena de consulta y usa GET curl -G -d q=test https://api.example.com/search
--url-query Añade un parámetro de consulta codificado curl --url-query 'q=a+b' ... → ?q=a%2bb
-T --upload-file Sube un archivo con PUT curl -T report.pdf https://files.example.com/
-I --head Envía HEAD: solo cabeceras curl -I https://example.com

-d @archivo lee el cuerpo de un archivo y elimina los saltos de línea; use --data-binary @archivo para enviarlo sin tocar. Nunca hace falta -X POST junto a -d, --json o -F.

Cabeceras, autenticación y cookies

Opción Forma larga Qué hace Ejemplo
-H --header Añade o sustituye una cabecera (Nombre: sin nada detrás la elimina) -H 'Authorization: Bearer TOKEN'
-A --user-agent Fija User-Agent -A 'MyAgent/1.0'
-e --referer Fija Referer -e https://example.com/
-u --user Autenticación básica (usuario:contraseña) -u alice:s3cret
--oauth2-bearer Envía Authorization: Bearer --oauth2-bearer TOKEN
-b --cookie Envía cookies o las lee de un archivo -b 'session=abc', -b cookies.txt
-c --cookie-jar Guarda en un archivo las cookies recibidas -c cookies.txt
--compressed Solicita y descomprime gzip, deflate, brotli y zstd --compressed
-n --netrc Lee las credenciales de ~/.netrc -n

Respuestas y salida

Opción Forma larga Qué hace
-i --show-headers Imprime las cabeceras de la respuesta antes del cuerpo (--include es el nombre antiguo)
-D --dump-header Escribe las cabeceras de la respuesta en un archivo (-D - para la terminal)
-o --output Guarda el cuerpo en un archivo
-O --remote-name Guarda con el nombre de archivo de la URL
-J --remote-header-name Con -O, usa el nombre de Content-Disposition
--create-dirs Crea los directorios que falten para -o
-C --continue-at Reanuda una descarga (-C - calcula el desplazamiento)
-r --range Pide solo un rango de bytes: -r 0-99
-s --silent Sin indicador de progreso ni mensajes de error
-S --show-error Con -s, sigue mostrando los errores
-f --fail Termina con código 22 y sin cuerpo ante un HTTP 400 o superior
--fail-with-body Como -f, pero guarda igualmente el cuerpo
-w --write-out Imprime variables al terminar la transferencia
-# --progress-bar Barra de progreso simple en lugar del indicador habitual

Redirecciones, reintentos y tiempos de espera

Opción Forma larga Qué hace
-L --location Sigue las redirecciones
--max-redirs Limita el número de redirecciones seguidas
-m --max-time Tiempo total máximo en segundos
--connect-timeout Tiempo máximo para conectar
--retry Reintenta N veces ante fallos transitorios
--retry-delay Segundos entre reintentos
--retry-all-errors Reintenta ante cualquier error, no solo los transitorios
--limit-rate Limita la velocidad: --limit-rate 500K
-Z --parallel Ejecuta varias URL a la vez

Vea cada salto de una cadena de redirecciones, con sus códigos de estado, en el rastreador de cadenas de redirección HTTP.

Conexión, TLS y proxies

Opción Forma larga Qué hace
-k --insecure Omite la verificación del certificado (solo para pruebas)
--cacert Confía en un paquete de CA concreto
--cert / --key Certificado y clave de cliente (TLS mutuo)
--tlsv1.2 Exige al menos TLS 1.2 (--tls-max fija el límite superior)
--http1.1 / --http2 / --http3 Elige la versión de HTTP
-4 / -6 --ipv4 / --ipv6 Resuelve los nombres solo a IPv4 o solo a IPv6
--resolve Fija un host a una IP: --resolve example.com:443:192.0.2.10
--connect-to Envía la petición a otro host y puerto
-x --proxy Usa un proxy: -x http://proxy.example.com:3128
--noproxy Hosts que no pasan por el proxy
--unix-socket Conecta mediante un socket Unix (API de Docker)

Depuración y tiempos

Opción Forma larga Qué hace
-v --verbose Muestra las cabeceras de petición y respuesta y el handshake TLS
--trace-ascii Registra en un archivo todo lo enviado y recibido
--trace-time Añade marcas de tiempo a la salida detallada y de traza
-K --config Lee las opciones de un archivo

Variables útiles de -w: %{http_code}, %{time_namelookup}, %{time_connect}, %{time_starttransfer}, %{time_total}, %{size_download}, %{url_effective}, %{remote_ip}.

Recetas

Tarea Comando
Solo el código de estado curl -s -o /dev/null -w '%{http_code}\n' https://example.com
Desglose de tiempos curl -s -o /dev/null -w 'dns %{time_namelookup} connect %{time_connect} ttfb %{time_starttransfer} total %{time_total}\n' https://example.com
Solo cabeceras, siguiendo redirecciones curl -sIL https://example.com
POST de JSON con un token curl --json '{"q":"test"}' -H 'Authorization: Bearer TOKEN' https://api.example.com/search
Descargar y reanudar si se interrumpe curl -L -C - -O https://example.com/file.iso
Probar un servidor antes de cambiar el DNS curl --resolve example.com:443:203.0.113.10 https://example.com
Hacer fallar un script ante errores HTTP curl -fsS https://api.example.com/health

Entrecomille en la shell las URL que contengan & o ?, y codifique con porcentaje los caracteres especiales de los valores de consulta con la herramienta codificador de URL. Para revisar las cabeceras de un sitio sin terminal, use el visor de cabeceras HTTP.

Pruebe estas herramientas

Véase también

  • Hoja de referencia Guía rápida de cabeceras HTTP
    Cabeceras de petición y respuesta, directivas de Cache-Control, cabeceras de seguridad, atributos de cookie y cabeceras CORS.
  • Hoja de referencia Guía rápida de códigos de estado HTTP
    Los códigos de estado HTTP que de verdad encontrará, por clases, con los pares que se confunden (401 frente a 403.
  • Glosario HTTP
    HTTP (Hypertext Transfer Protocol) es el protocolo que usan navegadores y servidores para solicitar y enviar páginas web, archivos y datos.
  • Glosario User agent (agente de usuario)
    Un user agent (agente de usuario) es el software que hace una petición web, como un navegador o un rastreador.
  • Glosario Autenticación básica
    La autenticación básica HTTP envía un nombre de usuario y contraseña en una cabecera de la petición.
AdSense Placeholder
Slot: footer_leaderboard