Ich weiß, wo du wohnst – IP-GeoLocation

Werbung

Dieser Beitrag nimmt am Dr. Web Autorenwettbewerb teil. Sie helfen dem Autor durch Ihr Feedback und Ihre Kritik in Form eines Kommentars. Diese fließen ebenso wie der erzielte Traffic und eventuelle Verlinkungen in die Entscheidung über die zu gewinnenden Preise ein.

von Christian Harms

Wer kennt nicht den Menüpunkt einer Webseite “Anfahrt” oder “Wie erreichen Sie uns” bei Hotels, Firmen und Urlaubszielen? Früher gab es lizenzrechtlich bedenkliche Scans von Stadtplänen oder den obligatorischen Link auf den Web.de Routenplaner. Oder, schon ein bisschen pratischer: eine kleine, interaktive Karte mit einer einfachen Standortabfrage zur Routenberechnung (dank google maps). Doch all diese Varianten lösen nicht das Versprechen, mir ohne Adresseingabe von meinem Wohnort eine Anfahrtsbeschreibung zu liefern. Hier die Lösung, wie eine statische Webseite eine Route von meinem aktuellen Standort zum Beispiel nach Leonberg anzeigt.

Die Einzelheiten der technischen Lösungen sind eigentlich schon länger bekannt. Zuerst muß die Position des Webseitenbesuchers ermittelt werden. Was auf einem iPhone logischerweise funktioniert, geht (ungenauer) im Browser eines normalen Büro-PCs auf. Durch die Zuordnung der IP-Adresse mit umfangreichen whois-Datenbanken und deren Geokoodinaten kann man den Aufrufer ungefähr einem Ort in der Welt zuordnen. Dazu gibt es einige kostenlose IP-Geo-Provider wie hostip.info, ipinfodb.com, maxmind.com oder google mit der ajax api. Ich habe diese parallel abgefragt, die Positionen ausgewertet und deutliche Unterschiede in der IP-Abdeckung wie bei den ermittelten Koordinaten festgestellt. Gut für mich, denn, wenn mehre Ergebnisse vorliegen, kann aus den Positionen ein noch genauerer Mittelwelt wie eine bessere Ausfallsicherheit gewährleistet werden. Einziger Nachteil: Die Aufrufzeit verlängert sich etwas.

Geo-Provider | % Koord/Aufruf | % Stadt/Aufruf | Abstand zum Mittelwert
-------------+----------------+----------------+-----------------------
google API   | 49             | 0              |  268 km
WIPmania.com | 36             | 0              | 1051 km
IPInfoDB.com | 97             | 93             |  152 km
HostIP.info  | 35             | 35             |  380 km
maxmind.com  | 83             | 83             |  112 km
Ermittelt durch 500 Besucher (weltweit), WIPmania aktuell rausgenommen

Ok, die Position des Besuchers wurde ermittelt, jetzt wird eine Karte dazu dynamisch angezeigt. Eine schnelle Lösung kann mit Hilfe der static google map api gelingen. Mit einem einfachen Image-Tag (und einer Handvoll URL-Parameter) kann aus der ermittelten Position und dem Zielort eine Karte mit den Standorten generiert werden.

Syntax: {lat},
{long},{color}|{lat},{long},{color}

Democode zum Einbinden:

<iframe src=”http://pyunitedcoders.appspot.com/?to=Leonberg,Germany&lat=48.79546&long=9.01049#points” width=”550″ height=”420″>

Falls der Ort (also Stadtname) ermittelt wurde, kann man auch einen dynamischen Link auf die google-maps-Suche mit den passenden Suchparameter verlinken:

<a href="http://maps.google.de/maps?saddr=[Webseitenbesucher-Stadt]
&daddr=[statischer Ort]">Hier zur Anfahrtsbeschreibung</a>

Doch die richtige Lösung wäre eine Karte mit direkter Routendarstellung. Dazu wird ein bisschen JavaScript-Code notwendig, als Voraussetzung nutze ich (m)eine fertige JavaScript-Lösung für die Positionsermittelung. Nach Einbinden der JavaScript-Resource steht ein globales Objekt mit den Positionen und Städtenamen zur Verfügung:

