Kako početi koristiti Curl i zašto: praktični uvod

Bez obzira radi li se o testiranju rezultata API-ja prije nego što ga se implementira u produkciju, ili jednostavno dohvaćanju odgovora s web mjesta (na primjer, radi provjere da nije isključen), Curl je praktički sveprisutan.

Kao znanstvenik podataka morao sam ga koristiti s vremena na vrijeme. Međutim, češće sam završavao samo zamjenom parametara iz kopirane i zalijepljene naredbe curl koja je obilazila Slack kanal mog tima.

Odlučio sam da moram bolje razumjeti ovaj moćni alat ako ga želim iskoristiti u potpunosti, a sada sam ovdje da podijelim neke od najzanimljivijih stvari koje sam pronašao u ovom tutorijalu za curl.

Ako imate savjete ili trikove koje biste željeli dodati, učinite to u komentarima jer je moje razumijevanje ovog alata još uvijek u ranoj fazi.

Curl: Za što je to dobro?

Curl je alat naredbenog retka koji nam omogućuje da HTTP zahtjeve radimo iz ljuske. Obuhvaća i mnoge druge protokole, poput FTP-a, iako oni nadilaze opseg ovog vodiča.

Njegovo ime označava "URL klijenta", a razvio ga je švedski programer Daniel Stenberg. Riječ je o projektu otvorenog koda, a njegov kôd možete pronaći ovdje ako želite doprinijeti.

Možete ga pozvati sa svog omiljenog terminala, a obično dolazi predinstaliran u OS-ove zasnovane na Linuxu. Inače se normalno može preuzeti putem apt-get na Linuxu i pripremiti na Macu.

Pozivanje GET metode

U svom najosnovnijem obliku naredba curl izgledat će ovako:

curl //www.dataden.tech

Zadano ponašanje curl-a je pozivanje HTTP GET metode na danom URL-u. Na taj će način izlazni rezultat programa za tu naredbu biti cijelo tijelo HTTP odgovora (u ovom slučaju HTML) koji se stranica vraća na GET-u, koji će biti zapisan kao dani na stdout-u .

Ako želite pročitati odgovor bez napuštanja ljuske, preporučio bih ga barem uvođenjem u manje naredbu, kako biste mogli lako pomicati izlaz.

Puno puta ćemo htjeti sadržaj odgovora usmjeriti u datoteku. To se radi s argumentom -o , ovako:

curl -o output.html www.dataden.tech

što je ekvivalentno:

curl www.dataden.tech > output.html

Po želji možete navesti URL web mjesta na koje želite pozvati curl pomoću argumenta -s , poput ovog:

curl -s //www.dataden.tech

omogućujući vam da promijenite redoslijed svojih argumenata.

Također možete upotrijebiti –next za navođenje više URL-ova, iako službeni dokument savjetuje da umjesto toga pozivate curl na svakom URL-u u drugoj naredbi.

Izrada POST-a na URL-u

Ponekad ćete htjeti testirati radi li API ispravno, a obično će za to biti potrebno poslati argumente.

Obično to radimo metodom POST, prosljeđujući neki JSON sa svim traženim parametrima. Postoji mnogo načina kako to učiniti s uvijanjem.

Vrijednosti svojih argumenata možete proslijediti ovako:

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

Ili poput uobičajenog JSON-a:

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

Korištenje –data ekvivalentno je korištenju -d, a oboje će metodu automatski promijeniti u POST. Međutim, možemo upotrijebiti i zastavicu -X ( –request ) da odredimo koju metodu želimo pozvati:

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

Dohvaćanje zaglavlja web lokacije

Ponekad jednostavno trebamo brzo provjeriti radi li stranica i dalje, a da zapravo ne želimo učitati čitav, potencijalno težak odgovor. Drugi puta zaglavlja pohranjuju važne konfiguracije.

Ta se dva slučaja uporabe također bave curlom. Možemo upotrijebiti parametar –include ( -i ) za uključivanje zaglavlja, a –head ( -I -to je glavni grad 'i'-) da bismo uključili samo zaglavlja (pozivanje HEAD metode).

Postavljanje vrijednosti vašeg korisničkog agenta

Sad kad sam pokrio osnove, pustit ću vas da prođem kroz neke od najfinijih stvari koje sam mogao učiniti s uvijanjem.

User-agent argument omogućuje vam da odredite koji uređaj i verzija preglednika koji koristite, u slučaju da se čini stranica pružiti drugačije.

Uz to biste s prijenosnog računala mogli vidjeti mobilnu verziju web stranice ili obrnuto.

Sa sigurnosnog stajališta ovo vjerojatno otvara neka pitanja. Do sada nisam znao kako se lako pretvarati da koristim drugi uređaj (a da čak nisam ni koristio virtualni stroj), a radeći u prevenciji prijevara vidim zašto bi to mogao predstavljati problem.

Uz to, sve dok ovo koristite zauvijek, ovo je sjajan način da vidite kako web stranica izgleda s tableta, mobilnog uređaja ili prijenosnog računala, da nabrojimo samo neke.

Evo primjera, izravno iz službene dokumentacije (premda su popisi korisničkih agenata lako dostupni na mreži).

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

Vremensko povezivanje s Curlom

Još jedan razlog zbog kojeg sam počeo učiti više o uvijanju bio je taj što sam želio vidjeti koliko je točno vremena trebalo da moja web stranica odgovori.

Iako ga osnovna dokumentacija ne pokriva, malo je guglanja otkrilo ovu naredbu, koja mi se učini vrlo korisnom:

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

Ovo će jednostavno prikazati ukupno vrijeme potrebno za dohvaćanje odgovora s dane domene.

Općenitije, argument -w (–write-out) uzima poseban niz za oblikovanje i ispunjava rezervirane ključne riječi s različitim svojstvima odgovora, na formatirani način. Sve ključne riječi i njihove odgovarajuće vrijednosti dostupne su na man stranici stranice naredbe.

Daljnje čitanje

Evo nekoliko poveznica koje bi vam mogle biti zanimljive u slučaju da želite saznati više o ovoj širokoj temi:

  • Popis korisničkih agenata Kompilacija argumenata korisničkih agenata za različite uređaje i preglednike.
  • Curlova službena dokumentacija.
  • Curlova manpage.

Zaključiti

Nadam se da vam je ovaj uvod bio koristan i napuštate ovaj vodič poznavajući barem osnove ove prikladne naredbe.

Kao što sam već rekao, još uvijek učim i cijenit ću sva druga zanimljiva znanja o korištenju programa. Isto vrijedi i za bilo kakve povratne informacije o onome što sam do sada napisao.

Ako sam pogriješio ili mislite da postoji neki dio koji bih mogao jasnije sročiti, javite mi.

Nadam se da ćemo se uskoro opet vidjeti, sretno kodiranje!

Pratite me na Mediumu i Twitteru kako biste bili u toku s mojim vodičima, savjetima i člancima. Razmislite o dijeljenju ovog članka s prijateljem web programera ako vam se svidio (ili kao pasivno agresivan način da im kažete da nauče uvijati).

Izvorno objavljeno na www.dataden.tech 7. listopada 2018.