Przejdź do głównej treści
Grafika przedstawia ukryty obrazek

Jak chronić stronę internetową przed botami? Skuteczne metody zabezpieczeń

Grafika SVG Bot Internetowy

Internet jest pełen botów – niektóre z nich są pożyteczne (np. boty wyszukiwarek), ale wiele działa na szkodę właścicieli stron internetowych. Złośliwe boty mogą generować sztuczny ruch, zbierać dane (scraping), atakować formularze logowania, wysyłać spam, czy próbować wykrywać luki bezpieczeństwa. Dlatego ochrona strony WWW przed botami to dziś nie opcjonalna praktyka, a konieczność.

1. CAPTCHA i reCAPTCHA

CAPTCHA (Completely Automated Public Turing test to tell Computers and Humans Apart) to popularna metoda weryfikacji, czy użytkownik jest człowiekiem. Google reCAPTCHA (v2 i v3) to najczęściej stosowane rozwiązanie, oferujące różne poziomy trudności:

  • reCAPTCHA v2: użytkownik klika checkbox „Nie jestem robotem” lub rozwiązuje obrazkową zagadkę.
  • reCAPTCHA v3: działa w tle i ocenia użytkownika na podstawie jego zachowania (skala ryzyka 0.0–1.0).

Zalety: Skuteczna bariera dla prostych botów.
Wady: Może irytować użytkowników lub być obchodzona przez zaawansowane boty.

2. Filtrowanie ruchu po User-Agent i IP

Boty często ujawniają swój typ w nagłówku „User-Agent” lub pochodzą z podejrzanych adresów IP. Można zablokować znanych spamerów, crawlerów lub sieci TOR.

  • Blacklisty IP i User-Agent
  • Geo-blokowanie (np. jeśli boty pochodzą z określonych krajów)

Zalety: Prosta implementacja.
Wady: Łatwo obejść przez zmiany User-Agent lub VPN.

3. WAF (Web Application Firewall)

WAF to zapora aplikacyjna działająca na poziomie HTTP. Rozpoznaje nietypowe wzorce ruchu i ataki, np. SQL Injection, XSS, brute force.

Popularne usługi WAF:

  • Cloudflare
  • AWS WAF
  • Sucuri

Zalety: Szeroka ochrona, aktualizacje sygnatur zagrożeń.
Wady: Koszt i konieczność konfiguracji.

4. Ograniczanie liczby zapytań (Rate Limiting / Throttling)

Można ograniczyć liczbę zapytań z jednego IP w określonym czasie. Skutecznie zapobiega to atakom DDoS i brute force.

Zalety: Prosta konfiguracja na poziomie serwera (nginx, Apache) lub aplikacji.
Wady: Może zablokować prawdziwych użytkowników przy intensywnym ruchu.

5. Ukrywanie formularzy przed botami (honeypot fields)

Dodaje się ukryte pola w formularzach. Użytkownicy ich nie widzą, ale boty je wypełniają – to wyraźny sygnał do odrzucenia formularza.

Zalety: Niewidoczne dla użytkownika, skuteczne na proste boty.
Wady: Nie działa na inteligentniejsze boty.

6. Analiza zachowania użytkownika

Boty zachowują się inaczej niż ludzie. Przykłady nietypowego zachowania:

  • Zbyt szybkie uzupełnienie formularza
  • Brak ruchu myszy
  • Nieprzewidywalne lub nadmierne odświeżanie

Można zastosować skrypty JavaScript analizujące interakcję i blokujące podejrzanych użytkowników.

7. Tokeny CSRF i sesje tymczasowe

Zapobieganie automatycznemu przesyłaniu formularzy przez boty poprzez dodawanie tokenów CSRF (Cross-Site Request Forgery) do formularzy i weryfikowanie ich po stronie serwera.

Zalety: Chroni przed zautomatyzowanymi atakami formularzy.
Wady: Wymaga dodatkowej logiki po stronie serwera.

8. Sprawdzanie DNS i reputacji IP

Można używać zewnętrznych usług do sprawdzania reputacji odwiedzających adresów IP, np.:

  • Project Honey Pot
  • AbuseIPDB

Przykłady zabezpieczeń

1. Honeypot – ukryte pole formularza

Dodaj w formularzu ukryte pole, którego prawdziwy użytkownik nie wypełni:

HTML:

<form method="POST" action="handler.php">
    <input type="text" name="email" placeholder="Twój e-mail" required>
    <input type="text" name="website" style="display:none;"> <!-- honeypot -->
    <input type="submit" value="Wyślij">
</form>

PHP (handler.php):

if (!empty($_POST['website'])) {
    die("Zablokowano – wykryto bota.");
}

// Dalej przetwarzaj formularz

2. CSRF Token – ochrona formularzy

Formularz (HTML + PHP token):

session_start();
if (empty($_SESSION['csrf_token'])) {
    $_SESSION['csrf_token'] = bin2hex(random_bytes(32));
}
?>
<form method="POST" action="handler.php">
    <input type="hidden" name="csrf_token" value="<?php echo $_SESSION['csrf_token']; ?>">
    <input type="text" name="email" placeholder="Twój e-mail">
    <input type="submit" value="Wyślij">
</form>

Weryfikacja tokena (handler.php):

session_start();
if ($_POST['csrf_token'] !== $_SESSION['csrf_token']) {
    die("Nieprawidłowy token CSRF.");
}

3. Rate Limiting – ograniczenie liczby zapytań

Prosty limit oparty na adresie IP i czasie:

session_start();
$ip = $_SERVER['REMOTE_ADDR'];
$time = time();
$limit = 5; // maksymalnie 5 zapytań
$interval = 60; // w ciągu 60 sekund

if (!isset($_SESSION['requests'])) {
    $_SESSION['requests'] = [];
}

$_SESSION['requests'] = array_filter($_SESSION['requests'], function($timestamp) use ($time, $interval) {
    return ($timestamp > $time - $interval);
});

if (count($_SESSION['requests']) >= $limit) {
    die("Zbyt wiele zapytań. Spróbuj ponownie później.");
}

$_SESSION['requests'][] = $time;

4. Prosta walidacja User-Agent

Można zablokować znanych botów:

$userAgent = $_SERVER['HTTP_USER_AGENT'];
$botKeywords = ['bot', 'spider', 'crawler', 'curl'];

foreach ($botKeywords as $keyword) {
    if (stripos($userAgent, $keyword) !== false) {
        die("Dostęp zabroniony.");
    }
}

5. Behavioral CAPTCHA – czas wypełnienia formularza

Zabezpieczenia behavioralne polegają na analizie zachowania użytkownika w celu odróżnienia człowieka od bota. Przykładowe cechy analizowane to: czas wypełniania formularza, ruchy myszy, kliknięcia czy interakcje z elementami strony.

Poniżej znajdziesz prosty przykład zabezpieczenia behavioralnego w PHP i JavaScript – mierzymy czas, jaki użytkownik potrzebuje, aby wysłać formularz. Boty zazwyczaj robią to natychmiast.

HTML + JavaScript (formularz z pomiarem czasu)

<form method="POST" action="handler.php" onsubmit="return addTime()">
    <input type="email" name="email" required placeholder="Twój e-mail">
    <input type="hidden" name="form_time" id="form_time" value="">
    <input type="submit" value="Wyślij">
</form>

<script>
    const start = Date.now();

    function addTime() {
        const end = Date.now();
        const seconds = Math.round((end - start) / 1000);
        document.getElementById("form_time").value = seconds;
        return true;
    }
</script>

PHP – weryfikacja zachowania (czas wypełnienia)

$minTime = 5; // minimalny czas (sekundy), jaki człowiek potrzebuje na wypełnienie formularza

if (!isset($_POST['form_time']) || $_POST['form_time'] < $minTime) {
    die("Podejrzana aktywność. Formularz wysłany zbyt szybko.");
}

Opcjonalne rozwinięcia:

  • dodaj ruchy myszy lub kliknięcia przy użyciu addEventListener() i przekaż liczbę interakcji do PHP;
  • połącz z analizą IP lub user-agent;
  • dodaj scoring (np. reCAPTCHA v3 działa w ten sposób).

Zestawienie znanych botów

Wyszukiwarki i indeksowanie stron

