FingerPrint
Adblock Analytics Bzpass

Google Analytics trotz Adblocker verwenden

Analytics verwenden trotz Adblocker

Aktualisiert am 15.08.19

Block Ad Block Nutzer, war gestern. Es gibt viele Möglichkeiten, Daten an dem Adblocker vorbei zu bringen. Ob Google Analytics, Matomo Analytics oder Google, Bing Ads etc….. In diesem Tutorial geht es um Google Analytics. Für Matomo etc. werden auf dieser Seite Links folgen.

Wie funktionieren Ad-Blocker

Adblocker sind kleine Programme für den Browser mit dem Hintergrund programmiert, den Nutzern ein Werbefreies Surfen zu ermöglichen 😀 … Ok in Wirklichkeit, verlangen die Hersteller von den Werbetreibenden Millionen um auf die Whitelist zu kommen. Auch wenn diese rechtlich Recht bekommen haben, sind es für mich mit der Geschäfts- Mache trotzdem eher unseriöse Anbieter. So Adblocker können in der Regel in 2 Kategorien eingeteilt werden

  1. Asset Blocker (Blockieren alles was von einer bestimmten Seite(Quelle) geladen wird)
  2. Sichtbarkeits verändernde Blocker (Macht die geladene Werbung unsichtbar)

In der Regel findet man auch häufig eine Mischung aus beiden. In unserem Fall bedeutet es, es wird die Verbindung für Analytics zu Google.com im Frontend (Browser), untersagt. Wie kann man dann die Daten versenden ?? Richtig. Serverseitig da ja die eigene Domain nicht so einfach blockiert werden kann. Also müssen wir eine Lösung für folgende Schritte finden.

  1. Prüfen ob ein Adblocker aktiv ist.
  2. Daten Serverseitig ermitteln und nach Analytics senden

Prüfen ob ein Adblocker aktiv ist

Es gibt folgende Möglichkeiten um Adblocker zu ermitteln

    • Über Objekte die per Code im Browser erstellt werden z.B “ga”
    • Ein Script laden welches den Namen Ads enthält
    • Prüfen ob der Blocker Elemente im Fenster erstellt hat, wie es z.B. beim Ghostery der Fall ist

Die ersten beiden Möglichkeiten sind die empfohlenen, da einige Blocker keine Elemente im Browser erstellen. Wir verwenden in diesem Tutorial die Methode mit dem Objekten da die Methode mit dem Script für das Anzeigen von Adsense etc. trotz Adblocker anwendung findet. Lassen Sie uns den Code schnell erstellen…

Adblock Handler
// ADBLOCKER
//adblock handler
window.addEventListener('load', function() {
if(window.ga && ga.create) { //all good, no AdBlocker
} else { //GA blocked, inject Tracking Pixel to call Backend API
//get IP from Client
jQuery.getJSON('https://api.ipify.org?format=jsonp&callback=?', function(data) {
var b = (JSON.stringify(data, null, 2)); return BrowserIPAdBlock = (b.split('"'))[3];
})
function createAdBlockBild(){
var UsAG = navigator.userAgent;
var ref = document.referrer;
var UAid = "IHRE ANALYTICS ID";
var sitedomain = document.location.host;
var sitepath = location.pathname;
var sitetitel = document.getElementsByTagName("title")[0].innerHTML;
var trackitimg = document.createElement('img');
trackitimg.src = "/ga-trackit.php?sitedomain="+sitedomain+"&sitepath="+sitepath+"&sitetitel="+sitetitel+"&uaid="+UAid+"&ip="+BrowserIPAdBlock+"&ref="+ref+"&UsAG="+UsAG;
document.getElementsByTagName("body")[0].append(trackitimg);
}
function SetupAdblock(){
if(BrowserIPAdBlockListener){
createAdBlockBild();
clearInterval(BrowserIPAdBlockListener);
}
}
var BrowserIPAdBlockListener = setInterval(SetupAdblock, 1000);
}
}, false);

Mit diesem Script wird geprüft ob das “Window.ga” Objekt erstellt wurde. Wenn nicht wird ein Bild auf die Seite gesetzt, welches kein Bild sondern unsere PHP Datei ist welches das ermitteln der Daten übernimmt und Serverseitig nach Analytics sendet.

Bedeutet der Code Muss nach Analytics eingebunden werden. Am besten packt man den Analytics Code und diesen in eine Datei. Wenn Sie nicht wissen wo Ihr Analytics- code ist, können Sie diesen Code auch mit <script> der obrige Code</script> einfach in Ihrem Footer einfügen. Tragen Sie dort noch Ihre Analytics Id ein var UAid = "IHRE ANALYTICS ID".

Beispiel var UAid = “UA-1234567-1”;

Daten Serverseitig ermitteln und nach Analytics senden

