Czy istnieje sposób, aby zatrzymać liczenie prac programistycznych Google Analytics jako trafień?


151

Dodałem JavaScript, którego potrzebuję, na dole moich stron, aby móc korzystać z Google Analytics. Jedynym problemem jest to, że jestem pewien, że wszystkie moje prace programistyczne liczą jako trafienia. Widząc, jak pewnie widzę niektóre z tych stron sto razy dziennie, naprawdę wypaczy moje odczyty. Czy istnieje sposób na wyłączenie go z określonego adresu IP, czy też jest to coś, co powinno być wbudowane w mój proces kompilacji, aby było dodawane tylko podczas kompilacji do wdrożenia?


6
W jakim języku / technologiach rozwijasz? Ponieważ możesz zrobić coś, co jeśli nazwa hosta = 127.0.0.1 lub localhost (lub cokolwiek to jest twoja lokalna instancja), nie pokazuj bloku skryptu analitycznego. Powinien to być jeden wiersz kodu po stronie serwera ...
davewasthere

4
Nie wiem, dlaczego ktoś chce przenieść to do SuperUser - jest to oczywiście kwestia programowania / programowania.
Thomas Owens

Używam asp.net, vs2005 i jest to projekt sieci Web.
uriDium

Powinieneś użyć jako blokera skryptów, np. Umatrix lub uBlock . Zablokuje wszystkie skrypty reklam, w tym skrypt analityczny Google.
Simon

Odpowiedzi:


102

Tak, przechodzisz do ustawień Analytics, edytujesz witrynę i + Dodaj filtr, aby zdefiniować filtr, który wyklucza Twój adres IP.

Wcześniejsze dane nie są ponownie generowane z zastosowanymi filtrami, więc będziesz mieć tylko korzyść z ich przejścia do przodu.


17
[Nowo utworzony] filtr ma zastosowanie tylko do przyszłych danych.
viam0Zah

1
To jest perfekcyjne. Robię to proaktywnie. Nie dodałem jeszcze javascript wymaganego przez Google Analytics. Umieszczę filtr na miejscu, a następnie rozmieszczę.
uriDium

7
właśnie przypadkowo natknąłem się na to pytanie ... Po prostu użyłbym innego identyfikatora UA-ID dla mojego środowiska programistycznego. To właśnie teraz robię. Myślę, że byłoby to lepsze podejście niż blokowanie adresów IP i innych rzeczy.
karry

3
Właściwie jest jeszcze łatwiejszy sposób. Ta technika będzie działać tylko w przypadku przyszłych danych. Podczas inicjalizacji obiektu ga wystarczy ustawić jawną domenę cookie. Źródła: developers.google.com/analytics/devguides/collection/…
Darren

2
W zależności od środowiska programistycznego możesz również wykluczyć nazwy hostów. Tworzę z asp.net, więc wykluczyłem wszystkie nazwy hostów, które zawierają localhost. Jeśli zwykle masz środowisko testowe w subdomenie, po prostu je wyklucz.
CularBytes,

205

Podoba mi się prosta metoda korzystania z javascript. Działa wszędzie.

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

//google analytics code goes here

}
</script>

3
bardzo eleganckie rozwiązanie :)
Sushant Gupta

28
Dzięki. Używam osobiście if (document.location.hostname == "example.com") { /* ga code */ } else { _gaq = {push: function(arg) {console.log("ga:", arg)}}}- pozwala mi to bezpiecznie używać niektórych trackerów zdarzeń i niestandardowych wywołań _gaq w dowolnym miejscu w moim kodzie, a jednocześnie umożliwia debugowanie wywołań GA w środowisku deweloperskim.
seriyPS

1
Innym, nieco bardziej czytelnym rozwiązaniem byłoby użycie dosłownego wyrażenia regularnego:if(/example\.com/.test(window.location.hostname)) { /* GA code */ }
mjswensen

O wiele bardziej podoba mi się to podejście, ponieważ umożliwia przeglądanie stron zarówno w fazie deweloperskiej, jak i produkcyjnej, jeśli masz witrynę lazurową (lub podobną konfigurację). IE po przejściu do xxxxx.azurewebsites.net nie odbiera sesji. Dzięki! Również prosta naprawa zajęła mi 5 minut, aby rozpocząć produkcję.
Jhayes2118

