ARK. D04Parametr monitoringuDostępność · lista 50 parametrów

Weryfikacja treści

ważność wysokamierzonysposób content

Obecność kluczowego tekstu na stronie. Wykrywa białe strony, podmienioną treść i błąd PHP bez kodu 500.

ARK. 1

WIKI

artykuł z 16.09.2026 · źródeł 10

Weryfikacja treści (ang. content monitoring, keyword monitoring) to parametr monitoringu stron internetowych, który pobiera stronę i sprawdza, czy odpowiedź serwera zawiera ustalony wcześniej fragment tekstu, nazywany frazą kontrolną. Pomiar kończy się jednym z trzech wyników: fraza jest, frazy nie ma albo strony nie udało się pobrać. Parametr uzupełnia sprawdzenie kodu odpowiedzi. Klasyczne wtyczki monitorujące obok listy kodów oczekiwanych w linii statusu mają osobne opcje dla napisu, który musi wystąpić w treści, dla wyrażenia regularnego, także bez rozróżniania wielkości liter, oraz dla minimalnego i maksymalnego rozmiaru strony w bajtach [1].

Jak działa

Sonda wysyła żądanie GET, odbiera całą odpowiedź i przeszukuje jej treść. Kod odpowiedzi mówi, jak serwer ocenił obsługę żądania, ale nie opisuje tego, co zobaczy odwiedzający. Google nazywa „soft 404” adres, który zwraca kod 200, a strona informuje o błędzie albo nie ma głównej treści. Wśród przyczyn wymienia brak pliku dołączanego po stronie serwera, zerwane połączenie z bazą danych, pusty wynik wyszukiwarki wewnętrznej i niezaładowany plik JavaScript [4]. Takie strony są wyłączane z wyników wyszukiwania [4].

RYS. 1.1Kod 200 przy złej treści

Najprostszy wariant to wyszukanie podciągu: fraza musi wystąpić w odpowiedzi dokładnie w zapisanej postaci. Wyrażenie regularne toleruje różnice w zapisie, a dopasowanie odwrócone zgłasza błąd wtedy, gdy wzorzec się pojawi, co pozwala szukać tekstów, których na stronie być nie powinno [1]. Warunek minimalnego rozmiaru pozwala odrzucić odpowiedzi puste albo podejrzanie krótkie [1].

Sonda bez silnika przeglądarki widzi wyłącznie HTML wysłany przez serwer. W modelu „app shell” początkowy HTML nie zawiera właściwej treści, a ta powstaje dopiero po wykonaniu JavaScriptu [7]. Fraza wybrana z widoku w przeglądarce może więc nie istnieć w surowej odpowiedzi.

RYS. 1.2Decyzja weryfikacji treści

Standardy i specyfikacje

Weryfikacja treści nie ma własnej normy. Jest konwencją narzędzi monitorujących, a jej opcje opisuje dokumentacja tych narzędzi [1]. W praktyce stosuje się trzy metody porównania:

MetodaCo porównujeSłabość
Fraza kontrolnaobecność napisu albo wzorca w treści [1]nie widzi zmian w pozostałej części strony
Suma kontrolna stronyskrót całej odpowiedzi z wartością wzorcowąnonce zmienia się przy każdym załadowaniu strony [8]
Porównanie wizualnezrzut ekranu z obrazem wzorcowym [9]wynik zależy od systemu, przeglądarki i sprzętu [9]

Suma kontrolna słabo pasuje do stron generowanych dynamicznie. MDN zaleca, by atrybut nonce, używany przez Content Security Policy do dopuszczania skryptów wbudowanych, był generowany inaczej przy każdym załadowaniu strony [8]. Strona z takim atrybutem nie odda więc dwóch identycznych odpowiedzi, nawet gdy nic się na niej nie zmieniło.

Porównanie wizualne w Playwright przy pierwszym uruchomieniu zapisuje zrzuty wzorcowe, a przy kolejnych porównuje z nimi nowe zrzuty biblioteką pixelmatch; opcja maxDiffPixels określa, ile pikseli może się różnić [9]. Elementy zmienne można ukryć własnym arkuszem stylów, co zwiększa powtarzalność zrzutów, a wzorce powinny powstawać w tym samym środowisku, w którym odbywa się porównanie [9].

Zagrożenia i skutki

Biały ekran. Błędy PHP i błędy bazy danych w WordPressie mogą objawiać się pustym ekranem bez żadnej informacji, nazywanym białym ekranem śmierci (WSOD). Jako przyczyny dokumentacja wskazuje wtyczkę powodującą niezgodność oraz motyw, zwłaszcza tuż po jego aktywacji [2].

