¿Qué es un comando cURL y cómo usarlo?
¿Qué es un comando cURL? Es un comando disponible en la mayoría de los sistemas basados en Unix. Es una abreviatura de “Client URL”. Los comandos de cURL están diseñados para funcionar como una forma de verificar la conectividad a las URL y como una gran herramienta para transferir datos.
En este tutorial te enseñaremos cómo aprender a usarlo.
Tabla de Contenidos
¿Qué es el comando cURL?
cURL (Client URL) es una herramienta de línea de comandos, que permite transferir datos hacia o desde un servidor sin interacción del usuario utilizando la biblioteca libcurl. cURL también se puede utilizar para solucionar problemas de conexión.
Compatibilidad de cURL
El comando cURL es compatible con la siguiente lista de protocolos:
- HTTP y HTTPS
- FTP y FTPS
- IMAP e IMAPS
- POP3 y POP3S
- SMB y SMBS
- SFTP
- SCP
- TELNET
- GOPHER
- LDAP y LDAPS
- SMTP y SMTPS
Estos son los protocolos compatibles más importantes, pero también hay algunos otros. cURL funciona con libcurl, que es una biblioteca de transferencia de URL gratuita en el lado del cliente.
Verifica la versión de cURL
Al igual que con cualquier comando de Linux, antes de comenzar a trabajar con cURL, debemos iniciar sesión en nuestro VPS. Si necesitas ayuda, consulta este tutorial sobre SSH.
Primero, verifiquemos qué versión de cURL está disponible con el siguiente comando:
curl --version
La salida mostrará la versión cURL una lista de protocolos compatibles. Ahora podemos ver algunos ejemplos de comandos de cURL.
Sintaxis básica del comando cURL
Aprendamos a usar los comandos cURL. La sintaxis básica de cURL se ve así:
curl [OPTIONS] [URL]
El uso más simple de cURL es mostrar el contenido de una página. El siguiente ejemplo mostrará la página de inicio de testdomain.com.
curl testdomain.com
Esto generará el código fuente completo de la página de inicio del dominio. Si no se especifica ningún protocolo, cURL lo interpretará a HTTP.
Opciones de archivo de comandos de cURL
Los comandos cURL pueden descargar archivos desde una ubicación remota. Puedes hacerlo de dos maneras diferentes:
- -O guardará el archivo en el directorio de trabajo actual con el mismo nombre de archivo que el remoto.
- -o permite especificar un nombre de archivo o ubicación diferente.
A continuación se muestra un ejemplo:
curl -O http://testdomain.com/testfile.tar.gz
El comando anterior guardará esto como testfile.tar.gz.
curl -o newtestfile.tar.gz http://testdomain.com/testfile.tar.gz
El comando anterior guardará esto como newtestfile.tar.gz.
Si por alguna razón, la descarga se interrumpe, puedes reanudarla usando cURL. Puedes hacerlo con el siguiente comando:
curl -C - -O http://testdomain.com/testfile.tar.gz
Usando cURL, también podemos descargar varios archivos, como se muestra a continuación:
curl -O http://testdomain.com/testfile.tar.gz -O http://mydomain.com/myfile.tar.gz
Si quieres descargar múltiples archivos de múltiples URLs, inclúyelos todos en un archivo. Los comandos cURL se pueden combinar con xargs para descargar las diferentes URLs.
Por ejemplo, si tenemos un archivo allUrls.txt que contiene una lista de todas las URLs que se descargarán, el siguiente ejemplo se puede usar para descargar todos los archivos.
xargs –n 1 curl -O < allUrls.txt
Comandos cURL para HTTP
cURL también se puede usar cuando hay un servidor proxy. Si estás detrás de un servidor proxy que escucha en el puerto 8090 en sampleproxy.com, descarga los archivos como se muestra a continuación:
curl -x sampleproxy.com:8090 -U username:password -O http:// testdomain.com/testfile.tar.gz
En el ejemplo anterior, puedes omitir -U username:password si el proxy no requiere un método de autenticación.
Una solicitud HTTP típica siempre contendrá un encabezado. El encabezado HTTP envía información adicional sobre el servidor web remoto junto con la solicitud real. Si bien a través de las herramientas de desarrollador de un navegador puedes verificar la información del encabezado, puedes verificarla utilizando un comando cURL.
A continuación se muestra un ejemplo de cómo recuperar la información del encabezado de un sitio web.
curl -I www.testdomain.com
Usando cURL, puedes hacer una solicitud GET y una POST. Una solicitud GET será así:
curl http://mydomain.com
Una muestra de una solicitud POST será como esta:
curl –data “text=Hello” https://myDomain.com/firstPage.jsp
Aquí text=Hello es el parámetro de solicitud POST. Este comportamiento sería similar a los formularios HTML.
También puedes especificar varios métodos HTTP en un solo comando cURL. Hazlo usando la opción –next, así:
curl –data “text=Hello” https://myDomain.com/firstPage.jsp --next https://myDomain.com/displayResult.jsp
Esta contiene una solicitud POST seguida de una solicitud GET.
Cada solicitud HTTP tendrá un agente de usuario que se envía como parte de la solicitud. Esto indica los detalles del navegador web del cliente. Por defecto, una solicitud cURL contiene cURL y el número de versión como los detalles del agente usuario. Una salida de esto se vería así:
“GET / HTTP/1.1” 200 “_” ”curl/7/29/0”
Puedes cambiar esta información de agente usuario predeterminada utilizando el siguiente comando:
curl -I http://mydomain.com –-user-agent “My new Browser”
Ahora el resultado modificado será:
“GET / HTTP/1.1” 200 “_” ”My new Browser”
cURL para Cookies
Los comandos cURL se pueden usar para verificar qué cookies se descargan en cualquier URL. Entonces, si estás accediendo a https://www.samplewebsite.com, puedes enviar a un archivo, guardar las cookies y acceder a ellas usando cat o un editor VM.
La siguiente es una muestra de dicho comando:
curl --cookie-jar Mycookies.txt https://www.samplewebsite.com /index.html -O
Del mismo modo, si tienes las cookies en un archivo, puedes enviarlo al sitio web. Un ejemplo de dicho comando es el que se muestra a continuación:
curl --cookie Mycookies.txt https://www. samplewebsite.com
cURL para FTP
¡El comando cURL es compatible con FTP! Puedes usarlo para descargar archivos de un servidor remoto.
curl -u username:password -O ftp://sampleftpserver/testfile.tar.gz
En el comando anterior, ftp://sampleftpserver es un servidor FTP que acepta conexiones. El nombre de usuario y la contraseña se pueden omitir para conexiones FTP anónimas. Escribe el comando y observa cómo avanza la barra de progreso.
También puedes cargar archivos con el siguiente comando:
curl -u username:password -T testfile.tar.gz ftp://sampleftpserver
Nuevamente, podemos omitir el nombre de usuario y la contraseña para conexiones FTP anónimas.
Limitar la salida de cURL
Mientras usas cURL, no puedes saber qué tan grande será la salida. Puedes restringir el ancho de banda para asegurarte de que no sea estrangulado por cURL.
El siguiente comando restringe el ancho de banda a 100K:
curl --limit-rate 100K http://testdomain.com/samplefile.tar.gz -O
Conclusión
cURL es un comando poderoso y ampliamente utilizado. Es útil cuando dependes de la línea de comando. Tiene varias opciones y soporta múltiples protocolos. ¡Esa es una muy buena razón para aprender este comando!
Recuerda, si quieres aprender algunos comandos avanzados, simplemente consulta el manual que debería estar en todas las versiones de Unix:
man curl
¡Esperamos que este tutorial te haya dado un buen punto de partida para usar cURL! ¿Cómo usarás este comando? ¡Déjanos saber en los comentarios!
Descubre más comandos de Linux
Comando df y du
Comando Time
Comando SCP
Comando Shutdown
Comando Rsync
Comentarios
August 13 2020
la "c" es un cambio que le hizo el creador de la librería para que en inglés se pronunciara cURL (see URL)
October 26 2020
Muchas gracias, esto me sirvió para probar los comandos en un Arduino Yun, desde la consola de linino. Saludos desde Mérida, Yuc. México.
December 08 2020
Gracias a ti por tu comentario Guillermo. ¡Muchos saludos!
February 04 2021
Gran aporte, gracias
April 20 2021
Gracias por el artículo, espero poder ver una serie de ellos sobre esta maravillosa herramienta!
April 21 2022
La verdad esta bueno el aporte, al comando lo conocí intentando enviar un correo electrónico desde consola y me intereso bastante.