15 consells sobre com utilitzar Curl Command a Linux


A mitjans de la dècada de 1990, quan Internet encara estava en els seus inicis, un programador suec anomenat Daniel Stenberg va iniciar un projecte que finalment es va convertir en el que avui coneixem com curl.

Inicialment, va tenir com a objectiu desenvolupar un bot que descarregués els tipus de canvi de divises d'una pàgina web periòdicament i proporcionés equivalents de corones sueques en dòlars dels EUA als usuaris de l'IRC.

En resum, el projecte va prosperar, afegint diversos protocols i funcions al llarg del camí, i la resta és història. Ara endinsem-nos amb els dos peus i aprenem a utilitzar curl per transferir dades i molt més a Linux!

Hem elaborat la següent llista de 15 ordres de curl per a tu.

1. Veure la versió curl

Les opcions -V o --version no només retornaran la versió, sinó també els protocols i característiques compatibles amb la vostra versió actual.

$ curl --version

curl 7.47.0 (x86_64-pc-linux-gnu) libcurl/7.47.0 GnuTLS/3.4.10 zlib/1.2.8 libidn/1.32 librtmp/2.3
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtmp rtsp smb smbs smtp smtps telnet tftp 
Features: AsynchDNS IDN IPv6 Largefile GSS-API Kerberos SPNEGO NTLM NTLM_WB SSL libz TLS-SRP UnixSockets 

2. Baixeu un fitxer

Si voleu descarregar un fitxer, podeu utilitzar curl amb les opcions -O o -o. El primer desarà el fitxer al directori de treball actual amb el mateix nom que a la ubicació remota, mentre que el segon us permetrà especificar un nom de fitxer i/o una ubicació diferents.

$ curl -O http://yourdomain.com/yourfile.tar.gz # Save as yourfile.tar.gz
$ curl -o newfile.tar.gz http://yourdomain.com/yourfile.tar.gz # Save as newfile.tar.gz

3. Reprèn una descàrrega interrompuda

Si una baixada s'ha interromput per algun motiu (per exemple, utilitzant Ctrl + c), podeu reprendre-la molt fàcilment. L'ús de -C – (guionet C, guió d'espai) diu a Curl que reprèn la descàrrega començant on l'havia deixat.

$ curl -C - -O http://yourdomain.com/yourfile.tar.gz

4. Baixeu diversos fitxers

Amb l'ordre següent, descarregareu info.html i about.html de http://yoursite.com i http://mysite.com, respectivament, d'una vegada.

$ curl -O http://yoursite.com/info.html -O http://mysite.com/about.html 

5. Baixeu URL d'un fitxer

Si combineu curl amb xargs, podeu baixar fitxers d'una llista d'URL d'un fitxer.

$ xargs -n 1 curl -O < listurls.txt

6. Utilitzeu un servidor intermediari amb o sense autenticació

Si esteu darrere d'un servidor intermediari que escolta al port 8080 a proxy.yourdomain.com, feu-ho.

$ curl -x proxy.yourdomain.com:8080 -U user:password -O http://yourdomain.com/yourfile.tar.gz

on podeu saltar -U usuari:contrasenya si el vostre proxy no requereix autenticació.

7. Consulta les capçaleres HTTP

Les capçaleres HTTP permeten que el servidor web remot enviï informació addicional sobre si mateix juntament amb la sol·licitud real. Això proporciona al client detalls sobre com es gestiona la sol·licitud.

Per consultar les capçaleres HTTP d'un lloc web, feu el següent:

$ curl -I linux-console.net

Aquesta informació també està disponible a les eines de desenvolupament del vostre navegador.

8. Feu una sol·licitud POST amb Paràmetres

La següent comanda enviarà els paràmetres firstName i lastName, juntament amb els seus valors corresponents, a https://yourdomain.com/info.php.

$ curl --data "firstName=John&lastName=Doe" https://yourdomain.com/info.php

Podeu utilitzar aquest consell per simular el comportament d'un formulari HTML normal.

9. Baixeu fitxers des d'un servidor FTP amb o sense autenticació

Si un servidor FTP remot espera connexions a ftp://yourftpserver, l'ordre següent baixarà yourfile.tar.gz al directori de treball actual.

$ curl -u username:password -O ftp://yourftpserver/yourfile.tar.gz 

on podeu saltar -u nom d'usuari:contrasenya si el servidor FTP permet inicis de sessió anònims.

10. Carregueu fitxers a un servidor FTP amb o sense autenticació

Per carregar un fitxer local anomenat mylocalfile.tar.gz a ftp://yourftpserver mitjançant curl, feu:

$ curl -u username:password -T mylocalfile.tar.gz ftp://yourftpserver

11. Especifiqueu l'agent d'usuari

L'agent d'usuari forma part de la informació que s'envia juntament amb una sol·licitud HTTP. Això indica quin navegador ha utilitzat el client per fer la sol·licitud. Vegem quina versió de curl fa servir com a predeterminada i després la canviarem a \Sóc un navegador web nou:

$ curl -I http://localhost --user-agent "I am a new web browser"

12. Emmagatzemar galetes del lloc web

Voleu veure quines galetes es descarreguen al vostre ordinador quan navegueu a https://www.cnn.com? Utilitzeu l'ordre següent per desar-los a cnncookies.txt. A continuació, podeu utilitzar l'ordre cat per veure el fitxer.

$ curl --cookie-jar cnncookies.txt https://www.cnn.com/index.html -O

13. Enviar cookies del lloc web

Podeu utilitzar les galetes recuperades a l'últim consell en sol·licituds posteriors al mateix lloc.

$ curl --cookie cnncookies.txt https://www.cnn.com

14. Modificar la resolució de noms

Si sou un desenvolupador web i voleu provar una versió local de yourdomain.com abans de publicar-lo en directe, podeu fer que curl resolve http://www.yourdomain.com al vostre host local d'aquesta manera:

$ curl --resolve www.yourdomain.com:80:localhost http://www.yourdomain.com/

Així, la consulta a http://www.yourdomain.com dirà a curl que sol·liciti el lloc a localhost en lloc d'utilitzar DNS o el fitxer /etc/hosts.

15. Limitar la taxa de descàrrega

Per evitar que l'ample de banda enrotlli l'ample de banda, podeu limitar la velocitat de descàrrega a 100 KB/s de la següent manera.

$ curl --limit-rate 100K http://yourdomain.com/yourfile.tar.gz -O

En aquest article hem compartit una breu història dels orígens del curl i hem explicat com utilitzar-lo a través de 15 exemples pràctics.

Coneixeu altres ordres de curl que ens hem perdut en aquest article? No dubteu a compartir-los amb la nostra comunitat als comentaris! A més, si teniu preguntes, no dubteu a fer-nos-ho saber. Esperem amb interès tenir notícies teves!