この記事では、よくある疑問にできるだけお答えしました。まず最初のステップは、どのような保護システムが使われているかを特定することです。そのために、代表的なキャプチャやボット対策システムの一覧を参照できます。ここには、どの仕組みが使われているかを素早く見分けるための画面イメージや主な特徴がまとめられています。
もしサイトで Imperva Incapsula が使われていることが分かったら、次のステップはその特徴と動作をより詳しく確認することです。同じこの記事の中で、Imperva Incapsula をサイトに導入するための手順書も確認できるので、あなたのサイト上でどのように機能しているのかをしっかり理解できます。これにより、現在の保護を正しく把握できるだけでなく、今後の運用や保守も計画的に行えるようになります。
Imperva Incapsula で保護されたページをテストする際、保護が正しく機能しているか、システムが疑わしいトラフィックを適切にフィルタリングしているかを確認する必要がある場合がよくあります。
サイトの保護機能は手動で確認できます:
このようなチェックを自動化するには、CapMonster Cloud のようなサービスを使用できます。
CapMonster は Imperva のチャレンジパラメータ(例:_incap_ Cookie、HTML やスクリプトからのデータ)を受け取り、それらを処理して、ブラウザや HTTP クライアントに適用可能な有効な Cookie を返します。
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 フィンガープリントが送信されるエンドポイント名;
userAgent - ブラウザの User-Agent。Windows OS の実際の UA のみを送信してください;
また、このタスクには独自のプロキシの使用が必要です:
proxyType :
proxyAddress - プロキシの IP アドレス IPv4/IPv6;
proxyPort - プロキシのポート;
proxyLogin - プロキシサーバーのログインID;
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 チャレンジを解決します
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_ホスト>.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を見分ける方法と、その導入や再設定に関する手順書の見つけ方を紹介しました。これにより、防御を安心して維持し、その動作をしっかりと管理できます。