Erkennen von mobilen Geräten aus user-agent-string
Ich bin auf der Suche nach einem Weg, um zu analysieren, user-agent-strings, um festzustellen, ob Sie generiert wurden, die von mobilen Geräten. Dies muss java-basiert und geeignet sind für große batch-log-Datei-Analyse auf hadoop für die Erstellung von Statistiken (d.h. ein web service nicht angemessen wäre).
Habe ich gesehen,WÜRFLaber da ich nur ein binary mobile/nicht-mobile-Antwort, die Lizenzgebühr scheint unerschwinglich.
Bisher habe ich mit UADetectordas ist fast genau das was ich brauche. Jedoch, ich traf es einige Einschränkungen. In meinen Tests habe ich gefunden, dass viele Benutzer-agent-Zeichenfolgen, die genügend Informationen, um zu bestimmen, dass der user-agent ist ein mobiles Gerät, sondern als UNKNOWN gemeldet von UADetector.
Zum Beispiel, schlecht standardisierten Android-apps senden können, den UA-string "Android". Dies ist genug, um zu wissen, dass es kam von einem mobilen Gerät, aber UADetector Berichte dieser UserAgentType als UNBEKANNT anstatt MOBILE_BROWSER.
Apache Mobile Filter's Lite-Gerät-Erkennung macht das richtige, aber ich brauche etwas kann ich verwenden, die von Java.
Kann jemand empfehlen, eine bessere Lösung?
InformationsquelleAutor der Frage Aniket Schneider | 2013-03-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich bin der Gründer und maintainer der MobileESP Projekt, eine Kostenlose open-source-cross-Plattform-Bibliothek für die Erkennung von mobilen Geräten. Es ist immer noch sehr lebendig! 🙂
http://www.mobileesp.org
MobileESP nur gibt binäre "mobile" - Antworten. Sie können erkennen, von Plattform zu Plattform wie iOS, Android oder Windows Phone, oder nach Geräte-Kategorie, wie "iPhone " Tier" Smartphone vs. tablet. Seien Sie sicher und schnell einen überblick über die API-Seite.
Wie Sie vielleicht wissen, useragent-strings variieren. Wenn der browser versendet, die auf das Gerät, der Hersteller kann es anpassen. Zum Beispiel, HTC oft passt die native Android-browser den useragent-string.
Google gibt Empfehlungen, wie die OEM passen Sie die useragent. Wenn Sie das Gerät als ein Telefon, dann empfiehlt Google, darunter das Wort "mobile" element in der Zeichenfolge. Aber wenn sollte das Gerät als ein tablet, dann sollte der string nicht enthalten "mobile". Die Einhaltung dieser Empfehlung stark variiert, natürlich.
Drittanbieter-Browser, wie Opera oder Maxthon setzen können, was Sie wollen, in der useragent-string-und zu tun! Bestimmte "neue" Browser, die namenlos bleiben soll habe dabei sehr schlechte Arbeitsplätze, setzen die richtigen Informationen in Ihren useragent-strings für die einzelnen Plattformen (z.B. Android-vs. iOS-Versionen). Es gibt nicht viel Sie tun können, es sei denn, Sie bekommen eine Menge von Datenverkehr von diesen Browsern und investieren wollen, in der Verfolgung Ihrer genauen useragent-Werte pro Plattform-und software-rev.
Sowieso, MobileESP wurde mit der vision zu tun, die Erkennung auf einer Seite-an-Seite-basis, wenn die Seite serviert wird. Ich absichtlich schrieb der code sehr einfach zu Lesen und passen auch.
Zu tun, die batch-Verarbeitung, die Sie machen könnten, so etwas wie dieses:
1.) In den Konstruktor, Kommentar, die initDeviceScan () - Methode. Sie brauchen nicht diese für die bulk-Verarbeitung.
2.) Übergeben Sie den UserAgent und ein leerer string in den Konstruktor (UAgentInfo()).
3.) Führen Sie dann erkennen, was Methoden, die Sie interessiert sind in. Nachdenklich über die Reihenfolge, in der Sie Ihnen Zeit zu sparen, basierend auf einem scan Ihrer Benutzer.
Zum Beispiel, wenn die meisten Ihrer Nutzer sind auf dem iPhone und das ist einer der Erkennung von Kriterien, die Sie interessiert sind, dann führen Sie, dass der check-ersten. Wenn in diesem Beispiel, werden Sie sicherlich würde nicht laufen die BlackBerry-Methode zuerst!
Meine Kontaktdaten sind im Quellcode und auf der web-site. Senden Sie mir eine Notiz, wenn Sie irgendwelche Fragen haben oder irgendwelche bugs. Auf jeden Fall rund um die MobileESP.org Website für einige Tipps.
Besten Wünsche auf Ihrem Projekt, Aniket!
InformationsquelleAutor der Antwort Anthony Hand
Einem anderen thread schlägt mit der folgenden Bibliothek:
http://code.google.com/p/mobileesp/source/browse/Java/UAgentInfo.java
scheint mehr oder weniger OK.
InformationsquelleAutor der Antwort Mladen Adamovic
Wie zu Lesen, die Apache Mobile Filter-Wert in JSP (Tomcat)?
Bevor Sie in die httpd.conf-Datei, wo Sie haben, um mod_jk konfigurieren Sie muse fügen Sie diese:
Den Java-code ist:
aus: http://wiki.apachemobilefilter.org
InformationsquelleAutor der Antwort user2163103
51Degrees hat eine Kostenlose open-source-Java-API, die ermöglicht Ihnen das ausführen der offline-Bearbeitung. Sie können es aus dem GitHub Repository hier. https://github.com/51Degrees/Java-Device-Detection.
Als Teil der API gibt es eine offline-Verarbeitung-Beispiel (code siehe unten) das dauert eine CSV-Datei von User-Agents und gibt die erforderlichen Eigenschaften in eine Ausgabedatei. Das folgende Beispiel benutzt nur 3 der Eigenschaften innerhalb der Daten festgelegt, für eine vollständige Liste können Sie sich die dictionary-hier https://51degrees.com/resources/property-dictionary
Hoffe, das hilft.
Offenlegung: ich arbeite bei 51Degrees.
InformationsquelleAutor der Antwort Zarwalski
http://user-agent-utils.java.net/javadoc/nl/bitwalker/useragentutils/OperatingSystem.html
hoffentlich das sollte helfen, hat es eine boolean-für die es, habe ich nicht untersucht, was unter der Haube, so zu sprechen, so dass ich nicht sicher bin, wie umfangreich es ist.
InformationsquelleAutor der Antwort BleepBop
Erkennen, iPhone, Android und andere mobile Geräte in
Java
user-agent
verwendet werden kann. Wenn Sie mit Spring können Sie passen Sie den code unten wie pro Ihre Notwendigkeit.InformationsquelleAutor der Antwort Abdullah Khan