Komunikat błędu w treści. Stała WP_DEBUG_DISPLAY decyduje, czy komunikaty debugowania trafiają do HTML stron; domyślnie ma wartość true, a WP_DEBUG domyślnie false. Dokumentacja nie zaleca trybu debugowania na działających witrynach [3]. Gdy jest włączony, ostrzeżenia i błędy PHP stają się częścią strony, a odpowiedź nadal może mieć kod 200. Dla sondy to obraz soft 404: sukces w kodzie, błąd w treści [4].

Defacement. MITRE ATT&CK opisuje zewnętrzny defacement (T1491.002) jako zmianę systemów dostępnych z zewnątrz, która ma przekazać komunikat, zastraszyć albo wprowadzić w błąd organizację lub użytkowników. Częstym celem są publiczne strony WWW; technikę stosują m.in. grupy haktywistów, a bywa ona wstępem do dalszych ataków [5]. Wykrywanie według MITRE obejmuje śledzenie zmian w plikach HTML, JS i CSS serwowanych przez witrynę [5]. Fraza kontrolna wykryje podmianę tylko wtedy, gdy ta usunie frazę; skrypt dopisany do strony z nienaruszoną stopką przejdzie niezauważony.

Zatruta pamięć podręczna. Web cache poisoning to technika, w której atakujący wykorzystuje zachowanie serwera i pamięci podręcznej tak, by szkodliwa odpowiedź trafiała do innych użytkowników [6]. Cache rozpoznaje żądania po kluczu, zwykle linii żądania i nagłówku Host; składniki żądania spoza klucza mogą zmienić odpowiedź serwera, a zapisana kopia jest potem wydawana wszystkim [6]. Skutkiem bywa XSS, wstrzyknięcie JavaScriptu albo otwarte przekierowanie, a atak da się zautomatyzować tak, by zatruwał cache bez końca [6]. Sonda, która pobiera stronę przez ten sam CDN co odwiedzający, widzi tę samą kopię.

Fałszywe alarmy. Frazę usuwa też zwykła przebudowa strony, a tekst dokładany JavaScriptem nie występuje w pierwotnym HTML [7]. Strona chroniona przez Cloudflare może zamiast treści oddać stronę wyzwania: pełnoekranowy ekran wyświetlany przed docelowym adresem, na którym przeglądarka musi wykonać JavaScript, zwykle w mniej niż pięć sekund [10]. Klient, który nie wykonuje JavaScriptu, zobaczy tylko ekran wyzwania, a w nim frazy nie ma.

Przykłady

SytuacjaCo widzi sondaWynik frazy
Błąd PHP lub bazy danych, WSOD [2]pusta albo prawie pusta odpowiedźbrak
Włączone wyświetlanie błędów [3]kod 200, komunikaty PHP w HTMLzależy od miejsca frazy
Zerwane połączenie z bazą danych [4]kod 200, strona z komunikatem błędubrak
Pełna podmiana strony głównej [5]obca treśćbrak
Dopisany skrypt, stopka bez zmianstrona z frazą i obcym kodemjest
Zatruta kopia w cache [6]szkodliwa odpowiedź z pamięci podręcznejzależy od podmiany
Wyzwanie JavaScript przed stroną [10]ekran weryfikacji zamiast treścibrak
Treść budowana przez JavaScript [7]szkielet HTML bez właściwej treścibrak
Strona z nonce CSP [8]odpowiedź różna przy każdym pobraniujest; suma kontrolna by się zmieniła
TAB. 1.1Przypisy10
  1. [1] check_http — Monitoring Plugins Manual · Monitoring Plugins
  2. [2] Common WordPress Errors · WordPress.org
  3. [3] Debugging in WordPress · WordPress.org
  4. [4] Troubleshoot crawling errors — soft 404 errors · Google Search Central
  5. [5] Defacement: External Defacement (T1491.002) · MITRE ATT&CK
  6. [6] Web cache poisoning · PortSwigger Web Security Academy
  7. [7] Understand JavaScript SEO basics · Google Search Central
  8. [8] nonce — HTML global attribute · MDN Web Docs
  9. [9] Visual comparisons · Playwright (Microsoft)
  10. [10] Interstitial Challenge Pages · Cloudflare
ARK. 2

STATS

