Kiedy firma wdraża baner cookie na swojej stronie internetowej, sprawdzenie poprawności trwa zazwyczaj dziesięć sekund. Ktoś otwiera stronę główną w oknie incognito, widzi wyskakujące okienko na dole ekranu, klika „Akceptuj” lub „Odrzuć”, widzi, że baner znika, i uznaje zadanie za zamknięte.
Nawet wiele popularnych skanerów zgodności robi niewiele więcej: pobiera stronę jeden raz i wypisuje listę plików cookie znalezionych w pierwszej sekundzie ładowania. Taka jednorazowa kontrola pomija dokładnie te błędy, które prowadzą do skarg do UODO oraz utraty danych w systemach reklamowych.
Aby sprawdzić, co strona internetowa naprawdę robi z danymi odwiedzających, trzeba przetestować kolejno trzy odrębne stany przeglądarki: co dzieje się przez pierwsze osiem sekund, gdy użytkownik jeszcze niczego nie kliknął (Brak akcji), co dzieje się po kliknięciu Odrzuć wszystkie oraz co uruchamia się po kliknięciu Akceptuj wszystkie. Dopiero porównanie tych trzech stanów w izolowanej przeglądarce ujawnia skrypty śledzące uruchamiane przed zgodą, przyciski odrzucenia, które jedynie ukrywają okienko wizualne, oraz błędy konfiguracji blokujące analitykę nawet po wyrażeniu zgody.
Główne wnioski
- Dlaczego pojedynczy skan strony nie wystarcza: Jednokrotne wczytanie adresu URL nie pozwala odróżnić skryptu, który wysyła dane nielegalnie przed zgodą, od skryptu, który prawidłowo czeka na decyzję użytkownika.
- Trzy obowiązkowe stany audytowe: Każdy techniczny audyt prywatności musi rejestrować zapytania sieciowe, pliki cookie,
localStorageorazsessionStoragew trzech scenariuszach:Stan 1: Brak interakcji (przed zgodą),Stan 2: Odrzucenie zgodyorazStan 3: Akceptacja zgody. - Pułapka pozornego przycisku „Odrzuć”: W około 30% błędnie skonfigurowanych wdrożeń Google Tag Managera kliknięcie „Odrzuć” zamyka baner na ekranie, ale w tle nadal uruchamia piksele reklamowe lub zapisuje identyfikatory w
localStorage. - Ochrona konwersji w Stanie 3: Sprawdzenie stanu po kliknięciu „Akceptuj wszystkie” jest równie ważne dla działu marketingu, ponieważ zbyt agresywne blokady często psują zliczanie konwersji u użytkowników, którzy wyrazili zgodę.
Dlaczego jednokrotne wczytanie strony nie potwierdza zgodności cookie
Pojedyncze załadowanie strony rejestruje jedynie statyczny wycinek ruchu sieciowego z pierwszej sekundy, nie widząc opóźnionych timerów, wadliwej obsługi przycisku odrzucenia ani zachowania strony po przejściu na kolejną podstronę.
Podczas weryfikacji mechanizmu zgody o tym, czy strona działa zgodnie z prawem, decyduje moment uruchomienia skryptu oraz reakcja na wybór użytkownika:
- Opóźnione wyzwalacze przed zgodą (
setTimeoutoraz przewijanie ekranu): Część konfiguracji menedżerów tagów opóźnia uruchomienie Meta Pixela, LinkedIn Insight Tag lub Hotjara o trzy sekundy albo do momentu przewinięcia strony o 200 pikseli, zakładając, że użytkownik od razu kliknie „Akceptuj”. Prosty skaner zamykający stronę po sekundzie zgłasza brak naruszeń, podczas gdy prawdziwy czytelnik przeglądający nagłówek przed dotknięciem banera zostaje objęty śledzeniem bez zgody. - Ukrycie banera bez faktycznej blokady skryptów: Kliknięcie „Odrzuć wszystkie” lub „Tylko niezbędne” musi robić więcej niż tylko ustawić
display: nonena oknie banera. Musi utrzymać flagi Google Consent Mode v2 w staniedeniedoraz zablokować uruchamianie tagów marketingowych na kolejnych podstronach. - Zapisywanie identyfikatorów poza tradycyjnymi plikami cookie: Nowoczesne skrypty analityczne i reklamowe często zapisują unikalne identyfikatory użytkownika (UUID) w pamięci
window.localStorage,sessionStoragelub IndexedDB, gdy tradycyjne ciasteczka są zablokowane. Audyt sprawdzający wyłączniedocument.cookiew ogóle nie zauważa tych danych.
Jak wygląda protokół inspekcji trzech stanów w Playwright
Zautomatyzowany audyt w Playwright uruchamia czyste instancje przeglądarki, aby zarejestrować każde wychodzące zapytanie HTTP, zapis ciasteczka oraz klucz w pamięci lokalnej we wszystkich trzech scenariuszach zachowania użytkownika.
Zamiast polegać na ręcznym zaglądaniu do zakładki Network w narzędziach deweloperskich, uruchamiamy deterministyczny skrypt kontrolny sprawdzający po kolei każdy stan:
Stan 1: Brak interakcji (Weryfikacja przed wyrażeniem zgody)
Skrypt otwiera badaną stronę w nowym, czystym profilu przeglądarki Chromium z europejskiego adresu IP, czeka pełne osiem sekund i przewija widok do połowy strony bez dotykania banera cookie.
- Co powinno nastąpić: Wykonywane są wyłącznie niezbędne zapytania własne (HTML, CSS, lokalne czcionki, techniczne ciasteczko sesyjne lub zabezpieczające przed botami).
- Co najczęściej zawodzi: Google Analytics 4 (
/g/collect), Meta Pixel (connect.facebook.net), czcionki Google Fonts (fonts.googleapis.com), osadzone ramki YouTube (youtube.com) lub widżety czatu ładują się natychmiast, zanim użytkownik zdąży przeczytać treść banera.
Stan 2: Stan po odrzuceniu zgody (Odmowa i trwałość przy nawigacji)
W drugim kroku skrypt odnajduje przycisk odmowy na banerze („Odrzuć wszystkie”, „Tylko niezbędne” lub „Odmawiam”), klika go, czeka pięć sekund, a następnie klika wewnętrzny link prowadzący do kolejnej podstrony w obrębie serwisu.
- Co powinno nastąpić: Zapisywane jest wyłącznie techniczne ciasteczko pamiętające odmowę, baner nie wyskakuje ponownie na drugiej podstronie, a w sieci nie pojawia się ani jedno zapytanie analityczne czy reklamowe.
- Co najczęściej zawodzi: Regularnie wykrywamy strony, na których
Stan 1jest czysty, ale kliknięcie „Odrzuć” wyzwala ogólny wyzwalacz kliknięcia w GTM (gtm.click), który omyłkowo uruchamia tagi marketingowe, ponieważ reguła została podpięta pod „każde kliknięcie przycisku w banerze” zamiast sprawdzenia zmiennej zgody. W innych przypadkach przejście na drugą podstronę uruchamia śledzenie, ponieważ stan odmowy nie został poprawnie zapisany.
Stan 3: Stan po akceptacji (Zgodność z polityką i poprawność analityki)
Na koniec skrypt uruchamia zupełnie nową sesję przeglądarki, klika „Akceptuj wszystkie” i zapisuje każdą zewnętrzną domenę, czas życia plików cookie oraz klucze zapisane w pamięci przeglądarki.
- Co powinno nastąpić: Narzędzia analityczne i reklamowe uruchamiają się prawidłowo, Consent Mode v2 zmienia status na
granted, a wszystkie aktywne domeny zewnętrzne pokrywają się z listą dostawców w polityce prywatności. - Co najczęściej zawodzi: Albo w tle ładują się zapomniane skrypty narzędzi, z których firma zrezygnowała dwa lata temu (i których nie ma w polityce prywatności), albo pośpieszna próba naprawienia RODO przez programistę całkowicie zablokowała przesyłanie konwersji do GA4 i Google Ads nawet u użytkowników, którzy kliknęli „Akceptuj”.
4 najczęstsze błędy stanów zgody wykrywane na stronach produkcyjnych
Porównanie logów sieciowych z trzech stanów od razu wskazuje, czy źródłem problemu jest wklejony na sztywno kod w szablonie HTML, błędny wyzwalacz w GTM, czy uszkodzony zapis odmowy.
| Wzorzec błędu | Stan 1 (Brak akcji) | Stan 2 (Odrzuć wszystkie) | Stan 3 (Akceptuj wszystkie) | Techniczna przyczyna w kodzie |
|---|---|---|---|---|
| 1. Prawidłowe wdrożenie | 0 zapytań śledzących; 0 zbędnych ciasteczek | 0 zapytań śledzących; 1 ciasteczko z zapisem odmowy | Zadeklarowane tagi analityki i reklam działają poprawnie | Skrypty owinięte w funkcje sprawdzające zgodę; wyzwalacze GTM zablokowane do czasu akceptacji. |
| 2. Śledzenie przed zgodą (najczęstsze) | GA4, Meta Pixel lub YouTube ładują się od razu | Załadowane wcześniej skrypty nadal wysyłają dane | Skrypty działają dalej | Kod śledzący wklejony bezpośrednio w sekcji <head> z pominięciem blokady banera CMP. |
| 3. Pozorny przycisk „Odrzuć” | 0 zapytań śledzących przy pierwszym wejściu | Analityka lub nagrywanie sesji rusza po kliknięciu Odrzuć | Wszystkie tagi działają | Wyzwalacz w GTM reaguje na samo zdarzenie kliknięcia przycisku bez sprawdzenia statusu zgody. |
| 4. Utrata odmowy na drugiej podstronie | 0 zapytań śledzących na stronie głównej | 0 na głównej, ale skrypty ruszają po kliknięciu w podstronę | Wszystkie tagi działają | Ciasteczko odmowy zapisane ze złą ścieżką path lub nadpisywane przy przeładowaniu widoku. |
| 5. Zablokowana analityka po zgodzie | 0 zapytań śledzących | 0 zapytań śledzących | 0 zapytań analitycznych (ślepa plamka marketingu) | Uszkodzony skrypt aktualizujący stan consent update po kliknięciu przycisku akceptacji. |
Kontrola wzrokowa vs prosty skaner vs audyt trzech stanów w przeglądarce
Sam fakt wyświetlania banera na ekranie nie mówi nic o bezpieczeństwie prawnym; dopiero porównanie ruchu sieciowego we wszystkich trzech stanach daje twardy dowód, że mechanizm zgody działa.
Podstawowy skaner cookie
Pojedynczy odczytWczytuje adres URL jeden raz bez klikania w baner i bez sprawdzania przejścia na kolejną podstronę.
- Nie sprawdza, czy przycisk Odrzuć naprawdę blokuje skrypty
- Pomija skrypty uruchamiane przy przewijaniu strony
- Ignoruje identyfikatory zapisywane w localStorage
Audyt 3 stanów w Playwright
Pełna interakcjaWykonuje scenariusze Brak akcji, Odrzuć oraz Akceptuj w osobnych sesjach z pełnym porównaniem sieci i pamięci.
- Dowodzi braku śledzenia przed zgodą i po odmowie
- Weryfikuje utrzymanie odmowy na kolejnych podstronach
- Potwierdza poprawne działanie analityki po akceptacji
Najczęściej zadawane pytania (FAQ)
Czy korzystanie z certyfikowanego banera CMP (np. Cookiebot, Usercentrics, OneTrust) gwarantuje, że stan „Odrzuć” działa poprawnie?
Nie. Platforma CMP odpowiada jedynie za wyświetlenie okna wyboru i przekazanie sygnału o decyzji użytkownika. Jeżeli programista lub agencja marketingowa wkleiła wcześniej piksel LinkedIn, kod Hotjar, widżet Calendly albo czcionki Google Fonts bezpośrednio w sekcji <head> szablonu strony z pominięciem atrybutów blokujących CMP, skrypt ten uruchomi się zarówno przed wyrażeniem zgody, jak i po kliknięciu „Odrzuć”, niezależnie od opłacanej licencji CMP.
Jak zachowuje się Google Consent Mode v2 w stanie bez interakcji oraz po odrzuceniu?
W podstawowym trybie Google Consent Mode (Basic Mode) do momentu wyrażenia zgody przeglądarka nie wysyła żadnych zapytań do serwerów Google. W trybie zaawansowanym (Advanced Mode) przeglądarka może wysyłać bezciasteczkowe sygnały ping (gcs=G100), o ile polityka prywatności i podstawa prawna wyraźnie to przewidują. W większości rygorystycznych interpretacji europejskich (w tym w Polsce i Niemczech) najbezpieczniejszą konfiguracją techniczną pozostaje pełne zablokowanie komunikacji analitycznej do czasu wyraźnego kliknięcia „Akceptuj”.
Jak często należy powtarzać test trzech stanów zgody?
Automatyczny test trzech stanów warto uruchamiać po każdej publikacji zmian w kontenerze Google Tag Manager, po dodaniu zewnętrznego odtwarzacza wideo lub formularza rezerwacji oraz przy aktualizacjach szablonu strony. Podobnie jak przy większych pracach modernizacyjnych, które opisaliśmy w studium przypadku o modernizacji starszych systemów webowych, automatyczna kontrola przed wdrożeniem chroni przed przypadkowym wpuszczeniem zewnętrznych skryptów na produkcję.
Sprawdź, co Twoja strona robi we wszystkich trzech stanach
Nie zgaduj, czy baner cookie na Twojej stronie rzeczywiście blokuje skrypty śledzące przed kliknięciem i po wyborze opcji „Odrzuć”. Prześlij nam adres swojej domeny. Przeprowadzimy automatyczny audyt trzech stanów przeglądarki na żywej stronie i przekażemy Ci czytelny raport inżynierski pokazujący każde zapytanie sieciowe, ciasteczko oraz wpis w pamięci lokalnej dla stanów Brak akcji, Odrzuć oraz Akceptuj.
Zobacz nasze usługi inżynierii webowej i audytów technicznych lub zamów techniczny audyt strony już dziś.