Cookieloses Tracking für Webseiten & cookieless Lösung
  • Kategorie: entwicklung
  • Autor: Michael Stötzel
  • Datum: 27. September 2023
  • teilen teilen

FAQs

Was ist Tracking?

Damit ist gemeint, den Weg des Besuchers (seinen Track) zu verfolgen. So können Marketingmaßnahmen geprüft werden. Man erkennt, wie viele Besucher die eigene Seite besucht haben und was sie dort geklickt haben.

Was brauche ich zum Tracken?

Meistens sind das kleine Javascripte oder Grafikpixel, die man in den Quellcode der eigenen Seite einbaut. Diese führen dann auf den externen Servern bestimmte Funktionen aus und sammeln die Daten.

Was ist das Problem beim Tracking?

Um den Weg des Besuchers zu verfolgen werden meist externe JavaScripts eingebunden. Das alleine ist schon ein Datenschutzproblem, da Deine IP-Adresse ja mit übermittelt wird, so ein Personen Bezug hergestellt werden kann. Das bedarf der Einwilligung des Besuchers. Oft werden aber weitere personenbezogene Daten erhoben oder in Cookie gespeichert. Also entweder Einwilligungen des Besuchers holen oder auf Datenerhebung verzichten, die auf eine Person zurückführbar sind.

Auf einen Blick

Was ist Cookieloses Tracking?


Unter Tracking versteht man das auslesen des Besucherverhaltens auf der Webseite. Dazu werden oft sogenannte Cookies genutzt. Seit der DSGVO aus dem Jahre 2018 sind die Cookies jedem bekannt. Das sind kleine Textdateien, die auf Deinem Rechner gespeichert werden und die Informationen über Dich zu einer Webseite speichern. So kannst Du wieder erkannt werden, wenn Du die Webseite besuchst. Ideal einsetzbar ist sowas für Warenkörbe und Merklisten.
Cookieless – oder eben Cookieloses Tracking ist im Prinzip das gleiche, aber ohne Cookies zu nutzen.

Was brauche ich zum Tracken?


Es gibt massig Tools und Scripte, die einem das Tracking ermöglichen. Ich habe schon Trackingwüsten erlebt, wo der Quellcode vollgestopft war mit solchen Codes und teilweise waren die doppelt vorhanden. Am meisten wird Google Analytics genutzt. Das hat auch eine cookieless-Variante. Wenn man sehr viele scripte und Pixel (so heißen die auch manchmal) nutzt, bietet sich der Google Tagmanager an. Dort kann man scripte sammeln und installiert das eine Script vom Tagmanager auf der eigenen Seite.

Trackingdaten im Überblick:



  • Besucherzahl:
    Mit dem Tracking kannst du feststellen, wie viele Besucher deine Seite besucht haben. Moderne Trackingtools filtern dann auch Bots – also Programme aus und zähen nur echte Besucher.



  • Wiederkehrende Besucher:
    Mit cookies können bei den Nutzern kleine Textdateien gespeichert werden, die den besucher auf deiner Seite wiedererkennbar machen. Cookieless Tracking stösst hier an seine Grenzen und erkennt oft jeden Besucher als neu.



  • Referer:
    Woher kommt der Besucher auf deine Seite. Von der Suchmaschine, von einer anderen Seite, direkt über eingabe der Adresse im Browser?



  • Absprungraten:
    Analysetools können auch zeigen, wo deine Besucher event. deine Seite verlassen und so Aufschluss geben, wo das Problem liegt.



  • Vieles mehr:
    Analyseprogramme wie Google Analytics sind umfangreich und bieten viele Optionen. Wichtig ist es, sich mit den Daten zu beschäftigen und diese auch richtig zu interpretieren. Das ist leider nicht so einfach.


Was nutzt das Tracking?


Wenn man die Bewegungen auf der Seite feststellen und wissen möchte, ob Marketingmaßnahmen fruchten, ist Messen der Zugriffe erforderlich. Das große Problem ist aber die umfangreiche Auswertung. Die Tools sind oft mega überfrachtet und man ist am Ende nicht viel schlauer. Zudem schalten viele das Nachverfolgen durch den Browser ab oder verhindern mit den Cookie-Banner grundsätzlich die Auswertung. Man braucht also schon Einarbeitung, um die Daten der Auswertungen auslesen und richtig interpretieren zu können.

Tracking und Datenschutz


