Untuk mendapatkan maklumat lokasi geo tentang alamat IP tertentu, anda perlu menggunakan beberapa perkhidmatan dalam talian yang menyediakan API yang sesuai. Adalah idea yang baik untuk menggunakan beberapa perkhidmatan awam untuk mengelakkan prosedur kebenaran dan pengurusan kunci API. Salah satu perkhidmatan tersebut ialah FreeGeoIP.net.
Ia menyediakan API HTTP awam untuk mencari geolokasi alamat IP. Ia menggunakan pangkalan data alamat IP yang dikaitkan dengan bandar bersama-sama dengan maklumat lain yang berkaitan seperti zon waktu, latitud dan longitud. Ini sangat berguna.
Perkhidmatan ini boleh menyediakan hasil carian sebagai JSON atau XML. Jadi, jika kita menggabungkan curl dengan beberapa penghurai JSON, kita boleh mendapatkan maklumat yang diperlukan.
Saya akan menggunakan parser JSON kegemaran saya, jq:
Ia sangat ringan dan pantas.
Untuk kes kami, pertanyaan hendaklah seperti berikut:
|_+_|Bahagian 'json' di sini ialah format data yang dikehendaki. Selain JSON, ia boleh menjadi XML atau CSV.
Mari jalankan pertanyaan dengan curl dan lihat output:
Hasilnya ialah output JSON mentah yang sukar dibaca. Untuk menambah baik penampilan set hasil, mari gunakan alat jq. Gabungkannya dengan curl seperti berikut:
|_+_|Output akan lebih mudah dibaca:
Menggunakan jq, anda boleh menapis output dan menjadikannya hanya menunjukkan medan yang diperlukan. Perintah berikut akan memaparkan hanya nama negara, latitud dan longitud:
|_+_|Anda boleh menyimpan arahan ini sebagai skrip shell berikut:
|_+_|Kali seterusnya anda perlu mendapatkan maklumat geolokasi, anda boleh melaksanakan skrip anda seperti ini:
|_+_|Itu sahaja.