Esiste un modo per impedire a Google Analytics di contare il lavoro di sviluppo come hit?


151

Ho aggiunto il JavaScript di cui ho bisogno in fondo alle mie pagine in modo da poter utilizzare Google Analytics. L'unico problema è che sono sicuro che sta contando tutti i miei lavori di sviluppo come hit. Visto che probabilmente vedo alcune di quelle pagine un centinaio di volte al giorno, distorcerei davvero le mie letture. C'è un modo per disattivarlo da un determinato indirizzo IP o è qualcosa che dovrebbe essere integrato nel mio processo di compilazione in modo che venga aggiunto solo quando costruisco per la distribuzione?


6
In quale lingua / tecnologia stai sviluppando? Perché potresti fare qualcosa in cui se il nome host = 127.0.0.1 o localhost (o qualunque sia la tua istanza locale), allora non mostrare il blocco di script di analisi. Dovrebbe essere una riga di codice lato server ...
davewasthere

4
Non so perché qualcuno voglia passare a SuperUser: è chiaramente una domanda di programmazione / sviluppo.
Thomas Owens,

Sto usando asp.net, vs2005 ed è un progetto web.
uriDium,

È possibile utilizzare come blocco degli script, ad esempio umatrix o uBlock . Bloccherà tutti gli script pubblicitari, incluso lo script analitico di Google.
Simon,

Risposte:


102

Sì, vai in Impostazioni Analytics, modifica il tuo sito e + Aggiungi filtro per definire un filtro che esclude il tuo indirizzo IP.

I dati passati non vengono rigenerati con i filtri applicati, quindi avrai solo il vantaggio di andare avanti.


17
Un filtro [appena creato] si applica solo ai dati futuri.
viam0Zah,

1
È perfetto. Lo sto facendo in modo proattivo. Non ho ancora aggiunto il javascript richiesto da Google Analytics. Metterò il filtro in posizione e poi lo distribuirò.
uriDium,

7
ho appena incontrato questa domanda in modo casuale ... Utilizzerei un ID UA diverso per il mio ambiente di sviluppo. Questo è quello che faccio adesso. Penso che questo sarebbe un approccio migliore rispetto al dover bloccare indirizzi IP e cose.
Karry,

3
In realtà c'è un modo ancora più semplice. Questa tecnica funzionerà anche per dati futuri. Quando si inizializza l'oggetto ga, è sufficiente impostare un dominio cookie esplicito. Riferimento: developers.google.com/analytics/devguides/collection/…
Darren

2
A seconda dell'ambiente di sviluppo, è anche possibile escludere i nomi host. Sviluppo con asp.net, quindi ho escluso tutti i nomi host che contiene localhost. Se di solito hai un ambiente di test in un sottodominio, basta escluderlo.
CularBytes,

205

Mi piace il semplice approccio dell'utilizzo di JavaScript. Funziona ovunque.

<script type="text/javascript">
if (document.location.hostname.search("myproductiondomainname.com") !== -1) {

//google analytics code goes here

}
</script>

3
soluzione molto elegante :)
Sushant Gupta

28
Grazie. Uso personalmente if (document.location.hostname == "example.com") { /* ga code */ } else { _gaq = {push: function(arg) {console.log("ga:", arg)}}}: questo mi consente di utilizzare in modo sicuro alcuni tracker di eventi e chiamate _gaq personalizzate in qualsiasi parte del mio codice e allo stesso tempo mi consente di eseguire il debug delle chiamate GA nell'ambiente di sviluppo.
seriyPS

1
Un'altra soluzione leggermente più leggibile sarebbe quella di usare un regex letterale:if(/example\.com/.test(window.location.hostname)) { /* GA code */ }
mjswensen,

Mi piace molto di più questo approccio perché ti consente di visualizzare le pagine sia in sviluppo che in produzione se hai un sito azzurrato (o una configurazione simile). Ad esempio, quando vai su xxxxx.azurewebsite.net non riprende la sessione. Grazie! Anche la semplice correzione mi ha richiesto 5 minuti per essere messa in produzione.
Jhayes2118,

