Πώς να ξεκινήσετε να χρησιμοποιείτε το Curl και γιατί: μια πρακτική εισαγωγή

Είτε δοκιμάζει την έξοδο ενός API προτού το αναπτύξει στην παραγωγή είτε απλώς παίρνει μια απάντηση από έναν ιστότοπο (για παράδειγμα, για να ελέγξει ότι δεν είναι εκτός λειτουργίας), το Curl είναι σχεδόν πανταχού παρόν.

Ως Επιστήμονας Δεδομένων έπρεπε να το χρησιμοποιώ κατά καιρούς. Ωστόσο, τις περισσότερες φορές, κατέληξα απλώς να αντικαταστήσω παραμέτρους από μια αντιγραμμένη και επικολλημένη εντολή curl που πήγε γύρω από το κανάλι Slack της ομάδας μου.

Αποφάσισα ότι έπρεπε να καταλάβω αυτό το ισχυρό εργαλείο καλύτερα αν ήθελα να το χρησιμοποιήσω στο μέγιστο των δυνατοτήτων του και τώρα είμαι εδώ για να μοιραστώ μερικά από τα πιο ενδιαφέροντα πράγματα που βρήκα σε αυτό το σεμινάριο curl.

Εάν έχετε οποιεσδήποτε συμβουλές ή κόλπα που θέλετε να προσθέσετε, κάντε τα στα σχόλια, καθώς η κατανόησή μου για αυτό το εργαλείο βρίσκεται ακόμη στα αρχικά της στάδια.

Curl: Σε τι χρησιμεύει;

Το Curl είναι ένα εργαλείο γραμμής εντολών που μας επιτρέπει να κάνουμε αιτήματα HTTP από το κέλυφος. Καλύπτει επίσης πολλά άλλα πρωτόκολλα, όπως το FTP, αν και υπερβαίνουν το πεδίο αυτού του σεμιναρίου.

Το όνομά του σημαίνει "Client URL" και αναπτύχθηκε από τον Σουηδό προγραμματιστή Daniel Stenberg. Πρόκειται για ένα έργο ανοιχτού κώδικα και ο κωδικός του μπορεί να βρεθεί εδώ, σε περίπτωση που θέλετε να συνεισφέρετε.

Μπορείτε να το καλέσετε από το αγαπημένο σας τερματικό και συνήθως έρχεται προεγκατεστημένο σε λειτουργικά συστήματα που βασίζονται σε Linux. Διαφορετικά, μπορεί κανονικά να ληφθεί μέσω apt-get σε Linux και να παρασκευαστεί σε Mac.

Κλήση μιας μεθόδου GET

Στην πιο βασική του μορφή, μια εντολή curl θα έχει την εξής μορφή:

curl //www.dataden.tech

Η προεπιλεγμένη συμπεριφορά για μπούκλα είναι η επίκληση μιας μεθόδου HTTP GET στη δεδομένη διεύθυνση URL. Με αυτόν τον τρόπο, η έξοδος του προγράμματος για αυτήν την εντολή θα είναι ολόκληρο το σώμα της απόκρισης HTTP (σε αυτήν την περίπτωση, HTML) ο ιστότοπος επιστρέφει σε ένα GET, το οποίο θα γραφτεί όπως δίνεται στο stdout .

Εάν θέλετε να διαβάσετε μια απάντηση χωρίς να αφήσετε το κέλυφος, θα συνιστούσα τουλάχιστον να το διοχετεύσετε σε μια λιγότερο εντολή, ώστε να μπορείτε να μετακινηθείτε εύκολα στην έξοδο.

Πολλές φορές θα θέλαμε να κατευθύνουμε τα περιεχόμενα της απόκρισης σε ένα αρχείο. Αυτό γίνεται με το όρισμα -o , ως εξής:

curl -o output.html www.dataden.tech

που ισοδυναμεί με:

curl www.dataden.tech > output.html

Προαιρετικά, μπορείτε να καθορίσετε τη διεύθυνση URL του ιστότοπου στον οποίο θέλετε να καλέσετε την καμπύλη με ένα όρισμα -s , όπως αυτό:

curl -s //www.dataden.tech

επιτρέποντάς σας να αλλάξετε τη σειρά των επιχειρημάτων σας.

Μπορείτε επίσης να χρησιμοποιήσετε το –επόμενο για να καθορίσετε περισσότερες από μία διευθύνσεις URL, αν και το επίσημο έγγραφο συμβουλεύει να καλέσει το curl σε κάθε URL με διαφορετική εντολή.

Κάνοντας ένα POST σε μια διεύθυνση URL

Μερικές φορές θα θελήσετε να ελέγξετε εάν ένα API λειτουργεί σωστά και συνήθως αυτό απαιτεί την αποστολή ορισμάτων σε αυτό.

Συνήθως θα το κάνουμε μέσω της μεθόδου POST, περνώντας κάποιο JSON με όλες τις απαιτούμενες παραμέτρους. Υπάρχουν πολλοί τρόποι για να το κάνετε αυτό με μπούκλα.

Μπορείτε να μεταβιβάσετε τις τιμές των επιχειρημάτων σας ως εξής:

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

Ή σαν ένα κανονικό JSON:

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

Η χρήση –δεδομένων ισοδυναμεί με τη χρήση -d και και οι δύο θα κάνουν τη μέθοδο να αλλάξει αυτόματα στο POST. Ωστόσο, μπορούμε επίσης να χρησιμοποιήσουμε τη σημαία -X ( –request ) για να καθορίσουμε ποια μέθοδο θέλουμε να επικαλεστούμε:

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

Ανάκτηση των κεφαλίδων του ιστότοπου