Als nächstes benötigen wir eine Datei die Serverseitig läuft. Genaugenommen eigentlich 2. Eine die einen Session Cookie erstellt und eine die den Seitenaufruf nach Analytics übermittelt. Wie Sehen die Codes aus??

SessionCookie

<?php
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
session_start();
//no cookie, no session
if ((!isset($_COOKIE['cid'])) && (!isset($_SESSION['cid']))) {
$_SESSION['cid'] = sprintf( '%04x%04x-%04x-%04x-%04x-%04x%04x%04x',
mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff ),
mt_rand( 0, 0xffff ),
mt_rand( 0, 0x0fff ) | 0x4000,
mt_rand( 0, 0x3fff ) | 0x8000,
mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff )
);
}
//cookie prior session
if (isset($_COOKIE['cid'])) {
$_SESSION['cid'] = $_COOKIE['cid'];
}
//update cookie
if (isset($_SESSION['cid'])) {
setcookie("cid", $_SESSION['cid'], time()+3600*24*365);
}
$cid = $_SESSION['cid'];
if ($_GET['return']=="cid") { echo $cid; }
?>

In dem obigen Code wird ein Cookie erstellt und im Browser gesetzt wenn kein Cookie mit dem Namen vorhanden ist. Dieser bleibt solange bestehen, bis der Browser geschlossen wird. Desweiteren wird dort ein transparentes Pixel erstellt. Der Code für den Seitenaufruf sieht wie folgt aus:

Seitenaufruf

<?php
//Get unique Client ID
require_once 'ga-cid.php';
//Return Transparent Pixel
header("Content-type: image/png");
$img = imagecreatetruecolor(1, 1);
imagesavealpha($img, true);
$color = imagecolorallocatealpha($img, 255, 255, 255, 127);
imagefill($img, 0, 0, $color);
imagepng($img);
imagedestroy($img);
//Get some extra info about the user
$user_agent = $_GET['UsAG'];
$site_path = $_GET['sitepath'];
$site_domain = $_GET['sitedomain'];
$site_titel = $_GET['sitetitel'];
$UA_ID = $_GET['uaid'];
$uip = $_GET['ip'];
$dr = $_Get['ref'];
$dr1 = strval( $dr) ;
//Test Data for GA Measurement Protocol
$data1 = array(
'v' => 1,
'tid' => $UA_ID, //Enter Yours
'aip' => 1,
'uip' => $uip,
'cid' => $cid, //we will create this in a bit
'ua' => $user_agent,
'ds' => 'web',
't' => 'pageview',
'dr' => $dr1,
'dh' => $site_domain, //Enter Yours
'dp' => $site_path,
'dt' => $site_titel
);
//Send to GA Server
$url = 'https://www.google-analytics.com/collect';
$content1 = http_build_query($data1);
$ch1 = curl_init();
curl_setopt($ch1,CURLOPT_USERAGENT, $user_agent);
curl_setopt($ch1, CURLOPT_URL, $url);
curl_setopt($ch1,CURLOPT_HTTPHEADER,array('Content-type: application/x-www-form-urlencoded'));
curl_setopt($ch1,CURLOPT_HTTP_VERSION,CURL_HTTP_VERSION_1_1);
curl_setopt($ch1,CURLOPT_POST, TRUE);
curl_setopt($ch1,CURLOPT_POSTFIELDS, $content1);
curl_setopt($ch1,CURLOPT_RETURNTRANSFER, TRUE);
curl_exec($ch1);
curl_close($ch1);
?>

In diesem Codeteil wird der erste Teil inkludiert. Dann werden die benötigten informationen gesammelt und als String nach Analytics gesandt, wie es Analytics als solches auch macht. Der Cookie Teil muss folgenden Dateinamen haben –> ga-cid.php
Der Seitenaufruf Codeteil muss den Dateinamen –> ga-trackit.php

Fazit

Sie können die PHP Dateien hier als Zip herunterladen.

Laden Sie die Dateien in Ihr Hauptverzeichnis (Root). Laden Sie den ersten Script teil (Adblock Handler) in diesem Tutorial als Script in dem Footer oder als externe Datei.

Diese Variante ist die einfachste zu implementierende. Natürlich gibt es noch andere Möglichkeiten um Analytics an den Adblockern vorbei zu bringen aber diese sind zu komplex um es in einem Tutorial wie diesem zu erklären weil man dann schnell auf 5-6 Seiten kommt.

Es werden wenn der Adblocker verwendet wird bei dieser Variante keine Daten mit Personenbezug erhoben.

Wenn Sie bereits den Tag Manager verwenden, wird dieser anders an den Ad Blockern vorbei gebracht. Dieser wird ähnlich wie Ads am Blocker vorbei gebracht. Dazu wird auch noch in zukunft ein Tutorial kommen.

 

 

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht.