Beitrag wurde zuletzt am aktualisiert

Piwik und die Lebensdauer der Cookies

Piwik Cookie Lebensdauer

Dank des Kommentars von Thomas zum Artikel Piwik und der Datenschutz hier auf redirect301.de habe ich mir das Cookie-Problem bei der Verwendung von 1st Party Cookies in Piwik nochmal näher angesehen und augenscheinlich auch eine Lösung gefunden.
Aber von vorn – und bitte kommentiert, falls ihr euch ebenfalls mit diesem Thema befasst.

Das Unabhängige Landeszentrum für Datenschutz Schleswig-Holstein ver­öffentlichte am 15. März 2011 ihre „Hinweise und Empfehlungen zur Analyse von Internet-Angeboten mit Piwik“ auf www.datenschutzzentrum.de. Hier wurde unter Punkt 3.6 „Lebensdauer von Piwik-Cookies setzen und verringern“ beschrieben, wie man als an Datenschutz interessierter Webmaster die Cookie-Lebensdauer von 2 Jahren auf die hier genannten 2 Stunden herab setzt. Ob ich damals einfach diese Aussage als „korrekt“ angesehen und diese Konfiguration so übernommen hatte oder ob ich wirklich Tests mit den Cookies durchgeführt habe, weiß ich nicht mehr.

Die alten 3rd Party Cookies bei Piwik

Ab Version 1.2 setzt Piwik auf 1st Party Cookies (siehe Changelog). Somit wird wohl mit Einführung dieser Version das hier beschriebene Verfahren zur Verringerung der Cookie-Lebensdauer hinfällig geworden sein. Die hier und bei der ULD beschriebene Konfiguration greift nämlich nur bei den 3rd Party Cookies. Kaum jemanden ist seit dem wirklich aufgefallen, dass Piwik fleißig Cookies mit 2 Jahren Lifetime setzt, obwohl „man sich sicher ist“, diese in der Konfigurationsdatei deaktiviert zu haben.

Die Cookie-Gültigkeitsdauer direkt im Tracking-Code

Direkt im JavaScript-Code für die Piwik-Einbindung, dem Tracking-Code, lassen sich die entsprechenden Einstellungen zur Cookie-Lifetime-Behandlung setzen. In diesem Beispiel habe ich diese Zeit auf 604.800 Sekunden (7 Tage) gesetzt. Natürlich wäre auch „0“ möglich, womit beim Schließen des Browsers das Cookie gelöscht wird.

<!-- Piwik -->
<script type="text/javascript">
var pkBaseURL = (("https:" == document.location.protocol) ? "https://analytics.weihmann.de/" : "http://analytics.weihmann.de/");
document.write(unescape("%3Cscript src='" + pkBaseURL + "piwik.js' type='text/javascript'%3E%3C/script%3E"));
</script><script type="text/javascript">
try {
var piwikTracker = Piwik.getTracker(pkBaseURL + "piwik.php", 12);
piwikTracker.setVisitorCookieTimeout('604800');
piwikTracker.setSessionCookieTimeout('0');
piwikTracker.trackPageView();
piwikTracker.enableLinkTracking();
} catch( err ) {}
</script><noscript><p><img src="http://analytics.weihmann.de/piwik.php?idsite=12" style="border:0" alt="" /></p></noscript>
<!-- End Piwik Tracking Code -->

Achtung!

Wichtig sind hierbei diese beiden Zeilen an der richtigen Stelle im JavaScript-Code, also vor piwikTracker.trackPageView();:

piwikTracker.setVisitorCookieTimeout('604800');
piwikTracker.setSessionCookieTimeout('0');

Wie lange sollte die Cookie-Lifetime sein?

Das Setzen einer Zeit von 2 Stunden, wie die ULD es beispielhaft empfohlen hatte, halte ich für sinnlos. Zumindest bei meinem Surfverhalten ist es recht unwahrscheinlich, dass ich eine Webseite besuche, irgendwann den Browser schließe und vor Ablauf von 2 Stunden nochmals dieser Webseite einen Besuch abstatte. Wer also die wiederkehrenden Besucher erkennen möchte, sollte an dieser Stelle (aus meiner Sicht) mit 7 bis 30 Tage o.ä. arbeiten. Aber das sollte jemand festlegen, der sich ganztägig mit dem Thema Datenschutz befasst und sich möglichst auch mit Webanalyse auskennt.

Die Cookie-Lifetime im Browser überprüfen

