La abre­via­tu­ra cURL puede si­g­ni­fi­car Client for URLs o Curl URL Request Library. Se trata de un programa de línea de comandos con la bi­blio­te­ca co­rre­s­po­n­die­n­te incluida y que permite la tra­n­s­fe­re­n­cia de datos entre or­de­na­do­res in­te­r­co­ne­c­ta­dos. El software cURL fue de­sa­rro­lla­do por el pro­gra­ma­dor Daniel Stenberg con el objetivo inicial de pro­po­r­cio­nar datos relativos a los tipos de cambio, extraídos de diversas páginas web, a los pa­r­ti­ci­pa­n­tes de un chat. Gracias a su licencia MIT abierta, cURL puede ser utilizado de forma libre y ya es co­m­pa­ti­ble con muchos sistemas ope­ra­ti­vos, entre ellos Windows 10, que desde su ac­tua­li­za­ción 1803 en abril de 2018 también dispone de cURL. La detallada guía Eve­r­y­thi­ng curl es tan solo una muestra de las muchas po­si­bi­li­da­des que ofrece esta he­rra­mie­n­ta a los pro­gra­ma­do­res. Sigue leyendo para aprender, a través de prácticos ejemplos, de lo que cURL es capaz en Windows y seguro que podrás ponerte manos a la obra con algunas ideas.

¿Qué es exac­ta­me­n­te cURL para Windows?

Al igual que en otros sistemas ope­ra­ti­vos, cURL para Windows está compuesto del archivo eje­cu­ta­ble curl.exe y de la bi­blio­te­ca libcurl, una API escrita en lenguaje C que im­ple­me­n­ta las muchas funciones de cURL. Los comandos se ejecutan a través del símbolo de sistema (es decir, la consola de línea de comandos) de Windows. Para ello existe una es­tru­c­tu­ra de comandos es­pe­cí­fi­ca:

C:\Users\UsuarioPrueba>curl [options …] <url>

En este caso, <url> es la dirección de la página web con la que se quiere in­ter­ac­tuar. Con [options …] se es­pe­ci­fi­can las órdenes para ejecutar procesos como la solicitud de páginas web, las cargas y descargas, los postings y el uso de fo­r­mu­la­rios, entre muchos otros. Muchas de las opciones pueden es­cri­bi­r­se de dos maneras di­fe­re­n­tes:

  • Una con un signo de menos y letras
  • Una con dos signos de menos y una clave de comando

Así, por ejemplo, para usar el método GET, puede in­tro­du­ci­r­se tanto -G como --get.

Comprobar la di­s­po­ni­bi­li­dad y la versión de cURL

En primer lugar, comprueba si tu sistema Windows dispone de cURL y, si es así, de qué versión se trata. Para hacerlo, abre el símbolo de sistema o consola de línea de comandos in­tro­du­cie­n­do cmd en la barra de búsqueda de Windows. A co­n­ti­nua­ción, introduce

C:\Users\UsuarioMuestra>curl --version

para ver la in­fo­r­ma­ción sobre la versión de cURL de tu Windows 10.

A medida que se ha ido de­sa­rro­lla­n­do cURL, ha ido au­me­n­ta­n­do el número de pro­to­co­los que pueden uti­li­zar­se, lo cual se puede observar cla­ra­me­n­te si se comparan las dos versiones mostradas en la imagen:

7.55.1 (agosto de 2017) 7.70.0 (abril de 2020)
dict dict
file file
ftp ftp
ftps ftps
gopher
http http
https https
imap imap
imaps imaps
ldap
ldaps
mqtt
pop3 pop3
pop3s pop3s
rtsp
scp
sftp
smb
smbs
smtp smtp
smtps smtps
telnet telnet
tftp tftp

De esta forma se amplían también las po­si­bi­li­da­des de tra­n­s­fe­rir datos entre distintas redes.

Instalar la versión actual de cURL

La versión de cURL integrada en Windows está pensada como ruta del sistema, accesible tanto para el ad­mi­ni­s­tra­dor como para cualquier usuario. Sin embargo, para utilizar todos los pro­to­co­los di­s­po­ni­bles en el software, debe estar instalada la versión actual de cURL para Windows. La manera más fácil de co­n­se­gui­r­lo es de­s­ca­r­ga­n­do la versión actual como archivo ZIP desde la página web de los de­sa­rro­lla­do­res. En dicha página puedes encontrar también in­fo­r­ma­ción acerca de los cambios que se han aplicado (changelog). A co­n­ti­nua­ción, en el ex­plo­ra­dor de archivos, se extrae el archivo en forma de di­re­c­to­rio, dándole el nombre de curl, por ejemplo. Este di­re­c­to­rio se incorpora luego también al disco duro del sistema, como podría ser con la ruta C:\curl\. Allí se copian entonces todos los archivos y di­re­c­to­rios extraídos de la descarga de cURL. El archivo eje­cu­ta­ble curl.exe está ubicado en el su­b­di­re­c­to­rio \bin, en el que también se encuentra el archivo de ce­r­ti­fi­ca­do curl-ca-bundle.crt, necesario para utilizar, entre otros, los pro­to­co­los SFTP y HTTPS.

