在本文中,我们尽量回答了所有关键问题。要开始解决问题,第一步是确定当前使用的是哪种防护系统。为此,您可以查看常见验证码与反机器人防护系统列表,其中提供了可视化示例和关键特征,帮助您快速判断自己正在使用哪一种方案。
如果您发现自己的网站使用的是 Imperva Incapsula,下一步就是更深入地了解它的特性和具体工作方式。在本文中,您还可以查看 Imperva Incapsula 的接入说明,以便彻底弄清它在您的网站上是如何运行的。这样一来,您不仅能更好地理解当前的防护机制,还可以更合理地规划后续的维护和支持。
在测试受 Imperva Incapsula 保护的页面时,通常需要确保防护功能正常工作,且系统能正确过滤可疑流量。
您可以手动检查网站上的防护工作情况:
为了自动化此类检查,可以使用像 CapMonster Cloud 这样的服务。
CapMonster 接收 Imperva 的挑战参数(例如 cookie _incap_、HTML 和脚本中的数据),在服务端进行处理,并返回现成的有效 Cookie,这些 Cookie 可以被填入浏览器或 HTTP 客户端中。
通过 CapMonster Cloud API 工作的一般流程:
在解除 Incapsula 的请求中,必须指定以下参数:
type - CustomTask;
class - Imperva;
websiteURL - Incapsula 所在的主页面地址;
incapsulaScriptUrl (在 metadata 内部) - "incapsulaScriptUrl": "_Incapsula_Resource?SWJIYLWA=719d34d31c8e3a6e6fffd425f7e032f3" — Incapsula js 文件名;
incapsulaCookies (在 metadata 内部) - 来自 Incapsula 的 Cookie。可以在页面上使用 document.cookie 获取,或在 Set-Cookie 请求头中获取:"incap_sess_*=...; visid_incap_*=..."(参见 /createTask 请求示例);
reese84UrlEndpoint (在 metadata 内部) - 发送 reese84 指纹(fingerprint)的端点名称;
userAgent - 浏览器的 User-Agent。请仅发送来自 Windows 操作系统的真实 UA;
此外,该任务必须使用您自己的代理:
proxyType :
proxyAddress - 代理 IP 地址 IPv4/IPv6;
proxyPort - 代理端口;
proxyLogin - 代理服务器用户名;
proxyPassword - 代理服务器密码.
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"
}
}
}
}
}从 CapMonster Cloud 接收到的数据(有效的 Incapsula Cookie)可以填入浏览器上下文或 HTTP 客户端。此后,网站会将请求识别为已验证,并允许用户通过而无需额外的挑战。
对于自动化和测试,建议使用 Puppeteer、Selenium 或 Playwright,因为它们允许:
这样可以检查防护的正确性,并确保网站正确处理有效的 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) 设置
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) 打开网站并收集 Imperva Cookie
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("来自当前页面的 Imperva Cookie:", impervaCookiesString);
await browser.close();
// 3) 解决 Imperva 挑战 (Challenge)
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("解决方案:", result);
// 4) 填入接收到的 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) 设置 Cookie 并打开页面
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" });
// 输出最终页面状态(可选)
// console.log("设置 Cookie 后的最终页面状态:", resp2?.status());
// …或最终截图
// await page2.screenshot({ path: "final_page.png" });
console.log("已应用 Imperva Cookie 加载页面。");
}
main().catch(console.error);
1. 创建账户(请使用您的工作邮箱注册)并进入 Imperva Cloud Security Console。
2. 确认邮箱。登录后,您将进入控制面板(您可以在文档中了解更多关于 Security Console 的操作)。
3. 打开 Websites 部分并输入您网站的真实域名。

Imperva 将自动:
4. 配置 DNS 记录。如果 Imperva 显示以下步骤:
Point dev.mysite.com DNS records to Imperva请执行以下操作:
类型 (Type): CNAME
名称 (Name): dev (您正在接入的子域名)
值 (Value): <您的_imperva_host>.ng.impervadns.net
示例:
dev.mysite.com > CNAME > xivaxeo.ng.impervadns.net可选:启用对 Non-SNI 客户端的支持
如果 Imperva 显示通知:
If you expect Non-SNI traffic…
这涉及过时的客户端和特定的集成。如果您的网站是标准的,可以跳过此步骤。
如果需要,请启用:
CDN > Delivery > Support Non-SNI clients
5. 等待 DNS 验证。Imperva 将激活防护和 SSL。
当 DNS 连接成功后,Imperva 将自动:
6. 限制对服务器的直接访问(推荐)
为了确保流量仅通过 Imperva,您应该在服务器上:
您可以在 Create Rules 部分了解更多详情。
7. 检查网站运行情况。激活后
curl -I https://dev.mysite.com请求头中应出现类似以下的行:
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
这意味着流量正在通过 Imperva。
如果你接手了一个已经集成了验证码或其他防护系统的网站,但又无法访问其代码,也不用担心!要判断实际使用了哪种技术其实并不难。为了核实其是否正常工作,你可以在隔离的测试环境中使用CapMonster Cloud识别服务,确保令牌处理机制和校验逻辑都运行正常。
对于Imperva Incapsula,只需识别出所用的系统,观察其行为,并确认防护是否正常工作即可。本文演示了如何识别 Imperva Incapsula,以及到哪里查找其接入或重新配置的说明文档,从而帮助你自信地维护防护方案并掌控其运行情况。