Curl Command Guide Featured

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

Si ha estado siguiendo las instrucciones de instalación centradas en terminales para aplicaciones de Linux durante un tiempo, probablemente se haya topado con el curl mando en un 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 los servidores web y transmitirlos a los canales de IRC, cURL ha evolucionado hasta 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 es necesario que haga 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 está en ella.
  2. Cree una carpeta directamente en la unidad del sistema o en «C:\Program Files\» 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ópialo en la carpeta cURL que creaste. 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, debemos 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 Entrar.
  • Haga clic en «Variables de entorno…» Ahora debería estar en la configuración de 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:\Program Files\cURL».

Linuxcurl Editvariable

  • Haga clic en «Aceptar» en las ventanas de diálogo que abrió a través de este proceso y disfrute de tener cURL en su terminal.

Cada bandera en cURL que se puede usar en Linux debería funcionar en la versión de Windows.

Palabra a los sabios: recuerda 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 ofrece una funcionalidad similar pero funciona de manera completamente diferente.

Usando cURL

Para comenzar, simplemente escriba curl expertogeek.com en tu terminal y presiona Enter.

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 no está en línea, recibirá un mensaje de error que indica que cURL no pudo resolver el host.

Error de rizo de Linux

Para que cURL haga algo realmente útil, tendremos que especificar un protocolo. En nuestro ejemplo, estamos usando el protocolo HTTPS para consultar la página de inicio de este sitio. Escribe curl https://www.expertogeek.com.

Archivos Linuxcurl

Si todo va bien, deberías estar frente a una gigantesca pared de datos. Para hacer que esos datos sean un poco más utilizables, podemos decirle a cURL que los coloque en un archivo HTML:

curl https://www.expertogeek.com > ~/Downloads/mte.html

Descargar Linuxcurl

Este comando coloca el contenido de la salida de nuestro sitio en un archivo HTML en su carpeta de Descargas. Navegue a 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:

curl -o ~/Downloads/mte.html https://www.expertogeek.com

Siguiendo redirecciones

La mayoría de los sitios redirigen automáticamente el tráfico del protocolo «http» al protocolo «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 https://google.com.

Redirección de Linuxcurl

Reanudación de 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 encargará 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 Ctrl y C en medio de agarrarlo.

Linuxcurl interrumpido

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

currículum linuxcurl

La descarga comenzó con éxito donde se quedó.

Descargar 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 hacer esto un poco menos confuso, aquí hay un ejemplo:

curl "https://example.com/file[1-5].zip" -o "#1_#2"

Una forma más sencilla de hacerlo 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 provenientes del mismo sitio sin tener que volver a escribir la URL entre paréntesis:

curl --remote-name-all "https://example.com/{file1.zip,anotherfile.zip,thisisfun.zip}"

Descarga con autenticación

Descargue archivos que requieran autenticación (por ejemplo, al obtenerlos de un servidor FTP privado) con el -u bandera. Cada solicitud de autenticación debe realizarse primero con el nombre de usuario y luego con la contraseña, separados por dos puntos. 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 partes, puede hacerlo con cURL’s --range bandera. Con --range, debe especificar el byte en el que desea comenzar hasta el byte en el que desea terminar. Si no especifica el final del 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 próximos 100 MB, utilice --range 100000000-199999999etc. Puede encadenar estos comandos usando 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.

Partes de Linuxcurl

Para reunir estos archivos, tendrás que usar el cat comando si está 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 características ú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 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 – Ordena 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 lo use cURL. 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 en el mismo año (1996), cURL y Wget son prácticamente programas hermanos para el observador casual. Sin embargo, profundice un poco más y podrá ver que estas dos hermanas tienen propósitos diferentes.

Obtener

  • 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 recursivamente para tomar todo en un directorio con el -r bandera.
  • Tiene todas las funciones que un usuario necesita para el uso diario y se adapta a las tareas diarias del administrador del sistema.
  • (En Linux) No necesita muchas dependencias; todos ellos deben estar disponibles fuera de la caja.

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 bash scripts 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 detallado para usuarios avanzados y administradores de sistemas.

Preguntas frecuentes

1. Recibí un error de certificado en Linux. ¿Cómo lo soluciono?

Si recibe 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 reinstalar 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 el 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 al final del 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 una serie de desarrolladores (como la gente detrás de NodeJS) que no le dan otra opción 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 AUR de Arch, por lo que instalar usando curl en combinación con los comandos de acceso a la raíz generalmente no es 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 tor independiente) y use el --proxy bandera. Tor te da 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 https://example.com

Los servicios independientes de Tor 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 de la estructura cambiante del mundo Linux, manteniendo su posición como una herramienta importante en el arsenal del usuario de terminales.

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.

Experto Geek - Tu Guía en Tendencias Tecnológicas