Recibe actualizaciones por: rss | twitter | email

Como usar curl en Linux

Escrito por:
Fecha: 2020-06-04 21:25:00 00:00

El comando curl no siempre esta instalando en Linux, en el caso de Ubuntu o Debian lo puedes instalar con:

sudo apt install curl

Este es un comando muy útil para transferir archivos, pues es capaz de utilizar los protocolos SCP, SFTP, FTP, pero los más conocidos son HTTP y HTTPS, al menos es con ellos con los que más se lo utiliza.

Para ver el contenido de una página web, es decir el código fuente de la misma (HTML) lo puedes usar sin ninguna opción y pasarle como parámetro la dirección de la página.

curl https://www.garron.website

Si lo que deseamos es bajar ese contenido a un archivo, es decir bajarnos el archivo index.html del ejemplo de arriba, usamos la opción -o o -O

Bajar un archivo de la web, asignandole un nombre local

curl -o home.htm https://www.garron.website

Bajar un archivo de la web, respetando su nombre original

curl -O https://www.garron.website/index.html

Revisar los encabezados HTTP

Para ver los encabezados HTTP que arroja el servidor, también es muy útil curl, de hecho es la forma en que más lo utilizo yo.

curl -I https://www.garron.website

La salida es algo así.

HTTP/2 200
date: Fri, 05 Jun 2020 01:09:52 GMT
content-type: text/html
set-cookie: __cfduid=de6179f364d2b703d32b84047573c59db1591319392; expires=Sun, 05-Jul-20 01:09:52 GMT; path=/; domain=.garron.blog; HttpOnly; SameSite=Lax; Secure
vary: Accept-Encoding
cdn-pullzone: 129536
cdn-uid: 8fd1c7b1-d73d-43f2-8183-74c70fafb00a
cdn-requestcountrycode: FR
cdn-edgestorageid: 617
cdn-edgestorageid: 602
last-modified: Wed, 03 Jun 2020 14:48:59 GMT
x-mod-pagespeed: 1.13.35.2-0
cache-control: public, max-age=14400, s-maxage=10
cdn-cachedat: 2020-06-04 20:06:55
cdn-requestid: 7b5d1dd91192345c3cf4950093ebc728
cdn-cache: MISS
cf-cache-status: HIT
age: 177
cf-request-id: 0323a00a70000008e520112200000001
expect-ct: max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
server: cloudflare
cf-ray: 59e602bd899f08e5-EZE
alt-svc: h3-27=":443"; ma=86400

Enviar encabezados HTTP

Otro uso bastante útil es enviar encabezados al servidor con nuestro requrimiento, por ejemplo si tienes un servidor Apache o Nginx configurados para servir un dominio dado (sigamos usando garron.website), pero el DNS aún no apunta a él pues estás aún en etapa de desarrollo, puedes solicitar una página indicandole al servidor donde la tiene que buscar.

curl -H "Host: www.garron.website" http://localhost/

Si no lo envías así el servidor responderá con el default server.

Bajar archivos usando FTP con password

Si deseas descargar archivos desde un servidor FTP puedes igual usar curl para enviar el usuario y la clave.

curl -u USER:PASSWORD ftp://ftp.server.com/file.tar.gz

Reiniciar la descarga de un archivo

En caso que la descarga se interrumpa por algún motivo, puedes reiniciarla, veamos, iniciamos la descarga.

curl -O http://example.com/file.tar.gz

Si tu internet se corta o la maquina se cuelga pero ya bajaste varios gigas, puedes continuar de donde estabas con:

curl -C - -O http://example.com/file.tar.gz

Verificar la existencia de HTTP/2

HTTP/2 es un nuevo estándar que se utiliza para acelerar la velocidad de descarga de un sitio a travez de https, si configuraste tu servidor para que lo utilize y quieres comprobar si funciona, puedes usar:

curl -I --http2 -s https://www.garron.website | grep HTTP 

La salida del comando será.

HTTP/2 200

Si es que funciona, y si no.

HTTP/1.1 200 OK

Cambiar el User-Agent

Puedes indicarle a curl que se identifique como un navegador X. Por ejemplo Firefox.

curl -A "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0" https://www.garron.website/

En los logs del servidor no verás una conexión como curl, sino que como Firefox

Limitar el ancho de banda a ser utilizado

Si descargas archivos grandes y no quieres que curl utilice el 100% del ancho de banda que tienes disponible, puedes limitarlo.

curl --limit-rate 1m -O https://example.com/file.iso

Subir un archivo a un servidor FTP

curl -T file.tar.gz -u USER:PASSWORD ftp://ftp.example.com/

Utilizar un proxy

Si en tu red se tiene configurado un proxy server, puedes utilizar con curl, con la opción -x

curl -x 192.168.0.1:3128 http://www.garron.website/

Y si tu proxy requiere autenticación

curl -U USER:PASSWORD -x 192.168.0.1:3128 http://www.garron.website/

Como puede observarse, curl es un comando de Linux muy versátil, espero que con esta pequeña guía ahora lo puedas usar mejor.