Übersicht aller gängigen HTTP_USER_AGENT-Rückgabewerte
myMojito
- cgi
Hallo SelfForum,
ich möchte die Umgebungsvariable HTTP_USER_AGENT möglichst genau und Zuverlässig auswerten (Browser, Version und Betriebssystem).
Ich kann mit meiner Testumgebung natürlich lange nicht alle gängigen Rückgabewerte prüfen. Kennt jemand einen Link, wo ich eine detailierte Liste der möglichen Rückgabewerte bekomme? Oder kennt jemand gar ein Perl-Script, das diese Arbeit für mich schon übernimmt?
greets
myMojito
Hi,
ich habe mir ein PHP-Skript zusammengebastelt, das sowas auswertet:
hier ein Ausschnitt. Die Informationen zur Auswertung habe ich mir zusammen gesucht, und habe auch eigene Erfahrungen gemacht.
Ob es sich um Opera handelt sollte zB immer zuerst geprüft werden, da dieser Browser auch andere Identitäten annehmen kann.
Auf Mozilla sollte erst am Schluss geprüft werden, da viele Browser das Codewort "Mozilla" benutzen.
Auch die seltsame Windows ME Kennung musste ich erstmal suchen...
Windows CE (für Pocket PC) kannte ich auch lange Zeit nicht.
Hier das Skript ($row[http_user_agent] stellt $HTTP_USER_AGENT dar):
if(eregi("NT 5.1", $row[http_user_agent]) || eregi("Windows XP", $row[http_user_agent]))
{
$platforms["Windows XP"]++;
}
else if(eregi("Windows 2000", $row[http_user_agent]) || eregi("Win2000", $row[http_user_agent]) || eregi("NT 5.0", $row[http_user_agent]))
{
$platforms["Windows 2000"]++;
}
else if(eregi("Win 9x 4.90", $row[http_user_agent]) || eregi("WinME", $row[http_user_agent]) || eregi("Windows ME", $row[http_user_agent]))
{
$platforms["Windows ME"]++;
}
else if(eregi("NT", $row[http_user_agent]))
{
$platforms["Windows NT"]++;
}
else if(eregi("Win98", $row[http_user_agent]) || eregi("Windows 98", $row[http_user_agent]))
{
$platforms["Windows 98"]++;
}
else if(eregi("Win95", $row[http_user_agent]) || eregi("Windows 95", $row[http_user_agent]))
{
$platforms["Windows 95"]++;
}
else if(eregi("Windows CE", $row[http_user_agent]))
{
$platforms["Windows CE (Pocket PC)"]++;
}
else if(eregi("Win", $row[http_user_agent]))
{
$platforms["Windows (andere)"]++;
}
else if(eregi("Mac", $row[http_user_agent]))
{
$platforms["Macintosh"]++;
}
else if(eregi("Unix", $row[http_user_agent]) || eregi("hp-ux", $row[http_user_agent]))
{
$platforms["Unix"]++;
}
else if(eregi("X11", $row[http_user_agent]) || eregi("Linux", $row[http_user_agent]) || eregi("Konqueror", $row[http_user_agent]))
{
$platforms["Linux"]++;
}
else if(eregi("OS/2", $row[http_user_agent]))
{
$platforms["OS/2"]++;
}
else if(eregi("SunOS", $row[http_user_agent]))
{
$platforms["SunOS"]++;
}
else if(eregi("BeOS", $row[http_user_agent]))
{
$platforms["BeOS"]++;
}
else if(eregi("FreeBSD", $row[http_user_agent]))
{
$platforms["FreeBSD"]++;
}
else if(eregi("OpenBSD", $row[http_user_agent]))
{
$platforms["OpenBSD"]++;
}
else if(eregi("Irix", $row[http_user_agent]))
{
$platforms["Irix"]++;
}
else if(eregi("Plan9", $row[http_user_agent]))
{
$platforms["Plan9"]++;
}
else if(eregi("OSF", $row[http_user_agent]))
{
$platforms["OSF"]++;
}
else
{
$platforms[$row[http_user_agent]]++;
}
if(eregi("Opera[ |/]{0,1}([1-9])", $row[http_user_agent], $regs))
{
$browsers["Opera $regs[1]"]++;
}
else if(eregi("Konqueror/([1-9])", $row[http_user_agent], $regs))
{
$browsers["Konqueror $regs[1]"]++;
}
else if(eregi("Netscape[ |/]{0,1}([1-9])", $row[http_user_agent], $regs))
{
$browsers["Netscape $regs[1]"]++;
}
else if(eregi("MSIE ([1-9])", $row[http_user_agent], $regs))
{
$browsers["MS Internet Explorer $regs[1]"]++;
}
else if(eregi("Chimera[ |/]{0,1}([0-9].[1-9])", $row[http_user_agent], $regs))
{
$browsers["Chimera $regs[1]"]++;
}
else if(eregi("Dillo", $row[http_user_agent], $regs))
{
$browsers["Dillo"]++;
}
else if(eregi("DocZilla/([1-9])", $row[http_user_agent], $regs))
{
$browsers["DocZilla $regs[1]"]++;
}
else if(eregi("Galeon[ |/]{0,1}([0-9].[1-9])", $row[http_user_agent], $regs))
{
$browsers["Galeon $regs[1]"]++;
}
else if(eregi("iCab[ |/]{0,1}([1-9])", $row[http_user_agent], $regs))
{
$browsers["iCab $regs[1]"]++;
}
else if(eregi("ICE Browser[ |/]{0,1}([1-9])", $row[http_user_agent], $regs))
{
$browsers["ICE Browser $regs[1]"]++;
}
else if(eregi("K-Meleon[ |/]{0,1}([0-9].[1-9])", $row[http_user_agent], $regs))
{
$browsers["K-Meleon $regs[1]"]++;
}
else if(eregi("Oregano", $row[http_user_agent], $regs))
{
$browsers["Oregano"]++;
}
else if(eregi("Phoenix[ |/]{0,1}([0-9].[1-9])", $row[http_user_agent], $regs))
{
$browsers["Phoenix $regs[1]"]++;
}
else if(eregi("amaya/([1-9])", $row[http_user_agent], $regs))
{
$browsers["Amaya $regs[1]"]++;
}
else if(eregi("Safari", $row[http_user_agent]))
{
$browsers["Safari"]++;
}
else if(eregi("Mozilla", $row[http_user_agent]) && eregi("Gecko", $row[http_user_agent]))
{
$browsers["Mozilla"]++;
}
else if(eregi("Mozilla/([1-9])", $row[http_user_agent], $regs))
{
$browsers["Netscape $regs[1]"]++;
}
else
{
$browsers[$row[http_user_agent]]++;
}
das Skript liest mir Datenbankeinträge aus! daher $row[] und erstellt mir eine Statistik.
Siehe
http://www.abi01-wrg.de/statistik.php4
http://www.sixpack-band.de/statistik.php4
Eine Seite die mir dabei sehr geholfen hat ist:
http://www.zytrax.com/tech/web/browser_ids.htm
Gruß
Christian
Hallo Christian,
THX, sogar genauer als ich es brauche ;-)
greets
myMojito
Ich weiß ja nicht wofür du das brauchst. Vielleicht auch für JS, aber da kannst du es entsprechend umbauen.
Du kannst auch im den UserAgent String einfach nur nach "Gecko", "MSIE" und "Opera" suchen, dann hast du das meiste.
Dann noch irgendwie Netscape 4 ausfindig machen (das ist immer etwas verzwickt, das aus dem UA-String zu lesen) und du hast die gängigsten Browser.
Bei den Betriebssystemen reicht ja sicher auch "Win", "Mac" und "Linux".
Wenn du das für JavaScript brauchst, empfehle ich dir aber lieber nach Objekten abzufragen, das ist sicherer, und die Wahrscheinlichkeit das du einen Browser vergisst ist geringer, (außerdem kann man den UserAgent String ändern):
document.layers ist NS4
document.all und !document.getElementById ist MSIE 4 aber AUCH Opera 5
Christian
Hi,
THX, sogar genauer als ich es brauche ;-)
Wofür benötigst du diese Daten und vor allem wie sortierst du ein, was du darin vorfindest?
http://webalizer.teamone.de/selfhtml/agent_200302.htm
Für eine einfache Auswertung mag das Script geeignet sein - um bei der Auslieferung von Seiten Entscheidungen zu treffen, ist der UserAgent jedoch völlig ungeeignet und es gibt weit zuverlässigere Methoden. Aber du hast uns leider nicht gesagt, was du vorhast.
LG Roland
Hi,
Kennt jemand einen Link, wo ich eine detailierte Liste der möglichen Rückgabewerte bekomme?
Diese Liste wäre (fast) unendlich lang.
Ich kenne keine Längenbeschränkung für das Feld, und die zulässigen Zeichen dürften mindestens die ASCII-Zeichen 32 bis 127 umfassen (möglich, daß noch mehr Zeichen zulässig sind)
Also pro Zeichen Länge 96 Möglichkeiten.
Sind bei 2 Zeichen schon 9216, bei 3 Zeichen 884736 usw...
cu,
Andreas