Apuntes sobre Otras cosas

Cajón Desastre: Todo lo que no encaja en ninguna parte.

cURL: cliente HTTP desde la terminal

cURL (Client URL) es una herramienta de línea de comandos para transferir datos usando URLs. Soporta HTTP, HTTPS, FTP y docenas de otros protocolos. Es la navaja suiza para hacer peticiones HTTP, probar endpoints, descargar archivos o depurar APIs sin necesidad de un navegador ni de una aplicación gráfica.

sudo apt install curl    # Debian/Ubuntu
curl --version           # verificar instalación

GET básico

La forma más simple: curl + URL imprime la respuesta en pantalla:

curl https://ejemplo.com

Si la URL devuelve JSON, la respuesta se mostrará en crudo. Para formatearla, puedes pasarla a jq:

curl https://api.ejemplo.com/datos | jq

Guardar el output

  • -o nombre.html → guarda con el nombre que tú indiques
  • -O → guarda con el nombre que usa el servidor en la URL
curl -o portada.html https://ejemplo.com
curl -O https://ejemplo.com/fichero.zip

Seguir redirecciones

Por defecto curl no sigue redirecciones (301, 302). Con -L las sigue automáticamente:

curl -L https://ejemplo.com

Inspeccionar cabeceras

curl -I https://ejemplo.com      # solo cabeceras de respuesta (método HEAD)
curl -i https://ejemplo.com      # cabeceras + cuerpo de respuesta
curl -v https://ejemplo.com      # verbose: petición y respuesta completas

-v es muy útil para depurar: muestra exactamente qué envía y recibe curl, incluyendo el handshake TLS.

POST con datos de formulario

Para simular el envío de un formulario HTML:

curl -X POST -d "nombre=juan&email=juan@ejemplo.com" https://ejemplo.com/formulario

Con --data-urlencode si los valores tienen caracteres especiales:

curl -X POST --data-urlencode "mensaje=Hola, ¿qué tal?" https://ejemplo.com/formulario

POST con JSON

Necesitas indicar el Content-Type con -H y el cuerpo con -d:

curl -X POST \
     -H "Content-Type: application/json" \
     -d '{"nombre": "juan", "email": "juan@ejemplo.com"}' \
     https://api.ejemplo.com/usuarios

Cabeceras personalizadas

Con -H puedes añadir cualquier cabecera HTTP:

curl -H "Accept: application/json" \
     -H "X-Mi-Cabecera: valor" \
     https://api.ejemplo.com/datos

Autenticación

Autenticación básica (usuario:contraseña):

curl -u usuario:contraseña https://ejemplo.com/privado

Token Bearer, el esquema más habitual en APIs modernas:

curl -H "Authorization: Bearer mi_token_aqui" https://api.ejemplo.com/datos

Otras opciones útiles

  • -s → silencioso: suprime la barra de progreso y los mensajes de estado
  • -S → combinado con -s, sí muestra errores: curl -sS ...
  • --max-time 10 → tiempo máximo de espera en segundos
  • -A "MiAgente/1.0" → cambiar el User-Agent
  • -k / --insecure → ignorar errores de certificado SSL (solo para pruebas)

En la próxima lección: cURL con APIs: testing de endpoints REST, cookies, subida de archivos, scripts y automatización.

TOP