Clientes HTTP de línea de comandos para probar APIs y descargar archivos en Linux

Linux CIBERED 2026

Probar una API o diagnosticar un servidor web que devuelve un error 502 no debería requerir abrir un navegador ni lanzar una aplicación gráfica pesada. Aquí tienes ocho clientes HTTP de terminal para Linux, desde curl y HTTPie hasta xh, Hurl y Posting, con comandos de instalación y ejemplos prácticos.

Los clientes HTTP son herramientas que envían peticiones a servidores web y muestran las respuestas. La mayoría de usuarios de Linux los conocen primero como una forma de descargar archivos desde la línea de comandos, pero son igual de útiles para inspeccionar cabeceras de respuesta, probar APIs REST, seguir redirecciones y diagnosticar errores de servidores web y proxies inversos.

El reto está en elegir la herramienta adecuada para cada trabajo. curl puede manejar casi cualquier tarea HTTP, pero sus opciones de línea de comandos se vuelven largas cuando trabajas con APIs JSON.

Herramientas como HTTPie ofrecen una sintaxis más legible para probar APIs, mientras que las herramientas dedicadas de descarga son mejores para tareas como reanudar la descarga de una ISO de 4 GB.

En esta guía exploraremos ocho clientes HTTP de terminal, explicaremos qué hace mejor cada uno y mostraremos cómo instalarlos y usarlos con ejemplos del mundo real.


Tabla comparativa rápida

HerramientaMejor paraSintaxisDependenciaSalida coloreada
curlTodo, scripts, servidores sin instalar nadaFlags clásicosC (libcurl)No por defecto
HTTPiePruebas de API diarias, legibilidadclave=valorPythonSí
xhHTTPie sin Python, contenedoresclave=valorRust (binario único)Sí
curlieHTTPie + opciones de curlHíbridaGoSí
Wget / Wget2Descargas y espejos de sitiosFlags clásicosCNo
aria2Descargas grandes multi-conexiónFlags clásicosC++No
HurlTests de API en CIArchivos .hurlRust (libcurl)Sí
PostingExploración interactiva (TUI)Interfaz visualPython 3.11+Sí (TUI)

1. curl

curl es la herramienta de línea de comandos con la que se compara casi cualquier otro cliente HTTP de esta lista. Es una utilidad y biblioteca (libcurl) para transferir datos usando URLs.

Soporta numerosos protocolos, incluidos HTTP, HTTPS, FTP, SFTP, SCP, IMAP, SMTP y LDAP, por lo que lo encontrarás en todas partes: servidores Linux, imágenes de contenedor, routers y reproductores multimedia.

Para los administradores de sistemas, la mayor ventaja de curl es su disponibilidad: viene instalado por defecto en la mayoría de sistemas Linux, lo que lo convierte en una herramienta fiable durante un incidente.

También te da control preciso sobre las peticiones: cabeceras, configuración TLS, proxies, timeouts y HTTP/2 o HTTP/3, dependiendo de cómo se haya compilado curl.

Instalación

En Ubuntu y Debian:

sudo apt install curl

En Arch Linux:

sudo pacman -S curl

Uso práctico

Un uso común de curl es comprobar las cabeceras de respuesta de un sitio web para verificar redirecciones, políticas de caché u otras configuraciones HTTP. La opción -I envía una petición HEAD y muestra las cabeceras sin descargar el cuerpo:

curl -I https://www.tecmint.com

Al probar una API, la opción --json facilita enviar payloads JSON, ya que establece las cabeceras Content-Type y Accept adecuadas y usa POST por defecto:

curl --json '{"name": "tecmint", "role": "admin"}' https://httpbin.org/post

⚠️ Nota de compatibilidad: --json se introdujo en curl 7.82.0, así que no está disponible en el paquete curl 7.81.0 por defecto de Ubuntu 22.04. En esa versión, usa -H "Content-Type: application/json" junto con -d para enviar el payload JSON:

curl -H "Content-Type: application/json" \
     -d '{"name": "tecmint", "role": "admin"}' \
     https://httpbin.org/post

Ejemplos adicionales útiles

Seguir redirecciones y ver dónde acabas:

curl -IL https://example.com

