Eiti į turinį

Tyrimas

80% of Cookie Reject Buttons Don't Actually Work — Here's the Proof

GDPR Privacy Monitor Research · 2026-04-11 · 6 min skaitymas

Kiekviena slapukų juosta duoda tą patį numanomą pažadą: spustelėkite „Atmesti" ir sekimas sustoja. Juosta dingsta, o jūs naršote ramybėje. Tai yra sandoris, ant kurio pastatytas sutikimo modelis -- idėja, kad naudotojai turi prasmingą, vykdomą pasirinkimą.

Tą pažadą testavome 28 891 ES svetainėje. 80,4 % atvejų pažadas sulaužytas. Sekimas tęsiasi po to, kai naudotojas aiškiai spusteli atmesti. Slapukai išlieka. Reklamos pikseliai toliau šaudo. O 1 642 svetainėse slapukai, kuriuos atmetimo veiksmas iš pradžių pašalino, grįžta kitą kartą įkėlus puslapį -- modelis, kurį vadiname consent respawn.

Tai nėra marginalinis radinys apie kelias netinkamai sukonfigūruotas svetaines. Tai rodo sisteminę problemą mechanizme, kuriuo šimtai milijonų ES gyventojų pasikliauja dėl savo privatumo teisių.

Ką „Atmesti" turėtų daryti -- teisiškai

Teisinė sistema yra aiški. Pagal ePrivacy direktyvos 5 straipsnio 3 dalį, informacijos saugojimas ar prieiga prie informacijos naudotojo galiniame įrenginyje reikalauja išankstinio sutikimo, su siaura išimtimi slapukams, griežtai būtiniems paslaugai, kurios naudotojas aiškiai paprašė. BDAR 7 straipsnio 3 dalis prideda, kad sutikimo atšaukimas turi būti toks pat lengvas kaip jo davimas, o duomenų valdytojas turi veikti pagal tą atšaukimą.

EDPB gairės 05/2020 dėl sutikimo pagal BDAR paaiškina, ką tai reiškia atmetimo mygtukams: jei svetainė siūlo „Priimti viską" parinktį, ji taip pat turi siūlyti lygiai taip pat ryškią ir lygiai taip pat prieinamą parinktį atsisakyti. Ir tas atsisakymas turi būti veiksmingas -- jis turi iš tikrųjų užkirsti kelią tvarkymui, kurį sutikimas būtų leidęs.

ESTT tai patvirtino Planet49 byloje (C-673/17): sutikimui reikia aiškaus teigiamo veiksmo, o iš anksto pažymėti langeliai nesudaro galiojančio sutikimo. Loginė išvada yra ta, kad atsisakymas -- aiškus neigiamas veiksmas -- turi būti gerbiamas taip pat galutinai kaip ir priėmimas. Jei „Priimti" paspaudimas įjungia sekimą, „Atmesti" paspaudimas turi jį išjungti. Ne iš dalies. Ne laikinai. Visiškai ir nuolat.

Štai ką sako įstatymas. Mūsų duomenys rodo, kas iš tikrųjų vyksta.

Kaip mes testuojame atmetimo srautą

Mūsų atmetimo srauto testas sukurtas būti kuo artimesnis tikro žmogaus, spustelėjusio atmesti, patirčiai, pridedant visapusišką instrumentavimą. Štai procesas žingsnis po žingsnio:

1 žingsnis: švari naršyklės sesija. Skeneris paleidžia švarų Chromium egzempliorių -- be slapukų, be vietinės atminties, be talpyklos išteklių, be naršymo istorijos. Tai yra tikras pirmą kartą apsilankantis lankytojas be ankstesnės sutikimo būsenos. 2 žingsnis: naršymas ir būsenos prieš sutikimą įrašymas. Skeneris įkelia tikslinį URL ir laukia, kol puslapis stabilizuosis. Prieš bet kokią sąveiką jis įrašo kiekvieną naršyklėje esantį slapuką, kiekvieną pateiktą tinklo užklausą ir kiekvieną kontaktuotą trečiosios šalies domeną. Tai yra bazinė būsena prieš sutikimą -- ką svetainė daro prieš naudotojui turint galimybę pasirinkti. 3 žingsnis: sutikimo juostos aptikimas. Naudodamas mūsų aptikimo biblioteką, apimančią 45 žinomų CMP ir bendrines euristikas, skeneris identifikuoja sutikimo mechanizmą ir randa atmetimo mygtuką. Šis žingsnis naudoja sluoksniuotą metodą: pirmiausia tikrinamos žinomos CMP skriptų signatūros ir su jomis susijusios DOM struktūros, tada grįžtama prie fiksuotos padėties elementų bendrinio aptikimo su sutikimu susijusiu tekstu ir mygtukų etiketėmis kaip „Reject All", „Decline", „Refuse" ar atitinkami vertimai. 4 žingsnis: atmetimo paspaudimas. Skeneris spusteli atmetimo mygtuką ir laukia, kol puslapis stabilizuosis. „Stabilizuosis" reiškia laukimą, kol laukiančios tinklo užklausos bus baigtos, DOM mutacijos sustos ir animacijos ar perėjimai baigsis. Naudojame dosnias laiko ribas, kad išvengtume klaidingų teigiamų rezultatų iš lėtų CMP įgyvendinimų. 5 žingsnis: momentinė kopija po atmetimo. Skeneris vėl įrašo pilną būseną: visus slapukus, visą tinklo veiklą, visus trečiųjų šalių domenus. Ši momentinė kopija lyginama su bazine būsena prieš sutikimą, kad būtų nustatyta, kas pasikeitė. 6 žingsnis: perkrovimas ir atsiradimo iš naujo tikrinimas. Skeneris perkrauna puslapį ir vėl laukia stabilizacijos. Tada padaro galutinę momentinę kopiją. Šis žingsnis yra kritinis: jis atskleidžia, ar atmetimo veiksmas yra nuolatinis (gerbiamas per puslapio krovimus) ar slapukai ir sekimas iš naujo aktyvuojasi šviežiai įkėlus puslapį. Jei slapukai, pašalinti 5 žingsnyje, vėl pasirodo 6 žingsnyje, tai yra consent respawn.

Kiekvienas žingsnis sukuria laiko žymomis pažymėtus, archyvinius įrodymus: pilnus slapukų inventorius su pavadinimais, reikšmėmis, domenais, galiojimo datomis ir vėliavomis; pilnus tinklo užklausų žurnalus su URL, metodais, atsakymų kodais ir laiku; ir viso puslapio ekrano kopijas. Ši įrodymų grandinė leidžia patikrinti ir ginčyti bet kurį atskirą radinį.

Rezultatai: 80,4 % nesėkmė

Iš 28 891 svetainių, kuriose sėkmingai užbaigėme pilną atmetimo srauto testą:

  • 5 650 (19,6 %) praėjo. Po atmetimo paspaudimo neesminiai slapukai buvo pašalinti, sekimo užklausos sustojo, ir atmetimas išliko per puslapio perkrovimus.
  • 23 241 (80,4 %) nepraėjo. Sekimas kažkuria forma tęsėsi po naudotojo aiškaus atmetimo.

Nesėkmės nėra vienodos. Jos skirstomos į atskiras kategorijas, kurios persidengia -- viena svetainė gali rodyti kelis nesėkmės režimus vienu metu.

Išliekantys slapukai: 10 848 svetainės

10 848 svetainėse (37,5 % testuotų) neesminiai slapukai liko naršyklėje po atmetimo srauto užbaigimo. Tai slapukai, klasifikuoti kaip analizės, rinkodaros ar su sekimu susiję, kurie turėjo būti pašalinti arba užkirsta jiems kelią po atmetimo.

Dažniausi išliekantys slapukai priklauso Google Analytics (`_ga`, `_gid`, `_gat`), Meta/Facebook (`_fbp`, `fr`) ir įvairioms reklamos platformoms. Daugeliu atvejų CMP sėkmingai pašalina kai kuriuos slapukus, bet nepraleido visų -- tai rodo nepilną integraciją tarp sutikimo valdymo platformos ir viso svetainės trečiųjų šalių skriptų sąrašo.

