{"id":10312,"date":"2026-08-28T18:10:00","date_gmt":"2026-08-28T16:10:00","guid":{"rendered":"https:\/\/www.lukaswojcik.com\/blog\/?p=10312"},"modified":"2026-10-09T23:30:15","modified_gmt":"2026-10-09T21:30:15","slug":"czytanie-ciagu-tc-co-stoi-w-213-bitach-naglowka","status":"publish","type":"post","link":"https:\/\/www.lukaswojcik.com\/blog\/pl\/data-privacy-pl\/czytanie-ciagu-tc-co-stoi-w-213-bitach-naglowka\/","title":{"rendered":"Czytanie ci\u0105gu TC: co stoi w 213 bitach nag\u0142\u00f3wka"},"content":{"rendered":"<p>Spory o zgody tocz\u0105 si\u0119 zwykle na twierdzeniach: baner jest tak skonfigurowany, lista dostawc\u00f3w jest aktualna, ci\u0105g jest \u015bwie\u017cy. Wszystkie trzy s\u0105 zapisane, w ciasteczku o nazwie <code>euconsent-v2<\/code>, i o \u017cadne z nich nie trzeba si\u0119 spiera\u0107 &#8211; bo ci\u0105g nie jest zaszyfrowany. Jest upakowany, a jego rozpakowanie nie wymaga klucza.<\/p>\n<p>Poni\u017cej opisana jest budowa tego pakunku. Warto j\u0105 zna\u0107 nie dla niej samej, lecz dlatego, \u017ce odczytanie ci\u0105gu wyja\u015bnia w p\u00f3\u0142 minuty to, co inaczej zamienia si\u0119 w pytanie do dostawcy: czy CMP zapisa\u0142o to, co obiecywa\u0142 dialog, kiedy zrobi\u0142o to ostatnio i wobec kt\u00f3rej wersji listy dostawc\u00f3w.<\/p>\n<figure class=\"lw-diagram\">\n<img decoding=\"async\" src=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/diagrams\/tc-string-pl.png\" width=\"1120\" height=\"580\" loading=\"lazy\" alt=\"Segment g\u0142\u00f3wny ci\u0105gu TC jako pasek bit\u00f3w: wersja, dwa znaczniki czasu, pola CMP, j\u0119zyk, wersja listy dostawc\u00f3w i wersja polityki, dalej cechy szczeg\u00f3lne, cele, uzasadniony interes oraz sekcja dostawc\u00f3w\"><figcaption>Segment g\u0142\u00f3wny, bit po bicie: 213 bit\u00f3w nag\u0142\u00f3wka, dalej cele i dostawcy.<\/figcaption><\/figure>\n<h2>Jak ci\u0105g jest upakowany<\/h2>\n<p>Ci\u0105g TC to sekwencja p\u00f3l o sta\u0142ej d\u0142ugo\u015bci bitowej, zapisanych jedno po drugim, bez separator\u00f3w, a nast\u0119pnie zakodowanych w Base64 w wariancie bezpiecznym dla sieci &#8211; tym, kt\u00f3ry u\u017cywa my\u015blnika i podkre\u015blenia zamiast dw\u00f3ch znak\u00f3w wymagaj\u0105cych maskowania w adresie. Ka\u017cdy znak niesie dok\u0142adnie sze\u015b\u0107 bit\u00f3w.<\/p>\n<p>Dlatego ka\u017cdy napotkany ci\u0105g TC zaczyna si\u0119 liter\u0105 <code>C<\/code>: pierwszym polem jest wersja o szeroko\u015bci sze\u015bciu bit\u00f3w, a wersja 2 zapisana na sze\u015bciu bitach to <code>000010<\/code>, czyli znak na pozycji 2 alfabetu. Ci\u0105g zaczynaj\u0105cy si\u0119 inaczej albo nie jest ci\u0105giem TC, albo nie jest wersj\u0105 2 &#8211; i jedno, i drugie warto zauwa\u017cy\u0107, zanim odczyta si\u0119 cokolwiek innego.<\/p>\n<h2>213 bit\u00f3w nag\u0142\u00f3wka<\/h2>\n<p>Wszystko a\u017c do dostawc\u00f3w le\u017cy w sta\u0142ej kolejno\u015bci i w\u0142a\u015bnie to czyni ci\u0105g czytelnym bez biblioteki.<\/p>\n<table style=\"width:100%;border-collapse:collapse\">\n<thead>\n<tr>\n<th style=\"white-space:nowrap;vertical-align:top\">Pole<\/th>\n<th style=\"white-space:nowrap\">Bity<\/th>\n<th>Co rozstrzyga<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"white-space:nowrap;vertical-align:top\">Wersja<\/td>\n<td>6<\/td>\n<td>W praktyce zawsze 2; wszystko inne nie nale\u017cy do tego formatu.<\/td>\n<\/tr>\n<tr>\n<td style=\"white-space:nowrap;vertical-align:top\">Utworzono, ostatnia zmiana<\/td>\n<td>po 36<\/td>\n<td>Dziesi\u0105te cz\u0119\u015bci sekundy od 1970 &#8211; wiek zgody, co do sekundy.<\/td>\n<\/tr>\n<tr>\n<td style=\"white-space:nowrap;vertical-align:top\">Numer CMP, wersja CMP<\/td>\n<td>po 12<\/td>\n<td>Kt\u00f3re CMP zapisa\u0142o ci\u0105g i w jakiej wersji.<\/td>\n<\/tr>\n<tr>\n<td style=\"white-space:nowrap;vertical-align:top\">Wersja listy dostawc\u00f3w<\/td>\n<td>12<\/td>\n<td>Wersja listy, z kt\u00f3rej zbudowano dialog.<\/td>\n<\/tr>\n<tr>\n<td style=\"white-space:nowrap;vertical-align:top\">Wersja polityki TCF<\/td>\n<td>6<\/td>\n<td>Od 4 ci\u0105g podlega regu\u0142om TCF 2.2.<\/td>\n<\/tr>\n<tr>\n<td style=\"white-space:nowrap;vertical-align:top\">Cechy szczeg\u00f3lne<\/td>\n<td>12<\/td>\n<td>Dok\u0142adna lokalizacja i skanowanie urz\u0105dzenia, jako dwa z dwunastu mo\u017cliwych bit\u00f3w.<\/td>\n<\/tr>\n<tr>\n<td style=\"white-space:nowrap;vertical-align:top\">Cele, cele z interesem<\/td>\n<td>po 24<\/td>\n<td>Jedena\u015bcie przypisanych cel\u00f3w, dwukrotnie: zgoda i uzasadniony interes.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Wraz z numerem ekranu zgody, dwuliterowym j\u0119zykiem, znacznikiem specyfiki us\u0142ugi i krajem wydawcy daje to 213 bit\u00f3w. Od bitu 214 zaczynaj\u0105 si\u0119 dostawcy i tam sta\u0142a d\u0142ugo\u015b\u0107 si\u0119 ko\u0144czy.<\/p>\n<h2>Dlaczego jeden ci\u0105g jest kr\u00f3tki, a nast\u0119pny bez ko\u0144ca<\/h2>\n<p>Dostawcy zapisywani s\u0105 na jeden z dw\u00f3ch sposob\u00f3w, a ci\u0105g wybiera to osobno dla ka\u017cdej sekcji. Albo jako pole bitowe, jeden bit na dostawc\u0119 a\u017c do najwy\u017cszego numeru &#8211; co kosztuje 1200 bit\u00f3w, je\u015bli lista tak daleko si\u0119ga, niezale\u017cnie od tego, ilu faktycznie udzielono zgody. Albo jako zakresy: liczba, a potem dla ka\u017cdego zakresu pocz\u0105tek i koniec po szesna\u015bcie bit\u00f3w.<\/p>\n<p>Kto zgadza si\u0119 na wszystko, tworzy ci\u0105g zwarty, bo ca\u0142a lista zapada si\u0119 w gar\u015b\u0107 zakres\u00f3w. Kto wybiera pi\u0119\u0107dziesi\u0119ciu dostawc\u00f3w z o\u015bmiuset, tworzy ten d\u0142ugi, bo ka\u017cdy pojedynczy wyb\u00f3r staje si\u0119 w\u0142asnym zakresem. D\u0142ugo\u015b\u0107 ciasteczka m\u00f3wi wi\u0119c co\u015b o kszta\u0142cie decyzji, a nic o tym, jak hojna ona by\u0142a.<\/p>\n<h2>Co TCF 2.2 zamieni\u0142o w b\u0142\u0105d<\/h2>\n<p>Trzy rzeczy warto sprawdzi\u0107 w ka\u017cdym ci\u0105gu, a wszystkie trzy wraz z wersj\u0105 polityki 4 przesz\u0142y z kwestii wyk\u0142adni w twarde regu\u0142y.<\/p>\n<p>Uzasadniony interes nie jest ju\u017c dopuszczalny dla cel\u00f3w 1, 3, 4, 5 i 6. Ci\u0105g nios\u0105cy te bity pochodzi albo sprzed tej zmiany, albo od CMP, kt\u00f3re jej nie uwzgl\u0119dni\u0142o &#8211; a bit nie jest niewinny, bo dostawcy czytaj\u0105 go jako podstaw\u0119 przetwarzania.<\/p>\n<p>Cele od 12 do 24 istniej\u0105 w formacie, ale nie w specyfikacji. Ustawione tam bity oznaczaj\u0105, \u017ce CMP zapisuje do p\u00f3l, kt\u00f3rych nikt nie definiuje &#8211; to najwyra\u017aniejszy znak wdro\u017cenia zrobionego na w\u0142asn\u0105 r\u0119k\u0119.<\/p>\n<p>I wiek: znacznik zmiany stoi w ci\u0105gu, zgod\u0119 starsz\u0105 ni\u017c trzyna\u015bcie miesi\u0119cy da si\u0119 wi\u0119c rozpozna\u0107 po samym ciasteczku. Razem z wersj\u0105 listy dostawc\u00f3w odpowiada to na pytanie, czy dialog prowadzi dostawc\u00f3w, o kt\u00f3rych odwiedzaj\u0105cego nigdy nie zapytano &#8211; bo lista ro\u015bnie, a ci\u0105g zapisany wobec starszej wersji po prostu nie ma nic do powiedzenia o nowo dodanych.<\/p>\n<h2>Segmenty za segmentem g\u0142\u00f3wnym<\/h2>\n<p>Ci\u0105g mo\u017ce nie\u015b\u0107 wi\u0119cej ni\u017c jeden segment, rozdzielony kropkami, a ka\u017cdy kolejny zaczyna si\u0119 trzema bitami nazywaj\u0105cymi jego rodzaj. Rodzaj 1 wymienia dostawc\u00f3w ujawnionych na urz\u0105dzeniu, rodzaj 3 niesie w\u0142asne cele wydawcy &#8211; te, kt\u00f3re witryna mo\u017ce doda\u0107 dla siebie. Rodzaj 2 by\u0142 segmentem dostawc\u00f3w dozwolonych i w 2.2 odpad\u0142.<\/p>\n<p>Wszystko za pierwsz\u0105 kropk\u0105 jest zatem dobrowolne, a jego brak nie jest usterk\u0105. Usterk\u0105 jest drugi segment, kt\u00f3rego nie da si\u0119 zdekodowa\u0107, bo po\u015brednicz\u0105ca us\u0142uga obci\u0119\u0142a ciasteczko na granicy d\u0142ugo\u015bci &#8211; to zwyk\u0142e wyja\u015bnienie ci\u0105gu, kt\u00f3ry czyta si\u0119 czysto do pewnego miejsca, a potem si\u0119 urywa.<\/p>\n<h2>Co da si\u0119 dzi\u0119ki temu wyja\u015bni\u0107 w praktyce<\/h2>\n<p>Trzy pytania pojawiaj\u0105 si\u0119 niemal w ka\u017cdej kontroli, a ci\u0105g odpowiada na wszystkie trzy bez niczyjego udzia\u0142u. Czy CMP zapisa\u0142o to, co obiecywa\u0142 dialog &#8211; przez por\u00f3wnanie bit\u00f3w cel\u00f3w z podj\u0119tymi decyzjami. Czy uk\u0142ad jest aktualny &#8211; po wersji polityki i wersji listy dostawc\u00f3w. I czy odwiedzaj\u0105cy prowadzony jest na decyzji z innej epoki &#8211; po znaczniku zmiany.<\/p>\n<p>Odczyt ci\u0105gu nie zast\u0119puje sprawdzenia samego dialogu i nie m\u00f3wi, czy dostawca respektuje zapisan\u0105 decyzj\u0119. Pozwala jednak zast\u0105pi\u0107 trzy twierdzenia trzema informacjami, kt\u00f3re mo\u017cna bezpo\u015brednio odczyta\u0107. Zwykle wystarcza to do wyja\u015bnienia tej cz\u0119\u015bci sporu, kt\u00f3ra opiera\u0142a si\u0119 dot\u0105d wy\u0142\u0105cznie na twierdzeniach.<\/p>\n<div class=\"lw-faq\">\n<h2>Pytania i odpowiedzi<\/h2>\n<h3>Na co uwa\u017ca\u0107 przy r\u0119cznym dekodowaniu ci\u0105gu TC bez biblioteki?<\/h3>\n<p>Na trzy miejsca, w kt\u00f3rych zwyk\u0142e narz\u0119dzia si\u0119 potykaj\u0105. Pierwsze to alfabet: Base64 w wariancie bezpiecznym dla sieci u\u017cywa my\u015blnika i podkre\u015blenia tam, gdzie wiele standardowych dekoder\u00f3w oczekuje plusa i uko\u015bnika. Oba znaki trzeba wtedy wcze\u015bniej podmieni\u0107, a brakuj\u0105ce dope\u0142nienie znakami \u201e=\u201d uzupe\u0142ni\u0107, a\u017c d\u0142ugo\u015b\u0107 b\u0119dzie podzielna przez cztery.<\/p>\n<p>Drugie to jednostka. Dekoder Base64 zwraca bajty, a pola ci\u0105gu nie trzymaj\u0105 si\u0119 granic bajt\u00f3w: wersja zajmuje sze\u015b\u0107 bit\u00f3w, oba znaczniki czasu po 36. Wygodniej jest wi\u0119c prze\u0142o\u017cy\u0107 ka\u017cdy znak bezpo\u015brednio na sze\u015b\u0107 bit\u00f3w wed\u0142ug jego pozycji w alfabecie, bo w\u0142a\u015bnie tak ci\u0105g jest zbudowany; podmiana znak\u00f3w i dope\u0142nienie przestaj\u0105 wtedy mie\u0107 znaczenie. Pola s\u0105 potem odliczane kolejno w jednym d\u0142ugim szeregu zer i jedynek.<\/p>\n<p>Trzecie to granica nag\u0142\u00f3wka. 213 bit\u00f3w to 35,5 znaku, nag\u0142\u00f3wek ko\u0144czy si\u0119 wi\u0119c w po\u0142owie 36. znaku, a jego ostatnie trzy bity nale\u017c\u0105 ju\u017c do cz\u0119\u015bci z dostawcami. Kto odetnie tylko pierwsze 35 znak\u00f3w, straci koniec nag\u0142\u00f3wka; kto we\u017amie 36, przeczyta trzy bity za du\u017co. Kropki rozdzielaj\u0105 przy tym segmenty i nie nale\u017c\u0105 do Base64, ka\u017cdy segment jest wi\u0119c dekodowany osobno.<\/p>\n<h3>Co, je\u015bli na stronie nie ma ciasteczka euconsent-v2?<\/h3>\n<p>Wtedy ci\u0105g le\u017cy gdzie indziej albo nazywa si\u0119 inaczej. Framework nie narzuca miejsca przechowywania, a euconsent-v2 to jedynie rozpowszechniona nazwa. Pewniejszy jest interfejs, kt\u00f3ry ka\u017cde CMP zgodne z TCF musi udost\u0119pnia\u0107 w przegl\u0105darce: wywo\u0142anie <code>__tcfapi('getTCData', 2, d =&gt; console.log(d.tcString))<\/code> w konsoli zwraca aktualny ci\u0105g w polu <code>tcString<\/code>, niezale\u017cnie od tego, gdzie CMP go przechowuje.<\/p>\n<h3>Po czym rozpozna\u0107 obci\u0119ty ci\u0105g, zanim kt\u00f3ry\u015b segment stanie si\u0119 nieczytelny?<\/h3>\n<p>Po rachunku, na kt\u00f3ry pozwala sam ci\u0105g. Po bicie 213 w segmencie g\u0142\u00f3wnym znajduje si\u0119 najpierw najwy\u017cszy numer dostawcy obj\u0119ty t\u0105 sekcj\u0105, a potem znacznik, czy dalej idzie pole bitowe, czy zakresy. Przy polu bitowym wiadomo wi\u0119c, ile bit\u00f3w zajmuje sekcja: jeden na ka\u017cdego dostawc\u0119 a\u017c do tego numeru. Je\u015bli reszta ci\u0105gu jest kr\u00f3tsza, czego\u015b brakuje. Przy zakresach liczba podana z g\u00f3ry m\u00f3wi, ile wpis\u00f3w nast\u0105pi, a przej\u015bcie przez nie pokazuje, czy ci\u0105g nie ko\u0144czy si\u0119 przed ostatnim.<\/p>\n<p>Jako przyczyny wchodz\u0105 w gr\u0119 dwie granice. Przegl\u0105darki musz\u0105 wed\u0142ug RFC 6265 obs\u0142ugiwa\u0107 co najmniej 4096 bajt\u00f3w na ciasteczko, liczonych \u0142\u0105cznie z nazw\u0105, warto\u015bci\u0105 i atrybutami; serwery i us\u0142ugi po\u015brednicz\u0105ce ograniczaj\u0105 ponadto rozmiar nag\u0142\u00f3wk\u00f3w \u017c\u0105dania, w kt\u00f3rych wszystkie ciasteczka domeny podr\u00f3\u017cuj\u0105 razem. Ci\u0105g ko\u0144cz\u0105cy si\u0119 tu\u017c przy takiej granicy jest podejrzany, nawet je\u015bli segment g\u0142\u00f3wny czyta si\u0119 jeszcze w ca\u0142o\u015bci.<\/p>\n<\/div>\n<div class=\"lw-quellen\">\n<h2>\u0179r\u00f3d\u0142a<\/h2>\n<ul>\n<li><a href=\"https:\/\/www.rfc-editor.org\/rfc\/rfc9110.html\" target=\"_blank\" rel=\"noopener noreferrer\">RFC 9110: HTTP Semantics<\/a><\/li>\n<li><a href=\"https:\/\/iabeurope.eu\/transparency-consent-framework\/\" target=\"_blank\" rel=\"noopener noreferrer\">IAB Europe Transparency and Consent Framework<\/a><\/li>\n<\/ul>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Ciasteczko euconsent-v2 nie jest zaszyfrowane, tylko upakowane. Co zawiera pierwszych 213 bit\u00f3w, jak zapisane s\u0105 cele i dostawcy oraz kt\u00f3re ustalenia TCF 2.2 zamieni\u0142o w b\u0142\u0119dy.<\/p>\n","protected":false},"author":1,"featured_media":13856,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[20],"tags":[92127,92151],"class_list":["post-10312","post","type-post","status-publish","format-standard","hentry","category-data-privacy-pl","tag-consent-management-pl","tag-prywatnosc-danych-pl-pl"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Czytanie ci\u0105gu TC: co stoi w 213 bitach nag\u0142\u00f3wka | Lukas Wojcik<\/title>\n<meta name=\"description\" content=\"Jak zbudowany jest ci\u0105g zgody TCF v2.2: 213 bit\u00f3w nag\u0142\u00f3wka, cele jako pole bitowe, dostawcy jako zakresy - oraz kontrole zdradzaj\u0105ce stary albo b\u0142\u0119dny ci\u0105g.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.lukaswojcik.com\/blog\/pl\/data-privacy-pl\/czytanie-ciagu-tc-co-stoi-w-213-bitach-naglowka\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Czytanie ci\u0105gu TC: co stoi w 213 bitach nag\u0142\u00f3wka | Lukas Wojcik\" \/>\n<meta property=\"og:description\" content=\"Jak zbudowany jest ci\u0105g zgody TCF v2.2: 213 bit\u00f3w nag\u0142\u00f3wka, cele jako pole bitowe, dostawcy jako zakresy - oraz kontrole zdradzaj\u0105ce stary albo b\u0142\u0119dny ci\u0105g.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lukaswojcik.com\/blog\/pl\/data-privacy-pl\/czytanie-ciagu-tc-co-stoi-w-213-bitach-naglowka\/\" \/>\n<meta property=\"og:site_name\" content=\"Lukas Wojcik - Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-08-28T16:10:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-09T21:30:15+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-10312-czytanie-ciagu-tc-co-stoi-w-bitach-n-g.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Lukas Wojcik\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Lukas Wojcik\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/data-privacy-pl\\\/czytanie-ciagu-tc-co-stoi-w-213-bitach-naglowka\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/data-privacy-pl\\\/czytanie-ciagu-tc-co-stoi-w-213-bitach-naglowka\\\/\"},\"author\":{\"name\":\"Lukas Wojcik\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"headline\":\"Czytanie ci\u0105gu TC: co stoi w 213 bitach nag\u0142\u00f3wka\",\"datePublished\":\"2026-08-28T16:10:00+00:00\",\"dateModified\":\"2026-10-09T21:30:15+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/data-privacy-pl\\\/czytanie-ciagu-tc-co-stoi-w-213-bitach-naglowka\\\/\"},\"wordCount\":1501,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/data-privacy-pl\\\/czytanie-ciagu-tc-co-stoi-w-213-bitach-naglowka\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-10312-czytanie-ciagu-tc-co-stoi-w-bitach-n-g.png\",\"keywords\":[\"Consent Management\",\"Data Privacy\"],\"articleSection\":[\"Data Privacy\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/data-privacy-pl\\\/czytanie-ciagu-tc-co-stoi-w-213-bitach-naglowka\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/data-privacy-pl\\\/czytanie-ciagu-tc-co-stoi-w-213-bitach-naglowka\\\/\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/data-privacy-pl\\\/czytanie-ciagu-tc-co-stoi-w-213-bitach-naglowka\\\/\",\"name\":\"Czytanie ci\u0105gu TC: co stoi w 213 bitach nag\u0142\u00f3wka | Lukas Wojcik\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/data-privacy-pl\\\/czytanie-ciagu-tc-co-stoi-w-213-bitach-naglowka\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/data-privacy-pl\\\/czytanie-ciagu-tc-co-stoi-w-213-bitach-naglowka\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-10312-czytanie-ciagu-tc-co-stoi-w-bitach-n-g.png\",\"datePublished\":\"2026-08-28T16:10:00+00:00\",\"dateModified\":\"2026-10-09T21:30:15+00:00\",\"description\":\"Jak zbudowany jest ci\u0105g zgody TCF v2.2: 213 bit\u00f3w nag\u0142\u00f3wka, cele jako pole bitowe, dostawcy jako zakresy - oraz kontrole zdradzaj\u0105ce stary albo b\u0142\u0119dny ci\u0105g.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/data-privacy-pl\\\/czytanie-ciagu-tc-co-stoi-w-213-bitach-naglowka\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/data-privacy-pl\\\/czytanie-ciagu-tc-co-stoi-w-213-bitach-naglowka\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/data-privacy-pl\\\/czytanie-ciagu-tc-co-stoi-w-213-bitach-naglowka\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-10312-czytanie-ciagu-tc-co-stoi-w-bitach-n-g.png\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-10312-czytanie-ciagu-tc-co-stoi-w-bitach-n-g.png\",\"width\":1200,\"height\":630,\"caption\":\"Czytanie ci\u0105gu TC: co stoi w 213 bitach nag\u0142\u00f3wka\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/data-privacy-pl\\\/czytanie-ciagu-tc-co-stoi-w-213-bitach-naglowka\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Czytanie ci\u0105gu TC: co stoi w 213 bitach nag\u0142\u00f3wka\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\",\"name\":\"Lukas Wojcik - Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\",\"name\":\"Lukas Wojcik\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"width\":424,\"height\":636,\"caption\":\"Lukas Wojcik\"},\"logo\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\"},\"sameAs\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Czytanie ci\u0105gu TC: co stoi w 213 bitach nag\u0142\u00f3wka | Lukas Wojcik","description":"Jak zbudowany jest ci\u0105g zgody TCF v2.2: 213 bit\u00f3w nag\u0142\u00f3wka, cele jako pole bitowe, dostawcy jako zakresy - oraz kontrole zdradzaj\u0105ce stary albo b\u0142\u0119dny ci\u0105g.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.lukaswojcik.com\/blog\/pl\/data-privacy-pl\/czytanie-ciagu-tc-co-stoi-w-213-bitach-naglowka\/","og_locale":"en_US","og_type":"article","og_title":"Czytanie ci\u0105gu TC: co stoi w 213 bitach nag\u0142\u00f3wka | Lukas Wojcik","og_description":"Jak zbudowany jest ci\u0105g zgody TCF v2.2: 213 bit\u00f3w nag\u0142\u00f3wka, cele jako pole bitowe, dostawcy jako zakresy - oraz kontrole zdradzaj\u0105ce stary albo b\u0142\u0119dny ci\u0105g.","og_url":"https:\/\/www.lukaswojcik.com\/blog\/pl\/data-privacy-pl\/czytanie-ciagu-tc-co-stoi-w-213-bitach-naglowka\/","og_site_name":"Lukas Wojcik - Blog","article_published_time":"2026-08-28T16:10:00+00:00","article_modified_time":"2026-10-09T21:30:15+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-10312-czytanie-ciagu-tc-co-stoi-w-bitach-n-g.png","type":"image\/png"}],"author":"Lukas Wojcik","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Lukas Wojcik","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/data-privacy-pl\/czytanie-ciagu-tc-co-stoi-w-213-bitach-naglowka\/#article","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/data-privacy-pl\/czytanie-ciagu-tc-co-stoi-w-213-bitach-naglowka\/"},"author":{"name":"Lukas Wojcik","@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"headline":"Czytanie ci\u0105gu TC: co stoi w 213 bitach nag\u0142\u00f3wka","datePublished":"2026-08-28T16:10:00+00:00","dateModified":"2026-10-09T21:30:15+00:00","mainEntityOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/data-privacy-pl\/czytanie-ciagu-tc-co-stoi-w-213-bitach-naglowka\/"},"wordCount":1501,"commentCount":0,"publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/data-privacy-pl\/czytanie-ciagu-tc-co-stoi-w-213-bitach-naglowka\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-10312-czytanie-ciagu-tc-co-stoi-w-bitach-n-g.png","keywords":["Consent Management","Data Privacy"],"articleSection":["Data Privacy"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.lukaswojcik.com\/blog\/pl\/data-privacy-pl\/czytanie-ciagu-tc-co-stoi-w-213-bitach-naglowka\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/data-privacy-pl\/czytanie-ciagu-tc-co-stoi-w-213-bitach-naglowka\/","url":"https:\/\/www.lukaswojcik.com\/blog\/pl\/data-privacy-pl\/czytanie-ciagu-tc-co-stoi-w-213-bitach-naglowka\/","name":"Czytanie ci\u0105gu TC: co stoi w 213 bitach nag\u0142\u00f3wka | Lukas Wojcik","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/data-privacy-pl\/czytanie-ciagu-tc-co-stoi-w-213-bitach-naglowka\/#primaryimage"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/data-privacy-pl\/czytanie-ciagu-tc-co-stoi-w-213-bitach-naglowka\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-10312-czytanie-ciagu-tc-co-stoi-w-bitach-n-g.png","datePublished":"2026-08-28T16:10:00+00:00","dateModified":"2026-10-09T21:30:15+00:00","description":"Jak zbudowany jest ci\u0105g zgody TCF v2.2: 213 bit\u00f3w nag\u0142\u00f3wka, cele jako pole bitowe, dostawcy jako zakresy - oraz kontrole zdradzaj\u0105ce stary albo b\u0142\u0119dny ci\u0105g.","breadcrumb":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/data-privacy-pl\/czytanie-ciagu-tc-co-stoi-w-213-bitach-naglowka\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lukaswojcik.com\/blog\/pl\/data-privacy-pl\/czytanie-ciagu-tc-co-stoi-w-213-bitach-naglowka\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/data-privacy-pl\/czytanie-ciagu-tc-co-stoi-w-213-bitach-naglowka\/#primaryimage","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-10312-czytanie-ciagu-tc-co-stoi-w-bitach-n-g.png","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-10312-czytanie-ciagu-tc-co-stoi-w-bitach-n-g.png","width":1200,"height":630,"caption":"Czytanie ci\u0105gu TC: co stoi w 213 bitach nag\u0142\u00f3wka"},{"@type":"BreadcrumbList","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/data-privacy-pl\/czytanie-ciagu-tc-co-stoi-w-213-bitach-naglowka\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.lukaswojcik.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Czytanie ci\u0105gu TC: co stoi w 213 bitach nag\u0142\u00f3wka"}]},{"@type":"WebSite","@id":"https:\/\/www.lukaswojcik.com\/blog\/#website","url":"https:\/\/www.lukaswojcik.com\/blog\/","name":"Lukas Wojcik - Blog","description":"","publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.lukaswojcik.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9","name":"Lukas Wojcik","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","width":424,"height":636,"caption":"Lukas Wojcik"},"logo":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg"},"sameAs":["https:\/\/www.lukaswojcik.com\/blog"]}]}},"_links":{"self":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/10312","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/comments?post=10312"}],"version-history":[{"count":3,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/10312\/revisions"}],"predecessor-version":[{"id":22390,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/10312\/revisions\/22390"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media\/13856"}],"wp:attachment":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media?parent=10312"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/categories?post=10312"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/tags?post=10312"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}