<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>TOBSOLUTION &#187; Webanalyse</title>
	<atom:link href="http://www.tobsolution.de/tag/webanalyse/feed" rel="self" type="application/rss+xml" />
	<link>http://www.tobsolution.de</link>
	<description>Neue Medien in Lübeck</description>
	<lastBuildDate>Sun, 05 Sep 2010 12:50:15 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Piwik &amp; Datenschutz (Teil 2)</title>
		<link>http://www.tobsolution.de/webentwicklung/piwik-datenschutz-teil-2</link>
		<comments>http://www.tobsolution.de/webentwicklung/piwik-datenschutz-teil-2#comments</comments>
		<pubDate>Wed, 06 Jan 2010 09:57:16 +0000</pubDate>
		<dc:creator>TOBSOLUTION</dc:creator>
				<category><![CDATA[Webentwicklung]]></category>
		<category><![CDATA[Datenschutz]]></category>
		<category><![CDATA[Online-Tracking]]></category>
		<category><![CDATA[Piwik]]></category>
		<category><![CDATA[Webanalyse]]></category>
		<category><![CDATA[Webanalytics]]></category>

		<guid isPermaLink="false">http://www.tobsolution.de/?p=481</guid>
		<description><![CDATA[Gestern habe ich in einem sehr ausführlichen Bericht Piwik und die Problematik von Webanalyse und Datenschutz vorgestellt. Ich habe ein angepasstes Skript vorgestellt, dass die Opt-Out-Cookie-Funktionalität nachrüstet. Meines Erachtens ist Piwik damit nahe am Optimum dran, aber es geht sogar noch ein kleines bisschen besser. Auszug aus dem Beschluss der obersten Aufsichtsbehörden für den Datenschutz [...]


Related posts:<ol><li><a href='http://www.tobsolution.de/projekte/piwik-in-version-0-5-5-erschienen' rel='bookmark' title='Permanent Link: Piwik in Version 0.5.5 erschienen'>Piwik in Version 0.5.5 erschienen</a></li>
<li><a href='http://www.tobsolution.de/allgemein/piwik-opensource-alternative-zu-google-analytics' rel='bookmark' title='Permanent Link: Piwik: OpenSource-Alternative zu Google Analytics'>Piwik: OpenSource-Alternative zu Google Analytics</a></li>
<li><a href='http://www.tobsolution.de/osx/piwik-auf-dem-iphone-nutzen' rel='bookmark' title='Permanent Link: Piwik auf dem iPhone nutzen'>Piwik auf dem iPhone nutzen</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Gestern habe ich in einem sehr ausführlichen Bericht <a title="Piwik OpenSource Webanalytics" href="http://piwik.org/">Piwik</a> und die Problematik von Webanalyse und Datenschutz vorgestellt.<br />
Ich habe ein angepasstes Skript vorgestellt, dass die <a title="1. Teil der Datenschutzkonfiguration" href="http://www.tobsolution.de/allgemein/piwik-opensource-alternative-zu-google-analytics#fuer-webmaster">Opt-Out-Cookie-Funktionalität</a> nachrüstet.</p>
<p>Meines Erachtens ist Piwik damit nahe am Optimum dran, aber es geht sogar noch ein kleines bisschen besser.<br />
<span id="more-481"></span><br />
<strong>Auszug aus dem Beschluss der obersten Aufsichtsbehörden für den Datenschutz im nicht-öffentlichen Bereich vom 25./26 November 2009 in Stralsund:</strong></p>
<blockquote><p>Die Analyse des Nutzungsverhalten unter Verwendung vollständiger IP-Adressen (einschließlich einer Geolokalisierung) ist aufgrund der Personenbeziehbarkeit dieser Daten  daher nur mit bewusster, eindeutiger Einwilligung zulässig. Liegt eine solche Einwilligung nicht vor, ist die IP-Adresse vor jeglicher Auswertung so zu kürzen, dass eine Personenbeziehbarkeit ausgeschlossen ist.</p></blockquote>
<p>Das heißt, dass der Benutzer einwilligen  muss, damit eine ungekürzte IP-Adresse für das Tracking verwendet werden darf. Es reicht also meines Erachtens nicht, dass er gegen das Tracking widersprechen kann.</p>
<p>Also muss hierfür eine andere Lösung her. Wenn man auf der Suche nach Möglichkeiten ist, Piwik an die datenschutzrechtlichen Bestimmungen in Deutschland anzupassen, stößt man in diversen Blogs auf eine Anpassung, die die Speicherung von IP-Adressen verhindert. Es wird immer nur die IP 0.0.0.0 in die Datenbank geschrieben.<br />
Zwar hat diese Änderung auf die meisten Tracking-Funktionen nur eine geringe Auswirkung, sie verhindert jedoch vollkommen die Möglichkeit, Geotracking via GeoIp (<a title="GeoIp-Plugin" href="http://dev.piwik.org/trac/ticket/45">Plugin für Piwik</a>) durchzuführen.</p>
<p>Also habe ich mir eine kleine Veränderung in Piwik überlegt, die zwar ausreichend anonymisiert, um eine IP nicht mehr eindeutig zu machen, die jedoch gleichzeitig noch die Möglichkeit bietet, Geotracking weitgehend zu ermöglichen, da diese Funktion für viele Seiten und Projekte besonders interessant sein könnte.</p>
<p>Die Lösung ist eine Funktion, die das letzte Segment der IP immer durch eine 0 ersetzt. Theoretisch kommen bei einer IP der Form 1.1.1.0 also 1000 verschiedene Netzwerke in Frage.<br />
Wer sich für die Lösung mit 0.0.0.0 interessiert, bekommt <a title="Pascal90: Piwik - Alternative zu Google Analytics" href="http://www.pascal90.de/2009/12/piwik-eine-alternative-zu-google-analytics/">hier</a> weitere Informationen.</p>
<h3>Ich werde im Folgenden die Veränderungen für die Kürzung der IP beschreiben.</h3>
<p>Alle Änderungen finden in der Datei <strong>/core/Tracker/Visit.php</strong> statt.</p>
<p>Dort sucht man nach der Funktion:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;color: #44687d; font: 12px Consolas, Lucida Console, Monaco, monospace;">protected <span class="kw2">function</span> handleNewVisit<span class="br0">&#40;</span><span class="re0">$actionUrlId</span><span class="sy0">,</span> <span class="re0">$someGoalsConverted</span><span class="br0">&#41;</span></pre></div></div>

<p>Über dieser Zeile (außerhalb der Funktion) wir eine neue Funktion eingefügt:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;color: #44687d; font: 12px Consolas, Lucida Console, Monaco, monospace;"><span class="co1">//Replace last segment with zero</span>
	 protected <span class="kw2">function</span> anonymIp<span class="br0">&#40;</span><span class="re0">$ip</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
	  	<span class="re0">$encryptIp</span> <span class="sy0">=</span> <a href="http://www.php.net/long2ip"><span class="kw3">long2ip</span></a><span class="br0">&#40;</span><span class="re0">$ip</span><span class="br0">&#41;</span><span class="sy0">;</span> <span class="co1">//make real ip of type long</span>
	  	<span class="re0">$ipArray</span> <span class="sy0">=</span> <a href="http://www.php.net/explode"><span class="kw3">explode</span></a><span class="br0">&#40;</span><span class="st0">&quot;.&quot;</span><span class="sy0">,</span> <span class="re0">$encryptIp</span><span class="br0">&#41;</span><span class="sy0">;</span> <span class="co1">//make array, explode segments</span>
	  	<span class="re0">$anonymIp</span> <span class="sy0">=</span> <a href="http://www.php.net/sprintf"><span class="kw3">sprintf</span></a><span class="br0">&#40;</span><span class="st0">&quot;<span class="es6">%u</span>&quot;</span><span class="sy0">,</span> <a href="http://www.php.net/ip2long"><span class="kw3">ip2long</span></a><span class="br0">&#40;</span><span class="re0">$ipArray</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span><span class="sy0">.</span><span class="st0">&quot;.&quot;</span><span class="sy0">.</span><span class="re0">$ipArray</span><span class="br0">&#91;</span><span class="nu0">1</span><span class="br0">&#93;</span><span class="sy0">.</span><span class="st0">&quot;.&quot;</span><span class="sy0">.</span><span class="re0">$ipArray</span><span class="br0">&#91;</span><span class="nu0">2</span><span class="br0">&#93;</span><span class="sy0">.</span><span class="st0">&quot;.0&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span> <span class="co1">//Make new IP with 4 Segments. Last Segment is zero. Rechange type into long and make unsigned </span>
	  	<span class="kw1">return</span> <span class="re0">$anonymIp</span><span class="sy0">;</span> 
	  <span class="br0">&#125;</span></pre></div></div>

<p>Anschließend suchen man die Zeile</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;color: #44687d; font: 12px Consolas, Lucida Console, Monaco, monospace;"><span class="st_h">'location_ip'</span> <span class="sy0">=&gt;</span> <span class="re0">$userInfo</span><span class="br0">&#91;</span><span class="st_h">'location_ip'</span><span class="br0">&#93;</span><span class="sy0">,</span></pre></div></div>

<p>und ersetzt sie durch</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;color: #44687d; font: 12px Consolas, Lucida Console, Monaco, monospace;"><span class="st_h">'location_ip'</span> <span class="sy0">=&gt;</span> <span class="re0">$this</span><span class="sy0">-&gt;</span><span class="me1">anonymIp</span><span class="br0">&#40;</span><span class="re0">$userInfo</span><span class="br0">&#91;</span><span class="st_h">'location_ip'</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="sy0">,</span></pre></div></div>

<p>Die Datei muss anschließend wieder auf dem Server gespeichert werden.<br />
Mehr wird nicht benötigt, um das letzte Segment der IP immer durch eine 0 zu ersetzen.<br />
Das Geotracking funktioniert damit nach wie vor sehr gut, da im wesentlichen nur die ersten drei Segmente benötigt werden. Den Erfolg kann man als Piwik-Admin unter Besucher >> Visitor-Log kontrollieren.</p>
<p><em>Es kann passieren, dass diese Änderungen durch ein Update der Piwik-Software entfernt werden. Nach einem Update ist es also ratsam, diese Stellen zu kontrollieren und den Hack ggf. nocheinmal zu wiederholen.</em></p>
<p><strong>Wichtig:</strong> Alle Änderungen an Piwik geschehen auf eigene Gefahr. Ich übernehme keine Verantwortung. Des Weiteren bin ich kein Jurist. Meine Ausführungen basieren auf meinem jetzigen Wissen und dem Verständnis von dieser Thematik. Ich versuche, die Problematiken nach bestem Wissen und Gewissen zu erklären. Dieser Blog sollte jedoch auf keinen Fall als einzige Informationsquelle zu diesem Thema verwendet werden.</p>


<p>Related posts:<ol><li><a href='http://www.tobsolution.de/projekte/piwik-in-version-0-5-5-erschienen' rel='bookmark' title='Permanent Link: Piwik in Version 0.5.5 erschienen'>Piwik in Version 0.5.5 erschienen</a></li>
<li><a href='http://www.tobsolution.de/allgemein/piwik-opensource-alternative-zu-google-analytics' rel='bookmark' title='Permanent Link: Piwik: OpenSource-Alternative zu Google Analytics'>Piwik: OpenSource-Alternative zu Google Analytics</a></li>
<li><a href='http://www.tobsolution.de/osx/piwik-auf-dem-iphone-nutzen' rel='bookmark' title='Permanent Link: Piwik auf dem iPhone nutzen'>Piwik auf dem iPhone nutzen</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.tobsolution.de/webentwicklung/piwik-datenschutz-teil-2/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Piwik: OpenSource-Alternative zu Google Analytics</title>
		<link>http://www.tobsolution.de/allgemein/piwik-opensource-alternative-zu-google-analytics</link>
		<comments>http://www.tobsolution.de/allgemein/piwik-opensource-alternative-zu-google-analytics#comments</comments>
		<pubDate>Tue, 05 Jan 2010 11:19:27 +0000</pubDate>
		<dc:creator>TOBSOLUTION</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Webentwicklung]]></category>
		<category><![CDATA[Datenschutz]]></category>
		<category><![CDATA[Tracking]]></category>
		<category><![CDATA[Webanalyse]]></category>
		<category><![CDATA[Webdesign]]></category>

		<guid isPermaLink="false">http://www.tobsolution.de/?p=454</guid>
		<description><![CDATA[Zunächst möchte ich die Gelegenheit nutzen, um allen Lesern ein frohes und erfolgreiches neues Jahr 2010 zu wünschen! In der letzten Zeit bin ich leider aus verschiedenen Gründen nicht mehr regelmäßig zum Schreiben gekommen. Dieses Thema, dass für jeden Webmaster inzwischen sehr schwierig geworden ist, hat mich dazu gebracht, wieder einen Artikel zu verfassen. In [...]


Related posts:<ol><li><a href='http://www.tobsolution.de/webentwicklung/piwik-datenschutz-teil-2' rel='bookmark' title='Permanent Link: Piwik &#038; Datenschutz (Teil 2)'>Piwik &#038; Datenschutz (Teil 2)</a></li>
<li><a href='http://www.tobsolution.de/projekte/piwik-in-version-0-5-5-erschienen' rel='bookmark' title='Permanent Link: Piwik in Version 0.5.5 erschienen'>Piwik in Version 0.5.5 erschienen</a></li>
<li><a href='http://www.tobsolution.de/osx/piwik-auf-dem-iphone-nutzen' rel='bookmark' title='Permanent Link: Piwik auf dem iPhone nutzen'>Piwik auf dem iPhone nutzen</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Zunächst möchte ich die Gelegenheit nutzen, um allen Lesern ein frohes und erfolgreiches neues Jahr 2010 zu wünschen!<br />
In der letzten Zeit bin ich leider aus verschiedenen Gründen nicht mehr regelmäßig zum Schreiben gekommen.</p>
<p>Dieses Thema, dass für jeden Webmaster inzwischen sehr schwierig geworden ist, hat mich dazu gebracht, wieder einen Artikel zu verfassen.</p>
<p>In diesem Beitrag geht es zum einen um die Notwendigkeit von Webanalyse, die aktuelle datenschutzrechtliche Lage in Deutschland und die damit verbundenen Schwierigkeiten bei der Nutzung von Webanalytic-Diensten. Darüber hinaus stelle ich die Google-Analytics-Alternative &#8220;Piwik&#8221; kurz vor und beschreibe Möglichkeiten, um diese Software noch datenschutzkonformer zu machen.<span id="more-454"></span><strong> </strong></p>
<p><strong>Direktlinks:</strong></p>
<ul>
<li><a title="Informationen zur Nutzung von Webanalytics in unseren Projekten" href="#fuer-internetnutzer">Informationen für Internetnutzer</a></li>
<li><a title="Vorstellung von Piwik Webanalytics" href="#piwik">Piwik (das eigentliche Thema)</a></li>
<li><a title="weitere (technische) Informationen" href="#fuer-webmaster">weiterführende Informationen für Webmaster und Interessierte</a></li>
</ul>
<h2>Webanalyse vs. Datenschutz</h2>
<h3><strong>Zunächst einmal:</strong> Was sind Webanalyse und Online-Tracking überhaupt?</h3>
<p>Vereinfacht gesagt gibt es diverse Tools und Anbieter, die es ermöglichen, den Besucherfluss einer Webseite zu tracken, d.h. Daten darüber zu erheben, woher die Besucher kommen (z.B. Google, Yahoo, Verlinkungen), welche Unterseiten sie besuchen (z.B. Leistungen, Blog, Referenzen), wonach sie bei Google suchen um auf diese Seite zu kommen, woher sie geografisch kommen (nur ungenau, z.B. Hamburg, Lübeck, Berlin, Spanien) und wie lange sie auf der Internetseite bleiben, auf welcher Seite die meisten Besucher die Seite wieder verlassen und ob die Besucher neu sind, oder evtl. regelmäßig wieder kommen.<br />
Viele Online-Analyse-Tools  bieten zum Teil viele weitere Möglichkeiten.</p>
<h3>Wozu das Ganze überhaupt?</h3>
<p>Viele Menschen denken eher schlecht über Online-Tracking auf Webseiten, da sie den Sinn evtl. nur darin sehen, Nutzer auszuspionieren.<br />
So ist es aber nicht. Keine mir bekannte Tracking-Software bietet eine Möglichkeit dazu, Nutzungsdaten direkt mit einer echten Person in Verbindung zu bringen. Darum geht es schließlich auch garnicht. Für Webentwickler, Suchmaschinenoptimierer (SEOs) und interessierte Kunden geht es vielmehr darum, Informationen über die Nutzung des Online-Angebots zu bekommen, um anhand dieser Daten langfristige Optimierungsstrategien zu planen.<br />
<strong>Ein Beispiel:</strong> Für einen PC-Notdienst aus Lübeck ist es unter Umständen wichtig, zu wissen, dass die meisten Besucher aus Bayern kommen und somit evtl. gar nicht zu seiner Zielgruppe (Umkreis 50km) gehören. Er kann sich also eine gezielte Strategie überlegen, um mehr Besucher aus seiner Region auf die Seite zu bekommen.<br />
<strong>Oder:</strong> Eine Seite wird von den Besuchern meistens über die Unterseite x verlassen. Woran liegt das? Entweder ist der Benutzer genervt, weil er nicht das findet was er sucht, mit der Seite nicht zurecht kommt oder ihn etwas anderes stört. -&gt; Hier besteht Optimierungsbedarf an der Seite, der ohne Webanalyse-Tools vermutlich nicht aufgefallen wäre. Die wesentlich bessere Situation in diesem Fall wäre, dass der Benutzer seine Informationen gefunden hat und zufrieden das Online-Angebot verlässt.</p>
<p>Dieses sind nur zwei einfache Beispiele für den Sinn und Zweck von Web-Analyse. Durch gezielte Optimierung, die anhand der Nutzungsdaten ermöglicht wird, werden viele Internetseiten besser und somit langfristig auch die Suchergebnisse der Suchmaschinen und das gesamte Web besser nutzbar gemacht.</p>
<h3>Zur Problematik</h3>
<p>Webanalyse und Datenschutz in Kombination sind ein sehr schwieriges Thema. Zum einen hat man ein Interesse, möglichst viele Nutzungsdaten für statistische Zwecke zu sammeln (Webanalyse), zum anderen möchte/ muss man die Privatsphäre der Besucher schützen (Datenschutz).</p>
<p>Die Rechtslage ist in Deutschland natürlich relativ undurchsichtig. Während in dem einen Bundesland die IP-Adresse als persönlich gilt, gilt sie in anderen Bundesländern als anonym. Auch ist man sich noch darüber uneinig, wessen Sache der Datenschutz nun eigentlich ist. Die einen sagen, dass der normale Internetnutzer diese Verantwortung trägt. Er könne ja die Cookies in seinem Internetbrowser deaktivieren und wäre so auch nicht mehr eindeutig zu identifizieren.<br />
<strong>Die Problematik liegt auf der Hand: </strong>Der Normalverbraucher weiß meistens nichtmal, was Cookies sind, dass es sie gibt und wo man sie deaktivieren kann. Darüber hinaus werden Cookies aus technischer Sicht auf vielen Seiten benötigt, z.B. für die Session-Verwaltung in Portalen etc.<br />
Insgesamt ist diese Lösung unzumutbar.</p>
<p>Somit fällt die gesamte Verantwortung wieder auf die Webmaster. Die Verantwortung liegt nun bei ihnen, dem Benutzer zu ermöglichen, das Tracking zu deaktivieren.<em> (dazu später mehr)</em></p>
<h3>Google und der Datenschutz</h3>
<p>Das harmonierte noch nie so richtig. Google bietet das kostenlose und mächtige Online-Tool <a title="Google Analytics" href="http://analytics.google.com">Google Analytics</a> an. Wie man es von Google gewohnt ist, bietet das Tool viele nützliche Funktionen, lässt sich gut bedienen und erleichtert die Webanalyse ungemein, da sich Profile für mehrere Internetpräsenzen unter einer Oberfläche nutzen lassen.</p>
<p><strong>Der Haken:</strong> Google behält sich vor, die erhobenen Daten über die normale Webanalyse hinaus zu nutzen und mit anderen Daten zusammen zu führen. Außerdem werden Daten auch auf Server in den USA übertragen und der normale Internetbenutzer hat keine Möglichkeit, Widerspruch gegen die Nutzung der Daten einzulegen. Zwar bietet Google einen Text an, der über die Nutzung von Google Analytics in einem Internetprojekt informiert (häufig im Impressum/ Datenschutz). Dies allein reicht aber aus rechtlicher Sicht heute nicht mehr aus.</p>
<p>Dies sieht auch das <a title="ULD Datenschutzzentrum" href="http://www.datenschutzzentrum.de">Unabhängige Landeszentrum für Datenschutz Schleswig-Holstein</a> (kurz: ULD) so und hat Google Analytics intensiv geprüft und ist zu dem Entschluss gekommen, dass der Service &#8220;nach Auffassung sämtlicher deutschen Aufsichtsbehörden <strong>datenschutzrechtlich unzulässig</strong>&#8221; ist.<br />
Dies bestätigt auch ein Beschluss der obersten Aufsichtsbehörden für den Datenschutz im nicht-öffentlichen Bereich am 26./27. November 2009 in Stralsund.</p>
<p><strong>Was heißt das?:</strong> Die laut der ULD über 80% aller deutschen Internetangebote, die diesen Service  nutzen, müssen die Nutzung einstellen. Derzeit verschickt die ULD Informationsschreiben an Webseitenbetreiber in Schleswig-Holstein und informiert über die aktuelle Rechtslage. Sie bittet die Betreiber, die Nutzung von Google Analytics einzustellen und Google schriftlich zur Löschung der Nutzungsdaten aufzufordern. Die ULD behält sich jedoch auch ausdrücklich vor, gerichtlich gegen Webseitenbetreiber vorzugehen, die auf diese Informationen nicht reagieren.<br />
Ich finde dieses Vorgehen sehr freundlich, da nicht gleich Mahnungen und Bußgeldbescheide losgeschickt werden, sondern zunächst auf die Aufklärung der Webseitenbetreiber gesetzt wird.<br />
<a name="piwik"></a></p>
<h2>Nun zum eigentlichen Thema: Piwik</h2>
<p>Auf der Suche nach einer Alternative zu Google Analytics bin ich sehr schnell auf das OpenSource-Projekt &#8220;<a title="Piwik Webanalytics" href="http://www.piwik.org">Piwik</a>&#8221; gestoßen. Piwik ist kostenlos und OpenSource und lässt sich sehr einfach auf fast jedem Webserver mit PHP und MySQL installieren.</p>
<p>Auf der Piwik-Seite gibt es eine Demo zum Interface.</p>
<p>Piwik lässt sich durch Plugins erweitern (ähnlich wie WordPress). Als Entwickler kann man das Projekt durch eigene Plugins bereichern oder seine Version individuell anpassen.</p>
<h3>Die datenschutzrechtlichen Vorteile:</h3>
<p>Die Daten werden auf dem eigenen Server gespeichert. Sie werden nicht in die USA übertragen und auch nicht ohne Einwilligung des Verantwortlichen an Dritte weitergegeben. Somit entfällt ein großes Problem, welches die Datenschützer an Google Analytics bemängeln. Die Daten werden wirklich nur intern verarbeitet und man hat die volle Kontrolle, sämtliche Daten jederzeit zu löschen. Die Datenkrake Google muss draußen bleiben.</p>
<h3>Weitere Vorteile</h3>
<p>Das Interface ist relativ hübsch. Zwar nicht so umfangreich wie Google Analytics, aber das kann ja noch werden, da das Projekt fortlaufend weiterentwickelt wird. Im Gegensatz zu Google Analytics kann man hier auch Benutzern einen Account und Berechtigungen für bestimmte Seiten geben, die keinen Google Mail Account haben. Insofern ist man dort sehr viel flexibler.<br />
Darüber hinaus trackt Piwik die Nutzung in Echtzeit. Man muss also nichtmehr 24 Stunden warten, bevor einem die Daten zur Verfügung stehen, sondern sieht die Besuche quasi &#8220;live&#8221;.<br />
<a name="fuer-internetnutzer"></a></p>
<h2>Für Internetnutzer (Allgemeine Informationen)</h2>
<p>In der nächsten Zeit werden Sie auf vielen, der von uns betreuten Seiten Veränderungen entdecken. Auf vielen Seiten wird Ihnen die Möglichkeit gegeben, das Online-Tracking zu deaktivieren. Wundern Sie sich also nicht über einen kleinen Block am unteren Ende oder eine Checkbox hierzu im Menü.</p>
<p>Obgleich die Entscheidung Ihnen überlassen ist, möchten wir Sie dennoch bitten, aus den oben genannten Gründen zum Sinn von Webanalytics, das Tracking aktiviert zu lassen. Nur so ist uns die Möglichkeit gegeben, das Angebot langfristig zu verbessern.</p>
<p>Selbstverständlich werden sämtliche Daten vertraulich behandelt, nicht an Dritte weitergegeben und auch nur für den Zweck der Nutzungsanalyse unserer Seiten verwendet. Daten, die hierfür nicht mehr verwendet werden, werden umgehend gelöscht.<br />
<a name="fuer-webmaster"></a></p>
<h2>Für Webmaster und Interessierte</h2>
<p>Piwik ist der 1. Schritt in die richtige Richtung, aber noch nicht genug, um dem Datenschutz in Deutschland gerecht zu werden.</p>
<p>Datenschützer fordern für Webseitenbesucher eine Möglichkeit, dem Tracking wirkungsvoll auf jeder Seite widersprechen zu können. Eine oft genannte Möglichkeit hierzu ist ein sogenannter Opt-Out-Cookie. Dieser könnte z.B. auf jeder Seite über eine Checkbox gesetzt werden.</p>
<p>Vor dem Tracking muss dann geprüft werden, ob die Checkbox aktiv ist (standardmäßig aktiv für &#8220;Tracking erlauben&#8221;). Wenn der Benutzer die Checkbox deaktiviert hat, darf der Tracking Code nicht ausgeführt werden und der Besuch taucht somit nicht in der Statistik auf. Es wird also beim deaktivieren der Checkbox ein Cookie gesetzt, der den Willen des Benutzer für das jeweilige Projekt speichert.</p>
<p>Die Vorstellung ist zwar etwas unschön, da nun auf jeder Seite (z.B. unten Links) ein Balken auftaucht, der dem Benutzer erlaubt, nicht in der Statistik aufzutauchen. Allerdings wird man sich daran wohl gewöhnen müssen.</p>
<p>Da Piwik die Möglichkeit eines Opt-Out-Cookies derzeit (noch) nicht bietet, muss der Webmaster hier selbst für eine Lösung sorgen.<br />
Ich werde in den nächsten Tagen eine Erweiterung des Skripts testen und den Code anschließend hier zur Verfügung stellen.</p>
<p>Die Erweiterung basiert auf einem Opt-Out-Cookie-Code für Google Analytics, den ich in einem <a title="Opt-Out-Code auf Web Analytics nutzen" href="http://www.web-analytics-nutzen.de/web_analytics/2009/11/opt-out-tracking-code.html">Blogeintrag auf &#8220;Web Analytics nutzen&#8221;</a> gefunden habe.</p>
<p>Nach einigen Tests und Modifikationen scheint die Opt-Out-Funktionalität gut zu funktionieren und ich habe mir eine Möglichkeit überlegt, möglichst wenig Code verteilt zu haben. Einen Großteil des benötigten Codes habe ich nun zentral liegen, damit Optimierungen nur einmal gemacht werden müssen (und nicht auf jeder Projektseite neu).</p>
<p><strong>Zeilen für den Header:</strong></p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;color: #44687d; font: 12px Consolas, Lucida Console, Monaco, monospace;">&lt;link rel=&quot;stylesheet&quot; href=&quot;http://analytics.tobsolution.de/optout.css&quot; type=&quot;text/css&quot; /&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;http://analytics.tobsolution.de/optout.js&quot;&gt;&lt;/script&gt;</pre></div></div>

<p>Die absoluten Links und Pfade müssen angepasst werden. In jeder Seite, die getrackt werden soll, müssen diese Zeilen im head-Bereich stehen.</p>
<p><strong>Der Ausgabe-Code:</strong></p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;color: #44687d; font: 12px Consolas, Lucida Console, Monaco, monospace;">&lt;div id='TSA_OptOutSwitch' class=&quot;TSA_OptOutSwitch&quot;&gt;&lt;/div&gt;</pre></div></div>

<p>Dies ist der Bereich, indem die Checkbox mit Label auftaucht.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;color: #44687d; font: 12px Consolas, Lucida Console, Monaco, monospace;"><span class="sy0">&lt;</span>script type<span class="sy0">=</span><span class="st0">&quot;text/javascript&quot;</span><span class="sy0">&gt;</span>writeTSA<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;&lt;/</span>script<span class="sy0">&gt;</span></pre></div></div>

<p>Die writeTSA-Funktion gibt den Code aus. Dieser wird in der optout.js zentral vordefiniert.<br />
Wenn man das ganze nicht zentral machen möchte, ruft man diese Zeile einfach nicht auf.<br />
<strong>Alternativ nutzt man einfach diesen Code:</strong></p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;color: #44687d; font: 12px Consolas, Lucida Console, Monaco, monospace;">&lt;input type=&quot;checkbox&quot; id=&quot;TSA_OptOut&quot; value=&quot;true&quot; onClick=&quot;this.checked?document.cookie='TSA_OptOut=false;path=/;expires='+expdate.toGMTString()+';':document.cookie='TSA_OptOut=true;path=/;expires='+expdate.toGMTString()+';'&quot;&gt;&lt;label for=&quot;TSA_OptOut&quot;&gt;Besuch mit &lt;a href=&quot;http://www.tobsolution.de/allgemein/piwik-opensource-alternative-zu-google-analytics&quot; title=&quot;Beitrag zu Piwik auf tobsolution.de&quot; target=&quot;_blank&quot;&gt;Piwik&lt;/a&gt; tracken.&lt;/label&gt;</pre></div></div>

<p>Selbstverständlich kann der Code komplett angepasst und verändert werden. Dies ist lediglich mein Code, den ich auf den meisten Seiten verwende. Der Code muss dort eingefügt werden, wo der Opt-Out-Switch auftauchen soll.</p>
<p><strong>Direkt vor dem Body-Tag wird noch folgendes Javascript eingebunden:</strong></p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;color: #44687d; font: 12px Consolas, Lucida Console, Monaco, monospace;">&lt;!-- Piwik --&gt;
<span class="sy0">&lt;</span>script type<span class="sy0">=</span><span class="st0">&quot;text/javascript&quot;</span><span class="sy0">&gt;</span>
<span class="kw2">var</span> el<span class="sy0">=</span>document.<span class="me1">getElementById</span><span class="br0">&#40;</span><span class="st0">&quot;TSA_OptOut&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
   <span class="kw1">if</span> <span class="br0">&#40;</span>el<span class="sy0">!=</span><span class="kw2">null</span><span class="br0">&#41;</span> el.<span class="me1">checked</span> <span class="sy0">=</span> doTSA_Tracking<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
   <span class="kw1">if</span> <span class="br0">&#40;</span>doTSA_Tracking<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>
   <span class="br0">&#123;</span>
<span class="kw2">var</span> pkBaseURL <span class="sy0">=</span> <span class="br0">&#40;</span><span class="br0">&#40;</span><span class="st0">&quot;https:&quot;</span> <span class="sy0">==</span> document.<span class="me1">location</span>.<span class="me1">protocol</span><span class="br0">&#41;</span> <span class="sy0">?</span> <span class="st0">&quot;https://{$piwikUrl}&quot;</span> <span class="sy0">:</span> <span class="st0">&quot;http://{$piwikUrl}&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
document.<span class="kw1">write</span><span class="br0">&#40;</span>unescape<span class="br0">&#40;</span><span class="st0">&quot;%3Cscript src='&quot;</span> <span class="sy0">+</span> pkBaseURL <span class="sy0">+</span> <span class="st0">&quot;piwik.js' type='text/javascript'%3E%3C/script%3E&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
<span class="sy0">&lt;/</span>script<span class="sy0">&gt;&lt;</span>script type<span class="sy0">=</span><span class="st0">&quot;text/javascript&quot;</span><span class="sy0">&gt;</span>
<span class="kw1">if</span> <span class="br0">&#40;</span>doTSA_Tracking<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>
<span class="br0">&#123;</span>
<span class="kw1">try</span> <span class="br0">&#123;</span>
  <span class="kw2">var</span> piwikTracker <span class="sy0">=</span> Piwik.<span class="me1">getTracker</span><span class="br0">&#40;</span>pkBaseURL <span class="sy0">+</span> <span class="st0">&quot;piwik.php&quot;</span><span class="sy0">,</span> <span class="br0">&#123;</span>$idSite<span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span>
  piwikTracker.<span class="me1">trackPageView</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
  piwikTracker.<span class="me1">enableLinkTracking</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
<span class="br0">&#125;</span> <span class="kw1">catch</span><span class="br0">&#40;</span> err <span class="br0">&#41;</span> <span class="br0">&#123;</span><span class="br0">&#125;</span>
<span class="br0">&#125;</span>
<span class="sy0">&lt;/</span>script<span class="sy0">&gt;</span>&lt;noscript&gt;&lt;p&gt;&lt;img src=&quot;http://{$piwikUrl}piwik.php?idsite={$idSite}&quot; style=&quot;border:0&quot; alt=&quot;&quot;/&gt;&lt;/p&gt;&lt;/noscript&gt;
&lt;!-- End Piwik Tag --&gt;</pre></div></div>

<p>Das Skript prüft, ob doTSA_Tracking() true zurückliefert und trackt dann den Besuch. Andernfalls tut es nichts.<br />
Die Bereiche in {} sind Platzhalter aus dem javascriptTag.tpl von Piwik.<br />
Dieses liegt im Ordner <strong>/core/Tracker</strong>. Dieses Template kann angepasst werden, so dass Piwik automatisch den kompletten Code samt Opt-Out-Verfahren zurück liefert. <em>(Datei im Anhang)</em></p>
<p><strong>Die Datei optout.js sieht bei mir wie folgt aus:</strong></p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;color: #44687d; font: 12px Consolas, Lucida Console, Monaco, monospace;"><span class="kw2">function</span> getCookie<span class="br0">&#40;</span>value<span class="br0">&#41;</span> <span class="br0">&#123;</span>
    <span class="kw2">var</span> dc <span class="sy0">=</span> document.<span class="me1">cookie</span><span class="sy0">;</span>
    <span class="kw2">var</span> prefix <span class="sy0">=</span> value <span class="sy0">+</span> <span class="st0">&quot;=&quot;</span><span class="sy0">;</span>
    <span class="kw2">var</span> begin <span class="sy0">=</span> dc.<span class="me1">indexOf</span><span class="br0">&#40;</span><span class="st0">&quot;; &quot;</span> <span class="sy0">+</span> prefix<span class="br0">&#41;</span><span class="sy0">;</span>
    <span class="kw1">if</span> <span class="br0">&#40;</span>begin <span class="sy0">==</span> <span class="sy0">-</span><span class="nu0">1</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
    begin <span class="sy0">=</span> dc.<span class="me1">indexOf</span><span class="br0">&#40;</span>prefix<span class="br0">&#41;</span><span class="sy0">;</span>
    <span class="kw1">if</span> <span class="br0">&#40;</span>begin <span class="sy0">!=</span> <span class="nu0">0</span><span class="br0">&#41;</span> <span class="kw1">return</span> <span class="kw2">null</span><span class="sy0">;</span>
    <span class="br0">&#125;</span> <span class="kw1">else</span> <span class="br0">&#123;</span>
    begin <span class="sy0">+=</span> <span class="nu0">2</span><span class="sy0">;</span>
    <span class="br0">&#125;</span>
    <span class="kw2">var</span> end <span class="sy0">=</span> document.<span class="me1">cookie</span>.<span class="me1">indexOf</span><span class="br0">&#40;</span><span class="st0">&quot;;&quot;</span><span class="sy0">,</span> begin<span class="br0">&#41;</span><span class="sy0">;</span>
    <span class="kw1">if</span> <span class="br0">&#40;</span>end <span class="sy0">==</span> <span class="sy0">-</span><span class="nu0">1</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
    end <span class="sy0">=</span> dc.<span class="me1">length</span><span class="sy0">;</span>
    <span class="br0">&#125;</span>
    <span class="kw1">return</span> dc.<span class="me1">substring</span><span class="br0">&#40;</span>begin <span class="sy0">+</span> prefix.<span class="me1">length</span><span class="sy0">,</span> end<span class="br0">&#41;</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
&nbsp;
&nbsp;
<span class="kw2">function</span> doTSA_Tracking<span class="br0">&#40;</span><span class="br0">&#41;</span>
<span class="br0">&#123;</span>
   <span class="kw2">var</span> TSA_OptOut <span class="sy0">=</span> getCookie<span class="br0">&#40;</span><span class="st0">&quot;TSA_OptOut&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
   <span class="kw1">if</span> <span class="br0">&#40;</span>TSA_OptOut <span class="sy0">&amp;&amp;</span> TSA_OptOut<span class="sy0">!=</span><span class="kw2">null</span> <span class="sy0">&amp;&amp;</span> TSA_OptOut<span class="sy0">==</span><span class="st0">'true'</span><span class="br0">&#41;</span> <span class="kw1">return</span> <span class="kw2">false</span>
   <span class="kw1">else</span> <span class="kw1">return</span> <span class="kw2">true</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
&nbsp;
<span class="kw2">var</span> expdate<span class="sy0">=</span><span class="kw2">new</span> Date<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
expdate.<span class="me1">setDate</span><span class="br0">&#40;</span>expdate.<span class="me1">getDate</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">+</span><span class="nu0">365</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
<span class="kw2">function</span> writeTSA<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
<span class="kw2">var</span> div <span class="sy0">=</span> <span class="st0">&quot;&lt;input type='checkbox' id='TSA_OptOut' value='true' onClick='this.checked?document.cookie=<span class="es0">\&quot;</span>TSA_OptOut=false;path=/;expires=&quot;</span><span class="sy0">+</span>expdate.<span class="me1">toGMTString</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">+</span><span class="st0">&quot;;<span class="es0">\&quot;</span>:document.cookie=<span class="es0">\&quot;</span>TSA_OptOut=true;path=/;expires=&quot;</span><span class="sy0">+</span>expdate.<span class="me1">toGMTString</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">+</span><span class="st0">&quot;;<span class="es0">\&quot;</span>'&gt; &lt;label for='TSA_OptOut'&gt;Besuch mit &lt;a href='http://www.tobsolution.de/allgemein/piwik-opensource-alternative-zu-google-analytics' title='Beitrag zu Piwik auf tobsolution.de' target='_blank'&gt;Piwik&lt;/a&gt; tracken.&lt;/label&gt;&quot;</span><span class="sy0">;</span>
document.<span class="me1">getElementById</span><span class="br0">&#40;</span><span class="st0">&quot;TSA_OptOutSwitch&quot;</span><span class="br0">&#41;</span>.<span class="me1">innerHTML</span> <span class="sy0">=</span> div<span class="sy0">;</span>
<span class="br0">&#125;</span></pre></div></div>

<p>Die 1. Funktion verwaltet den Opt-Out-Cookie, die 2. prüft den Zustand des Cookies und die 3. Funktion sorgt für die Ausgabe der Checkbox/ des Labels.</p>
<p><strong>Meine optout.css:</strong></p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;color: #44687d; font: 12px Consolas, Lucida Console, Monaco, monospace;">div<span class="re0">#TSA_OptOutSwitch</span><span class="sy0">,</span> div<span class="re1">.TSA_OptOutSwitch</span> <span class="br0">&#123;</span>
	<span class="kw1">font-family</span><span class="sy0">:</span> Verdana<span class="sy0">,</span> Arial<span class="sy0">,</span> Helvetica<span class="sy0">,</span> <span class="kw2">sans-serif</span><span class="sy0">;</span>
	<span class="kw1">font-size</span><span class="sy0">:</span> <span class="re3">8pt</span><span class="sy0">;</span>
	<span class="kw1">position</span><span class="sy0">:</span> <span class="kw2">absolute</span><span class="sy0">;</span>
	<span class="kw1">left</span><span class="sy0">:</span> <span class="re3">0px</span><span class="sy0">;</span>
	<span class="kw1">bottom</span><span class="sy0">:</span> <span class="re3">0px</span><span class="sy0">;</span>
	<span class="kw1">background-color</span><span class="sy0">:</span> <span class="re0">#000000</span><span class="sy0">;</span>
	<span class="kw1">width</span><span class="sy0">:</span> <span class="re3">175px</span><span class="sy0">;</span>
	<span class="kw1">padding</span><span class="sy0">:</span> <span class="re3">1px</span><span class="sy0">;</span>
	<span class="kw1">color</span><span class="sy0">:</span> <span class="re0">#666666</span><span class="sy0">;</span>
	<span class="kw1">z-index</span><span class="sy0">:</span> <span class="nu0">100</span><span class="sy0">;</span>
	opacity<span class="sy0">:</span> <span class="nu0">0.9</span><span class="sy0">;</span>
	filter<span class="sy0">:</span> alpha<span class="br0">&#40;</span>opacity<span class="sy0">=</span><span class="nu0">90</span><span class="br0">&#41;</span><span class="sy0">;</span>
	-ms-filter<span class="sy0">:</span><span class="st0">&quot;progid:DXImageTransform.Microsoft.Alpha(Opacity=90)&quot;</span><span class="sy0">;</span>
	<span class="kw1">margin-top</span><span class="sy0">:</span> <span class="re3">10px</span><span class="sy0">;</span>
	<span class="kw1">font-weight</span><span class="sy0">:</span> <span class="kw2">normal</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
&nbsp;
div<span class="re0">#TSA_OptOutSwitch</span> a<span class="sy0">,</span> div<span class="re1">.TSA_OptOutSwitch</span> a <span class="br0">&#123;</span>
	<span class="kw1">color</span><span class="sy0">:</span> <span class="re0">#666666</span><span class="sy0">;</span>
<span class="br0">&#125;</span></pre></div></div>

<p>Selbstverständliche gibt es viele weitere Möglichkeiten, wie der Code aussehen kann. Dieser Weg reduziert jedoch den notwendigen Code, der auf jeder Seite eingefügt werden muss.<br />
<strong>Meine Piwik-Konfiguration: </strong><a href='http://www.tobsolution.de/wp-content/uploads/Piwik-OptOut.zip'>Piwik OptOut</a></p>
<p><em>Auch wenn die Daten nicht mehr über Google erhoben werden, empfiehlt es sich auf jeden Fall, auch im Impressum oder unter Datenschutz o.Ä. auf die Nutzung von Piwik hinzuweisen.</em></p>
<p><strong>Achtung:</strong> Ich bin kein Jurist. Alle Informationen habe ich nach bestem Wissen und Gewissen zusammengetragen. Dieser Beitrag soll keinesfalls als einzige Quelle zu diesem Thema gesehen werden und ist auf keinen Fall eine vollständige Ausarbeitung zu diesem Thema.</p>


<p>Related posts:<ol><li><a href='http://www.tobsolution.de/webentwicklung/piwik-datenschutz-teil-2' rel='bookmark' title='Permanent Link: Piwik &#038; Datenschutz (Teil 2)'>Piwik &#038; Datenschutz (Teil 2)</a></li>
<li><a href='http://www.tobsolution.de/projekte/piwik-in-version-0-5-5-erschienen' rel='bookmark' title='Permanent Link: Piwik in Version 0.5.5 erschienen'>Piwik in Version 0.5.5 erschienen</a></li>
<li><a href='http://www.tobsolution.de/osx/piwik-auf-dem-iphone-nutzen' rel='bookmark' title='Permanent Link: Piwik auf dem iPhone nutzen'>Piwik auf dem iPhone nutzen</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.tobsolution.de/allgemein/piwik-opensource-alternative-zu-google-analytics/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