A co­n­ti­nua­ción, abre la consola de línea de comandos de Windows e introduce lo siguiente:

# Saltar dos niveles hacia arriba en el directorio 
C:\Users\UsuarioMuestra>cd..
C:\Users>cd..
# Saltar al directorio indicado 
C:\cd curl\bin
C:\curl\bin>

Ahora, en la posición de entrada estará di­s­po­ni­ble toda la gama de funciones de cURL para Windows, que uti­li­za­re­mos para explicar más ejemplos. A modo de prueba, solicita ver la versión del software tal y como se ha indicado an­te­rio­r­me­n­te. El tipo de ac­tua­li­za­ción descrito en este caso funciona en Windows 7, 8 y 10. También puedes integrar la versión actual de cURL en el sistema: para ello debes crear una ruta de sistema, pero también encontrar la ruta de la versión antigua (!) y des­ac­ti­var­la.

cURL con ejemplos prácticos

cURL se usa en Windows mediante la in­tro­du­c­ción de comandos en el símbolo del sistema (consola de línea de comandos). Para ver la in­fo­r­ma­ción básica al respecto, introduce el siguiente comando:

C:\curl\bin>curl --help

Con otro comando, en cambio, se puede mostrar el manual completo:

C:\curl\bin>curl --manual

Luego, según cómo pretendas usar esta in­fo­r­ma­ción, tra­n­s­fie­re los re­su­l­ta­dos de estos comandos usando copiar y pegar a un archivo .txt, en una carpeta separada. De esta manera, podrás acceder a los comandos fá­ci­l­me­n­te con la función de búsqueda del documento, sin necesidad de usar la consola cada vez.

Consejo

Conviene usar un editor de texto en Windows para anotar los comandos de cURL, co­m­pro­bar­los y copiarlos luego en el símbolo del sistema. De esta forma, te ahorras la fru­s­tra­n­te tarea de teclear cada vez que se cuele algún error. Además, así puedes guardar tus propias series de comandos con tus datos de acceso para futuras acciones.

Otra manera aún más rápida de hacerlo es la siguiente:

C:\curl\bin >curl --help | clip

El comando clip precedido de una barra (|) copia au­to­má­ti­ca­me­n­te en el po­r­ta­pa­pe­les de Windows los re­su­l­ta­dos que se muestren en ese momento en la consola de línea de comandos, de forma que luego se puede pegar si­m­ple­me­n­te el contenido di­re­c­ta­me­n­te con [Ctrl] + [V] en un documento de texto vacío y guardarlo.

Guardar datos de una página web de forma local

Para guardar in­fo­r­ma­ción acerca de una página web en un archivo local, basta con unos sencillos pasos en cURL. El archivo con los datos en cuestión recibirá el nombre de infos.html y deberá estar ubicado en el mismo di­re­c­to­rio del ordenador local en el que se haya guardado la in­s­ta­la­ción de cURL. En Windows, cURL utiliza para ello la opción -o (una letra o minúscula, no un cero).

curl -o infos.html https://www.ntv.de/

Este comando generará un archivo de más de 700 Kilobytes con el estado exacto de la página web de noticias tal y como se encuentre al realizar la solicitud.

Al abrir entonces este archivo de la unidad local en un navegador, se muestra la página web en el estado en el que fue guardada.

Este proceso funciona también con archivos sueltos de un servidor web. Tras la descarga, además, debe cambiarse el nombre del archivo ref.pdf por re­fe­re­n­cias.pdf :

curl -o referencias.pdf https://mipaginaweb.tld/ref.pdf
o bien
curl --output referencias.pdf https://mipaginaweb.tld/ref.pdf

Mostrar la cabecera de una página web

Para poder ver el contenido de la cabecera de una página web (que se encuentra entre las etiquetas <head>…</head> en HTML) se utiliza una opción antes de la dirección en cuestión (I = i mayúscula):

curl --head https://google.com
#o bien
curl -I https://google.com

Obtener in­fo­r­ma­ción más avanzada

Para poder ver aún más datos mediante cURL, puedes añadir la opción -v o bien --verbose. De esta manera obtendrás, entre otras muchas cosas, in­fo­r­ma­ción acerca de la dirección IPv6 utilizada, el puerto y los ce­r­ti­fi­ca­dos aplicados.

curl -I https://google.com -v
#o bien
curl --head https://google.com --verbose

Cargar datos mediante el protocolo SFTP

Llegados a este punto, el comando cURL co­rre­s­po­n­die­n­te se vuelve algo más complejo, ya que en SFTP deben tra­n­s­fe­ri­r­se los nombres de usuario al servidor para iniciar sesión y verificar la identidad. Se empieza de la siguiente forma:

curl -k sftp://servidor-ftp-prueba:22 --user UsuarioPrueba:ContraseñaPrueba -T archivoprueba.pdf

