Cloaking - co to jest maskowanie treści i dlaczego Google je karze?
Cloaking to pokazywanie robotom innej treści niż użytkownikom w celu manipulacji rankingiem. Sprawdź definicję Google, przykłady, co nim nie jest i jak go wykryć.
Jako konsultant SEO, Paweł Wołoszyn, przy audytach najczęściej trafiam na cloaking nie jako świadomą strategię klienta, tylko jako skutek włamania na starym, nieaktualizowanym CMS-ie, dlatego pierwsze co robię po zgłoszeniu spadku ruchu to właśnie porównanie renderu Googlebota z tym, co widzi zwykły odwiedzający. Najczęstszy błąd, jaki widzę, to mylenie cloakingu z legalną personalizacją albo z problemami technicznymi w renderowaniu JavaScriptu, co prowadzi albo do niepotrzebnej paniki, albo odwrotnie, do bagatelizowania realnego zagrożenia. Cloaking to też nie to samo co dynamic rendering czy paywall oznaczony poprawnymi danymi strukturalnymi, bo tam Google i użytkownik i tak widzą tę samą treść, tylko podaną inną metodą. W praktyce u klientów pilnuję, żeby żadna zmiana we wdrożeniach A/B, personalizacji czy geolokalizacji nie tworzyła przypadkowej rozbieżności, którą ktoś mógłby odczytać jako manipulację. Pomagam też skonfigurować regularne sprawdzanie strony przez Inspekcję URL w Search Console, żeby wyłapać taką rozbieżność, zanim zrobi to Google.
Cloaking - co to jest maskowanie treści i dlaczego Google je karze?
Cloaking to pokazywanie innej treści robotom wyszukiwarek niż użytkownikom w celu manipulacji rankingiem. Google wprost zalicza to do naruszeń zasad dotyczących spamu i karze ręcznie, aż po usunięcie z indeksu.
Co to jest cloaking według definicji Google?
Google w swoich oficjalnych zasadach dotyczących spamu definiuje cloaking jako prezentowanie różnej treści użytkownikom i wyszukiwarkom z zamiarem manipulacji rankingiem i wprowadzenia w błąd użytkowników. W oryginale brzmi to: „presenting different content to users and search engines with the intent to manipulate search rankings and mislead users”. Kluczowe są tu dwa warunki naraz, nie jeden: musi wystąpić realna różnica w treści między tym, co widzi robot indeksujący, a tym, co widzi człowiek, i musi jej towarzyszyć intencja manipulacji. Sama różnica bez zamiaru manipulacji, na przykład wynikająca z błędu technicznego, to nie to samo co cloaking w rozumieniu polityki spamowej, choć w praktyce Google i tak każe naprawić rozbieżność.
Jako przykłady cloakingu Google podaje wprost dwie sytuacje: pokazywanie robotom strony o kierunkach turystycznych, podczas gdy użytkownicy widzą stronę z lekami na receptę po obniżonej cenie, oraz wstawianie tekstu lub słów kluczowych na stronę wyłącznie wtedy, gdy żądanie pochodzi od user agenta wyszukiwarki, a nie od realnego odwiedzającego. Oba przykłady łączy jedno: strona świadomie rozpoznaje, kto pyta, i w zależności od odpowiedzi pokazuje co innego.
Jak działa cloaking w praktyce: rozpoznawanie robota po user agencie i IP
Mechanizm techniczny jest prosty. Serwer przy każdym żądaniu strony sprawdza nagłówek User-Agent albo adres IP odwiedzającego i na tej podstawie decyduje, którą wersję HTML zwrócić. Jeśli żądanie pasuje do znanej listy robotów wyszukiwarek, na przykład Googlebota, serwer zwraca wersję zoptymalizowaną pod ranking, często nabitą słowami kluczowymi albo linkami. Każdy inny odwiedzający dostaje zupełnie inną treść, czasem nawet z innej branży.
Zgodnie z opisem tej techniki na Wikipedii, cloaking bywał kiedyś tłumaczony potrzebą pokazania robotom treści zamkniętej w niedostępnych dla nich formatach, na przykład we Flashu czy obrazkach. Od 2006 roku, gdy upowszechniły się lepsze metody dostępności takie jak https://www.w3.org/wiki/Graceful_degradation_versus_progressive_enhancement">progressive enhancement, ten argument stracił rację bytu i cloaking praktycznie zawsze funkcjonuje już jako technika czarnego SEO, czyli świadomego łamania zasad w celu szybszego wbicia się na wysokie pozycje.
Co NIE jest cloakingiem: paywall, personalizacja, geolokalizacja i testy A/B
Google osobno wylicza sytuacje, w których treść różni się między wizytami, a mimo to nie jest to cloaking, pod warunkiem że spełnione są konkretne warunki.
Paywall i treści z ograniczonym dostępem
Google pisze wprost, że prowadzenie paywalla albo mechanizmu ograniczającego dostęp do treści nie jest uznawane za cloaking, jeśli Google widzi pełną treść ukrytą za paywallem tak samo jak każda osoba mająca dostęp do materiału premium, i pod warunkiem stosowania się do wytycznych Flexible Sampling. Technicznie oznacza to oznaczenie płatnego fragmentu danymi strukturalnymi: właściwość isAccessibleForFree ustawiona na false plus hasPart z typem WebPageElement i selektorem CSS wskazującym zamknięty fragment. Wytyczne Flexible Sampling zalecają metering, czyli udostępnianie użytkownikowi określonej puli darmowych artykułów miesięcznie, zamiast blokować dostęp od pierwszego wejścia: dla większości wydawców Google podaje przedział 6-10 artykułów na użytkownika miesięcznie, a jako punkt startowy rekomenduje 10 artykułów i dalsze iterowanie na podstawie danych. Zaleca też lead-in, czyli pokazywanie pierwszych zdań artykułu nad paywallem.
Personalizacja treści
Z samej definicji cloakingu wynika, że personalizacja, na przykład inna treść dla zalogowanego użytkownika niż dla gościa, nie spełnia testu manipulacji rankingiem. Googlebot odwiedza stronę jako anonimowy, niezalogowany użytkownik, więc dopóki wersja dostępna publicznie i bez logowania zawiera realną, pełną treść przeznaczoną do indeksowania, a różnice dotyczą wyłącznie elementów typu rekomendacje czy panel konta, nie ma tu manipulacji rankingiem ani wprowadzania w błąd.
Geolokalizacja i IP delivery
Serwowanie innej wersji językowej albo regionalnej na podstawie lokalizacji, tak zwane IP delivery, różni się od cloakingu tym, że zarówno wyszukiwarki, jak i ludzie widzą te same, tylko zlokalizowane strony, więc nie ma tu ukrywania treści. Google jednocześnie ostrzega, żeby nie polegać na samej analizie IP jako jedynej metodzie, bo jest ona zawodna, a większość robotów Google działa z adresów w USA, więc automatyczne różnicowanie po lokalizacji może po prostu nie zadziałać wobec samego robota. Bezpieczniejsze jest stosowanie osobnych adresów URL dla wersji językowych czy regionalnych, znaczników hreflang oraz linku umożliwiającego użytkownikowi ręczną zmianę wersji, przy jednoczesnym unikaniu automatycznego przekierowania bez takiego wyboru.
Testy A/B
Google osobno zaznacza zasadę ogólną: pokazywanie jednego zestawu adresów URL Googlebotowi, a innego ludziom, to cloaking i narusza zasady dotyczące spamu. Test A/B nie jest jednak z automatu cloakingiem, jeśli spełnia trzy warunki: wariant testowy ma znacznik rel="canonical" wskazujący na oryginalny adres, ewentualne przekierowanie do wariantu jest przekierowaniem 302, czyli tymczasowym, a nie 301, oraz test trwa ograniczony czas i po jego zakończeniu strona wraca do jednej, docelowej wersji zamiast trzymać rozjazd w nieskończoność.
| Praktyka | Czy Google i użytkownik widzą tę samą treść | Warunek legalności |
|---|---|---|
| Cloaking | Nie, celowo różna treść | Zawsze narusza zasady, niezależnie od warunków |
| Paywall | Tak, po stronie Google pełna treść | Znaczniki isAccessibleForFree + hasPart, zgodność z Flexible Sampling |
| Personalizacja | Tak, wersja publiczna zawiera pełną treść | Wersja dla niezalogowanych i robota musi być kompletna |
| Geolokalizacja (IP delivery) | Tak, ta sama treść w innej lokalizacji/języku | Osobne URL-e, hreflang, możliwość ręcznej zmiany wersji |
| Test A/B | Tak, warianty widoczne dla obu stron | rel="canonical", przekierowanie 302, ograniczony czas testu |
Jak wykryć cloaking: Inspekcja URL w Search Console
Najprostszym narzędziem do sprawdzenia, czy Google widzi tę samą stronę co użytkownik, jest Inspekcja URL w Search Console. Po wpisaniu adresu narzędzie pokazuje dwa różne widoki. Opcja „Wyświetl zindeksowaną stronę” pokazuje surowy kod HTML, nagłówki HTTP, komunikaty konsoli JavaScript i listę wczytanych zasobów z ostatniego zaindeksowania strony przez Google, ale to nie jest test na żywo, więc strona mogła się od tego czasu zmienić. Żeby sprawdzić aktualny stan, trzeba kliknąć „Testuj na żywo”: dopiero taki test daje zrzut ekranu tego, jak wygląda strona po wyrenderowaniu przez Googlebota, oraz aktualny kod HTML po wykonaniu JavaScriptu.
Porównanie warto zrobić ręcznie na dwóch poziomach: „Wyświetl źródło strony” w przeglądarce pokazuje surowy HTML z serwera, tak jak zobaczyłby go prosty robot bez renderowania, a narzędzia deweloperskie z zakładką Elements pokazują już finalny DOM po wykonaniu JavaScriptu, czyli to, co realnie widzi użytkownik. Jeśli te dwa widoki różnią się od tego, co pokazuje zrzut ekranu z Inspekcji URL w trybie na żywo, to sygnał, że coś w renderowaniu poszło nie tak, niekoniecznie od razu cloaking, ale warto to zbadać.
Konsekwencje cloakingu: kara ręczna i usunięcie z indeksu
Za cloaking Google nakłada karę ręczną widoczną w raporcie Manual Actions w Search Console, opisaną jako sytuacja, w której witryna może pokazywać różne strony użytkownikom niż te widoczne dla Google, albo przekierowywać użytkowników na inną stronę niż tę, którą widział Google. Skutkiem jest obniżenie widoczności dotkniętych stron w wynikach wyszukiwania, aż po ich całkowite usunięcie z indeksu. Żeby zdjąć karę, trzeba usunąć wszystkie elementy powodujące rozbieżność, upewnić się, że użytkownik i robot widzą identyczną treść, a następnie złożyć prośbę o ponowne rozpatrzenie w tym samym raporcie. Niezależnie od kar ręcznych, Google wykrywa część przypadków cloakingu automatycznie systemami takimi jak SpamBrain, więc brak kary ręcznej w danym momencie nie znaczy, że strona jest bezpieczna.
Cloaking a hacked content i JavaScript: gdzie leży granica
Cloaking bywa też skutkiem włamania, a nie świadomej decyzji właściciela strony. Google w opisie polityki dotyczącej zhakowanej treści wymienia „content injection” jako jeden z typów ataku, gdzie haker dodaje ukryte linki lub tekst za pomocą CSS albo HTML, a w bardziej złożonych przypadkach wprost stosuje cloaking, żeby utrudnić właścicielowi wykrycie włamania. Oficjalny przewodnik Google po naprawie zhakowanych witryn wymienia nawet osobny scenariusz „cloaked keywords and links hack”, w którym zainfekowany kod pokazuje spamowe słowa kluczowe i linki wyłącznie robotom wyszukiwarek, a zwykli odwiedzający widzą normalną wersję strony i niczego nie zauważają. Dla właściciela oznacza to, że kara za cloaking może spaść na stronę, mimo że nikt świadomie nie wdrożył takiego mechanizmu, dlatego regularne sprawdzanie kodu i aktualizacje CMS-a są częścią ochrony przed tą karą.
Z JavaScriptem sprawa jest inna, bo tu różnica między tym, co „widzi” robot, a tym, co widzi użytkownik, może być czysto techniczna, a nie zamierzona. Googlebot przetwarza strony w trzech fazach: crawlowania, renderowania i indeksowania, a w fazie renderowania headless Chromium wykonuje JavaScript tak jak zrobiłaby to zwykła przeglądarka, po czym Google indeksuje efekt tego renderowania, a nie surowy kod źródłowy. Strona oparta na JavaScripcie, która serwuje tę samą treść robotowi i użytkownikowi, tylko generuje ją dynamicznie po stronie klienta, nie jest cloakingiem. Podobnie tak zwane dynamic rendering, czyli generowanie po stronie serwera gotowego, wyrenderowanego HTML specjalnie dla robotów niepotrafiących dobrze obsłużyć JavaScriptu, Google traktuje jako legalny sposób obejścia problemów z dostępnością technologii, a nie jako manipulację, pod warunkiem że treść merytoryczna zostaje identyczna dla obu odbiorców. Granicą pozostaje więc nie sama technologia, tylko intencja i zgodność treści, dokładnie tak jak w podstawowej definicji z zasad SEO dotyczących spamu.
Źródła
- Google Search Essentials: Spam policies, sekcja Cloaking – https://developers.google.com/search/docs/essentials/spam-policies#cloaking
- Google Search Essentials: Spam policies, sekcja Hacked content – https://developers.google.com/search/docs/essentials/spam-policies#hacked-content
- Marking up paywalled content – Google Search Central – https://developers.google.com/search/docs/appearance/structured-data/paywalled-content
- Flexible Sampling guidance – Google Search Central – https://developers.google.com/search/docs/appearance/flexible-sampling
- Website testing and Googlebot – Google Search Central – https://developers.google.com/search/docs/crawling-indexing/website-testing
- JavaScript SEO basics – Google Search Central – https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics
- Managing multi-regional and multilingual sites – Google Search Central – https://developers.google.com/search/docs/specialty/international/managing-multi-regional-sites
- isAccessibleForFree property – Schema.org – https://schema.org/isAccessibleForFree
- Inspect a URL – Search Console Help – https://support.google.com/webmasters/answer/9012289
- Manual actions report – Search Console Help – https://support.google.com/webmasters/answer/9044175
- My site's been hacked – web.dev – https://web.dev/articles/hacked
- Cloaking – Wikipedia – https://en.wikipedia.org/wiki/Cloaking
- Graceful degradation versus progressive enhancement – W3C – https://www.w3.org/wiki/Graceful_degradation_versus_progressive_enhancement
Najczęściej zadawane pytania (FAQ)
Czy cloaking zawsze jest karany przez Google?
Tak, cloaking zawsze narusza zasady dotyczące spamu, niezależnie od intencji czy skali. Google traktuje go jako naruszenie zasad, gdy tylko treść pokazywana robotowi realnie różni się od treści pokazywanej użytkownikowi w celu manipulacji rankingiem, a karę można nałożyć zarówno ręcznie, jak i automatycznie przez systemy takie jak SpamBrain.
Czy renderowanie treści przez JavaScript to cloaking?
Nie, jeśli finalna treść wyrenderowana dla Googlebota jest taka sama jak ta, którą widzi użytkownik. Googlebot wykonuje JavaScript w osobnej fazie renderowania i indeksuje efekt tego procesu, więc dynamiczne generowanie treści po stronie klienta samo w sobie nie jest cloakingiem, dopóki obie strony dostają tę samą treść merytoryczną.
Czy paywall na stronie to cloaking?
Nie, o ile Google widzi pełną treść zamkniętą za paywallem tak samo jak płacący użytkownik. Warunkiem jest oznaczenie fragmentu danymi strukturalnymi z właściwością isAccessibleForFree i zastosowanie się do wytycznych Flexible Sampling, na przykład limitu darmowych artykułów miesięcznie.
Jak sprawdzić, czy moja strona pokazuje Googlebotowi inną treść niż użytkownikom?
Najszybciej przez Inspekcję URL w Search Console: opcja „Testuj na żywo” pokazuje aktualny zrzut ekranu i kod HTML po wyrenderowaniu strony przez Googlebota. Warto porównać to z widokiem źródła strony w przeglądarce i z tym, co widzi zwykły odwiedzający, szczególnie po podejrzeniu włamania na stronę.
Czy inna treść dla zalogowanych użytkowników to cloaking?
Nie, personalizacja dla zalogowanych użytkowników nie jest cloakingiem, bo Googlebot odwiedza stronę jako niezalogowany gość i to właśnie ta publiczna wersja musi zawierać pełną, przeznaczoną do indeksowania treść. Problem pojawia się dopiero, gdy wersja publiczna celowo różni się od tego, co widzi typowy niezalogowany użytkownik, w celu manipulacji rankingiem.
Jaka jest kara za cloaking i jak ją zdjąć?
Konsekwencją jest ręczna kara w raporcie Manual Actions w Search Console, która obniża widoczność stron w wynikach albo usuwa je z indeksu. Żeby ją zdjąć, trzeba wyeliminować rozbieżność między treścią dla robota i użytkownika, a następnie złożyć prośbę o ponowne rozpatrzenie w tym samym raporcie.