Geolocation oder
Geotargeting ist das Schließen auf den geographischen Standort aus einer IP-Adresse. Zwar kann wegen dynamisch zugeteilter IP's, der Verwendung von NAT oder Proxis usw., die Zuordnung nie 100%-ig genau sein, meist kommt man aber ungefähr in die richtige Richtung (Provider, Netz...).
Für besonders Neugierige gibt es auch die Möglichkeit, die IP nicht nur einem Land, sondern einer Stadt zuzuordnen (incl. Längen- und Breitengrad).
http://www.maxmind.com/, wo das Projekt
GeoIP zuhause ist, bietet zum Beispiel online so einen Dienst an. Noch praktischer wäre natürlich ein lokales Shellskript.
Und so wirds gemacht:
Zuerst brauchen wir zwei Linux Standard-Pakete:
- SuSE - GeoIP und libGeoIP1
- Debian - geoip-bin und libgeoip1
- Andere Distris - die Pakete heißen sicher ähnlich
Damit haben wir das Programm
geoiplookup und die (mehr oder weniger aktuelle) Datenbank "GeoLite Country".
Für die genauere Zuordnung zu Stadt, Längen- und Breitengrad holen wir uns die
GeoLiteCity.dat Datenbank von Maxmind:
http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz. Die kann dann irgendwo im Homeverzeichnis ausgepackt werden, den Pfad zur entpackten Datei brauchen wir im Wrapper-Skript.
Und so schaut besagtes Skript aus.
#!/bin/bash
# *** woist ***
# requires: geoiplookup, GeoLiteCity.dat
datPfad="/home/xela/geoip/GeoLiteCity.dat"
GIPL=$( which geoiplookup )
me=$( basename $0 )
if [ -n "$1" ]
then
lookup=$( $GIPL -f $datPfad "$1" | gawk -F: '{print $2}' )
lookup2=$( $GIPL "$1" | gawk -F, '{print $2}' )
# umlaute - encoding
str="$1 --- $lookup2, $( echo $lookup | recode iso-8859-1.. )"
echo $str
exit 0
else
echo -e "Usage: $me ip.add.re.ss\n $me domain.tld"
exit 1
fi
Die Variable "
datPfad" muss angepasst werden, dann kann das Skript in eurem Pfad, meist /home/
username/bin z.B. als "woist" abgelegt werden. Die Datei ausführbar machen und losgehts.
woist 66.249.67.177
Ergebnis:
66.249.67.177 --- United States, US, CA, Mountain View, 94043, 37.419201, -122.057404, 807, 650
Es funktioniert übrigens auch mit Domains.
woist yahoo.com
Ergebnis:
yahoo.com --- United States, US, CA, Sunnyvale, 94089, 37.424900, -122.007401, 807, 408
Suchmaschinen(-Robots) wohnen anscheinend gerne in warmen Gegenden mit Strandnähe.
Na klar, es geht ja um's Surfen
Hinweis: Da die Zuordnungen zu Land und Stadt aus unterschiedlichen Datenbanken (=unterschiedlich aktuell) kommen, kann es vorkommen, dass Stadt und Land nicht übereinstimmen. Ein wenig geografischer Hausverstand ist also gefragt.