11
Fuller illustra le soluzioni fornite sopra (supponiamo che ga sia il nome dell'oggetto): var ga; if (document.location.hostname == "example.com") { /* GA script here */ } else { console.log("Running non-production google analytics replacement now"); ga = function(arg) { console.log("ga:", arguments);};} ga('create', 'UA-xxxxx', 'auto'); ga('send', 'pageview');
Bryan il

34

È il 2014 e non sono ancora soddisfatto di tutte le soluzioni esistenti ...

  • I filtri IP richiedono un indirizzo IP statico. E se lavoro da casa o da un bar?
  • Il controllo del nome host elimina gli hit da un ambiente di sviluppo, ma cosa succede se sto eseguendo il debug del sito live?
  • La modifica delle configurazioni del server è fastidiosa / avanzata e più domini sono complicati.
  • Le estensioni di esclusione bloccano gli hit su tutti i siti Web o nessuno, a seconda di chi chiedi.

Quindi, ho creato la mia estensione del browser ... https://chrome.google.com/webstore/detail/lknhpplgahpbindnnocglcjonpahfikn

  • Mi segue ovunque io vada
  • Funziona su un ambiente di sviluppo e su domini live / pubblici
  • Colpisce solo me e i siti che sto sviluppando
  • Si accende / spegne con un clic
  • È facile verificare che non stia veramente inviando dati all'analisi

Funziona mantenendo un "cookie sviluppatore" impostato sul tuo computer in ogni momento solo per i domini che scegli. Quindi controlla semplicemente questo cookie nel tuo script prima di inviare dati ad Analytics. Personalizzi il tuo NOME e VALORE unici per i cookie nelle impostazioni dell'estensione. Questo può essere facilmente utilizzato da un team di persone, in modo che sviluppatori, creatori di contenuti, correttori di bozze e chiunque altro all'interno dell'organizzazione possano visualizzare tutte le pagine senza gonfiare le statistiche.

Esempi di come inserire il codice nelle tue pagine ...

JavaScript

if (window.location.host==="mydomain.com" || window.location.host==="www.mydomain.com") {
   if (document.cookie.indexOf("COOKIENAME=COOKIEVALUE") === -1) {
      // Insert Analytics Code Here
   }
}

PHP

if ($_SERVER['HTTP_HOST']==="mydomain.com" || $_SERVER['HTTP_HOST']==="www.mydomain.com") {
   if (@$_COOKIE["COOKIENAME"] !== "COOKIEVALUE") {
      // Insert Analytics Code Here
   }
}

La verifica che il nome HOST sia uguale al dominio del tuo sito live ("mydomain.com") garantisce che i dati analitici non verranno mai inviati da QUALUNQUE visitatore durante la visualizzazione da un dominio di prova come "localhost" o "beta.mydomain.com" . Negli esempi sopra, "www.mydomain.com" e "mydomain.com" sono i due domini validi in cui vogliamo che le visite vengano registrate.

Il sito live invia dati all'analisi come previsto A MENO CHE non venga trovato un cookie per sviluppatori con valori corrispondenti. Se vede quel cookie unico impostato sul tuo dispositivo, la tua visita non verrà conteggiata ai tuoi totali in Google Analytics o in qualsiasi altro strumento di analisi che preferisci utilizzare.

Sentiti libero di condividere la mia soluzione e usa la mia estensione per mantenere impostati quei cookie.


Questa è un'ottima soluzione Grazie!
Nate,

1
Ehi, guarda, potresti fare un ulteriore passo avanti e invece di richiedere agli sviluppatori di modificare il loro codice analitico, trovare semplicemente un modo per intercettare e sostituire l'oggetto ga con un oggetto finto? Teoricamente puoi farlo dopo il caricamento di JS ma prima dell'esecuzione del codice di analisi .... Esiste chrome.google.com/webstore/detail/analytics-blocker/… ma sembra essere rotto e non supportato.
jmort253,

25

Se non stai utilizzando un IP statico, l'impostazione dei filtri IP su GA non può aiutarti.

Impostare una variabile di ambiente e visualizzarla in modo condizionale. Prendi il seguente codice Ruby on Rails, ad esempio:

<% unless RAILS_ENV == "development" %>
    <!-- your GA code -->
<% end %>

È possibile estendere questo comportamento in ogni lingua / framework che si utilizza su qualsiasi sistema operativo. Su PHP, puoi usare la funzione getenv . Dai un'occhiata alla pagina di Wikipedia sulle variabili d'ambiente per sapere come procedere sul tuo sistema.


Questo è di utilità limitata poiché si applica solo se la macchina di sviluppo e il sistema in prova sono gli stessi.
JoshJordan,

1
Pensa che questa sia probabilmente la soluzione più utilizzata, anche se invece di confrontarla con "sviluppo", ti confronti con "produzione" - il che significa che, purché il sito venga eseguito in un ambiente di produzione, eseguiamo il rendering dello script GA, altrimenti no (come server di gestione temporanea, server di sviluppo o di test). Ovviamente questo non gestisce il caso del debug di un ambiente live, ma va bene per la maggior parte dei ppl.
miphe,

2
Puoi anche se ENV ["RAILS_ENV"] == "produzione"
moeabdol,

17

Puoi usare questo codice

<script>
var host = window.location.hostname;
if(host != "localhost")
{
    // your google analytic code here
}
</script>

16

Se sei dietro NAT o per altri motivi non puoi fornire il tuo IP a Google Analytics, il metodo più semplice consiste nell'impostare il dominio di Google Analytics su localhost (127.0.0.1), da adesso quando apri il tuo browser, tutti richiedono di Google Analytics verrà indirizzato alla tua postazione di lavoro, senza conoscenza di Google Analytics.


3
questa, signore, è la soluzione più semplice che abbia mai visto a questo problema! +1 da me
Nir Levy

Non consiglio questo approccio perché svilupperai (possibilmente rilascerai) codice che potrebbe entrare in conflitto con GA. E otterrai 404s che provano a dl lo script, possibilmente bloccandoli.
webXL

@webXL, la mia soluzione è esattamente quella di non scaricare affatto lo script, è per la macchina di sviluppo, e non per l'uso in produzione (host di distribuzione), si prega di sottolineare cosa potrebbe essere in conflitto in questo caso, quando GA non viene utilizzato affatto macchina di sviluppo sull'applicazione sviluppata ...
astropanico

@astropanic, GA dichiara almeno un globale, quindi è possibile sovrascriverlo o essere sovrascritto da esso. Escludendolo nello sviluppo, corri quel rischio. Potrebbe essere un piccolo rischio, ma comunque un rischio evitabile. Inoltre, i nomi host non devono corrispondere affinché GA possa tracciarli?
webXL,


16

Abbiamo impostato un secondo codice di monitoraggio di Google Analytics per lo sviluppo e il lavoro di controllo qualità: in realtà è utile quando si desidera testare l'integrazione di analisi, inoltre si garantisce che non si abbia bleedover nelle statistiche di produzione.


Non ho mai pensato di farlo, ma più lo faccio, più mi piace :)
Ben Cull

