Trong bài viết này, chúng tôi đã cố gắng trả lời tất cả những câu hỏi quan trọng. Bước đầu tiên để bắt đầu giải quyết vấn đề là xác định hệ thống bảo mật nào đang được sử dụng. Để làm điều đó, bạn có thể tham khảo danh sách các captcha và hệ thống chống bot phổ biến, trong đó có các ví dụ minh họa và những dấu hiệu chính giúp bạn nhanh chóng nhận biết mình đang làm việc với giải pháp nào.
Nếu bạn phát hiện trang web của mình đang sử dụng Imperva Incapsula, bước tiếp theo là tìm hiểu chi tiết hơn về các đặc tính và cách hoạt động của nó. Ngay trong bài viết này, bạn cũng có thể xem hướng dẫn tích hợp hệ thống Imperva Incapsula để hiểu đầy đủ cách nó vận hành trên trang web của bạn. Điều đó giúp bạn không chỉ nắm rõ lớp bảo vệ hiện tại mà còn lập kế hoạch bảo trì một cách hợp lý.
Khi kiểm thử các trang được bảo vệ bởi Imperva Incapsula, thường cần phải đảm bảo rằng lớp bảo vệ đang hoạt động chính xác và hệ thống đang lọc đúng lưu lượng truy cập đáng ngờ.
Bạn có thể kiểm tra thủ công hoạt động của lớp bảo vệ trên trang web của mình:
Để tự động hóa các kiểm tra như vậy, bạn có thể sử dụng các dịch vụ như CapMonster Cloud.
CapMonster chấp nhận các tham số thử thách của Imperva (ví dụ: cookie _incap_, dữ liệu từ HTML và tập lệnh), xử lý chúng và trả về cookie hợp lệ đã sẵn sàng, có thể được chèn vào trình duyệt hoặc ứng dụng khách HTTP (HTTP client).
Làm việc với CapMonster Cloud qua API thường gồm các bước:
Trong yêu cầu giải Incapsula, cần chỉ định các tham số sau:
type - CustomTask;
class - Imperva;
websiteURL - địa chỉ của trang chính nơi đặt Incapsula;
incapsulaScriptUrl (trong metadata) - "incapsulaScriptUrl": "_Incapsula_Resource?SWJIYLWA=719d34d31c8e3a6e6fffd425f7e032f3" — tên file js của Incapsula;
incapsulaCookies (trong metadata) - cookie của bạn từ Incapsula. Có thể lấy trên trang bằng document.cookie hoặc trong tiêu đề yêu cầu Set-Cookie: "incap_sess_*=...; visid_incap_*=..." (xem ví dụ yêu cầu /createTask);
reese84UrlEndpoint (trong metadata) - tên của điểm cuối (endpoint) nơi gửi reese84 fingerprint;
userAgent - User-Agent của trình duyệt. Chỉ gửi UA thực tế từ hệ điều hành Windows;
Ngoài ra, đối với tác vụ này, việc sử dụng proxy của riêng bạn là bắt buộc:
proxyType :
proxyAddress - Địa chỉ IP proxy IPv4/IPv6;
proxyPort - cổng (port) proxy;
proxyLogin - tên đăng nhập máy chủ proxy;
proxyPassword - mật khẩu máy chủ 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"
}
}
}
}
}Dữ liệu nhận được từ CapMonster Cloud (cookie Incapsula hợp lệ) có thể được đưa vào ngữ cảnh trình duyệt hoặc ứng dụng khách HTTP. Sau đó, trang web nhận ra yêu cầu là đã được xác minh và cho phép người dùng đi qua mà không cần thêm thử thách nào.
Để tự động hóa và kiểm thử, rất thuận tiện khi sử dụng Puppeteer, Selenium hoặc Playwright — chúng cho phép:
Bằng cách này, bạn có thể kiểm tra tính chính xác của lớp bảo vệ và đảm bảo rằng trang web xử lý đúng các phiên Incapsula hợp lệ.
// 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) Cài đặt
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) Mở trang web và thu thập 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("Cookie Imperva từ trang hiện tại:", impervaCookiesString);
await browser.close();
// 3) Giải quyết thử thách 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("Giải pháp:", result);
// 4) Chèn các cookie nhận được
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) Thiết lập cookie và mở trang
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" });
// Xuất trạng thái trang cuối cùng (tùy chọn)
// console.log("Trạng thái trang cuối cùng sau khi thiết lập cookie:", resp2?.status());
// …hoặc ảnh chụp màn hình cuối cùng
// await page2.screenshot({ path: "final_page.png" });
console.log("Trang đã tải với các cookie Imperva được áp dụng.");
}
main().catch(console.error);
1. Tạo tài khoản (sử dụng email công việc của bạn để đăng ký) và truy cập Imperva Cloud Security Console.
2. Xác nhận email. Sau khi đăng nhập, bạn sẽ đến bảng điều khiển (bạn có thể tìm hiểu thêm về cách làm việc với Security Console trong tài liệu).
3. Mở phần Websites và nhập tên miền thực của trang web của bạn.

