Existe-t-il un moyen d'empêcher Google Analytics de comptabiliser les travaux de développement comme des hits?

151

J'ai ajouté le JavaScript dont j'ai besoin au bas de mes pages pour pouvoir utiliser Google Analytics. Le seul problème est que je suis sûr que tout mon travail de développement compte comme des succès. Étant donné que je vois probablement certaines de ces pages cent fois par jour, cela faussera vraiment mes lectures. Existe-t-il un moyen de le désactiver à partir d'une adresse IP particulière ou est-ce quelque chose qui devrait être intégré à mon processus de génération afin qu'il ne soit ajouté que lorsque je construis pour le déploiement?

uriDium
la source
6
Dans quel langage / technologies développez-vous? Parce que vous pouvez faire quelque chose où si le nom d'hôte = 127.0.0.1 ou localhost (ou quelle que soit votre instance locale), alors ne montrez pas le bloc de script d'analyse. Devrait être une ligne de code côté serveur ...
davewasthere
4
Je ne sais pas pourquoi quelqu'un veut déplacer cela vers SuperUser - c'est clairement une question de programmation / développement.
Thomas Owens
J'utilise asp.net, vs2005 et c'est un projet web.
uriDium
Vous pouvez utiliser comme bloqueur de script, par exemple umatrix ou uBlock . Il bloquera tous les scripts publicitaires, y compris le script analytique de Google.
Simon

Réponses:

102

Oui, vous allez dans les paramètres Analytics, modifiez votre site et + Ajouter un filtre pour définir un filtre qui exclut votre adresse IP.

Les données passées ne sont pas régénérées avec les filtres appliqués, vous n'aurez donc que l'avantage de les faire avancer.

le chaos
la source
17
Un filtre [nouvellement créé] s'applique uniquement aux données futures.
viam0Zah
1
C'est parfait. Je fais cela de manière proactive. Je n'ai pas encore ajouté le javascript requis par Google Analytics. Je vais mettre le filtre en place puis déployer.
uriDium
7
Je viens de rencontrer cette question au hasard ... J'utiliserais simplement un UA-ID différent pour mon environnement de développement. C'est ce que je fais maintenant. Je pense que ce serait une meilleure approche que d'avoir à bloquer les adresses IP et tout.
karry
3
En fait, il existe un moyen encore plus simple. Cette technique ne fonctionnera cependant que pour les données futures. Lors de l'initialisation de l'objet ga, définissez simplement un domaine de cookie explicite. Référence: développeurs.google.com
analytics
2
En fonction de votre environnement de développement, vous pouvez également exclure les noms d'hôte. Je développe avec asp.net donc j'ai exclu tous les noms d'hôte qui contiennent localhost. Si vous avez généralement un environnement de test sous un sous-domaine, excluez-le simplement.
CularBytes
205

J'aime l'approche simple de l'utilisation de javascript. Cela fonctionne partout.

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