Ciò richiede un sacco di spese generali? La mia impressione è che il team di sviluppo pubblica semplicemente l'anteprima e la messa in scena direttamente alla produzione live senza apportare modifiche al codice.
MXMLLN,

2
@MXMLLN - dipende da quanto bene stai gestendo la configurazione. Nel nostro caso era solo un'altra riga di un file di configurazione che stavamo già gestendo, ymmv.
Wyatt Barnett,

@WyattBarnett - Grazie, vedrò cosa ne pensano.
MXMLLN,

14

La soluzione è usare Google Tag Manager (GTM) per gestire Google Analytics. Ciò ti consentirà di attivare Google Analytics solo nel tuo dominio di produzione senza dover scrivere condizionali nel codice del tuo sito. Ecco come farlo:

In GTM, imposta un trigger che viene attivato solo quando il nome host della pagina contiene il dominio di produzione.

inserisci qui la descrizione dell'immagine

Quindi imposta un tag per Universal Analytics e imposta il suo trigger come quello che hai appena creato.

inserisci qui la descrizione dell'immagine



6

Aggiungi questa riga prima dell'esecuzione del codice asincrono di Google Analytics per disabilitare il monitoraggio per quell'ID proprietà web:

window['ga-disable-UA-XXXXXX-Y'] = true;

UA-XXXXXX-Y corrisponde all'ID della proprietà web su cui si desidera disabilitare il tracciamento.

Da: https://developers.google.com/analytics/devguides/collection/gajs/


Sto lavorando su un sito con molte pagine ognuna con la propria copia del codice GA JS. Alla fine lo renderò dinamico in un piè di pagina, ma nel frattempo, potrei semplicemente aggiungere così in alto la pagina nell'intestazione e disabiliterà tutte le chiamate a GA?
codecowboy,

Sì, purché fornisca lo stesso ID proprietà web utilizzato più in basso nella pagina.
AJP,

5

Per disabilitare gli hit di localhost, basta creare un filtro per escludere localhost. Vai su Ammin. -> Proprietà -> Visualizza impostazioni per farlo. Controlla lo screenshot seguente per qualche aiuto.

ga view esclude localhost

Per disabilitare autonomamente gli hit degli URL di produzione se visiti utilizzando un IP non statico, puoi utilizzare un'estensione di Chrome come Cookie per sviluppatori per per saltare l'esecuzione del codice di Google Analytics se sei tu.

Personalmente non lo faccio poiché utilizzo un Blocco annunci che blocca già Google Analytics sul mio browser.


4