Das Thema Datenschutz ist schon komplex und ich möchte hier nochmal darauf hinweisen, dass es hier keine Rechtsberatung gibt. Ich gebe wieder, was ich aus meiner Recherche und Erfahrung sagen kann. Zudem auch hier noch der Hinweis, dass ich keinerlei cookiebasiertes Tracking betreibe.
Was den Datenschutz angeht, muss Tracking mit Cookies natürlich immer durch den Besucher über ein Cookie-Banner bestätigt werden. Pixel oder Scripte ohne Einwilligung sind nicht erlaubt. Und das gilt vor allem auch dann, wenn diese vor dem Cookiebanner schon gesetzt werden. Aber auch das cookieless Tracking ist nicht generell erlaubt. Manche Techniken versuchen einen Umweg über Browserkennung, IP-Adresse und diverse andere Techniken zu gehen. In vielen Fällen kann so aber ein Personenbezug hergestellt werden. Genau das ist nämlich der Punkt: Kann den Daten eine eindeutig Person zugeordnet werden – fällt das in den Datenschutz und die Einwilligungspflicht.
Lösung: Cookieless tracking OHNE eindeutige Nutzerzuordnung.

Kann ich denn jetzt trotzdem Daten sammeln?


Die einfache Antwort: JA
Die Lösung für cookieless Tracking ist aber nicht so einfach. Für ein älteres Projekt habe ich da nach einer Lösung gesucht und mir viele Tools angeschaut. Da ich aber selber Softwareentwickler bin und kleine, einfach Tools liebe, habe ich mir eine eigene Lösung überlegt. Mir war wichtig, keinen Personenbezug zu haben, aber trotzdem Aktionen auf der Webseite einem Besucher zuordnen zu können. So habe ich zwar keine Möglichkeit, demographische Daten zu erheben, das Betriebssystem des Besuchers in Erfahrung zu bringen. Ich kann ihn aber wiederzuerkennen und sehe, welchen Weg er geht.
Das Ganze basiert auf Javascript und php und funktioniert so, dass beim Aufruf eine zufällige Session-ID erstellt wird. Diese nutzt keinerlei Parameter, sondern ist eine zufällige Folge von 20 Zeichen. Das sollte ausreichen, um den Besucher eindeutig an dem Tag zu identifizieren.
Nun wird jeder Klick über Ajax in einer monatlichen Logdatei gespeichert ( bsp. Logdatei092023.txt ) und bekommt einen solchen Eintrag:
Datum: 2023-09-27 12:09:16| Element=IMG| Name=button_1| Linkziel=undefined| Text=| alt-Tag=| SRC=https://www.mst-netsolutions.de| URL=https://www.mst-netsolutions.de|referer=www.google.de|session= M6wGTXJEulTLi2FD1atl
Diese Logdatei wird dann mit einem WordPress-Plugin grafisch ausgewertet. Im Prinzip kann die aber auch ganz einfach mit Google Drive oder Excel ausgewertet werden.
So bekommst Du verschiedene Daten und auch Deine Besucherzahlen. Wenn Du jetzt noch die Bots über den Code ausschließt, kannst Du sogar echte Besucher ermitteln.
alt=lösung für cookieless-tracking in Javascript und php

LÖSUNG FÜR COOKIELESS TRACKING


Ok, dann hier mal ein paar Tipps zu selbst umsetzen.

UM DIE ZEITEN ZU FORMATIEREN, GIBT ES EINE KLEINE FUNKTION IN JAVASCRIPT:


function msttrackingtool_ZeitFormat (Zeit) {
while (Zeit.toString().length < 2) {
Zeit = "0" Zeit;
}
return Zeit;
}

IN DIE JAVASCRIPT-DATEI PACKT MAN ALS ERSTES DIE GENERIERUNG DER SESSION-ID:


const urlParams = new URLSearchParams(window.location.search);
if (urlParams.get('mst') ){
mst_session = 'mst';
}else{
if(typeof(Storage) !== "undefined") {
// Code for localStorage/sessionStorage.
// SessionID erzeugen
const characters ='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';

let result1= ' ';
const charactersLength = characters.length;
if(typeof(localStorage.session) !== "undefined") {
if ( localStorage.session ==""){
for ( let i = 0; i < 20; i ) {
result1 = characters.charAt(Math.floor(Math.random() * charactersLength));
}
localStorage.session = result1;
mst_session =result1;
}else{
mst_session =localStorage.session;
}
}else{
for ( let i = 0; i < 20; i ) {
result1 = characters.charAt(Math.floor(Math.random() * charactersLength));
}
localStorage.session = result1;
mst_session =result1;
}
} else {
// Sorry! No Web Storage support..
console.log("Sorry! No Web Storage support" );
if (window.location.indexOf('clid=')>=0) mst_session = window.location.split('=').pop();
}
}

