# 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***](https://ec.haxx.se/ "extensive curl guide") 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:

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

En este caso, **&lt;url&gt;&lt;/url&gt;** 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](https://www.ionos.es/digitalguide/servidores/herramientas/abrir-el-simbolo-del-sistema/ "Abrir el símbolo del sistema") introduciendo ***cmd*** en la barra de búsqueda de Windows. A continuación, introduce

```none
C:\Users\UsuarioMuestra>curl --version
```

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

[![Imagen: Mostrar la versión de cURL en Windows 10](https://www.ionos.es/digitalguide/fileadmin/_processed_/f/3/csm_Displaying-the-cURL-version-in-Windows-10_43a1ebec35.webp "Mostrar la versión de cURL en Windows 10")](https://www.ionos.es/digitalguide/fileadmin/DigitalGuide/Screenshots_2020/Displaying-the-cURL-version-in-Windows-10.jpg) Mostrar la versión de cURL en 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:

<table>
  <thead>
    <tr>
      <th>7.55.1 (agosto de 2017)</th>
      <th>7.70.0 (abril de 2020)</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>dict</td>
      <td>dict</td>
    </tr>
    <tr>
      <td>file</td>
      <td>file</td>
    </tr>
    <tr>
      <td>ftp</td>
      <td>ftp</td>
    </tr>
    <tr>
      <td>ftps</td>
      <td>ftps</td>
    </tr>
    <tr>
      <td>–</td>
      <td>gopher</td>
    </tr>
    <tr>
      <td>http</td>
      <td>http</td>
    </tr>
    <tr>
      <td>https</td>
      <td>https</td>
    </tr>
    <tr>
      <td>imap</td>
      <td>imap</td>
    </tr>
    <tr>
      <td>imaps</td>
      <td>imaps</td>
    </tr>
    <tr>
      <td>–</td>
      <td>ldap</td>
    </tr>
    <tr>
      <td>–</td>
      <td>ldaps</td>
    </tr>
    <tr>
      <td>–</td>
      <td>mqtt</td>
    </tr>
    <tr>
      <td>pop3</td>
      <td>pop3</td>
    </tr>
    <tr>
      <td>pop3s</td>
      <td>pop3s</td>
    </tr>
    <tr>
      <td>–</td>
      <td>rtsp</td>
    </tr>
    <tr>
      <td>–</td>
      <td>scp</td>
    </tr>
    <tr>
      <td>–</td>
      <td>sftp</td>
    </tr>
    <tr>
      <td>–</td>
      <td>smb</td>
    </tr>
    <tr>
      <td>–</td>
      <td>smbs</td>
    </tr>
    <tr>
      <td>smtp</td>
      <td>smtp</td>
    </tr>
    <tr>
      <td>smtps</td>
      <td>smtps</td>
    </tr>
    <tr>
      <td>telnet</td>
      <td>telnet</td>
    </tr>
    <tr>
      <td>tftp</td>
      <td>tftp</td>
    </tr>
  </tbody>
</table>

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](https://curl.haxx.se/windows/ "Actual versión cURL") 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:

```none
# 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:

```none
C:\curl\bin>curl --help
```

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

```none
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:

```none
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).

```none
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.

[![Imagen: Solicitud de información de una página web con cURL](https://www.ionos.es/digitalguide/fileadmin/_processed_/a/4/csm_cURL-request-of-website-information_51891a746d.webp "Solicitud de información de una página web con cURL")](https://www.ionos.es/digitalguide/fileadmin/DigitalGuide/Screenshots_2020/cURL-request-of-website-information.jpg) Solicitud de información de una página web con cURL 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* :

```none
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 *&lt;head&gt;…&lt;/head&gt;* en HTML) se utiliza una opción antes de la dirección en cuestión (I = *i* mayúscula):

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

[![Imagen: Solicitud de información de una página web con cURL](https://www.ionos.es/digitalguide/fileadmin/_processed_/e/5/csm_cURL-request-of-website-information-2_c9c536d3ab.webp "Solicitud de información de una página web con cURL")](https://www.ionos.es/digitalguide/fileadmin/DigitalGuide/Screenshots_2020/cURL-request-of-website-information-2.jpg) Solicitud de información de una página web con cURL ### 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.

```none
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:

```none
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.

```none
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:

```none
curl http://wttr.in/LOCATION
```

[![Imagen: Visualización con cURL de la previsión meteorológica local](https://www.ionos.es/digitalguide/fileadmin/_processed_/d/f/csm_cURL-request-of-the-regional-weather-forecast_a23fe1745c.webp "Visualización con cURL de la previsión meteorológica local")](https://www.ionos.es/digitalguide/fileadmin/DigitalGuide/Screenshots_2020/cURL-request-of-the-regional-weather-forecast.jpg) Visualización con cURL de la previsión meteorológica local 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](https://www.ionos.es/digitalguide/paginas-web/desarrollo-web/php-curl/). Puedes comprobarlo en tu servidor web con la siguiente solicitud PHP:

```none
<?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’.

[![Imagen: Comprobación de la disponibilidad de cURL en PHP](https://www.ionos.es/digitalguide/fileadmin/_processed_/8/9/csm_Checking-for-cURL-in-PHP_58d6104c75.webp "Comprobación de la disponibilidad de cURL en PHP")](https://www.ionos.es/digitalguide/fileadmin/DigitalGuide/Screenshots_2020/Checking-for-cURL-in-PHP.jpg) Comprobación de la disponibilidad de cURL en 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:

```none
<?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.

[![Imagen: Visualización de una página web con cURL en PHP](https://www.ionos.es/digitalguide/fileadmin/_processed_/b/3/csm_Website-request-with-cURL-in-PHP_7c81bc559c.webp "Visualización de una página web con cURL en PHP")](https://www.ionos.es/digitalguide/fileadmin/DigitalGuide/Screenshots_2020/Website-request-with-cURL-in-PHP.jpg) Visualización de una página web con cURL en PHP 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](https://www.ionos.es/digitalguide/servidores/know-how/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.

```none
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:

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


This is a markdown version of: [https://www.ionos.es/digitalguide/servidores/herramientas/introduccion-a-curl-en-windows/](https://www.ionos.es/digitalguide/servidores/herramientas/introduccion-a-curl-en-windows/) for AI/LLM consumption.