Sep.
14
2012

Hack din Google Analytics cookie

Vidste du at man nemt kan hacke den cookie, som Google Analytics sætter? Og på den måde få fat i informationer om, hvor den besøgende kommer fra, som man så kan bruge til alt muligt i sin backend?

Hold fast, denne artikel blive en smule teknisk.

Sådan ser cookien ud

Som du nok ved, så er en cookie en simpel tekstfil placeret i browseren på din computer. Og der er ikke noget specielt mystisk i disse cookies, faktisk kan de fleste åbnes og læses i en ganske almindelig text editor.

Åbner man cookien for Google Analytics, så ser den f.eks. sådan her ud:

Cookie

Kig godt på indholdet af denne cookie. Det er rimeligt nemt at se at den består af et eller andet tal, efterfulgt af de klassiske traffic source værdier i Google Analytics adskilt med tegnet |.

Her har du en oversigt over samtlige af de traffic source parametre, der kan optræde i cookien:

utmcsr Source
utmcmd     Medium
utmctr Keyword
utmcct Content
utmccn Name
utmgclid Adwords Campaign ID

Så er det egentligt bare lidt string parsing på den cookie, og så har du fat i hvor Google Analytics ser at den besøgende er kommet fra.

Gi' mig noget kode

Her kommer et C# kodeeksempel på, hvordan den slags kan gøres.
Eller spring over, hvis du ikke er til den slags.

public static string GetGoogleCampaign()
{
// set some default values
string utmcSource = "";
string utmcMedium = "";
string utmcKeyword = "";
string utmcContent = "";
string utmcName = "";
string utmcGCLID = "";

string cookie = "";
string retval = "";

try
{
    // load the Google Analytics cookie
    cookie = Request.Cookies["__utmz"].Value;

    // remove the first part, the visitor identifier
    cookie = cookie.Substring(cookie.IndexOf("utm"));

    // split the cookie into each utmc value
    string[] cookievals = cookie.Split('|');
    foreach (string cookieval in cookievals)
    {
        string[] valset = cookieval.Split('=');
        if (valset.Length == 2)
        {
            // check which utmc value we've got
            switch (valset[0].ToLower())
            {
                case "utmcsr": utmcSource = valset[1]; break;
                case "utmcmd": utmcMedium = valset[1]; break;
                case "utmctr": utmcKeyword = valset[1]; break;
                case "utmcct": utmcContent = valset[1]; break;
                case "utmccn": utmcName = valset[1]; break;
                case "utmgclid": utmcGCLID = valset[1]; break;
            }
        }
    }

    // force Adwords if there's a GCLID in the cookie
    if (utmcGCLID != "")
    {
        utmcSource = "google";
        utmcMedium = "cpc";
    }

    // do some decoding, trimming etc.
    utmcKeyword = Server.UrlDecode(utmcKeyword);
    utmcKeyword = utmcKeyword.Replace("http://", "");
    utmcMedium = utmcMedium.Trim('(').TrimEnd(')');
    utmcSource = utmcSource.Trim('(').TrimEnd(')');
    utmcKeyword = utmcKeyword.Trim('(').TrimEnd(')');

    // construct the return value
    retval = utmcMedium + " | " + utmcSource;
    if (utmcKeyword.Length > 2) retval += " | " + utmcKeyword;
    return retval;
}
catch (Exception ex)
{  return "";  }
}

Disclaimer: Lad være med at grine alt for meget over koden, jeg er ikke nogen specielt hardcore programmør. Men i det mindste er den fyldt med kommentarer :-)

Og nej, jeg har den ikke i en PHP udgave eller som et WP / Magento plugin. Men så er det godt, der findes andre ninjaer derude.

Bliver Google ikke sur over hacks?

For det første, så er et "hack" ikke nødvendigvis en negativ ting. At "hacke" betyder såmænd bare, at bruge noget på en facon, der ikke oprindeligt var udtænkt. Og det er der egentligt ikke noget galt i.

Google har intet imod at man forsøger at læse cookien. De fraråder kun at man selv forsøger at rette i den, men det er kun fordi man så risikerer at ødelægge ens Google Analytics data.

Så hack du bare løs!

Og hvad skal man så bruge det til?

Jeg er glad for at du spørger!

Jeg plejer selv at hacke cookien på denne facon på en webshops ordrekvitterinsside, og gemme informationerne ned som et felt på selve ordren:

Ordre Source