En la ventana del símbolo del sistema de Windows se puede seguir el proceso de subida. El archivo cargado debería en­co­n­trar­se entonces en el di­re­c­to­rio raíz de tu servidor FTP. Si hubieras cometido algún error al in­tro­du­cir el comando, cURL para Windows reacciona rá­pi­da­me­n­te con curl: (67) Au­the­n­ti­ca­tion failure. Si se intenta esta misma tra­n­s­fe­re­n­cia de datos con la versión más antigua me­n­cio­na­da an­te­rio­r­me­n­te, cURL 7.55.1, el mensaje co­rre­s­po­n­die­n­te sería curl: (1) Protocol "sftp" not supported or disabled in libcurl.

Descargas usando el protocolo SFTP y cURL

La descarga puede rea­li­zar­se fá­ci­l­me­n­te también con la versión actual de cURL, sin necesidad de un cliente FTP especial, na­tu­ra­l­me­n­te, siempre que el archivo que se quiera descargar exista en el servidor FTP.

curl -k sftp://servidor-ftp-prueba:22 --user UsuarioPrueba:ContraseñaPrueba -o archivoprueba.pdf
Nota

cURL se ha co­n­ve­r­ti­do en una he­rra­mie­n­ta muy poderosa, por lo que debes ser cuidadoso al uti­li­zar­la en tu propio entorno de servidor. Disponer de una copia de seguridad de los datos y de un medio de re­cu­pe­ra­ción del sistema Windows puede ser de gran ayuda si algo sale mal.

La previsión me­teo­ró­gi­ca con cURL

Usando símbolos ASCII es posible presentar datos de forma más atractiva (y, por lo tanto, más útil). Como muestra de ello, se puede observar esta pre­se­n­ta­ción de la previsión me­teo­ro­ló­gi­ca local so­li­ci­ta­da con cURL:

curl http://wttr.in/LOCATION

Esta previsión puede mostrarse para cualquier lugar que se desee.

cURL y PHP: una buena pareja

Para poder uti­li­zar­se de forma práctica en las tareas de pro­gra­ma­ción ru­ti­na­rias, cURL también está di­s­po­ni­ble en PHP. Puedes co­m­pro­bar­lo en tu servidor web con la siguiente solicitud PHP:

<?php
phpinfo();
?>

Guarda luego este código como un archivo con el nombre phpinfo.php y ubícalo en el di­re­c­to­rio raíz de tu servidor web. De esta forma podrás obtener toda la in­fo­r­ma­ción acerca de las opciones di­s­po­ni­bles en tu versión de PHP, in­clu­ye­n­do la di­s­po­ni­bi­li­dad de cURL, con solo abrir este archivo en el navegador con la ruta ´https://mi­pa­gi­na­web.tld/phpinfo.php'.

Para que se muestre entonces una página web con in­fo­r­ma­ción adicional, bastan unas pocas líneas de código PHP. Como ejemplo, en este caso hemos pedido que se muestre la página web de Microsoft en español:

<?php
$site = curl_init(); //iniciar el cURL handler 
curl_setopt($site, CURLOPT_URL, "https://www.microsoft.com/es-es/"); //Indicar URL
curl_setopt($site,CURLOPT_RETURNTRANSFER,true); //Establecer parámetros opcionales
curl_setopt($site,CURLOPT_HEADER, true); //Mostrar cabecera; suprimir con false
$result=curl_exec($site); //ejecutar el cURL en sí 
curl_close($site);
echo $result;
?>

Guarda entonces este código en el di­re­c­to­rio raíz de tu servidor web con el nombre de curlinfo.php, por ejemplo.

Puesto que en el archivo tan solo está al­ma­ce­na­do el código PHP en sí, las in­fo­r­ma­cio­nes de la cabecera se muestran en el tipo de letra propio del navegador, es decir, en otro formato. Este tipo de rutina es el inicio de la in­cru­s­ta­ción de datos de otras páginas web en la página propia mediante PHP y cURL.

Po­we­r­She­ll vs. símbolo del sistema

Windows 10 ha in­co­r­po­ra­do otra poderosa he­rra­mie­n­ta de de­sa­rro­llo: Windows Po­we­r­She­ll. Se puede acceder a ella a través del menú del icono de Windows y puede re­co­no­ce­r­se por las letras PS que aparecen al inicio de la ruta de Windows. En el futuro, se pretende que Windows Po­we­r­She­ll reemplace la llamada consola de línea de comandos o símbolo del sistema. Esta nueva he­rra­mie­n­ta ofrece, además, una mayor gama de po­si­bi­li­da­des para ad­mi­ni­s­trar páginas web y se­r­vi­do­res. Sin embargo, solo permite usar algunos de los comandos cURL, mientras que el resto debe tra­du­ci­r­se para surtir efecto en Po­we­r­She­ll.

Por suerte, la función tra­du­c­to­ra está integrada di­re­c­ta­me­n­te en Po­we­r­She­ll y puede activarse con GetAlias seguido del comando cURL.

PS C:\WINDOWS\system32> Get-Alias curl
# genera el resultado
CommandType	Name	Version	Source
-----------	----	-------	------
Alias	curl -> Invoke-WebRequest

De esta forma podemos ver qué comando de Po­we­r­She­ll permite aplicar cURL a una página web:

PS C:\WINDOWS\system32> Invoke-WebRequest https://google.com/
Ir al menú principal