Jeśli używasz Google Analytics na swoim blogu lub stronie internetowej. Sprawdź czy Twoje statystyki nie są zaburzone przez spam! Brak działania może wywołać katastrofę przy prowadzonej analizie. Nie podejmuj błędnych decyzji, przy wyciąganiu wniosków ze sztucznie nabitych statystyk!
Czym jest spam z odesłań w Google Analytics?
Od końca ubiegłego roku możemy zaobserwować natężony wzrost bezwartościowego ruchu z odesłań. Zgodnie z nomenklaturą Analyticsa, odesłania są ruchem pozyskanym dzięki linkom, prowadzącym do naszej witryny z innych stron zamieszczonych w sieci.
Nie zawsze jednak za odnośnikami ukazującymi się w naszych statystykach stoją prawdziwi użytkownicy Internetu. Część z tego ruchu może być sztucznym ruchem wywołanym przez różnego rodzaju boty. W obecnej sytuacji zaobserwowałem dwa rodzaje spamu. Pierwszy tzw. „referrer spam” pochodzący od crawlerów czyli botów indeksujących lub zbierających informacje na temat strony (np. semalt.com, buttons-for-website.com).
Drugi natomiast wykorzystujący lukę w systemie Google Analytics. Mający za cel nabić fałszywe wejścia na naszej stronie, bez odwiedzin naszej witryny. Robiąc research natrafiłem na idealne określenie dla tego typu ruchu, a mianowicie „ghost referrer spam”. O ile ten pierwszy typ spamu jesteśmy w stanie zablokować używając .htaccess. Ten drugi jest większym utrapieniem dla właścicieli stron internetowych.
Ten typ odnośników pojawia się w naszych statystykach bez fizycznego wejścia na witrynę. W tym przypadku na chwilę obecną możemy ustawić jedynie filtry w Google Analytics. Taki ruch należy wykluczać, gdyż bezużyteczny ruch powoduje zepsucie współczynnika konwersji, odrzuceń, czas spędzony na witrynie oraz zaburza wiele innych cennych danych.
Pochodzenie Ghost Refferer Spam
Zachodziłem w głowie kto i po co robi taką szkodę zwykłym użytkownikom Google Analytics, dlatego postanowiłem dojść do źródła problemu. Moja ciekawość doprowadziła mnie wprost na tereny Rosji (ach Ci Rosjanie, genialni w swojej prostocie). Podczas poszukiwań natrafiłem na artykuł opisujący działalność Witalija Popowa. Ów Pan znalazł bowiem banalnie prosty sposób na zarobek.
Na czym polega fenonem Rosjanina?
Witalij wykorzystuje podstawowe mechanizmy socjotechniki, a mianowicie ludzką ciekawość. Tą samą ciekawość, która nabija kliknięcia w kontrowersyjne tytuły artykułów lub zakup gazety np. „Fakt” pod wpływem przeczytania krzykliwego nagłówka z pierwszej strony (tak, tak … zaraz powiecie, że nikt tego nie kupuje – szkoda tyko, że ta gazeta okupuje pozycję lidera w sprzedaży kioskowej).
Wracając do meritum Popow wykorzystuje lukę w Analyticsie, aby naszym oczom pojawiły się różne odesłania. Rosjanin bazuje na ludzkiej ciekawości. Licząc na to, że osoba widząca dany link będzie chciała zobaczyć – kto podlinkował jego domenę. Sam gdy zauważam taki ruch, podążam do źródła, by przynajmniej podziękować innemu twórcy za wzmiankę o mnie lub mojej stronie.
Dlaczego Rosjaninowi zależy na naszym przejściu?
Już Wam wyjaśniam. Gdy skopujemy adres pojawiający się w naszych statystykach i wkleimy go do przeglądarki. Naszym oczom nie ukaże się dana strona z adresem widniejącym w Analyticsie. Zostaniemy bowiem przekierowani na link afiliacyjny jednego z programów partnerski (np. Amazonu lub AliExpress).
Gdy odwiedzimy specjalnie wygenerowany link partnera. W naszej przeglądarce zapisują się ciasteczka cookies. Jeśli powrócimy na tą stronę w określonym terminie i dokonamy zakupu np. w Amazonie, to nasz drogi sąsiad dostanie prowizję od dokonanej transakcji. Mógłbym rzec, że na naszych oczach rodzi się nowy odłam black hatowej analityki internetowej.
Jak rozpoznać spam?
Jedną z metod wychwycenia spamu jest analiza logów naszego serwera. Ja jednak skupię się na tej drugiej opierającej się na samych statystykach narzędzia Google Analytics. Dla osób codziennie przeglądających statystyki nie będzie większego problemu z wychwyceniem podejrzanego ruchu.
Problem z zarejestrowaniem spamu mogą mieć osoby z dużym ruchem lub rzadko odwiedzające dane statystyczne. Spam w takiej sytuacji, może być zepchnięty na dalsze strony, gdzie bardziej wygodniccy mogą nie zaglądać.
Pierwszą oznaką spamu mogą być podejrzanie wyglądające linki (poniższy screen pole 1.).
Sami przyznajcie, że adresy składające się z kilku subdomen oraz wielu cyfr, nie są normalne.
Kolejnym krokiem może być przejrzenie współczynnika odrzuceń, ilości sesji oraz średniej czasu trwania sesji. Na poniższym screenie (pole 2.) możemy zauważyć pewien schemat 100% odrzuceń w połączeniu z jedną sesją oraz zerową średnią pobytu na stronie.
Innym szybkim krokiem będzie ustawienie dodatkowego wymiaru na Kraj (pole 3.) i sprawdzenie z jakich państw pochodzi ruch. Jeśli nadal będziemy mieli wątpliwości co do jakości naszego ruchu, to możemy ustawiać inne wymiary, by dostać bardziej szczegółowe informacje.
Osobiście skorzystałbym dodatkowo z wymiaru „nazwa hosta” (pole 5.). Jeżeli wiersz nie będzie wskazywał na nazwę naszej domeny (pole 6.), mamy kolejną przesłankę, by traktować taki ruch jako spam.
Gdybym sprawdzał wartościowy ruch dla własnej domeny, powinien tam widnieć adres projektlukas.pl (ewentualnie host usług Google lub web.archive) zamiast (not set) oraz innych hostów.
UWAGA! Screeny wkleiłem tutaj z Analyticsa domeny , która już nie istnieje, a ja zwyczajnie zapomniałem usunąć domenę ze statystyk. Zwróćcie uwagę jak pozornie „unikalne” statystyki potrafiła wygenerować metoda Rosjanina.
Wyżej opisane schematy obejmują jedynie część śmieciowego spamu, jak widać nasz sąsiad udoskonala swoją metodę. Potrafi coraz lepiej manipulować wynikami, aby były bardziej wiarygodne (pole 4.) Pamiętajcie, że nabity ruch w GA nie zostanie usunięty z historii. Możemy usunąć co najwyżej spam z dnia bieżącego.
Jak zatrzymać spam crawlerów (semalt, buttons-for-website)?
Najlepszym sposobem na pozbycie się robotów, różnych narzędzi obciążających naszą witrynę jest blokowanie tego ruchu z poziomu serwera. Jeśli korzystacie z serwera Apache, to jesteście w tej komfortowej sytuacji , aby zablokować ruch w pliku .htacces Poniżej prezentuje 3 metody wykluczenia ruchu przy użyciu pliku .htacces, który należy wrzucić do głównego katalogu na naszym serwerze:
PRZYKŁAD 1:
RewriteEngine on
RewriteCond %{HTTP_REFERER} nazwa-strona1\.pl[OR,NC] RewriteCond %{HTTP_REFERER} nazwa-strony2\.pl [OR,NC] RewriteCond %{HTTP_REFERER} nazwa-strony3\.pl [OR,NC] RewriteCond %{HTTP_REFERER} nazwa-strony4\.pl
RewriteRule . – [F]PRZYKŁAD 2:
order allow,deny
deny from domena.com
deny from subdomena.domena.com
allow from allPRZYKŁAD 3:
Jeżeli posiadamy IP naszych spamerów, to będziemy mogli wykluczyć ruch z całego IP, a nawet klas. Ja osobiście używam konkurencji GA do szybkiego wychwytywania IP użytkowników, a dokładnie Clicky. IP możemy dodatkowo namierzyć przez sprawdzenie logów na naszym serwerze.
order allow,deny
deny from 000.000.0.00
deny from 000.00.000.0
allow from all
Jak usunąć Ghost Refferer Spam w Google Analytic używając filtrów!
W związku z tym, że do zablokowania spamu w GA podchodziłem kilka razy, przedstawię Wam każdą z moich prób. Być może, któraś z metod przyda się Wam w przyszłości.
Aaa… zapomniałbym, że każdy z Was powinien już na samym początku instalacji skryptu GA, zaznaczyć w panelu wykluczenie popularnych botów. Lista tych botów nie jest imponująca, ale zawsze to jakieś dodatkowe zabezpieczenie. Google w tym przypadku korzysta z listy przygotowanej przez IAB.
Jak ustawić filtr odesłań w Google Analytics:
Moje pierwsze podejście do blokowania spamowego ruchu działałoby nadal, gdyby nie powstawały nowe strony zaśmiecające statystyki. Aby nie bawić się w pojedyncze wykluczanie adresów, zastosowałem wyrażenie pozwalające wykluczyć wiele domen/subdomen za jednym zamachem (przy kopiowaniu usuń spacje/entery):
.\.[bestwebsitesawards|cenoval|blackhatworth|hulfingtonpost|semalt|priceg|
darodar|econom|iloveitaly|7makemoneyonline|saveyoutubevideo|cclicking|
buttons\-for\-website|tasteidea|kambasoft]\.[com|co|ru]Przechodząc do sedna sprawy poniżej prezentuje screena, który przedstawi Wam krok po kroku co zrobić, aby ustawić filtr odesłań w Google Analytics.
Administracja -> Filtry -> Wybieramy dowolną nazwę filtru ->Wybieramy typ niestandardowy -> Zaznaczamy opcję WYKLUCZ ->Wybieramy Odesłania -> Wpisujemy Wzorzec filtru -> Sprawdzamy poprawność, weryfikując wpisany filtr -> Zapisujemy
Po dokonaniu weryfikacji możecie ujrzeć albo komunikat: „Ten filtr nie zmieniłby danych: konfiguracja filtra jest nieprawidłowa lub zestaw próbnych danych jest zbyt mały.”, albo tabelę z ruchem, który zostałby wykluczony, gdyby filtr działał od 7 dni.
Efekty działania filtra stają się widoczne w danych do 24 godzin. Dane historyczne nie zostaną usunięte, jedynie zapobiegniecie zaburzeniom z dnia bieżącego oraz przyszłego.
Jak usunąć spam z Rosji lub innego kraju w Google Analytics :
Niestety wykluczenie wyżej wymienionych domen nie było idealnym rozwiązaniem. Po wdrożeniu tego filtru, musiałem obserwować ruch z odesłań w poszukiwaniu nowych spam domen. Gdy wykrywałem coś nowego – dodawałem ją do wyżej użytego wyrażenia.
Szukając lepszego rozwiązania, znalazłem pewną wspólną dla nowych domen. Krajem pochodzenia wszystkich odesłań była Rosja. Postanowiłem wykluczyć cały ruch z Rosji. W związku z tym, że Rosjanie nie są moją grupą docelową, pozwoliłem sobie na wykluczenie takiego użytkownika. Filtr ustawiamy podobnie jak wyżej. Z tym wyjątkiem, że tym razem zamiast odesłań wybieramy kraj i wpisujemy angielską odmianę kraju naszych sąsiadów – Russia.
Finałowa runda ze spamerami Google Analytics!
Po wykluczeniu ruchu z Rosji pozbyłem się śmieciowego ruchu. Myślałem, że wygrałem internety ustawiając ten filtr, bowiem przez długi czas moim oczom nie ukazywał się żaden spam.
Wszystko jednak trwało do czasu :(
Rywal nauczył się korzystać z proxy. Łącząc się z Analyticsem z różnych części świata. Załamałem się widząc ruch z Dominikany, Hong Kongu i innych egzotycznych państw. Dodatkowo na nieszczęście zauważyłem ten spam dopiero po 2 dniach. Po dostrzeżeniu tego problemu zacząłem szukać innego wspólnego schematu.
Poszukując w wymiarach dodatkowych nowych danych, dokopałem się do „Nazwy hosta”, który wskazywał dla tego ruchu albo (not set), albo obcą domenę. Gdzie prawidłowo powinna pojawiać się nazwa mojej domeny projeklukas.pl (wyjątkiem są ruchy z usług Google oraz webarchive).
Idąc tym tropem postanowiłem tym razem skorzystać z opcji „UWZGLĘDNIJ” tylko i wyłącznie ruch posiadający nazwę hosta mojej domeny. Filtr ustawiamy tak jak w pierwszym przypadku, z wyjątkiem różnicy opcji wykluczenia oraz wpisując nazwę swojej własnej domeny (odpowiednio bez lub z prefixem www). Przed kropkami ustaw odwrócony ukośnik tzw.”backslash” (\). Będziesz miał pewność, że Analytics rozróżni prawidłowo kropkę. Choć w przypadku wpisywania pojedynczego adresu, pominięcie backslasha również przyniesie oczekiwane rezultaty. Pamiętaj o weryfikacji i o dobrej praktyce stosowania nowych filtrów na „testowym widoku”.
Lista wybranych spam domen:
Wybrane crawlery do wykluczenia w .htaccess:
semalt.com
semalt.semalt.com
best-seo-solution.com
best-seo-offer.com
top1-seo-service.com
buttons-for-website.com
buttons-for-your-website.comWybrane ghost spam:
simple-share-buttons.com
site11.simple-share-buttons.com
site13.simple-share-buttons.com
site16.simple-share-buttons.com
free-social-buttons.com
guardlink.org
share-buttons.xyz
traffic2cash.xyz
с.новым.годом.рф
topseoservices.co
googlemare.com
cenoval.ru
blackhatworth.com
hulfingtonpost.com
priceg.com
forum.topic50413042.darodar.com
bestwebsitesawards.com
buy-cheap-online.info
ilovevitaly.co
howtostopreferralspam.eu
sanjosestartups.com
event-tracking.com
get-free-traffic-now.comZabraną listę spamowych domen (500 sztuk) udostępniam poniżej w zamian za share/tweeta lub inne udostępnienie w jednym z kanałów social media (kliknij pay with a tweet). Miło będzie jeśli dodatkowo wciśniecie „lubię to” przy moim profilu na FB, aby być na bieżąco z publikowanymi materiałami. Będzie to dla mnie motywująca forma wynagrodzenia do dalszego działania.
Aktualizacja listy styczeń 2016 – Pobierz ponad 500 domen:
Podsumowanie:
Na chwilę obecną nie widzę spamu od momentu ustawienia trzeciego rozwiązania (5 kwiecień 2015)
Ze względu na to, że spamerzy stale modyfikują swoje metody – będę miał na oku dane Analyticsa. Jeśli znasz lepszą metodę walki ze spamem, podziel się nią z czytelnikami w komentarzu. Jeśli wykryjesz nowy sposób spamera, proszę daj mi znać w komentarzu. Postaram się go dodać do artykułu. Jeśli pomogłem Ci w walce ze spamem, będę wdzięczny za udostępnienie tego artykułu.
U mnie po uwzględnieniu Nazwy hosta wycięło wszystkie statystyki. Jesteś pewien, że to dobra metoda?
Tak, wdrożyłem to na kilku GA i działa bez zarzutu. Screeny pochodzą z GA tej domeny (gdyby nie działało, to bym nic nie widział). Czy aby na pewno zaznaczyłeś opcję „uwzględnij”, a nie „wyklucz”? Wpisałeś tam odpowiednią wersję strony z www/bez www? Musiałbym zobaczyć co tam u Ciebie jest, aby stwierdzić w czym może tkwić problem.
Już jest ok, dziś rano wyświetla staty normalnie, bez spamu, widocznie GA musiał odświeżyć filtry. Dzięki, przydatny artykuł.
Fajny artykuł, bardzo przydatny. Ustawiłem sobie nowy filtr. Od jakiegoś czasu przestały mi działać poprzednie wykluczenia. Mam nadzieję że tym razem się uda. Dobrze że pokazałeś kilka sposobów.
Tak na marginesie to należą się słowa uznania dla tego kto wymyślił tą metodę pozyskiwania odwiedzin na swoich stronach. Wkurzająca ale pewnie skuteczna.
A co z tą informacją: Ten filtr nie zmieniłby danych: konfiguracja filtra jest nieprawidłowa lub zestaw próbnych danych jest zbyt mały. ??
To, że wyskoczy komunikat nie oznacza, że on nie działa. Tak jak jest tam napisane, może być zbyt mało danych. Jeśli pojawi Ci się tabela z ruchem do wyeliminowania, to oznacza, że jakiś filtr działa. Zwróć tylko uwagę na to, czy aby na pewno jest to ten ruch, którego chcesz się pozbyć. Jeśli nie chcesz ryzykować utraty danych z danego dnia, to najlepiej byłoby sprawdzić na dodatkowo utworzonym widoku w Analyticsie.
Czy na każdą domenę trzeba zrobić nowy filtr?
Jeśli nie, to jak w jednym filtrze, np. pod nazwą Blokada spamowych domen, dodać wszystkie domeny do wykluczenia?
Dla każdej domeny tworzymy oddzielne konto/oddzielny kod UA, więc i filtry musimy ustawić na nowo przypisując do odpowiedniego widoku danego konta.
Jeżeli interesuje mnie tylko ruch z PL, to czy skuteczne będzie wstawienie filtra, uwzględnij ruch tylko PL?
Jeżeli nie zależy Ci na naszych rodakach mieszkających na zachodzie, to jak najbardziej. Jednak stworzyłbym na ten filtr osobny widok, a w widoku „ogólnym” pozostawił wszystkie państwa;)
Zdecydowanie interesuje mnie klient krajowy :) dziękuje za szybką odpowiedź.
Dobry merytoryczny artykuł, akurat mam z tym problem. Przyszedł czas Łukasz kiedy ja uczę się od Ciebie :) dobra robota
Dzięki za komentarz :) Jestem pewien, że nadal wiele mógłbym się od Ciebie nauczyć :)
Próbowałam wielokrotnie, na różne sposoby, zawsze przy weryfikacji uzyskuję ten sam wynik: „Ten filtr nie zmieniłby danych: konfiguracja filtra jest nieprawidłowa lub zestaw próbnych danych jest zbyt mały.” Spam pozostaje rejestrowany w statystykach. Co może być nie tak?
A jaki spam pozostaje u Ciebie w statystykach? Wykluczyłaś z poziomu serwera i z poziomu GA? Powyższy komunikat nie oznacza, że coś jest źle. Najzwyczajniej może być zbyt mało danych. Jeśli dalej będziesz miała problemy, to napisz do mnie maila przez formularz.
Dziękuję bardzo za odpowiedź, przesłałam więcej szczegółów formularzem. Pozdrawiam serdecznie!
W przypadku Wilgi spamem były crawlery, które trzeba zablokować tworząc plik o nazwie .htacces (opisane również w powyższym wpisie) ;)
backslasha używamy przed znakami specjalnymi ;) Czyli ten po myślniku należy usunąć ;)
Dzięki Łukaszu za ten artykuł! Konkretny, jasny i pomocny :) Na pierwszy odstrzał poszły dwa pierwsze sposoby (serwer+filtry google). Czekam teraz na efekty, może przeczyści trochę statystyki. Pozdrawiam po sąsiedzku (GOP)!
Dzięki wielkie za pozytywną ocenę :) Również pozdrawiam :)
Semaltu i nowego spamu i tak nie pozbędziesz się przy pomocy tego filtru. Chyba, że chcesz się ciągle bawić w dodawanie nowych domen. Gdy wykorzystywałem swój wzór, to zawsze działał (usuń spacje/entery jeśli kopiowałeś ode mnie) Weryfikacji też nie ma co brać jako wyrocznie, trzeba to sprawdzić najlepiej na testowym filtrze. Wprowadź od razu filtr z nazwą hosta i wyklucz crawlery w htacces. To Ci oszczędzi czas.
Chciałam skorzystać z opcji ,,uwzględnij”, ale mam pewien problem. ,,Uwzględnij” mogę dodać tylko, gdy wybiorę filtr ,,predefiniowany”. Po wybraniu tego typu filtra wyświetlają mi się kolejne funkcje, które nie zostały opisane w poście, tj. ,,wybierz źródło lub miejsce docelowe” i ,,wybierz wyrażenie”. Nie wiem, co powinnam tam ustawić i byłabym bardzo wdzięczna za pomoc.
Robimy tak jak na ostatnim screenie (wszystkie kroki zaznaczone w kolorowych ramkach), zamiast „predefioniowany” zaznaczamy „niestandardowy” i stamtąd zaznaczamy „uwzględnij” i „nazwa hosta”.
Podeślij screena z całego widocznego panelu GA. Czy masz może jakieś ograniczone uprawnienia na tym Analyticsie?
Podesłałam już w poprzednim komentarzu, ale link się nie wyświetla. Wysyłam jeszcze raz ze spacjami. SCREEN nr 1: zapisz. net /images /979_ screen. png SCREEN nr 2: zapisz .net/ images /627 _screen 2. png
Na pierwszym screenie wyraźnie widzę opcję „uwzględnij”
Rzeczywiście… aż mi głupio. Za każdym razem kierowałam się tym, że nie ma ,,uwzględnij” pod ,,wyklucz” – za bardzo zasugerowałam się screenem. Na funkcje na dole w ogóle nie zwracałam uwagi, bo wyszłam z założenia, że służą do czegoś innego… Cóż, dziękuję za pomoc i cierpliwość. ;)
Tak właśnie podejrzewałem, że przeoczyłaś dolne funkcje ;) Zdarza sie ;)
Bardzo przydatny wpis. Zastosowałam właśnie u siebie dwie pierwsze metody i mam nadzieję że efekty będą jak najszybciej widoczne :)
Pomocne i prosto napisane ! Od kilku dni zastanawiałam się co to za wejścia z dziwnych miejsc, a to znowu Ruscy ;). Wyjaśniłeś wszystko. Dziękuję :).
Cześć, dzięki za artykuł.
Wiesz może czy jeśli posiadam kilka subdomen, które przekierowują ruch na moją domeę główną (i mam śledzenie między domenami), to czy filtr z uwzględnieniem nazwy hosta nie wykluczy przejść z subdomen?
Pomysł na filtr nr3 zarąbisty. Brawo! A co do filtru odesłań to czy mógłbyś mi wyjaśnić o co chodzi w pierwszych jego trzech znakach .. (rozumiem że jest sobie pierwsza kropka ale nie wiem po co, oraz backspace oraz druga kropka jako komplet, którego znaczenie znam ale nie wiem w jakim celu został zastosowany)