logo
bars

Imperva Incapsula
i CapMonster Cloud

Rozwiązywanie captcha, instalacja na stronie i testowanie.
Odziedziczyłeś stronę z już wdrożoną captchą lub ochroną, ale bez dostępu do kodu źródłowego? Naturalnie pojawia się pytanie, jaka technologia jest używana, czy działa poprawnie i jak ją przetestować.

W tym artykule staraliśmy się odpowiedzieć na wszystkie najważniejsze pytania. Pierwszym krokiem w rozwiązywaniu problemu jest ustalenie, jaki system ochrony jest używany. W tym celu możesz skorzystać z listy popularnych captcha i systemów ochrony antybotowej, gdzie znajdziesz przykłady graficzne oraz kluczowe cechy, które pomogą szybko rozpoznać, z czym masz do czynienia.

Jeśli okaże się, że na Twojej stronie używany jest Imperva Incapsula, kolejnym krokiem będzie dokładniejsze poznanie jej właściwości i sposobu działania. W tym artykule możesz również zapoznać się z instrukcją integracji systemu Imperva Incapsula, aby w pełni zrozumieć, jak funkcjonuje on na Twojej stronie. Dzięki temu nie tylko lepiej poznasz obecną ochronę, ale też świadomie zaplanujesz jej dalsze utrzymanie.

Czym jest Incapsula
Czym jest Incapsula
Imperva Incapsula Web Protection to oparty na chmurze system ochrony stron internetowych i aplikacji przed zagrożeniami zewnętrznymi. System wykorzystuje bezpieczne odwrotne serwery proxy (reverse proxies) oraz zaporę aplikacji internetowych (WAF), rozmieszczone na całym świecie na serwerach CDN. Ruch na stronie jest kierowany przez bezpieczne serwery Imperva, co pozwala na sprawdzanie każdego żądania i filtrowanie szkodliwych działań.

Jak rozwiązać Incapsula przez CapMonster Cloud

Podczas testowania stron chronionych przez Imperva Incapsula często zachodzi potrzeba upewnienia się, że ochrona działa poprawnie, a system właściwie filtruje podejrzany ruch.

Możesz ręcznie sprawdzić działanie ochrony na swojej stronie:

  • Otwórz wybraną stronę i upewnij się, że Incapsula wyświetla weryfikację.
  • Spróbuj wejść bez ukończenia weryfikacji — strona powinna zwrócić błąd 405 lub dodatkowe wyzwanie (challenge).
  • Po przejściu weryfikacji dostęp powinien zostać otwarty bez błędów.

Do automatyzacji takich sprawdzeń można użyć usług takich jak CapMonster Cloud.

CapMonster przyjmuje parametry wyzwania Imperva (np. plik cookie _incap_, dane z HTML i skryptów), przetwarza je u siebie i zwraca gotowe ważne pliki cookie, które można wstawić do przeglądarki lub klienta HTTP.

Praca z CapMonster Cloud poprzez API zazwyczaj obejmuje następujące kroki:

Tworzenie zadaniaTworzenie zadania
arrow
Wysyłanie żądania APIWysyłanie żądania API
arrow
Odebranie wynikuOdebranie wyniku
arrow
Wstawianie plików cookie Incapsula na stronęWstawianie plików cookie Incapsula na stronę
arrow
Rozpoznawanie Imperva Incapsula przy użyciu gotowych bibliotek
Usługa CapMonster Cloud udostępnia gotowe biblioteki do wygodnej pracy w językach Python i JavaScript (Node.js).
Python
JavaScript
Rozwiązanie, pobranie parametrów i ustawienie plików cookie
Przykład w Node.js dla pełnego cyklu rozpoznawania captcha na Twojej stronie internetowej. Możliwe podejścia: użycie zapytań HTTP do pobrania HTML i parametrów systemu ochrony, wysłanie odpowiedzi i przetworzenie wyniku. Lub za pomocą narzędzi do automatyzacji (np. Playwright) — otwarcie strony, oczekiwanie na weryfikację, wysłanie parametrów przez klienta CapMonster Cloud, odebranie wyniku, wstawienie plików cookie do przeglądarki (do testów można użyć zarówno poprawnych, jak i niepoprawnych danych) i zobaczenie wyniku.
// npm install playwright @zennolab_com/capmonstercloud-client
// npx playwright install chromium

import { chromium } from "playwright";
import { CapMonsterCloudClientFactory, ClientOptions, ImpervaRequest } from '@zennolab_com/capmonstercloud-client';