wyniki z systemu · tylko liczby zbiorcze
TAB. 2.1Odczyty per stronaostatni dzień pomiaru 21.09.2026
Stron zmierzonych
194w ostatnim dniu pomiaru
OK
268odczytów
Fail
41odczytów
Nie dało się sprawdzić
5timeout, blokada, limit zapytań
Udział fail
13,3%bez „nie dało się”
TAB. 2.2Od początkuod 17.09.2026
Stron łącznie
195choć jeden odczyt
OK
1529odczytów
Fail
213odczytów
Nie dało się sprawdzić
17timeout, blokada, limit zapytań
Udział fail
12,2%bez „nie dało się”
RYS. 2.130 dnicheck_type: content
23.08.202607.09.202621.09.2026
Odczyty parametru Weryfikacja treści, 30 dni · wysokość słupka = liczba odczytów dnia, warstwy od dołu: fail, nie dało się sprawdzić, ok · dni bez odczytu: 25 · dni ze stanem „fail”: 17.09.2026, 18.09.2026, 19.09.2026, 20.09.2026, 21.09.2026 · dni ze stanem „nie dało się sprawdzić”: 19.09.2026, 20.09.2026, 21.09.2026
Odczyty parametru Weryfikacja treści, 30 dni
Dzieńfailnie dało się sprawdzićok
23.08.20260 odczytów0 odczytów0 odczytów
24.08.20260 odczytów0 odczytów0 odczytów
25.08.20260 odczytów0 odczytów0 odczytów
26.08.20260 odczytów0 odczytów0 odczytów
27.08.20260 odczytów0 odczytów0 odczytów
28.08.20260 odczytów0 odczytów0 odczytów
29.08.20260 odczytów0 odczytów0 odczytów
30.08.20260 odczytów0 odczytów0 odczytów
31.08.20260 odczytów0 odczytów0 odczytów
01.09.20260 odczytów0 odczytów0 odczytów
02.09.20260 odczytów0 odczytów0 odczytów
03.09.20260 odczytów0 odczytów0 odczytów
04.09.20260 odczytów0 odczytów0 odczytów
05.09.20260 odczytów0 odczytów0 odczytów
06.09.20260 odczytów0 odczytów0 odczytów
07.09.20260 odczytów0 odczytów0 odczytów
08.09.20260 odczytów0 odczytów0 odczytów
09.09.20260 odczytów0 odczytów0 odczytów
10.09.20260 odczytów0 odczytów0 odczytów
11.09.20260 odczytów0 odczytów0 odczytów
12.09.20260 odczytów0 odczytów0 odczytów
13.09.20260 odczytów0 odczytów0 odczytów
14.09.20260 odczytów0 odczytów0 odczytów
15.09.20260 odczytów0 odczytów0 odczytów
16.09.20260 odczytów0 odczytów0 odczytów
17.09.202633 odczyty0 odczytów162 odczyty
18.09.202631 odczytów0 odczytów161 odczytów
19.09.202675 odczytów9 odczytów480 odczytów
20.09.202633 odczyty3 odczyty458 odczytów
21.09.202641 odczytów5 odczytów268 odczytów
TAB. 2.3Ustaleniaod 13.07.2026
Otwarte teraz
42stron: 42 · w okresie łaski: 9
Nowe w ostatnim dniu
821.09.2026
Otwarte od początku
181stron: 98
Zamknięte
130od początku
Mediana trwania
6 h 0 minod wykrycia do zamknięcia
UstalenieSkutekOtwarte terazŁącznieZamknięte
Weryfikacja treści contentWARNING42181130
RYS. 2.2Nowe ustalenia, 30 dni
23.08.202607.09.202621.09.2026
Nowe ustalenia parametru Weryfikacja treści, 30 dni · wysokość słupka = liczba ustaleń dnia, warstwy od dołu: nowe ustalenia · dni bez odczytu: 9
Nowe ustalenia parametru Weryfikacja treści, 30 dni
Dzieńnowe ustalenia
23.08.20265 ustaleń
24.08.20262 ustalenia
25.08.20263 ustalenia
26.08.20263 ustalenia
27.08.20262 ustalenia
28.08.20260 ustaleń
29.08.20261 ustalenie
30.08.20263 ustalenia
31.08.20263 ustalenia
01.09.20261 ustalenie
02.09.20261 ustalenie
03.09.20261 ustalenie
04.09.20260 ustaleń
05.09.20263 ustalenia
06.09.202619 ustaleń
07.09.20261 ustalenie
08.09.20265 ustaleń
09.09.202615 ustaleń
10.09.20260 ustaleń
11.09.20260 ustaleń
12.09.20260 ustaleń
13.09.20260 ustaleń
14.09.20260 ustaleń
15.09.20260 ustaleń
16.09.20260 ustaleń
17.09.202615 ustaleń
18.09.20262 ustalenia
19.09.202614 ustaleń
20.09.20261 ustalenie
21.09.20268 ustaleń
TAB. 2.4Przebiegi z tym sposobem sprawdzeniaod 09.09.2026
Przebiegów
60sposób content
W 30 dni
60przebiegów
Ostatni
19.09.2026start przebiegu
Stron w przebiegach
20461 przebiegów bez liczby stron
ARK. 3

