Karl: Hilfe bei der Erkennung mobiler Endgeräte

Hallo Forum

In den letzten Tagen habe ich ein Script zur Erkennung mobiler Endgeräte (Handys und andere Dinger mit kleinen Displays) geschrieben. Es analysiert Displaygröße, Sprachen, Bildformate usw. Da ich nur mein eigenes Handy und die einiger Freunde habe sind meine Testmöglichkeiten sehr begrenzt.
Und daher bitte ich diejenigen unter euch die so ein Ding haben um Hilfe.

Ich habe eine Seite online gestellt die den Client analysiert und das Ergebnis zurückgibt.

Die Antwortseite ist je nachdem was das Handy kann in HTML, XHTML, WML oder TXT
Verwendete Abkürzungen:
   "Unbek."   bedeutet Unbekannt (Nein)
   "Warsch."  bedeutet Wahrscheinlich ja aber nicht ganz sicher
Mögliche Angaben für Typ:
   "PC"      Ein herkömmlicher Desktop PC
   "Robot"   Suchmaschine udgl.
   "Mini"    Minibrowser (derzeit nur Opera Mini)
   "Mobile"  Erkanntes Handy

Für alle die mir helfen wollen. So gehts:

Surfe mit deinem Handy (PDA) auf http://mda.trumedia.at/
Bitte nicht mit den PC-Browsern!!! Dafür ist das Script völlig ungeeignet und ich muss jeden einzelnen Request händisch analysieren.

Antworte mir per Email oder hier im Forum.
Die Antwort sollte enthalten:
   Antwort bekommen: Ja/Nein
   Serverdatum und Uhrzeit wie in der Antwort angegeben
   War die Erkennung Richtig?
   Was wurde falsch Erkannt?
   Dein Handyprovider (Nicht so wichtig. Kann mir beim nächsten Schritt, Providererkennung helfen)

