Blokowanie Google Consent (GDPR/Cookie)

tech • 443 słowa • 3 minuty czytania

Do pełni szczęścia w poprawkach moich UserSripts brakuje jeszcze zabawy z YouTube Block Popups (SignIn/GDPR).

Skrypt ten nie był dawno aktualizowany, ale na szczęście dobrze sobie radził do tej pory z blokowaniem wyskakujących okienek zachęcających do zalogowania i/lub cookie-zgody i wymuszonym przerywaniem odtwarzania video.

W sumie jego logikę można byłoby obecnie zawrzeć w kilku linijkach filtrów do AdBlocka (znalezione na r/uBlockOrigin):

! YT consent
youtube.com##+js(set, ytInitialData.topbar.desktopTopbarRenderer.interstitial.consentBumpRenderer.forceConsent, false)
youtube.com##+js(json-prune, [].response.topbar.desktopTopbarRenderer.interstitial.consentBumpRenderer)
youtube.com##+js(json-prune, topbar.desktopTopbarRenderer.interstitial.consentBumpRenderer)

! YT login
youtube.com##+js(set, ytInitialPlayerResponse.auxiliaryUi.messageRenderers.upsellDialogRenderer.isVisible, false)
youtube.com##+js(set, ytInitialData.overlay.upsellDialogRenderer.isVisible, false)
youtube.com##+js(json-prune, [].playerResponse.auxiliaryUi.messageRenderers.upsellDialogRenderer)

Definicje te przetestowałem z uBlock-iem i rzeczywiście działają, zatem mój skrypt teoretycznie można by już zarzucić.

A tutaj niespodziewanie pojawia się nowy problem z implementacją GDPR w wykonaniu Googla.

W ostatnich dniach zmieniono strategię, bo teraz w Incognito na wyszukiwarce pojawia się specjalna warstwa z tymi ciasteczkowymi pierdołami. To oczywiście daje się jakoś obejść filtrami kosmetycznymi. Ale wersja na YouTubie już jest bardziej upierdliwa - zamiast filmu jest przekierowanie na stronę w domenie consent.youtube.com.

Takiego przekierowania nie da się łatwo obejść - to znaczy w ogóle wykluczyć, ani skryptem, ani filtrem…

Na reddicie można znaleźć wzmiankę, że wystarczy zablokować cookiesy dla domeny consent.youtube.com i problem rozwiązany. Jednak nie do końca, co prawda problem z redirect-em znika, ale pojawiają się inne efekty uboczne.

Postanowiłem zainteresować się sprawą i zajrzeć do środka, aby upewnić się co do przyczyny zwracania przez serwer 302 na stronę wymagającą potwierdzenia zgód. Okazuje się, że bez ciasteczek na YouTubie lub z CONSENT=PENDING+..., serwer przekieruje nas na dedykowaną stronę. Po wyrażeniu na niej wymaganych zgód dostaniemy 303 i powrócimy na YT z ciastkiem CONSENT=YES+.... To chyba wyjaśnia sprawę… wystarczy “zapakować” ciastko poprawnym nadzieniem ;)

Żeby ustawić początkową wartość ciasteczka tak, aby działało to poprawnie w trybie Incognito trzeba zmodyfikować nagłówki zapytania HTTP. Jest kilka rozszerzeń do przeglądarki dodających możliwość edycji nagłówków. Niestety nie wszystkie radzą sobie z polem Cookie. Po kilku testach znalazłem zadowalającą wtyczkę - ModHeader.

Na zrzucie wyżej widnieje moja konfiguracja z modyfikacją ciasteczek. W opcjach trzeba jeszcze zaznaczyć pole “Value concatenation” w “Header override mode”, aby doklejać wartość do już istniejącej zawartości nagłówka. Bez tego mogą pojawić się inne efekty uboczne i problemy z działaniem oraz stabilnością niektórych elementów serwisu.

Tym prostym sposobem, przynajmniej na razie, rozwiązałem sprawę irytujących ciasteczkowych okienek i przekierowań.


BTW. Przy okazji, z braku dobrze działającego i zadowalającego mnie rozszerzenia do modyfikacji nagłówków http w żądaniach i odpowiedziach, nasunął mi się pomysł na własną wersję takiej wtyczki. Dobra implementacja takiego rozszerzenia pozwoli wyzbyć się wielu innych dedykowanych rozszerzeń, jak chociażby służących do podmiany UserAgenta, czy innych “grzebiących” w nagłówkach. A to w wielu przypadkach, obok UserSripts-ów, dopełniając jego braki, może mieć znaczny wpływ na poprawę wygody i komfortu korzystania ze współczesnego Internetu.

Komentarze (0)

Dodaj komentarz

/dozwolony markdown/

/nie zostanie opublikowany/