User-Agent-Erkennungsdienst: Die nächste Stufe

In meinen Ausführungen über einen Web-Dienst zur Erkennung von Bots und Browsern fehlt noch ein wesentlicher Teil: Die Verarbeitung großer Anfragen. Will man etwa die Besucherzusammensetzung eines ganzen Monats untersuchen, kommen auch bei mittleren Webprojekten schnell deutlich mehr als 10 000 Anfragen zusammen. Wird jede davon einzeln über netzwerktransparent verschickt, muss man sich schnell von der Idee einer Echtzeitanwendung verabschieden. Ich möchte daher kurz zwei Ansätze erläutern, um den Netzwerk-Overhead zu verringern.

Anfragen effizienter gestalten

1. Mehr User-Agents pro Anfrage

Diese Idee ist relativ simpel: Statt einer Get-Anfrage an den User-Agent-Identifikationsserver wird eine Post-Anfrage gestellt, in der gleich mehrere UA-Strings geschickt werden. Der Server kann nun mehrere Strings auswerten und in einem Schritt verschicken.

So lässt sich der Netzwerk-Overhead sehr leicht linear reduzieren. Werden etwa in einer Anfrage gleich 100 Strings abgefragt, wird schließlich nur noch ein Hundertstel der Anfragen benötigt.

Diese Methode ist sehr leicht zu implementieren und außerdem wirkungsvoll. Dennoch werde ich vorerst auf den zweiten Ansatz fokussieren:

2. Test-Algorithmen auf dem Client machen

Diese Idee reduziert den Netzwerkverkehr noch drastischer. Idealerweise werden mit nur einer Anfrage beliebig viele User-Agents analysiert. Die Idee: Statt die User-Agent-Strings zum Server zu schicken, um sie dort analysieren zu lassen, holt sich der Client eine Liste bekannter Bots und Browser in Form der vorgestellten Objekte und prüft selber, welcher String zu welchem Objekt passt.

Nebenbei garantiert dieser Ansatz, dass der Server nicht übermäßig belastet wird.

Einen Namen finden

Zudem benötigt die Software möglichst bald einen Namen, um öffentliche Funktionen mit Präfixen versehen zu können. Eine wirkliche Idee habe ich leider noch nicht, denke aber, dass sich das Projekt in die MGVmedia-Warnemünde-Familie eingliedern wird. Daher wird auch hier wieder ein w als Präfix dienen.