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.
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:
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:
W zapytaniu o rozwiązanie Incapsula należy podać następujące parametry:
type - CustomTask;
class - Imperva;
websiteURL - adres strony głównej, na której znajduje się Incapsula;
incapsulaScriptUrl (wewnątrz metadanych) - "incapsulaScriptUrl": "_Incapsula_Resource?SWJIYLWA=719d34d31c8e3a6e6fffd425f7e032f3" — nazwa pliku js Incapsula;
incapsulaCookies (wewnątrz metadanych) - Twoje pliki cookie z Incapsula. Można je uzyskać na stronie za pomocą document.cookie lub w nagłówku odpowiedzi Set-Cookie: "incap_sess_*=...; visid_incap_*=..." (zobacz przykład zapytania /createTask);
reese84UrlEndpoint (wewnątrz metadanych) - nazwa punktu końcowego (endpoint), do którego wysyłany jest fingerprint reese84;
userAgent - User-Agent przeglądarki. Przekazuj tylko aktualny UA z systemu Windows;
Do tego zadania wymagane jest również użycie własnych serwerów proxy:
proxyType :
proxyAddress - Adres IP proxy IPv4/IPv6;
proxyPort - port proxy;
proxyLogin - login serwera proxy;
proxyPassword - hasło serwera proxy.
https://api.capmonster.cloud/createTask{
"clientKey": "API_KEY",
"task": {
"type": "CustomTask",
"class": "Imperva",
"websiteURL": "https://example.com",
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36",
"metadata": {
"incapsulaScriptUrl": "_Incapsula_Resource?SWJIYLWA=719d34d31c8e3a6e6fffd425f7e032f3",
"incapsulaCookies": "incap_ses_1166_2930313=br7iX33ZNCtf3HlpEXcuEDzz72cAAAAA0suDnBGrq/iA0J4oERYzjQ==; visid_incap_2930313=P3hgPVm9S8Oond1L0sXhZqfK72cAAAAAQUIPAAAAAABoMSY9xZ34RvRseJRiY6s+;",
"reese84UrlEndpoint": "Built-with-the-For-hopence-Hurleysurfecting-the-"
},
"proxyType": "http",
"proxyAddress": "8.8.8.8",
"proxyPort": 8080,
"proxyLogin": "proxyLoginHere",
"proxyPassword": "proxyPasswordHere"
}
}{
"errorId":0,
"taskId":407533072
}https://api.capmonster.cloud/getTaskResult{
"clientKey":"API_KEY",
"taskId": 407533072
}{
"errorId":0,
"status":"ready",
"solution": {
"domains": {
"https://example.com": {
"cookies": {
"___utmvc": "NMB+nRa4inxXNeXuh...MWIwNmU3MQ==; Max-Age=31536000; Domain=.site.com; Path=/; Secure; SameSite=Lax"
}
}
}
}
}Dane otrzymane od CapMonster Cloud (ważne pliki cookie Incapsula) można wstawić do kontekstu przeglądarki lub klienta HTTP. Po tym strona rozpoznaje żądanie jako zweryfikowane i przepuszcza użytkownika bez dodatkowych wyzwań.
Do automatyzacji i testowania wygodnie jest używać Puppeteer, Selenium lub Playwright — pozwalają one na:
W ten sposób można sprawdzić poprawność ochrony i upewnić się, że strona prawidłowo obsługuje ważne sesje Incapsula.
// 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);
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.

Imperva automatycznie:
4. Skonfiguruj rekordy DNS. Jeśli Imperva pokaże krok:
Point dev.mysite.com DNS records to ImpervaWykonaj następujące czynności:
Typ: CNAME
Nazwa: dev (podłączana subdomena)
Wartość: <twoj_host_imperva>.ng.impervadns.net
Przykład:
dev.mysite.com > CNAME > xivaxeo.ng.impervadns.netOpcjonalnie: 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:
6. Ogranicz bezpośredni dostęp do swojego serwera (zalecane)
Aby ruch przechodził tylko przez Imperva, na swoim serwerze powinieneś:
Więcej szczegółów znajdziesz w sekcji Create Rules.
7. Sprawdź działanie strony. Po aktywacji
curl -I https://dev.mysite.comW 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.
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.