RkBlog

Hardware, programming and astronomy tutorials and reviews.

GeoIP

Geolokalizacja adresów IP za pomocą modułu GeoIP i bazy danych adresów IP maxmind. Za pomocą tego modułu można w prosty sposób dodać funkcjonalność geolokalizacji do aplikacji webowych

Maxmind dostarcza bibiliotekę GeoIP do geolokalizacji adresów IP dla wielu języków, w tym dla Pythona. GeoIP-Python to nakładka na bibliotekę napisaną w C - GeoIP. By zainstalować moduł Pythona musimy najpierw zainstalować/skompilować bibliotekę dla C, a dopiero po tym można skompilować moduł dla Pythona (dla Linuksa sprawdź swoje repozytoria). By móc geolokalizować adresy IP potrzebować będziemy także 25MB bazę - GeoLiteCity.dat dostępną z poziomu naszego skryptu.

Wykorzystanie GeoIP jest proste, oto skrypt

# -*- coding: utf-8 -*-
import GeoIP

# geolokalizacja adresu IP
gi = GeoIP.open('GeoLiteCity.dat', GeoIP.GEOIP_STANDARD)
geo = gi.record_by_addr('ADRES IP')
print geo
#miasto generalnie wymagać może zdekodowania:
#city = unicode(geo['city'], 'iso-8859-1')
A efekt np. taki:
{'city': 'Warsaw', 'region_name': 'Warszawa', 'region': '67', 'area_code': 0, 'time_zone': 'Europe/Warsaw', 'longitude': 21.0, 'metro_code': 0, 'country_code3': 'POL', 'latitude': 52.25, 'postal_code': None, 'dma_code': 0, 'country_code': 'PL', 'country_name': 'Poland'}
Gdzie numerację regionów znajdziemy na stronie maxmind, dla Polski:
PL,23,"Biala Podlaska"
PL,24,"Bialystok"
PL,25,"Bielsko"
PL,26,"Bydgoszcz"
PL,27,"Chelm"
PL,28,"Ciechanow"
PL,29,"Czestochowa"
PL,30,"Elblag"
PL,31,"Gdansk"
PL,32,"Gorzow"
PL,33,"Jelenia Gora"
PL,34,"Kalisz"
PL,35,"Katowice"
PL,36,"Kielce"
PL,37,"Konin"
PL,38,"Koszalin"
PL,39,"Krakow"
PL,40,"Krosno"
PL,41,"Legnica"
PL,42,"Leszno"
PL,43,"Lodz"
PL,44,"Lomza"
PL,45,"Lublin"
PL,46,"Nowy Sacz"
PL,47,"Olsztyn"
PL,48,"Opole"
PL,49,"Ostroleka"
PL,50,"Pila"
PL,51,"Piotrkow"
PL,52,"Plock"
PL,53,"Poznan"
PL,54,"Przemysl"
PL,55,"Radom"
PL,56,"Rzeszow"
PL,57,"Siedlce"
PL,58,"Sieradz"
PL,59,"Skierniewice"
PL,60,"Slupsk"
PL,61,"Suwalki"
PL,62,"Szczecin"
PL,63,"Tarnobrzeg"
PL,64,"Tarnow"
PL,65,"Torun"
PL,66,"Walbrzych"
PL,67,"Warszawa"
PL,68,"Wloclawek"
PL,69,"Wroclaw"
PL,70,"Zamosc"
PL,71,"Zielona Gora"
PL,72,"Dolnoslaskie"
PL,73,"Kujawsko-Pomorskie"
PL,74,"Lodzkie"
PL,75,"Lubelskie"
PL,76,"Lubuskie"
PL,77,"Malopolskie"
PL,78,"Mazowieckie"
PL,79,"Opolskie"
PL,80,"Podkarpackie"
PL,81,"Podlaskie"
PL,82,"Pomorskie"
PL,83,"Slaskie"
PL,84,"Swietokrzyskie"
PL,85,"Warminsko-Mazurskie"
PL,86,"Wielkopolskie"
PL,87,"Zachodniopomorskie"

RkBlog

25 July 2009;

Comment article