11
Pełniejsze zilustrowanie rozwiązań przedstawionych powyżej (załóżmy, że ga to nazwa obiektu): 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

Jest rok 2014 i nadal jestem niezadowolony ze wszystkich istniejących rozwiązań ...

  • Filtry IP wymagają statycznego adresu IP. A co jeśli pracuję w domu lub w kawiarni?
  • Sprawdzanie nazwy hosta eliminuje trafienia ze środowiska deweloperskiego, ale co, jeśli debuguję działającą witrynę?
  • Edytowanie konfiguracji serwera jest irytujące / zaawansowane, a wiele domen jest skomplikowanych.
  • Rozszerzenia Opt-Out albo blokują trafienia we wszystkich witrynach, albo wcale, w zależności od tego, kogo zapytasz.

Więc stworzyłem własne rozszerzenie przeglądarki ... https://chrome.google.com/webstore/detail/lknhpplgahpbindnnocglcjonpahfikn

  • Podąża za mną, gdziekolwiek idę
  • Działa w środowisku deweloperskim i na domenach aktywnych / publicznych
  • Dotyczy tylko mnie i stron, które tworzę
  • Włącza / wyłącza się jednym kliknięciem
  • Łatwo jest sprawdzić, czy naprawdę nie wysyła żadnych danych do analityki

Działa poprzez przechowywanie „pliku cookie dewelopera” ustawionego na Twoim komputerze przez cały czas tylko dla wybranych domen. Następnie po prostu sprawdź ten plik cookie w swoim skrypcie przed wysłaniem jakichkolwiek danych do Analytics. Możesz dostosować własną, unikalną NAZWĘ i WARTOŚĆ dla plików cookie w ustawieniach rozszerzenia. Może być z łatwością używany przez zespół ludzi, więc programiści, twórcy treści, korektorzy i wszyscy inni w Twojej organizacji mogą przeglądać strony bez zawyżania statystyk.

Przykłady umieszczania kodu na stronach ...

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

Weryfikacja, czy nazwa HOST jest równa domenie Twojej aktywnej witryny („mojadomena.com”) gwarantuje, że dane analityczne nigdy nie zostaną wysłane przez ŻADNEGO odwiedzającego podczas przeglądania z domeny testowej, takiej jak „localhost” lub „beta.moja_domena.com” . W powyższych przykładach „www.moja_domena.com” i „mojadomena.com” to dwie prawidłowe domeny, w których chcemy rejestrować odwiedziny.

Aktywna witryna wysyła dane do analityki zgodnie z oczekiwaniami, chyba że zostanie znaleziony plik cookie dewelopera z pasującymi wartościami. Jeśli zobaczy ten unikalny plik cookie ustawiony na Twoim urządzeniu, Twoja wizyta nie będzie liczyła się do Twoich sum w Google Analytics lub jakimkolwiek innym narzędziu analitycznym, z którego wolisz korzystać.

Zapraszam do udostępniania mojego rozwiązania i korzystania z mojego rozszerzenia, aby zachować ustawione pliki cookie.


To świetne rozwiązanie. Dzięki!
Nate

1
Hej, seebigs, czy mógłbyś pójść o krok dalej i zamiast wymagać od programistów zmiany kodu analitycznego, po prostu znajdź sposób na przechwycenie i zastąpienie obiektu GA obiektem pozorowanym? Teoretycznie możesz to zrobić po załadowaniu JS, ale przed uruchomieniem kodu analitycznego… Jest chrome.google.com/webstore/detail/analytics-blocker/… ale wygląda na to, że jest uszkodzony i nie jest obsługiwany.
jmort253

25

Jeśli nie używasz statycznego adresu IP, ustawienie filtrów IP w GA nie pomoże.

Ustaw zmienną środowiskową i wyświetl ją warunkowo. Weźmy na przykład następujący kod Ruby on Rails:

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

