¿Qué es un comando Curl y cómo usarlo?
Es probable que te hayas preguntado o hayas leído sobre el comando Curl. Pero, ¿de qué se trata? Es un comando asequible en la mayoría de los sistemas basado en Unix. Y es la abreviatura de “Client URL”. Los comandos de Curl fueron desarrollados para desempeñar una acción de verificación de la conectividad a las URL y como un mecanismo indispensable para comunicar información. Bien, entendamos entonces la forma correcta de utilizarlo.
El comando Curl es compatible con toda esta nómina 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 y fundamentales. Sin embargo, también hay otros. También es necesario que sepas que Curl trabaja con libcurl, que es un archivo de transferencia de URL sin cargo para el cliente.

Verificar la versión de Curl

Lo primero será chequear cuál versión de Curl se encuentra utilizable con este comando de a continuación:
curl --version
La salida revelará a la versión Curl una muestra de protocolos similares. A partir de aquí, tendrás accesos a varios comandos de Curl.

Sintaxis elemental del comando Curl

Comencemos a entender los comandos Curl. Así luce la sintaxis principal de Curl:
curl [OPTIONS] [URL]
El uso más sencillo de Curl es dar a conocer todo lo comprendido por una página. La muestra a continuación exhibe la página de inicio de testdomain.com.
curl testdomain.com
Lo cual dará inicio al código fuente integral del sitio de inicio del dominio. De no aclararse ningún protocolo, curl lo interpretará como HTTP

Preferencia de archivo de comandos de Curl

Los comandos Curl te permiten acceder a archivos remotamente. Podés manejarlo de dos maneras distintas:
  • “-O” almacenará el archivo en el directorio de trabajo actual bajo el mismo nombre de archivo que el remoto.
  • “-o” te autoriza a un nombre de archivo o ubicación distinta.
Aquí se muestra un ejemplo: curl -O http://testdomain.com/testfile.tar.gz
El comando previo almacenará 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 algún motivo se detuviera la descarga, podés reiniciarla utilizando curl. Es posible hacerla de esta manera:
curl -C - -O http://testdomain.com/testfile.tar.gz Asimismo, utilizando curl es posible descargar diferentes archivos, tal cual se enseña aquí abajo:
curl -O http://testdomain.com/testfile.tar.gz -O http://mydomain.com/myfile.tar.gz
Si deseás descargar una gran cantidad de archivos de múltiples URLs, depositalos todos en un mismo archivo. Los comandos Curl se pueden coordinar con xargs para descargar las distintas URLs
De esta manera, si contamos con un archivo allUrls.txt que tiene un listado de todas las URLs que se descargarán, el ejemplo a continuación se puede utilizar para para bajar dichos archivos. xargs –n 1 curl -O < allUrls.txt

Comandos Curl para Http

Además, podés usar Curls si hay un servidor proxy. Si trabajás con un servidor proxy que trabaja con el puerto 8090 en sampleproxy.com., descargá los archivos como se exhibe aquí abajo:
curl -x sampleproxy.com:8090 -U username:password -O http:// testdomain.com/testfile.tar.gz
En el ejemplo previo, podés prescindir de -U username:password si el proxy no necesita un sistema de autenticación.
Una solicitud HTTP normal siempre contendrá un encabezado. El encabezado HTTP envía información extra sobre el servidor web remoto con la solicitud real. A pesar de que con las herramientas de desarrollador de un navegador podés chequear la información del encabezado, también es posible realizarlo usando un comando curl.
En la siguiente imagen verás un ejemplo de cómo recobrar la información del encabezado de un sitio web.
curl -I www.testdomain.com
Utilizando curl, podés efectuar una petición GET y una POST. Una petición GET es así:
curl http://mydomain.com
Una muestra de una petición POST es así:
curl –data “text=Hello” https://myDomain.com/firstPage.jsp
text=Hello, en el cuadro anterior es el parámetro de petición POST. Esta pauta será muy parecida a los formularios HTML.
Igualmente podés establecer modos HTTP en un solo comando curl. Podés hacerlo utilizando la opción –next, como se muestra a continuación:
curl –data “text=Hello” https://myDomain.com/firstPage.jsp --next https://myDomain.com/displayResult.jsp
La misma posee una petición POST y a continuación una petición GET. Cada petición HTTP poseerá un agente de usuario que se manda como parte de la solicitud. Lo cual informa las especificaciones del navegador web del cliente. De manera autómata, una solicitud curl contiene curl y la cifra de la versión así como los detalles del agente usuario. Así se mostraría una salida:
“GET / HTTP/1.1” 200 “_” ”curl/7/29/0”
Es posible transformar esta información de agente usuario preseteada, usando el comando a continuación:
curl -I http://mydomain.com –-user-agent “My new Browser”
Entonces el nuevo resultado quedará de esta forma:
“GET / HTTP/1.1” 200 “_” ”My new Browser”

Curl para Cookies

Los comandos Curl se pueden utilizar para chequear qué cookies se descargan en cualquier URL. Así, si estás entrando a https://www.samplewebsite.com, podés mandar a un archivo, almacenar las cookies y tenés acceso a ellas utilizando cat o un editor VM.
Aquí verás un ejemplo de dicho comando:
curl --cookie-jar Mycookies.txt https://www.samplewebsite.com /index.html -O
De igual manera, si poseés cookies en un archivos podés mandarlo al sitio web. Una muestra de este comando, es el que se exhibe aquí abajo:
curl --cookie Mycookies.txt https://www. samplewebsite.com

Curl para FTP

El comando Curl es totalmente compatible con FTP. Podés utilizarlo para bajar archivos de servidores en modo remoto.
curl -u username:password -O ftp://sampleftpserver/testfile.tar.gz
En el comando previo, ftp://sampleftpserver es un servidor FTP que permite conexiones. Es posible prescindir del nombre de usuario y la contraseña para conexiones FTP sin nombre. Tipeá el comando y observá cómo avanza la barra de progreso.
De la misma manera, es posible subir archivos con el comando que se muestra a continuación:
curl -u username:password -T testfile.tar.gz ftp://sampleftpserver
Y, lo repetimos, se puede prescindir del nombre de usuario y la contraseña en caso de conexiones FTP anónimas.

Limitar la salida de Curl

Al mismo tiempo que utilizás Curl, desconocés cuán grande será la salida. Podés disminuir el ancho de banda para garantizarte que no sea acotado por curl.
Restringir el ancho de banda a 100K con este comando:
curl --limit-rate 100K http://testdomain.com/samplefile.tar.gz -O Desenlace
Curl es un comando potente y muy usado. Es útil cuando necesitás estar al mando de la línea de comando. Cuenta con muchas alternativas y permite usar diferentes protocolos ¡Y eso lo convierte en el comando ideal!
No te olvides, si deseás aprender ciertos comandos más evolucionados, estudiá el manual que suele estar en todas las versiones de Unix:
man curl