Existe uma maneira de impedir que o Google Analytics conte o trabalho de desenvolvimento como hits?


151

Adicionei o JavaScript necessário ao final das minhas páginas para poder usar o Google Analytics. O único problema é que tenho certeza de que está contando todo o meu trabalho de desenvolvimento como hits. Visto que provavelmente vejo algumas dessas páginas cem vezes por dia, isso realmente distorcerá minhas leituras. Existe uma maneira de desativá-lo de um endereço IP específico ou isso é algo que deve ser incorporado ao meu processo de compilação, para que ele seja adicionado apenas quando eu compilar para implantação?


6
Em que idioma / tecnologias você está desenvolvendo? Como você pode fazer algo em que, se o nome do host = 127.0.0.1 ou localhost (ou qualquer que seja sua instância local), não mostre o bloco de scripts de análise. Deve ser uma linha de código do lado do servidor ...
davewasthere

4
Não sei por que alguém quer passar isso para o SuperUser - é claramente uma questão de programação / desenvolvimento.
9338 Thomas Owens

Eu estou usando asp.net, vs2005 e é um projeto web.
uridium

Você pode usar como bloqueador de script, por exemplo, umatrix ou uBlock . Ele bloqueará todos os scripts de anúncios, incluindo o script analítico do Google.
Simon

Respostas:


102

Sim, você acessa as Configurações do Analytics, edita seu site e + Adicionar filtro para definir um filtro que exclui seu endereço IP.

Os dados passados ​​não são regenerados com os filtros aplicados; portanto, você só terá o benefício deles de seguir em frente.


17
Um filtro [recém-criado] se aplica somente a dados futuros.
viam0Zah

1
Isso é perfeito. Estou fazendo isso proativamente. Ainda não adicionei o javascript que o Google Analytics exige. Vou colocar o filtro no lugar e depois implantar.
uridium

7
acabei de encontrar essa pergunta aleatoriamente ... Eu usaria um UA-ID diferente para o meu ambiente de desenvolvimento. É o que eu faço agora. Eu acho que essa seria uma abordagem melhor do que ter que bloquear endereços IP e outras coisas.
22412 karry

3
Na verdade, existe uma maneira ainda mais fácil. Essa técnica também funcionará apenas para dados futuros. Ao inicializar o objeto ga, basta definir um domínio de cookie explícito. Referência: developers.google.com/analytics/devguides/collection/…
Darren

2
Dependendo do seu ambiente de desenvolvimento, você também pode excluir nomes de host. Como desenvolvo com o asp.net, excluí todos os nomes de host que contêm localhost. Se você normalmente possui um ambiente de teste em um subdomínio, exclua-o.
CularBytes 14/02

205

Eu gosto da abordagem simples de usar javascript. Funciona em qualquer lugar.

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

//google analytics code goes here

}
</script>

3
muito elegante solução :)
Sushant Gupta

28
Obrigado. Eu pessoalmente uso if (document.location.hostname == "example.com") { /* ga code */ } else { _gaq = {push: function(arg) {console.log("ga:", arg)}}}- isso permite que eu use com segurança alguns rastreadores de eventos e chamadas _gaq personalizadas em qualquer lugar do meu código e, ao mesmo tempo, permita depurar chamadas do GA no ambiente de desenvolvimento.
seriyPS

1
Outra solução , um pouco mais legível, seria usar um regex literal:if(/example\.com/.test(window.location.hostname)) { /* GA code */ }
mjswensen

Eu gosto muito dessa abordagem porque permite que você visualize as páginas em desenvolvimento e produção, se você tiver um site azul (ou uma configuração semelhante). O IE, quando você acessa xxxxx.azurewebsites.net , não recebe a sessão. Obrigado! A correção simples também me levou 5 minutos para colocar em produção.
Jhayes2118

11
Fuller ilustram soluções fornecidas acima (assumir ga é nome do objecto): 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

Estamos em 2014 e ainda estou insatisfeito com todas as soluções existentes ...

  • Os filtros IP requerem um endereço IP estático. E se eu estiver trabalhando em casa ou em uma cafeteria?
  • A verificação do nome do host elimina os hits de um ambiente de desenvolvimento, mas e se eu estiver depurando o site ativo?
  • A edição das configurações do servidor é irritante / avançada e vários domínios são complicados.
  • As extensões de exclusão bloqueiam os hits em todos os sites ou nenhum, dependendo de quem você perguntar.

