Si ha estado siguiendo las instrucciones de instalación centradas en terminales para aplicaciones de Linux durante un tiempo, probablemente se haya encontrado con el curl
comando en algún momento u otro. cURL es una herramienta de línea de comandos para transferir datos con URL. Uno de los usos más simples es descargar un archivo a través de la línea de comandos. Sin embargo, esto es engañoso, ya que cURL es una herramienta increíblemente poderosa que puede hacer mucho más.
¿Qué es cURL?
Originalmente escrito por Daniel Sternberg en 1996 para obtener datos financieros de servidores web y transmitirlos a los canales de IRC, cURL ha evolucionado para convertirse en una poderosa herramienta para obtener datos sin tener que usar un navegador. Si siempre usa la terminal, esta será una de las herramientas más importantes de su arsenal.
En la mayoría de las distribuciones de Linux, cURL está preinstalado en el sistema y puede usarlo de inmediato. Incluso si no está instalado, también se encuentra en la mayoría de los repositorios, por lo que puede instalarlo fácilmente utilizando el Centro de software.
Para Windows, no tiene un comando «tipo curl» y macOS tiene cURL preinstalado, pero no ofrece tantas banderas como la versión de Linux.
Instalación
Antes de continuar, debemos asegurarnos de que cURL ya esté instalado en nuestro sistema.
Linux
En distribuciones basadas en Debian / Ubuntu, use el siguiente comando para instalar cURL:
sudo apt install curl
En distribuciones basadas en Arch:
sudo pacman -S curl
En Fedora / CentOS / RHEL:
sudo dnf install curl
Mac OS
Para macOS, ya está preinstalado, por lo que no necesita hacer nada.
Ventanas
- Para Windows 7/10/11, diríjase a la página de descarga de cURL y elija entre los paquetes de 64 bits o de 32 bits, según la arquitectura que esté ejecutando. Si no conoce su arquitectura, 64 bits es una apuesta segura, ya que la gran mayoría del hardware fabricado después de 2006 se encuentra en él.
- Cree una carpeta directamente en la unidad del sistema o en «C: Archivos de programa » y llámela «cURL».
- Vuelva al archivo zip que descargó, ábralo y busque «curl.exe» dentro de la carpeta «bin». Cópielo en la carpeta cURL que creó. El EXE que copió es completamente autónomo y capaz de ejecutar todas las permutaciones que puede ejecutar en Linux.
- Para que este comando sea realmente útil, tenemos que agregarlo a la variable PATH en Windows para que pueda ejecutarse desde el símbolo del sistema en cualquier lugar.
- Haga clic en su menú Inicio, escriba
environment
y presione Ingresar. - Haga clic en «Variables de entorno …». Ahora debería estar en la configuración de las variables de entorno.
- Seleccione la variable de entorno «Ruta», luego haga clic en «Editar …»
- Una vez en la ventana de diálogo de edición de ruta, haga clic en «Nuevo» y escriba el directorio donde se encuentra su «curl.exe», por ejemplo, «C: Archivos de programa cURL».
- Haga clic en «Aceptar» en el cuadro de diálogo windows ¡Abriste a través de este proceso y disfrutas de tener cURL en tu terminal!
Todos los indicadores de cURL que se pueden usar en Linux deberían funcionar en la versión de Windows.
Palabra a los sabios: recuerde que el símbolo del sistema nunca debe confundirse con Windows Terminal. Windows Terminal viene con su propia versión de cURL incluida en PowerShell que tiene una funcionalidad similar pero funciona de manera completamente diferente.
Usando cURL
Para comenzar, simplemente escriba curl maketecheasier.com
en tu terminal y presiona Ingresar.
Si no obtiene ningún resultado, es porque el servidor de este sitio no está configurado para responder a solicitudes de conexión aleatorias a su dominio que no es www. Si sondeó un servidor que no existe o que no está en línea, recibirá un mensaje de error que indica que cURL no pudo resolver el host.
Para que cURL haga algo realmente útil, tendremos que especificar un protocolo. En nuestro ejemplo, usamos el protocolo HTTPS para consultar la página de inicio de este sitio. Escribe curl https://www.maketecheasier.com
.
Si todo va bien, debería estar mirando un muro gigantesco de datos. Para que esos datos sean un poco más utilizables, podemos decirle a cURL que los coloque en un archivo HTML:
curl https://www.maketecheasier.com > ~/Downloads/mte.html
Este comando coloca el contenido de la salida de nuestro sitio en un archivo HTML en su carpeta de Descargas. Navegue hasta la carpeta con su administrador de archivos favorito y haga doble clic en el archivo que acaba de crear. Debería abrir una instantánea de la salida HTML de la página de inicio de este sitio.
Del mismo modo, puede utilizar el -o
bandera para lograr el mismo resultado:
curl -o ~/Downloads/mte.html https://www.maketecheasier.com
Siguiendo redireccionamientos
La mayoría de los sitios redirigen automáticamente el tráfico del protocolo «http» al «https». En cURL, puede lograr lo mismo con el -L
bandera. Esto seguirá automáticamente las redirecciones 301 hasta que llegue a una página o archivo legible.
curl -L http://google.com.
Reanudar una descarga
Al descargar archivos grandes, dependiendo de la velocidad de Internet, las interrupciones pueden ser inmensamente irritantes. Afortunadamente, cURL tiene una función de reanudación. Pasando el -C
flag se ocupará de este problema en un santiamén.
Para mostrar un ejemplo del mundo real, interrumpí una descarga de la versión de prueba ISO de Debian a propósito presionando control y C en medio de agarrarlo.
Para nuestro próximo comando, estamos adjuntando el -C
bandera. Por ejemplo,
curl -C - -o ~/Downloads/debiantesting.iso -L https://cdimage.debian.org/cdimage/weekly-builds/amd64/iso-dvd/debian-testing-amd64-DVD-1.iso
La descarga comenzó con éxito donde se detuvo.
Descarga de más de un archivo
Debido a que cURL no tiene la forma más intuitiva de descargar varios archivos, existen dos métodos, cada uno con su propio compromiso.
Si los archivos que está descargando están enumerados (por ejemplo, archivo1, archivo2, etc.), puede usar corchetes para obtener el rango completo de archivos y «#» dentro de la salida que especifique con el -o
bandera. Para que esto sea un poco menos confuso, aquí hay un ejemplo:
curl "http://example.com/file[1-5].zip" -o "#1_#2"
Una forma más sencilla de hacer esto es con -O
(--remote-name
). Esta bandera hace que cURL descargue el archivo remoto en un archivo local del mismo nombre. Dado que no tiene que especificar una salida, debe usar este comando cuando la terminal esté abierta en el directorio en el que desea descargar los archivos.
curl -O "https://example.com/file1.zip" -O "https://example.com/file2.zip"
Si tiene una gran cantidad de archivos enumerados para descargar, --remote-name-all
es una mejor bandera para esto:
curl --remote-name-all "https://example.com/file[1-5].zip"
Incluso podría especificar archivos no enumerados que provienen del mismo sitio sin tener que volver a escribir la URL con corchetes:
curl --remote-name-all "https://example.com/{file1.zip,anotherfile.zip,thisisfun.zip}"
Descarga con autenticación
Descargue archivos que requieren autenticación (por ejemplo, cuando se obtienen de un servidor FTP privado) con el -u
bandera. Cada solicitud de autenticación debe hacerse con el nombre de usuario primero y la contraseña en segundo lugar, con dos puntos separando los dos. Aquí hay un ejemplo para simplificar las cosas:
curl -u username:password -o ~/Downloads/file.zip ftp://example.com/file.zip
Esto autenticará a nuestro amigo bonobo_bob en el servidor FTP y descargará el archivo en la carpeta Descargas.
División y fusión de archivos
Si por alguna razón desea descargar un archivo grande y dividirlo en trozos, puede hacerlo con cURL’s --range
bandera. Con --range
, debe especificar el byte en el que desea comenzar hasta el que desea terminar. Si no especifica un final para el rango, simplemente descargará el resto del archivo.
En el siguiente comando, cURL descargará los primeros 100 MB de la imagen de instalación de Arch Linux:
curl --range 0-99999999 -o arch.part1 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso
Para los siguientes 100 MB, utilice --range 100000000-199999999
, etc. Puede encadenar estos comandos utilizando el &&
operando:
curl --range 0-99999999 -o arch.part1 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso && curl --range 100000000-199999999 -o arch.part2 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso && curl --range 200000000-299999999 -o arch.part3 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso && curl --range 300000000-399999999 -o arch.part4 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso && curl --range 400000000-499999999 -o arch.part5 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso && curl --range 500000000-599999999 -o arch.part6 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso && curl --range 600000000-699999999 -o arch.part7 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso && curl --range 700000000- -o arch.part8 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso
Si siguió la estructura de comandos anterior al pie de la letra, deberían aparecer ocho archivos donde le pidió a cURL que los descargara.
Para reunir estos archivos, deberá utilizar el cat
comando si estás en Linux o macOS así:
cat arch.part? > arch.iso
Para Windows, tendrá que usar el copy
comando como este:
copy /b arch.part* arch.iso
Otras funciones útiles
Hay muchas banderas y usos para cURL:
-
-#
– Utiliza una barra de progreso para indicar qué tan avanzado está en lo que está agarrando. Ejemplo:curl -# https://asite.com/somefile.zip > ~/somefile.zip
. -
-a
– Pide a cURL que lo agregue a un archivo en lugar de sobrescribirlo. Ejemplo:curl -ao ~/collab-full.x https://example-url.com/collab-part26.x
. -
--head
– Solo toma el encabezado de respuesta del servidor sin los datos de salida. Esto es útil cuando está depurando un sitio web o echando un vistazo a las respuestas programadas del servidor a los clientes. Ejemplo:curl --head https://example-url.com
. -
--limit-rate
– Solicita una descarga con ancho de banda limitado. Es útil en situaciones en las que no desea que cURL acapare todo el ancho de banda disponible en su sistema. Un número simple se interpretará como bytes por segundo. K representa kilobytes por segundo; M representa megabytes por segundo. Ejemplo:curl --limit-rate 8M https://example-url.com/file.zip > ~/file.zip
. -
-o
– Como se mencionó anteriormente, determina un archivo de salida para que cURL lo use. Ejemplo:curl -o ~/Downloads/file.zip https://thefileplace.com/file.zip -o file2.zip https://thefileplace.com/file2.zip
. -
--proxy
– Si quieres trabajar con un proxy, esta es la forma de hacerlo. Ejemplo:curl --proxy proxyurl:port https://example-url.com/file.zip > ~file.zip
.
cURL frente a Wget
Ambos lanzados el mismo año (1996), cURL y Wget son programas hermanos para el observador casual. Sin embargo, sumérgete un poco más y podrás ver que estas dos hermanas tienen diferentes propósitos.
Wget
- Está completamente construido desde cero para obtener datos de Internet.
- No necesita el
-L
o-o
banderas como cURL; Sólo tipowget [url]
¡y ve! - Puede descargar de forma recursiva para capturar todo en un directorio con la
-r
bandera. - Tiene todas las funciones que un usuario necesita para el uso diario y se adapta a las tareas diarias de administrador de sistemas.
- (En Linux) No necesita muchas dependencias; todos ellos deben estar disponibles desde el primer momento.
rizo
- Amplio repertorio de banderas y funciones útiles para la recuperación remota.
- Admite redes locales (LDAP) e impresoras de red (Samba).
- Funciona bien con bibliotecas de compresión gzip.
- Depende de libcurl, que permite a los desarrolladores escribir software o scripts bash que incluyen la funcionalidad de cURL.
En resumen, Wget es la “caja de herramientas de todos” para obtener cosas de Internet, mientras que cURL amplía esto con un control más granulado para usuarios avanzados y administradores de sistemas.
Preguntas frecuentes
1. Recibí un error de certificado en Linux. ¿Cómo lo soluciono?
Si tiene un error que dice algo como «el emisor del certificado del par se ha marcado como no confiable», la forma más fácil de solucionarlo es reinstalando el paquete de certificados comunes en su distribución.
Para sistemas basados en Debian / Ubuntu:
sudo apt reinstall ca-certificates
Para Fedora / CentOS / RHEL:
dnf reinstall ca-certificates
Para sistemas basados en Arch:
pacman -S ca-certificates
Tenga en cuenta que en Arch es posible que desee borrar la caché de su paquete usando pacman -Scc
antes de reinstalar el paquete de certificados.
Si sigue recibiendo este error, es posible que haya algún problema en el servidor.
2. ¿Es seguro ejecutar los comandos cURL y bash juntos?
Si bien no es la forma más común de instalar aplicaciones de Linux, hay varios desarrolladores (como las personas detrás de NodeJS) que no le dan más remedio que usar curl
junto con un comando de acceso a la raíz que se ejecuta a través de bash (por ejemplo, curl [argument] | sudo -E bash -
) para instalar el software.
Puede parecer un poco aterrador, pero si las personas detrás de la aplicación son confiables, es muy poco probable que rompa algo. Los actores maliciosos están en todas partes y pueden infiltrarse en repositorios como el AUR de Arch, por lo que la instalación se realiza con curl
en combinación con los comandos de acceso de root no es generalmente más inseguro que hacerlo a través de su administrador de paquetes.
3. ¿Puedo usar cURL con Tor?
¡Sí! Inicie Tor Browser (o un servicio de Tor independiente) y use el --proxy
bandera. Tor te ofrece un proxy local que puedes usar para enmascarar tu IP en otras aplicaciones. Aquí hay un ejemplo de cURL usado con Tor:
curl --proxy localhost:9050 http://example.com
Los servicios Tor independientes usarán 9050 como su puerto de escucha, mientras que el navegador Tor usa el puerto 9150.
Terminando
cURL ha demostrado ser resistente en medio del tejido cambiante del mundo Linux, manteniendo su posición como una herramienta importante en el arsenal del usuario de la terminal.
Si es nuevo en la línea de comandos, consulte algunos de los comandos de Linux más útiles. Si simplemente desea buscar en la Web en lugar de descargar datos de Internet, también puede navegar en el terminal.