cURL en Windows: cómo empezar a utilizarlo

La abreviatura cURL puede significar Client for URLs o Curl URL Request Library. Se trata de un programa de línea de comandos con la biblioteca correspondiente incluida y que permite la transferencia de datos entre ordenadores interconectados. El software cURL fue desarrollado por el programador Daniel Stenberg con el objetivo inicial de proporcionar datos relativos a los tipos de cambio, extraídos de diversas páginas web, a los participantes de un chat. Gracias a su licencia MIT abierta, cURL puede ser utilizado de forma libre y ya es compatible con muchos sistemas operativos, entre ellos Windows 10, que desde su actualización 1803 en abril de 2018 también dispone de cURL. La detallada guía Everything curl es tan solo una muestra de las muchas posibilidades que ofrece esta herramienta a los programadores. 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 exactamente cURL para Windows?

Al igual que en otros sistemas operativos, cURL para Windows está compuesto del archivo ejecutable curl.exe y de la biblioteca libcurl, una API escrita en lenguaje C que implementa 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 estructura de comandos específica:

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

En este caso, <url> es la dirección de la página web con la que se quiere interactuar. Con [options …] se especifican las órdenes para ejecutar procesos como la solicitud de páginas web, las cargas y descargas, los postings y el uso de formularios, entre muchos otros. Muchas de las opciones pueden escribirse de dos maneras diferentes:

  • 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 introducirse tanto -G como --get.

Comprobar la disponibilidad 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 introduciendo cmd en la barra de búsqueda de Windows. A continuación, introduce

C:\Users\UsuarioMuestra>curl --version

para ver la información sobre la versión de cURL de tu Windows 10.

A medida que se ha ido desarrollando cURL, ha ido aumentando el número de protocolos que pueden utilizarse, lo cual se puede observar claramente 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 posibilidades de transferir 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 administrador como para cualquier usuario. Sin embargo, para utilizar todos los protocolos disponibles en el software, debe estar instalada la versión actual de cURL para Windows. La manera más fácil de conseguirlo es descargando la versión actual como archivo ZIP desde la página web de los desarrolladores. En dicha página puedes encontrar también información acerca de los cambios que se han aplicado (changelog). A continuación, en el explorador de archivos, se extrae el archivo en forma de directorio, dándole el nombre de curl, por ejemplo. Este directorio 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 directorios extraídos de la descarga de cURL. El archivo ejecutable curl.exe está ubicado en el subdirectorio \bin, en el que también se encuentra el archivo de certificado curl-ca-bundle.crt, necesario para utilizar, entre otros, los protocolos SFTP y HTTPS.

A continuació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á disponible toda la gama de funciones de cURL para Windows, que utilizaremos para explicar más ejemplos. A modo de prueba, solicita ver la versión del software tal y como se ha indicado anteriormente. El tipo de actualizació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 desactivarla.

cURL con ejemplos prácticos

cURL se usa en Windows mediante la introducción de comandos en el símbolo del sistema (consola de línea de comandos). Para ver la informació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 información, transfiere los resultados 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ácilmente 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, comprobarlos y copiarlos luego en el símbolo del sistema. De esta forma, te ahorras la frustrante 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 automáticamente en el portapapeles de Windows los resultados que se muestren en ese momento en la consola de línea de comandos, de forma que luego se puede pegar simplemente el contenido directamente con [Ctrl] + [V] en un documento de texto vacío y guardarlo.

Guardar datos de una página web de forma local

Para guardar informació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 directorio del ordenador local en el que se haya guardado la instalació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 referencias.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 informació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, información acerca de la dirección IPv6 utilizada, el puerto y los certificados 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 correspondiente se vuelve algo más complejo, ya que en SFTP deben transferirse 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 encontrarse entonces en el directorio raíz de tu servidor FTP. Si hubieras cometido algún error al introducir el comando, cURL para Windows reacciona rápidamente con curl: (67) Authentication failure. Si se intenta esta misma transferencia de datos con la versión más antigua mencionada anteriormente, cURL 7.55.1, el mensaje correspondiente sería curl: (1) Protocol "sftp" not supported or disabled in libcurl.

Descargas usando el protocolo SFTP y cURL

La descarga puede realizarse fácilmente también con la versión actual de cURL, sin necesidad de un cliente FTP especial, naturalmente, 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 convertido en una herramienta muy poderosa, por lo que debes ser cuidadoso al utilizarla en tu propio entorno de servidor. Disponer de una copia de seguridad de los datos y de un medio de recuperación del sistema Windows puede ser de gran ayuda si algo sale mal.

La previsión meteorógica 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 presentación de la previsión meteorológica local solicitada 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 utilizarse de forma práctica en las tareas de programación rutinarias, cURL también está disponible en PHP. Puedes comprobarlo 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 directorio raíz de tu servidor web. De esta forma podrás obtener toda la información acerca de las opciones disponibles en tu versión de PHP, incluyendo la disponibilidad de cURL, con solo abrir este archivo en el navegador con la ruta ´https://mipaginaweb.tld/phpinfo.php'.

Para que se muestre entonces una página web con informació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 directorio raíz de tu servidor web con el nombre de curlinfo.php, por ejemplo.

Puesto que en el archivo tan solo está almacenado el código PHP en sí, las informaciones 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 incrustación de datos de otras páginas web en la página propia mediante PHP y cURL.

PowerShell vs. símbolo del sistema

Windows 10 ha incorporado otra poderosa herramienta de desarrollo: Windows PowerShell. Se puede acceder a ella a través del menú del icono de Windows y puede reconocerse por las letras PS que aparecen al inicio de la ruta de Windows. En el futuro, se pretende que Windows PowerShell reemplace la llamada consola de línea de comandos o símbolo del sistema. Esta nueva herramienta ofrece, además, una mayor gama de posibilidades para administrar páginas web y servidores. Sin embargo, solo permite usar algunos de los comandos cURL, mientras que el resto debe traducirse para surtir efecto en PowerShell.

Por suerte, la función traductora está integrada directamente en PowerShell 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 PowerShell permite aplicar cURL a una página web:

PS C:\WINDOWS\system32> Invoke-WebRequest https://google.com/