LW IT Solutions
« Przegląd bloga /Data Privacy/Tutorials / Sprawdzanie banera zgody: które skrypty śledzące wczytują...
Ten artykuł w innych językach:

Sprawdzanie banera zgody: które skrypty śledzące wczytują się, zanim ktoś kliknie

Sprawdzanie banera zgody: które skrypty śledzące wczytują się, zanim ktoś kliknie
Spis treści
  1. Baner nie jest zaporą
  2. Trzy sposoby faktycznego wstrzymania skryptu
  3. Co Consent Mode ustala przed pierwszym tagiem
  4. Ciasteczka, które przychodzą z pierwszą odpowiedzią
  5. Co źródło pokazuje, a czego nie
  6. Cztery rzeczy, które rozstrzyga spojrzenie w źródło
  7. Pytania i odpowiedzi
  8. Źródła

Baner zgody wygląda jak brama. Kładzie się na stronie, zadaje pytanie i dopóki nie zostanie naciśnięty przycisk, zdaje się nic nie dziać.

Ten pozór jest narysowany, a nie wymuszony. Baner to element na stronie jak każdy inny, wstawiony przez skrypt, który działa razem ze wszystkimi pozostałymi. To, czy tagi pomiarowe czekają na odpowiedź, jest osobnym urządzeniem – i całkiem możliwe jest mieć pytanie, a czekania nie.

Dwie osie czasu od wywołania strony do kliknięcia: w górnej tagi wczytują się od razu, a baner pojawia się potem, w dolnej tagi są wstrzymane i wczytują się dopiero po decyzji
Ten sam baner, ta sama chwila kliknięcia – różnica leży pomiędzy.

Baner nie jest zaporą

Kolejność zdarzeń na stronie jest ustalona i krótka. Przeglądarka pobiera HTML, przerabia go z góry na dół i uruchamia każdy skrypt, który po drodze napotka. Gdzieś w tej kolejności stoi skrypt rysujący baner.

Wszystko powyżej już się zaczęło. Wszystko poniżej zaczyna się i tak, o ile nie zostanie osobno powstrzymane. To, że baner zakrywa ekran, nie zatrzymuje strony za nim – widoczna nakładka nie ma wpływu na to, co pod nią się wczytuje.

Pytanie nigdy więc nie brzmi, czy baner jest obecny. Pytanie brzmi, co dzieje się z tagami w sekundach przed pierwszym dotknięciem.

Trzy sposoby faktycznego wstrzymania skryptu

Skrypt opóźniają naprawdę tylko trzy urządzenia i każde zostawia w źródle inny ślad.

Zmieniany jest typ. Skryptu z type="text/plain" przeglądarka w ogóle nie wykonuje – traktuje go jak tekst. Narzędzie zgody przepisuje typ po decyzji i dopiero wtedy skrypt rusza. To sposób najczęstszy i najłatwiejszy do rozpoznania.

Przenoszony jest adres. Prawdziwy adres stoi w atrybucie, który przeglądarka pomija, na przykład data-src, i po decyzji wędruje do src. Ta sama zasada, inny atrybut.

Skryptu w stronie w ogóle nie ma. Po tagu w dostarczonym HTML nie widać nic; narzędzie zgody wstawia go po odpowiedzi. To urządzenie najczystsze i z zewnątrz najtrudniejsze do wykazania, bo strona w tym stanie wygląda tak samo jak taka bez żadnego pomiaru.

Wszystkim trzem wspólne jest jedno: to decyzje przy budowie strony, a nie ustawienia w banerze. Narzędzie zgody wbudowane, ale niepowiązane z tagami, wytwarza nienaganny baner i niczego nie wstrzymuje.

Co Consent Mode ustala przed pierwszym tagiem

Tagi Google mają na to własny mechanizm i działa on odwrotnie: tag wczytuje się od razu, a wcześniej dostaje informację, co mu wolno.

