• User Attivo

    Google: Tracciamento click

    Mi sono preso qualche minuto ed ho analizzato il metodo di tracciamento che usa google.
    Non se ne è mai parlato (o almeno non l'ho mai visto in giro) ma dubito che altri non si siano presi la briga di guardare il codice dei risultati di ricerca.
    Innanzitutto il motore usa approcci diversi in base ai browser.
    Al momento ho preso in esame la risposta su explorer:

    
    function()
    {
        window.clk=function(b,c,d,h,i,j)
        {
       
            if(document.images)//se il mio browser visualizza le immagini
            {
            var a=window.encodeURIComponent?encodeURIComponent:escape,e="",f="",g="";//inizializzo  una variabile come url
           
                if(b)//se il valore di b esiste (sarebbe l'href)   
                {
                ;e="&url="+a(b.replace(/#.*/,"")).replace(/\+/g,"%2B")//costruisco una porzione di url eliminando dei caratteri inutili e quotando quelli speciali
                }
           
                if(c)//parametri opzionali ancora da analizzare
                {
                f="&oi="+a(c)
                }
           
                if(d)//parametri opzionali ancora da analizzare
                {
                g="&cad="+a(d)
                }
           
           
           //Qui arriva il bello. Istanzio un oggetto immagine avente come SRC l'url del tracciamento.
           //L'immagine a questo punto esegue l'url perchè cerca di visualizzarsi ed effettua quindi la chiamata alla pagina del tracciamento. Ovviamente l'immagine viene usata come mezzo, non verrà visualizzato nulla.
           //Da questi paramentri google sa anche la posizione dell'url cliccato che visualizziamo in quel momento. E' il parametro "a(i)"
            (new Image).src="/url?sa=T"+f+g+"&ct="+a(h)+"&cd="+a(i)+e+"&ei=dmv2RfLaJ4zg0QTWv7B3"+j
            }
            return true
       
        };
    
    }
    
    ```Mentre nel risultato:
    [html]
    <a href="http://www. mioesempio.it" class=l onMouseDown="return clk(this.href,'','','res','2','')">Phaedrus_Lupus et Agnus</a>
    [/html]Ho reso il codice javascript più leggibile perchè su una riga non ci capivo niente.
    Dopo uno sguardo e una riflessione è stato tutto molto chiaro.
    Leggete i commenti del javascript. L'ho spiegato li.
    
    Una piccola nota...il tracciamento avviene anche al click del tasto destro quindi anche in quest'ultimo caso per google è come se avessi cliccato per visualizzare quel determinato risultato.
    Probabilmente incrociano altri controlli dopo per avere statistiche molto più pulite.
    Ovviamente, in caso di javascript del browser disattivo, non ci può essere nessun tracciamento del click.
    
    Questo è quanto, per Internet Explorer
    Con firefox viene usato un approccio diverso che devo ancora approfondire.
    Mi pare di non aver dimenticato niente.
    Saluti :ciauz:

  • User Attivo

    Grazie per l'ottima analisi.

    Volevo farla anche io, ma mi hai preceduto 😉
    Magari possiamo anche collaborare 🙂

    Saluti,
    Pierpaolo


  • User Attivo

    @HyperText said:

    Grazie per l'ottima analisi.

    Volevo farla anche io, ma mi hai preceduto 😉
    Magari possiamo anche collaborare 🙂

    Saluti,
    Pierpaolo
    Grazie! Probabilmente l'ha fatta gia qualcuno ma stranamente non vedo niente in giro. Ad ogni modo molti adesso si toglieranno il dubbio.
    Potresti approfondire il discorso con firefox. Io ci ho dato un occhiata veloce per scomprire che usa un approccio un po diverso da explorer.
    Appena ho tempo guardo meglio ma ovviamente non ne ho l'esclusiva 😉


  • User Attivo
    function(b,d,f,j,k,g,l){
    	var a=window.encodeURIComponent?encodeURIComponent:escape,h="",i="",c=b.href.split("#"),e="";
    	
    	if(d){
    		h="&oi="+a(d)
    	}
    	
    	if(f){
    		i="&cad="+a(f)
    	}
    	
    	if(g){
    		e="&usg="+g
    	}
    	
    	b.href="/url?sa=t"+h+i+"&ct="+a(j)+"&cd="+a(k)+"&url="+a(c[0]).replace(/\+/g,"%2B")+"&ei=C8z2RZ-jN6Gi-gKkoK14"+e+l+(c[1]?"#"+c[1]:"");
    	b.onmousedown="";
    	
    	return true
    };
    

    Con Firefox non c'è nessun richiamo ad un'immagine, ma il link punta direttamente al "b.href" generato dallo script, ovvero a Google stesso, il quale successivamente ci reindirizzerà alla pagina clickata.

    Azzardo a dire che il parametro "j" indica come si è giunti a quel risultato (res=ricerca, quindi si è giunti a quel risultato tramite la ricerca) ed è uguale per tutti.
    Invece ad esempio per i link sponsorizzati (ma anche per i link collegati alla "cache" di una pagina) il parametro assume il valore "clnk" (anche se i link sponsorizzati non usano la funzione Javascript "rwt" è possibile ricavare questo valore controllando il paramentro "ct" passato direttamente nell'url).

    Il parametro "k" indica la posizione del risultato.

    Il problema è capire cosa sono i parametri "d", "f", "g" ed "l".
    I primi due sono sempre vuoti e dovrebbero passare valori simili a quelli di "c" e "d" della funzione che hai scritto sopra (si riferiscono rispettivamente a "oi" e a "cad").
    Il valore passato da "g" ("usg") invece è nuovo.

    Il parametro "ei" non viene passato tramite la funzione, ma è all'interno di essa. E' una costante (ovvero è uguale in tutti i link) assegnata da Google nello stesso script (magari è tipo una variabile di sessione - cambia ad ogni ricerca e ad ogni pagina della ricerca).


  • User Attivo

    Ottimo.
    Solo che non mi riesco a spiegare una cosa.
    Sull' onmousedown di un link, se io gli risetto l'href, in teoria al passaggio del mouse sul link stesso questo dovrebbe mostrare il nuovo link settato.
    Invece rimane quello di origine tranne che sul mio browser in ufficio...
    Cliccando con il tasto destro dovrebbe scattare il javascript che risetta l'href.

    Bisognerebbe crearsi un javascript per provare a risettare l'href di un link gia valorizzato e vedere se cambia al passaggio del mouse.
    Cmq grazie 😉