Sådan begynder du at bruge Curl, og hvorfor: en praktisk introduktion

Uanset om det tester output fra en API, inden det implementeres til produktion, eller simpelthen at hente et svar fra et websted (for eksempel for at kontrollere, at det ikke er nede), er Curl praktisk taget allestedsnærværende.

Som dataforsker har jeg været nødt til at bruge det fra tid til anden. Imidlertid endte jeg oftere end ikke bare med at udskifte parametre fra en kopieret og indsat krøllekommando, der gik omkring mit teams Slack-kanal.

Jeg besluttede, at jeg havde brug for at forstå dette kraftfulde værktøj bedre, hvis jeg ville bruge det til sit fulde potentiale, og nu er jeg her for at dele nogle af de mest interessante ting, jeg fandt i denne curl-tutorial.

Hvis du har nogle tip eller tricks, du gerne vil tilføje, skal du gøre det i kommentarerne, da min forståelse af dette værktøj stadig er i sine tidlige faser.

Curl: Hvad er det godt til?

Curl er et kommandolinjeværktøj, der giver os mulighed for at lave HTTP-anmodninger fra shell. Det dækker også mange andre protokoller, som FTP, selvom de går ud over omfanget af denne vejledning.

Navnet står for “Client URL”, og det blev udviklet af den svenske udvikler Daniel Stenberg. Det er et open source-projekt, og dets kode kan findes her, hvis du har lyst til at bidrage.

Du kan påberåbe det fra din yndlingsterminal, og det kommer normalt forudinstalleret i Linux-baserede OS'er. Ellers kan det normalt downloades via apt-get på Linux og brygge på Mac.

Opkald til en GET-metode

I sin mest basale form vil en krøllekommando se sådan ud:

curl //www.dataden.tech

Standardadfærden for curl er at påkalde en HTTP GET-metode på den givne URL. På denne måde vil programmets output for denne kommando være hele HTTP-responsens krop (i dette tilfælde HTML), som webstedet returnerer på en GET, som skrives som angivet på stdout .

Hvis du ønsker at læse et svar uden at forlade skallen, vil jeg anbefale i det mindste at føre det til en mindre kommando for at være i stand til let at rulle gennem output.

Mange gange vil vi dirigere svarets indhold til en fil. Dette gøres med argumentet -o , som dette:

curl -o output.html www.dataden.tech

hvilket svarer til:

curl www.dataden.tech > output.html

Valgfrit kan du angive URL-adressen til det websted, du vil kalde curl på, med et -s- argument, som dette:

curl -s //www.dataden.tech

giver dig mulighed for at ændre rækkefølgen af ​​dine argumenter.

Du kan også bruge –næste til at angive mere end en URL, selvom det officielle dokument tilråder at i stedet kalde curl på hver URL i en anden kommando.

Foretag en POST til en URL

Nogle gange vil du gerne teste, om en API fungerer korrekt, og det kræver normalt at sende argumenter til den.

Vi gør normalt dette gennem POST-metoden og sender nogle JSON med alle de krævede parametre. Der er mange måder at gøre dette med krølle på.

Du kan videregive dine arguments værdier som denne:

curl --data "name=John&surname=Doe" //www.dataden.tech

Eller som en almindelig JSON:

curl --data '{"name":"John","surname":"Doe"}' \//www.dataden.tech

Brug af –data svarer til brug af -d, og begge vil ændre metoden til POST automatisk. Vi kan dog også bruge -X- flagget ( –anmodning ) til at specificere, hvilken metode vi vil påberåbe:

curl -X "POST" \-d "name=John&surname=Doe" //www.example.com

Henter sidens overskrifter

Nogle gange er vi bare nødt til hurtigt at se, om webstedet stadig er oppe uden virkelig at ville indlæse det samlede, potentielt tunge, svar. Andre gange gemmer overskrifterne vigtige konfigurationer.

Disse to anvendelsestilfælde behandles også med krøller. Vi kan bruge parameteren –include ( -i ) til at inkludere overskrifterne og –head ( -I -s hovedstad 'i'-) for kun at inkludere overskrifterne (kalder HEAD-metoden).

Indstilling af din brugeragentværdi

Nu hvor jeg har dækket det grundlæggende, lad mig gå igennem nogle af de sejeste ting, jeg har fundet, vi kan gøre med krølle.

Med brugeragentargumentet kan du angive, hvilken enheds- og browserversion du bruger, i tilfælde af at webstedet gengives anderledes.

Med dette kunne du se den mobile version af et websted fra din bærbare computer eller omvendt.

Fra et sikkerhedsmæssigt synspunkt rejser dette sandsynligvis nogle problemer. Jeg vidste ikke, hvor let det er at foregive at bruge en anden enhed (uden engang at bruge en virtuel maskine) indtil nu, og arbejde i bedrageriforebyggelse kan jeg se, hvorfor dette kan være et problem.

Med det sagt, så længe du bruger dette til godt, er dette en fantastisk måde at se, hvordan et websted ser ud fra en tablet, en mobilenhed eller en bærbar computer, for at nævne nogle få.

Her er et eksempel direkte fra den officielle dokumentation (selvom lister over brugeragenter er let tilgængelige online).

curl --user-agent "Mozilla/4.73 [en] (X11; U; Linux 2.2.15 i686)" www.example.com

Timing af en forbindelse med Curl

En anden grund til, at jeg begyndte at lære mere om krøller, var, at jeg ønskede at se, hvor lang tid det nøjagtigt tog for min hjemmeside at svare.

Selvom den grundlæggende dokumentation ikke dækker det, afslørede en smule googling denne kommando, som jeg har fundet meget nyttig:

curl -w "%{time_total}\n" -o /dev/null -s www.example.com

Dette udsender simpelthen den samlede tid, det tog at hente svaret fra det givne domæne.

Mere generelt tager argumentet -w (–write-out) en speciel formateringsstreng og udfylder reserverede nøgleord med forskellige egenskaber for svaret på en formateret måde. Alle nøgleord og deres respektive værdier er tilgængelige på kommandos man-side.

Yderligere læsning

Her er et par links, som du måske finder interessante, hvis du ønsker at lære mere om dette brede emne:

  • Liste over brugeragenter En samling af brugeragentargumenter for forskellige enheder og browsere.
  • Curls officielle dokumentation.
  • Curls mandag.

Til afslutning

Jeg håber, du har fundet denne introduktion nyttig, og du forlader denne tutorial ved i det mindste at kende det grundlæggende i denne praktiske kommando.

Som jeg sagde før, lærer jeg stadig også og vil sætte pris på andre interessante viden om programmets brug. Det samme gælder enhver feedback om, hvad jeg har skrevet indtil videre.

Hvis jeg har lavet fejl, eller der er nogen del, som du tror, ​​jeg kunne have formuleret mere tydeligt, så lad mig det vide.

Jeg håber, vi ses snart igen, glad kodning!

Følg mig på Medium og Twitter for at holde mig opdateret med mine tutorials, tips og artikler. Overvej at dele denne artikel med en ven til webudviklere, hvis du kunne lide det (eller som en passiv aggressiv måde at fortælle dem at lære krølle).

Oprindeligt offentliggjort på www.dataden.tech den 7. oktober 2018.