Tym poleceniem jest wartość domyślna zgody. Ustawiona przed wczytaniem tagu mówi, czy zapisywanie jest dozwolone, a tag od pierwszej chwili zachowuje się odpowiednio. Bez wartości domyślnej tag stosuje własną – i mierzy według niej, dopóki narzędzie zgody nie sprostuje stanu.

Luka między wywołaniem strony a sprostowaniem jest zwykle krótka. Nie zawsze jest krótka i nigdy nie jest żadna.

Wartość domyślna ustawiona na granted warta jest drugiego spojrzenia. Odwiedzająca uchodzi wtedy za wyrażającą zgodę, zanim o cokolwiek zapytano – to więc decyzja, a nie przeoczenie, choć w praktyce bywa przeoczeniem, przepisanym z przykładu napisanego dla regionu o innych zasadach.

Dwa tory: na górnym cząstki już pobiegly dalej, na dolnym sa wstrzymane

Ciasteczka, które przychodzą z pierwszą odpowiedzią

Skrypty to tylko jedna droga. Serwer może ustawić ciasteczka już w samej odpowiedzi, zanim narysowana zostanie choćby jedna linijka strony.

Te ciasteczka stoją w nagłówkach odpowiedzi i zostają ustawione niezależnie od tego, co baner powie później, bo wysłano je, zanim baner istniał. Ciasteczka sesyjne dla koszyka należą do tej grupy i zwykle nie budzą wątpliwości. Ciasteczka analityczne ustawione tą samą drogą już tak.

To, czy ciasteczko wymaga zgody, zależy od tego, co robi, a nie od tego, kiedy zostaje ustawione. Ale chwila ustawienia rozstrzyga, czy narzędzie zgody w ogóle mogłoby temu zapobiec – a przy ciasteczku z pierwszej odpowiedzi odpowiedź brzmi: nie.

Co źródło pokazuje, a czego nie

Tu należy się uczciwa granica, bo rozstrzyga ona o tym, jak czytać wynik.

Dostarczony HTML to to, co wysyła serwer. Nie zawiera tego, co skrypt doczytuje później. Strona wstawiająca wszystkie tagi po decyzji pokazuje więc prawie nic – co jest zachowaniem właściwym i wygląda tak samo jak strona zupełnie bez tagów.

Tej dwuznaczności nie da się rozstrzygnąć z samego źródła, a narzędzie udające coś innego zgaduje. Źródło pokazuje natomiast niezawodnie przypadek odwrotny: tag stojący w HTML bez hamulca to tag, który wczyta się i tak.

I to jest ustalenie, na którym zależy. Strona z banerem i niehamowanymi tagami ma pozór decyzji i zachowanie bez niej.

Cztery rzeczy, które rozstrzyga spojrzenie w źródło

Które usługi pomiarowe i reklamowe są wbudowane i pod jakimi identyfikatorami. Czy narzędzie zgody w ogóle jest obecne. Czy jakikolwiek skrypt w stronie jest wstrzymywany, jedną z trzech dróg. I jakie ciasteczka ustawia już pierwsza odpowiedź.

Skan śledzenia i zgody odpowiada na wszystkie cztery dla dowolnego adresu. Pobiera stronę raz, odczytuje dostarczone źródło i oddziela to, co wbudowane, od tego, co wstrzymane – i wyraźnie mówi, gdy wynik znaczy „tu nic nie widać”, a nie „nic tam nie ma”.

Użyteczny osąd nie jest oceną. Jest zdaniem wynikającym z czterech odpowiedzi: czy baner na tej stronie jest pytaniem ze skutkami, czy pytaniem bez nich.

Pytania i odpowiedzi

Czy skrypt z async albo defer czeka na zgodę?

Nie. Oba atrybuty zmieniają tylko to, kiedy skrypt się wykona, a nie to, czy się wykona: async uruchamia go, gdy tylko się wczyta, defer po przetworzeniu HTML. W obu przypadkach dzieje się to zwykle długo przed pierwszym kliknięciem w baner, więc w źródle taki skrypt liczy się jako niewstrzymany.