Šių slapukų buvimas po atmetimo nėra vien estetinė problema. Kiekvienas yra nuolatinis identifikatorius, susiejantis naudotojo dabartinę sesiją su ankstesniais ir ateities apsilankymais. `_ga` slapukas, pavyzdžiui, yra unikalus kliento identifikatorius, kurį Google Analytics naudoja naudotojo elgesio ilgalaikiam profiliui sudaryti per sesijas. Jei jis išlieka po atmetimo, naudotojo naršymas toliau sekamas ir agreguojamas nepaisant išreikšto atsisakymo.

Išliekantys sekimo priemonės: 14 547 svetainės

14 547 svetainėse (50,3 % testuotų) sekimo tarnybos liko aktyvios po atmetimo -- tai reiškia, kad naršyklė toliau teikė užklausas žinomiems sekimo domenams net po naudotojo atmetimo mygtuko paspaudimo.

Tai yra skirtingas nesėkmės režimas nuo slapukų išlikimo. Sekimo priemonė gali būti aktyvi be slapuko nustatymo: pikselių užklausos, švyturių kvietimai ir skriptų įkėlimai perduoda informaciją (bent naudotojo IP adresą, nukreipiamąjį puslapį ir laiko duomenis) trečiųjų šalių serveriams nepaisant to, ar slapukas yra saugomas. Tai kartais vadinama „sekimu be slapukų" ir tampa vis dažnesnis, kai naršyklės griežtina trečiųjų šalių slapukų apribojimus.

Atotrūkis tarp slapukų skaičiaus (10 848) ir sekimo priemonių skaičiaus (14 547) yra reikšmingas. Tai reiškia, kad maždaug 3 700 svetainių atmetimo veiksmas sėkmingai išvalė slapukus, bet nesugebėjo užkirsti kelio sekimo užklausoms. CMP atliko slapukų valymą, bet neblokavo skriptų, generuojančių sekimo srautą. Tai rodo dažną architektūrinę problemą: CMP sukonfigūruotas valdyti slapukus (šalinti juos atmetimo metu, užkirsti jiems kelią krovimo metu), bet ne valdyti skriptų vykdymą.

Consent respawn: 1 642 svetainės, 4 932 slapukai

Consent respawn yra labiausiai nerimą keliantis modelis, kurį identifikavome. 1 642 svetainėse slapukai, sėkmingai pašalinti atmetimo veiksmu, vėl atsirado po puslapio perkrovimo. Tose svetainėse 4 932 individualūs slapukai rodė šį atsiradimo iš naujo elgesį.

Consent respawn nėra vieno CMP ar vienos konfigūracijos klaida. Tai struktūrinė problema, kaip sutikimas įgyvendinamas visame žiniatinklio technologijų rietuvėje.

Kaip slapukas grįžta po ištrinimo. Kai naudotojas spusteli atmesti, tinkamai sukonfigūruotas CMP atlieka du dalykus: ištrina esamus neesminius slapukus (nustatydamas jų galiojimo datą į praeitį) ir atnaujina sutikimo įrašą (paprastai slapuką patį arba localStorage įrašą), kuris nurodo CMP blokavimo logikai, kad neesminiai skriptai neturėtų būti paleisti ateities puslapio krovimuose. Jei abu veikia, naudotojas yra švarus: nėra sekimo slapukų, nėra sekimo skriptų.

Consent respawn įvyksta, kai ištrinimas pavyksta, bet blokavimas nepavyksta. Dažniausias scenarijus:

1. CMP ištrina `_ga` slapuką, kai naudotojas spusteli atmesti.

2. CMP nustato sutikimo būsenos slapuką, įrašantį, kad naudotojas atsisakė analizės.

3. Kitame puslapio krovime CMP tikrina savo sutikimo būseną ir žino, kad naudotojas atsisakė.

4. Bet: Google Analytics skripto žyma yra įterpta tiesiai puslapio šablone (už žymų valdiklio ribų) arba kraunama per žymų valdiklio taisyklę, kuri netikrina sutikimo būsenos.

5. GA skriptas kraunasi, neranda `_ga` slapuko ir sukuria naują.

6. Naudotojo atmetimo sprendimas buvo panaikintas.

Šio modelio variantai apima: trečiųjų šalių skriptus, kraunamus per užkoduotas `