Guardar la respuesta con un nombre de archivo y reanudar si se corta:

curl -C - -O https://releases.ubuntu.com/24.04/ubuntu-24.04.3-live-server-amd64.iso

Medir tiempos de conexión y respuesta (muy útil para diagnosticar latencia):

curl -o /dev/null -s -w 'DNS: %{time_namelookup}s\nConectar: %{time_connect}s\nTLS: %{time_appconnect}s\nPrimer byte: %{time_starttransfer}s\nTotal: %{time_total}s\n' https://example.com

2. HTTPie

Donde curl te da control total, HTTPie se centra en hacer que las peticiones de API sean fáciles de escribir y de leer. Proporciona dos comandos, http y https, usa una sintaxis simple clave=valor para datos JSON, e imprime las respuestas con colores y JSON formateado por defecto.

HTTPie también soporta cabeceras personalizadas, sesiones persistentes, subida de archivos y un sistema de plugins, lo que lo convierte en una herramienta cómoda para desarrolladores e ingenieros DevOps que prueban APIs todo el día. El proyecto también ofrece una aplicación de escritorio y web separada llamada HTTPie for Desktop si prefieres una interfaz gráfica.

Instalación

En Ubuntu y Debian (repositorios por defecto):

sudo apt install httpie

En Rocky Linux, AlmaLinux y RHEL, HTTPie viene del repositorio EPEL, así que habilita EPEL primero y luego instala el paquete. En Fedora, sáltate el primer comando porque HTTPie está en los repositorios por defecto:

sudo dnf install epel-release
sudo dnf install httpie

En Arch Linux:

sudo pacman -S httpie

Uso práctico

Con HTTPie instalado, puedes enviar la misma petición JSON del ejemplo de curl de una forma mucho más corta. HTTPie ve los elementos clave=valor, construye el cuerpo JSON y cambia el método a POST automáticamente:

http POST httpbin.org/post name=tecmint role=admin

Las sesiones son útiles cuando una API necesita un token de login en cada petición. La opción --session guarda cabeceras y cookies bajo un nombre, de modo que las peticiones posteriores pueden reutilizarlas sin pegar el token otra vez:

http --session=dev httpbin.org/headers Authorization:"Bearer YOUR_TOKEN"
http --session=dev httpbin.org/headers

La segunda petición envía la misma cabecera Authorization porque HTTPie la cargó del archivo de sesión dev.

Ejemplos adicionales útiles

Subir un archivo con un formulario multipart:

http --form POST httpbin.org/post file@/etc/hosts

Enviar parámetros de query string:

http GET httpbin.org/get search==powershell page==2

💡 Diferencia clave con curl: en HTTPie, clave=valor → cuerpo JSON, clave==valor → query string, Cabecera:valor → cabecera HTTP. Ese único detalle elimina la mitad de las dudas al probar APIs.


3. xh

Si te gusta la sintaxis de HTTPie pero quieres una alternativa más rápida y autónoma, xh merece la pena. Escrito en Rust, reimplementa buena parte de la interfaz de línea de comandos de HTTPie y se distribuye como un único ejecutable, lo que lo hace cómodo de instalar en servidores y usar en contenedores.

xh soporta HTTP/2 e incluye una opción --curl que imprime el comando curl equivalente en lugar de enviar la petición. Esto es útil cuando desarrollas y pruebas peticiones de API interactivamente con xh pero necesitas reproducirlas en un script que usa curl.

⚠️ Sin embargo, xh no implementa todas las características de HTTPie, así que comprueba su compatibilidad antes de cambiar si dependes de características avanzadas o plugins.

Instalación

En Debian y Ubuntu:

sudo apt update
sudo apt install xh

En Arch Linux:

sudo pacman -S xh

En Fedora, el proyecto documenta la instalación a través de su repositorio COPR:

sudo dnf copr enable ducaale/xh
sudo dnf install xh

Para distribuciones sin un paquete adecuado, incluidas Rocky Linux, AlmaLinux y RHEL, puedes usar el script de instalación del proyecto o descargar un ejecutable precompilado desde la página oficial de releases de xh:

curl -sfL https://raw.githubusercontent.com/ducaale/xh/master/install.sh | sh