CARD

karta z kodu CREATO_PING, odczyt 16.09.2026
RYS. 3.1Droga parametru przez system: Weryfikacja treści
TAB. 3.1Pomiarpliki: 6
Obszar i ważnośćDostępność · wysoka (D04)
Workflow i częstotliwośćcreato_ping_avail_v2 działa na LAB247cron co 24 h, osobno T1–T4 · Strony w stanie DOWN i WARNING dostają dodatkowy odczyt co 6 h (timer availability_recheck poza n8n). Od 2026-09-16 sposób ssl daje odczyt ssl_expiry (dni do wygaśnięcia certyfikatu); od 2026-09-17 odczyty trafiają do check_results.
Sonda i helpersposób content · CREATO_PING/helpers/content_check.py
Testy
  1. Fraza kontrolna z opisu zadania strony w ClickUp; ustala ją onboarding strony z surowego HTML strony głównej. Pusta fraza = fail bez żądania (codzienny skan odrzuca ten wynik przed zapisem).
  2. GET https://domena/ — zawsze strona główna — z UA monitora, do 5 przekierowań.
  3. Przy 403, 406, 415, 429 albo 451 druga próba z UA przeglądarki; kod ≥ 400 = fail bez szukania frazy.
  4. Fraza szukana jako dokładny podciąg surowego HTML: z rozróżnianiem wielkości liter, bez dekodowania encji, bez wykonania JavaScriptu, bez progu długości treści.
  5. Skan dostępności raz na dobę (do 50 stron równolegle) i odczyt co 6 h stron DOWN/WARNING.
Typ wynikuenum: ok / fail / timeout + kod HTTP, fraza znaleziona (tak/nie), flaga ua_fallback
Jednostkabrak — wynik jakościowy (obecność frazy); czas pierwszego żądania w ms
Próg i regułaReguła: kod < 400 i fraza w treści = ok; brak frazy albo kod ≥ 400 = fail. Timeout odpowiedzi 5,0 s, połączenia 2,0 s.
Gdzie leżą pokrętłaCREATO_PING/helpers/config.py → TIMEOUTS["content"]CREATO_PING/helpers/common.py → BLOCK_LIKE_STATUSESCREATO_PING/helpers/site_params.py → CRITICAL_CHECK_TYPES (content poza listą)expected_content_string per strona — w opisie zadania strony w ClickUp
Retencja odczytówKażdy odczyt w tabeli check_results bazy LAB247; kod LAB247 tej tabeli nie czyści. Polityki retencji nikt jeszcze nie ustalił.
Znane rozbieżności
  1. Podmieniona treść wychodzi tylko wtedy, gdy podmiana usunie frazę: skrypt, spam albo komunikat PHP dopisany do strony z nienaruszoną frazą dają ok.
  2. Biała strona nie ma własnego powodu: pusta odpowiedź 200 daje ten sam błąd co zmieniona treść, bez progu długości.
  3. Trzeci stan praktycznie nie występuje: brak odpowiedzi przez 5 s daje fail z błędu biblioteki, nie timeout.
  4. Kod ≥ 400 daje fail treści obok failu kodu HTTP — jedna awaria, dwa ustalenia. Blokada WAF, której nie przejdzie też UA przeglądarki, daje WARNING, choć treści nie sprawdzono.
  5. Porównanie dosłowne: inna wielkość liter, encja HTML albo strona w kodowaniu innym niż UTF-8 podanym tylko w meta dają fałszywy fail.
  6. Pusta fraza: odczyt co 6 h przekazuje fail do zapisu, a codzienny skan nie wyśle ok, które by go zamknęło (do potwierdzenia na produkcji).
  7. Kod HTTP, znaleziona fraza i ua_fallback nie docierają do zapisu — przekazanie niesie tylko status, czas i błąd.
  8. Sprawdzana jest tylko strona główna; podmiana podstron (regulamin, kontakt, koszyk) przechodzi niezauważona.
kandydaci do pętli: kod a opis parametru albo specyfikacja
Karta przepisana zCREATO_PING/helpers/content_check.py · CREATO_PING/helpers/common.py · CREATO_PING/helpers/config.py · CREATO_PING/helpers/site_params.py · CREATO_PING/helpers/availability_recheck.py · CREATO_PING/tools/avail_writer_input.py · odczyt 16.09.2026
TAB. 3.2Co oznacza failtypów ustaleń: 1

1. fail = okres łaski (IN PROGRESS, bez alertu). 2. fail z rzędu = ustalenie otwarte z etykietą WARNING — content nie jest sprawdzeniem krytycznym i nie daje DOWN; gdy pada też kod HTTP, DOWN przychodzi z tamtego parametru. Pierwszy odczyt ok zamyka ustalenie.

UstaleniePowagaPewnośćSkutekSubtask / alarmCo zrobić
Weryfikacja treścicontentNormalneEwidentneWARNINGtak / nieSprawdź, czy strona nie wyświetla pustej treści lub błędu PHP.
ARK. 4

LOOP

pętli: 1
RYS. 4.1Pętla parametru — sześć etapów
TAB. 4.1Trafność, 30 dnialarmy · prawdziwe · fałszywe · bez rozstrzygnięcia

Trafności jeszcze nie liczymy: zamknięcie subtaska nie niesie dziś werdyktu (prawdziwy / fałszywy / nie dało się sprawdzić). Cztery liczby pojawią się, gdy każde zamknięcie dostanie werdykt — to warunek startu pętli 1.

TAB. 4.2Pętle1 · zmian: 1 · wpływających na cały system: 1
WAF blokujący UA monitora to nie awariazamknięta historyczna 2026-07-19

Sygnał: Strony za WAF-em albo wtyczką bezpieczeństwa zwracały sondzie 403/429, a działały dla ludzi — fałszywe DOWN. · dotyczy też: Kod odpowiedzi HTTP, Przekierowanie HTTP → HTTPS

  1. 1. Zbiórkaręcznieodczyt z nocnego skanu, bez zapisu per strona
  2. 2. Werdyktręcznieczłowiek potwierdził, że strona działa w przeglądarce
  3. 3. Miarabrakliczników trafności wtedy nie było
  4. 4. Kartabrakkarta parametru powstała 2026-09-16
  5. 5. Zmianazrobionedruga próba z UA przeglądarki
  6. 6. Replaybrakbrak zapisanych odczytów do replayu
DataZmianaPowódWpływ na systemCommit · replay
2026-07-19Przy kodzie 403, 406, 415, 429 albo 451 sprawdzenie ponawia żądanie z UA przeglądarki; 2xx/3xx za drugim razem = ok (w przekierowaniu: adres końcowy na https).helpers/common.py · helpers/http_check.py · helpers/content_check.py · helpers/redirect_check.pyBlokada robotów na poziomie aplikacji nie jest niedostępnością strony.cały system Ta sama reguła obowiązuje w weryfikacji treści — oba sprawdzenia czytają BLOCK_LIKE_STATUSES z common.py.343b699bez replayubez zapisu zatwierdzenia
Blog 24/7
20.09Zastrzeżony PESEL: zmiana raz na 30 minut, blokada przy wypłaciedobreprogramy.pl20.09Fałszywe SMS-y od GITD o mandacie za autostradę wyłudzają dane kartyinstalki.pl20.09Pakiet npm indexed-btree omija blokadę skryptów instalacyjnychbleepingcomputer.com19.09SolarWinds łata CVE-2026-28326 w Access Rights Manager, zdalny kod bez logowaniathehackernews.com19.09Orkes Conductor: luka CVE-2026-58138 atakowana w sieci, poprawka w wersji 3.30.2thehackernews.com19.09Trzy luki jądra Linux w katalogu CISA KEV, Red Hat potwierdza aktywne atakithehackernews.com18.09Publiczne exploity na cztery luki jądra Linux dają lokalnie uprawnienia rootthehackernews.com18.09Brevo: skradziony klucz API Cloudflare i skrypty ClickFix na stronach klientówbleepingcomputer.com18.09WaterPlum z Korei Północnej zainfekowała 30 000 urządzeń w 100 krajachtherecord.media18.09Jedna zgoda OAuth daje napastnikowi dostęp do poczty i plików mimo MFAdarkreading.com