Cómo usar cURL para la transferencia de datos por línea de comandos y más

Destacado de la guía Curl Command

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:

En distribuciones basadas en Arch:

En Fedora / CentOS / RHEL:

Mac OS

Para macOS, ya está preinstalado, por lo que no necesita hacer nada.

Ventanas

  1. 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.
  2. Cree una carpeta directamente en la unidad del sistema o en «C: Archivos de programa » y llámela «cURL».
Carpeta nueva de Linuxcurl
  1. 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.
  2. 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 environmenty presione Ingresar.
  • Haga clic en «Variables de entorno …». Ahora debería estar en la configuración de las variables de entorno.
Variables de entorno Linuxcurl
  • 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».
Variable de edición de Linuxcurl
  • 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.

Error de Linuxcurl

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.

Archivos Linuxcurl

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:

Descargar Linuxcurl

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.

Pruebas de Linuxcurl

Del mismo modo, puede utilizar el -o bandera para lograr el mismo resultado:

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.

Redirección de Linuxcurl

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.

Linuxcurl interrumpido

Para nuestro próximo comando, estamos adjuntando el -C bandera. Por ejemplo,

Currículum vitae de Linuxcurl

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:

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.

Si tiene una gran cantidad de archivos enumerados para descargar, --remote-name-all es una mejor bandera para esto:

Incluso podría especificar archivos no enumerados que provienen del mismo sitio sin tener que volver a escribir la URL con corchetes:

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:

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:

Para los siguientes 100 MB, utilice --range 100000000-199999999, etc. Puede encadenar estos comandos utilizando el && operando:

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.

Partes de Linuxcurl

Para reunir estos archivos, deberá utilizar el cat comando si estás en Linux o macOS así:

Para Windows, tendrá que usar el copy comando como este:

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 tipo wget [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:

Para Fedora / CentOS / RHEL:

Para sistemas basados ​​en Arch:

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:

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.