Belirli bir IP adresi hakkında coğrafi konum bilgisi edinmek için uygun API'yi sağlayan bazı çevrimiçi hizmetleri kullanmanız gerekir. Yetkilendirme prosedüründen ve API anahtar yönetiminden kaçınmak için bazı kamu hizmetlerinden yararlanmak iyi bir fikirdir. Böyle bir hizmet FreeGeoIP.net.
IP adreslerinin coğrafi konumunu aramak için genel bir HTTP API sağlar. Şehirlerle ilişkili IP adreslerinin yanı sıra saat dilimi, enlem ve boylam gibi diğer ilgili bilgilerin yer aldığı bir veritabanını kullanır. Bu çok kullanışlıdır.
Hizmet, arama sonuçlarını JSON veya XML olarak sağlayabilir. Yani curl'u bazı JSON ayrıştırıcılarıyla birleştirirsek gerekli bilgiyi alabiliriz.
Favori JSON ayrıştırıcım olan jq'yi kullanacağım:
Çok hafif ve hızlıdır.
Bizim durumumuzda sorgu şu şekilde olmalıdır:
|_+_|Buradaki 'json' kısmı istenen veri formatıdır. JSON'un yanı sıra XML veya CSV de olabilir.
Sorguyu curl ile çalıştıralım ve çıktıyı görelim:
Sonuç, okunması zor olan ham JSON çıktısıdır. Sonuç kümesinin görünümünü iyileştirmek için jq aracını kullanalım. Aşağıdaki gibi curl ile birleştirin:
|_+_|Çıktının okunması daha kolay olacaktır:
jq'yi kullanarak çıktıyı filtreleyebilir ve yalnızca gerekli alanları göstermesini sağlayabilirsiniz. Aşağıdaki komut yalnızca ülke adını, enlem ve boylamı gösterecektir:
|_+_|Bu komutu aşağıdaki kabuk betiği olarak kaydedebilirsiniz:
|_+_|Bir dahaki sefere coğrafi konum bilgisi almanız gerektiğinde, komut dosyanızı şu şekilde çalıştırabilirsiniz:
|_+_|Bu kadar.