Utilizza una metrica personalizzata per filtrare tutto questo traffico.

Quando avvii GA nella tua app, imposta un flag personalizzato per tracciare gli sviluppi:

// In your header, after the GA code is injected
if( <your_code_to_check_if_is_dev> ) {
  ga('set', 'is_developer', 1 );
}

Quindi aggiungi un filtro nel tuo account GA per rimuovere questi risultati.

Ammin.> Account> Tutti i filtri> Aggiungi filtro> Definito dall'utente

inserisci qui la descrizione dell'immagine


3

Uso Ad Blocker per Firefox, può bloccare in modo specifico lo script di monitoraggio delle analisi di Google. Poiché firefox è il mio browser di sviluppo principale, funziona benissimo fino a quando non ho bisogno di testare il mio lavoro su altri browser.


2

Probabilmente non ti è stato utile, ma ho risolto questo problema scrivendo un controllo server ASP.NET personalizzato che inietta il JavaScript richiesto. Ho quindi aggiunto l'URL live a web.config e poi ho reso visibile il controllo solo quando il nome host corrispondeva all'URL live in web.config.


1

Come menzionano le persone, puoi ospitare il dominio google-analytics.com localmente o impostare una funzione per vedere se stai lavorando nella tua rete di sviluppo.

Tieni presente che http://www.google-analytics.com/ga.js non viene caricato e che stai utilizzando le funzioni javascript onclick per tenere traccia dei clic sugli elementi della pagina.

IE: onclick = "javascript: pageTracker._trackPageview ('/ made / up / folder / reference');

Avrai errori JavaScript che impediranno il funzionamento di jQuery o altre robuste funzioni JavaScript.


1

Proprio come un'opzione aggiuntiva per questo, ho un server di sviluppo con molti siti e sviluppatori diversi. Ciò significava che non ero particolarmente soddisfatto delle 3 opzioni principali

  • host file problematico con molti sviluppatori e aperto a errori umani
  • se / altrimenti blocca lo sviluppo su ogni sito ecc
  • configurazione sul sito Web GA: alcuni client hanno i propri account GA; dovrebbe essere completato su ogni sito con il potenziale per essere dimenticato / trascurato

Piuttosto che implementare le varie opzioni nelle altre risposte qui ho affrontato il problema nel modo seguente. Nel httpd.conf globale (piuttosto che in uno specifico del sito) ho usato il modulo apache mod_substitute per simulare l'effetto della correzione del file hosts in un'altra risposta, ma per ogni sito di sviluppo e ogni sviluppatore automaticamente.

Abilita il modulo

CentOS : apri /etc/conf/httpd.confe aggiungi la seguente riga

LoadModule substitute_module modules/mod_substitute.so

Ubuntu / Debian : eseguire il comando seguente

sudo a2enmod substitute

Dopo aver abilitato il modulo, aggiungi le seguenti righe al tuo file di configurazione globale httpd

CentOS :/etc/conf/httpd.conf

Ubuntu / Debian :/etc/apache2/httpd.conf

# Break Google Analytics
AddOutputFilterByType SUBSTITUTE text/html 
Substitute "s|.google-analytics.com|.127.0.0.1|n"

Quindi riavviare apache

CentOS :service httpd restart

Ubuntu / Debian :/etc/init.d/apache2 restart

Quello che fa è sostituire tutto il testo corrispondente .google-analytics.com con .127.0.0.1 quando apache pubblica la pagina in modo che la tua pagina venga visualizzata con un codice analitico simile all'esempio seguente

var _gaq = _gaq || [];
_gaq.push(['_setAccount', '']);
_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') + '.127.0.0.1/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();

1

So che questo post è super vecchio, ma nessuna delle soluzioni ha soddisfatto le mie esigenze. Non solo volevo rimuovere il lavoro di sviluppo da GA (e FB), ma volevo anche che alcune persone all'interno dell'azienda non venissero conteggiate in GA e FB. Quindi volevo un metodo relativamente semplice per quelle persone che si escludessero dall'analisi senza un plug-in o escludessero un dominio IP (mentre vagano le persone con laptop).

Ho creato una pagina Web a cui gli utenti possono accedere e fare clic su un collegamento per annullare il tracciamento di GA e FB. Posiziona un cookie per il sito. Quindi controllo quel cookie per determinare se dovremmo inviare dati a GA e FB.

Inizialmente l'ho installato su un sito chiamato Dahlia, che è un produttore di articoli per matrimoni e battesimi greco-ortodossi .

Ecco il codice:

Ho inserito il seguente codice nell'intestazione per tutte le pagine Web:

