2009-09-29 24 views
37

Kennt jemand eine große Bibliothek in Java zum Parsen von User-Agent-Strings? Wir haben eine benutzerdefinierte geschrieben, aber das scheint für viele Leute ein häufiges Problem zu sein. Ich denke, es gibt irgendwo eine gute Bibliothek.Suche nach einem Java-User-Agent String-Parser

Zum Beispiel kann der User-Agent-String ...

„Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532,0 (KHTML, wie Gecko) Chrom/3.0.195.21 Safari /532.0 "

... verkündet kryptisch die Ankunft eines Windows Vista PC mit Chrome auf unserer Website.

Ich habe Bibliotheken in Python und Ruby gesehen. Irgendwas in Java da draußen?

Antwort

4

Soweit ich weiß (und warum sollte ich nicht, es ist eine der Dienstleistungen Firma, die ich verwendet, um mit seinen Produkten bietet zu arbeiten), Erfassen Agenten Benutzer, wenn es richtig gemacht ist eigentlich ein gutes Geschäft für sich.

Es gibt einige freie Datenbanken wie WURFL, die einige rudimentäre Identifikationsmuster für Benutzeragenten enthalten, aber diese konzentrieren sich hauptsächlich auf Mobiltelefone, so dass Sie am Ende möglicherweise die eine verwenden müssen und nur die Fähigkeit hinzufügen Importieren/Exportieren in verschiedene verwandte Formate, die sich auf den aktuellen Status der Benutzeragentenidentifizierungsmetadaten beziehen.

Wenn Sie sich nicht von der Desktop-/PC-Welt abwenden, werden Sie sich nicht viel Sorgen machen müssen, da es nur vier Haupt-Layout-Engines mit einer Reihe von Versionen mit unterschiedlichen Fähigkeiten gibt. Die vier großen sind die in Trident in IE, Mozilla's Gecko, KDE's WebKit (zumindest in Safari und Chrome) und Opera's Presto.

15

Doch eine neue Bibliothek versuchen, die in dem zentralen Repository Monats- und verfügbar aktualisiert: http://uadetector.sourceforge.net/

Es ist eine weitere Wrapper für user-agent-string.info, aber mit einem viel festeren und getestet Implementierung im Vergleich zu den anderen.

Ich arbeite an einer stabilen API 1.0, die ich am Ende dieses Jahres veröffentlichen möchte. Nach der Veröffentlichung von API 1.0 müssen Sie nichts neu kompilieren. Sie wechseln nur die Datei uadetector-resources.jar in Ihrer Anwendung lib dir. Die Funktion 'monatlich aktualisiert' bedeutet, wenn Sie eine integrationsgeprüfte 'UAS-Daten' Datei haben wollen, für die Sie die Garantie haben, dass sie mit dem definierten Kern läuft, als diese Ihren Anforderungen entspricht. Wenn Sie jedoch kein JAR aktualisieren möchten (das von mir getestet wurde), können Sie den OnlineUserAgentStringParser mit dem Risiko verwenden, dass die Implementierung nicht zum Ausführen mit dem automatisch heruntergeladenen XML geeignet ist. Ich bin nicht daran interessiert, mehr "uadetector-core" -Bündel nach Bedarf zu veröffentlichen, besonders wenn die API in Version 1.0 veröffentlicht wird.

Eine andere Lösung für einen Client könnte sein, dass er die 'UAS-Daten' für sich selbst verwaltet, wenn er mit dem OnlineUserAgentStringParser arbeitet und die Eigenschaftendatei anpasst, um die richtige URL festzulegen.

+0

Dies scheint ein weiterer Wrapper um die Daten von [user-agent-string.info] (http://user-agent-string.info) zu sein. Wie vergleicht es mit [ihrer eigenen Bibliothek] (http://user-agent-string.info/download/UASparser-for-JAVA)? Von deinem Gravatar würde ich annehmen, dass das dein eigenes Projekt ist? Ich bin mir nicht sicher, ob "monatlich aktualisiert" eine Funktion ist - Sie erwarten, dass Ihre Clients ihre Anwendungen monatlich neu kompilieren und erneut veröffentlichen? – Rup

+0

@Rup Vielen Dank für Ihr Feedback! Ich hoffe, meine Erklärung gibt Ihnen mehr Einblicke. – before