{"id":13112,"date":"2026-09-20T18:25:00","date_gmt":"2026-09-20T16:25:00","guid":{"rendered":"https:\/\/www.lukaswojcik.com\/blog\/?p=13112"},"modified":"2026-10-26T13:29:23","modified_gmt":"2026-10-26T12:29:23","slug":"tutorial-znajdowanie-danych-osobowych-w-sciezkach-stron-ga4-i-ich-usuwanie","status":"publish","type":"post","link":"https:\/\/www.lukaswojcik.com\/blog\/pl\/data-privacy-pl\/tutorials-pl-data-privacy-pl\/tutorial-znajdowanie-danych-osobowych-w-sciezkach-stron-ga4-i-ich-usuwanie\/","title":{"rendered":"Tutorial: Znajdowanie danych osobowych w \u015bcie\u017ckach stron GA4 i ich usuwanie"},"content":{"rendered":"<p>Adres e-mail w \u015bcie\u017cce URL, wyszukiwana fraza z numerem telefonu albo powi\u0105zany z osob\u0105 numer zam\u00f3wienia mog\u0105 trafi\u0107 do GA4 razem ze zdarzeniem. Takie ustalenie wymaga dw\u00f3ch oddzielnych dzia\u0142a\u0144: zatrzymania kolejnych transmisji oraz obs\u0142ugi zapisanych danych. Zmiana tagu nie oczyszcza historycznych raport\u00f3w.<\/p>\n<p>Poni\u017csza procedura zaczyna si\u0119 od inwentaryzacji, nast\u0119pnie ogranicza zbieranie danych i dopiero potem rozpatruje usuwanie. Pojedynczy raport ani wyra\u017cenie regularne nie dowodz\u0105 braku danych osobowych.<\/p>\n<figure class=\"lw-diagram\"><img src=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/diagrams\/dia-13112-review-20261024-v2.png\" width=\"1120\" height=\"580\" decoding=\"async\" loading=\"lazy\" alt=\"Dane osobowe w GA4: trzy osobne zadania\"><figcaption>Ustalenie \u017ar\u00f3de\u0142, zatrzymanie kolejnych transmisji i osobna obs\u0142uga zapisanych danych. Ka\u017cdy etap ma ograniczenia.<\/figcaption><\/figure>\n<h2>1. Ustalenie warto\u015bci i dr\u00f3g transmisji<\/h2>\n<p>Adresy e-mail i prywatne numery telefon\u00f3w to oczywiste przyk\u0142ady. Numer zam\u00f3wienia lub token resetowania has\u0142a r\u00f3wnie\u017c mo\u017ce wskazywa\u0107 osob\u0119 po po\u0142\u0105czeniu z dost\u0119pnymi dodatkowymi informacjami. Token jest ponadto sekretem. Nazwanie warto\u015bci pseudonimow\u0105 albo zastosowanie funkcji skr\u00f3tu nie usuwa automatycznie powi\u0105zania z osob\u0105. PII oznacza personally identifiable information, czyli informacje pozwalaj\u0105ce identyfikowa\u0107 osob\u0119. Zasady Google dotycz\u0105ce PII i prawne poj\u0119cie danych osobowych nie s\u0105 identyczne.<\/p>\n<p>Badanie obejmuje pe\u0142ne adresy stron, \u015bcie\u017cki, parametry zapytania, referrery, tytu\u0142y stron, wyszukiwane frazy i niestandardowe parametry zdarze\u0144. Domy\u015blne <code>page_location<\/code> w GA4 pomija fragment URL po <code>#<\/code>. JavaScript lub inna implementacja nadal mo\u017ce jawnie przes\u0142a\u0107 fragment. Fragment nie stanowi wi\u0119c bezpiecznego miejsca przechowywania sekret\u00f3w.<\/p>\n<p>Rejestr ustale\u0144 wymaga \u017ar\u00f3d\u0142a, parametru, okresu, miejsc docelowych i oczyszczonego przyk\u0142adu. Pe\u0142ne tokeny ani adresy nie powinny trafia\u0107 do zg\u0142osze\u0144, szeroko dost\u0119pnych arkuszy lub publicznych analizator\u00f3w. Ujawnione tokeny dost\u0119pu albo resetowania wymagaj\u0105 tak\u017ce uniewa\u017cnienia; p\u00f3\u017aniejsze usuni\u0119cie z raport\u00f3w nie wystarcza.<\/p>\n<h2>2. Celowe odpytywanie dost\u0119pnych raport\u00f3w<\/h2>\n<p>Data API udost\u0119pnia dane raportowe, a nie kompletny zbi\u00f3r surowych danych. <code>pageLocation<\/code> zawiera adres strony z hostem i zapytaniem, a <code>pagePathPlusQueryString<\/code> \u015bcie\u017ck\u0119 z zapytaniem. Samo <code>pagePath<\/code> pomija parametry zapytania. Oddzielne zapytania z <code>pageReferrer<\/code> i <code>searchTerm<\/code> obejmuj\u0105 inne mo\u017cliwe miejsca wyst\u0119powania danych. Wys\u0142anie niestandardowego parametru nie tworzy automatycznie wymiaru niestandardowego dost\u0119pnego w raportach.<\/p>\n<p>Przyk\u0142ad stanowi tre\u015b\u0107 JSON uwierzytelnionego \u017c\u0105dania POST do <code>https:\/\/analyticsdata.googleapis.com\/v1beta\/properties\/PROPERTY_ID:runReport<\/code>. Potrzebne s\u0105 numeryczny identyfikator us\u0142ugi, dost\u0119p do odczytu oraz odpowiedni zakres OAuth, na przyk\u0142ad <code>analytics.readonly<\/code>. Sta\u0142y okres jest przyk\u0142adowy i wymaga dopasowania do badanego incydentu.<\/p>\n<figure style=\"--cbb-digits:2\" class=\"cbb cbb--wrap cbb--numbers wp-block-code-beautifier-block-code\" data-lang=\"json\"><figcaption class=\"cbb-head\"><span class=\"cbb-lang\">JSON<\/span><span class=\"cbb-actions\"><button type=\"button\" class=\"cbb-button cbb-button--wrap\" data-cbb-action=\"wrap\" aria-pressed=\"true\" title=\"Wrap long lines\"><svg aria-hidden=\"true\" focusable=\"false\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"><path d=\"M2 4h12M2 8h9.5a2.5 2.5 0 0 1 0 5H8m0 0 1.5-1.5M8 13l1.5 1.5M2 12h3\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><span class=\"cbb-sr\">Wrap long lines<\/span><\/button><button type=\"button\" class=\"cbb-button cbb-button--copy\" data-cbb-action=\"copy\" data-cbb-done=\"Copied\" data-cbb-failed=\"Press Ctrl+C to copy\"><svg aria-hidden=\"true\" focusable=\"false\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"><rect x=\"5.5\" y=\"5.5\" width=\"8\" height=\"8.5\" rx=\"1.5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"\/><path d=\"M10.5 3.5V3A1.5 1.5 0 0 0 9 1.5H4A1.5 1.5 0 0 0 2.5 3v6.5A1.5 1.5 0 0 0 4 11h.5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"\/><\/svg><span class=\"cbb-button-label\" aria-live=\"polite\">Copy<\/span><\/button><\/span><\/figcaption><pre class=\"cbb-pre\" tabindex=\"0\"><code class=\"cbb-code language-json\" style=\"counter-reset:cbb-line 0;\"><span class=\"cbb-line\">{\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-attr\">\"dateRanges\"<\/span>: &#91;\n<\/span><span class=\"cbb-line\">    {\n<\/span><span class=\"cbb-line\">      <span class=\"cbb-attr\">\"startDate\"<\/span>: <span class=\"cbb-string\">\"2026-10-01\"<\/span>,\n<\/span><span class=\"cbb-line\">      <span class=\"cbb-attr\">\"endDate\"<\/span>: <span class=\"cbb-string\">\"2026-10-07\"<\/span>\n<\/span><span class=\"cbb-line\">    }\n<\/span><span class=\"cbb-line\">  &#93;,\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-attr\">\"dimensions\"<\/span>: &#91;\n<\/span><span class=\"cbb-line\">    {\n<\/span><span class=\"cbb-line\">      <span class=\"cbb-attr\">\"name\"<\/span>: <span class=\"cbb-string\">\"pageLocation\"<\/span>\n<\/span><span class=\"cbb-line\">    }\n<\/span><span class=\"cbb-line\">  &#93;,\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-attr\">\"metrics\"<\/span>: &#91;\n<\/span><span class=\"cbb-line\">    {\n<\/span><span class=\"cbb-line\">      <span class=\"cbb-attr\">\"name\"<\/span>: <span class=\"cbb-string\">\"eventCount\"<\/span>\n<\/span><span class=\"cbb-line\">    }\n<\/span><span class=\"cbb-line\">  &#93;,\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-attr\">\"orderBys\"<\/span>: &#91;\n<\/span><span class=\"cbb-line\">    {\n<\/span><span class=\"cbb-line\">      <span class=\"cbb-attr\">\"dimension\"<\/span>: {\n<\/span><span class=\"cbb-line\">        <span class=\"cbb-attr\">\"dimensionName\"<\/span>: <span class=\"cbb-string\">\"pageLocation\"<\/span>,\n<\/span><span class=\"cbb-line\">        <span class=\"cbb-attr\">\"orderType\"<\/span>: <span class=\"cbb-string\">\"ALPHANUMERIC\"<\/span>\n<\/span><span class=\"cbb-line\">      }\n<\/span><span class=\"cbb-line\">    }\n<\/span><span class=\"cbb-line\">  &#93;,\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-attr\">\"limit\"<\/span>: <span class=\"cbb-string\">\"10000\"<\/span>,\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-attr\">\"offset\"<\/span>: <span class=\"cbb-string\">\"0\"<\/span>,\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-attr\">\"returnPropertyQuota\"<\/span>: <span class=\"cbb-constant\">true<\/span>\n<\/span><span class=\"cbb-line\">}<\/span><\/code><\/pre><\/figure>\n<p><code>eventCount<\/code> liczy zdarzenia; ods\u0142ony nie by\u0142yby odpowiedni\u0105 metryk\u0105 dla osobnego zapytania o wyszukiwane frazy. Kolejne strony wynik\u00f3w powstaj\u0105 przez ustawienie <code>offset<\/code> na liczb\u0119 ju\u017c odczytanych wierszy a\u017c do osi\u0105gni\u0119cia zg\u0142oszonego <code>rowCount<\/code>. Sortowanie alfabetyczne i sta\u0142y okres u\u0142atwiaj\u0105 stronicowanie, ale sp\u00f3\u017anione dane nadal mog\u0105 zmieni\u0107 wyniki. API dopuszcza najwy\u017cej 250 000 wierszy na \u017c\u0105danie; limity wykorzystania nadal obowi\u0105zuj\u0105.<\/p>\n<p>Kontrola odpowiedzi obejmuje <code>dataLossFromOtherRow<\/code>, <code>samplingMetadatas<\/code>, <code>dataTruncationReasons<\/code> i <code>subjectToThresholding<\/code>. Ostatnia flaga oznacza stosowanie prog\u00f3w, niekoniecznie rzeczywiste pomini\u0119cie wierszy. Pobranie kolejnych stron nie odtwarza warto\u015bci po\u0142\u0105czonych w \u201e(other)\u201d, uci\u0119tych danych ani niedost\u0119pnej historii. Nawet brak ostrze\u017ce\u0144 w metadanych nie stanowi pe\u0142nego dowodu zgodno\u015bci przetwarzania.<\/p>\n<h2>3. Wykrywanie wskaz\u00f3wek i ocena kontekstu<\/h2>\n<p>Kodowanie procentowe zapisuje znaki URL jako kody; na przyk\u0142ad %40 oznacza @. Dekodowanie zamienia te kody z powrotem na znaki. Przyk\u0142ad w Pythonie sprawdza tekst pierwotny i maksymalnie dwie dodatkowe rundy dekodowania procentowego. Analiza zapytania uwzgl\u0119dnia powt\u00f3rzone i puste parametry oraz zakodowane nazwy kluczy. Sprawdzenie fragmentu opisuje wy\u0142\u0105cznie tekst wej\u015bciowy, bez potwierdzenia rzeczywistego przes\u0142ania do GA4.<\/p>\n<figure style=\"--cbb-digits:2\" class=\"cbb cbb--wrap cbb--numbers wp-block-code-beautifier-block-code\" data-lang=\"python\"><figcaption class=\"cbb-head\"><span class=\"cbb-lang\">Python<\/span><span class=\"cbb-actions\"><button type=\"button\" class=\"cbb-button cbb-button--wrap\" data-cbb-action=\"wrap\" aria-pressed=\"true\" title=\"Wrap long lines\"><svg aria-hidden=\"true\" focusable=\"false\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"><path d=\"M2 4h12M2 8h9.5a2.5 2.5 0 0 1 0 5H8m0 0 1.5-1.5M8 13l1.5 1.5M2 12h3\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><span class=\"cbb-sr\">Wrap long lines<\/span><\/button><button type=\"button\" class=\"cbb-button cbb-button--copy\" data-cbb-action=\"copy\" data-cbb-done=\"Copied\" data-cbb-failed=\"Press Ctrl+C to copy\"><svg aria-hidden=\"true\" focusable=\"false\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"><rect x=\"5.5\" y=\"5.5\" width=\"8\" height=\"8.5\" rx=\"1.5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"\/><path d=\"M10.5 3.5V3A1.5 1.5 0 0 0 9 1.5H4A1.5 1.5 0 0 0 2.5 3v6.5A1.5 1.5 0 0 0 4 11h.5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"\/><\/svg><span class=\"cbb-button-label\" aria-live=\"polite\">Copy<\/span><\/button><\/span><\/figcaption><pre class=\"cbb-pre\" tabindex=\"0\"><code class=\"cbb-code language-python\" style=\"counter-reset:cbb-line 0;\"><span class=\"cbb-line\"><span class=\"cbb-keyword\">import<\/span> re\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">from<\/span> urllib.parse <span class=\"cbb-keyword\">import<\/span> parse_qsl, unquote, urlsplit\n<\/span><span class=\"cbb-line\">\n<\/span><span class=\"cbb-line\">EMAIL = re.<span class=\"cbb-function\">compile<\/span>(<span class=\"cbb-string\">r\"&#91;A-Z0-9.!#$%&amp;'*+\/=?^_`{|}~-&#93;+@&#91;A-Z0-9-&#93;+(?:\\.&#91;A-Z0-9-&#93;+)+\"<\/span>, re.I)\n<\/span><span class=\"cbb-line\">FIELDS = {\n<\/span><span class=\"cbb-line\">    <span class=\"cbb-string\">\"secret_field\"<\/span>: {<span class=\"cbb-string\">\"token\"<\/span>, <span class=\"cbb-string\">\"hash\"<\/span>, <span class=\"cbb-string\">\"auth\"<\/span>, <span class=\"cbb-string\">\"key\"<\/span>, <span class=\"cbb-string\">\"sig\"<\/span>, <span class=\"cbb-string\">\"pwd\"<\/span>, <span class=\"cbb-string\">\"password\"<\/span>},\n<\/span><span class=\"cbb-line\">    <span class=\"cbb-string\">\"name_field\"<\/span>: {<span class=\"cbb-string\">\"name\"<\/span>, <span class=\"cbb-string\">\"vorname\"<\/span>, <span class=\"cbb-string\">\"nachname\"<\/span>, <span class=\"cbb-string\">\"firstname\"<\/span>, <span class=\"cbb-string\">\"lastname\"<\/span>, <span class=\"cbb-string\">\"user\"<\/span>},\n<\/span><span class=\"cbb-line\">    <span class=\"cbb-string\">\"phone_field\"<\/span>: {<span class=\"cbb-string\">\"phone\"<\/span>, <span class=\"cbb-string\">\"tel\"<\/span>, <span class=\"cbb-string\">\"mobile\"<\/span>, <span class=\"cbb-string\">\"telephone\"<\/span>},\n<\/span><span class=\"cbb-line\">    <span class=\"cbb-string\">\"search_field\"<\/span>: {<span class=\"cbb-string\">\"q\"<\/span>, <span class=\"cbb-string\">\"s\"<\/span>, <span class=\"cbb-string\">\"search\"<\/span>, <span class=\"cbb-string\">\"query\"<\/span>},\n<\/span><span class=\"cbb-line\">}\n<\/span><span class=\"cbb-line\">\n<\/span><span class=\"cbb-line\">\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">def<\/span> <span class=\"cbb-function\">scan_url<\/span>(text):\n<\/span><span class=\"cbb-line\">    <span class=\"cbb-keyword\">if<\/span> <span class=\"cbb-keyword\">not<\/span> <span class=\"cbb-function\">isinstance<\/span>(text, str):\n<\/span><span class=\"cbb-line\">        <span class=\"cbb-keyword\">raise<\/span> <span class=\"cbb-function\">TypeError<\/span>(<span class=\"cbb-string\">\"text must be a string\"<\/span>)\n<\/span><span class=\"cbb-line\">    <span class=\"cbb-keyword\">if<\/span> <span class=\"cbb-function\">len<\/span>(text) &gt; <span class=\"cbb-number\">16384<\/span>:\n<\/span><span class=\"cbb-line\">        <span class=\"cbb-keyword\">return<\/span> {<span class=\"cbb-string\">\"input_too_long\"<\/span>}\n<\/span><span class=\"cbb-line\">    flags = <span class=\"cbb-function\">set<\/span>()\n<\/span><span class=\"cbb-line\">    <span class=\"cbb-keyword\">if<\/span> re.<span class=\"cbb-function\">search<\/span>(<span class=\"cbb-string\">r\"%(?!&#91;0-9a-fA-F&#93;{2})\"<\/span>, text):\n<\/span><span class=\"cbb-line\">        flags.<span class=\"cbb-function\">add<\/span>(<span class=\"cbb-string\">\"invalid_percent_encoding\"<\/span>)\n<\/span><span class=\"cbb-line\">    forms = &#91;text&#93;\n<\/span><span class=\"cbb-line\">    <span class=\"cbb-keyword\">for<\/span> _ <span class=\"cbb-keyword\">in<\/span> <span class=\"cbb-function\">range<\/span>(<span class=\"cbb-number\">2<\/span>):\n<\/span><span class=\"cbb-line\">        decoded = <span class=\"cbb-function\">unquote<\/span>(forms&#91;<span class=\"cbb-number\">-1<\/span>&#93;)\n<\/span><span class=\"cbb-line\">        <span class=\"cbb-keyword\">if<\/span> decoded == forms&#91;<span class=\"cbb-number\">-1<\/span>&#93;:\n<\/span><span class=\"cbb-line\">            <span class=\"cbb-keyword\">break<\/span>\n<\/span><span class=\"cbb-line\">        forms.<span class=\"cbb-function\">append<\/span>(decoded)\n<\/span><span class=\"cbb-line\">    <span class=\"cbb-keyword\">if<\/span> <span class=\"cbb-function\">unquote<\/span>(forms&#91;<span class=\"cbb-number\">-1<\/span>&#93;) != forms&#91;<span class=\"cbb-number\">-1<\/span>&#93;:\n<\/span><span class=\"cbb-line\">        flags.<span class=\"cbb-function\">add<\/span>(<span class=\"cbb-string\">\"further_encoding\"<\/span>)\n<\/span><span class=\"cbb-line\">    <span class=\"cbb-keyword\">for<\/span> form <span class=\"cbb-keyword\">in<\/span> forms:\n<\/span><span class=\"cbb-line\">        <span class=\"cbb-keyword\">if<\/span> EMAIL.<span class=\"cbb-function\">search<\/span>(form):\n<\/span><span class=\"cbb-line\">            flags.<span class=\"cbb-function\">add<\/span>(<span class=\"cbb-string\">\"email_like\"<\/span>)\n<\/span><span class=\"cbb-line\">        <span class=\"cbb-keyword\">try<\/span>:\n<\/span><span class=\"cbb-line\">            parts = <span class=\"cbb-function\">urlsplit<\/span>(form)\n<\/span><span class=\"cbb-line\">            <span class=\"cbb-keyword\">if<\/span> parts.username <span class=\"cbb-keyword\">is<\/span> <span class=\"cbb-keyword\">not<\/span> <span class=\"cbb-constant\">None<\/span> <span class=\"cbb-keyword\">or<\/span> parts.password <span class=\"cbb-keyword\">is<\/span> <span class=\"cbb-keyword\">not<\/span> <span class=\"cbb-constant\">None<\/span>:\n<\/span><span class=\"cbb-line\">                flags.<span class=\"cbb-function\">add<\/span>(<span class=\"cbb-string\">\"url_credentials\"<\/span>)\n<\/span><span class=\"cbb-line\">            <span class=\"cbb-comment\"># Fragment query syntax is inspected too, without claiming collection.<\/span>\n<\/span><span class=\"cbb-line\">            queries = &#91;parts.query, parts.fragment.<span class=\"cbb-function\">partition<\/span>(<span class=\"cbb-string\">\"?\"<\/span>)&#91;<span class=\"cbb-number\">2<\/span>&#93; <span class=\"cbb-keyword\">or<\/span> parts.fragment&#93;\n<\/span><span class=\"cbb-line\">            <span class=\"cbb-keyword\">for<\/span> query <span class=\"cbb-keyword\">in<\/span> queries:\n<\/span><span class=\"cbb-line\">                <span class=\"cbb-keyword\">for<\/span> key, value <span class=\"cbb-keyword\">in<\/span> <span class=\"cbb-function\">parse_qsl<\/span>(query, keep_blank_values=<span class=\"cbb-constant\">True<\/span>, max_num_fields=<span class=\"cbb-number\">1000<\/span>):\n<\/span><span class=\"cbb-line\">                    <span class=\"cbb-keyword\">for<\/span> label, names <span class=\"cbb-keyword\">in<\/span> FIELDS.<span class=\"cbb-function\">items<\/span>():\n<\/span><span class=\"cbb-line\">                        <span class=\"cbb-keyword\">if<\/span> key.<span class=\"cbb-function\">casefold<\/span>() <span class=\"cbb-keyword\">in<\/span> names:\n<\/span><span class=\"cbb-line\">                            flags.<span class=\"cbb-function\">add<\/span>(label)\n<\/span><span class=\"cbb-line\">                    <span class=\"cbb-keyword\">if<\/span> EMAIL.<span class=\"cbb-function\">search<\/span>(value):\n<\/span><span class=\"cbb-line\">                        flags.<span class=\"cbb-function\">add<\/span>(<span class=\"cbb-string\">\"email_like\"<\/span>)\n<\/span><span class=\"cbb-line\">        <span class=\"cbb-keyword\">except<\/span> ValueError:\n<\/span><span class=\"cbb-line\">            flags.<span class=\"cbb-function\">add<\/span>(<span class=\"cbb-string\">\"url_parse_error\"<\/span>)\n<\/span><span class=\"cbb-line\">    <span class=\"cbb-keyword\">return<\/span> flags<\/span><\/code><\/pre><\/figure>\n<p>Funkcja zwraca kategorie zamiast surowych warto\u015bci. <code>email_like<\/code> oznacza wzorzec podobny do adresu e-mail, a <code>secret_field<\/code> podejrzan\u0105 nazw\u0119 klucza. <code>phone_field<\/code> nie potwierdza poprawnego numeru telefonu ani zwi\u0105zku z osob\u0105. Wyszukiwanie produktu lub <code>name=product<\/code> r\u00f3wnie\u017c mo\u017ce wywo\u0142a\u0107 wskaz\u00f3wk\u0119 do sprawdzenia. Liczba <code>20260920<\/code> nie jest automatycznie klasyfikowana jako numer telefonu.<\/p>\n<p>Ograniczenia obejmuj\u0105 nieznane nazwy parametr\u00f3w, numery identyfikuj\u0105ce osoby w \u015bcie\u017ckach, szczeg\u00f3lne przypadki Unicode, g\u0142\u0119bsze kodowanie i zaszyfrowan\u0105 tre\u015b\u0107. Odkodowane separatory mog\u0105 powodowa\u0107 dodatkowe fa\u0142szywe alarmy. <code>input_too_long<\/code>, <code>url_parse_error<\/code> i <code>further_encoding<\/code> wymagaj\u0105 osobnego badania. Pusty wynik oznacza wy\u0142\u0105cznie brak rozpoznania przez te ograniczone regu\u0142y. Pr\u00f3bki pomagaj\u0105 oceni\u0107 kontekst, ale nie zast\u0119puj\u0105 kontroli wszystkich istotnych \u017ar\u00f3de\u0142.<\/p>\n<h2>4. Zatrzymanie kolejnych transmisji u \u017ar\u00f3d\u0142a<\/h2>\n<p>URL bez wra\u017cliwych warto\u015bci chroni szerzej ni\u017c p\u00f3\u017aniejsze poprawienie pola analitycznego. Gdy formularz wymaga danych osobowych, POST zapobiega typowemu umieszczeniu p\u00f3l formularza w zapytaniu URL. POST nie wyklucza jednak \u015bledzenia formularza, logowania tre\u015bci \u017c\u0105dania, problematycznych przekierowa\u0144 ani p\u00f3\u017aniejszego adresu z tymi samymi warto\u015bciami.<\/p>\n<p>Odpowiednia implementacja zbiera dozwolone pola o okre\u015blonym celu i oczyszcza adres strony, referrer, tytu\u0142 oraz swobodny tekst przed wys\u0142aniem. Tagowanie po stronie serwera mo\u017ce doda\u0107 kontrol\u0119 przed przekazaniem danych dalej. \u017b\u0105dania przegl\u0105darki ju\u017c wys\u0142ane do innych odbiorc\u00f3w oraz bezpo\u015brednie drogi omijaj\u0105ce kontener serwerowy pozostaj\u0105 poza tak\u0105 kontrol\u0105.<\/p>\n<p>Pomijanie danych strumienia WWW w GA4 stanowi dodatkow\u0105 warstw\u0119. Rozpoznawanie e-maili dzia\u0142a na zasadzie najlepszej mo\u017cliwej pr\u00f3by; warto\u015bci wskazanych kluczy zapytania s\u0105 zast\u0119powane znacznikiem w udokumentowanych parametrach URL, mi\u0119dzy innymi <code>page_location<\/code> i <code>page_referrer<\/code>. Przetwarzanie odbywa si\u0119 po stronie klienta. Funkcja nie obejmuje Measurement Protocol, importu danych ani nag\u0142\u00f3wk\u00f3w HTTP. Ustawienie nie oczyszcza warto\u015bci historycznych.<\/p>\n<p>Kontrolowane testy wykorzystuj\u0105 wy\u0142\u0105cznie fikcyjne warto\u015bci, na przyk\u0142ad <code>test@example.invalid<\/code>. Rozstrzygaj\u0105ce jest wychodz\u0105ce \u017c\u0105danie po zastosowaniu wszystkich regu\u0142 tag\u00f3w: pierwsze otwarcie, nawigacja, wyszukiwanie wewn\u0119trzne, zako\u0144czenie formularza i ka\u017cda droga transmisji. Poprawny podgl\u0105d nie dowodzi jeszcze poprawnego przesy\u0142ania w dzia\u0142aj\u0105cej witrynie.<\/p>\n<h2>5. Historia GA4: rodzaje usuwania i wyj\u0105tki<\/h2>\n<p>Administracja udost\u0119pnia pro\u015bby o usuni\u0119cie danych dla obs\u0142ugiwanych parametr\u00f3w i okres\u00f3w. Daty odpowiadaj\u0105 strefie czasowej us\u0142ugi. Dla parametr\u00f3w zbieranych automatycznie dokumentacja wymaga szerokiego typu \u201eUsu\u0144 wszystkie parametry ze wszystkich zdarze\u0144\u201d; pozornie precyzyjny wyb\u00f3r samego <code>page_location<\/code> nie stanowi og\u00f3lnego zamiennika. Dodatkowa rejestracja wymiaru niestandardowego nie omija ograniczenia.<\/p>\n<p><strong>Istotna granica:<\/strong> Google wymienia <code>search_term<\/code> wprost na li\u015bcie parametr\u00f3w, kt\u00f3rych ten mechanizm nie usuwa. Obowi\u0105zuj\u0105 r\u00f3wnie\u017c inne udokumentowane wyj\u0105tki. Incydent z wyszukiwanymi frazami nie jest rozwi\u0105zany tylko dlatego, \u017ce zako\u0144czy\u0142a si\u0119 pro\u015bba dotycz\u0105ca innych parametr\u00f3w. Konkretny przypadek wymaga odpowiedniego dodatkowego rozwi\u0105zania, w razie potrzeby z udzia\u0142em pomocy Google.<\/p>\n<p>Mechanizm dotyczy warto\u015bci tekstowych, a nie liczbowych warto\u015bci parametr\u00f3w, i zachowuje liczb\u0119 zdarze\u0144. Obs\u0142ugiwane warto\u015bci otrzymuj\u0105 oznaczenie usuni\u0119cia; szeroki typ mo\u017ce obj\u0105\u0107 tak\u017ce nazw\u0119 zdarzenia. Usuwanie powi\u0105zane z User-ID ma osobn\u0105 \u015bcie\u017ck\u0119. Usuni\u0119cie parametr\u00f3w nie oznacza zatem usuni\u0119cia ca\u0142ych zdarze\u0144 ani wszystkich danych osobowych obj\u0119tych danym przypadkiem.<\/p>\n<p>Pro\u015bb\u0119 mo\u017cna anulowa\u0107 przez siedem dni. Ca\u0142e przetwarzanie mo\u017ce trwa\u0107 od siedmiu do 63 dni, a dane musz\u0105 by\u0107 starsze ni\u017c dwana\u015bcie dni. Opcjonalny filtr zawierania por\u00f3wnuje tekst bez rozr\u00f3\u017cniania wielko\u015bci liter. Podgl\u0105d i tymczasowe wy\u0142\u0105czenie z raport\u00f3w nie potwierdzaj\u0105 zako\u0144czenia usuwania. Zakres, status oraz skutki dla raport\u00f3w wymagaj\u0105 dokumentacji.<\/p>\n<h2>6. Osobna obs\u0142uga BigQuery i pozosta\u0142ych kopii<\/h2>\n<p>Pro\u015bba o usuni\u0119cie danych z GA4 nie zast\u0119puje oczyszczenia wcze\u015bniejszych eksport\u00f3w. Poni\u017csza inwentaryzacja liczy wyst\u0105pienia parametr\u00f3w i typy warto\u015bci w jednej konkretnej tabeli bez ujawniania warto\u015bci. Projekt, zbi\u00f3r danych, data i klucze wymagaj\u0105 dopasowania do rzeczywistych ustale\u0144.<\/p>\n<figure style=\"--cbb-digits:2\" class=\"cbb cbb--wrap cbb--numbers wp-block-code-beautifier-block-code\" data-lang=\"sql\"><figcaption class=\"cbb-head\"><span class=\"cbb-lang\">SQL<\/span><span class=\"cbb-actions\"><button type=\"button\" class=\"cbb-button cbb-button--wrap\" data-cbb-action=\"wrap\" aria-pressed=\"true\" title=\"Wrap long lines\"><svg aria-hidden=\"true\" focusable=\"false\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"><path d=\"M2 4h12M2 8h9.5a2.5 2.5 0 0 1 0 5H8m0 0 1.5-1.5M8 13l1.5 1.5M2 12h3\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><span class=\"cbb-sr\">Wrap long lines<\/span><\/button><button type=\"button\" class=\"cbb-button cbb-button--copy\" data-cbb-action=\"copy\" data-cbb-done=\"Copied\" data-cbb-failed=\"Press Ctrl+C to copy\"><svg aria-hidden=\"true\" focusable=\"false\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"><rect x=\"5.5\" y=\"5.5\" width=\"8\" height=\"8.5\" rx=\"1.5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"\/><path d=\"M10.5 3.5V3A1.5 1.5 0 0 0 9 1.5H4A1.5 1.5 0 0 0 2.5 3v6.5A1.5 1.5 0 0 0 4 11h.5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"\/><\/svg><span class=\"cbb-button-label\" aria-live=\"polite\">Copy<\/span><\/button><\/span><\/figcaption><pre class=\"cbb-pre\" tabindex=\"0\"><code class=\"cbb-code language-sql\" style=\"counter-reset:cbb-line 0;\"><span class=\"cbb-line\"><span class=\"cbb-comment\">-- Review one closed daily table; no modification is performed.<\/span>\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">DECLARE<\/span> target_keys <span class=\"cbb-keyword\">ARRAY<\/span>&lt;<span class=\"cbb-type\">STRING<\/span>&gt; <span class=\"cbb-keyword\">DEFAULT<\/span>\n<\/span><span class=\"cbb-line\">  &#91;<span class=\"cbb-string\">'page_location'<\/span>, <span class=\"cbb-string\">'page_referrer'<\/span>, <span class=\"cbb-string\">'search_term'<\/span>&#93;;\n<\/span><span class=\"cbb-line\">\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">SELECT<\/span>\n<\/span><span class=\"cbb-line\">  p.<span class=\"cbb-keyword\">key<\/span>,\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-function\">COUNT<\/span>(*) <span class=\"cbb-keyword\">AS<\/span> parameter_occurrences,\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-function\">COUNTIF<\/span>(p.value.string_value <span class=\"cbb-keyword\">IS<\/span> <span class=\"cbb-keyword\">NOT<\/span> <span class=\"cbb-constant\">NULL<\/span>) <span class=\"cbb-keyword\">AS<\/span> text_values,\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-function\">COUNTIF<\/span>(p.value.int_value <span class=\"cbb-keyword\">IS<\/span> <span class=\"cbb-keyword\">NOT<\/span> <span class=\"cbb-constant\">NULL<\/span>\n<\/span><span class=\"cbb-line\">       <span class=\"cbb-keyword\">OR<\/span> p.value.float_value <span class=\"cbb-keyword\">IS<\/span> <span class=\"cbb-keyword\">NOT<\/span> <span class=\"cbb-constant\">NULL<\/span>\n<\/span><span class=\"cbb-line\">       <span class=\"cbb-keyword\">OR<\/span> p.value.double_value <span class=\"cbb-keyword\">IS<\/span> <span class=\"cbb-keyword\">NOT<\/span> <span class=\"cbb-constant\">NULL<\/span>) <span class=\"cbb-keyword\">AS<\/span> numeric_values\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">FROM<\/span> <span class=\"cbb-variable\">`project_id.analytics_123456789.events_20261001`<\/span>,\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">UNNEST<\/span>(event_params) <span class=\"cbb-keyword\">AS<\/span> p\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">WHERE<\/span> p.<span class=\"cbb-keyword\">key<\/span> <span class=\"cbb-keyword\">IN<\/span> <span class=\"cbb-keyword\">UNNEST<\/span>(target_keys)\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">GROUP<\/span> <span class=\"cbb-keyword\">BY<\/span> p.<span class=\"cbb-keyword\">key<\/span>\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">ORDER<\/span> <span class=\"cbb-keyword\">BY<\/span> p.<span class=\"cbb-keyword\">key<\/span>;<\/span><\/code><\/pre><\/figure>\n<p>Je\u017celi pe\u0142ne usuni\u0119cie tych trzech parametr\u00f3w jest uzasadnione, nast\u0119pny przyk\u0142ad przedstawia ograniczony spos\u00f3b wykonania. Przy <code>apply_change = FALSE<\/code> wykonywane jest tylko zliczenie obj\u0119tych zdarze\u0144. Prze\u0142\u0105czenie na <code>TRUE<\/code> usuwa wszystkie wpisy wybranych kluczy z tej tabeli, r\u00f3wnie\u017c nieszkodliwe warto\u015bci. To destrukcyjna zmiana bie\u017c\u0105cej tabeli, a nie precyzyjne maskowanie poszczeg\u00f3lnych adres\u00f3w e-mail.<\/p>\n<figure style=\"--cbb-digits:2\" class=\"cbb cbb--wrap cbb--numbers wp-block-code-beautifier-block-code\" data-lang=\"sql\"><figcaption class=\"cbb-head\"><span class=\"cbb-lang\">SQL<\/span><span class=\"cbb-actions\"><button type=\"button\" class=\"cbb-button cbb-button--wrap\" data-cbb-action=\"wrap\" aria-pressed=\"true\" title=\"Wrap long lines\"><svg aria-hidden=\"true\" focusable=\"false\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"><path d=\"M2 4h12M2 8h9.5a2.5 2.5 0 0 1 0 5H8m0 0 1.5-1.5M8 13l1.5 1.5M2 12h3\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><span class=\"cbb-sr\">Wrap long lines<\/span><\/button><button type=\"button\" class=\"cbb-button cbb-button--copy\" data-cbb-action=\"copy\" data-cbb-done=\"Copied\" data-cbb-failed=\"Press Ctrl+C to copy\"><svg aria-hidden=\"true\" focusable=\"false\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"><rect x=\"5.5\" y=\"5.5\" width=\"8\" height=\"8.5\" rx=\"1.5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"\/><path d=\"M10.5 3.5V3A1.5 1.5 0 0 0 9 1.5H4A1.5 1.5 0 0 0 2.5 3v6.5A1.5 1.5 0 0 0 4 11h.5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"\/><\/svg><span class=\"cbb-button-label\" aria-live=\"polite\">Copy<\/span><\/button><\/span><\/figcaption><pre class=\"cbb-pre\" tabindex=\"0\"><code class=\"cbb-code language-sql\" style=\"counter-reset:cbb-line 0;\"><span class=\"cbb-line\"><span class=\"cbb-comment\">-- Example for a confirmed full removal of selected parameter values.<\/span>\n<\/span><span class=\"cbb-line\"><span class=\"cbb-comment\">-- Project, dataset, table and key list require case-specific review.<\/span>\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">DECLARE<\/span> apply_change <span class=\"cbb-type\">BOOL<\/span> <span class=\"cbb-keyword\">DEFAULT<\/span> <span class=\"cbb-constant\">FALSE<\/span>;\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">DECLARE<\/span> target_keys <span class=\"cbb-keyword\">ARRAY<\/span>&lt;<span class=\"cbb-type\">STRING<\/span>&gt; <span class=\"cbb-keyword\">DEFAULT<\/span>\n<\/span><span class=\"cbb-line\">  &#91;<span class=\"cbb-string\">'page_location'<\/span>, <span class=\"cbb-string\">'page_referrer'<\/span>, <span class=\"cbb-string\">'search_term'<\/span>&#93;;\n<\/span><span class=\"cbb-line\">\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">SELECT<\/span> <span class=\"cbb-function\">COUNT<\/span>(*) <span class=\"cbb-keyword\">AS<\/span> affected_events\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">FROM<\/span> <span class=\"cbb-variable\">`project_id.analytics_123456789.events_20261001`<\/span>\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">WHERE<\/span> <span class=\"cbb-keyword\">EXISTS<\/span> (\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-keyword\">SELECT<\/span> <span class=\"cbb-number\">1<\/span> <span class=\"cbb-keyword\">FROM<\/span> <span class=\"cbb-keyword\">UNNEST<\/span>(event_params) <span class=\"cbb-keyword\">AS<\/span> p\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-keyword\">WHERE<\/span> p.<span class=\"cbb-keyword\">key<\/span> <span class=\"cbb-keyword\">IN<\/span> <span class=\"cbb-keyword\">UNNEST<\/span>(target_keys)\n<\/span><span class=\"cbb-line\">);\n<\/span><span class=\"cbb-line\">\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">IF<\/span> apply_change <span class=\"cbb-keyword\">THEN<\/span>\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-keyword\">UPDATE<\/span> <span class=\"cbb-variable\">`project_id.analytics_123456789.events_20261001`<\/span>\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-keyword\">SET<\/span> event_params = <span class=\"cbb-keyword\">ARRAY<\/span>(\n<\/span><span class=\"cbb-line\">    <span class=\"cbb-keyword\">SELECT<\/span> <span class=\"cbb-keyword\">AS<\/span> <span class=\"cbb-keyword\">STRUCT<\/span> p.*\n<\/span><span class=\"cbb-line\">    <span class=\"cbb-keyword\">FROM<\/span> <span class=\"cbb-keyword\">UNNEST<\/span>(event_params) <span class=\"cbb-keyword\">AS<\/span> p <span class=\"cbb-keyword\">WITH<\/span> <span class=\"cbb-keyword\">OFFSET<\/span> <span class=\"cbb-keyword\">AS<\/span> position\n<\/span><span class=\"cbb-line\">    <span class=\"cbb-keyword\">WHERE<\/span> p.<span class=\"cbb-keyword\">key<\/span> <span class=\"cbb-keyword\">IS<\/span> <span class=\"cbb-constant\">NULL<\/span> <span class=\"cbb-keyword\">OR<\/span> p.<span class=\"cbb-keyword\">key<\/span> <span class=\"cbb-keyword\">NOT<\/span> <span class=\"cbb-keyword\">IN<\/span> <span class=\"cbb-keyword\">UNNEST<\/span>(target_keys)\n<\/span><span class=\"cbb-line\">    <span class=\"cbb-keyword\">ORDER<\/span> <span class=\"cbb-keyword\">BY<\/span> position\n<\/span><span class=\"cbb-line\">  )\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-keyword\">WHERE<\/span> <span class=\"cbb-keyword\">EXISTS<\/span> (\n<\/span><span class=\"cbb-line\">    <span class=\"cbb-keyword\">SELECT<\/span> <span class=\"cbb-number\">1<\/span> <span class=\"cbb-keyword\">FROM<\/span> <span class=\"cbb-keyword\">UNNEST<\/span>(event_params) <span class=\"cbb-keyword\">AS<\/span> p\n<\/span><span class=\"cbb-line\">    <span class=\"cbb-keyword\">WHERE<\/span> p.<span class=\"cbb-keyword\">key<\/span> <span class=\"cbb-keyword\">IN<\/span> <span class=\"cbb-keyword\">UNNEST<\/span>(target_keys)\n<\/span><span class=\"cbb-line\">  );\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">END<\/span> <span class=\"cbb-keyword\">IF<\/span>;<\/span><\/code><\/pre><\/figure>\n<p>Pozosta\u0142e parametry, tak\u017ce ewentualne klucze NULL, zachowuj\u0105 warto\u015bci i kolejno\u015b\u0107. Lista kluczy docelowych nie mo\u017ce zawiera\u0107 NULL. Inne tabele, <code>user_properties<\/code>, identyfikatory u\u017cytkownik\u00f3w, pozosta\u0142e pola zdarze\u0144 i dalsze eksporty pozostaj\u0105 bez zmian. Przed zmian\u0105 odizolowana tabela testowa powinna potwierdzi\u0107 cel, uprawnienia, oczekiwan\u0105 liczb\u0119 oraz skutki; po zmianie nast\u0119puje ponowna inwentaryzacja. Aktywne lub sp\u00f3\u017anione eksporty mog\u0105 ponownie dopisa\u0107 dane i wymagaj\u0105 osobnej kontroli.<\/p>\n<p>BigQuery zachowuje wcze\u015bniejsze wersje przez Time Travel: domy\u015blnie siedem dni, z mo\u017cliwo\u015bci\u0105 ustawienia od dw\u00f3ch do siedmiu dni. Nast\u0119pnie obowi\u0105zuje siedmiodniowy okres fail-safe. Bezpo\u015brednie odpytywanie tych danych nie jest dost\u0119pne; odtworzenie wymaga udokumentowanej procedury wsparcia. Migawki, kopie, pobrane pliki i inne systemy maj\u0105 oddzielne cykle \u017cycia. Pusty wynik bie\u017c\u0105cego zapytania nie dowodzi natychmiastowego fizycznego usuni\u0119cia wszystkich kopii.<\/p>\n<h2>7. Por\u00f3wnanie \u017c\u0105da\u0144 Collect bez ponownego wysy\u0142ania<\/h2>\n<p><a href=\"https:\/\/www.lukaswojcik.com\/blog\/pl\/narzedzia\/ga4-parameter-analyser\/\">GA4 Parameter Analyser<\/a> rozdziela pe\u0142ne adresy Collect lub wiersze \u017c\u0105da\u0144 zakodowane jak zapytanie URL. Wsp\u00f3lne parametry adresu POST mo\u017cna umie\u015bci\u0107 w osobnym polu. Kilka wierszy umo\u017cliwia por\u00f3wnanie nazw zdarze\u0144, identyfikator\u00f3w pomiaru, powt\u00f3rzonych kluczy oraz brakuj\u0105cych i pustych warto\u015bci.<\/p>\n<p>Funkcja analizy wykonuje jedno dekodowanie procentowe, zast\u0119puje plusy zgodnie z kodowaniem formularzy i wy\u015bwietla wyniki jako tekst. Funkcja nie wysy\u0142a ponownie wklejonych \u017c\u0105da\u0144. JSON Measurement Protocol jest innym formatem; z\u0142o\u017cone warto\u015bci produkt\u00f3w s\u0105 rozdzielane tylko heurystycznie. Eksport CSV nie stanowi anonimizacji. Do badania nadal odpowiednie s\u0105 przyk\u0142ady oczyszczone lub ca\u0142kowicie fikcyjne; widok parametr\u00f3w nie potwierdza odbioru przez GA4 ani pe\u0142nej kontroli PII.<\/p>\n<div class=\"lw-faq\">\n<h2>Pytania i odpowiedzi<\/h2>\n<h3>Czy wystarcza usuni\u0119cie jednego parametru zapytania?<\/h3>\n<p>Wy\u0142\u0105cznie dla tego konkretnego miejsca. \u015acie\u017cki, referrery, tytu\u0142y, wyszukiwanie, inne parametry i dalsze drogi transmisji mog\u0105 zawiera\u0107 t\u0119 sam\u0105 warto\u015b\u0107. Zmiana dotyczy ponadto tylko przysz\u0142ych transmisji.<\/p>\n<h3>Czy Referrer-Policy zapobiega ka\u017cdemu ujawnieniu?<\/h3>\n<p>Przy <code>strict-origin-when-cross-origin<\/code> \u017c\u0105dania w tej samej origin nadal mog\u0105 zawiera\u0107 URL jako referrer. Przy zmianie origin zwykle przekazywana jest tylko origin, a przy przej\u015bciu z HTTPS na HTTP referrer jest pomijany. Origin oznacza protok\u00f3\u0142, host i port, a nie po prostu t\u0119 sam\u0105 witryn\u0119. Inne polityki i jawnie ustawiane parametry analityczne wymagaj\u0105 osobnej kontroli.<\/p>\n<h3>Czy zamaskowany adres jest automatycznie anonimowy?<\/h3>\n<p>Maskowanie mo\u017ce ograniczy\u0107 ilo\u015b\u0107 informacji. Pozosta\u0142e identyfikatory, dodatkowe informacje i kontekst przetwarzania nadal okre\u015blaj\u0105 mo\u017cliwo\u015b\u0107 identyfikacji. Zast\u0105pienie warto\u015bci zapytania nie dowodzi og\u00f3lnej anonimowo\u015bci.<\/p>\n<h3>Kiedy techniczna obs\u0142uga incydentu jest zako\u0144czona?<\/h3>\n<p>Po ustaleniu \u017ar\u00f3de\u0142, kontroli przysz\u0142ych transmisji, zako\u0144czeniu dost\u0119pnych sposob\u00f3w usuwania oraz udokumentowaniu pozosta\u0142ych kopii i ogranicze\u0144 technicznych. Brak dopasowa\u0144 wyra\u017cenia regularnego albo jeden oczyszczony raport nie wystarczaj\u0105 do potwierdzenia tych warunk\u00f3w.<\/p>\n<\/div>\n<h2>\u0179r\u00f3d\u0142a i dokumentacja techniczna<\/h2><ul><li><a href=\"https:\/\/support.google.com\/analytics\/answer\/13544947?hl=en\">GA4: usuwanie danych przed wys\u0142aniem<\/a><\/li><li><a href=\"https:\/\/support.google.com\/analytics\/answer\/9940393?hl=en\">GA4: pro\u015bby o usuni\u0119cie danych<\/a><\/li><li><a href=\"https:\/\/developers.google.com\/analytics\/devguides\/reporting\/data\/v1\/rest\/v1beta\/properties\/runReport\">Data API: runReport<\/a><\/li><li><a href=\"https:\/\/developers.google.com\/analytics\/devguides\/reporting\/data\/v1\/rest\/v1beta\/ResponseMetaData\">Data API: ResponseMetaData<\/a><\/li><li><a href=\"https:\/\/developers.google.com\/analytics\/devguides\/reporting\/data\/v1\/api-schema\">Data API: wymiary i wska\u017aniki<\/a><\/li><li><a href=\"https:\/\/developers.google.com\/analytics\/devguides\/collection\/ga4\/views?hl=en\">GA4: ods\u0142ony<\/a><\/li><li><a href=\"https:\/\/docs.cloud.google.com\/bigquery\/docs\/time-travel\">BigQuery: Time Travel<\/a><\/li><li><a href=\"https:\/\/eur-lex.europa.eu\/eli\/reg\/2016\/679\/oj\/eng\/\">RODO: artyku\u0142 4<\/a><\/li><li><a href=\"https:\/\/eur-lex.europa.eu\/legal-content\/EN\/TXT\/?uri=CELEX%3A62022CJ0604\">TSUE: C-604\/22<\/a><\/li><li><a href=\"https:\/\/support.google.com\/analytics\/answer\/6366371?hl=en\">Google Analytics: PII<\/a><\/li><li><a href=\"https:\/\/docs.python.org\/3\/library\/urllib.parse.html\">Python: urllib.parse<\/a><\/li><li><a href=\"https:\/\/docs.cloud.google.com\/bigquery\/docs\/reference\/standard-sql\/dml-syntax\">BigQuery: DML<\/a><\/li><li><a href=\"https:\/\/developer.chrome.com\/blog\/referrer-policy-new-chrome-default\/\">Chrome: Referrer-Policy<\/a><\/li><li><a href=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/themes\/lw-theme\/js\/collect-analyser.js?v=20260928a\">GA4 Parameter Analyser: JavaScript<\/a><\/li><li><a href=\"https:\/\/developers.google.com\/analytics\/devguides\/collection\/ga4\">GA4: zbieranie danych<\/a><\/li><li><a href=\"https:\/\/support.google.com\/analytics\/answer\/7201382?hl=pl\">GA4: DebugView<\/a><\/li><li><a href=\"https:\/\/url.spec.whatwg.org\/#application\/x-www-form-urlencoded\">WHATWG: kodowanie URL danych formularzy<\/a><\/li><\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Procedura wykrywania danych osobowych w adresach GA4, zatrzymywania kolejnych transmisji i oceny mo\u017cliwo\u015bci usuwania. Obejmuje ograniczenia Data API, usuwanie danych ze strumienia internetowego, wyj\u0105tki usuwania GA4 i osobne oczyszczanie BigQuery.<\/p>\n","protected":false},"author":1,"featured_media":28501,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[124],"tags":[92151,92247,92100,92412,92238],"class_list":["post-13112","post","type-post","status-publish","format-standard","hentry","category-tutorials-pl-data-privacy-pl","tag-prywatnosc-danych-pl-pl","tag-gdpr-pl","tag-google-analytics-4-pl","tag-pii-protection-pl","tag-tutorial-pl"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Tutorial: Znajdowanie danych osobowych w \u015bcie\u017ckach stron GA4 i ich usuwanie | Lukas Wojcik<\/title>\n<meta name=\"description\" content=\"Wypisanie wszystkich \u015bcie\u017cek stron przez Data API, sprawdzenie ich pod k\u0105tem danych osobowych, redakcja na strumieniu i usuni\u0119cie zasobu.\" \/>\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\/tutorials-pl-data-privacy-pl\/tutorial-znajdowanie-danych-osobowych-w-sciezkach-stron-ga4-i-ich-usuwanie\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Tutorial: Znajdowanie danych osobowych w \u015bcie\u017ckach stron GA4 i ich usuwanie | Lukas Wojcik\" \/>\n<meta property=\"og:description\" content=\"Wypisanie wszystkich \u015bcie\u017cek stron przez Data API, sprawdzenie ich pod k\u0105tem danych osobowych, redakcja na strumieniu i usuni\u0119cie zasobu.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lukaswojcik.com\/blog\/pl\/data-privacy-pl\/tutorials-pl-data-privacy-pl\/tutorial-znajdowanie-danych-osobowych-w-sciezkach-stron-ga4-i-ich-usuwanie\/\" \/>\n<meta property=\"og:site_name\" content=\"Lukas Wojcik - Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-09-20T16:25:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-26T12:29:23+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/10\/hero-13112-review-20261024-dark.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=\"12 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\\\/tutorials-pl-data-privacy-pl\\\/tutorial-znajdowanie-danych-osobowych-w-sciezkach-stron-ga4-i-ich-usuwanie\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/data-privacy-pl\\\/tutorials-pl-data-privacy-pl\\\/tutorial-znajdowanie-danych-osobowych-w-sciezkach-stron-ga4-i-ich-usuwanie\\\/\"},\"author\":{\"name\":\"Lukas Wojcik\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"headline\":\"Tutorial: Znajdowanie danych osobowych w \u015bcie\u017ckach stron GA4 i ich usuwanie\",\"datePublished\":\"2026-09-20T16:25:00+00:00\",\"dateModified\":\"2026-10-26T12:29:23+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/data-privacy-pl\\\/tutorials-pl-data-privacy-pl\\\/tutorial-znajdowanie-danych-osobowych-w-sciezkach-stron-ga4-i-ich-usuwanie\\\/\"},\"wordCount\":1779,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/data-privacy-pl\\\/tutorials-pl-data-privacy-pl\\\/tutorial-znajdowanie-danych-osobowych-w-sciezkach-stron-ga4-i-ich-usuwanie\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/lw-flux3-20261031\\\/hero-13112.png\",\"keywords\":[\"Data Privacy\",\"GDPR\",\"Google Analytics 4\",\"PII Protection\",\"Tutorial\"],\"articleSection\":[\"Tutorials\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/data-privacy-pl\\\/tutorials-pl-data-privacy-pl\\\/tutorial-znajdowanie-danych-osobowych-w-sciezkach-stron-ga4-i-ich-usuwanie\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/data-privacy-pl\\\/tutorials-pl-data-privacy-pl\\\/tutorial-znajdowanie-danych-osobowych-w-sciezkach-stron-ga4-i-ich-usuwanie\\\/\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/data-privacy-pl\\\/tutorials-pl-data-privacy-pl\\\/tutorial-znajdowanie-danych-osobowych-w-sciezkach-stron-ga4-i-ich-usuwanie\\\/\",\"name\":\"Tutorial: Znajdowanie danych osobowych w \u015bcie\u017ckach stron GA4 i ich usuwanie | Lukas Wojcik\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/data-privacy-pl\\\/tutorials-pl-data-privacy-pl\\\/tutorial-znajdowanie-danych-osobowych-w-sciezkach-stron-ga4-i-ich-usuwanie\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/data-privacy-pl\\\/tutorials-pl-data-privacy-pl\\\/tutorial-znajdowanie-danych-osobowych-w-sciezkach-stron-ga4-i-ich-usuwanie\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/lw-flux3-20261031\\\/hero-13112.png\",\"datePublished\":\"2026-09-20T16:25:00+00:00\",\"dateModified\":\"2026-10-26T12:29:23+00:00\",\"description\":\"Wypisanie wszystkich \u015bcie\u017cek stron przez Data API, sprawdzenie ich pod k\u0105tem danych osobowych, redakcja na strumieniu i usuni\u0119cie zasobu.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/data-privacy-pl\\\/tutorials-pl-data-privacy-pl\\\/tutorial-znajdowanie-danych-osobowych-w-sciezkach-stron-ga4-i-ich-usuwanie\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/data-privacy-pl\\\/tutorials-pl-data-privacy-pl\\\/tutorial-znajdowanie-danych-osobowych-w-sciezkach-stron-ga4-i-ich-usuwanie\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/data-privacy-pl\\\/tutorials-pl-data-privacy-pl\\\/tutorial-znajdowanie-danych-osobowych-w-sciezkach-stron-ga4-i-ich-usuwanie\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/lw-flux3-20261031\\\/hero-13112.png\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/lw-flux3-20261031\\\/hero-13112.png\",\"width\":1200,\"height\":630,\"caption\":\"Tutorial: Znajdowanie danych osobowych w \u015bcie\u017ckach stron GA4 i ich usuwanie\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/data-privacy-pl\\\/tutorials-pl-data-privacy-pl\\\/tutorial-znajdowanie-danych-osobowych-w-sciezkach-stron-ga4-i-ich-usuwanie\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Tutorial: Znajdowanie danych osobowych w \u015bcie\u017ckach stron GA4 i ich usuwanie\"}]},{\"@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":"Tutorial: Znajdowanie danych osobowych w \u015bcie\u017ckach stron GA4 i ich usuwanie | Lukas Wojcik","description":"Wypisanie wszystkich \u015bcie\u017cek stron przez Data API, sprawdzenie ich pod k\u0105tem danych osobowych, redakcja na strumieniu i usuni\u0119cie zasobu.","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\/tutorials-pl-data-privacy-pl\/tutorial-znajdowanie-danych-osobowych-w-sciezkach-stron-ga4-i-ich-usuwanie\/","og_locale":"en_US","og_type":"article","og_title":"Tutorial: Znajdowanie danych osobowych w \u015bcie\u017ckach stron GA4 i ich usuwanie | Lukas Wojcik","og_description":"Wypisanie wszystkich \u015bcie\u017cek stron przez Data API, sprawdzenie ich pod k\u0105tem danych osobowych, redakcja na strumieniu i usuni\u0119cie zasobu.","og_url":"https:\/\/www.lukaswojcik.com\/blog\/pl\/data-privacy-pl\/tutorials-pl-data-privacy-pl\/tutorial-znajdowanie-danych-osobowych-w-sciezkach-stron-ga4-i-ich-usuwanie\/","og_site_name":"Lukas Wojcik - Blog","article_published_time":"2026-09-20T16:25:00+00:00","article_modified_time":"2026-10-26T12:29:23+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/10\/hero-13112-review-20261024-dark.png","type":"image\/png"}],"author":"Lukas Wojcik","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Lukas Wojcik","Est. reading time":"12 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/data-privacy-pl\/tutorials-pl-data-privacy-pl\/tutorial-znajdowanie-danych-osobowych-w-sciezkach-stron-ga4-i-ich-usuwanie\/#article","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/data-privacy-pl\/tutorials-pl-data-privacy-pl\/tutorial-znajdowanie-danych-osobowych-w-sciezkach-stron-ga4-i-ich-usuwanie\/"},"author":{"name":"Lukas Wojcik","@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"headline":"Tutorial: Znajdowanie danych osobowych w \u015bcie\u017ckach stron GA4 i ich usuwanie","datePublished":"2026-09-20T16:25:00+00:00","dateModified":"2026-10-26T12:29:23+00:00","mainEntityOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/data-privacy-pl\/tutorials-pl-data-privacy-pl\/tutorial-znajdowanie-danych-osobowych-w-sciezkach-stron-ga4-i-ich-usuwanie\/"},"wordCount":1779,"commentCount":0,"publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/data-privacy-pl\/tutorials-pl-data-privacy-pl\/tutorial-znajdowanie-danych-osobowych-w-sciezkach-stron-ga4-i-ich-usuwanie\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/lw-flux3-20261031\/hero-13112.png","keywords":["Data Privacy","GDPR","Google Analytics 4","PII Protection","Tutorial"],"articleSection":["Tutorials"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.lukaswojcik.com\/blog\/pl\/data-privacy-pl\/tutorials-pl-data-privacy-pl\/tutorial-znajdowanie-danych-osobowych-w-sciezkach-stron-ga4-i-ich-usuwanie\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/data-privacy-pl\/tutorials-pl-data-privacy-pl\/tutorial-znajdowanie-danych-osobowych-w-sciezkach-stron-ga4-i-ich-usuwanie\/","url":"https:\/\/www.lukaswojcik.com\/blog\/pl\/data-privacy-pl\/tutorials-pl-data-privacy-pl\/tutorial-znajdowanie-danych-osobowych-w-sciezkach-stron-ga4-i-ich-usuwanie\/","name":"Tutorial: Znajdowanie danych osobowych w \u015bcie\u017ckach stron GA4 i ich usuwanie | Lukas Wojcik","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/data-privacy-pl\/tutorials-pl-data-privacy-pl\/tutorial-znajdowanie-danych-osobowych-w-sciezkach-stron-ga4-i-ich-usuwanie\/#primaryimage"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/data-privacy-pl\/tutorials-pl-data-privacy-pl\/tutorial-znajdowanie-danych-osobowych-w-sciezkach-stron-ga4-i-ich-usuwanie\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/lw-flux3-20261031\/hero-13112.png","datePublished":"2026-09-20T16:25:00+00:00","dateModified":"2026-10-26T12:29:23+00:00","description":"Wypisanie wszystkich \u015bcie\u017cek stron przez Data API, sprawdzenie ich pod k\u0105tem danych osobowych, redakcja na strumieniu i usuni\u0119cie zasobu.","breadcrumb":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/data-privacy-pl\/tutorials-pl-data-privacy-pl\/tutorial-znajdowanie-danych-osobowych-w-sciezkach-stron-ga4-i-ich-usuwanie\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lukaswojcik.com\/blog\/pl\/data-privacy-pl\/tutorials-pl-data-privacy-pl\/tutorial-znajdowanie-danych-osobowych-w-sciezkach-stron-ga4-i-ich-usuwanie\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/data-privacy-pl\/tutorials-pl-data-privacy-pl\/tutorial-znajdowanie-danych-osobowych-w-sciezkach-stron-ga4-i-ich-usuwanie\/#primaryimage","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/lw-flux3-20261031\/hero-13112.png","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/lw-flux3-20261031\/hero-13112.png","width":1200,"height":630,"caption":"Tutorial: Znajdowanie danych osobowych w \u015bcie\u017ckach stron GA4 i ich usuwanie"},{"@type":"BreadcrumbList","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/data-privacy-pl\/tutorials-pl-data-privacy-pl\/tutorial-znajdowanie-danych-osobowych-w-sciezkach-stron-ga4-i-ich-usuwanie\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.lukaswojcik.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Tutorial: Znajdowanie danych osobowych w \u015bcie\u017ckach stron GA4 i ich usuwanie"}]},{"@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\/13112","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=13112"}],"version-history":[{"count":7,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/13112\/revisions"}],"predecessor-version":[{"id":27404,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/13112\/revisions\/27404"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media\/28501"}],"wp:attachment":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media?parent=13112"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/categories?post=13112"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/tags?post=13112"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}