Então, criei minha própria extensão do navegador ... https://chrome.google.com/webstore/detail/lknhpplgahpbindnnocglcjonpahfikn

  • Me segue onde quer que eu vá
  • Funciona em um ambiente de desenvolvimento e em domínios ao vivo / públicos
  • Isso afeta apenas a mim e aos sites que estou desenvolvendo
  • Liga / desliga com um clique
  • É fácil verificar se realmente não está enviando nenhum dado para análise

Ele funciona mantendo sempre um "cookie de desenvolvedor" em sua máquina apenas para os domínios que você escolher. Você simplesmente verifica esse cookie em seu script antes de enviar qualquer dado ao Analytics. Você personaliza seu próprio NAME e VALUE exclusivo para os cookies nas configurações da extensão. Isso pode ser facilmente utilizado por uma equipe de pessoas, para que desenvolvedores, criadores de conteúdo, revisores e qualquer outra pessoa em sua organização possam visualizar as páginas sem aumentar as estatísticas.

Exemplos de como inserir o código em suas 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
   }
}

A verificação de que o nome HOST é igual ao domínio do seu site ativo ("mydomain.com") garante que os dados analíticos nunca serão enviados por QUALQUER visitante durante a visualização de um domínio de teste, como "localhost" ou "beta.mydomain.com" . Nos exemplos acima, "www.mydomain.com" e "mydomain.com" são os dois domínios válidos nos quais queremos que as visitas sejam registradas.

O site ativo envia dados para análise conforme o esperado, A menos que um cookie de desenvolvedor seja encontrado com valores correspondentes. Se ele vir esse cookie exclusivo definido no seu dispositivo, sua visita não será contabilizada nos seus totais no Google Analytics ou em qualquer outra ferramenta de análise que você preferir usar.

Sinta-se livre para compartilhar minha solução e usar minha extensão para manter esses cookies definidos.


Esta é uma otima soluçao. Obrigado!
Nate

1
Ei, seebigs, você poderia dar um passo adiante e, em vez de exigir que os desenvolvedores alterem seu código de análise, encontre uma maneira de interceptar e substituir o objeto ga por um objeto simulado? Teoricamente, você pode fazer isso após o carregamento do JS, mas antes da execução do código de análise ... Existe chrome.google.com/webstore/detail/analytics-blocker/…, mas ele parece estar quebrado e sem suporte.
jmort253

25

Se você não estiver usando IP estático, a configuração de filtros IP no GA não poderá ajudá-lo.

Defina uma variável de ambiente e exiba-a condicionalmente. Pegue o seguinte código Ruby on Rails, por exemplo:

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

Você pode estender esse comportamento a todos os idiomas / estruturas que você usa em qualquer sistema operacional. No PHP, você pode usar a função getenv . Confira a página da Wikipedia em Variáveis ​​de ambiente para saber como proceder em seu sistema.


Isso é de uso limitado, pois só se aplica se a máquina de desenvolvimento e o sistema em teste forem os mesmos.
JoshJordan

1
Pense que essa é provavelmente a solução mais usada, embora, em vez de comparar com ´ "desenvolvimento" ´, você compare com ´ "produção" ´, ou seja, desde que o site seja executado em um ambiente de produção, renderizamos o script GA, caso contrário, não (como servidores intermediários, servidores de desenvolvimento ou teste). Obviamente, isso não lida com o caso de você depurar um ambiente ativo, mas isso é bom para a maioria das pessoas.
Miphe

2
Você também pode se ENV [ "RAILS_ENV"] == "produção"
moeabdol

17

Você pode usar este código

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

16

Se você está atrás do NAT ou não pode, por outro motivo, fornecer seu IP para o Google Analytics, o método mais simples é definir o domínio do google analytics como localhost (127.0.0.1). A partir de agora, quando você abrir o navegador, todos os pedidos para O Google Analytics será direcionado para o seu posto de trabalho, sem o conhecimento do Google Analytics.


3
essa é a solução mais simples que já vi para esse problema! +1 de mim
Nir Levy

Não recomendo esta abordagem porque você desenvolverá (possivelmente lançará) código que possa entrar em conflito com o GA. E você terá 404s tentando dl o script, possivelmente bloqueando.
WebXL

@webXL, minha solução é exatamente para não baixar o script, é para a máquina de desenvolvimento e não para uso em produção (host de implantação), indique o que pode entrar em conflito nesse caso, quando o GA não é usado de todo máquina de desenvolvimento na aplicação desenvolvida ...
astropanic