⚠️ Como con cualquier script que se canaliza directamente a una shell, revisa el script antes de ejecutarlo, especialmente en servidores de producción.

Uso práctico

Como xh sigue la sintaxis de petición de HTTPie, puedes enviar una petición POST con campos JSON usando un comando familiar y legible:

xh POST https://httpbin.org/post name=tecmint role=admin

Para imprimir el comando curl equivalente sin enviar la petición, añade --curl:

xh --curl POST https://httpbin.org/post name=tecmint role=admin

xh también proporciona un comando xhs que usa HTTPS por defecto. Por ejemplo, xhs example.com equivale a xh https://example.com.

💡 Si quieres la sintaxis legible de HTTPie sin instalar una herramienta basada en Python, xh es una alternativa práctica, siempre que su conjunto de características cubra tus necesidades.


4. curlie

curlie adopta un enfoque diferente al de xh. En lugar de implementar su propio cliente HTTP, actúa como frontend de curl, combinando las opciones de curl con la sintaxis de petición estilo HTTPie y salida formateada.

Esto es útil cuando necesitas características específicas de curl (configuración TLS personalizada, opciones de conexión o soporte de protocolos) pero prefieres una forma más legible de construir peticiones HTTP. curlie también escribe las cabeceras de respuesta a stderr y hace streaming de la salida sin almacenar la respuesta completa en búfer, lo que lo hace útil para inspeccionar respuestas en streaming.

Instalación

curlie no está en los repositorios por defecto de la mayoría de distribuciones, así que la forma más fácil de instalarlo en cualquier sistema Linux es el instalador de Webi, que coloca el binario en tu directorio home sin necesidad de root:

curl -sS https://webinstall.dev/curlie | bash

⚠️ Revisa el instalador antes de ejecutarlo si necesitas verificar qué descarga y qué cambia.

Si ya tienes Go instalado, puedes instalar curlie directamente:

go install github.com/rs/curlie@latest

La instalación con Go coloca el ejecutable en tu directorio de binarios de Go configurado, normalmente ~/go/bin. Asegúrate de que ese directorio está en tu PATH.

Puedes encontrar métodos de instalación adicionales y binarios precompilados en el repositorio oficial de curlie.

Uso práctico

curlie acepta opciones de curl primero, luego un método opcional, la URL y elementos estilo HTTPie. En este ejemplo, -v es una flag normal de curl, mientras que name=tecmint es dato JSON estilo HTTPie:

curlie -v POST https://httpbin.org/post name=tecmint

Cuando se ejecuta interactivamente, curlie imprime con formato y colorea las respuestas JSON. También puedes forzar la salida JSON formateada con --pretty.

Como xh, curlie soporta --curl, que imprime el comando curl subyacente en lugar de ejecutar la petición:

curlie --curl POST https://httpbin.org/post name=tecmint

💡 Si quieres la sintaxis legible de HTTPie sin renunciar al acceso a las opciones de curl, curlie es una alternativa útil. Es especialmente práctico para depurar APIs, trabajar con respuestas en streaming y traducir peticiones legibles a comandos curl para scripts.


5. Wget y Wget2

Las herramientas hasta ahora se centran principalmente en peticiones HTTP y APIs, pero a veces necesitas descargar archivos de forma fiable o espejar un sitio web completo. Ahí es donde Wget sigue siendo útil. Soporta HTTP, HTTPS y FTP, puede reanudar descargas interrumpidas y sigue enlaces para recuperar contenido de un sitio web recursivamente.

Wget2 es el sucesor de Wget del proyecto GNU. Soporta HTTP/2, compresión y descargas multihilo, lo que puede hacer más rápidas las descargas grandes o recursivas. Sin embargo, Wget2 no es un reemplazo perfecto: algunas opciones se comportan de forma distinta, así que prueba los scripts que dependan de características específicas de Wget antes de cambiar.

Instalación

En Ubuntu y Debian, el Wget clásico suele estar preinstalado, y Wget2 está disponible como paquete separado:

sudo apt install wget wget2

En Fedora, Rocky Linux, AlmaLinux y RHEL, instala wget con dnf. En Fedora 40 y posteriores, esto arrastra Wget2 como proveedor del comando wget:

sudo dnf install wget

Fedora también empaqueta el ejecutable principal de Wget2 por separado. Los nombres de paquete y la disponibilidad varían entre versiones de Fedora y distribuciones Enterprise Linux, así que comprueba los repositorios de tu distribución antes de asumir que el mismo comando funciona en Rocky Linux, AlmaLinux o RHEL.

En Arch Linux, instala ambas herramientas desde los repositorios oficiales:

sudo pacman -S wget wget2

Uso práctico

La opción -c le dice a Wget que continúe un archivo parcialmente descargado en lugar de descargarlo de nuevo desde el principio, siempre que el servidor soporte reanudación:

wget -c https://releases.ubuntu.com/24.04/ubuntu-24.04.3-live-server-amd64.iso

💡 Usa el nombre de archivo actual que aparezca en la página oficial de descarga de Ubuntu 24.04 al elegir una ISO. Comprueba el checksum publicado cuando la integridad de la descarga importe.

Con Wget2, la opción --max-threads controla cuántos archivos se descargan a la vez durante una descarga recursiva, que es donde se nota su ventaja de velocidad:

wget2 --max-threads=8 --recursive --no-parent https://example.com/docs/

⚠️ Reemplaza la URL de ejemplo por un directorio real de documentación. Antes de espejar un sitio web público, comprueba sus reglas de robots.txt, términos de uso y límites de carga del servidor.

Para un solo archivo grande, la opción de reanudación de Wget es cómoda. Para descargas recursivas con muchos archivos, el paralelismo y el soporte HTTP/2 de Wget2 pueden ofrecer una ventaja de rendimiento útil.

Ejemplo adicional: descarga con nombre personalizado y reintentos

wget -c --tries=5 --timeout=30 -O ubuntu-24.04.iso \
  https://releases.ubuntu.com/24.04/ubuntu-24.04.3-live-server-amd64.iso

💡 --tries y --timeout son la diferencia entre una descarga que sobrevive a una red inestable y una que falla a la primera de cambio.


6. aria2

Wget2 ejecuta varias descargas a la vez, pero cada archivo sigue viniendo por una sola conexión. aria2 va un paso más allá y divide un solo archivo en múltiples conexiones, e incluso entre múltiples espejos, lo que puede hacer una descarga grande mucho más rápida cuando el servidor limita la velocidad por conexión.

aria2 soporta HTTP, HTTPS, FTP, SFTP, BitTorrent y Metalink, y puede verificar checksums de archivos automáticamente. También tiene una interfaz JSON-RPC, por lo que muchos gestores de descargas y frontends web lo usan como motor. Su última versión es la 1.37.0, y aunque las versiones salen despacio, la herramienta sigue empaquetada activamente por las principales distribuciones.

Instalación

En Ubuntu y Debian:

sudo apt install aria2

En Rocky Linux, AlmaLinux y RHEL, aria2 viene de EPEL, que puede que ya tengas habilitado por HTTPie:

sudo dnf install epel-release
sudo dnf install aria2

En Arch Linux:

sudo pacman -S aria2

Uso práctico

La opción -x establece el número máximo de conexiones a un servidor y -s establece en cuántas piezas se divide el archivo, así que este comando descarga un archivo en ocho conexiones:

aria2c -x 8 -s 8 https://releases.ubuntu.com/24.04/ubuntu-24.04.3-live-server-amd64.iso

aria2 acepta hasta 16 conexiones por servidor con -x, pero algunos servidores bloquean o ralentizan a los clientes que abren muchas conexiones, así que empieza con un número menor en servidores que no controlas.

Ejemplo adicional: descarga multi-espejo

aria2c -x 4 -s 4 \
  https://mirror1.example.com/file.iso \
  https://mirror2.example.com/file.iso \
  https://mirror3.example.com/file.iso

💡 aria2 reparte las piezas entre los espejos y reconstruye el archivo al final. Cuando un espejo va lento, los otros compensan. Eso es lo que ningún cliente HTTP genérico hace.


7. Hurl