//google analytics code goes here

}
</script>
keza
la source
3
solution très élégante :)
Sushant Gupta
28
Merci. J'utilise personnellement if (document.location.hostname == "example.com") { /* ga code */ } else { _gaq = {push: function(arg) {console.log("ga:", arg)}}}- cela me permet d'utiliser en toute sécurité certains trackers d'événements et des appels _gaq personnalisés n'importe où dans mon code et en même temps me permet de déboguer les appels GA sur l'environnement de développement.
seriyPS
1
Une autre solution légèrement plus lisible serait d'utiliser un littéral regex:if(/example\.com/.test(window.location.hostname)) { /* GA code */ }
mjswensen
J'aime beaucoup plus cette approche car elle vous permet d'afficher des pages à la fois en développement et en production si vous avez un site Azure (ou une configuration similaire). IE lorsque vous allez sur xxxxx.azurewebsites.net, il ne reprend pas la session. Merci! Une solution simple m'a également pris 5 minutes pour la mise en production.
Jhayes2118
11
Plus complet illustrent les solutions fournies ci-dessus (supposons que ga est le nom de l'objet): 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

Nous sommes en 2014 et je ne suis toujours pas satisfait de toutes les solutions existantes ...

  • Les filtres IP nécessitent une adresse IP statique. Et si je travaille à domicile ou dans un café?
  • La vérification du nom d'hôte élimine les appels d'un environnement de développement, mais que faire si je débogue le site en direct?
  • La modification des configurations de serveur est ennuyeuse / avancée et plusieurs domaines sont compliqués.
  • Les extensions de désactivation bloquent les appels sur tous les sites Web ou n'en bloquent aucun, selon à qui vous demandez.

J'ai donc créé ma propre extension de navigateur ... https://chrome.google.com/webstore/detail/lknhpplgahpbindnnocglcjonpahfikn

  • Il me suit partout où je vais
  • Il fonctionne sur un environnement de développement et sur des domaines vivants / publics
  • Cela ne concerne que moi et les sites que je développe
  • Il s'allume / s'éteint en un clic
  • Il est facile de vérifier qu'il n'envoie vraiment aucune donnée à l'analytique

Il fonctionne en gardant un "cookie de développeur" défini sur votre ordinateur à tout moment uniquement pour les domaines que vous choisissez. Il vous suffit ensuite de vérifier ce cookie dans votre script avant d'envoyer des données à Analytics. Vous personnalisez vos propres NOM et VALEUR uniques pour les cookies dans les paramètres de l'extension. Cela peut facilement être utilisé par une équipe de personnes, de sorte que les développeurs, les créateurs de contenu, les correcteurs et tous les autres membres de votre organisation peuvent tous afficher les pages sans gonfler les statistiques.

Exemples de mise en place du code dans vos pages ...

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 vérification que le nom de l'hôte est égal au domaine de votre site en ligne ("mydomain.com") garantit que les données d'analyse ne seront jamais envoyées par AUCUN visiteur lors de la consultation à partir d'un domaine de test tel que "localhost" ou "beta.mydomain.com" . Dans les exemples ci-dessus, "www.mondomaine.com" et "mydomaine.com" sont les deux domaines valides dans lesquels nous souhaitons que les visites soient enregistrées.

Le site en direct envoie des données à l'analyse comme prévu, SAUF si un cookie de développeur avec des valeurs correspondantes est trouvé. S'il voit ce cookie unique installé sur votre appareil, votre visite ne sera pas comptabilisée dans vos totaux dans Google Analytics ou tout autre outil d'analyse que vous préférez utiliser.

N'hésitez pas à partager ma solution et à utiliser mon extension pour garder ces cookies définis.

Seebigs
la source
C'est une excellente solution. Merci!
Nate
1
Hey seebigs, pourriez-vous aller plus loin et au lieu d'exiger des développeurs qu'ils modifient leur code d'analyse, trouvez simplement un moyen d'intercepter et de remplacer l'objet ga par un objet simulé à la place? Vous pouvez théoriquement le faire après le chargement du JS, mais avant que le code d'analyse ne s'exécute ... Il existe chrome.google.com/webstore/detail/analytics-blocker/ ... mais il semble être cassé et non pris en charge.
jmort253
25

Si vous n'utilisez pas d'adresse IP statique, la configuration de filtres IP sur GA ne peut pas vous aider.

Définissez une variable d'environnement et affichez-la conditionnellement. Prenez le code Ruby on Rails suivant, par exemple:

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

Vous pouvez étendre ce comportement à chaque langage / structure que vous utilisez sur n'importe quel système d'exploitation. Sur PHP, vous pouvez utiliser la fonction getenv . Consultez la page Wikipédia sur les variables d'environnement pour savoir comment procéder sur votre système.

Nando Vieira
la source
Ceci est d'une utilité limitée car il ne s'applique que si la machine de développement et le système testé sont les mêmes.
JoshJordan
1
Je pense que c'est probablement la solution la plus utilisée, mais au lieu de comparer à «développement», vous comparez à «production» - ce qui signifie que tant que le site est exécuté dans un environnement de production, nous rendons le script GA, sinon non (comme les serveurs de transfert, les serveurs de développement ou de test). Évidemment, cela ne gère pas le cas où vous déboguez un environnement en direct, mais c'est bien pour la plupart des utilisateurs.
miphe le
2
Vous pouvez aussi si ENV ["RAILS_ENV"] == "production"
moeabdol
17

Vous pouvez utiliser ce code

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

Si vous êtes derrière NAT ou que vous ne pouvez pas pour une autre raison donner votre adresse IP à Google Analytics, la méthode la plus simple consiste à définir le domaine google analytics sur localhost (127.0.0.1), à partir de maintenant lorsque vous ouvrez votre navigateur, toutes les demandes à Google Analytics sera dirigé vers votre poste de travail, sans connaissance de Google Analytics.

astropanique
la source
3
ceci, monsieur, est la solution la plus simple que j'aie jamais vue à ce problème! +1 de moi
Nir Levy
Je ne recommande pas cette approche car vous allez développer (éventuellement publier) du code qui pourrait entrer en conflit avec GA. Et vous obtiendrez des 404 essayant de dl le script, bloquant peut-être.
webXL
@webXL, ma solution est exactement de ne pas télécharger du tout le script, c'est pour la machine de développement, et non pour une utilisation en production (hôte de déploiement), veuillez indiquer ce qui pourrait entrer en conflit dans ce cas, lorsque GA n'est pas du tout utilisé sur machine de développement sur l'application développée ...
astropanique
@astropanic, GA déclare au moins un global, il est donc possible de l'écraser ou d'être écrasé par celui-ci. En l'excluant dans le développement, vous courez ce risque. Peut-être un petit risque, mais un risque évitable néanmoins. De plus, les noms d'hôte ne doivent-ils pas correspondre pour que GA puisse les suivre?
webXL
Vous pouvez aussi utiliser 0.0.0.0 au lieu de 127.0.0.1
Goyllo
16

Nous avons configuré un deuxième code de suivi Google Analytics pour le développement et le travail d'assurance qualité - est en fait utile lorsque vous souhaitez tester votre intégration d'analyse, garantissant également qu'il n'y a pas de fuite dans les statistiques de production.

Wyatt Barnett
la source
Je n'ai jamais pensé à faire ça, mais plus j'en fais, plus j'aime ça :)
Ben Cull
Cela nécessite-t-il beaucoup de frais généraux? Mon impression est que l'équipe de développement publie simplement un aperçu et une mise en scène directement dans la production en direct sans apporter de modifications au code.
MXMLLN
2
@MXMLLN - cela dépend de la qualité de la gestion de la configuration. Dans notre cas, c'était juste une autre ligne dans un fichier de configuration que nous manipulions déjà, ymmv.
Wyatt Barnett
@WyattBarnett - Merci, je vais voir ce qu'ils en pensent.
MXMLLN
14

La solution consiste à utiliser Google Tag Manager (GTM) pour gérer votre Google Analytics. Cela vous permettra de ne déclencher Google Analytics que sur votre domaine de production sans avoir à écrire des conditions dans le code de votre site. Voici comment procéder:

Dans GTM, définissez un déclencheur qui se déclenche uniquement lorsque le nom d'hôte de la page contient votre domaine de production.

entrez la description de l'image ici

Définissez ensuite une balise pour Universal Analytics et définissez son déclencheur comme celui que vous venez de créer.

entrez la description de l'image ici

Martyn Chamberlin
la source
6

Ajoutez cette ligne avant l'exécution de votre code asynchrone Google Analytics pour désactiver le suivi de cet ID de site Web:

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

UA-XXXXXX-Y correspond à l'ID de site Web sur lequel vous souhaitez désactiver le suivi.

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

AJP
la source
Je travaille sur un site avec beaucoup de pages qui ont chacune leur propre copie du code GA JS. Je vais éventuellement rendre cette dynamique dans un pied de page, mais en attendant, pourrais-je simplement ajouter cela en haut de la page dans l'en-tête et cela désactivera tous les appels à GA?
codecowboy
Oui, tant que vous fournissez le même ID de propriété Web que celui utilisé plus bas dans la page.
AJP
5

Pour désactiver les appels localhost, créez simplement un filtre pour exclure localhost. Allez dans Admin -> Propriété -> Afficher les paramètres pour ce faire. Consultez la capture d'écran suivante pour obtenir de l'aide.

ga view exclure localhost

Pour désactiver les appels d'URL de production pour vous-même si vous visitez à l'aide d'une adresse IP non statique, vous pouvez utiliser une extension Chrome telle que Developer Cookie pour ignorer l'exécution du code Google Analytics si c'est vous.

Personnellement, je ne fais pas cela car j'utilise un bloqueur de publicité qui bloque déjà Google Analytics sur mon navigateur.

Avi
la source
4

Utilisez une métrique personnalisée pour filtrer tout ce trafic.

Lorsque vous lancez GA dans votre application, définissez un indicateur personnalisé pour suivre les développeurs:

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

Ajoutez ensuite un filtre dans votre compte GA pour supprimer ces résultats.

Admin> Compte> Tous les filtres> Ajouter un filtre> Défini par l'utilisateur

entrez la description de l'image ici

Joseph Lust
la source
3

J'utilise Ad Blocker pour Firefox, il peut bloquer spécifiquement le script de suivi de Google Analytics. Puisque Firefox est mon principal navigateur de développement, il fonctionne très bien jusqu'à ce que je doive tester mon travail dans d'autres navigateurs.

Adrian
la source
2

Probablement pas utile pour vous, mais j'ai résolu ce problème en écrivant un contrôle serveur ASP.NET personnalisé qui injecte le JavaScript requis. J'ai ensuite ajouté l'URL en direct à web.config, puis je n'ai rendu le contrôle visible que lorsque le nom d'hôte correspondait à l'URL en direct dans web.config.

Dan Diplo
la source
1

Comme les gens le mentionnent, vous pouvez soit héberger le domaine google-analytics.com localement, soit configurer une fonction pour voir si vous travaillez dans votre réseau de développement.

Gardez à l'esprit si http://www.google-analytics.com/ga.js ne se charge pas et que vous utilisez les fonctions javascript onclick pour suivre les clics sur les éléments de la page.

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

Vous allez avoir des erreurs JavaScript qui empêcheront jQuery ou d'autres fonctions JavaScript robustes de fonctionner.

gegere
la source
1

Juste comme une option supplémentaire pour cela, j'ai un serveur de développement avec de nombreux sites et développeurs différents. Cela signifiait que je n'étais pas particulièrement satisfait des 3 options principales

  • fichier hosts - problématique avec de nombreux développeurs et ouvert à l'erreur humaine
  • bloc de développement if / else sur chaque site, etc.
  • configuration sur le site Web de GA - certains clients ont leurs propres comptes GA; devrait être complété sur chaque site avec le potentiel d'être oublié / négligé

Plutôt que de mettre en œuvre les différentes options dans les autres réponses ici, j'ai abordé le problème de la manière suivante. Dans le httpd.conf global (plutôt que spécifique au site), j'ai utilisé le module apache mod_substitute pour simuler l'effet du correctif du fichier hosts dans une autre réponse, mais pour chaque site de développement, et chaque développeur automatiquement.

Activer le module

CentOS : ouvrez /etc/conf/httpd.confet ajoutez la ligne suivante

LoadModule substitute_module modules/mod_substitute.so

Ubuntu / Debian : exécutez la commande suivante

sudo a2enmod substitute

Une fois que vous avez activé le module, ajoutez les lignes suivantes à votre fichier de configuration 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"

Puis redémarrez Apache

CentOS :service httpd restart

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

Cela remplace tout le texte correspondant à .google-analytics.com par .127.0.0.1 lorsque Apache diffuse la page afin que votre page s'affiche avec un code analytique similaire à l'exemple ci-dessous.

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
la source
1

Je sais que cet article est très ancien, mais aucune des solutions n'a répondu à mes besoins. Non seulement je voulais supprimer le travail de développement de GA (et FB), mais je voulais aussi que certaines personnes au sein de l'entreprise ne soient pas comptées dans GA et FB. Je voulais donc une méthode relativement simple pour que ces personnes s'excluent de l'analyse sans plugin, ou excluent une adresse IP de domaine (car les gens avec des ordinateurs portables errent).

J'ai créé une page Web à laquelle les utilisateurs peuvent accéder et cliquer sur un lien pour désactiver le suivi GA et FB. Il place un cookie pour le site. Ensuite, je vérifie ce cookie pour déterminer si nous devons envoyer des données à GA et FB.

À l'origine, je l'ai installé sur un site appelé Dahlia, qui est un fabricant d'articles pour les mariages et les baptêmes orthodoxes grecs .

Voici le code:

J'ai mis le code suivant dans l'en-tête de toutes les pages 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>

Assurez-vous d'ajouter vos identifiants de suivi GA et FB dans les espaces prévus à cet effet. Ceci a été écrit à l'origine pour un site Weebly (CMS d'achat). Donc, si vous n'êtes pas sur Weebly, vous pouvez supprimer la ligne qui mentionne weebly.

Ensuite, j'ai créé une nouvelle page Web appelée "ne pas suivre" avec le code suivant dans l'en-tête:

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

Et le code suivant dans le corps:

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

Voici mon article complet pour le site Weebly

J'espère que cela aide quelqu'un!

fournaiseX
la source
1

Si vous avez une application de réaction et que vous avez éjecté l'application (cela pourrait également fonctionner pour l'ARC). Vous pouvez utiliser l'extrait de code ci-dessous dans la index.htmlpage.

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

récupère la variable hôte de la requête.

Alors enroulez une instruction if autour du javascript analytique comme ceci (pseudocode 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>
user94154
la source
0

J'ai un jeu de variables PHP pour mon développement local qui me donne un terminal pour fournir des données / commentaires, etc. lorsque je travaille sur des choses.

J'utilise XAMPP pour avoir une variable env pour tmp qui est la suivante:

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

Cela n'existe pas sur mon serveur de production car xampp n'est pas utilisé

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

... Spécifique à cette question:

<?php if(!$isLocal){ ?>
  <!-- Insert Google Analytics Script Here -->
<?php } // end google analytics local check ?>
Shanehoban
la source
Cette solution peut vraiment gâcher vos événements et vos codes de suivi de conversion dans JS car vous n'aurez pas d'objet «ga» à appeler. De cette façon, tout le JS pourrait planter et causer de nombreux autres problèmes.
omgitsdrobinoha
0

Aujourd'hui, alors que sur un ordinateur différent du mien, j'ai remarqué que μBlock Origin pour Chrome bloquait Google AdSense par défaut. Après quelques recherches sur Google, j'ai trouvé cet article . Il note également μBlock Origin Firefox, μ Adblock pour Firefox et Ad Muncher pour Windows bloquent AdSense par défaut. La plupart des autres options sont répertoriées comme configurables pour bloquer AdSense.

Cela semble fonctionner et est utile car mon adresse IP est souvent dynamique, de sorte que l'extension Chrome peut me suivre tant que je suis connecté à Chrome.

RationalDev ajoute GoFundMonica comme favori
la source