Dienstag, 23. Dezember 2008
Useragents in Webalizer und Awffull
Zum Auswerten von Apache (und anderen Webserver-) Logfiles sind zwei Tools besonders beliebt: Webalizer und der Webalizer Fork Awffull.
Beiden gemeinsam ist die eher schwächliche Unterscheidung der User Agents, bei Webalizer noch schwächer als bei Awffull. Da kann man aber nachbessern.
Eines muss ich gleich voraus schicken: So ein User Agent String kann ohne größeren Aufwand gefälscht werden. Dass die Statistik trotzdem Aussagekraft hat liegt daran, dass die meisten Besucher das nicht tun.
Meine Konfigurationstipps setzen voraus, dass ihr schreibenden Zugriff auf die Konfigurationsdatei habt, oder ein netter root euch behilflich ist.
Beiden gemeinsam ist die eher schwächliche Unterscheidung der User Agents, bei Webalizer noch schwächer als bei Awffull. Da kann man aber nachbessern.
Eines muss ich gleich voraus schicken: So ein User Agent String kann ohne größeren Aufwand gefälscht werden. Dass die Statistik trotzdem Aussagekraft hat liegt daran, dass die meisten Besucher das nicht tun.
Meine Konfigurationstipps setzen voraus, dass ihr schreibenden Zugriff auf die Konfigurationsdatei habt, oder ein netter root euch behilflich ist.
Beispiel 1 - Webalizer (aktuelle Version 2.20)
Der Abschnitt GroupAgent/HideAgent ist in der mitgelieferten Beispiel Konfigdatei ohnehin auskommentiert, das lassen wir besser so. An Hand von nur "MSIE 7" o.ä. ist keine zuverlässige Erkennung möglich, das trifft noch auf die schlampigst gefälschten Agentstrings zu. Außerdem fehlen sehr viele Browser.
Statt dessen...
Das kann natürlich jederzeit verfeinert und erweitert werden. Mein Auszug aus der Konfigdatei soll nur ein Vorschlag sein. In wie weit man dabei regular expressions verwenden kann, habe ich nicht heraus gefunden. Auf alle Fälle scheint der Stern (Asterisk) als Platzhalter nicht auf die übliche Weise (z.B. wie in der Bash) zu funktionieren.
Noch ein Tipp: mit der Anweisung "AllAgents yes" in der Konfigdatei bekommt ihr eine extra Seite mit der Liste aller Agents, nicht nur die häufigsten (das gilt auch für Awffull).
Beispiel 2 - Awffull (aktuelle Version 3.10.2)
Da Awffull ein Fork von Webalizer ist, ist die Konfigdatei recht ähnlich aufgebaut. Angenehm fällt auf, dass die Group und Hide Anweisungen zusammengefasst sind. Die Reihenfolge der Suchbegriffe scheint wichtig zu sein, das ist aber eine Vermutung meinerseits, in der Dokumentation habe ich dazu nichts gefunden.
Mein Vorschlag zur Erweiterung:
Das Ergebnis sieht dann z.B. in der Webalizer Statistik ungefähr so aus:

Wozu ist das nütze, mag sich jetzt so manche/r fragen.
Ganz einfach:
Sollte ich feststellen, dass viele Leute, die meine Seiten ansurfen einen Browser verwenden, den ich gar nicht getestet oder sonstwie berücksichtigt habe, kann ich diesbezüglich nachbessern.
Oder andersrum: wenn ich immer Extrawürste für Browser mache (alte IE's), die kaum mehr auftauchen, kann ich mir beim nächsten mal die Arbeit sparen.
Auch nicht unwichtig: so kann ich übereifrige Robots bremsen oder ganz aussperren, falls sie die Anweisungen in der robots.txt ignorieren (sowas gibt's).
Außerdem: irgendwelches Webcopy- oder Emailharvester Gesindel fällt schnell auf und kann ebenfalls ausgesperrt werden (mit htaccess oder iptables).
So kann die Statistik ein bisschen zur Sicherheit beitragen.
Um noch ein wenig auf die konkrete Statistik oben einzugehen.
Wenig überraschend haben auf meiner Site, auf der es hauptsächlich um OpenSource und Linux geht die Geckobrowser (Firefox) weit die Nase vorn, es ist beinahe schon erschreckend. Minefield und GranParadiso sind Gecko-Entwicklerversionen. HTTPClient und HTTrack werde ich genauer unter die Lupe nehmen und eventuell blocken.
Links:
Folgende Seite möchte ich euch noch zum Aufdröseln der User Agent Strings empfehlen: www.useragentstring.com/
Mitunter möchte man wissen, ob ein User Agent ein Bot oder doch ein (seltener) Browser ist. Manchmal wird man auf www.botsvsbrowsers.com/ fündig, leider ist das aber nicht sehr zuverlässig.
Der Abschnitt GroupAgent/HideAgent ist in der mitgelieferten Beispiel Konfigdatei ohnehin auskommentiert, das lassen wir besser so. An Hand von nur "MSIE 7" o.ä. ist keine zuverlässige Erkennung möglich, das trifft noch auf die schlampigst gefälschten Agentstrings zu. Außerdem fehlen sehr viele Browser.
Statt dessen...
GroupAgent Googlebot Spider: Googlebot HideAgent Googlebot GroupAgent msnbot* Spider: MSNBot HideAgent msnbot* GroupAgent "Yahoo! Slurp" Spider: YahooBot HideAgent Yahoo! Slurp GroupAgent Arora/ Browser: Arora HideAgent Arora/ GroupAgent Chrome/ Browser: Chrome HideAgent Chrome/ GroupAgent AppleWebKit/ Browser: Safari (WebKit) HideAgent AppleWebKit/ GroupAgent Camino/ Browser: Camino (Mac) HideAgent Camino/ GroupAgent Epiphany/ Browser: Epiphany HideAgent Epiphany/ GroupAgent Firebird/ Browser: Firebird HideAgent Firebird/ GroupAgent K-Meleon/ Browser: K-Meleon HideAgent K-Meleon/ GroupAgent Firefox/1. Browser: Firefox 1 HideAgent Firefox/1. GroupAgent Firefox/2. Browser: Firefox 2 HideAgent Firefox/2. GroupAgent Firefox/3. Browser: Firefox 3 HideAgent Firefox/3. GroupAgent Galeon/ Browser: Galeon HideAgent Galeon/ GroupAgent Konqueror/ Browser: Konqueror HideAgent Konqueror/ GroupAgent Netscape6/ Browser: Netscape 6 HideAgent Netscape6/ GroupAgent Netscape/7 Browser: Netscape 7 HideAgent Netscape/7 GroupAgent Netscape/8 Browser: Netscape 8 HideAgent Netscape/8 GroupAgent Opera Browser: Opera HideAgent Opera GroupAgent Iceweasel/ Browser: Iceweasel HideAgent Iceweasel/ GroupAgent SeaMonkey/ Browser: SeaMonkey HideAgent SeaMonkey/ GroupAgent "rv:1.2.1) Gecko/2002" Browser: Mozilla (Linux) HideAgent rv:1.2.1) Gecko/2002 GroupAgent "compatible; MSIE 7.0; Windows" Browser: Internet Explorer 7.0 HideAgent compatible; MSIE 7.0; Windows GroupAgent "compatible; MSIE 8.0; Windows" Browser: Internet Explorer 8.0 HideAgent compatible; MSIE 8.0; Windows GroupAgent "compatible; MSIE 6.0; " Browser: Internet Explorer 6.0 HideAgent compatible; MSIE 6.0; GroupAgent "compatible; MSIE 5.5; " Browser: Internet Explorer 5.5 HideAgent compatible; MSIE 5.5; GroupAgent "compatible; MSIE 5.01;" Browser: Internet Explorer 5.01 HideAgent compatible; MSIE 5.01; GroupAgent "compatible; MSIE 5.2" Browser: Internet Explorer 5.2x (Mac) HideAgent compatible; MSIE 5.2 GroupAgent "compatible; MSIE 5.0;" Browser: Internet Explorer 5.0 HideAgent compatible; MSIE 5.0;
Das kann natürlich jederzeit verfeinert und erweitert werden. Mein Auszug aus der Konfigdatei soll nur ein Vorschlag sein. In wie weit man dabei regular expressions verwenden kann, habe ich nicht heraus gefunden. Auf alle Fälle scheint der Stern (Asterisk) als Platzhalter nicht auf die übliche Weise (z.B. wie in der Bash) zu funktionieren.
Noch ein Tipp: mit der Anweisung "AllAgents yes" in der Konfigdatei bekommt ihr eine extra Seite mit der Liste aller Agents, nicht nur die häufigsten (das gilt auch für Awffull).
Beispiel 2 - Awffull (aktuelle Version 3.10.2)
Da Awffull ein Fork von Webalizer ist, ist die Konfigdatei recht ähnlich aufgebaut. Angenehm fällt auf, dass die Group und Hide Anweisungen zusammengefasst sind. Die Reihenfolge der Suchbegriffe scheint wichtig zu sein, das ist aber eine Vermutung meinerseits, in der Dokumentation habe ich dazu nichts gefunden.
Mein Vorschlag zur Erweiterung:
GroupAndHideAgent Googlebot Spider: Googlebot GroupAndHideAgent msnbot* Spider: MSNBot GroupAndHideAgent "Yahoo! Slurp" Spider: YahooBot GroupAndHideAgent Arora/ Browser: Arora GroupAndHideAgent Chrome/ Browser: Chrome GroupAndHideAgent AppleWebKit/ Browser: Safari (WebKit) GroupAndHideAgent Camino/ Browser: Camino (Mac) GroupAndHideAgent Epiphany/ Browser: Epiphany GroupAndHideAgent Firebird/ Browser: Firebird GroupAndHideAgent K-Meleon/ Browser: K-Meleon GroupAndHideAgent Firefox/1. Browser: Firefox 1 GroupAndHideAgent Firefox/2. Browser: Firefox 2 GroupAndHideAgent Firefox/3. Browser: Firefox 3 GroupAndHideAgent Galeon/ Browser: Galeon GroupAndHideAgent Konqueror/ Browser: Konqueror GroupAndHideAgent Netscape6/ Browser: Netscape 6 GroupAndHideAgent Netscape/7 Browser: Netscape 7 GroupAndHideAgent Netscape/8 Browser: Netscape 8 GroupAndHideAgent Opera Browser: Opera GroupAndHideAgent Iceweasel/ Browser: Iceweasel GroupAndHideAgent SeaMonkey/ Browser: SeaMonkey GroupAndHideAgent "rv:1.2.1) Gecko/2002" Browser: Mozilla (Linux) GroupAndHideAgent "compatible; MSIE 7.0; Windows" Browser: Internet Explorer 7.0 GroupAndHideAgent "compatible; MSIE 8.0; Windows" Browser: Internet Explorer 8.0 GroupAndHideAgent "compatible; MSIE 6.0; " Browser: Internet Explorer 6.0 GroupAndHideAgent "compatible; MSIE 5.5; " Browser: Internet Explorer 5.5 GroupAndHideAgent "compatible; MSIE 5.01;" Browser: Internet Explorer 5.01 GroupAndHideAgent "compatible; MSIE 5.2" Browser: Internet Explorer 5.2x (Mac) GroupAndHideAgent "compatible; MSIE 5.0;" Browser: Internet Explorer 5.0
Das Ergebnis sieht dann z.B. in der Webalizer Statistik ungefähr so aus:

Wozu ist das nütze, mag sich jetzt so manche/r fragen.
Ganz einfach:
Sollte ich feststellen, dass viele Leute, die meine Seiten ansurfen einen Browser verwenden, den ich gar nicht getestet oder sonstwie berücksichtigt habe, kann ich diesbezüglich nachbessern.
Oder andersrum: wenn ich immer Extrawürste für Browser mache (alte IE's), die kaum mehr auftauchen, kann ich mir beim nächsten mal die Arbeit sparen.
Auch nicht unwichtig: so kann ich übereifrige Robots bremsen oder ganz aussperren, falls sie die Anweisungen in der robots.txt ignorieren (sowas gibt's).
Außerdem: irgendwelches Webcopy- oder Emailharvester Gesindel fällt schnell auf und kann ebenfalls ausgesperrt werden (mit htaccess oder iptables).
So kann die Statistik ein bisschen zur Sicherheit beitragen.
Um noch ein wenig auf die konkrete Statistik oben einzugehen.
Wenig überraschend haben auf meiner Site, auf der es hauptsächlich um OpenSource und Linux geht die Geckobrowser (Firefox) weit die Nase vorn, es ist beinahe schon erschreckend. Minefield und GranParadiso sind Gecko-Entwicklerversionen. HTTPClient und HTTrack werde ich genauer unter die Lupe nehmen und eventuell blocken.
Links:
Folgende Seite möchte ich euch noch zum Aufdröseln der User Agent Strings empfehlen: www.useragentstring.com/
Mitunter möchte man wissen, ob ein User Agent ein Bot oder doch ein (seltener) Browser ist. Manchmal wird man auf www.botsvsbrowsers.com/ fündig, leider ist das aber nicht sehr zuverlässig.
Trackbacks
Trackback-URL für diesen Eintrag
Keine Trackbacks