Introducción
curl
es una utilidad de línea de comandos para transferir datos hacia o desde un servidor diseñado para funcionar sin la interacción del usuario. Con curl
, puede cargar y descargar datos utilizando uno de los protocolos admitidos, incluidos HTTP, HTTPS, SCP, SFTP y FTP. curl
proporciona una serie de opciones que le permiten reanudar las transferencias, reducir el ancho de banda, la compatibilidad con proxy, la autenticación de usuarios y mucho más.
En este tutorial, le mostraremos cómo utilizar la herramienta Curl a través de ejemplos prácticos y explicaciones detalladas de las opciones de curl más comunes.
Instalar Curl
Actualmente, el paquete curl está preinstalado en la mayoría de las distribuciones de Linux.
Para verificar si el paquete Curl está instalado en su sistema, abra su consola, escriba curl
y presione Enter. Si curl
está instalado, el sistema imprimirá curl: try 'curl --help' or 'curl --manual' for more information
. De lo contrario, verá algo como el curl command not found
.
Si curl
no está instalado, puede instalarlo fácilmente usando el administrador de paquetes de su distribución.
Instalar Curl en Ubuntu y Debian
sudo apt update
sudo apt install curl
Instalar Curl en CentOS y Fedora
sudo yum install curl
Cómo usar Curl
La sintaxis del curl
es la siguiente:
curl [options] [URL...]
En su forma más simple, cuando se invoca sin ninguna opción, curl
muestra el recurso especificado en la salida estándar.
Por ejemplo, para recuperar la página de inicio de example.com
, debe ejecutar:
curl example.com
El comando imprimirá el código fuente de la example.com
en la ventana del terminal.
Si no se especifica ningún protocolo, curl
intenta adivinar el protocolo que desea utilizar, en función de la dirección que especifique y se establecerá de forma predeterminada en HTTP
.
Guarde la salida en un archivo
Para guardar el resultado del curl
, use la opción -o
o -O
La -o
(minúsculas) guarda el archivo con un nombre de archivo predeterminado, que en el siguiente ejemplo es vue-v2.6.10.js
:
curl -o vue-v2.6.10.js https://cdn.jsdelivr.net/npm/vue/dist/vue.js
La -O
(mayúsculas) guarda el archivo con su nombre de archivo original:
curl -O https://cdn.jsdelivr.net/npm/vue/dist/vue.js
Descarga varios archivos
Para descargar varios archivos a la vez, use varias -O
, seguidas de la URL en el archivo que desea descargar.
En el siguiente ejemplo, estamos descargando los archivos ISO de Arch Linux y Debian:
curl -O http://mirrors.edge.kernel.org/archlinux/iso/2018.06.01/archlinux-2018.06.01-x86_64.iso \
-O https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-9.4.0-amd64-netinst.iso
Reanudar una descarga
Puede reanudar una descarga usando la opción -C -
Esto es útil si la conexión se interrumpe mientras se descarga un archivo grande y en lugar de iniciar la descarga desde cero, puede continuar con el anterior.
Por ejemplo, si está descargando el archivo iso de Ubuntu 18.04 usando el siguiente comando:
curl -O http://releases.ubuntu.com/18.04/ubuntu-18.04-live-server-amd64.iso
y de repente se interrumpe la conexión, puede reanudar la descarga con este comando:
curl -C - -O http://releases.ubuntu.com/18.04/ubuntu-18.04-live-server-amd64.iso
Obtener los encabezados HTTP de una URL (encabezados HTTP)
Los encabezados HTTP son pares clave-valor separados por dos puntos que contienen información como el agente de usuario, el tipo de contenido y la codificación. Los encabezados se pasan entre el cliente y el servidor con la solicitud o respuesta.
Use la -I
para recuperar solo los encabezados HTTP del recurso especificado:
curl -I --http2 https://www.ubuntu.com/
Compruebe si un sitio web es compatible con HTTP /2
Para verificar si una URL en particular admite el nuevo protocolo HTTP /2, recupere los encabezados HTTP con la -I
junto con la opción --http2
curl -I --http2 -s https://noviello.it/| grep HTTP
La -s
permite que el curl
ejecute silenciosamente (silenciosamente) y oculte el indicador de estado y los mensajes de error.
Si el servidor remoto admite HTTP 2, curl
imprime HTTP/2.0 200
:
HTTP/2 200
De lo contrario, la respuesta es HTTP/1.1 200
:
HTTP/1.1 200 OK
Si tiene curl versión 7.47.0
o más reciente, no necesita usar la --http2
porque HTTP /2 está habilitado de manera predeterminada para todas las conexiones HTTPS.
Siga las redirecciones
De forma predeterminada, curl
no sigue los encabezados de ubicación HTTP.
Si intenta recuperar la versión sin www de google.com
, notará que, en lugar de obtener la fuente de la página, será redirigido a la versión www:
curl google.com
La -L
indica a la curl
que siga las redirecciones hasta que llegue a su destino final:
curl -L google.com
Cambiar el agente de usuario
A veces, al descargar un archivo, el servidor remoto se puede configurar para bloquear Curl User-Agent o para devolver contenido diferente según el dispositivo del visitante y el navegador.
En situaciones como esta, para emular un navegador diferente, use la opción -A
Por ejemplo, para emular Firefox 60 debes usar:
curl -A "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0" https://getfedora.org/
Especifique una tasa de transferencia máxima
La --limit-rate
permite limitar la tasa de transferencia de datos. El valor se puede expresar en bytes, kilobytes con el k
, megabytes con el m
y gigabytes con el sufijo g
En el siguiente ejemplo, curl
descargará el binario Go y limitará la velocidad de descarga a 1 MB:
curl --limit-rate 1m -O https://dl.google.com/go/go1.10.3.linux-amd64.tar.gz
Esta opción es útil para evitar consumir todo el ancho de banda disponible.
Transferir archivos a través de FTP
Para iniciar sesión en un servidor FTP protegido curl
-u
y especifique el nombre de usuario y la contraseña como se muestra a continuación:
curl -u FTP_USERNAME:FTP_PASSWORD ftp://ftp.example.com/
Una vez que haya iniciado sesión, el comando enumera todos los archivos y directorios en el directorio de inicio del usuario.
Puede descargar un solo archivo desde el servidor FTP utilizando la siguiente sintaxis:
curl -u FTP_USERNAME:FTP_PASSWORD ftp://ftp.example.com/file.tar.gz
Para cargar un archivo al servidor FTP, use el -T
seguido del nombre del archivo que desea cargar:
curl -T newfile.tar.gz -u FTP_USERNAME:FTP_PASSWORD ftp://ftp.example.com/
Enviar cookies
A veces puede ser necesario realizar una solicitud HTTP con cookies específicas para acceder a un recurso remoto o para depurar un problema.
Por defecto, al solicitar un recurso con curl
, no se envían ni almacenan cookies.
Para enviar cookies al servidor, use la -b
seguida de un nombre de archivo que contenga cookies o una cadena.
Por ejemplo, para descargar el archivo rpm de jdk-10.0.2_linux-x64_bin.rpm
, debe pasar una cookie denominada oraclelicense
con el valor a
:
curl -L -b "oraclelicense=a" -O http://download.oracle.com/otn-pub/java/jdk/10.0.2+13/19aef61b38124481863b1413dce1855f/jdk-10.0.2_linux-x64_bin.rpm
Utilizar proxies
curl
admite varios tipos de proxies, incluidos HTTP, HTTPS y SOCKS. Para transferir datos a través de un servidor proxy, use la -x
( --proxy
), seguida de la URL del proxy.
El siguiente comando descarga el recurso especificado usando un proxy 192.168.44.1
en el puerto 8888
:
curl -x 192.168.44.1:8888 http://linux.com/
Si el servidor proxy requiere autenticación, use la -U
( --proxy-user
) seguida del nombre de usuario y la contraseña separados por dos puntos ( user:password
):
curl -U username:password -x 192.168.44.1:8888 http://linux.com/
Conclusión
curl
es una herramienta de línea de comandos que le permite transferir datos hacia o desde un host remoto. Es útil para solucionar problemas, descargar archivos y más.
Para obtener más información sobre curl
visite la página de documentación de Curl.