¿Hay alguna manera de evitar que Google Analytics cuente el trabajo de desarrollo como éxitos?

151

He agregado el JavaScript que necesito al final de mis páginas para poder utilizar Google Analytics. El único problema es que estoy seguro de que cuenta todo mi trabajo de desarrollo como éxitos. Ver como probablemente veo algunas de esas páginas cien veces al día, realmente sesgará mis lecturas. ¿Hay alguna forma de desactivarlo desde una dirección IP particular o es algo que debería integrarse en mi proceso de compilación para que solo se agregue cuando compilo para la implementación?

uridio
fuente
66
¿En qué idioma / tecnologías estás desarrollando? Porque podría hacer algo donde si el nombre de host = 127.0.0.1 o localhost (o lo que sea su instancia local) no muestre el bloque de script de análisis. En caso de ser una línea de código del lado del servidor ...
davewasthere
44
No sé por qué alguien quiere trasladar esto a SuperUser: es claramente una pregunta de programación / desarrollo.
Thomas Owens
Estoy usando asp.net, vs2005 y es un proyecto web.
uriDium
Puede usarlo como bloqueador de guiones, por ejemplo, umatrix o uBlock . Bloqueará todos los scripts de anuncios, incluido el script analítico de Google.
Simon

Respuestas:

102

Sí, ingresa a Configuración de análisis, edita su sitio y + Agregar filtro para definir un filtro que excluya su dirección IP.

Los datos anteriores no se regeneran con los filtros aplicados, por lo que solo tendrá la ventaja de que seguirán adelante.

caos
fuente
17
Un filtro [recién creado] solo se aplica a datos futuros.
viam0Zah
1
Eso es perfecto. Estoy haciendo esto de manera proactiva. Todavía no he agregado el javascript que requiere Google Analytics. Pondré el filtro en su lugar y luego lo desplegaré.
uriDium
77
acabo de encontrar esta pregunta al azar ... Simplemente usaría una ID de UA diferente para mi entorno de desarrollo. Eso es lo que hago ahora. Creo que este sería un mejor enfoque que tener que bloquear direcciones IP y otras cosas.
karry
3
En realidad, hay una manera aún más fácil. Sin embargo, esta técnica solo funcionará para datos futuros. Al inicializar el objeto ga, simplemente configure un dominio de cookie explícito. Referencia: developers.google.com/analytics/devguides/collection/…
Darren
2
Dependiendo de su entorno de desarrollo, también puede excluir nombres de host. Desarrollo con asp.net, así que excluí todos los nombres de host que contiene localhost. Si generalmente tiene un entorno de prueba bajo un subdominio, simplemente excluya eso.
CularBytes
205

Me gusta el enfoque simple de usar javascript. Funciona en cualquier parte.

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

//google analytics code goes here

}
</script>
keza
fuente
3
solución muy elegante :)
Sushant Gupta
28
Gracias. Personalmente if (document.location.hostname == "example.com") { /* ga code */ } else { _gaq = {push: function(arg) {console.log("ga:", arg)}}}, esto me permite usar de forma segura algunos rastreadores de eventos y llamadas _gaq personalizadas en cualquier parte de mi código y al mismo tiempo me permite depurar llamadas GA en el entorno de desarrollo.
seriyPS
1
Otra solución ligeramente más legible sería utilizar un literal regex:if(/example\.com/.test(window.location.hostname)) { /* GA code */ }
mjswensen
Este enfoque me gusta mucho más porque te permite ver páginas tanto en desarrollo como en producción si tienes un sitio azul (o una configuración similar). IE cuando vas a xxxxx.azurewebsites.net no retoma la sesión. ¡Gracias! La solución simple también me llevó 5 minutos para ponerla en producción.
Jhayes2118
11
Fuller ilustra las soluciones proporcionadas anteriormente (suponga que ga es el nombre del objeto): 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
34

Es 2014 y todavía no estoy satisfecho con todas las soluciones existentes ...

  • Los filtros IP requieren una dirección IP estática. ¿Qué pasa si estoy trabajando desde casa o desde una cafetería?
  • Verificar el nombre de host elimina los hits de un entorno de desarrollo, pero ¿qué sucede si estoy depurando el sitio en vivo?
  • Editar las configuraciones del servidor es molesto / avanzado y múltiples dominios son complicados.
  • Las extensiones de exclusión voluntaria bloquean las visitas en todos los sitios web o ninguna en función de a quién le pregunte.