@astropanic, o GA declara pelo menos um global, portanto, é possível substituí-lo ou ser substituído por ele. Ao excluí-lo no desenvolvimento, você corre esse risco. Pode ser um risco pequeno, mas um risco evitável. Além disso, os nomes de host não precisam corresponder ao GA para rastrear?
WebXL

Você também pode usar 0.0.0.0 em vez de 127.0.0.1
Goyllo 9/17

16

Configuramos um segundo código de rastreamento do Google Analytics para desenvolvimento e trabalho de controle de qualidade - na verdade, é útil quando você deseja testar sua integração com o Google Analytics, além de garantir que não haja erros nas estatísticas de produção.


Eu nunca pensei em fazer isso, mas quanto mais eu faço, mais eu gosto :)
Ben Cull

Isso requer muita sobrecarga? Minha impressão é que a equipe de desenvolvimento publica apenas a visualização e a preparação diretamente para a produção ao vivo sem fazer nenhuma alteração no código.
MXMLLN

2
@MXMLLN - isso depende de quão bem você está gerenciando a configuração. No nosso caso, era apenas mais uma linha em um arquivo de configuração que já estávamos manipulando, ymmv.
Wyatt Barnett

@ WyattBarnett - Obrigado, vou ver o que eles pensam.
MXMLLN

14

A solução é usar o Gerenciador de tags do Google (GTM) para lidar com seu Google Analytics. Isso permitirá que você acione apenas o Google Analytics no seu domínio de produção sem precisar escrever condicionais no código do seu site. Veja como fazê-lo:

No GTM, defina um gatilho que é acionado apenas quando o nome do host da página contém seu domínio de produção.

insira a descrição da imagem aqui

Em seguida, defina uma tag para o Universal Analytics e faça com que o gatilho seja o que você acabou de criar.

insira a descrição da imagem aqui



6

Adicione esta linha antes da execução do código assíncrono do Google Analytics para desativar o rastreamento para esse ID de propriedade da web:

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

UA-XXXXXX-Y corresponde ao ID da propriedade da web no qual você deseja desativar o rastreamento.

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


Estou trabalhando em um site com muitas páginas, cada uma com sua própria cópia do código JS do GA. Eventualmente, tornarei isso dinâmico em um rodapé, mas, enquanto isso, eu poderia adicionar essa página na parte superior do cabeçalho e desativará todas as chamadas para o GA?
Codecowboy 22/01

Sim, desde que você forneça o mesmo ID de propriedade da web usado mais abaixo na página.
AJP

5

Para desativar os hits do host local, basta criar um filtro para excluir o host local. Vá para Admin -> Propriedade -> Exibir configurações para fazer isso. Verifique a captura de tela a seguir para obter ajuda.

a visualização ga exclui localhost

Para desativar os hits do URL de produção para você mesmo, se você visitar um IP não estático, use uma extensão do Chrome como Cookie do desenvolvedor para ignorar a execução do código do Google Analytics, se for você.

Pessoalmente, não faço isso, pois uso um Ad Blocker que já bloqueia o Google Analytics no meu navegador.


4

Use uma métrica personalizada para filtrar todo esse tráfego.

Quando você inicia o GA no seu aplicativo, defina um sinalizador personalizado para acompanhar os desenvolvimentos:

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

Em seguida, adicione um filtro na sua conta do GA para remover esses resultados.

Administrador> Conta> Todos os filtros> Adicionar filtro> Definido pelo usuário

insira a descrição da imagem aqui


3

Eu uso o Ad Blocker for Firefox, ele pode bloquear especificamente o script de rastreamento do Google Analytics. Como o Firefox é o meu navegador de desenvolvimento principal, ele funciona muito bem até que eu precise testar meu trabalho em outros navegadores.


2

Provavelmente não é útil para você, mas resolvi esse problema escrevendo um controle de servidor ASP.NET personalizado que injeta o JavaScript necessário. Em seguida, adicionei o URL ativo ao web.config e só tornei o controle visível quando o nome do host correspondeu ao URL ativo no web.config.


1

Como as pessoas mencionam, você pode hospedar o domínio google-analytics.com localmente ou configurar uma função para ver se você está trabalhando em sua rede de desenvolvimento.

Lembre-se de que http://www.google-analytics.com/ga.js não carrega e você usa funções javascript onclick para ajudar a rastrear cliques nos elementos da página.

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