<script type="text/javascript" src="http://pyunitedcoders.appspot.com/geo_data.js"></script>
<script type="text/javascript">
//Mittelwert aller ermittelten Positionen
var pos = com.unitedCoders.geo.getPosition();
alert("Deine Position ist +" + pos.lat+", "+ pos.long);
//bestes Ergebnis finden, welches einen Stadtnamen enthält
var loc = com.unitedCoders.geo.getLocation();
alert("Du bist nahe der Stadt "+loc.city);
</script>

Zweiter Schritt ist die Anzeige der “google map”. Dafür wird eine zweite JavaScript-Resource nötig, welche zusätzlich noch beim Aufruf einen Parameter mit einem eigenen google-api-key (abhängig von der aufrufenden Domain) fordert. Im folgenden Beispiel wird die Position beziehungsweise der Ort als Quelladresse genutzt, um eine Route zu einem festen Ziel (Variable toAddress) darzustellen. Zum Einbinden in eine HTML-Seite wird dann nur jeweils ein div-Element mit der id “map” beziehungsweise ”directions” erwartet, welche für die Karte oder die Wegbeschreibung reserviert ist.

<script src="http://maps.google.com/maps?file=api&v=2&key={{google api key}}" type="text/javascript"></script>
<script type="text/javascript">
window.onload = function() {

if (GBrowserIsCompatible()) {
var map = new GMap2(document.getElementById("map"));
var gdir = new GDirections(map, document.getElementById("directions"));

var toAddress = "Leonberg, Germany";
var fromAddress = "@"+com.unitedCoders.geo.getLat()+","+com.unitedCoders.geo.getLong();
var loc = com.unitedCoders.geo.getLocation();
if (loc) { fromAddress = loc.city + "," + loc.country; }
var query = "from: " + fromAddress + " to: " + toAddress;
gdir.load(query, { "locale": "de_DE" });
}
}
};
</script>

(sl), ™

Für den Wettbewerb können keine Beiträge mehr eingereicht werden, über Autoren freuen wir uns trotzdem. In dem Fall: bitte hier entlang.

Weitere Beiträge:

, ,