Entonces, creé mi propia extensión de navegador ... https://chrome.google.com/webstore/detail/lknhpplgahpbindnnocglcjonpahfikn

  • Me sigue a donde quiera que vaya
  • Funciona en un entorno de desarrollo y en dominios públicos / en vivo.
  • Solo me afecta a mí y a los sitios que estoy desarrollando
  • Se enciende / apaga con un clic
  • Es fácil verificar que realmente no está enviando datos a la analítica

Funciona manteniendo una "cookie de desarrollador" configurada en su máquina en todo momento solo para los dominios que elija. Luego, simplemente verifique esta cookie en su script antes de enviar cualquier dato a Analytics. Personaliza su propio NOMBRE y VALOR únicos para las cookies en la configuración de la extensión. Esto puede ser utilizado fácilmente por un equipo de personas, por lo que los desarrolladores, creadores de contenido, revisores y cualquier otra persona de su organización pueden ver las páginas sin inflar las estadísticas.

Ejemplos de cómo poner el código en sus páginas ...

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
   }
}

Verificar que el nombre HOST sea igual al dominio de su sitio en vivo ("midominio.com") asegura que los datos analíticos nunca serán enviados por CUALQUIER visitante mientras se ve desde un dominio de prueba como "localhost" o "beta.mydomain.com" . En los ejemplos anteriores, "www.midominio.com" y "midominio.com" son los dos dominios válidos en los que queremos que se registren las visitas.

El sitio en vivo envía datos a los análisis como se esperaba A MENOS QUE se encuentre una cookie de desarrollador con valores coincidentes. Si ve esa cookie única establecida en su dispositivo, entonces su visita no contará para sus totales en Google Analytics o cualquier otra herramienta de análisis que prefiera usar.

Siéntase libre de compartir mi solución y usar mi extensión para mantener esas cookies configuradas.

Seebigs
fuente
Esta es una gran solución. ¡Gracias!
Nate
1
Hola, amigos, ¿podría llevar esto un paso más allá y, en lugar de exigir a los desarrolladores que cambien su código de análisis, simplemente encontrar una manera de interceptar y reemplazar el objeto ga con un objeto simulado en su lugar? Teóricamente, puede hacerlo después de que se cargue el JS pero antes de que se ejecute el código de análisis ... Hay chrome.google.com/webstore/detail/analytics-blocker/… pero parece estar roto y no es compatible.
jmort253
25

Si no está utilizando una IP estática, configurar los filtros de IP en GA no puede ayudarlo.

Establezca una variable de entorno y visualícela condicionalmente. Tome el siguiente código de Ruby on Rails, por ejemplo:

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

Puede extender este comportamiento a cada idioma / marco que use en cualquier sistema operativo. En PHP, puede usar la función getenv . Consulte la página de Wikipedia sobre Variables de entorno para saber cómo proceder en su sistema.

Nando Vieira
fuente
Esto es de uso limitado, ya que solo se aplica si la máquina de desarrollo y el sistema bajo prueba son los mismos.
JoshJordan
1
Piensa que esta es probablemente la solución más utilizada, aunque en lugar de comparar con "desarrollo", comparas con "producción", es decir, siempre que el sitio se ejecute en un entorno de producción, representamos el script GA, de lo contrario no (como servidores de ensayo, servidores de desarrollo o de prueba). Obviamente, esto no maneja el caso de que usted depure un entorno en vivo, pero eso está bien para la mayoría de las personas.
miphe
2
También puede hacerlo si ENV ["RAILS_ENV"] == "producción"
moeabdol
17

Puedes usar este código

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

Si está detrás de NAT o no puede, por otra razón, dar su IP a Google Analytics, entonces el método más simple es configurar el dominio de Google Analytics en localhost (127.0.0.1), a partir de ahora cuando abra su navegador, todos solicitan Google Analytics será dirigido a su estación de trabajo, sin conocimiento de Google Analytics.

astropanico
fuente
3
¡Esta, señor, es la solución más simple que he visto para este problema! +1 de mi parte
Nir Levy
No recomiendo este enfoque porque vas a desarrollar (posiblemente liberar) código que pueda entrar en conflicto con GA. Y obtendrá 404s tratando de dl el script, posiblemente bloqueando.
webXL
@webXL, mi solución es exactamente para no descargar el script en absoluto, es para la máquina de desarrollo y no para el uso de producción (host de implementación), indique qué podría entrar en conflicto en este caso, cuando GA no se utiliza en absoluto máquina de desarrollo en la aplicación desarrollada ...
astropanic 03 de
@astropanic, GA declara al menos un global, por lo que es posible sobrescribirlo o sobrescribirlo. Al excluirlo en el desarrollo, corre ese riesgo. Puede ser un riesgo pequeño, pero un riesgo evitable de todos modos. Además, ¿los nombres de host no tienen que coincidir para que GA los rastree?
webXL
También puede usar 0.0.0.0 en lugar de 127.0.0.1
Goyllo
16

