Aby uzyskać informacje o lokalizacji geograficznej konkretnego adresu IP, należy skorzystać z usługi online, która udostępnia odpowiednie API. Warto skorzystać z jakiejś usługi publicznej, aby uniknąć procedury autoryzacyjnej i zarządzania kluczami API. Jedną z takich usług jest FreeGeoIP.net.
Zapewnia publiczny interfejs API HTTP do wyszukiwania geolokalizacji adresów IP. Korzysta z bazy danych adresów IP powiązanych z miastami wraz z innymi istotnymi informacjami, takimi jak strefa czasowa, szerokość i długość geograficzna. Jest to bardzo przydatne.
Usługa może udostępniać wyniki wyszukiwania w formacie JSON lub XML. Jeśli więc połączymy curl z jakimś parserem JSON, możemy uzyskać wymagane informacje.
Użyję mojego ulubionego parsera JSON, jq:
Jest bardzo lekki i szybki.
W naszym przypadku zapytanie powinno wyglądać następująco:
|_+_|Część „json” to żądany format danych. Oprócz JSON może to być XML lub CSV.
Uruchommy zapytanie za pomocą curl i zobaczmy wynik:
Rezultatem są surowe dane wyjściowe JSON, które są trudne do odczytania. Aby poprawić wygląd zestawu wyników, użyjmy narzędzia jq. Połącz to z lokami w następujący sposób:
|_+_|Dane wyjściowe będą łatwiejsze do odczytania:
Za pomocą jq możesz filtrować dane wyjściowe i wyświetlać tylko wymagane pola. Poniższe polecenie wyświetli tylko nazwę kraju, szerokość i długość geograficzną:
|_+_|Możesz zapisać to polecenie jako następujący skrypt powłoki:
|_+_|Następnym razem, gdy będziesz potrzebować informacji o geolokalizacji, możesz uruchomić skrypt w następujący sposób:
|_+_|Otóż to.