async function main() {
    // 1) Ustawienia
    const TARGET_URL = "https://example.com";
    const API_KEY = "YOUR_CAPMONSTER_API_KEY";

    const proxy = {
        proxyType: "http",
        proxyAddress: "PROXY_IP",
        proxyPort: 8080,
        proxyLogin: "PROXY_USER",
        proxyPassword: "PROXY_PASS"
    };

    // 2) Otwieramy stronę i zbieramy pliki cookie Imperva
    const browser = await chromium.launch({
        headless: true,
        proxy: {
            server: `${proxy.proxyType}://${proxy.proxyAddress}:${proxy.proxyPort}`,
            username: proxy.proxyLogin,
            password: proxy.proxyPassword
        }
    });

    const page = await browser.newPage();
    await page.goto(TARGET_URL, { waitUntil: "networkidle" });

    const cookies = await page.context().cookies();
    const impervaCookiesString = cookies
        .filter(c => c.name.startsWith("visid_incap_") || c.name.startsWith("incap_ses_"))
        .map(c => `${c.name}=${c.value}`)
        .join("; ");

    console.log("Pliki cookie Imperva z bieżącej strony:", impervaCookiesString);

    await browser.close();

    // 3) Rozwiązujemy wyzwanie (challenge) Imperva
    const cmcClient = CapMonsterCloudClientFactory.Create(
        new ClientOptions({ clientKey: API_KEY })
    );

    const impervaRequest = new ImpervaRequest({
        websiteURL: TARGET_URL,
        userAgent: "USER_AGENT_STRING",
        metadata: {
            incapsulaScriptUrl: "_Incapsula_Resource?example_param",
            incapsulaCookies: impervaCookiesString
        },
        proxy
    });

    const result = await cmcClient.Solve(impervaRequest);
    console.log("Rozwiązanie:", result);

    // 4) Podstawiamy otrzymane pliki cookie
    const domain = new URL(TARGET_URL).hostname;
    const solutionCookiesObj = result.solution.domains[domain].cookies;

    const solutionCookies = Object.entries(solutionCookiesObj).map(([name, value]) => ({
        name,
        value,
        domain: ".your-domain",
        path: "/",
        secure: true,
        httpOnly: false
    }));

    // 5) Ustawienie plików cookie i otwarcie strony
    const browser2 = await chromium.launch({
        headless: false,
        proxy: {
            server: `${proxy.proxyType}://${proxy.proxyAddress}:${proxy.proxyPort}`,
            username: proxy.proxyLogin,
            password: proxy.proxyPassword
        }
    });

    const context2 = await browser2.newContext();
    await context2.addCookies(solutionCookies);

    const page2 = await context2.newPage();
    const resp2 = await page2.goto(TARGET_URL, { waitUntil: "networkidle" });

    // Wyświetlenie statusu strony końcowej (opcjonalnie)
    // console.log("Status strony końcowej po ustawieniu plików cookie:", resp2?.status());

    // …lub końcowy zrzut ekranu
    // await page2.screenshot({ path: "final_page.png" });

    console.log("Strona załadowana z zastosowanymi plikami cookie Imperva.");
}

main().catch(console.error);

Jak podłączyć Imperva Incapsula do swojej strony
Aby pewnie orientować się w działaniu captcha na Twojej stronie, zrozumieć logikę jej weryfikacji, ponownie podłączyć lub skonfigurować ochronę, zalecamy zapoznanie się z tą sekcją. Opisano w niej proces podłączania ochrony — pomoże to szybko zrozumieć wszystkie niuanse.

1. Utwórz konto (do rejestracji użyj służbowego adresu e-mail) i przejdź do Imperva Cloud Security Console.

2. Potwierdź adres e-mail. Po zalogowaniu trafisz do panelu sterowania (więcej o pracy z Security Console możesz dowiedzieć się w dokumentacji).

3. Otwórz sekcję Websites i wprowadź rzeczywistą domenę swojej strony.

HowTo Connect image 1

Imperva automatycznie:

  • wykryje Twojego dostawcę DNS,
  • sprawdzi SSL,
  • rozpocznie skanowanie rekordów DNS.

4. Skonfiguruj rekordy DNS. Jeśli Imperva pokaże krok:

Point dev.mysite.com DNS records to Imperva

Wykonaj następujące czynności:

  • Wejdź do panelu DNS swojego rejestratora lub hostingu.
  • Utwórz lub zaktualizuj rekord:


Typ: CNAME
Nazwa: dev (podłączana subdomena)
Wartość: <twoj_host_imperva>.ng.impervadns.net

Przykład:

dev.mysite.com > CNAME > xivaxeo.ng.impervadns.net

Opcjonalnie: włącz obsługę klientów Non-SNI

Jeśli Imperva pokaże powiadomienie:

If you expect Non-SNI traffic…

Dotyczy to przestarzałych klientów i specyficznych integracji. Jeśli Twoja strona jest standardowa, ten krok można pominąć.

Jeśli to konieczne, włącz:

CDN > Delivery > Support Non-SNI clients