Configuramos un segundo código de seguimiento de Google Analytics para el desarrollo y el trabajo de control de calidad: en realidad es útil cuando desea probar su integración de análisis, también garantiza que uno no tenga pérdidas en las estadísticas de producción.

Wyatt Barnett
fuente
Nunca pensé en hacer esto, pero cuanto más lo hago, más me gusta :)
Ben Cull
¿Requiere esto mucha sobrecarga? Mi impresión es que el equipo de desarrollo solo publica una vista previa y una puesta en escena directamente para la producción en vivo sin hacer ningún cambio en el código.
MXMLLN
2
@MXMLLN: eso depende de qué tan bien esté haciendo la gestión de la configuración. En nuestro caso, era solo otra línea en un archivo de configuración que ya estábamos manejando, ymmv.
Wyatt Barnett
@WyattBarnett - Gracias, veré qué piensan.
MXMLLN
14

La solución es usar Google Tag Manager (GTM) para manejar su Google Analytics. Esto le permitirá activar solo Google Analytics en su dominio de producción sin tener que escribir ninguna condición en el código de su sitio. Aquí se explica cómo hacerlo:

En GTM, configure un activador que solo se active cuando el nombre de host de la página contenga su dominio de producción.

ingrese la descripción de la imagen aquí

Luego establezca una Etiqueta para Universal Analytics y haga que su Activador sea el que acaba de crear.

ingrese la descripción de la imagen aquí

Martyn Chamberlin
fuente
6

Agregue esta línea antes de que se ejecute su código asincrónico de Google Analytics para deshabilitar el seguimiento de ese ID de propiedad web:

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

UA-XXXXXX-Y corresponde al ID de propiedad web en el que desea deshabilitar el seguimiento.

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

AJP
fuente
Estoy trabajando en un sitio con muchas páginas, cada una con su propia copia del código GA JS. Eventualmente haré esta dinámica en un pie de página, pero mientras tanto, ¿podría agregar esto en la parte superior de la página en el encabezado y deshabilitará todas las llamadas a GA?
codecowboy
Sí, siempre que proporcione el mismo ID de propiedad web que se utiliza más adelante en la página.
AJP
5

Para deshabilitar los hits de localhost, solo cree un filtro para excluir localhost. Vaya a Administrador -> Propiedad -> Ver configuración para hacerlo. Consulte la siguiente captura de pantalla para obtener ayuda.

vista ga excluye localhost

Para deshabilitar los accesos de URL de producción para usted si visita utilizando una IP no estática, puede usar una extensión de Chrome como Developer Cookie para omitir la ejecución del código de Google Analytics si es usted.

Yo personalmente no hago esto ya que uso un bloqueador de anuncios que ya bloquea Google Analytics en mi navegador.

Avi
fuente
4

Use una métrica personalizada para filtrar todo este tráfico.

Cuando inicie GA en su aplicación, establezca un indicador personalizado para rastrear el desarrollo:

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

Luego, agregue un filtro en su cuenta de GA para eliminar estos resultados.

Admin> Cuenta> Todos los filtros> Agregar filtro> Definido por el usuario

ingrese la descripción de la imagen aquí

Joseph Lust
fuente
3

Uso Ad Blocker para Firefox, puede bloquear específicamente el script de seguimiento de Google Analytics. Dado que Firefox es mi navegador principal de desarrollo, funciona muy bien hasta que necesito probar mi trabajo en otros navegadores.

Adrian
fuente
2

Probablemente no sea útil para usted, pero resolví este problema escribiendo un control de servidor ASP.NET personalizado que inyecta el JavaScript requerido. Luego agregué la URL en vivo a web.config y luego solo hice visible el control cuando el nombre del host coincidía con la URL en vivo en web.config.

Dan Diplo
fuente
1

Como mencionan las personas, puede alojar el dominio google-analytics.com localmente o configurar una función para ver si está trabajando en su red de desarrollo.

Tenga en cuenta si http://www.google-analytics.com/ga.js no se carga y está utilizando las funciones de JavaScript onclick para ayudar a rastrear los clics en los elementos de la página.

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

Tendrá errores de JavaScript que detendrán el funcionamiento de jQuery u otras funciones robustas de JavaScript.

gegere
fuente
1