Μερικές φορές πρέπει απλώς να δούμε γρήγορα αν ο ιστότοπος είναι ακόμα αναρτημένος, χωρίς πραγματικά να θέλουμε να φορτώσουμε ολόκληρη, ενδεχομένως βαριά, την απόκριση. Άλλες φορές, οι κεφαλίδες αποθηκεύουν σημαντικές διαμορφώσεις.

Αυτές οι δύο περιπτώσεις χρήσης αντιμετωπίζονται επίσης με μπούκλα. Μπορούμε να χρησιμοποιήσουμε το -να συμπεριλάβουν ( -i παράμετρος) ώστε να συμπεριλάβει τις κεφαλίδες και -Head ( -δηλαδή του κεφαλαίου «i'-) ώστε να περιλαμβάνει μόνο τις επικεφαλίδες (καλώντας τη μέθοδο HEAD).

Ορισμός της τιμής του παράγοντα χρήστη

Τώρα που έχω καλύψει τα βασικά, επιτρέψτε μου να σας καθοδηγήσω μερικά από τα πιο ωραία πράγματα που βρήκα ότι μπορούμε να κάνουμε με μπούκλα.

Το επιχείρημα παράγοντα χρήστη σάς επιτρέπει να καθορίσετε ποιες εκδόσεις συσκευής και προγράμματος περιήγησης χρησιμοποιείτε, σε περίπτωση που ο ιστότοπος αποδίδει διαφορετικά.

Με αυτό, θα μπορούσατε να δείτε την έκδοση για κινητά ενός ιστότοπου από τον φορητό υπολογιστή σας ή το αντίστροφο.

Από άποψη ασφάλειας, αυτό θέτει πιθανώς ορισμένα ζητήματα. Δεν ήξερα πόσο εύκολο είναι να προσποιούμαι ότι χρησιμοποιούσα μια διαφορετική συσκευή (χωρίς καν να χρησιμοποιήσω μια εικονική μηχανή) μέχρι τώρα, και δουλεύοντας στην Πρόληψη της απάτης μπορώ να καταλάβω γιατί αυτό θα μπορούσε να είναι πρόβλημα.

Τούτου λεχθέντος, αρκεί να το χρησιμοποιείτε για πάντα, αυτός είναι ένας φοβερός τρόπος να δείτε πώς μοιάζει ένας ιστότοπος από tablet, κινητή συσκευή ή φορητό υπολογιστή, για να αναφέρουμε μερικά.

Ακολουθεί ένα παράδειγμα, απευθείας από την επίσημη τεκμηρίωση (αν και οι λίστες των πρακτόρων χρηστών είναι άμεσα διαθέσιμες στο διαδίκτυο).

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

Χρονισμός σύνδεσης με Curl

Ένας άλλος λόγος που άρχισα να μαθαίνω περισσότερα για το curl ήταν ότι ήθελα να δω πόσο καιρό ακριβώς χρειάστηκε για να ανταποκριθεί ο ιστότοπός μου.

Αν και η βασική τεκμηρίωση δεν την καλύπτει, λίγο googling αποκάλυψε αυτήν την εντολή, την οποία βρήκα πολύ χρήσιμη:

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

Αυτό θα δώσει απλώς το συνολικό χρόνο που χρειάστηκε για να πάρει την απάντηση από τον δεδομένο τομέα.

Γενικότερα, το όρισμα -w (–write-out) παίρνει μια ειδική συμβολοσειρά μορφοποίησης και συμπληρώνει δεσμευμένες λέξεις-κλειδιά με διαφορετικές ιδιότητες της απόκρισης, με μορφοποιημένο τρόπο. Όλες οι λέξεις-κλειδιά, και οι αντίστοιχες τιμές τους, είναι διαθέσιμες στην αρχική σελίδα της εντολής.

Περαιτέρω ανάγνωση

Ακολουθούν μερικοί σύνδεσμοι που μπορεί να σας ενδιαφέρουν, σε περίπτωση που θέλετε να μάθετε περισσότερα σχετικά με αυτό το ευρύ θέμα:

  • Λίστα User-Agents Συγκέντρωση επιχειρημάτων παράγοντα χρήστη για διαφορετικές συσκευές και προγράμματα περιήγησης.
  • Η επίσημη τεκμηρίωση του Curl.
  • Η διεύθυνση του Curl.

Να συμπεράνω

Ελπίζω ότι βρήκατε αυτή την εισαγωγή χρήσιμη και αφήνετε αυτό το σεμινάριο γνωρίζοντας τουλάχιστον τα βασικά αυτής της βολικής εντολής.

Όπως είπα και πριν, μαθαίνω επίσης, και θα εκτιμήσω οποιαδήποτε άλλα ενδιαφέροντα κομμάτια γνώσεων σχετικά με τη χρήση του προγράμματος. Το ίδιο ισχύει για τυχόν σχόλια σχετικά με όσα έχω γράψει μέχρι στιγμής.

Εάν έχω κάνει λάθη ή υπάρχει κάποιο μέρος που νομίζετε ότι θα μπορούσα να είχα διατυπώσει πιο ξεκάθαρα, ενημερώστε με.

Ελπίζω να σας ξαναδώ σύντομα, χαρούμενη κωδικοποίηση!

Ακολουθήστε με στο Medium και το Twitter για να ενημερώνεστε για τα σεμινάρια, τις συμβουλές και τα άρθρα μου. Εξετάστε το ενδεχόμενο να μοιραστείτε αυτό το άρθρο με έναν φίλο προγραμματιστή ιστού εάν σας άρεσε (ή ως έναν παθητικό επιθετικό τρόπο να τους πείτε να μάθουν μπούκλα).

Αρχικά δημοσιεύθηκε στο www.dataden.tech στις 7 Οκτωβρίου 2018.