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

Spis treści
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.

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.

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:
- 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. - Czy stoi przed tagiem. Wartość domyślna wykonana dopiero po tagu przychodzi za późno dla pierwszych żądań.
- 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.