Vielen Dank schon mal im Voraus
Karl :-)´

  1. Hi!

    Antwort bekommen: Ja
    Serverdatum und Uhrzeit wie in der Antwort angegeben: 14.06.2006 13:30:35
    War die Erkennung Richtig? Ja
    Was wurde falsch Erkannt? - Da ich die Angaben nicht kenne, kann ich dir das nicht sagen  - die Daten erscheinen aber plausibl
    Dein Handyprovider - o2 (kein Reseller)

    Gruß aus Iserlohn

    Martin

    --
    Wenn jeder an sich selbst denkt, ist an alle gedacht.
    Selfcode: ie:{ fl:( br:^ va:) ls:# fo:| rl:( n4:( ss:| de:> js:) ch:? sh:( mo:| zu:)
    1. Hallo Martin

      Antwort bekommen: Ja

      Vielen Dank für Deine Hilfe. War mein erstes SAMSUNG und mein erster o2 Request.

      l.g. Karl

  2. Hi,

    Es analysiert Displaygröße,

    Neben den Daten die Windows CE im Request-Header sendet, verwende ich folgende RegEx:

    // ... UA-Kennung auf Displayinformation untersuchen ...
      if(preg_match('/[\d]{3,4}x[\d]{3,4}/',@ifsetor($_SERVER['HTTP_USER_AGENT']),$_LOCAL_['UA_PIXELS'])) {
      // ... gefundene Information (Matches: "1024x1600" & "240x320" | Not: "16x01024" & "10240x16")

    Wenn Du was besseres hast, bitte posten. ;)

    Gruß, Cybaer

    --
    Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
    1. Wenn Du was besseres hast, bitte posten. ;)

      Hallo Cybaer

      Das Script ist inzwischen über 2000 Zeilen lang und war verdammt viel Arbeit. Verzeih mir also bitte wenn ich es hier nicht poste.

      Das Prinzip erkläre ich aber gern:

      Das Script versucht Anhand 4 verschiedener Verfahren die wichtigsten Infos über den Client zu ermitteln.
      Unterstützte Auszeichnungssprachen (Versionen)
      Unterstützte Scriptsprachen (Versionen)
      Unterstützte Grafikformate (JPG, BMP, PNG, GIF, WBMP)
      Displaygösse und Farben
      Nutzbare Displaygrösse
      ....

      Als Basis dienen die Angaben im Request-Header.

      * Verfahren 1 User Agent Profile:
      Ein User Agent Profile ist eine xml-Datei die vom Handyhersteller ins Internet gestellt wird und das Gerät beschreibt. Hier das Siemens S65 als Beispiel http://communication-market.siemens.de/portal/UAProf/UAP.aspx?device=S65&v=50
      Der URL für das entsprechende UAProfile findet sich in einem der folgenden Header:
      HTTP_PROFILE, HTTP_X_WAP_PROFILE, manchmal auch noch HTTP_X_WAP_REMOVEDPROFILE.
      Wenn diese Einträge nichts erbringen gibt es noch die Möglichkeit die letzte Zahl des
      HTTP_OPT Eintrages zu ermitteln (den s.g. Namespace z.b. 35)
      Dann sollte ein Headereintrag HTTP_35_PROFILE (35 muss die Namespacenummer sein) den URL zum UAProfile enthalten.
      Das Verfahren wird unter http://www.developershome.com/wap/detection/detection.asp?page=uaprof beschrieben.
      Wenn also ein gültiger URL gefunden wurde muss mein Script nur noch den xml-File downloaden und die gesuchten Werte parsen.
      Leider gibt es nicht zu jedem Endgerät eine UAProfile. Daher weiter mit

      * Verfahren 2 Porprietäre Headereinträge
      Viele Handys schicken "Eigenbau" Hederangaben mit. Einige Beispiele:
      HTTP_UA_PIXELS, HTTP_X_UP_DEVCAP_SCREENPIXELS, HTTP_X_JPHONE_DISPLAY, HTTP_UA_COLOR, HTTP_UA_OS usw.
      Daraus lässt sich einiges ableiten aber leider nicht alles und daher weiter mit

      * Verfahren 3 Wurfl
      Das Projekt Wurfl http://wurfl.sourceforge.net/ stellt einen riesigen xml-file zur Verfügung aus dem man nach einem Fallback-Parsingverfahren anhand des HTTP_USER_AGENT sehr viel über das verwendete Engerät erfahren kann. Besondere Stärke ist hier die Angabe über den nutzbaren Displabereich. Aber auch Wurfl kennt nicht alle Geräte und daher weiter mit dem letzten Schritt.

      * Verfahren 4 Allgemeine Headeranaben
      So kann man z.b. die unterstützten Grafikformate aus dem HTTP_ACCEPT herauslesen.
      oder ein Eintrag wie HTTP_USER_AGENT: Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; Smartphone; 176x220; SPV C500; OpVer 4.1.8.1) lässt Schlüsse auf die Displaygrösse zu. Usw.

      Wenn das alles durch ist sollte ich für die meisten Endgeräte brauchbare Daten haben.

      Mein Posting hier sollte mir helfen die Zuverlässigkeit des Systems zu prüfen und ggf. neue Wege bzw. proprietäre Einträge zu finden. Leider gab es nur einen einzigen Handyrequest auf meine Testseite (Danke an Martin Hölter!) so dass ich derzeit zwar von einer 100%igen Auflösungsquote sprechen kann. Allerdings eben auf einer winzigen Basis von weniger als 10 Endgeräten.

      l.g. Karl :-)´

      1. Hi,

        Wenn Du was besseres hast, bitte posten. ;)
        Das Script ist inzwischen über 2000 Zeilen lang und war verdammt viel Arbeit. Verzeih mir also bitte wenn ich es hier nicht poste.

        :)

        Das Prinzip erkläre ich aber gern:

        Mir geht es nur um die Display-Eigenschaften - der Rest ist bekannt.

        Konkret:

        Ich verwende die Angaben des UserAgents, wobei sich die Frage stellt: Nimmst Du ein RegExp (wie ich) oder analysierst Du "per Hand". Wenn Du auch eine RegExp verwendest: Ist sie besser? :-)

        Ansonsten nutze ich halt ebenfalls den Request-Header, aber ...

        Viele Handys schicken "Eigenbau" Hederangaben mit. Einige Beispiele:
        HTTP_UA_PIXELS, HTTP_X_UP_DEVCAP_SCREENPIXELS, HTTP_X_JPHONE_DISPLAY, HTTP_UA_COLOR, HTTP_UA_OS usw.

        ... eben nur HTTP_UA...

        Wenn Du also eine Übersicht über die anderen Header posten könntest, wäre das schön. Die restlichen Infos würde ich mir dann selbst zusammensuchen. ;-)

        Mein Posting hier sollte mir helfen die Zuverlässigkeit des Systems zu prüfen und ggf. neue Wege bzw. proprietäre Einträge zu finden.

        Du weißt, daß es eine engl. Seite gibt, auf der Mobile-UAs gesammelt werden? Müßte nur den URL rauskramen ...

        Gruß, Cybaer

        --
        Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
        1. Hallo Cybaer

          Ich verwende die Angaben des UserAgents, wobei sich die Frage stellt: Nimmst Du ein RegExp (wie ich) oder analysierst Du "per Hand". Wenn Du auch eine RegExp verwendest: Ist sie besser? :-)

          Nein ich verwende keine RegExps.
          Zum einen bleibt mein Code dadurch während der Entwicklung zumindest für mich leichter lesbar. Und zum anderen gibt es einfach zu viele "kleine" Unterschiede.

          Wenn Du also eine Übersicht über die anderen Header posten könntest, wäre das schön. Die restlichen Infos würde ich mir dann selbst zusammensuchen. ;-)

          Leider habe ich keine vollständige Liste der proprietären Headerangaben zur Displaygrösse. Aber Hier das was ich bisher weiss:

          HTTP_UA_PIXELS, HTTP_X_UP_DEVCAP_SCREENPIXELS, HTTP_X_JPHONE_DISPLAY
          für alle 3 gilt IMHO:
          enthalten 2 Werte: Breite u. Höhe in dieser Reihenfolge
          Trennzeichen kann *(stern) ,(beistrich) oder x sein
          Überall können ein oder mehrere Leerzeichen vorkommen
          bsp.:
          HTTP_UA_PIXELS: 176x220
          HTTP_X_UP_DEVCAP_SCREENPIXELS: 128, 160
          HTTP_X_UP_DEVCAP_SCREENPIXELS: 128,112
          HTTP_X_JPHONE_DISPLAY: 240*260

          Ausserdem gibt Windows CE Smartphone und PPC manchmal (nicht immer siehe letztes Beispiel) die Displaygrösse im HTTP_USER_AGENT mit
          Hier kann man sich ganz gut auf die Formate:
          Windows CE; Smartphone; BBBxHHH
          Windows CE; PPC; BBBxHHH
          verlassen bsp.:
          HTTP_USER_AGENT: Mozilla/2.0 (compatible; MSIE 3.02; Windows CE; Smartphone; 176x220)
          HTTP_USER_AGENT: Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC; 240x320)
          HTTP_USER_AGENT: Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; Smartphone; 176x220; SPV C500; OpVer 4.1.1.4)
          HTTP_USER_AGENT: Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC; SPV M5000; Configuration/CLDC-1.1)

          Für die Farbe kenne ich nur zwei Angaben:
          HTTP_UA_COLOR enthält das wort "color" gefolgt (ohne Leerzeichen) von der Bitanzahl je Pixl
          bsp.: HTTP_UA_COLOR: color16
          und
          HTTP_X_UP_DEVCAP_SCREENDEPTH enthält die Farbanzahl
          bsp.:
          HTTP_X_UP_DEVCAP_SCREENDEPTH: 65536

          Du weißt, daß es eine engl. Seite gibt, auf der Mobile-UAs gesammelt werden? Müßte nur den URL rauskramen ...

          Es wäre toll wenn du den URL "rauskramen" könntest.

          l.g. Karl :-)´

          1. Hi,

            Leider habe ich keine vollständige Liste der proprietären Headerangaben zur Displaygrösse.

            Wie? Es gibt *noch* mehr? =;-)

            Aber Hier das was ich bisher weiss:

            Danke vielmals - inkl. Beispiel - geil! :-))

            Ausserdem gibt Windows CE Smartphone und PPC manchmal (nicht immer siehe letztes Beispiel) die Displaygrösse im HTTP_USER_AGENT mit

            Ich schaue zuerst im "Display"-Header nach, dann im UA, und wenn alles nichts hilft, wird geschaut, ob ein spezifische Werte im Request-Array liegen (wo dann Werte sein können, die man via URL-Parameter eingegeben hat bzw. im Cookie bereits ermittelte Werte - z.B. via JS).

            Es wäre toll wenn du den URL "rauskramen" könntest.

            Mobile Browser ID (User-Agent) Strings

            Schreibst Du dem Autor, daß er doch vielleicht mal die Sammlung um spezielle Request-Header erweitern möge?! Scheint mir dann dochwohl sinnvol zu sein ... ;-)

            Gruß, Cybaer

            --
            Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
      2. Hallo,

        Das Script versucht Anhand 4 verschiedener Verfahren die wichtigsten Infos über den Client zu ermitteln.
        Unterstützte Auszeichnungssprachen (Versionen)
        Unterstützte Scriptsprachen (Versionen)
        Unterstützte Grafikformate (JPG, BMP, PNG, GIF, WBMP)
        Displaygösse und Farben
        Nutzbare Displaygrösse
        ....

        Was macht man mit den Daten überhaupt? Eine anpassungsfähige Site zu bauen, die auf all diese Parameter reagiert, ist wohl utopisch.

        Mathias

        1. Hallo Mathias

          Was macht man mit den Daten überhaupt? Eine anpassungsfähige Site zu bauen, die auf all diese Parameter reagiert, ist wohl utopisch.

          Doch. Genau das ist das Ziel und so aufwendig ist das gar nicht.
          Voraussetzung ist natürlich, dass die Inhalte getrennt von einer Formatierung vorliegen. Z.B. in einer Datenbank.

          Dann brauchst du nur ein Script, das (nach der Handyanalyse) die Inhalte im entsprechenden ML-Format (HTML, WML usw.) zurückschickt. Dieses Script ist zwar etwas aufwendig muss aber nur einmal geschrieben werden.

          Wenn die Scriptsprachenerkennung Javascript=Ja zurückgibt kannst du z.B. einen Zurücklink mit javascript:hitory.back realisieren usw.

          Bilder werden natürlich nicht direkt eingebunden sondern über ein anders Script aufgerufen. Diesem Script werden neben der Quelle des Originalbildes noch Parameter wie relative Grösse zum Display oder Rotationsverhalten (Bild = Querfomat, Display = Hochformat) usw. übergeben.
          Das Bilderscript holt das Originalbild (dreht es) Rechnet es auf die gewünschte Grösse (z.B. halbe Displaygrösse) und wandelt es in ein Format um, dass vom Handy verstanden wird.
          Auch ein bisserl aufwendig aber eben nur ein mal.

          Ich hab das ganze testhalber schon für eine Schulhomepage gemacht und es funktioniert wunderbar.

          Würde mich übrigens über einen Aufruf meiner Testseite mda.trumedia.at mit deinem Handy freuen.

          l.g. Karl :-)´

          1. Hallo.

            :-)´

            Du tropfst.
            MfG, at

            1. Uff

              :-)´

              Du tropfst.

              Ich rauche! (So lange das noch erlaubt ist)

              l.g. Karl :-)´

              1. Hallo.

                Ich rauche! (So lange das noch erlaubt ist)

                l.g. Karl :-)´

                Ach so. Das wäre be mir :-! gewesen, oder eben :-? fürs Pfeiferauchen. Aber dann sieht man natürlich so aus, als sei einem das Lachen schon vergangen.
                MfG, at