Bot Opis
Googlebot Bot Google indeksujący strony internetowe.
Bingbot Indeksuje witryny dla wyszukiwarki Bing.
YandexBot Bot wyszukiwarki rosyjskiej Yandex.
Baiduspider Bot chińskiej wyszukiwarki Baidu.
DuckDuckBot Bot DuckDuckGo zbierający dane do wyszukiwarki.
Sogou Spider Indeksuje strony dla chińskiej wyszukiwarki Sogou.
Exabot Francuski bot wyszukiwarki Exalead.
SeznamBot Czeski bot wyszukiwarki Seznam.
YouBot Bot indeksujący dane dla wyszukiwarki You.com.
TimpiBot Bot nowej zdecentralizowanej wyszukiwarki Timpi.

Boty AI / Chatboty / LLM-y

Bot Opis
GPTBot Bot OpenAI służący do zbierania danych treningowych dla modeli GPT.
ClaudeBot Bot firmy Anthropic zasilający model Claude.
PerplexityBot Bot wyszukiwarki AI Perplexity.ai.
Cohere-AI Bot firmy Cohere do analizy danych językowych.
AI2Bot Bot Allen Institute for AI do badań i eksploracji semantycznej.
MistralAI-User Crawler wykorzystywany przez Mistral do trenowania modeli językowych.

SEO, marketing i analityka

Bot Opis
AhrefsBot Zbiera dane SEO dla narzędzia Ahrefs.
SemrushBot Podobnie – bot narzędzia SEMrush.
MJ12bot Używany przez Majestic SEO do zbierania danych linków.
DotBot Bot Moz (wcześniej Open Site Explorer).
MegaIndex Rosyjski bot SEO monitorujący linki i widoczność.
ZoominfoBot Zbiera dane firm do celów B2B i marketingowych.

Agregacja danych i crawling ogólny

Bot Opis
CCBot Crawler Common Crawl – otwarta baza indeksu WWW.
CensysInspect Bot Censys.io – skanuje internet w celach badawczych (cybersecurity).
Diffbot Bot przekształcający strony WWW w strukturalne dane (np. dla AI).
omgili Bot agregujący dane z forów, blogów i komentarzy.
Bytespider Bot firmy ByteDance (TikTok) do eksploracji treści.

Boty social media

Bot Opis
FacebookExternalHit Indeksuje treści strony internetowej, udostępnionej w aplikacji z rodziny Meta.
Meta-ExternalAgent Szkolenie modeli AI lub ulepszanie produktow poprzez bezpośrednie indeksowanie treści.
Meta-ExternalFetcher Pobieranie linków w celu obsługi określonych funkcji produktu.
Twitterbot Służy do tworzenia podglądów linków na Twitterze/X.
LinkedInBot Renderuje podglądy linków w LinkedIn.
Pinterestbot Indeksuje grafiki i linki dla Pinterest.

Mobilne i komercyjne boty firmowe

Bot Opis
Applebot Bot Apple służący Siri i Spotlight.
Amazonbot Bot Amazona do analizy treści np. dla Alexa.
AdsBot-Google / Mobile / Video / News / Image Różne boty Google do oceny reklam, treści mobilnych, newsów i multimediów.
Google-Read-Aloud Umożliwia odczytywanie treści przez zamianę tekstu ze stron internetowych na mowę (TTS).

Narzędzia techniczne / testowe

Bot Opis
Screaming Frog SEO Spider Desktopowe narzędzie do audytów SEO, które symuluje bota.
PhantomJS Headless browser do automatyzacji i testów.
python-requests Biblioteka Python do wykonywania zapytań HTTP – często wykorzystywana przez własne skrypty.
curl / wget Narzędzia terminalowe do pobierania danych – często w botach i crawlerach.

Podsumowanie

Ochrona przed botami to złożony proces. Nie ma jednej uniwersalnej metody – skuteczna strategia polega na połączeniu kilku warstw zabezpieczeń. Najlepiej zacząć od CAPTCHA, rate limiting i honeypotów, a następnie rozważyć wdrożenie WAF i zaawansowanej analizy ruchu.

Pamiętaj: Równowaga między bezpieczeństwem a wygodą użytkownika to klucz.

11 maja 2025 23

Kategorie

programowanie

Dziękujemy!
()

Powiązane wpisy


Informacja o cookies

Moja strona internetowa wykorzystuje wyłącznie niezbędne pliki cookies, które są wymagane do jej prawidłowego działania. Nie używam ciasteczek w celach marketingowych ani analitycznych. Korzystając z mojej strony, wyrażasz zgodę na stosowanie tych plików. Możesz dowiedzieć się więcej w mojej polityce prywatności.