<script>
//put in your google analytics tracking id below:
var gaProperty = 'UA-XXXXXXXX-X';

// Disable tracking if the opt-out cookie exists.
var disableStr = 'ga-disable-' + gaProperty;
if (document.cookie.indexOf(disableStr + '=true') > -1) {
  window[disableStr] = true;
  window['ga-disable-UA-7870337-1'] = true;  //This disables the tracking on Weebly too.
} else {
   //put in your facebook tracking id below:
  fbq('init', 'YYYYYYYYYYYYYYY');
  fbq('track', 'PageView');
}
</script>

Assicurati di aggiungere i tuoi ID di tracciamento GA e FB negli spazi forniti. Questo è stato originariamente scritto per un sito Weebly (shopping CMS). Quindi se non sei su Weebly puoi rimuovere la linea che menziona weebly.

Quindi ho creato una nuova pagina web chiamata "non tracciare" con il seguente codice nell'intestazione:

<script>
//put in your own google analytics tracking id below:
var gaProperty = 'UA-XXXXXXXX-X';
var disableStr = 'ga-disable-' + gaProperty;

// Opt-out function
function gaOptout() {
  document.cookie = disableStr + '=true; expires=Thu, 31 Dec 2099 23:59:59 UTC; path=/';
  window[disableStr] = true;
  gaOptoutCheck();
}

// Check Opt-out function
function gaOptoutCheck() {
    var name = "ga-disable-"+gaProperty+"=";
    var ca = document.cookie.split(';');
    var found = "false";
    for(var i=0; i<ca.length; i++) {
        var c = ca[i];
        while (c.charAt(0)==' ') c = c.substring(1);
        if (c.indexOf(name) == 0) found = "true";
    }
    if (found == "true") alert("Cookie is properly installed");
    else alert("COOKIE NOT FOUND");
}
</script>

E il seguente codice nel corpo:

<a href="javascript:gaOptout()">Click here to opt-out of Google and Facebook Analytics</a>
<br><br>
Please visit this page on every computer, laptop, phone, tablet, etc. that you use; 
and for all browser you use on each of those devices.
<br><br>
If you ever remove cookies from browser, you will need to repeat this process for that browser.
<br><br><br>
<a href="javascript:gaOptoutCheck()">
Click to check if cookie is set</a>
<br><br>

Ecco il mio articolo completo per il sito Weebly

Spero che questo aiuti qualcuno!


1

Se hai un'applicazione di reazione e hai espulso l'app (questo potrebbe funzionare anche per CRA). Puoi utilizzare lo snippet di codice seguente nella index.htmlpagina.

<script type="text/javascript">
  if("%NODE_ENV%"==="production"){
  //your analytics code
  }

0

ottenere la variabile host richiesta.

Quindi avvolgi un'istruzione if attorno al javascript di analisi in questo modo (pseudocodice Ruby-esque):

<body>
<shtuff>dfsfsdf</shtuff>
if not (request.host == 'localhost')
  #analytics code here
elsif (request.host == the server's ip/domain)
  #analytics code here
else
  #do nothing
end
</body>

0

Ho una variabile PHP impostata per il mio sviluppo locale che mi dà un terminale per fornire dati / feedback ecc. Quando lavoro su cose.

Uso XAMPP in modo che abbia una variabile env per tmp che è la seguente:

$isLocal = (getenv("tmp") == '\xampp\tmp') ? true : false;

Questo non esiste sul mio server di produzione perché xampp non viene utilizzato

if($isLocal){
  // do something, eg. load my terminal
}

... Specifico per questa domanda:

<?php if(!$isLocal){ ?>
  <!-- Insert Google Analytics Script Here -->
<?php } // end google analytics local check ?>

Questa soluzione può davvero rovinare i tuoi eventi e i codici di monitoraggio delle conversioni in JS perché non avrai un oggetto "ga" da chiamare. In questo modo l'intero JS potrebbe bloccarsi e causare molti altri problemi.
omgitsdrobinoha,

0

Oggi, mentre ero su un computer diverso dal mio, ho notato che μBlock Origin per Chrome stava bloccando Google AdSense per impostazione predefinita. Dopo aver cercato su Google, ho trovato questo articolo . Nota inoltre che μBlock Origin Firefox, μ Adblock per Firefox e Ad Muncher per Windows bloccano AdSense per impostazione predefinita. La maggior parte delle altre opzioni sono elencate come configurabili per bloccare AdSense.

Questo sembra funzionare ed è utile perché il mio IP è spesso dinamico, quindi l'estensione di Chrome può seguirmi fino a quando accedo a Chrome.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.