28 Kommentare zu Ich weiß, wo du wohnst – IP-GeoLocation

  1. Bernhard 14. Dezember 2009 at 09:29 #

    Inhaltlich ist es der erste Artikel des Wettbewerbs, der mich anspricht. Er hat aber eine ganze Menge Schreibfehler.

  2. Björn 14. Dezember 2009 at 09:34 #

    Im Moment frage ich mich mehr, wie der Benutzer wohl reagiert wenn ich ihm seinen aktuelle Standort mitteile (auch wenn ungenau).

    Für mich wäre das höchst befremdlich, zumal keine Rückfrage wie beim iPhone/Firefox (ja der kann navigator.geolocation) erfolgt ob ich denn damit einverstanden bin.

    Hier sollte vielleicht etwas nachgebessert werden (zählt man schon zu Datenschutz, oder?). Ich finde es Datenschutzrechtlich zumindest nicht unbedenklich.

    Solange es aber noch ungenau ist (hat bei mir um ca. 70km daneben gelegen) ist es einfach nix für die Praxis.

  3. Helen 14. Dezember 2009 at 10:17 #

    Bernhard: Ich sehe im Text keine Schreibfehler. Die Zusammensetzungen sind sogar korrekt durchgekoppelt, was bei Artikeln dieser Art ja kaum vorkommt.

    Björn: Hier wird die ohnehin bekannte Information ja nur dem Besucher angezeigt, was von allen Adressaten noch der beste ist. Schlimmer wäre, wenn Du Google Analytics verwendest und dadurch Google Informationen über die Besucher Deiner Seite ablieferst und – auch schlimm – Google realtime darüber informierst, wie gut Deine Seite besucht ist und welche geografische Ausbreitung sie hat. Wenn man keine so beliebte Seite wie diese betreibt, kann das ins Auge gehen. Als Gegenleistung erhältst Du von Google eine Statistik aller Besucher, die JS von GA erlauben, minus zahlreichen anderen, wo GA auch nicht funktioniert (z.B. einige Länder und alle AOL-Kunden).

  4. Mudder 14. Dezember 2009 at 10:58 #

    Naja für eine Wegbeschreibung lohnt sich das “IP-Targeting” nicht bzw. es ist nicht korrekt genug. Wenn dann sucht man meistens nach einer Firma in der Nähe “Restaurant”.

    Da sind die ungefähren Angaben mit Radius von über 100km einfach unbrauchbar. Das funktioniert vielleicht wenn man nun 500km weit zu einer Messe will und dann quasi die letzten 10km von der Autobahn zum Gelände finden möchte. Doch sonst halte ich diese Methode für sinnlos und grade wo Thema Datenschutz so groß in den Medien ist werden sich viele unerfahrene User fragen: Woher weiß der das ich hier wohne?

  5. Mkuh 14. Dezember 2009 at 11:47 #

    mich würd da noch inertisieren
    wie legal das ganze in Intranet ist

  6. domingos 14. Dezember 2009 at 12:21 #

    Von der Idee her nicht schlecht, vor allem, wenn man tatsächlich unterwegs mit einem webfähigen Handy ist. Für den PC-Anwender aber eher uninteressant und beängstigend, wenn er merkt, dass die Website des Anderen “weiß”, wo man ist.

  7. Chris 14. Dezember 2009 at 13:07 #

    Zitat: “Zuerst muß die Position des Webseitenbesuchers ermittelt werden. Was auf einem iPhone logischerweise funktioniert”

    Das ist AFAIK gequirlter Unsinn. Bitte um Quellenangabe.

  8. Christian Harms 14. Dezember 2009 at 13:41 #

    Danke für die ersten Kommentare. Datenschutzrechtlich relevant ist die Speicherung persönlicher Daten, nicht die Erkenntnis, woher man kommt. Eine interaktive Karte mit fertiger Route (http://bit.ly/8itwLR) wird nur im Browser angezeigt.

    @domingos/@björn: Webbasierte Handies nutzen aber die eigene Technik, um die Position per Wlan/GPS viel genauer zu bestimmen. Da ist die IP-Lokation eher noch ungenauer.

    Btw. funktionieren genau so lokalisierte Sex/Dating-Werbung oder die Länderüberprüfung bei Registrierungen.

    Gruß, Christian.

  9. anonym 14. Dezember 2009 at 14:26 #

    Datenschutz?
    Faulheit oder warum braucht man eine solche Lösung?
    Mir würde es ebenfalls Angst machen… und was ist mit Javascript deaktiviert, Proxy… und 70kM daneben, was bringts also? Nette Idee, aber für die Praxis FAIL

  10. ComSys 14. Dezember 2009 at 15:03 #

    Die Sache ist eine nette Spielerei, mehr leider nicht. Dabei ist der Datenschutz nicht einmal wichtig, da du Daten aufgreifst, die eh 90% aller User hergeben würde.
    Da der Einwahlpunkt nicht bestimmt werden kann, kannst du damit nichts anfangen, ausser du bestimmst zuvor durch Abfrage/Eingabe den genauen Standort.

  11. Jan 14. Dezember 2009 at 15:52 #

    Ein wirklich guter Artikel, denn ich würde als Betreiber gerne schon Standorte offerieren, die eine gewisse Nähe aufweisen. Habe ich also einen Nutzer lokalisiert und den Ort in meiner Standort-Datenbank, so kann ich bereits einen Standort vorstellen. Das ist praktisch!
    Und der Nutzer merkt nur bei einem Volltreffer die Lokalisation, anderweitig nimmt er nur den Standort als solchen wahr.

  12. Christian Harms 14. Dezember 2009 at 17:27 #

    @Chris (Kommentar 7): Seit OS 3.0 wird im Safari (iPhone) die Location per JavaScript-API angeboten (mit Sicherheitsabfrage). Das gibt es für viele der aktuellen Phones …

    Quelle: http://tinyurl.com/ydjeeh4

  13. Andreas F. 14. Dezember 2009 at 17:54 #

    Datenschutzrechtlich durchaus bedenklich. Du übergibst die IP-Adresse des Besuchers (die nach Ansicht einiger Richter und Datenschützer ein personenbezogenes Datum ist bzw. sein kann) an verschiedene Dienstleister im Ausland, die sich nicht an Deutsche Gesetze halten (müssen) und die IP beliebig speichern (können) und sonstwie weiterverarbeiten können.

    Und bei welchem tatsächlichen Nutzen für den Besucher? Eigentlich keinem. Denn solche IP Geolokalisierungsdatenbanken sind ziemlich ungenau und unzuverlässig – selbst wenn man Mittelwerte bildet – so daß es für eine Routenplanung, bis auf wenige Ausnahmen, nicht ausreicht.

    Im Artikel steht richtig: “Die Einzelheiten der technischen Lösungen sind eigentlich schon länger bekannt.” Warum es trotzdem so selten gemacht wird, hätte den Autor vielleicht nachdenklich machen können.

  14. Olga 14. Dezember 2009 at 19:47 #

    etwas unkorrekt in dem sinne WIPmania mit den anderen zu vergleichen, es werden keine städte (noch nicht), aber nur die länder ausgegeben. dafür ist diese datenbank die genaueste heute ))

    grüße, Olga

  15. Bernhard 14. Dezember 2009 at 23:15 #

    @Helen: Zum Thema Schreibfehler:

    1. “Oder, schon ein bisschen pratischer [...]“ – praktischer?
    2. “Was auf einem iPhone logischerweise funktioniert, geht (ungenauer) im Browser eines normalen Büro-PCs auf.” – auf = auch / ebenfalls
    3. “[...]umfangreichen whois-Datenbanken und deren Geokoodinaten[...]“ – Geokoordinaten?
    4. “[...] ajax api [...]“ – “API” ist eine Abkürzung und steht für “Application Programming Interface”, daher man schreibt “API” groß.
    5. “[...] ajax api [...]“ – “AJAX” ist auch eine Abkürzung. Hier hat sich in der Literatur aber auch die Schreibweise “Ajax” eingebürgert. Beide Varianten sind akzeptabel.
    6. “Google” wird an mehreren Stellen “google” geschrieben. Das ist falsch, denn “Google” ist ein Firmenname und wird immer großgeschrieben. Ausnahmen gehen höchstens bei Produknamen, wenn Google das so will: Im Falle von “Google maps” kann es die Ausnahmen nicht geben, da selbst Google “Google maps” schreibt.

  16. NightWalker 14. Dezember 2009 at 23:16 #

    Also ich sehe das ganze genau so kritisch wie die meisten hier. Man kann zwar nicht die genaue Adresse von einem Besucher feststellen aber die nähere umgebung reicht schon. Ich wäre von einer Seite die mir zeigt das es viele daten von mir sammelt abgeschreckt. Aussredem würde ich mich dann noch fragen was Sie dann mit den Daten machen die ich noch zusätzlich eingebe…
    Aber für Werbung finde ich es ganz nützlich z.B. “Gute Restaurants in der näher von $STADT”

  17. Peter Flamell 15. Dezember 2009 at 07:39 #

    Interessant für die Adressüberprüfung! Prima Inspiration

  18. Steffen 15. Dezember 2009 at 09:28 #

    Ich finde den Ansatz gar nicht so schlecht. Wenn ich das richtig verstehe ist der Hintergrund ja, den Weg von meinem Standort zu einem bestimmten Ort aufzuzeigen. Ich persönlich habe kein Problem damit, dass die Standortabfrage selbst etwas ungenau sein kann, aus meiner Stadt finde ich in der Regel immer raus. Viel wichtiger wäre mir, den generellen Weg zu sehen.

  19. Niklas 15. Dezember 2009 at 19:10 #

    Endlich ein technischer Artikel mit Tiefgang, schön im Gegensatz zu den vielen halb-fertigen bzw. nur angerissenen Themenbeiträgen. Hier mein Vote dafür!

  20. Frank H. 16. Dezember 2009 at 07:27 #

    @Andreas F: Wenn du der Speicherung deiner IP bei ausländischen Providern wiedersprechen willst, ist die Liste der zu blockenden Seiten groß bzw. dien sichtbares Internet sehr klein.

    Erst die Aggregation der Bewegungungsdaten oder Erkennung durch ein Cookie wird es fraglich. Aber die persönliche Erkennung wird meist erst durch die Logindaten (IP,Zeiten) bei deinem Provider, welcher in Deutschland sitzt.

  21. mat 16. Dezember 2009 at 09:20 #

    Feiner Artikel zu einem interessanten Thema. Gut recherchiert und erklärt. Hab ich mir auf jeden Fall gebookmarked, kann man sicher mal brauchen… ;)

  22. Silke 16. Dezember 2009 at 21:02 #

    Ich versteh das alles nicht, warum so viel JavaScript, und das kann doch keiner lesen? Aber die iframe-Lösung ist ok. Nur läuft das dann auf einer ganz anderen Domain!?! Bitte um Aufklärung.

  23. Sandra 17. Dezember 2009 at 08:01 #

    Schick aber zu technisch, da bleib ich lieber bei den Twitter-Icons.

  24. Matthias 17. Dezember 2009 at 09:22 #

    @Andreas F:
    “Datenschutzrechtlich durchaus bedenklich. Du übergibst die IP-Adresse des Besuchers (die nach Ansicht einiger Richter und Datenschützer ein personenbezogenes Datum ist bzw. sein kann) an verschiedene Dienstleister im Ausland, die sich nicht an Deutsche Gesetze halten (müssen) und die IP beliebig speichern (können) und sonstwie weiterverarbeiten können.”

    Und? Der externe Dienstleister hat nun eine IP-Adresse, den Zeitpunkt der Abfrage und evtl. die IP-Adresse, von der die Abfrage kommt (in diesem Fall die von . Er weiß nicht, ob die angefragte IP-Adresse aktuell von einem Besucher dieser Seite kommt oder sonstwie angefragt wurde.

    Im Zweifelsfall weiß der externe Dienstleister also, dass jemand mit einer bestimmten IP-Adresse zu einem bestimmten Zeitpunkt die Seite http://pyunitedcoders.appspot.com besucht hat. Was will man mit dieser Information anfangen? Welche Daten davon sind schützenswert?

  25. Leistur 17. Dezember 2009 at 20:30 #

    Aufschlussreicher und interessanter Artikel !!

  26. Nina 18. Dezember 2009 at 09:01 #

    Ich denke, es kommt auf den user an, ob er von einer solchen Bestimmung seines Ortes erfreut ist, weil es ihm die Arbeit erspart, seine Adresse einzugeben (vorrausgesetzt, die Bestimmung wäre genau genug)oder eher entsetzt, weil sein Browser ihm sagt, wo er ist (z.B. weil er eben nicht weiß, was dahinter steckt). Ich kenne einige Leute, auf die letzteres zutreffen würde. Eine Einwilligungsabfrage finde ich da sinnvoll, egal ob es datenschutzrechtlich ok wäre.

    P.S.: Es gibt im Artikel einige Rechtschreibfehler.

  27. Christoph 22. Dezember 2009 at 14:37 #

    Die Diskussionen um den fehlenden Datenschutz bei der Lokalisierung verstehe ich nicht.

    Bindet auf der Webseite einen Button ein auf dem “Automatisch Standort ermitteln” steht. Mit diesem kann der Benutzer dann selbst die Lokalisierungsabfrage durchführen.

    Zusätzlich wäre es noch gut einen Tooltip neben dem Button oder während der Ladezeit einzublenden, der die Benutzer über die Lokalisierung aufklärt.

  28. Christian Harms 29. Dezember 2009 at 23:45 #

    Nachtrag zum Datenschutz: Zur Bestimmung werden meist nur IP-Ranges benutzt. Also ist das Abschneiden (bzw 0-setzen) der letzten Zahl nichtrelevant für die Ortsbestimmung mit den Geo-IP-Providern.

    Gruß, Christian.

Hinterlasse eine Antwort

Bitte bei weiteren Kommentaren per Email benarichtigen! Auch möglich: Abo ohne Kommentar.

Spam protection by WP Captcha-Free