Nov 23 2011

HelpSemaforoQuesto semaforo indica il livello difficoltà del post
semaforo giallo - articolo avanzato

Tracciare Google Immagini, una volta per tutte

autore: Marco Cilia categoria: javascript tag: , , ,

Il tema di come tracciare Google Images esiste da quando esiste Analytics, è un tema ricorrente e le soluzioni proposte variano nel tempo a seconda dello spirito, dell’autore e dei cambiamenti di Google stesso. Al momento il dominio images.google è stato incluso nella lista predefinita dei motori di ricerca a partire da Agosto, quindi le ricerche fatte da lì sono già tracciate insieme alla keyword e finiscono nel report SORGENTI DI TRAFFICO -> SORGENTI -> RICERCA -> RISULTATI ORGANICI (per distinguerli dagli altri potete usare la dimensione secondaria o fare un segmento avanzato con SORGENTE contiene images.google).

Restano invece escluse le visite fatte sul motore “classico” dopo aver selezionato “immagini” dalla colonna di sinistra (quelle cioè con parametro tbm=isch che generano poi un referrer di tipo www.google.it/imgres).
La soluzione più facile e definitiva, posto che non ci interessi analizzare le due cose separatamente, è quella di intercettare quel particolare referrer e di usare la funzione di sovrascrittura del referrer per ricondurlo ad una forma già nota a Google Analytics, in questo modo (fonte help forum, con modifiche perché images.google.com è adesso un motore già riconosciuto):


var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-XXXXXXX-X']);

var ref = document.referrer; 
if ((ref.search(/google.*imgres/) != -1)) { 
  var regex = new RegExp("\.google\.([^\/]+)(.*)"); 
  var match = regex.exec(ref); 
  _gaq.push(['_setReferrerOverride', 'http://images.google.' + match[1] + unescape(match[2])]); 
}

_gaq.push(['_trackPageview']);

questo in pratica riscrive completamente il dominio www.google.it e lo trasforma in images.google.it nel caso in cui sia una ricerca fatta sul motore generale.

Così com’è lo script non fa distinzione tra le varie declinazioni dei motori nazionali, quindi images.google.it, images.google.com e tutti gli altri finiscono dentro un unico record che si chiama images.google. Se si ha il desiderio o la necessità di distinguere i top level domain sarà necessario aggiungere dopo _setReferrerOverride un’altra riga:


_gaq.push(['_addOrganic', 'images.google' + match[1], 'q', true]);

Il true in fondo è obbligatorio e, ve lo ricordo, consente di aggiungere il nuovo motore in cima alla lista di quelli conosciuti invece che in fondo, in modo che abbia la priorità su quelli predefiniti.


Aug 17 2011

HelpSemaforoQuesto semaforo indica il livello difficoltà del post
semaforo verde - articolo per tutti

images.google.com è ora un motore di ricerca

autore: Marco Cilia categoria: codice di monitoraggio tag:

Come evidenziato da un articolo di Riccardo Perini (e da uno di search engine watch) il dominio images.google.com viene ora identificato da Google Analytics come un motore di ricerca, mentre tutti sapiamo – o dovremmo sapere – che  sempre stato un referral.
Guardando il codice sorgente di GA, cioè il file www.google-analytics.com/ga.js, la cosa è scritta chiara e tonda nella lista dei motori riconosciuti: subito dopo google (parametro “q”) hanno inserito images.google (sempre parametro “q”). Questo significa che funziona eventualmente anche per ogni declinazione nazionale del motore di ricerca immagini, ma attenzione NON FUNZIONA invece per le ricerche di immagini fatte su www.google.com/imghp o per i click fatti sulle immagni proposte da universal search.


Apr 13 2011

HelpSemaforoQuesto semaforo indica il livello difficoltà del post
semaforo giallo - articolo avanzato

funzioni: _setReferrerOverride (e tracciare al volo la ricerca immagini)