Tag Google stoi w źródle niewstrzymany, ale Consent Mode jest skonfigurowany. Czy to już powód do zastrzeżeń?

Na początek jest to kwestia budowy strony. Consent Mode nie wstrzymuje tagu: tag wczytuje się od razu i kieruje się wartością domyślną ustawioną wcześniej. Niewstrzymany tag jest więc tam czymś oczekiwanym i wczyta się tak czy inaczej. Rozstrzyga to, co stoi przed nim w źródle.

Da się tam odczytać trzy rzeczy:

  1. Czy w ogóle ustawiana jest wartość domyślna zgody, zwykle wywołaniem gtag('consent', 'default', …). Jeśli jej brak, obowiązuje wartość domyślna samego tagu, dopóki narzędzie zgody nie sprostuje stanu.
  2. Czy stoi przed tagiem. Wartość domyślna wykonana dopiero po tagu przychodzi za późno dla pierwszych żądań.
  3. Jakie wartości ustawia, na przykład dla analytics_storage i ad_storage. Jeśli stoi tam granted, odwiedzająca uchodzi za wyrażającą zgodę, zanim o cokolwiek zapytano.

Nawet przy poprawnej wartości domyślnej otwarte pozostaje, czy już samo wczytanie tagu i żądania, które wysyła on bez ciasteczek, są dopuszczalne bez zgody. To pytanie prawne, na które spojrzenie w źródło nie odpowiada.

Czy jedno pobranie pokazuje, co dostaje każda odwiedzająca osoba?

Niekoniecznie. Pobranie widzi stronę taką, jaką dostarczono dla dokładnie tego żądania: bez zapisanej decyzji, z określonego miejsca i być może z pamięci podręcznej stron. Niektóre narzędzia zgody dostarczają różne wersje zależnie od tego, skąd przychodzi żądanie, a Consent Mode zna wartości domyślne dla poszczególnych regionów; wartość domyślna ze wskazaniem regionu stoi w źródle i da się ją tam odczytać, rozróżnienie po stronie serwera już nie. Niebudzący zastrzeżeń wynik dotyczy więc, ściśle biorąc, tylko regionu, z którego sprawdzano.

Lukas Wójcik

Lukas Wójcik

Systems architect and technology enthusiast specializing in scalable tracking solutions, GMP Stack (GA4 & GTM), and robust backend architectures. Advocate for clean code and privacy-first design.

Get in Touch

Briefly describe your project or inquiry for a tailored response. This site is protected by reCAPTCHA.

Napisanie komentarza

Obserwacje z innych wdrożeń, zastrzeżenia i pytania są tu mile widziane.

Adres e-mail nie jest publikowany. Pola obowiązkowe oznaczono gwiazdką.

Artykuły i kategorie

CCTV

Śledź tę kategorię przez RSS

Cloud & AI

Wszystkie artykuły w tej kategorii (17) Śledź tę kategorię przez RSS

Data Privacy

Wszystkie artykuły w tej kategorii (19) Śledź tę kategorię przez RSS

Digital Analytics

Wszystkie artykuły w tej kategorii (58) Śledź tę kategorię przez RSS

Digital Marketing

Wszystkie artykuły w tej kategorii (37) Śledź tę kategorię przez RSS

IT & Networks

Wszystkie artykuły w tej kategorii (18) Śledź tę kategorię przez RSS

Music Production

Wszystkie artykuły w tej kategorii (17) Śledź tę kategorię przez RSS

Raspberry Pi

Śledź tę kategorię przez RSS

SaaS & Internet Earning

Śledź tę kategorię przez RSS

Smart Home

Wszystkie artykuły w tej kategorii (18) Śledź tę kategorię przez RSS

Tworzenie stron internetowych

Wszystkie artykuły w tej kategorii (11) Śledź tę kategorię przez RSS

Wtyczki i triki WordPress

Wszystkie artykuły w tej kategorii (14) Śledź tę kategorię przez RSS