Słowniczek

Czym jest honeypot? Ochrona przed spamem bez CAPTCHA

20 maja 2026

Honeypot w formularzach internetowych to niewidoczne pole wejściowe ukryte przed użytkownikami przez CSS, ale widoczne dla botów parsujących HTML. Ponieważ prawdziwi użytkownicy nigdy go nie widzą ani nie wypełniają, każdy submit z wypełnionym honeypotem jest odrzucany jako spam. Technika spopularyzowała się około 2007 przez blogi antyspamowe i wtyczkę WordPress "Honeypot for Contact Form 7", stanowiąc przyjazną prywatności alternatywę dla CAPTCHA jak Google reCAPTCHA — bez skryptów stron trzecich, bez ciasteczek, bez problemów z dostępnością, bez spadku konwersji.

Jak działa honeypot?

Serwer dodaje do formularza dodatkowe pole (często website, url, email_confirm). Jest ukrywane przez display: none, visibility: hidden, position: absolute; left: -9999px, puste <label> lub tabindex="-1" autocomplete="off". Boty wypełniają wszystkie pola — także pułapkę. Na submit serwer sprawdza:

  1. Pole puste → człowiek, przetwórz.
  2. Pole wypełnione → bot, po cichu odrzuć lub zwróć 200 OK bez zapisu.

Honeypot vs CAPTCHA: co lepsze?

KryteriumHoneypotCAPTCHA (reCAPTCHA)
Tarcie dla użytkownikaBrakŚrednie–wysokie
Dostępność (WCAG 2.2)ZgodnyWymaga audio
Prywatność / RODOBez połączeń z zewnątrzSkrypty Google, zgoda wymagana
Wydajność~0 KB~200 KB JS
Wykrywanie botów~95 % prostego spamu~99 % także bystre boty
Wpływ na konwersjęBrak3–29 % spadek

Dla większości stron WordPress honeypot + kontrola czasu blokują aż nadto spamu — bez prawnych i UX-owych kosztów CAPTCHA.

Jak dodać honeypot do formularza WordPress?

Contact Form 7

Zainstaluj darmową wtyczkę "Honeypot for Contact Form 7" (ponad 1 mln aktywnych instalacji) i dodaj tag [honeypot website].

WPForms / Gravity Forms / Fluent Forms

Wszystkie trzy mają wbudowaną opcję honeypotu — jedno kliknięcie.

Własny formularz WordPress

<p style="position:absolute;left:-9999px;" aria-hidden="true">
  <label for="website">Zostaw to pole puste</label>
  <input type="text" name="website" id="website" tabindex="-1" autocomplete="off">
</p>
if ( ! empty( $_POST['website'] ) ) {
    wp_die( 'Wykryto spam', 'Błąd', array( 'response' => 200 ) );
}

Najlepsze praktyki dla honeypotów

  • Wiarygodne nazwy jak website, url, company.
  • Ukrywaj przez CSS, nie type="hidden".
  • tabindex="-1" + autocomplete="off".
  • aria-hidden="true" dla czytników ekranu.
  • Łącz z kontrolą czasu — odrzucaj wysłane poniżej 2–3 s.
  • Zwracaj 200 OK przy odrzuceniu.

Kiedy honeypot nie wystarczy?

Zaawansowane boty wykonujące JS i respektujące widoczność CSS (Puppeteer / headless Chrome) pomijają honeypoty. Dla celów wysokiej wartości (logowanie, płatność, lead-gen z nagrodą) łącz honeypot + czas + Cloudflare Turnstile lub rate limiting. Drugie znaczenie "honeypot" — celowo podatny serwer do badania atakujących — to osobne pojęcie cyberbezpieczeństwa.

Co sprawdza InspectWP

InspectWP analizuje każdy formularz na zindeksowanej stronie i sygnalizuje brak ochrony antyspamowej na formularzach kontaktowych i logowania. Wykrywa też skrypty Google reCAPTCHA w sekcji RODO.

Sprawdź teraz swoją stronę WordPress

InspectWP analizuje Twoją stronę WordPress pod kątem bezpieczeństwa, problemów SEO, zgodności z RODO i wydajności — za darmo.

Przeanalizuj stronę za darmo