Geolocation API für IP-Adressen

Heute habe ich eine Möglichkeit gesucht, aus einer IP-Adresse eine möglichst genaue Ortsangabe zu bekommen. Da ich diese Funktionalität nur selten benötige, wollte ich keine Datenbank auf meinem Server installieren, welche mir dies bereitstellen könnte. Aus diesem Grund habe ich mich nach API’s umgesehen, welche dies für mich erledigen können.

Werbung


Es gibt mehrere Möglichkeiten in diesem Sektor. Das häufig beworbene Sourceforge-Projekt MaxWind GeoIP gefiel mir prinzipiell nicht schlecht, erforderte aber entweder die Installation der IP-Daten auf einem Server oder konnte nur wenige kostenlose Anfragen pro Tag verarbeiten.

Eine weitere Wahl war HostIP, welche mir leider für meine momentane IP schon keine Daten liefern konnten. Mehr oder minder also nicht brauchbar.

Ich habe mich letztendlich für IPInfoDB entschieden, da diese eine einfache und relativ genaue API im XML oder JSON-Format bereitstellen konnten.

Ein schnelles Beispiel in curl und PHP zur Lokalisierung der IP mittels des Städtenamens:

function locateCityByIp($ip){
	$ch = curl_init();
	curl_setopt($ch, CURLOPT_URL, 'http://ipinfodb.com/ip_query.php?ip=' . $ip . "&output=xml");
	curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 4);
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
	$ipdata = simplexml_load_string(curl_exec($ch));
	if(!empty($ipdata->City)) {
		return $ipdata->City;
	} else {
		return '';
	}
}

Veröffentlicht von

Uli

IT-Nerd und Admin

2 Gedanken zu „Geolocation API für IP-Adressen“

  1. Ich verwende für einige Projekte ebenfalls IpInfoDB-Daten. In den meisten Fällen importiere ich die CSV-Daten aber in eine eigenen Datenbank und lade diese zur Laufzeit. Damit habe ich einen recht schnellen Zugriff auf die Daten.
    Da ich meistens Java zur Implementierung meine Projekte verwenden verwende ich größtenteils die freie embedded HSQLDB zur Datenhaltung und habe so nicht mal Verlust der beim ansprechen eines Servers entsteht.

    Tolle Beitrag zu einem tollen kostenlosen Service.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.