Imperva sẽ tự động:
4. Cấu hình các bản ghi DNS. Nếu Imperva hiển thị bước này:
Point dev.mysite.com DNS records to ImpervaThực hiện như sau:
Loại (Type): CNAME
Tên (Name): dev (tên miền phụ bạn đang kết nối)
Giá trị (Value): <imperva_host_của_bạn>.ng.impervadns.net
Ví dụ:
dev.mysite.com > CNAME > xivaxeo.ng.impervadns.netTùy chọn: bật hỗ trợ cho máy khách Non-SNI
Nếu Imperva hiển thị thông báo:
If you expect Non-SNI traffic…
Điều này liên quan đến các máy khách lỗi thời và các tích hợp cụ thể. Nếu trang web của bạn là tiêu chuẩn, bước này có thể bỏ qua.
Nếu cần, hãy bật:
CDN > Delivery > Support Non-SNI clients
5. Đợi xác minh DNS. Imperva sẽ kích hoạt bảo vệ và SSL.
Khi DNS kết nối, Imperva sẽ tự động:
6. Hạn chế truy cập trực tiếp vào máy chủ của bạn (khuyên dùng)
Để lưu lượng truy cập đi chỉ qua Imperva, trên máy chủ của bạn, bạn nên:
Bạn có thể tìm hiểu thêm trong phần Create Rules.
7. Kiểm tra hoạt động của trang web. Sau khi kích hoạt
curl -I https://dev.mysite.comTrong các tiêu đề (headers) sẽ xuất hiện các dòng như:
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
Điều này có nghĩa là lưu lượng truy cập đang đi qua Imperva.
Nếu bạn tiếp quản một trang web đã được cài sẵn captcha hoặc một hệ thống bảo vệ khác nhưng lại không có quyền truy cập vào mã nguồn thì cũng không có gì đáng lo! Việc xác định chính xác công nghệ nào đang được sử dụng khá đơn giản. Để kiểm tra xem mọi thứ có hoạt động đúng hay không, bạn có thể dùng dịch vụ nhận dạng CapMonster Cloud trong một môi trường thử nghiệm tách biệt nhằm đảm bảo cơ chế xử lý token và logic kiểm tra đang vận hành chính xác.
Với Imperva Incapsula, bạn chỉ cần nhận diện hệ thống, quan sát hành vi của nó và xác nhận rằng lớp bảo vệ hoạt động đúng cách. Trong bài viết này, chúng tôi đã chỉ ra cách nhận biết Imperva Incapsula và nơi tìm hướng dẫn tích hợp hoặc cấu hình lại, giúp bạn tự tin duy trì lớp bảo vệ và kiểm soát hoạt động của nó.