Możesz rozszerzyć to zachowanie w każdym języku / frameworku, którego używasz w dowolnym systemie operacyjnym. W PHP możesz użyć funkcji getenv . Zajrzyj na stronę Wikipedii na temat zmiennych środowiskowych, aby dowiedzieć się, jak postępować w systemie.


Ma to ograniczone zastosowanie, ponieważ ma zastosowanie tylko wtedy, gdy maszyna programistyczna i testowany system są takie same.
JoshJordan

1
Sądzę, że jest to prawdopodobnie najczęściej używane rozwiązanie, chociaż zamiast porównywać do „rozwoju” ´, można porównać to do „produkcji” ´ - co oznacza, że ​​dopóki witryna jest uruchomiona w środowisku produkcyjnym, renderujemy skrypt GA, inaczej nie (np. serwery pomostowe, serwery programistyczne lub testowe). Oczywiście nie rozwiązuje to przypadku debugowania środowiska na żywo, ale jest to w porządku dla większości ppl.
miphe

2
Możesz również, jeśli ENV ["RAILS_ENV"] == "produkcja"
moeabdol

17

Możesz użyć tego kodu

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

16

Jeśli jesteś za NAT lub z innego powodu nie możesz podać swojego adresu IP do Google Analytics, to najprostszą metodą jest ustawienie domeny google analytics na localhost (127.0.0.1), od teraz po otwarciu przeglądarki wszystkie żądania do Google Analytics zostanie przekierowane na Twoją stację roboczą, bez znajomości Google Analytics.


3
to jest najprostsze rozwiązanie tego problemu, jakie kiedykolwiek widziałem! +1 ode mnie
Nir Levy

Nie polecam tego podejścia, ponieważ zamierzasz opracować (prawdopodobnie wydać) kod, który może kolidować z GA. Otrzymasz błędy 404 próbujące dl skryptu, prawdopodobnie blokujące.
webXL

@webXL, moje rozwiązanie polega dokładnie na tym, aby w ogóle nie pobierać skryptu, jest przeznaczone dla maszyny deweloperskiej, a nie do użytku produkcyjnego (host wdrażania), proszę wskazać, co może powodować konflikt w tym przypadku, gdy GA w ogóle nie jest używana maszyna rozwojowa na opracowanej aplikacji ...
astropaniczna

@astropanic, GA deklaruje co najmniej jeden globalny, więc można go nadpisać lub zostać przez niego nadpisany. Wykluczając go w rozwoju, ryzykujesz. Może to być niewielkie ryzyko, ale ryzyko, którego można uniknąć. Poza tym, czy nazwy hostów nie muszą się zgadzać, aby GA mógł śledzić?
webXL

Możesz także użyć 0.0.0.0 zamiast 127.0.0.1
Goyllo

16

Skonfigurowaliśmy drugi kod śledzenia Google Analytics na potrzeby prac programistycznych i kontroli jakości - w rzeczywistości przydaje się, gdy chcesz przetestować integrację analityki, a także zapewnia, że ​​nie ma przesypywania się do statystyk produkcyjnych.


Nigdy o tym nie myślałem, ale im więcej robię, tym bardziej mi się to podoba :)
Ben Cull

Czy to wymaga dużego obciążenia? Mam wrażenie, że zespół programistów po prostu publikuje podgląd i przygotowuje bezpośrednio do produkcji na żywo bez wprowadzania jakichkolwiek zmian w kodzie.
MXMLLN

2
@MXMLLN - to zależy od tego, jak dobrze zarządzasz konfiguracją. W naszym przypadku była to po prostu kolejna linia w pliku konfiguracyjnym, który już obsługiwaliśmy, ymmv.
Wyatt Barnett

@WyattBarnett - Dzięki, zobaczę, co myślą.
MXMLLN

14

Rozwiązaniem jest użycie Google Tag Manager (GTM) do obsługi Google Analytics. Umożliwi to uruchomienie Google Analytics tylko w domenie produkcyjnej bez konieczności wpisywania jakichkolwiek warunków warunkowych w kodzie witryny. Oto jak to zrobić:

W GTM ustaw regułę, która uruchamia się tylko wtedy, gdy nazwa hosta strony zawiera domenę produkcyjną.