Baut die beiden zusätzlichen Funktionen in euren Tracking-Code ein. Nehmt einen beliebigen Browser und löscht alle Cookies (das vereinfacht die Suche nach den Piwik-Cookies, nehmt ggf. nicht euren Standardbrowser) und ruft die entsprechende Webseite auf. Jetzt können die beiden Piwik-Cookies, und vor allem deren Gültigkeitsdauer, näher betrachtet werden.

Piwik setVisitorCookieTimeout: Cookie Lifetime 604.800 Sekunden

Piwik setVisitorCookieTimeout: Cookie Lifetime 604.800 Sekunden

Piwik setSessionCookieTimeout: Cookie Llifetime Session

Piwik setSessionCookieTimeout: Cookie Llifetime Session

Einen Test habe ich bereits vorbereitet. Unter www.piwik-cookie-lifetime.redirect301.de befindet sich eine kleine HTML-Seite mit dem angepassten Code. Hier könnt ihr schon mal einen Blick auf die Cookies werfen, bevor ihr das bei Kundenprojekten versucht.

Bitte hinterlasst einen Kommentar mit den eigenen Erfahrungen. Ich habe diese Piwik-Konfiguration im Test-Einsatz und leider im Piwik-Forum nur spärliche Informationen zu diesem Thema finden können. Wäre also schön, wenn man sich gegenseitig ein paar Tipps geben könnte …

