NEU: IP Adresse prüfen über myip.perlmania.bplaced.de.
Folgende Informationen konnten über die gesendeten HTTP Header bzw. per JavaScript ermittelt werden:
Deine IP Adresse | 3.15.151.180 |
Dein Hostname | ec2-3-15-151-180.us-east-2.compute.amazonaws.com |
Dein Standort | USA |
Dein Betriebssystem | |
Dein Browser | Applewebkit (Version 537.36) |
Dein Betriebssystem | |
Mobiles Endgerät | Nein |
Du kamst von hier | http://perlmania.bplaced.net/browsercheck |
Do Not Track (DNT) | Nicht gesetzt |
Cookies: | |
Javascript: | |
Java: | |
Flashplayer: | |
VBscript: | |
ActiveX (sicher): | |
ActiveX (unsicher): | |
Installierte Plugins: | |
Supercookies: | |
Deine Auflösung: | |
Sichtbarer Bereich: |
In einem Perl CGI Skript kann über die Umgebungsvariable REMOTE_ADDR auf die IP Adresse des Clients zugegriffen werden:
my $ip = $ENV{'REMOTE_ADDR'};
Klickt man im Internet auf einen Link wird die URL der zuletzt besuchten Seite an den Webserver übertragen. Zugriff darauf erhält man über die Umgebungsvariable HTTP_REFERER:
my $referer = $ENV{'HTTP_REFERER'};
Der Hostname kann über die IP Adresse relativ einfach herausgefunden werden, leider klappt das nicht immer:
my $hostname = (gethostbyaddr(pack("C4", split(/\./, $ip)), 2))[0];
Der User Agent String enthält Informationen über den Client und steht in der Umgebungsvariable HTTP_USER_AGENT. Verwendet man das CGI Modul geht es auch einfach mit der Funktion user_agent. Zum Parsen des Strings empfiehlt sich das Modul HTTP::BrowserDetect das einen einfachen Zugriff auf den Namen des Browsers, die Versionsnummer und das verwendete Betriebssystem ermöglicht:
use HTTP::BrowserDetect; my $agent = new HTTP::BrowserDetect($ENV{'HTTP_USER_AGENT'}); my $browser = $agent->browser_string; my $version = $agent->version; my $os = $agent->os_string;
Um zu erkennen, ob es sich bei dem Useragent um einen mobilen Browser handelt, gibt es unter
detectmobilebrowsers.com reguläre Ausdrücke für
mehr als ein dutzend Programmiersprachen, die regelmäßig aktualisiert werden.
Hier die Perl Version:
Die HTTP Accept Header geben Aufschluß darüber, welche Inhalte der Browser wiedergeben kann. Die http() Funktion des CGI Moduls ermöglicht Zugriff auf sämtliche HTTP Header, die der Browser sendet:
use CGI; my $cgi = CGI->new; my %http_headers = map { $_ => $cgi->http($_) } $cgi->http(); for my $header (keys %http_headers) { print "$header=$http_headers{$header}\n"; }
Über die IP Adresse lässt sich mit Hilfe von IP::Country in den meisten Fällen der Ländercode herausfinden. Wer den Namen des Landes möchte, dem kann hier Geography::Countries weiterhelfen:
use Geography::Countries; use IP::Country::Fast; my $reg = new IP::Country::Fast; my $country_code = $reg->inet_atocc($ENV{'REMOTE_ADDR'}); my $country_name = country $country_code;
Es gibt keine Möglichkeit, die IP Adresse oder den Referer per JavaScript auszulesen. Demnach können auch Hostname und Land nicht ermittelt werden.
Man kann jedoch per Ajax auf einen Webservice zuzugreifen, die Daten dort auslesen (siehe oben)
und dann an den Browser zurücksenden.
Es gibt unzählige JavaScript Bibliotheken, die den UserAgent String auswerten und die selben
Informationen zur Verfügung stellen, wie das oben genannte HTTP::BrowserDetect Modul.
Eine davon ist UAParser.js:
<script src="ua-parser.min.js"></script> <script> var parser = new UAParser(window.navigator.userAgent); var browser = parser.getBrowser().name; var version = parser.getBrowser().major; var os = parser.getOS().name; </script>
Ob und in welcher Version der Flashplayer installiert ist, kann man über die JavaScript Flash Detection Library ermitteln:
<script src="flash_detect_min.js"></script> <script> if (FlashDetect.installed) { var flashVersion = FlashDetect.raw; } </script>
Die im Browser installierten (und aktivierten) Plugins können über navigator.plugins ausgelesen werden:
<script> if (navigator.plugins) { for (var i=0; i<navigator.plugins.length; i++) { var name = navigator.plugins[i].name; var description = navigator.plugins[i].descripton; } } </script>
Aktuelle Browser ermöglichen es Webseiten (über HTML5 localStorage/sessionStorage oder die IE spezifische userData) Daten auf dem Client zu speichern. Die sogenannten Super-Cookies können deutlich mehr Daten speichern, als normale Cookies und lassen sich teilweise auch schwerer löschen. Über das Modernizr Skript lässt sich prüfen, ob sie auf dem Browser zur Vergügung stehen:
<script src="Modernizr.js"></script> <script> var localStorageAvailable = Modernizr.localstorage; var sessionStorageAvailable = Modernizr.sessionstorage; var userDataAvailable = Modernizr.userdata; </script>
Die Auflösung des Clients kann über window.screen ausgelesen werden:
<script> if (window.screen) { var width = screen.width: var height = screen.height; var colors = screen.colorDepth; } </script>
Der zu Verfügung stehende Bereich (Browserfenster abzüglich aller Steuerelemente) steht je nach Browser an unterschiedlicher Stelle. Folgendes Skript ermittelt die Größe des ViewPorts in den gängigen Browsern:
<script> var width, height; if (typeof window.innerWidth != 'undefined') { width = window.innerWidth; height = window.innterHeight; } else if (window.document.body) { width = window.document.body.clientWidth; height = window.document.body.clientHeight; } </script>