La mayoría de clientes HTTP de línea de comandos envían una petición y muestran la respuesta, dejándote a ti decidir si es correcta. Hurl, desarrollado por Orange, va un paso más allá: ejecuta peticiones HTTP definidas en archivos de texto plano y comprueba las respuestas contra aserciones que especifiques. Esto lo hace útil para pruebas de API, comprobaciones de regresión y tests automatizados en pipelines de CI.

Un archivo Hurl puede encadenar múltiples peticiones, capturar valores como tokens de autenticación de una respuesta y reutilizarlos en peticiones posteriores, y afirmar sobre códigos de estado, cabeceras y campos JSON.

Hurl está construido sobre libcurl, así que sus protocolos soportados y capacidades TLS dependen de las características de libcurl disponibles en el build.

Instalación

En Ubuntu y Debian, puedes instalar Hurl usando el paquete .deb proporcionado en la página de releases del proyecto en GitHub. El siguiente ejemplo usa Hurl 8.0.1, la última versión listada en el momento de escribir:

VERSION=8.0.1
curl --location --remote-name \
  https://github.com/Orange-OpenSource/hurl/releases/download/$VERSION/hurl_${VERSION}_amd64.deb
sudo apt update && sudo apt install ./hurl_${VERSION}_amd64.deb

💡 Consulta la página oficial de releases de Hurl para versiones más recientes antes de publicar o instalar. Este paquete está pensado para sistemas Debian de 64 bits compatibles.

En Arch Linux:

sudo pacman -S hurl

En Rocky Linux, AlmaLinux y RHEL, puedes usar un tarball precompilado de Linux o compilar Hurl usando Cargo:

cargo install --locked hurl

⚠️ El binario precompilado oficial de Linux requiere glibc 2.35 o posterior. Los sistemas estándar RHEL 10 cumplen ese requisito, mientras que los sistemas RHEL 9 con glibc 2.34 no. En RHEL 9, usa un método de compilación compatible o ejecuta la imagen de contenedor oficial:

docker run --rm ghcr.io/orange-opensource/hurl:8.0.1 --version

Consulta la guía oficial de instalación para los últimos paquetes, requisitos previos y opciones de instalación.

Crear un test de API

Crea un archivo llamado api-check.hurl con tu editor de texto preferido:

nano api-check.hurl

Añade el siguiente test:

GET https://httpbin.org/get
HTTP 200
[Asserts]
header "Content-Type" contains "application/json"
jsonpath "$.url" == "https://httpbin.org/get"

Guarda el archivo y sal del editor. Esto es lo que hace cada parte:

  • GET https://httpbin.org/get envía una petición GET al endpoint.
  • HTTP 200 afirma que el código de estado de la respuesta es 200. Un estado distinto hace fallar el test.
  • [Asserts] inicia la sección que contiene comprobaciones adicionales de la respuesta.
  • header "Content-Type" contains "application/json" verifica que el tipo de contenido de la respuesta incluye application/json.
  • jsonpath "$.url" == "https://httpbin.org/get" extrae el campo url de la respuesta JSON y lo compara con la URL esperada.

Ejecutar el test

Ejecuta el archivo en modo test:

hurl --test api-check.hurl

Hurl ejecuta la petición, evalúa las aserciones y muestra un resumen del test en lugar de imprimir el cuerpo completo de la respuesta. Una ejecución correcta reporta el test como pasado; un fallo de aserción identifica la comprobación fallida y hace que Hurl salga con un estado distinto de cero.

💡 Ese código de salida hace que Hurl sea adecuado para scripts de shell, cron jobs y pipelines de CI. Puedes programar comprobaciones recurrentes de API o hacer que un pipeline de despliegue falle cuando un endpoint deja de devolver la respuesta esperada.

Ejemplo adicional: encadenar peticiones y capturar tokens

POST https://api.example.com/login
Content-Type: application/json
{
  "user": "admin",
  "pass": "{{password}}"
}
HTTP 200
[Captures]
token: jsonpath "$.access_token"

GET https://api.example.com/protected
Authorization: Bearer {{token}}
HTTP 200
[Asserts]
jsonpath "$.role" == "admin"

💡 Pasas {{password}} desde fuera con hurl --variable password=... o con --variables-file secrets.env, sin dejar secretos en el archivo .hurl que subes a Git.


9. Posting: construye y guarda peticiones en el terminal