Você terá erros de JavaScript que impedirão o funcionamento do jQuery ou de outras funções JavaScript robustas.


1

Apenas como uma opção adicional para isso, tenho um servidor de desenvolvimento com muitos sites e desenvolvedores diferentes. Isso significava que eu não estava particularmente feliz com as três opções principais

  • hospeda arquivo problemático com muitos desenvolvedores e aberto a erros humanos
  • bloco de desenvolvimento if / else em todos os sites, etc.
  • configuração no site do GA - alguns clientes têm suas próprias contas do GA; teria que ser concluído em todos os sites com o potencial de ser esquecido / esquecido

Em vez de implementar as várias opções nas outras respostas aqui, abordei o problema da seguinte maneira. No httpd.conf global (em vez de um site específico), usei o módulo apache mod_substitute para simular o efeito que o arquivo hosts corrige em outra resposta, mas para todos os sites de desenvolvimento e todos os desenvolvedores automaticamente.

Ativar o módulo

CentOS : abra /etc/conf/httpd.confe adicione a seguinte linha

LoadModule substitute_module modules/mod_substitute.so

Ubuntu / Debian : Execute o seguinte comando

sudo a2enmod substitute

Depois de habilitar o módulo, adicione as seguintes linhas ao seu arquivo de configuração 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"

Então reinicie o apache

CentOS :service httpd restart

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

O que isso faz é substituir todo o texto correspondente a .google-analytics.com por .127.0.0.1 quando o apache exibir a página para que sua página seja renderizada com código de análise semelhante ao exemplo abaixo

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

Sei que este post é super antigo, mas nenhuma das soluções atendeu às minhas necessidades. Eu não apenas queria remover o trabalho de desenvolvimento do GA (e FB), mas também queria que algumas pessoas dentro da empresa não fossem contadas no GA e no FB. Então, eu queria um método relativamente fácil para essas pessoas se excluírem da análise sem um plug-in ou excluir um IP de domínio (como as pessoas com laptops vagam).

Criei uma página da Web para a qual os usuários podem acessar e clicar em um link para desativar o rastreamento GA e FB. Ele coloca um cookie para o site. Depois, verifico esse cookie para determinar se devemos enviar dados para o GA e o FB.

Originalmente, configurei isso em um site chamado Dahlia, que é uma fabricante de artigos para casamentos e batismos ortodoxos gregos .

Aqui está o código:

Coloquei o seguinte código no cabeçalho de todas as páginas da 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>

Adicione seus IDs de rastreamento do GA e do FB nos espaços fornecidos. Foi originalmente escrito para um site do Weebly (shopping CMS). Portanto, se você não estiver no Weebly, poderá remover a linha que menciona o Weebly.

Em seguida, criei uma nova página da Web chamada "não rastrear" com o seguinte código no cabeçalho:

<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 o seguinte código no 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>

Aqui está o meu artigo completo para o site Weebly

Espero que isso ajude alguém!


1

Se você tiver um aplicativo de reação e ejetar o aplicativo (isso também pode funcionar para o CRA). Você pode usar o snippet de código abaixo na index.htmlpágina.

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

0

obtenha a variável de host de solicitação.

Então, envolva uma instrução if em torno do javascript do analytics como este (pseudocódigo em estilo de Ruby):

<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

Eu tenho uma variável PHP definida para o meu desenvolvimento local que me fornece um terminal para fornecer dados / feedback, etc, quando estou trabalhando nas coisas.

Eu uso o XAMPP para que tenha uma variável env para tmp, que é a seguinte:

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

Isso não existe no meu servidor de produção porque o xampp não está sendo usado

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

... Específico para esta pergunta:

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

Essa solução pode realmente atrapalhar seus eventos e códigos de acompanhamento de conversões em JS, porque você não terá um objeto "ga" para chamar. Dessa forma, todo o JS pode falhar e causar muitos outros problemas.
Omgitsdrobinoha

0

Hoje, enquanto em um computador diferente do meu, notei que o μBlock Origin for Chrome estava bloqueando o Google AdSense por padrão. Depois de pesquisar no Google, encontrei este artigo . Ele também observa o μBlock Origin Firefox, μ Adblock para Firefox e Ad Muncher para Windows bloqueiam o AdSense por padrão. A maioria das outras opções está listada como configurável para bloquear o AdSense.

Isso parece funcionar e é útil porque meu IP geralmente é dinâmico; portanto, a extensão do Chrome pode me seguir desde que eu esteja logado no Chrome.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.