hotti: Systeminformationen einsammeln

hi,

zum Tracken des Surfverhaltens von Besuchern (woher er kommt, welche Seiten guckt er noch so an) muss ich die auseinanderhalten. Z.Z. mache ich das so, dass ich aus mehreren Angaben, die der UA im Request-Header mitschickt, eine Checksumme bilde, die als 'hugo' in meine Log-DB geschrieben wird. Das klappt soweit ganz gut, aber es gibt Hugos, die sind trotz gleicher Checksumme wahrscheinlich nicht auf einen Rechner zurückzuführen, weil die requesteten URLs nicht so richtig zusammenpassen. Das kommt zwar selten vor, aber ich hätte trotzdem gerne mehr Summanden für die Checksumme.

Wg. eines Threads heute morgen (Danke Kalle), kam mir die Idee mit der Zeitzone, das wäre schonmal was. Bevor ich das jetzt einbaue, wollte ich mal fragen, was es noch so gibt, was JS-seitig geliefert werden kann?

Viele Grüße,
Horst Haselhuhn

  1. Egal was du tust, eine Prüfsumme/Hash ist niemals eindeutig. Wenn du nun weitere Variablen hinzufügst, verschiebst du eine Kollision nur an eine andere Stelle.

    1. Egal was du tust, eine Prüfsumme/Hash ist niemals eindeutig. Wenn du nun weitere Variablen hinzufügst, verschiebst du eine Kollision nur an eine andere Stelle.

      Ich bin der Kollisionspunkt ;-)

      Mir gehts nur um private Statistiken. Nunja, mittlerweile hab ich eine kleine Sammlung:

        
      	function hugo(){  
      		var huhn = new Date;  
      		var hugo =  
      			navigator.appName +  
      			navigator.appVersion +  
      			navigator.language +  
      			navigator.platform +  
      			navigator.cookieEnabled +  
      			navigator.mimeTypes.length +  
      			navigator.plugins.length +  
      			huhn.getTimezoneOffset();  
        
      			return(encodeURIComponent(hugo));  
      	}  
      
      

      Viele Grüße,
      Horst Unwahrscheinlich

      --
      Rechne damit, dass Du rechnen musst.
      1. hi,

        Mir gehts nur um private Statistiken. Nunja, mittlerweile hab ich eine kleine Sammlung:

        function hugo(){
        var huhn = new Date;
        var hugo =
        navigator.appName +
        navigator.appVersion +
        navigator.language +
        navigator.platform +
        navigator.cookieEnabled +
        navigator.mimeTypes.length +
        navigator.plugins.length +
        huhn.getTimezoneOffset();

          	return(encodeURIComponent(hugo));  
        

        }

          
        Läuft seit ein paar Tagen. Ich hab noch ein bischen was aus der CGI-Umgebung hinzugenommen:  
          
        ~~~php
          
        			$hugo  = isset($_GET['hugo']) ? $_GET['hugo'] : '';  
        			$hugo .= isset($_SERVER["HTTP_ACCEPT"]) ? $_SERVER["HTTP_ACCEPT"] : '';  
        			$hugo .= isset($_SERVER["HTTP_ACCEPT_LANGUAGE"]) ? $_SERVER["HTTP_ACCEPT_LANGUAGE"] : '';  
        			$hugo .= isset($_SERVER["HTTP_ACCEPT_ENCODING"]) ? $_SERVER["HTTP_ACCEPT_ENCODING"] : '';  
        			$hugo .= isset($_SERVER["HTTP_USER_AGENT"]) ? $_SERVER["HTTP_USER_AGENT"] : '';  
        			$hugo  = md5($hugo);  
          
        
        

        Was mit JS, obenstehend eingesammelt wird, kommt als Parameter 'hugo' beim LoggerSCript an, alles zusammen wird zu einer Checksumme verwurstet (md5).

        Kollisionen konnte ich in der bisherigen Testphase nicht feststellen und wenn es welche gäbe, wären die für meine privaten Statistiken belanglos. Das Surfverhalten der Besucher auf meiner Seite kann ich damit schonmal vorzüglich tracken und ich sehe auch, wer nach ein paar Tagen wiederkommt. Ich denke, das ist eine interessante Alternative zu einem Cookie.

        Horst

      2. Lieber hotti,

          var huhn = new Date;  
        

        aha...

        Liebe Grüße,

        Felix Riesterer.

        --
        ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)
        1. hi Felix,

            var huhn = new Date;  
          

          aha...

          Für das Ganze gibts sogar einen irrsinnigen Namen: siehe Thema ;-)

          Viele Grüße!
          Hotti, das verrückte Huhn

          1. Lieber hotti,

              var huhn = new Date;  
            

            aha...

            Für das Ganze gibts sogar einen irrsinnigen Namen: siehe Thema ;-)

            ich wollte eigentlich auf die fehlenden Klammern aufmerksam machen. Vergleiche:

            var huhn = new Date; // k.A. was hier passieren wird...  
            var schaf = new Date(); // Hier bekommst Du ein Datumsobjekt zurück!
            

            Liebe Grüße,

            Felix Riesterer.

            --
            ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)
            1. moin,

              ich wollte eigentlich auf die fehlenden Klammern aufmerksam machen. Vergleiche:

              var huhn = new Date; // k.A. was hier passieren wird...

              var schaf = new Date(); // Hier bekommst Du ein Datumsobjekt zurück!

                
              Danke Felix!!!!!  
                
              Viele Grüße,  
              Horst Haselhuhn
              
            2. Hi,

              ich wollte eigentlich auf die fehlenden Klammern aufmerksam machen.

              Wenn keine Parameter zu übergeben sind, dann kann der Konstruktor eines Objektes in JavaScript auch ohne Klammern aufgerufen werden.

              var huhn = new Date; // k.A. was hier passieren wird...

              var schaf = new Date(); // Hier bekommst Du ein Datumsobjekt zurück!

                
              Du bekommst in beiden Fällen ein Date-Objekt zurück, das auf dem aktuellen Timestamp basiert.  
                
              MfG ChrisB  
                
              
              -- 
              “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]