{"id":15566,"date":"2026-09-05T14:29:49","date_gmt":"2026-09-05T12:29:49","guid":{"rendered":"https:\/\/www.lukaswojcik.com\/blog\/narzedzia\/well-known-policy-files-inspector-security-txt-ads-txt\/"},"modified":"2026-09-05T14:29:49","modified_gmt":"2026-09-05T12:29:49","slug":"well-known-policy-files-inspector-security-txt-ads-txt","status":"publish","type":"page","link":"https:\/\/www.lukaswojcik.com\/blog\/pl\/narzedzia\/well-known-policy-files-inspector-security-txt-ads-txt\/","title":{"rendered":"Inspektor plik\u00f3w well-known i polityk: security.txt, ads.txt, gpc.json, llms.txt"},"content":{"rendered":"<div class=\"gtm-analyser-container\" style=\"background: var(--bg-panel, #1e1e24); padding: 25px; border-radius: 8px; border: 1px solid var(--border, #2a2a35);\">\n<p style=\"color: var(--text-secondary, #a0a0b0); margin-bottom: 20px;\">Domena rozmawia z maszynami przez gar\u015b\u0107 plik\u00f3w pod sta\u0142ymi \u015bcie\u017ckami. security.txt m\u00f3wi badaczom bezpiecze\u0144stwa, gdzie zg\u0142osi\u0107 luk\u0119, robots.txt i llms.txt zwracaj\u0105 si\u0119 do crawler\u00f3w, ads.txt wymienia, kto mo\u017ce sprzedawa\u0107 powierzchni\u0119 reklamow\u0105, gpc.json deklaruje honorowanie Global Privacy Control, change-password prowadzi mened\u017cery hase\u0142 do w\u0142a\u015bciwej strony, a assetlinks i powi\u0105zanie aplikacji Apple wi\u0105\u017c\u0105 aplikacje z witryn\u0105. To sprawdzenie pobiera wszystkie trzyna\u015bcie z tego serwera i ocenia ka\u017cdy wed\u0142ug jego w\u0142asnej specyfikacji: plik, kt\u00f3ry istnieje, ale wygas\u0142, jest podawany jako HTML albo odpowiada 200 ze stron\u0105 g\u0142\u00f3wn\u0105 zamiast 404, warto zna\u0107.<\/p>\n<div style=\"margin-bottom: 14px;\">\n        <label for=\"wk-url\" style=\"color: var(--text-secondary, #a0a0b0); display: block; font-size: 0.85rem; margin-bottom: 5px;\">Domena lub adres (u\u017cywany jest tylko host)<\/label><br \/>\n        <input id=\"wk-url\" type=\"text\" value=\"securitytxt.org\" class=\"form-control\" style=\"width: 100%; padding: 10px; background: var(--bg-body, #14141a); border: 1px solid var(--border, #2a2a35); color: var(--text-primary, #e8e8ee); border-radius: 6px; box-sizing: border-box; font-family: monospace;\">\n    <\/div>\n<p style=\"color: var(--text-secondary, #a0a0b0); font-size: 0.82rem; margin-bottom: 16px;\">Z tego serwera do podanego hosta trafia trzyna\u015bcie \u017c\u0105da\u0144 po maksymalnie 200 KB, ka\u017cde z maksymalnie trzema przekierowaniami. Hosty w sieciach prywatnych, loopback i link-local s\u0105 odrzucane. Zapytanie chroni reCAPTCHA v3; adres IP wywo\u0142uj\u0105cego i cel s\u0105 przechowywane przez godzin\u0119 w celu ograniczenia cz\u0119stotliwo\u015bci.<\/p>\n<p>    <button id=\"wk-btn\" class=\"button\" style=\"background: var(--accent, #7ee787); color: var(--on-accent, #0b1114); border: none; padding: 12px 24px; border-radius: 6px; font-weight: 700; cursor: pointer;\">Sprawdzenie plik\u00f3w polityk<\/button><\/p>\n<div id=\"wk-ausgabe\" style=\"margin-top: 22px;\"><\/div>\n<p style=\"color: var(--text-secondary, #a0a0b0); font-size: 0.8rem; margin: 24px 0 0;\">Granice, o kt\u00f3rych warto wiedzie\u0107: sprawdzane s\u0105 tylko sta\u0142e \u015bcie\u017cki, nie pliki, kt\u00f3re witryna trzyma gdzie indziej; pliki s\u0105 obcinane przy 200 KB; mi\u0119kkie 404 rozpoznaje si\u0119 po HTML w tre\u015bci, co pomija serwery odpowiadaj\u0105ce stron\u0105 b\u0142\u0119du w JSON; podpis security.txt jest wykrywany, ale nie weryfikowany; a brak wi\u0119kszo\u015bci tych plik\u00f3w jest normalny dla wi\u0119kszo\u015bci witryn, wi\u0119c brak liczy si\u0119 jako informacja, nie jako wada.<\/p>\n<\/div>\n<p><script>\n(function () {\n    'use strict';<\/p>\n<p>    const T = {\"einleitung\":\"Domena rozmawia z maszynami przez gar\u015b\u0107 plik\u00f3w pod sta\u0142ymi \u015bcie\u017ckami. security.txt m\u00f3wi badaczom bezpiecze\u0144stwa, gdzie zg\u0142osi\u0107 luk\u0119, robots.txt i llms.txt zwracaj\u0105 si\u0119 do crawler\u00f3w, ads.txt wymienia, kto mo\u017ce sprzedawa\u0107 powierzchni\u0119 reklamow\u0105, gpc.json deklaruje honorowanie Global Privacy Control, change-password prowadzi mened\u017cery hase\u0142 do w\u0142a\u015bciwej strony, a assetlinks i powi\u0105zanie aplikacji Apple wi\u0105\u017c\u0105 aplikacje z witryn\u0105. To sprawdzenie pobiera wszystkie trzyna\u015bcie z tego serwera i ocenia ka\u017cdy wed\u0142ug jego w\u0142asnej specyfikacji: plik, kt\u00f3ry istnieje, ale wygas\u0142, jest podawany jako HTML albo odpowiada 200 ze stron\u0105 g\u0142\u00f3wn\u0105 zamiast 404, warto zna\u0107.\",\"label_url\":\"Domena lub adres (u\u017cywany jest tylko host)\",\"datenschutz\":\"Z tego serwera do podanego hosta trafia trzyna\u015bcie \u017c\u0105da\u0144 po maksymalnie 200 KB, ka\u017cde z maksymalnie trzema przekierowaniami. Hosty w sieciach prywatnych, loopback i link-local s\u0105 odrzucane. Zapytanie chroni reCAPTCHA v3; adres IP wywo\u0142uj\u0105cego i cel s\u0105 przechowywane przez godzin\u0119 w celu ograniczenia cz\u0119stotliwo\u015bci.\",\"knopf\":\"Sprawdzenie plik\u00f3w polityk\",\"laeuft\":\"Pobieranie trzynastu plik\u00f3w...\",\"grenze\":\"Granice, o kt\u00f3rych warto wiedzie\u0107: sprawdzane s\u0105 tylko sta\u0142e \u015bcie\u017cki, nie pliki, kt\u00f3re witryna trzyma gdzie indziej; pliki s\u0105 obcinane przy 200 KB; mi\u0119kkie 404 rozpoznaje si\u0119 po HTML w tre\u015bci, co pomija serwery odpowiadaj\u0105ce stron\u0105 b\u0142\u0119du w JSON; podpis security.txt jest wykrywany, ale nie weryfikowany; a brak wi\u0119kszo\u015bci tych plik\u00f3w jest normalny dla wi\u0119kszo\u015bci witryn, wi\u0119c brak liczy si\u0119 jako informacja, nie jako wada.\",\"zusammenfassung\":\"{basis}: {vorhanden} z {gesamt} plik\u00f3w obecnych, {soft} mi\u0119kkich 404.\",\"h_dateien\":\"Pliki\",\"spalte_pfad\":\"\u015acie\u017cka\",\"spalte_zustand\":\"Stan\",\"spalte_status\":\"Status\",\"spalte_typ\":\"Typ tre\u015bci\",\"spalte_groesse\":\"Rozmiar\",\"zustand_vorhanden\":\"obecny\",\"zustand_fehlt\":\"brak\",\"zustand_soft_404\":\"mi\u0119kkie 404 (HTML zamiast pliku)\",\"zustand_weitergeleitet\":\"przekierowuje\",\"zustand_fehler\":\"nieosi\u0105galny\",\"zustand_status\":\"nieoczekiwany status\",\"zustand_leer\":\"pusty\",\"zeile_dauer\":\"Czas\",\"zeile_limit\":\"Pozosta\u0142e sprawdzenia w tej godzinie\",\"h_befunde\":\"Ustalenia\",\"stufe_hoch\":\"Wysoka\",\"stufe_mittel\":\"\u015arednia\",\"stufe_niedrig\":\"Niska\",\"stufe_info\":\"Informacja\",\"stufe_gut\":\"W porz\u0105dku\",\"keine_befunde\":\"Brak uwag.\",\"urteil_gut\":\"Istniej\u0105ce pliki s\u0105 sp\u00f3jne; brakuj\u0105ce s\u0105 opcjonalne.\",\"urteil_warnung\":\"Co najmniej jeden opublikowany plik jest zepsuty lub wygas\u0142y, a to gorsze ni\u017c jego brak.\",\"urteil_kritisch\":\"Hosta nie da\u0142o si\u0119 sprawdzi\u0107.\",\"fehler_kein_token\":\"Sprawdzenie nie mog\u0142o si\u0119 rozpocz\u0105\u0107, poniewa\u017c reCAPTCHA si\u0119 nie za\u0142adowa\u0142a.\",\"fehler_captcha\":\"reCAPTCHA uzna\u0142a \u017c\u0105danie za zautomatyzowane. Zwykle pomaga ponowne za\u0142adowanie strony.\",\"fehler_zu_viele\":\"Osi\u0105gni\u0119to limit {limit} sprawdze\u0144 na godzin\u0119 dla tego adresu.\",\"fehler_adresse\":\"Tego adresu nie da si\u0119 u\u017cy\u0107.\",\"fehler_zaehler\":\"Licznik jest niedost\u0119pny, dlatego nic nie zosta\u0142o sprawdzone.\",\"fehler_pruefdienst\":\"Us\u0142uga reCAPTCHA by\u0142a nieosi\u0105galna.\",\"fehler_aufbau\":\"Us\u0142uga nie jest poprawnie skonfigurowana. B\u0142\u0105d le\u017cy po tej stronie.\",\"fehler_eingabe\":\"\u017b\u0105danie by\u0142o nieczytelne.\",\"fehler_methode\":\"Niew\u0142a\u015bciwa metoda \u017c\u0105dania.\",\"fehler_netz\":\"Us\u0142uga by\u0142a nieosi\u0105galna.\",\"fehler_antwort\":\"Odpowied\u017a by\u0142a nieczytelna.\",\"fehler_unbekannt\":\"Co\u015b posz\u0142o nie tak, a nie ma na to osobnego komunikatu.\",\"grund_leer\":\"Nic nie zosta\u0142o wpisane.\",\"grund_zu_lang\":\"Wpis jest za d\u0142ugi.\",\"grund_unlesbar\":\"To nie jest czytelna nazwa hosta.\",\"grund_schema\":\"Sprawdzane s\u0105 tylko hosty http i https.\",\"grund_benutzerinfo\":\"Wpisy z danymi logowania s\u0105 odrzucane.\",\"grund_kein_punkt\":\"Nazwa hosta potrzebuje co najmniej jednej kropki.\",\"grund_hostform\":\"Wymagana jest nazwa hosta, nie adres IP.\",\"grund_port\":\"Sprawdzane s\u0105 tylko porty 80, 443, 8080 i 8443.\",\"grund_gesperrter_bereich\":\"Ten host rozwi\u0105zuje si\u0119 do sieci prywatnej lub zarezerwowanej. Takie nigdy nie s\u0105 kontaktowane.\",\"grund_kein_dns\":\"Nazwy hosta nie da si\u0119 rozwi\u0105za\u0107.\",\"befund_soft_404\":\"Mi\u0119kkie 404 pod {pfad} || Serwer odpowiedzia\u0142 200 i stron\u0105 HTML zamiast plikiem lub 404. Crawlery i narz\u0119dzia szukaj\u0105ce tego pliku dostaj\u0105 stron\u0119 WWW i albo \u017ale j\u0105 czytaj\u0105, albo uznaj\u0105 plik za obecny. Prawdziwy 404 to uczciwa odpowied\u017a.\",\"befund_security_fehlt\":\"Brak security.txt || RFC 9116 okre\u015bla, gdzie badacze bezpiecze\u0144stwa znajd\u0105 kontakt: \\\/.well-known\\\/security.txt. Bez niego zg\u0142oszenie luki trafia pod zgadni\u0119ty adres albo nigdzie. Wystarcz\u0105 dwie linie: Contact i Expires.\",\"befund_security_nur_alt\":\"security.txt tylko pod star\u0105 \u015bcie\u017ck\u0105 \\\/security.txt || Standardowa lokalizacja to \\\/.well-known\\\/security.txt; \u015bcie\u017cka g\u0142\u00f3wna to rezerwa, kt\u00f3r\u0105 narz\u0119dzia jeszcze pr\u00f3buj\u0105. Zaleca si\u0119 podawanie w obu miejscach.\",\"befund_security_alt_fehlt\":\"security.txt nie ma kopii pod \\\/security.txt || Opcjonalne: starsze narz\u0119dzia patrz\u0105 w katalog g\u0142\u00f3wny. Przekierowanie z \\\/security.txt na \u015bcie\u017ck\u0119 well-known je obs\u0142uguje.\",\"befund_security_vorhanden\":\"security.txt obecny (pola: {felder}; podpisany: {signiert}) || Plik istnieje pod standardow\u0105 \u015bcie\u017ck\u0105 i daje si\u0119 przetworzy\u0107.\",\"befund_security_contact_fehlt\":\"security.txt bez Contact || Contact to jedyne pole obowi\u0105zkowe; bez niego plik nie spe\u0142nia \u017cadnego celu.\",\"befund_security_contact_form\":\"Contact nie jest URI: {wert} || Contact musi by\u0107 URI mailto:, https: lub tel:. Go\u0142y adres nie jest poprawny wed\u0142ug RFC 9116, cho\u0107 wiele czytnik\u00f3w sobie radzi.\",\"befund_security_expires_fehlt\":\"security.txt bez Expires || Expires jest obowi\u0105zkowe od RFC 9116. Bez niego czytnik nie wie, czy kontakty s\u0105 nadal aktualne.\",\"befund_security_expires_unlesbar\":\"Expires nie jest poprawn\u0105 dat\u0105: {wert} || Warto\u015b\u0107 musi by\u0107 czasem ISO 8601, na przyk\u0142ad 2027-03-01T00:00:00.000Z.\",\"befund_security_abgelaufen\":\"security.txt wygas\u0142 {datum} || Wygas\u0142y plik trzeba traktowa\u0107 jako nieaktualny. Kontakty mog\u0105 jeszcze dzia\u0142a\u0107, ale standard ka\u017ce na nich nie polega\u0107. Od\u015bwie\u017canie Expires raz w roku to zwyk\u0142a rutyna.\",\"befund_security_expires_lang\":\"Expires ponad rok naprz\u00f3d ({datum}) || RFC 9116 zaleca wyga\u015bni\u0119cie w ci\u0105gu roku, by plik by\u0142 regularnie przegl\u0105dany. To nie b\u0142\u0105d, ale znak, \u017ce plik mo\u017ce zosta\u0107 zapomniany.\",\"befund_security_expires_ok\":\"Wa\u017cny do {datum} ({tage} dni) || Plik jest aktualny.\",\"befund_security_expires_mehrfach\":\"Kilka p\u00f3l Expires || Dozwolone jest dok\u0142adnie jedno; czytniki mog\u0105 odrzuci\u0107 plik.\",\"befund_security_canonical_fremd\":\"Canonical wskazuje gdzie indziej: {wert} || Canonical musi wymienia\u0107 URL, pod kt\u00f3rym plik jest faktycznie podawany. Rozbie\u017cno\u015b\u0107 sugeruje plik skopiowany z innego hosta.\",\"befund_security_canonical_fehlt\":\"Brak pola Canonical || Opcjonalne, ale razem z podpisem dowodzi, \u017ce plik nale\u017cy do tego hosta i nie zosta\u0142 podrzucony gdzie indziej.\",\"befund_security_unsigniert\":\"security.txt nie jest podpisany || Opcjonalne: podpis OpenPGP pozwala badaczowi sprawdzi\u0107, \u017ce plik nie by\u0142 zmieniany. Wi\u0119kszo\u015b\u0107 witryn to pomija.\",\"befund_security_encryption_fehlt\":\"Brak pola Encryption || Opcjonalne: odno\u015bnik do klucza publicznego pozwala wysy\u0142a\u0107 zg\u0142oszenia zaszyfrowane.\",\"befund_security_sprachen_fehlen\":\"Brak pola Preferred-Languages || Opcjonalne: m\u00f3wi badaczom, jakie j\u0119zyki czyta kontakt.\",\"befund_security_zeilen_unlesbar\":\"{n} linia(e) w security.txt nie daje si\u0119 przetworzy\u0107 || Linie musz\u0105 mie\u0107 posta\u0107 Pole: warto\u015b\u0107 albo by\u0107 komentarzami z #. Czytniki ignoruj\u0105 reszt\u0119, ale to sugeruje b\u0142\u0105d formatowania.\",\"befund_security_content_type\":\"security.txt podany jako {typ} || Plik musi by\u0107 podawany jako text\\\/plain. Niekt\u00f3re czytniki odrzucaj\u0105 inne typy.\",\"befund_robots_vorhanden\":\"robots.txt obecny: {gruppen} grup(y), {disallow} linii Disallow, {sitemaps} linii Sitemap || Plik regu\u0142 dla crawler\u00f3w istnieje i na pierwszy rzut oka jest czytelny.\",\"befund_robots_wellknown_gesperrt\":\"robots.txt blokuje \\\/.well-known\\\/ || Crawlery respektuj\u0105ce robots.txt pomijaj\u0105 wtedy security.txt, gpc.json i pliki powi\u0105za\u0144 aplikacji, a narz\u0119dzia sprawdzaj\u0105ce najpierw robots zg\u0142aszaj\u0105 je jako zablokowane.\",\"befund_robots_fehlt\":\"Brak robots.txt || Crawlery traktuj\u0105 brak pliku jako zgod\u0119 na indeksowanie wszystkiego. Cz\u0119ste i nieszkodliwe; plik jest potrzebny tylko, by co\u015b wykluczy\u0107 albo wskaza\u0107 map\u0119 witryny.\",\"befund_ads_vorhanden\":\"ads.txt obecny: {eintraege} wpis\u00f3w ({direct} DIRECT, {reseller} RESELLER, {domains} system\u00f3w), OWNERDOMAIN {owner} || Plik autoryzowanych sprzedawc\u00f3w istnieje. Kupuj\u0105cy reklamy sprawdzaj\u0105 go przed licytacj\u0105 powierzchni tej domeny.\",\"befund_ads_ungueltig\":\"{n} linia(e) w ads.txt nie daje si\u0119 przetworzy\u0107 || Ka\u017cdy wpis potrzebuje domeny, ID wydawcy i DIRECT lub RESELLER. Wadliwe linie kupuj\u0105cy ignoruj\u0105, wi\u0119c sprzedawca, kt\u00f3rego mia\u0142y autoryzowa\u0107, nie jest autoryzowany.\",\"befund_ads_leer\":\"ads.txt istnieje, ale nie wymienia sprzedawc\u00f3w || Pusty plik m\u00f3wi kupuj\u0105cym, \u017ce nikt nie mo\u017ce sprzedawa\u0107 tej powierzchni, co jest poprawn\u0105 deklaracj\u0105 dla witryny bez reklam.\",\"befund_ads_ownerdomain_fehlt\":\"Brak OWNERDOMAIN w ads.txt || Zmienna nazywa w\u0142a\u015bciciela witryny i jest wymagana od ads.txt 1.1, gdy witryna nale\u017cy do grupy; pomaga kupuj\u0105cym odr\u00f3\u017cni\u0107 w\u0142asn\u0105 powierzchni\u0119 od zarz\u0105dzanej.\",\"befund_ads_content_type\":\"ads.txt podany jako {typ} || Specyfikacja IAB wymaga text\\\/plain.\",\"befund_app_ads_vorhanden\":\"app-ads.txt obecny: {eintraege} wpis\u00f3w ({direct} DIRECT, {reseller} RESELLER, {domains} system\u00f3w) || Odpowiednik ads.txt dla aplikacji mobilnych istnieje.\",\"befund_app_ads_ungueltig\":\"{n} linia(e) w app-ads.txt nie daje si\u0119 przetworzy\u0107 || Wadliwe wpisy kupuj\u0105cy ignoruj\u0105.\",\"befund_app_ads_leer\":\"app-ads.txt istnieje, ale nie wymienia sprzedawc\u00f3w || Poprawne, ale nietypowe dla domeny publikuj\u0105cej ten plik.\",\"befund_app_ads_content_type\":\"app-ads.txt podany jako {typ} || Specyfikacja wymaga text\\\/plain.\",\"befund_ads_fehlt\":\"Brak ads.txt i app-ads.txt || Istotne tylko dla witryn sprzedaj\u0105cych reklamy programatycznie. Bez ads.txt kupuj\u0105cy, kt\u00f3rzy z niego korzystaj\u0105, traktuj\u0105 ca\u0142\u0105 powierzchni\u0119 jako nieautoryzowan\u0105.\",\"befund_gpc_unlesbar\":\"gpc.json nie daje si\u0119 przetworzy\u0107 || Plik musi by\u0107 JSON-em z logicznym polem gpc, na przyk\u0142ad {\\u0022gpc\\u0022: true, \\u0022lastUpdate\\u0022: \\u00222026-01-01\\u0022}.\",\"befund_gpc_ja\":\"gpc.json deklaruje honorowanie Global Privacy Control (stan {lastUpdate}) || Witryna m\u00f3wi przegl\u0105darkom i regulatorom, \u017ce sygna\u0142 Sec-GPC jest traktowany jako sprzeciw wobec sprzeda\u017cy i udost\u0119pniania.\",\"befund_gpc_nein\":\"gpc.json deklaruje, \u017ce Global Privacy Control nie jest honorowane (stan {lastUpdate}) || Plik istnieje i m\u00f3wi gpc: false. Uczciwie, ale rzadko to, co witryna chce publikowa\u0107.\",\"befund_gpc_ohne_datum\":\"gpc.json bez lastUpdate || Zalecane, by czytelnicy wiedzieli, jak aktualna jest deklaracja.\",\"befund_gpc_content_type\":\"gpc.json podany jako {typ} || Specyfikacja wymaga application\\\/json.\",\"befund_gpc_fehlt\":\"Brak gpc.json || Opcjonalne. Witryna honoruj\u0105ca Global Privacy Control mo\u017ce to tu powiedzie\u0107; kalifornijski regulator wskazuje ten plik jako jeden ze sposob\u00f3w udokumentowania zgodno\u015bci.\",\"befund_llms_vorhanden\":\"llms.txt obecny: {links} odno\u015bnik(\u00f3w) w {abschnitte} sekcji(ach), {kb} KB || Plik Markdown dla modeli j\u0119zykowych istnieje. To propozycja, nie standard; na razie czyta go niewiele crawler\u00f3w.\",\"befund_llms_ohne_h1\":\"llms.txt bez nag\u0142\u00f3wka g\u0142\u00f3wnego || Propozycja wymaga dok\u0142adnie jednego H1 z nazw\u0105 witryny jako pierwszej linii.\",\"befund_llms_ohne_zitat\":\"llms.txt bez streszczenia w cytacie blokowym || Propozycja zaleca pod nag\u0142\u00f3wkiem kr\u00f3tki cytat blokowy streszczaj\u0105cy witryn\u0119.\",\"befund_llms_fehlt\":\"Brak llms.txt || Opcjonalne i nadal tylko propozycja. Dla crawler\u00f3w AI, kt\u00f3re dzi\u015b si\u0119 licz\u0105, nic nie robi; ich dost\u0119p steruje si\u0119 w robots.txt.\",\"befund_change_password_ok\":\"change-password przekierowuje na {ziel} || Mened\u017cery hase\u0142 otwieraj\u0105 t\u0119 \u015bcie\u017ck\u0119, by zaprowadzi\u0107 u\u017cytkownika do formularza zmiany has\u0142a. Przekierowanie to zamierzona implementacja.\",\"befund_change_password_seite\":\"change-password odpowiada bezpo\u015brednio stron\u0105 || Dzia\u0142a, je\u015bli strona jest formularzem has\u0142a. Przekierowanie do w\u0142a\u015bciwego formularza to cz\u0119stsza implementacja.\",\"befund_change_password_fehlt\":\"Brak change-password || Opcjonalne i istotne tylko dla witryn z kontami. Jedna linia przekierowania sprawia, \u017ce przyciski zmiany has\u0142a w mened\u017cerach hase\u0142 dzia\u0142aj\u0105.\",\"befund_change_password_soft\":\"change-password odpowiada 200 i og\u00f3ln\u0105 stron\u0105 || Mened\u017cery hase\u0142 nie odr\u00f3\u017cni\u0105 tego od prawdziwego celu. Specyfikacja wymaga przekierowania albo prawdziwego 404 i zaleca, by \\\/.well-known\\\/resource-that-should-not-exist-whose-status-code-should-not-be-200 zwraca\u0142 404.\",\"befund_assetlinks_unlesbar\":\"assetlinks.json nie daje si\u0119 przetworzy\u0107 || Android App Links i wsp\u00f3\u0142dzielenie po\u015bwiadcze\u0144 zale\u017c\u0105 od tego JSON-a; b\u0142\u0105d sk\u0142adni je wy\u0142\u0105cza.\",\"befund_assetlinks_vorhanden\":\"assetlinks.json obecny: {n} deklaracji, pakiet(y) {pakete} || Linki aplikacji Android i wsp\u00f3\u0142dzielone po\u015bwiadczenia s\u0105 zadeklarowane.\",\"befund_assetlinks_content_type\":\"assetlinks.json podany jako {typ} || Android wymaga application\\\/json; inne typy s\u0105 odrzucane.\",\"befund_aasa_unlesbar\":\"apple-app-site-association nie daje si\u0119 przetworzy\u0107 || Universal Links i wsp\u00f3\u0142dzielone po\u015bwiadczenia WWW w iOS zale\u017c\u0105 od tego JSON-a.\",\"befund_aasa_vorhanden\":\"apple-app-site-association obecny (klucze: {schluessel}) || Plik powi\u0105zania iOS istnieje.\",\"befund_aasa_content_type\":\"apple-app-site-association podany jako {typ} || CDN Apple pobiera go i oczekuje application\\\/json; inne typy s\u0105 ignorowane.\",\"befund_traffic_advice_unlesbar\":\"traffic-advice nie daje si\u0119 przetworzy\u0107 || Plik musi by\u0107 tablic\u0105 JSON obiekt\u00f3w porad.\",\"befund_traffic_advice_vorhanden\":\"traffic-advice obecny (udzia\u0142 prefetch {fraction}) || Witryna m\u00f3wi proxy prefetch Chrome, ile spekulatywnego ruchu przyjmuje.\",\"befund_humans_vorhanden\":\"humans.txt obecny || Notatka o ludziach stoj\u0105cych za witryn\u0105. Czysto informacyjna.\",\"befund_sitemap_vorhanden\":\"sitemap.xml obecny ({art}, {n} wpis\u00f3w loc) || Mapa witryny istnieje pod domy\u015bln\u0105 \u015bcie\u017ck\u0105.\",\"befund_sitemap_kein_xml\":\"sitemap.xml nie jest map\u0105 witryny ({typ}) || \u015acie\u017cka odpowiada, ale nie dokumentem urlset ani sitemapindex.\",\"befund_sitemap_fehlt\":\"Brak sitemap.xml pod domy\u015bln\u0105 \u015bcie\u017ck\u0105 || Cz\u0119ste, gdy mapa witryny le\u017cy gdzie indziej i jest og\u0142oszona w robots.txt lub Search Console.\"};<\/p>\n<p>    var ENDPUNKT = '\/lw-wellknown.php';\n    var SITEKEY = '6LcrPkEtAAAAAPo1QCOf-IIM2fCL0UfdJz4y2iSY';\n    var STUFEN = ['hoch', 'mittel', 'niedrig', 'info', 'gut'];\n    var ZUSTAENDE = ['vorhanden', 'fehlt', 'soft_404', 'weitergeleitet', 'fehler', 'status', 'leer'];<\/p>\n<p>    function liste(w) { return Array.isArray(w) ? w : []; }\n    function zahl(w) { return (typeof w === 'number' && isFinite(w)) ? w : null; }\n    function text(schluessel, daten) {\n        var t = T[schluessel];\n        if (typeof t !== 'string') { return null; }\n        return t.replace(\/\\{([a-z_0-9]+)\\}\/g, function (m, k) {\n            return (daten && daten[k] !== undefined && daten[k] !== null) ? String(daten[k]) : m;\n        });\n    }\n    function kb(bytes) { if (bytes === null) { return '-'; } if (bytes < 1024) { return bytes + ' B'; } return (Math.round(bytes \/ 102.4) \/ 10) + ' KB'; }\n\n    function bewerten(antwort) {\n        var a = antwort || {};\n        if (a.fehler) { return { fehler: String(a.fehler), grund: a.grund || null, limit: zahl(a.limit) }; }\n        var befunde = liste(a.befunde).map(function (f) {\n            return { key: String(f.key || ''), stufe: STUFEN.indexOf(f.stufe) === -1 ? 'info' : f.stufe, daten: (f.daten &#038;&#038; typeof f.daten === 'object') ? f.daten : {} };\n        });\n        var gruppen = {};\n        STUFEN.forEach(function (s) { gruppen[s] = befunde.filter(function (f) { return f.stufe === s; }); });\n        var z = (a.zaehlung &#038;&#038; typeof a.zaehlung === 'object') ? a.zaehlung : {};\n        return {\n            fehler: null, basis: a.basis ? String(a.basis) : '', host: a.host ? String(a.host) : '',\n            urteil: (a.urteil === 'gut' || a.urteil === 'warnung' || a.urteil === 'kritisch') ? a.urteil : 'kritisch',\n            zaehlung: { vorhanden: zahl(z.vorhanden) || 0, fehlt: zahl(z.fehlt) || 0, soft_404: zahl(z.soft_404) || 0, weitergeleitet: zahl(z.weitergeleitet) || 0, fehler: zahl(z.fehler) || 0 },\n            dateien: liste(a.dateien).map(function (f) { f = f || {}; return { key: String(f.key || ''), pfad: String(f.pfad || ''), zustand: ZUSTAENDE.indexOf(f.zustand) === -1 ? 'fehler' : f.zustand, status: zahl(f.status), contentType: f.content_type ? String(f.content_type) : null, bytes: zahl(f.bytes), spruenge: zahl(f.spruenge) || 0, endurl: f.endurl ? String(f.endurl) : null }; }),\n            befunde: befunde, gruppen: gruppen, dauer: zahl(a.dauer_ms), limitRest: zahl(a.limit_rest)\n        };\n    }\n\n    function skriptLaden() {\n        return new Promise(function (auf) {\n            if (window.grecaptcha) { auf(true); return; }\n            var s = document.createElement('script');\n            s.src = 'https:\/\/www.google.com\/recaptcha\/api.js?render=' + SITEKEY;\n            s.onload = function () { auf(true); }; s.onerror = function () { auf(false); };\n            document.head.appendChild(s);\n            setTimeout(function () { auf(!!window.grecaptcha); }, 8000);\n        });\n    }\n    function tokenHolen() {\n        return skriptLaden().then(function (da) {\n            if (!da || !window.grecaptcha || !window.grecaptcha.ready) { return null; }\n            return new Promise(function (auf) {\n                var fertig = false;\n                function einmal(w) { if (!fertig) { fertig = true; auf(w); } }\n                setTimeout(function () { einmal(null); }, 12000);\n                try {\n                    window.grecaptcha.ready(function () {\n                        if (fertig) { return; }\n                        if (!window.grecaptcha.execute) { einmal(null); return; }\n                        window.grecaptcha.execute(SITEKEY, { action: 'wellknown' }).then(function (t) { einmal(t || null); }, function () { einmal(null); });\n                    });\n                } catch (e) { einmal(null); }\n            });\n        }, function () { return null; });\n    }\n    function abfragen(url) {\n        return tokenHolen().then(function (token) {\n            return fetch(ENDPUNKT, { method: 'POST', headers: { 'Content-Type': 'application\/json' }, body: JSON.stringify({ url: url, token: token || '' }) })\n                .then(function (r) { return r.json().then(function (j) { return j; }, function () { return { fehler: 'antwort' }; }); }, function () { return { fehler: 'netz' }; });\n        });\n    }\n\n    window.LW_TEST = window.LW_TEST || {};\n    window.LW_TEST.WK = { bewerten: bewerten, darstellen: null, text: text, kb: kb, ENDPUNKT: ENDPUNKT, STUFEN: STUFEN, ZUSTAENDE: ZUSTAENDE, T: T };\n\n    var btn = document.getElementById('wk-btn');\n    var out = document.getElementById('wk-ausgabe');\n    if (!btn || !out) { return; }\n\n    function el(tag, stil, txt) { var e = document.createElement(tag); if (stil) { e.setAttribute('style', stil); } if (txt !== undefined &#038;&#038; txt !== null) { e.textContent = txt; } return e; }\n    function wert(id) { var e = document.getElementById(id); return e ? e.value : ''; }\n    var UEBERSCHRIFT = 'font-family: \"Nunito Sans\", sans-serif; font-weight: 700; color: var(--text-primary, #e8e8ee); font-size: 0.95rem; margin: 22px 0 8px;';\n    var ZELLE = 'padding: 5px 12px 5px 0; color: var(--text-secondary, #a0a0b0); font-size: 0.87rem;';\n    var ZELLE_WERT = 'padding: 5px 12px 5px 0; color: var(--text-primary, #e8e8ee); font-size: 0.87rem; font-family: monospace; word-break: break-all;';\n    var KASTEN = 'background: var(--bg-body, #14141a); border: 1px solid var(--border, #2a2a35); border-radius: 8px; padding: 14px 16px; margin: 0 0 10px;';\n    var GUT = ' color: #7ee787;', WARN = ' color: #ffa94d;', ROT = ' color: #ff7b72;', GRAU = ' color: #8a8a99;';\n    var FARBEN = { hoch: '#ff7b72', mittel: '#ffa94d', niedrig: '#e3b341', info: '#8a8a99', gut: '#7ee787' };\n    var URTEIL = { gut: GUT, warnung: WARN, kritisch: ROT };\n    var ZUSTAND_FARBE = { vorhanden: GUT, fehlt: GRAU, soft_404: WARN, weitergeleitet: '', fehler: ROT, status: WARN, leer: WARN };\n    function gitter(sp) { return el('div', 'display: grid; grid-template-columns: ' + sp + '; gap: 0 18px; align-items: baseline;'); }\n    function paar(g, n, w, stil) { g.appendChild(el('div', ZELLE, n)); g.appendChild(el('div', ZELLE_WERT + (stil || ''), w)); }\n\n    function darstellen(b, ziel) {\n        ziel.innerHTML = '';\n        if (b.fehler) {\n            var txt = T['fehler_' + b.fehler] || T.fehler_unbekannt;\n            if (b.grund &#038;&#038; T['grund_' + b.grund]) { txt = txt + ' ' + T['grund_' + b.grund]; }\n            if (b.limit !== null) { txt = txt.replace('{limit}', String(b.limit)); }\n            ziel.appendChild(el('p', ZELLE + WARN + ' margin: 0;', txt));\n            return;\n        }\n        ziel.appendChild(el('div', 'font-size: 1.05rem; font-weight: 700; margin: 0 0 6px;' + URTEIL[b.urteil], T['urteil_' + b.urteil]));\n        ziel.appendChild(el('p', ZELLE + ' margin: 0 0 12px;', text('zusammenfassung', { basis: b.basis, vorhanden: b.zaehlung.vorhanden + b.zaehlung.weitergeleitet, gesamt: b.dateien.length, soft: b.zaehlung.soft_404 })));\n\n        ziel.appendChild(el('div', UEBERSCHRIFT, T.h_dateien));\n        var huelle = el('div', 'overflow-x: auto;');\n        var gp = gitter('auto auto auto auto auto');\n        [T.spalte_pfad, T.spalte_zustand, T.spalte_status, T.spalte_typ, T.spalte_groesse].forEach(function (s) { gp.appendChild(el('div', ZELLE + ' font-weight: 700; color: var(--text-primary, #e8e8ee); white-space: nowrap;', s)); });\n        b.dateien.forEach(function (f) {\n            gp.appendChild(el('div', ZELLE_WERT + ' white-space: nowrap;', f.pfad));\n            gp.appendChild(el('div', ZELLE_WERT + ZUSTAND_FARBE[f.zustand] + ' white-space: nowrap;', T['zustand_' + f.zustand] + (f.zustand === 'weitergeleitet' &#038;&#038; f.endurl ? ' \u2192 ' + f.endurl : '')));\n            gp.appendChild(el('div', ZELLE_WERT + GRAU, f.status === null ? '-' : String(f.status)));\n            gp.appendChild(el('div', ZELLE_WERT + GRAU, f.contentType || '-'));\n            gp.appendChild(el('div', ZELLE_WERT + GRAU, f.zustand === 'vorhanden' ? kb(f.bytes) : '-'));\n        });\n        huelle.appendChild(gp);\n        ziel.appendChild(huelle);\n        var g = gitter('auto auto');\n        if (b.dauer !== null) { paar(g, T.zeile_dauer, b.dauer + ' ms', GRAU); }\n        if (b.limitRest !== null) { paar(g, T.zeile_limit, String(b.limitRest), GRAU); }\n        ziel.appendChild(g);\n\n        ziel.appendChild(el('div', UEBERSCHRIFT, T.h_befunde));\n        var irgendwas = false;\n        STUFEN.forEach(function (s) {\n            var gr = b.gruppen[s];\n            if (!gr.length) { return; }\n            irgendwas = true;\n            ziel.appendChild(el('div', 'font-weight: 700; font-size: 0.82rem; text-transform: uppercase; letter-spacing: 0.5px; margin: 14px 0 6px; color: ' + FARBEN[s] + ';', T['stufe_' + s] + ' (' + gr.length + ')'));\n            gr.forEach(function (f) {\n                var k = el('div', KASTEN + ' border-left: 3px solid ' + FARBEN[s] + ';');\n                var t = text('befund_' + f.key, f.daten) || f.key;\n                var teile = t.split(' || ');\n                k.appendChild(el('div', 'color: var(--text-primary, #e8e8ee); font-size: 0.9rem; font-weight: 700;', teile[0]));\n                if (teile[1]) { k.appendChild(el('div', ZELLE + ' padding: 6px 0 0; line-height: 1.55;', teile[1])); }\n                ziel.appendChild(k);\n            });\n        });\n        if (!irgendwas) { ziel.appendChild(el('p', ZELLE + ' margin: 0;', T.keine_befunde)); }\n    }\n    window.LW_TEST.WK.darstellen = darstellen;\n\n    var laeuft = false;\n    btn.addEventListener('click', function () {\n        if (laeuft) { return; }\n        laeuft = true; btn.disabled = true;\n        out.innerHTML = '';\n        out.appendChild(el('p', ZELLE + GRAU + ' margin: 0;', T.laeuft));\n        abfragen(wert('wk-url')).then(function (a) { darstellen(bewerten(a), out); laeuft = false; btn.disabled = false; },\n            function () { darstellen(bewerten({ fehler: 'netz' }), out); laeuft = false; btn.disabled = false; });\n    });\n})();\n<\/script><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Pobiera trzyna\u015bcie plik\u00f3w polityk, kt\u00f3re domena mo\u017ce publikowa\u0107 pod sta\u0142ymi \u015bcie\u017ckami, od security.txt i robots.txt przez ads.txt, gpc.json i llms.txt po change-password, assetlinks i powi\u0105zanie aplikacji Apple, i sprawdza ka\u017cdy wed\u0142ug jego w\u0142asnych regu\u0142: obecny, wygas\u0142y, mi\u0119kkie 404, z\u0142y typ tre\u015bci, nieczytelny.<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":9284,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"template-tool-base.php","meta":{"footnotes":""},"tags":[92151,92295,92077],"class_list":["post-15566","page","type-page","status-publish","hentry","tag-prywatnosc-danych-pl-pl","tag-seo-pl","tag-web-security-pl"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Inspektor plik\u00f3w well-known i polityk: security.txt, ads.txt, gpc.json, llms.txt - Lukas Wojcik - Blog<\/title>\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\/narzedzia\/well-known-policy-files-inspector-security-txt-ads-txt\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Inspektor plik\u00f3w well-known i polityk: security.txt, ads.txt, gpc.json, llms.txt - Lukas Wojcik - Blog\" \/>\n<meta property=\"og:description\" content=\"Pobiera trzyna\u015bcie plik\u00f3w polityk, kt\u00f3re domena mo\u017ce publikowa\u0107 pod sta\u0142ymi \u015bcie\u017ckami, od security.txt i robots.txt przez ads.txt, gpc.json i llms.txt po change-password, assetlinks i powi\u0105zanie aplikacji Apple, i sprawdza ka\u017cdy wed\u0142ug jego w\u0142asnych regu\u0142: obecny, wygas\u0142y, mi\u0119kkie 404, z\u0142y typ tre\u015bci, nieczytelny.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lukaswojcik.com\/blog\/pl\/narzedzia\/well-known-policy-files-inspector-security-txt-ads-txt\/\" \/>\n<meta property=\"og:site_name\" content=\"Lukas Wojcik - Blog\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/08\/og-default.jpg\" \/>\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\/jpeg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/narzedzia\\\/well-known-policy-files-inspector-security-txt-ads-txt\\\/\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/narzedzia\\\/well-known-policy-files-inspector-security-txt-ads-txt\\\/\",\"name\":\"Inspektor plik\u00f3w well-known i polityk: security.txt, ads.txt, gpc.json, llms.txt - Lukas Wojcik - Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\"},\"datePublished\":\"2026-09-05T12:29:49+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/narzedzia\\\/well-known-policy-files-inspector-security-txt-ads-txt\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/narzedzia\\\/well-known-policy-files-inspector-security-txt-ads-txt\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/narzedzia\\\/well-known-policy-files-inspector-security-txt-ads-txt\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Toolbox\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/toolbox-3\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Inspektor plik\u00f3w well-known i polityk: security.txt, ads.txt, gpc.json, llms.txt\"}]},{\"@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\":\"luky\",\"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\":\"luky\"},\"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":"Inspektor plik\u00f3w well-known i polityk: security.txt, ads.txt, gpc.json, llms.txt - Lukas Wojcik - Blog","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\/narzedzia\/well-known-policy-files-inspector-security-txt-ads-txt\/","og_locale":"en_US","og_type":"article","og_title":"Inspektor plik\u00f3w well-known i polityk: security.txt, ads.txt, gpc.json, llms.txt - Lukas Wojcik - Blog","og_description":"Pobiera trzyna\u015bcie plik\u00f3w polityk, kt\u00f3re domena mo\u017ce publikowa\u0107 pod sta\u0142ymi \u015bcie\u017ckami, od security.txt i robots.txt przez ads.txt, gpc.json i llms.txt po change-password, assetlinks i powi\u0105zanie aplikacji Apple, i sprawdza ka\u017cdy wed\u0142ug jego w\u0142asnych regu\u0142: obecny, wygas\u0142y, mi\u0119kkie 404, z\u0142y typ tre\u015bci, nieczytelny.","og_url":"https:\/\/www.lukaswojcik.com\/blog\/pl\/narzedzia\/well-known-policy-files-inspector-security-txt-ads-txt\/","og_site_name":"Lukas Wojcik - Blog","og_image":[{"width":1200,"height":630,"url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/08\/og-default.jpg","type":"image\/jpeg"}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/narzedzia\/well-known-policy-files-inspector-security-txt-ads-txt\/","url":"https:\/\/www.lukaswojcik.com\/blog\/pl\/narzedzia\/well-known-policy-files-inspector-security-txt-ads-txt\/","name":"Inspektor plik\u00f3w well-known i polityk: security.txt, ads.txt, gpc.json, llms.txt - Lukas Wojcik - Blog","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#website"},"datePublished":"2026-09-05T12:29:49+00:00","breadcrumb":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/narzedzia\/well-known-policy-files-inspector-security-txt-ads-txt\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lukaswojcik.com\/blog\/pl\/narzedzia\/well-known-policy-files-inspector-security-txt-ads-txt\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/narzedzia\/well-known-policy-files-inspector-security-txt-ads-txt\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.lukaswojcik.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Toolbox","item":"https:\/\/www.lukaswojcik.com\/blog\/toolbox-3\/"},{"@type":"ListItem","position":3,"name":"Inspektor plik\u00f3w well-known i polityk: security.txt, ads.txt, gpc.json, llms.txt"}]},{"@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":"luky","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":"luky"},"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\/pages\/15566","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/types\/page"}],"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=15566"}],"version-history":[{"count":0,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/pages\/15566\/revisions"}],"up":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/pages\/9284"}],"wp:attachment":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media?parent=15566"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/tags?post=15566"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}