Det har to fordele:

  1. Det er ekstra motiverende for shop-ejeren at kunne se, hvor hver individuelle ordre kommer fra.

    De fleste shop-ejere har ikke tid til at logge sig ind i Analytics hver eneste dag, og sidde og nørde. Men står de pludseligt og pakker en masse ordrer, som de kan se kommer fra en eller anden finsk blog, så kan de se, at der nok lige er noget de skal have kigget på.
     
  2. En professionel web analytikers fornemmeste opgave er, at forudse hvilke data forretningen har brug for i fremtiden. For ellers render man ind i, at når forretningen spørger: "Kan du levere oplysninger på x?", så bliver svaret "Sagtens. Tager mig en uge at udvikle, og så skal vi lige vente 6 måneder på at der bliver samlet data ind".

    Ikke godt for forretningen. Men svarer analytikeren derimod: "Det kan jeg sagtens, faktisk har vi samlet data ind på det i over et år".
    Ja, så er det du bliver betragtet som en Analytics ninja :-)

    Hvis en ordres kilde på denne facon står direkte nede i dit ERP system, så åbner det nemlig op for nogle fantastiske business intelligence muligheder, bl.a. for at lave avancerede analyser af customer lifetime value begrebet. Men det er en helt anden blog post.

Men man kan sagtens bruge disse informationer til alt muligt andet. For eksempel til at udløse rabatkoder eller kampagner, hvis den besøgende kommer et bestemt sted fra.

Håber du kan bruge dette lille "hack". Og hvis du finder andre ting at bruge det til, så læg mægtigt gerne en kommentar herunder med det.

 @Mikael: Heh, hvis jeg havde det, så ville jeg sælge løsningen for mega mange millioner, og trække mig tilbage på en strand i Asien :-D
Søren Sprogø , den 14. september 2012 14:50:03
.
 Nørdet, men sejt ninja trick, det skal helt sikkert implementeres her... Og til andre som sidder på PHP løsninger blev jeg lige inspireret til at bikse en php version sammen af sørens kode. Hvis andre er interesseret findes den her:
http://codenerd.dk/_download/php/class.googleCookie.phps
Martin Nielsen , den 14. september 2012 14:53:08
.
 fedt med ny visdom.. :-D
Omar , den 24. september 2012 16:41:02
.
 Hej Søren

Tak for snakken i lørdags - jeg er blevet ret hooked på at rode videre med det her. Kombineret med noget Spindoctor, uCommerce og Umbraco tror jeg at man ville kunne lave noget fedt omkring personificeret indhold.
Anders Lund , den 15. oktober 2012 10:49:48
.
 @Anders: I lige måde! Og tænk dig, hvis det ikke havde været for den pokkers [not provided] på organiske keywords, så kunne man VIRKELIGT begynde at målrette kampagnefelter rundt omkring på ens site :-D

F.eks. ved at tage keywordet, smide det igennem en fuzzy Lucene søgning, og bruge resultatet til at cycle imellem produkter i et onsite banner... Nøj, nu får jeg helt lyst til at kode lidt ;-)
Søren Sprogø , den 17. oktober 2012 10:30:25
.
 Det er jo virkelig sejt! Det havde jeg slet ikke tænkt på var muligt.

I øvrigt er koden da helt fin ;-) Ingen mobning der!

Tak for tippet, det vil jeg klart overveje at implementere i fremtidige løsninger.
Lars Holdgaard , den 18. januar 2013 10:44:17
.
 Denne artikel har så begrænset levetid.

I første halvår af 2013 vil Google rulle deres næste generation af Analytics ud, kaldet Universal Analytics. Det fungerer på en radikalt anderledes måde (bare rolig, kun under "motoren"), så dette trick vil ikke fungere længere.

Men mon ikke der kommer en ny metode. I så fald skal jeg nok få blogget om den!
Søren Sprogø , den 18. januar 2013 12:38:32
.
 
Om mig
Jeg er en pragmatisk midtjyde med mere end 25 års erfaring i IT-branchen, de sidste 16 med alt inden for eCommerce.
Se hvad jeg kan gøre for dig
Eller se min referenceliste
 
Nyhedsbrev
Få besked per mail, når der er nye posts her på bloggen
 
Tilmeld nyhedsbrev
 
Samtidigt får du en mail med de bedste indlæg, så du ikke behøver at vente på guldkorn.
 
Få det som RSS feed     RSS feed
Få også kommentarer, sitemap
Kategorier
 
Søg
Rapporten over alle rapporter anno 2012, vinder af SEMaward 2012
 
Rapporten over alle rapporter anno 2012, vinder af SEMaward 2012
 
GA tricks: Skaffer mine kampagner nye eller gamle kunder? vinder af SEMaward 2011
 
Google Analytics rapporten over alle rapporter, vinder af SEMaward 2010
Afdeling 18 Søren Sprogø E-commerce Guru work Nyvangen 28 8600 Silkeborg Danmark work 26727404 56.165787 9.537120 Søren Sprogø Cookies