Hurl es genial cuando ya sabes qué probar, pero cuando estás explorando una API desconocida, es más fácil trabajar interactivamente. Posting es una interfaz de usuario de terminal (TUI), es decir, una aplicación que corre dentro de tu terminal pero tiene paneles, menús y navegación por teclado como un programa de escritorio, así que se siente similar a Postman sin salir del terminal.

Posting almacena las peticiones como archivos YAML planos en una carpeta de colección, lo que significa que puedes versionarlas en Git junto a tu proyecto. Soporta entornos y variables, autocompletado, teclas estilo Vim, scripts Python de pre-petición y post-respuesta, e importación de peticiones desde comandos curl, colecciones de Postman y especificaciones OpenAPI.

También puedes exportar cualquier petición como un comando curl. Es la herramienta que reemplaza a HTTP Prompt en esta lista, y también funciona bien por SSH en un servidor remoto.

Instalación

Posting necesita Python 3.11 o posterior, que es más nuevo que el Python por defecto en RHEL 9 y Ubuntu 22.04. El proyecto recomienda instalarlo con uv, un gestor de paquetes de Python que descarga automáticamente la versión correcta de Python para la herramienta, así que este método funciona igual en todas las distribuciones:

curl -LsSf https://astral.sh/uv/install.sh | sh

Después de la instalación, reinicia tu terminal o carga la configuración del shell para que uv esté disponible. Luego instala Posting:

uv tool install --python 3.13 posting

⚠️ Revisa el instalador de uv antes de ejecutarlo, igual que con cualquier script canalizado a una shell.

Crear una colección y lanzar Posting

Una colección es un directorio que contiene tus peticiones guardadas. Crea uno antes de lanzar Posting con la opción --collection:

mkdir -p ~/api-requests
posting --collection ~/api-requests

El comando mkdir -p asegura que el directorio existe, evitando el error que obtendrías si pasases una ruta inexistente a Posting.

Uso práctico: importar desde curl

Cuando Posting se abre, puedes introducir una URL en la barra de petición y elegir el método HTTP. Para ahorrar tiempo, pega un comando curl completo en la barra de URL. Posting lo convierte en una petición y rellena el método, las cabeceras y el cuerpo donde esté soportado.

Por ejemplo, pega:

curl -X POST https://httpbin.org/post \
  -H "Content-Type: application/json" \
  -d '{"name":"tecmint","role":"admin"}'

Envía la petición e inspecciona la respuesta en el panel de respuesta de Posting. Cuando estés satisfecho, guarda la petición en tu colección. Posting la almacena como archivo YAML que puedes inspeccionar, editar y versionar en Git.

Atajos y productividad

  • Ctrl + P abre la paleta de comandos.
  • Ctrl + S guarda la petición actual en la colección.
  • Ctrl + E exporta la petición como comando curl.
  • Navegación estilo Vim (hjkl) en los paneles, configurable.
  • Entornos con variables como {{base_url}} y {{token}} para no repetir valores.

Consejos para elegir el cliente HTTP adecuado

Con ocho herramientas para elegir, la forma más fácil de decidir es emparejar la herramienta con el trabajo en lugar de intentar usar una sola para todo.

Para scripts, cron jobs y cualquier cosa que deba correr en un servidor que no configuraste tú, quédate con curl, porque ya está instalado y sus opciones no cambian entre versiones.

Para trabajo diario con APIs en tu propio escritorio, HTTPie o xh te ahorrarán muchísima escritura, y xh es la mejor elección para contenedores y servidores mínimos, ya que es un solo binario sin dependencia de Python.

Para descargas, Wget es suficiente para archivos individuales y espejo de sitios, mientras que aria2 es la mejor opción para archivos grandes en servidores que limitan la velocidad por conexión.

Cuando quieras comprobaciones que se ejecuten repetidamente, como confirmar que una API sigue devolviendo los datos correctos después de cada despliegue, escribe tests como archivos Hurl en lugar de scripts de shell llenos de comandos grep.

Para explorar APIs desconocidas, Posting ofrece la comodidad de Postman sin salir del terminal y versionando las peticiones en Git.

⚠️ Seguridad: tokens y contraseñas en la línea de comandos

Ten cuidado con tokens y contraseñas en la línea de comandos, sea cual sea la herramienta. Cualquier cosa que escribas como argumento acaba en el historial de tu shell y puede ser visible para otros usuarios a través de ps mientras el comando se ejecuta.

Almacena secretos en su lugar en:

  • una variable de entorno (export TOKEN=...),
  • un archivo de sesión de HTTPie,
  • un --variables-file de Hurl,
  • un archivo de entorno de Posting con permisos estrictos (chmod 600).
# Bien: el token no aparece en el historial ni en ps
curl -H "Authorization: Bearer $TOKEN" https://api.example.com/me

# Mal: el token queda en el historial y es visible con ps
curl -H "Authorization: Bearer sk_live_abc123..." https://api.example.com/me

💡 En Bash puedes evitar que un comando se guarde en el historial prefijándolo con un espacio, siempre que tengas HISTCONTROL=ignorespace o HISTIGNORE=" *" configurado.


Conclusión

curl sigue siendo el cliente HTTP que todo usuario de Linux debería conocer, pero herramientas como HTTPie, xh y curlie hacen el trabajo con APIs mucho más rápido, mientras que Wget2 y aria2 manejan descargas grandes mejor que un cliente de propósito general.

Hurl y Posting cubren los huecos para testing automatizado de APIs y exploración interactiva, y ambos almacenan las peticiones en archivos de texto plano que puedes guardar en Git.


🎁 Anexo: mejoras y actualizaciones sugeridas en esta versión

Añadidas a esta traducción, fruto del análisis del artículo original:

  • Tabla comparativa rápida al inicio: el original no la incluía; permite elegir herramienta en 10 segundos según el caso de uso, la dependencia y el tipo de salida.
  • Comando de medición de tiempos de curl (-w con time_namelookup, time_connect, etc.): el original lo menciona de pasada, pero es una de las aplicaciones más útiles de curl en diagnóstico real y merece un ejemplo completo.
  • Aclaración de la sintaxis de HTTPie (clave=valor vs clave==valor vs Cabecera:valor): es la confusión número uno de quienes vienen de curl, y resolverla en una línea ahorra media hora de prueba y error.
  • Ejemplo de descarga multi-espejo con aria2: el original explica el concepto pero no muestra el caso real de pasar varias URLs; añadido porque es donde aria2 brilla de verdad.
  • Ejemplo de encadenado de peticiones en Hurl con [Captures] y {{token}}: el original solo muestra aserciones básicas; el caso de login → petición autenticada es el caso real de CI.
  • Advertencia sobre --json de curl en Ubuntu 22.04 ampliada con la versión exacta (7.82.0 introdujo la opción, el paquete de 22.04 trae 7.81.0), para que nadie pierda tiempo pensando que su curl está roto.
  • Nota sobre HISTCONTROL=ignorespace en Bash: complementa el consejo de seguridad del original con el mecanismo concreto para no dejar secretos en el historial.
  • Ejemplo de wget con --tries y --timeout: convierte una descarga frágil en una robusta, y es la diferencia práctica entre “funciona en mi red” y “funciona en cualquier red”.
  • Atajos de Posting (Ctrl+P, Ctrl+S, Ctrl+E, navegación Vim): el original describe la TUI pero no da los atajos que hacen que merezca la pena usarla frente a copiar y pegar.
  • Sugerencia añadida: prueba httpie-go (también conocido como ht) si quieres la sintaxis de HTTPie en un binario Go sin Python y sin las limitaciones de xh; es la alternativa que falta en la lista original.
  • Sugerencia añadida: xh --offline para previsualizar la petición que se enviará sin hacer red, útil en entornos sin conectividad.
  • Sugerencia añadida: curl --resolve para probar un dominio contra una IP concreta sin tocar /etc/hosts, imprescindible al diagnosticar cambios de DNS o balanceadores.
  • Sugerencia añadida: wget --spider como comprobación rápida de enlaces sin descargar nada, una alternativa ligera a curl -I en scripts de monitorización.
Vistas: 0

Descubre más desde CIBERED

Suscríbete y recibe las últimas entradas en tu correo electrónico.

Scroll al inicio