5. Poczekaj na weryfikację DNS. Imperva aktywuje ochronę i SSL.

Gdy DNS się połączy, Imperva automatycznie:

  • wdroży CDN,
  • aktywuje WAF (Web Application Firewall),
  • utworzy certyfikat HTTPS,
  • włączy ochronę przed DDoS i botami.

6. Ogranicz bezpośredni dostęp do swojego serwera (zalecane)

Aby ruch przechodził tylko przez Imperva, na swoim serwerze powinieneś:

  • zezwolić na dostęp tylko z adresów IP Imperva,
  • zablokować bezpośrednie połączenia (oprócz własnych IP),

Więcej szczegółów znajdziesz w sekcji Create Rules.

7. Sprawdź działanie strony. Po aktywacji

  • otwórz swoją subdomenę/domenę w przeglądarce,
  • lub użyj curl:

curl -I https://dev.mysite.com

W nagłówkach powinny pojawić się wiersze typu:


HTTP/1.1 403 Forbidden
Content-Type: text/html
Cache-Control: no-cache, no-store
Connection: close
Content-Length: 1234
X-Iinfo: 00-00000000-0 0NNN RT(1234567890 0) q(0 -1 -1 1) r(0 -1) B16(0,0,0) U24
Strict-Transport-Security: max-age=31536000
Set-Cookie: visid_incap_00000000000000000000000000000000=ABCDEFG1234567890TESTCOOKIE; expires=Wed, 11 Nov 2026 23:41:40 GMT; HttpOnly; path=/; Domain=.example.com; Secure; SameSite=None
Set-Cookie: incap_ses_0000_00000000=TESTSESSION1234567890; path=/; Domain=.example.com; Secure; SameSite=None

Oznacza to, że ruch przechodzi przez Imperva.

Background
Możliwe błędy i debugowanie
Bug Icon
Nieprawidłowa domena lub reguła — Challenge się nie wyświetla.
Sprawdź, czy Security Rule jest przypisana do właściwej domeny i ścieżki oraz czy nie ma konfliktów z IncapRules lub ACL.
Bug Icon
Przekroczenie limitu czasu (timeout) ładowania strony lub weryfikacji.
Przeglądarka może nie doczekać się odpowiedzi Imperva. Zwiększ limity czasu w testach i upewnij się, że backend odpowiada wystarczająco szybko.
Bug Icon
Wygasłe pliki cookie Imperva.
Przestarzałe wartości visid_incap, incap_ses, nlbi powodują ponowny Challenge lub blokadę.
Bug Icon
Zbyt czułe reguły.
Rygorystyczne sygnatury mogą blokować rzeczywistych odwiedzających Twoją stronę.
Bug Icon
Nieprawidłowa konfiguracja.
Błędne ustawienia lub reguły nie uwzględniające specyfiki strony powodują błędne blokady i fałszywe alarmy (false positives).
Sprawdzenie odporności ochrony
Po integracji upewnij się, że system faktycznie chroni stronę przed automatycznymi działaniami.
Rekomendacje dotyczące bezpieczeństwa i optymalizacji
Skonfiguruj WAF i Polityki Bezpieczeństwa zgodnie z poziomem ryzyka. Używaj Managed Rules, Bot Protection i niestandardowych reguł dla bardziej precyzyjnej kontroli.
Loguj zdarzenia bezpieczeństwa i uruchomienia WAF, aby identyfikować fałszywe alarmy i analizować przyczyny blokad.
Dla przejrzystości dodaj linki do <b>Polityki prywatności</b> i <b>Warunków użytkowania</b>. Jest to ważne dla przejrzystości i zgodności z wymogami bezpieczeństwa.
Wnioski

Jeśli przejąłeś stronę internetową, na której jest już zainstalowany captcha lub inny system zabezpieczeń, a jednocześnie nie masz dostępu do kodu — to nic strasznego! Dość łatwo jest ustalić, jaka dokładnie technologia jest używana. Aby sprawdzić poprawność działania, możesz skorzystać z usługi rozpoznawania CapMonster Cloud w odizolowanym środowisku testowym, żeby upewnić się, że mechanizm przetwarzania tokenów i logika weryfikacji działają prawidłowo.

W przypadku Imperva Incapsula wystarczy rozpoznać system, przeanalizować jego zachowanie i upewnić się, że zabezpieczenie działa poprawnie. W artykule pokazaliśmy, jak zidentyfikować Imperva Incapsula oraz gdzie znaleźć instrukcje dotyczące jego podłączenia lub ponownej konfiguracji, aby móc pewnie utrzymywać ochronę i kontrolować jej działanie.

Conclusion
Przydatne linki
DocIconDokumentacja Imperva IncapsulaDocIconLogowanie do Cloud Security ConsoleDocIconDokumentacja CapMonster Cloud (praca z Imperva Incapsula)