Friday, October 21, 2016

GeoIP

GeoIP adalah singkatan dari Geolocation IP Adress. Sesuai dengan namanya, GeoIP merupakan suatu metode untuk mengetahui lokasi geografis suatu komputer berdasarkan ip address. Biasanya ip address yang terdaftar pada database dan dapat dilacak adalah ip publik baik ipv4 ataupun ipv6.

GeoIP biasanya digunakan pada sebuah situs untuk mengetahui darimana pengunjung web berasal(traffic analysis). GeoIP ini juga sangat membantu ketika ada orang yang iseng kepada web kita, dan kita ingin melacak darimana ip tersebut berasal.

Lalu bagaimana kita menggunakan/meng-aplikasikan GeoIP ke dalam source code kita?, untungnya maxmind yang menyediakan GeoIP ini menyediakan api client untuk beberapa beberapa bahasa pemrogram seperti :
  • .NET(C#)
  • Java
  • Javascript
  • Perl
  • PHP
  • Python
untuk bahasa pemrograman lain bisa langsung mengakses REST API maxmind sendiri yang hasilnya tentu saja dalam bentuk json. Untuk lebih jelasnya silahkan lihat disini maxmind documentation. Maxmind juga menyediakan user premium alias berbayar untuk fitur yang lebih banyak seperti deteksi anonymous ip, connection type, domain, isp dll.

Pada artikel ini, saya hanya akan memperlihatkan bagaimana menggunakan api client GeoIP ini dengan bahasa Python dan menggunakan internet modem usb dengan kartu 3. Berikut langkah – langkah nya :

  • download geolite free database dari link berikut ini (yang city dengan format Maxmind DB) : http://dev.maxmind.com/geoip/geoip2/geolite2/
  • install api client untuk python : pip install geoip2 (saya menggunakan python3)
  • setelah langkan pertama dan kedua selesai, anda bisa mencoba menggunakan script code python berikut ini :

import geoip2.database

# read mmdb database
reader = geoip2.database.Reader('GeoLite2-City.mmdb')

# assign ip address, example 124.153.33.3
ipAddress = '124.153.33.3'
response = reader.city(ipAddress)

print("IP : "+ipAddress)

# get country name
print("Country : "+response.country.name)

# get city name
print("City : "+response.city.name)

# get Lat and Long
print("Lat : "+str(response.location.latitude))
print("Long : "+str(response.location.longitude))

Ini adalah hasil dari program di atas


Mari kita cari dengan google map berdasarkan latitude dan longitude nya


Hasilnya seperti di atas, mengarah ke kota Bandung dan dekat dengan gedung sate. lalu, apakah itu lokasi komputer saya yang terhubung dengan internet?. Tentu saja bukan, kira" berajarak 3KM dari lokasi asli saya. Sebenarnya ini tergantung anda menggunakan ISP apa, disini saya menggunakan kartu "tri" dimana beberapa provider internet seperti tri contohnya, hanya memberikan ip private kepada client yang kemudian untuk ter koneksi dengan internet akan melalui router yang sudah dikonfigurasi NAT. Jadi ip address di atas yang berlokasi di Bandung dan dekat gedung sate tersebut adalah ip router dari provider tri yang saya gunakan untuk terhubung dengan internet.

untuk lebih jelasnya mengenai api client geoip khususnya yang menggunakan bahasa python, bisa mengujungi situs berikut ini : http://geoip2.readthedocs.io/en/latest/

sekian artikel kali ini, mohon maaf apabila ada kesalahan dari materi yang saya sampaikan. terima kasih sudah membaca.

referensi :
http://geoip2.readthedocs.io/en/latest/
https://docs.nexcess.net/article/what-is-geoip.html