wprowadź opis obrazu tutaj

Następnie ustaw tag dla Universal Analytics i ustaw wyzwalacz jako właśnie utworzony.

wprowadź opis obrazu tutaj



6

Dodaj ten wiersz przed uruchomieniem kodu asynchronicznego Google Analytics, aby wyłączyć śledzenie dla tego identyfikatora usługi internetowej:

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

UA-XXXXXX-Y odpowiada identyfikatorowi usługi internetowej, w przypadku którego chcesz wyłączyć śledzenie.

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


Pracuję nad witryną z wieloma stronami, z których każda ma własną kopię kodu GA JS. W końcu utworzę tę dynamikę w stopce, ale w międzyczasie, czy mogę po prostu dodać tak wysoko na stronie w nagłówku, aby wyłączyć wszystkie wywołania do GA?
codecowboy

Tak, o ile podasz ten sam identyfikator usługi internetowej, który jest używany w dalszej części strony.
AJP

5

Aby wyłączyć trafienia localhost, po prostu utwórz filtr wykluczający localhost. Aby to zrobić, przejdź do Administracja -> Usługa -> Wyświetl ustawienia. Sprawdź poniższy zrzut ekranu, aby uzyskać pomoc.

Widok ga wyklucza localhost

Aby wyłączyć dla siebie trafienia produkcyjnego adresu URL, jeśli odwiedzasz witrynę przy użyciu niestatycznego adresu IP, możesz użyć rozszerzenia Chrome, takiego jak plik cookie programisty aby pominąć uruchamianie kodu Google Analytics, jeśli to Ty.

Osobiście tego nie robię, ponieważ używam Ad Blockera, który już blokuje Google Analytics w mojej przeglądarce.


4

Użyj niestandardowych danych aby odfiltrować cały ten ruch.

Po uruchomieniu GA w aplikacji ustaw niestandardową flagę, aby śledzić programistów:

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

Następnie dodaj filtr na swoim koncie GA, aby usunąć te wyniki.

Administrator> Konto> Wszystkie filtry> Dodaj filtr> Zdefiniowane przez użytkownika

wprowadź opis obrazu tutaj


3

Używam Ad Blocker dla przeglądarki Firefox, może on konkretnie blokować skrypt śledzenia Google Analytics. Ponieważ firefox jest moją główną przeglądarką programistyczną, działa świetnie, dopóki nie będę musiał przetestować swojej pracy w innych przeglądarkach.


2

Prawdopodobnie nie jest to pomocne, ale rozwiązałem ten problem, pisząc niestandardową kontrolkę serwera ASP.NET, która wstrzykuje wymagany JavaScript. Następnie dodałem aktywny adres URL do pliku web.config i sprawiłem, że formant był widoczny tylko wtedy, gdy nazwa hosta była zgodna z aktywnym adresem URL w pliku web.config.


1

Jak ludzie wspominają, możesz albo hostować domenę google-analytics.com lokalnie, albo skonfigurować funkcję, aby sprawdzić, czy pracujesz w swojej sieci deweloperskiej.

Pamiętaj, że http://www.google-analytics.com/ga.js nie ładuje się i korzystasz z funkcji javascript onclick do śledzenia kliknięć elementów strony.

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

Będziesz mieć błędy JavaScript, które zatrzymają działanie jQuery lub innych solidnych funkcji JavaScript.


1

Jako dodatkową opcję, mam serwer programistyczny z wieloma różnymi witrynami i programistami. Oznaczało to, że nie byłem szczególnie zadowolony z 3 głównych opcji

  • Hosts - problematyczny dla wielu programistów i podatny na błędy ludzkie
  • jeśli / else blokuje rozwój w każdej witrynie itp
  • konfiguracja na stronie GA - niektórzy klienci mają własne konta GA; musiałyby zostać wypełnione w każdym miejscu, które mogłoby zostać zapomniane / przeoczone

Zamiast implementować różne opcje w innych odpowiedziach tutaj, podszedłem do problemu w następujący sposób. W globalnym httpd.conf (zamiast specyficznym dla witryny) użyłem modułu apache mod_substitute aby zasymulować efekt poprawki pliku hosts w innej odpowiedzi, ale dla każdej witryny programistycznej i każdego programisty automatycznie.

