AdSense Placeholder
Slot: header_reference_page
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.