Solo como una opción adicional para esto, tengo un servidor de desarrollo con muchos sitios y desarrolladores diferentes. Esto significaba que no estaba particularmente contento con las 3 opciones principales

  • Archivo de hosts: problemático con muchos desarrolladores y abierto a errores humanos
  • bloque de desarrollo if / else en cada sitio, etc.
  • configuración en el sitio web de GA: algunos clientes tienen sus propias cuentas de GA; tendría que completarse en cada sitio con el potencial de ser olvidado / pasado por alto

En lugar de implementar las diversas opciones en las otras respuestas aquí, abordé el problema de la siguiente manera. En el httpd.conf global (en lugar de uno específico del sitio) utilicé el módulo apache mod_substitute para simular el efecto que tiene la solución del archivo de hosts en otra respuesta, pero para cada sitio de desarrollo y cada desarrollador automáticamente.

Habilitar el módulo

CentOS : abre /etc/conf/httpd.confy agrega la siguiente línea

LoadModule substitute_module modules/mod_substitute.so

Ubuntu / Debian : ejecute el siguiente comando

sudo a2enmod substitute

Una vez que haya habilitado el módulo, agregue las siguientes líneas a su archivo de configuración global 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"

Luego reinicie apache

CentOS :service httpd restart

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

Lo que esto hace es reemplazar todo el texto que coincida con .google-analytics.com con .127.0.0.1 cuando apache sirve la página para que su página se muestre con un código de análisis similar al siguiente ejemplo

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);
})();
Ben Swinburne
fuente
1

Sé que esta publicación es muy antigua, pero ninguna de las soluciones satisfizo mis necesidades. No solo quería eliminar el trabajo de desarrollo de GA (y FB), sino que también quería que algunas personas dentro de la empresa no se contaran en GA y FB. Entonces, quería un método relativamente fácil para que esas personas se excluyeran de la analítica sin un complemento, o descartaran una ip de dominio (ya que las personas con computadoras portátiles deambulan).

Creé una página web a la que los usuarios pueden acceder y hacer clic en un enlace para optar por el seguimiento de GA y FB. Coloca una cookie para el sitio. Luego verifico esa cookie para determinar si debemos enviar datos a GA y FB.

Originalmente configuré esto en un sitio llamado Dahlia, que es un fabricante de artículos para bodas y bautizos ortodoxos griegos .

Aquí está el código:

Puse el siguiente código en el encabezado de todas las páginas 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>

Asegúrese de agregar sus ID de seguimiento de GA y FB en los espacios provistos. Esto fue escrito originalmente para un sitio Weebly (compras CMS). Entonces, si no está en Weebly, puede eliminar la línea que menciona Weebly.

Luego creé una nueva página web llamada "no rastrear" con el siguiente código en el encabezado:

<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>

Y el siguiente código en el cuerpo:

<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>

Aquí está mi informe completo para el sitio Weebly

Espero que esto ayude a alguien!

horno X
fuente
1

Si tiene una aplicación de reacción y ha expulsado la aplicación (esto también podría funcionar para CRA). Puede utilizar el fragmento de código a continuación en la index.htmlpágina.

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

obtener la variable de host de solicitud.

Así que envuelva una declaración if alrededor del javascript analítico como este (pseudocódigo 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>
usuario94154
fuente
0

Tengo un conjunto de variables PHP para mi desarrollo local que me da un terminal para proporcionar datos / comentarios, etc. cuando estoy trabajando en cosas.

Yo uso XAMPP para que tenga una variable env para tmp que es la siguiente:

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

Esto no existe en mi servidor de producción porque no se está utilizando xampp

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

... Específico a esta pregunta:

<?php if(!$isLocal){ ?>
  <!-- Insert Google Analytics Script Here -->
<?php } // end google analytics local check ?>
shanehoban
fuente
Esa solución realmente puede arruinar sus eventos y códigos de seguimiento de conversión en JS porque no tendrá un objeto "ga" al que llamar. De esa manera, todo el JS podría fallar y causar muchos otros problemas.
omgitsdrobinoha
0

Hoy, mientras estaba en una computadora diferente a la mía, noté que μBlock Origin para Chrome estaba bloqueando Google AdSense de manera predeterminada. Después de buscar en Google, encontré este artículo . También observa que μBlock Origin Firefox, μ Adblock para Firefox y Ad Muncher para Windows bloquean AdSense de forma predeterminada. La mayoría de las otras opciones se enumeran como configurables para bloquear AdSense.

Esto parece funcionar y es útil porque mi IP es a menudo dinámica, por lo que la extensión de Chrome puede seguirme mientras esté conectado a Chrome.

A RationalDev le gusta GoFundMonica
fuente