21 Kommentare zu "Piwik und die Lebensdauer der Cookies"

  1. Alles bestens, habe es getestet, es funktioniert. Das Cookie kann nun in seiner Gültigkeit beeinflusst werden!

    Vielen Dank für diese Lösung. Leider verstehe ich selbst in Sachen Code zu wenig als dass ich auf solche Lösungsansätze kommen könnte – das geb ich offen zu.

  2. Sie haben in ihrem Artikel einen Fehler: Sie schreiben von Punkt 3.6 in der Analyse des ULD. Das ULD weist jedoch unter der Konfiguration der beschriebenen zwei Stunden wörtlich: „Es ist zu beachten, dass die in den Beispielen aufgeführten Zahlenwerte reine Beispielwerte sind und keinerlei Empfehlung beinhalten“ (S.13), weiter heißt es: „Das ULD empfiehlt, die Lebensdauer der Tracking-Cookies so kurz wie möglich zu konfigurieren und insbesondere eine Lebensdauer von einer Woche nicht zu überschreiten.“ (S.14)

    Weiter schreiben sie in ihrem Artikel, dass beim Setzen des Wertes für die Lebensdauer auf 0 der Cookie gelöscht würde, wenn man den Browser schließe. Aus eigener Erfahrung kann ich ihnen sagen, dass das Cookie bei einem Wert von 0 nicht einmal gesetzt wird, zumindest wird auf meinen ~50 Seiten kein Set-Cookie-Header gesendet, als ich dies testete.

    Die Funktion wie oben beschrieben funktioniert aber.

    • Danke für die Informationen @Eddie. Stimmt, die ULD empfiehlt beispielhaft nur! Ich werde mir diese Ausführungen nochmals näher ansehen und ggf. die erforderlichen Anpassungen in meinem Artikel vornehmen.
      In meinen Tests wurde immer ein Session-Cookie gesetzt, welcher erst nach dem Schließen des Browsers gelöscht wurde. Das Nichtsetzen wäre natürlich sinnvoller, aber wie gesagt, meine Tests haben ein anderes Ergebnis gezeigt. Mit welchen Browsern haben Sie getestet? Ich weiß, dass ich zumindest die IE-Familie nicht berücksichtigt hatte.

      • Ich lasse mir den Netzwerkverkehr mit Wireshark aufzeichnen und sehe mir hinterher an, ob und wo der Set-Cookie-Header gesendet wurde. Das war bei meinen Seiten nicht der Fall:
        piwikTracker.setSessionCookieTimeout(‚0‘);

        Es wurde nur der Cookie PIWIK_SESSID gesetzt, wenn das Impressum mit dem Opt-Out-IFrame aufgerufen wurde.

        • Also wie schon geschrieben hatte: Wenn ich Browser das Cookie-Handling beobachte, wird bei piwikTracker.setSessionCookieTimeout(’0′); ein Session-Cookie gesetzt, der erst mit dem Schließen des Browsers gelöscht wird. Beim Einsatz von piwikTracker.setSessionCookieTimeout(’-1′); wird kein Session-Cookie gesetzt. Das sind sicherlich Dinge, die man Dank OpenSource und etwas PHP-Verstand recht schnell im Quellcode finden können müsste.
          Wireshark kenne ich, setzte es allerdings nur bei Netzwerk-Problemen ein und brauche jedes Mal einige Zeit mich an die Filterungen zu gewöhnen. Ein klasse Werkzeug wenn man die entsprechende Zeit oder ein Problem hat, was groß genug ist. Um damit Cookies zu „beobachten“ finde ich es ein wenig übertrieben. Schicken Sie mir doch mal einen Ihrer Links (gern auch nicht öffentlich per E-Mail) und ich schaue mal, was bei mir im Browser ankommt …

      • Ich habe mit Wireshark keinerlei Problem – ich gebe einfach den Filter http.set_cookie ein und anschließend werden mir alle Antworten angezeigt, die einen Cookie setzen sollen. Zumindest bei mir geht das wesentlich schneller als alles andere.

        Ich betreibe mehrere Internetseiten über den Server der Schule, an der ich arbeite. Den Server musste ich jedoch am letzten Schultag vor den Ferien herunterfahren musste, sodass ich ihnen leider keinen Link senden kann.

    • Ein erster Test mit einer kleinen Anpassung beim Session Cookie Timeout brachte nun augenscheinlich auch bei mir den Erfolg eines nicht mehr gesetzten Cookies. Welche Auswirkung das auf die Zahlen hat, weiß ich noch nicht und muss dies erst einmal prüfen.

      piwikTracker.setSessionCookieTimeout('-1');

  3. Die Sache mit dem „-1“ war genau das was mir noch fehlte. Danke für deinen Hinweis.

  4. Hallo, bastel auch schon ziemlich lange an den diversen sinnvollen Piwik-Datenschutz-Einstellungen herum.

    Glücklicherweise habe ich Deinen Beitrag hinsichtlich der Cookie-Lebensdauer-Änderung noch gelesen, da hätte mir wohl eine Änderung in der config.ini.php nichts genützt.

    Wenn ich die Lebensdauer im Tracking-Code ändern möchte, kann ich das aber nur so machen, dass ich den Tracking Code per Hand in die footer.php einsetze und die beiden Zeilen

    piwikTracker.setVisitorCookieTimeout(‚604800‘);
    piwikTracker.setSessionCookieTimeout(‚0‘)

    zusätzlich einsetze. Wenn ich das über die Funktion im WP-Plugin machen möchte, lässt sich der Tracking Code nicht ändern.

    Stimmt das so, oder habe ich da was übersehen oder falsch gemacht? Eine Info wäre nett. Michi

    • Hallo Michi,

      wenn du hierfür ein WordPress-Plugin verwendest und dies keine Anpassungen am Tracking-Code zu lässt, dann hat der Entwickler des Plugins dies eben nicht vorgesehen. Sicherlich könnte man ihn anschreiben und vielleicht wird’s ja umgesetzt. Ich persönlich mache dies direkt im Templete, also der footer.php.

  5. Moin Moin

    ich habe vor ein paar Tagen die beiden Codezeilen:

    piwikTracker.setVisitorCookieTimeout(‚604800‘);
    piwikTracker.setSessionCookieTimeout(‚0‘);

    in den jeweiligen Footer-Scripte für eine Webpräsenz (dort läuft Piwik schon seit 2009) eingebaut.
    Seitdem wird allerdings nur noch ca. die Hälfte der Besucher von Piwik gezählt.

    Kennt jemand evtl. die Ursache dafür?

    Danke

  6. @McHunter: Ich habe die oben aufgeführte Anpassung in mehreren Dutzend Webseiten eingebunden. Bei den neueren Projekten den asynchronen Code im Header und beim überwiegenden Teil klassisch im Footer.
    Ich konnte hierbei keine Änderungen der Besucherströme feststellen.

    Hast du die beiden Zeilen an der richtigen Stelle, also nach var piwikTracker, eingebunden?
    Kannst auch gern einen Link posten und schau ich mal in den Quellcode. Manchmal sehen 4 Augen doch mehr als nur 2.

    • Moin Daniel,

      danke für deine Antwort.
      1) Ja, es ist richtig eingebaut wie folgt:
      >>>
      var piwikTracker = Piwik.getTracker(pkBaseURL + „piwik.php“, 1);
      piwikTracker.setVisitorCookieTimeout(‚604800‘);
      piwikTracker.setSessionCookieTimeout(‚0‘);
      piwikTracker.trackPageView();
      piwikTracker.enableLinkTracking();
      <<<

      2) Die beiden Piwik Cookies werden auch richtig im Client gesetzt und angezeigt. Habe es in mehreren Browsern überprüft.

      3) Es ist akt. auch nicht mehr ca. die Hälfte, sondern ca. 1/3 weniger.

      Danke

  7. Sind vielleicht die Besucherzahlen wirklich eingebrochen? Setz‘ doch zusätzlich mal für 1-2 Tage einen weiteren Piwik-Tracking-Code ein. Natürlich mit einer anderen Projekt-Id.

    • Danke Daniel, dass werde ich in Kürze mal testen und dann hier wieder berichten!

    • Moin Daniel,

      nachdem ich gestern dein Tip mit dem Einbau eines 2ten Piwik ID-Code duchgeführt habe, zählt der „neue“ 2te in etwa lediglich nur ca. etwa mehr als 10% der 1ten (also) der bisherigen ID.
      Einen Einbaufehler konnte ich nicht feststellen.
      In dem neuen 2ten Test ID-Code sind ebenfalls deine beiden Cookie Laufzeiten Zeilen enthalten.

      Alles mal sehr merkwürden. Allerdings habe ich in ca. 2 Jahren Piwik Einsatz auf etlichen Webpräsenzen schon einige Piwik Merkwürdenkeiten gesehen bzw. gehabt.

      Evtl. stören sich ja zwei unterschiedliche Piwik ID Tracker!?

  8. Gut, mit 2 Piwik-Einbindungen habe ich bisher noch nicht gearbeitet. Ich habe hier lediglich Piwik und Google Analytics eingebunden, da ich diese beiden Tools demnächst in einem Beitrag miteinander vergleichen möchte und dazu natürlich Werte benötige. Dein Test zeigt aber, dass augenscheinlich wirklich deine Besucherzahlen eingebrochen sind. Woher die 10% Unterschied kommen, kann ich dir nicht beantworten. Möglicherweise wird bei dem einen oder anderen Besucher nur 1 piwik.js wirklich angesprochen, da ein Caching o.ä. greifen könnte. Vielleicht schließen beim Laden deiner Seite auch ein paar Besucher die Seite sofort wieder, sodass ein Piwik-Code noch gar nicht abgearbeitet wurde. Oder dein eigener Server kam nicht ganz hinterher …

    Vielleicht wäre das Piwik-Forum hierfür ein besserer Ansprechpartner.

    Auch ich habe Piwik seit ca. 2 Jahren im Einsatz. Bis auf ein paar Bugs, die aber im Verlauf durch die vielen Versionen behoben wurden, konnte ich nie wirklich Probleme feststellen.

    • Moin Daniel,

      vielen Dank für deine ausführliche Antwort.

      Von Dir:
      >>>
      Woher die 10% Unterschied kommen,..
      <<<

      Es waren nicht 10% Unterschied, sondern es wurden nur 10% von der 1ten, also der richtigen/ursprünglichen Piwik-ID von Piwik gezählt.

      Ja, du hast recht, Piwik kommt nicht damit klar wenn zwei ID-Codes von der gleichen Piwik Installation eingebaut werden.

      Ich habe nun wieder alles zurückgesetzt und nun ist wieder alles " scheinbar – bis jetzt" OK.

      Die Ursache lag – bisher – scheinbar an dem Piwik Image Tracker, sowie dem Piwik PHP Tracking Codes.

      Ich werde das die nächsten Tage weiterhin beobachten.

      Vielen Dank für deinen bisherigen Support.

  9. Danke für den Artikel.

    Ich habe das bei mir auch so umgesetzt. Ich würde aber gerne wissen, mit welchem Cookie Viewer du das Cookie anschaust?

  10. Neben den Visitor Cookie und den Session Cookie scheint Piwik auch einen dritten zu benutzen, den Referral Cookie. Jedenfalls gibt es eine Javascript Methode setReferralCookieTimeout() (siehe http://piwik.org/docs/javascript-tracking/ ). Der Default-Wert ist mit 6 Monaten auch ziemlich hoch, wobei ich keine Ahnung habe, wozu dieser Cookie da ist…

Hinterlasse einen Kommentar

E-Mail Adresse wird nicht veröffentlicht.