Włącz moduł

CentOS : Otwórz /etc/conf/httpd.confi dodaj następujący wiersz

LoadModule substitute_module modules/mod_substitute.so

Ubuntu / Debian : uruchom następujące polecenie

sudo a2enmod substitute

Po włączeniu modułu dodaj następujące wiersze do globalnego pliku konfiguracyjnego 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"

Następnie uruchom ponownie Apache

CentOS :service httpd restart

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

Powoduje to zamianę całego pasującego tekstu .google-analytics.com na .127.0.0.1, gdy apache obsługuje stronę, aby Twoja strona renderowała się z kodem analitycznym podobnym do poniższego przykładu

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

Wiem, że ten post jest bardzo stary, ale żadne z rozwiązań nie spełniło moich potrzeb. Nie tylko chciałem usunąć prace deweloperskie z GA (i FB), ale także chciałem, aby niektórzy ludzie z firmy nie byli liczeni w GA i FB. Chciałem więc stosunkowo łatwej metody dla tych ludzi, aby wykluczyć się z analityki bez wtyczki lub wykluczyć IP domeny (gdy ludzie z laptopami wędrują).

Utworzyłem stronę internetową, do której użytkownicy mogą przejść i kliknąć link, aby zrezygnować ze śledzenia GA i FB. Umieszcza plik cookie dla witryny. Następnie sprawdzam ten plik cookie, aby określić, czy powinniśmy wysyłać dane do GA i FB.

Pierwotnie założyłem to na stronie o nazwie Dahlia, która jest butikowym producentem przedmiotów na greckie prawosławne wesela i chrzty .

Oto kod:

W nagłówku wszystkich stron umieszczam następujący kod:

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

Pamiętaj, aby dodać identyfikatory śledzenia GA i FB w przewidzianych miejscach. Zostało to pierwotnie napisane dla witryny Weebly (Shopping CMS). Jeśli więc nie korzystasz z Weebly, możesz usunąć wiersz, który wspomina o weebly.

Następnie utworzyłem nową stronę internetową o nazwie „do-not-track” z następującym kodem w nagłówku:

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

I następujący kod w treści:

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

Oto mój pełny opis witryny Weebly

Mam nadzieję, że to komuś pomoże!


1

Jeśli masz aplikację „Reaguj” i wyrzuciłeś aplikację (może to działać również w przypadku agencji ratingowych). Możesz skorzystać z poniższego fragmentu kodu na index.htmlstronie.

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

0

pobierz zmienną hosta żądania.

Więc zawiń instrukcję if wokół javascript analitycznego w następujący sposób (pseudokod w stylu 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

Mam ustawioną zmienną PHP dla mojego lokalnego rozwoju, która daje mi terminal do dostarczania danych / opinii itp., Kiedy pracuję nad różnymi rzeczami.

Używam XAMPP, więc ma zmienną env dla tmp, która jest następująca:

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

To nie istnieje na moim serwerze produkcyjnym, ponieważ xampp nie jest używany

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

... Specyficzne dla tego pytania:

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

To rozwiązanie może naprawdę zepsuć zdarzenia i kody śledzenia konwersji w JS, ponieważ nie będziesz mieć do wywołania obiektu „ga”. W ten sposób cały JS mógłby się zawiesić i spowodować wiele innych problemów.
omgitsdrobinoha

0

Dzisiaj, będąc na innym komputerze niż mój, zauważyłem, że μBlock Origin dla Chrome domyślnie blokuje Google AdSense. Po pewnym googlowaniu znalazłem ten artykuł . Zauważa również, że μBlock Origin Firefox, μ Adblock dla Firefoksa i Ad Muncher dla Windows domyślnie blokują AdSense. Większość innych opcji można skonfigurować w celu zablokowania AdSense.

To wydaje się działać i jest przydatne, ponieważ mój adres IP jest często dynamiczny, więc rozszerzenie Chrome może mnie śledzić, dopóki jestem zalogowany w Chrome.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.