autore: Marco Cilia categoria: funzioni tag: , ,

Una funzione che non ho mai menzionato su questo blog è _setReferrerOverride(url), che serve a sovrascrivere il referrer estratto automaticamente da Google Analytics prima che esso venga passato ai server per l’analisi. Perché si dovrebbe fare una cosa simile? Ad esempio un motivo valido può essere che per qualche problema tecnico che non riuscite a risolvere immediatamente – mentre i dati stanno venendo registrati sbagliati – il referrer non è quello atteso. Questa funzione vi permette di ripristinare quello corretto.

La funzione accetta come parametro una sola stringa, che deve essere l’url del referrer (reale o fittizio) che decidete di impostare per quella pagina, o per quella singola chiamata del codice di tracciamento.

_gaq.push(['_setReferrerOverride', 'http://www.referrerfinto.it/parametro=2]);

Un caso reale e molto pratico in cui si usa questa funzione è ad esempio per tracciare completamente lato codice – quindi senza usare filtri e profili-copia, le ricerche fatte su Google Images. E’ sufficiente usare questo codice


<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-xxxxxxxx-x']);
var ref = document.referrer;  //prendo il referrer
if (ref.search(/images.google/) != -1 && ref.search(/prev/) != -1) { //se contiene sia images.google sia /prev/
var regex = new RegExp("images.google.([^\/]+).*&prev=([^&]+)"); //scrivo la regex per estrarre i due valori
var match = regex.exec(ref); // la eseguo
_gaq.push(['_clearOrganic']); //pulisco la lista dei motori di ricerca
_gaq.push(['_addOrganic','images.google.'+match[1],'q']); // aggiungo un unico motore di ricerca (google immagini)
_gaq.push(['_setReferrerOverride', 'http://images.google.'+match[1]+unescape(match[2])]); //sovrascrivo il vecchio referrer con quello apposito
}

_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>

(l’autore originale dello script era Joost De Valk nel forum ufficiale, poi è stato modificato per renderlo asincrono da un altro utente)

Non male, no? 🙂


Jul 29 2009

Risultati illustrati come sorgente separata e con keyword

autore: Marco Cilia categoria: filtri tag: , , ,

Qualche giorno fa mi ha scritto Maurizio Petrone con una domanda insolita, almeno per me: ha modificato un metodo noto per tracciare le ricerche Universal Search di Google per tenere conto solo dei click effettuati sulle immagini, ovvero quelli che Google stessa indica come “risultati illustrati” (vedi immagine sotto)

risultati-illustrati

Dico “domanda insolita” perché io non ho mai avuto un sito di foto come cliente, quindi non mi sono mai posto questo tipo di problema che invece è del tutto lecito. Guardando gli url di destinazione dei click (che sono poi i referrer dei siti monitorati con Google Analytics), per la ricerca “montagna” – sul mio browser e in questo momento, ma la sostanza non cambia – i risultati illustrati per una foto puntano a questo indirizzo

http://www.google.it/imgres?imgurl=http://agenda.filastrocche.it/wp-content/uploads/2008/09/montagna.jpg&imgrefurl=http://agenda.filastrocche.it/%3Fp%3D1849&h=600&w=800&sz=166&tbnid=Gvcrgtm0c9eaFM:&tbnh=107&tbnw=143&prev=/images%3Fq%3Dmontagna&hl=it&usg=__ePp09iMbJpQU99vjyP6TqM79NC4=&ei=2QdwSv6CJaGwnQPn-9G5Bw&sa=X&oi=image_result&resnum=5&ct=image

mentre i risultati di Google Immagini per la stessa keyword, e per la stessa immagine di destinazione, puntano invece a

http://images.google.it/imgres?imgurl=http://agenda.filastrocche.it/wp-content/uploads/2008/09/montagna.jpg&imgrefurl=http://agenda.filastrocche.it/%3Fp%3D1849&usg=__1RZ-MlgZ2o5X1eCCBAZnKb73aLg=&h=600&w=800&sz=166&hl=it&start=5&sig2=wSQ01ux59X1UE3WRa7VRUA&um=1&tbnid=Gvcrgtm0c9eaFM:&tbnh=107&tbnw=143&prev=/images%3Fq%3Dmontagna%26hl%3Dit%26safe%3Dactive%26rlz%3D1B3GGGL_it___IT259%26sa%3DN%26um%3D1&ei=IwpwSvunIcf0_AbX25SjCQ

tralasciando il dominio di provenienza (www.google.it piuttosto che images.google.it) potete vedere che le informazioni passate sono leggermente differenti. L’esigenza di Maurizio e di Globopix quindi è chiara, e lecita.

Quello che ci serve quindi è estrarre la keyword usata per la ricerca, cambiare il mezzo di provenienza e la fonte dell’accesso. Servono tre filtri per fare queste operazioni (hey, Google, a quando i filtri con output su più campi? 😉 ), e precisamente:

Risultati illustrati – cambia sorgente
Filtro personalizzato, avanzato
Campo A -> Estrai A -> Referral -> (.*)oi=image(.*)
Campo B -> Estrai B -> Referral -> prev=/images%3Fq%3D([^&]*)
Output in -> Constructor -> Sorgente campagna -> Google (risultati illustrati)
Campo A: Obbligatorio
Campo B: Obbligatorio
Sostituisci campo output: SI

Risultati illustrati – estrai keyword
Filtro personalizzato, avanzato
Campo A -> Estrai A -> Referral -> (.*)oi=image(.*)
Campo B -> Estrai B -> Referral -> prev=/images%3Fq%3D([^&]*)
Output in -> Constructor -> Termine della campagna -> $B1
Campo A: Obbligatorio
Campo B: Obbligatorio
Sostituisci campo output: SI

Risultati illustrati – cambia mezzo
Filtro personalizzato, avanzato
Campo A -> Estrai A -> Referral -> (.*)oi=image(.*)
Campo B -> Estrai B -> Referral -> prev=/images%3Fq%3D([^&]*)
Output in -> Constructor -> Mezzo della campagna -> Organic
Campo A: Obbligatorio
Campo B: Obbligatorio
Sostituisci campo output: SI

Questi tre filtri applicati a un profilo inseriranno una nuova riga tra le sorgenti di traffico, che potrà poi essere segmentata per parola chiave. Il lato negativo è che le frasi di ricerca composte da due o più termini, ad esempio “mare genova” vengono codificate nel referral tramite il carattere ASCII esadecimale %2B, equivalente al segno più (quindi mare%2Bgenova). Poiché un filtro cerca e sostituisci che tenti di cambiare qualsiasi cosa con uno spazio non si può fare, o lo cambiate esplicitamente con un + o lo tenete così. Non si può avere tutto 🙂 (o meglio, si può a patto di modificare tramite javascript il referrer PRIMA di inviarlo a Google Analytics, ma la cosa esula da questo articolo).

Una cosa interessante che ho notato è che nel referrer è presente anche l’indicazione della posizione dell’immagine cliccata. Nell’immagine qui sopra, cliccando per esempio l’ultima immagine il parametro resnum sarà impostato a 6: modificando il filtro risultati illustrati – estrai keyword in questo modo:

Risultati illustrati – estrai keyword e posizione
Filtro personalizzato, avanzato
Campo A -> Estrai A -> Referral -> (.*)oi=image(.*)
Campo B -> Estrai B -> Referral -> prev=/images%3Fq%3D([^&]*)(.*)resnum=([^&]*)
Output in -> Constructor -> Termine della campagna -> $B1 (pos: $B3)
Campo A: Obbligatorio
Campo B: Obbligatorio
Sostituisci campo output: SI

avremo anche la posizione dell’immagine nella SERP al momento del click 🙂