Wir erzeugen eine zufällige ID und speichern diese in der lokalen Session des Browsers. So bleibt sie über die gesamte Sitzung erhalten. Zusätzlich habe ich eingebaut, dass man eine Seite mit dem Parameter ?mst=mst aufrufen kann, so dass die SessionID mst erzeugt wird, mit der nichts aufgezeichnet wird.

NUN FANGEN WIR AB, WENN EIN EVENT STATTFINDET, ALSO HIER EIN SEITENAUFRUF:


var mstEvent;
var mst_referer = document.referrer;
EventName = "Seitenaufruf= " window.location "|referer=" mst_referer "|session=" mst_session;
if ( EventName != EventNameAlt ){
EventNameAlt = EventName;
}else{
EventName = "";
}
var heute = new Date();
var tag = heute.getDate();
var monat = mst_tracking__ZeitFormat(heute.getMonth() 1); // 1, weil 0 in der Funktion der erste Monat ist!
var jahr = heute.getFullYear();
var stunde = mst_tracking__ZeitFormat(heute.getHours());
var minute = mst_tracking__ZeitFormat(heute.getMinutes());
var sekunde = mst_tracking__ZeitFormat(heute.getSeconds());
var uhrzeit = jahr "-" monat "-" tag " " stunde ":" minute ":" sekunde;

if ( EventName != "" ) {
$.ajax({
type:"POST",
data: "Geklickt=Datum: " uhrzeit "| " EventName,
url: "../server.php",
success: function(data){
}
}); // END Ajax
}

Das aktuelle Datum und die Zeit, formatieren die entsprechend und speichern alles zusammen über die server.php in eine Logdatei.

SERVER.PHP ZUM SPEICHERN DER LOGDATEI:



$Tag = date("mY");       
$myFile = "logfile".$Tag.".txt";
$fh = fopen($myFile, 'a ') or die("can't open file");
$stringData =implode('|',$_POST) ;
fwrite($fh, $stringData."\r\n");
fclose($fh);
?>

Das wars eigentlich schon. Wenn Du auch noch die Clicks auf einzelne Elemente tracken möchtest, geht das über die click()-Funktion von JQuery:

KLICKS TRACKEN:


$('body').click(function(){
var mstEvent;
if (window.event) Geklickt = window.event; // ältere IE (MSEventObj)
if (Geklickt.target) mstEvent = Geklickt.target; // andere Browser
else if (Geklickt.srcElement) mstEvent = Geklickt.srcElement; // ältere IE

var Elementtyp = mstEvent.nodeName;
var Linkziel = mstEvent.href;
var Name = mstEvent.name;
var Value = mstEvent.value;
var Original = mstEvent.innerText;

Original = Original.replace(/[\n\r]{1,2}/g," "); // Zeilenumbrüche entfernen
var HTMLFrei = Original.replace(/(<([^>] )>)/ig,"");
var Text = HTMLFrei;
var alt = mstEvent.alt;
var src = mstEvent.src;

if ( mstEvent.name == "" ) mstEvent.name = mstEvent.id;
if ( mstEvent.name == "" ) mstEvent.name = Text;

if ( ( mstEvent.nodeName != "BODY" ) ){
EventName = "Element=" mstEvent.nodeName "| Name=" mstEvent.name "| Linkziel=" Linkziel "| Text=" Text "| alt-Tag=" alt "| SRC=" src "| URL=" window.location "|referer=" mst_referer "|session=" localStorage.session;

if ( EventName != EventNameAlt ){
EventNameAlt = EventName;
}else{
EventName = "";
}
}
var heute = new Date();
var tag = heute.getDate();
var monat = mst_tracking__ZeitFormat(heute.getMonth() 1); // 1, weil 0 in der Funktion der erste Monat ist!
var jahr = heute.getFullYear();
var stunde = mst_tracking__ZeitFormat(heute.getHours());
var minute = mst_tracking__ZeitFormat(heute.getMinutes());
var sekunde = mst_tracking__ZeitFormat(heute.getSeconds());
var uhrzeit = jahr "-" monat "-" tag " " stunde ":" minute ":" sekunde;

// Speichern in logdatei
if ( EventName != "" ) {
$.ajax({
type:"POST",
data: "Geklickt=Datum: " uhrzeit "| " EventName,
url: "../server.php",

success: function(data){
}
}); // END Ajax
}
});

ACHTUNG: Der Code ist nicht so zu verwenden, bzw. muss getestet werden. Ich habe den hier reinkopiert aus meinen alten Scripten und er ist so nicht getestet. Das ganze dient als Anhaltspunkt, wie sowas zu lösen

Fazit



  • Cookieloses Tracking ist möglich

  • Achte auf lokal installierte Scripte

  • Keine personenbezogene Daten erheben = cookieless Tracking

  • Suche eine einfache Lösung, die auch die Ladezeit nicht belasten