Για να λάβετε τις πληροφορίες γεωγραφικής τοποθεσίας σχετικά με μια συγκεκριμένη διεύθυνση IP, πρέπει να χρησιμοποιήσετε κάποια ηλεκτρονική υπηρεσία που παρέχει το κατάλληλο API. Είναι καλή ιδέα να χρησιμοποιήσετε κάποια δημόσια υπηρεσία για να αποφύγετε τη διαδικασία εξουσιοδότησης και τη διαχείριση κλειδιού API. Μια τέτοια υπηρεσία είναι FreeGeoIP.net.
Παρέχει ένα δημόσιο API HTTP για αναζήτηση της γεωγραφικής θέσης των διευθύνσεων IP. Χρησιμοποιεί μια βάση δεδομένων διευθύνσεων IP που σχετίζονται με πόλεις μαζί με άλλες σχετικές πληροφορίες όπως ζώνη ώρας, γεωγραφικό πλάτος και γεωγραφικό μήκος. Αυτό είναι πολύ χρήσιμο.
Η υπηρεσία μπορεί να παρέχει αποτελέσματα αναζήτησης ως JSON ή XML. Έτσι, αν συνδυάσουμε το curl με κάποιο αναλυτή JSON, μπορούμε να λάβουμε τις απαιτούμενες πληροφορίες.
Θα χρησιμοποιήσω τον αγαπημένο μου αναλυτή JSON, jq:
Είναι πολύ ελαφρύ και γρήγορο.
Για την περίπτωσή μας, το ερώτημα θα πρέπει να είναι το εξής:
|_+_|Το τμήμα 'json' εδώ είναι η επιθυμητή μορφή δεδομένων. Εκτός από JSON, μπορεί να είναι XML ή CSV.
Ας εκτελέσουμε το ερώτημα με curl και ας δούμε την έξοδο:
Το αποτέλεσμα είναι ακατέργαστη έξοδος JSON που είναι δύσκολο να διαβαστεί. Για να βελτιώσουμε την εμφάνιση του συνόλου αποτελεσμάτων, ας χρησιμοποιήσουμε το εργαλείο jq. Συνδυάστε το με μπούκλα ως εξής:
|_+_|Η έξοδος θα είναι πιο ευανάγνωστη:
Χρησιμοποιώντας το jq, μπορείτε να φιλτράρετε την έξοδο και να την κάνετε να εμφανίζει μόνο τα απαιτούμενα πεδία. Η ακόλουθη εντολή θα εμφανίσει μόνο το όνομα της χώρας, το γεωγραφικό πλάτος και το γεωγραφικό μήκος:
|_+_|Μπορείτε να αποθηκεύσετε αυτήν την εντολή ως το ακόλουθο σενάριο φλοιού:
|_+_|Την επόμενη φορά που θα χρειαστεί να λάβετε πληροφορίες γεωγραφικής θέσης, μπορείτε να εκτελέσετε το σενάριό σας ως εξής:
|_+_|Αυτό είναι.