Imperva Incapsula
と CapMonster Cloud

キャプチャの解決、サイトへの導入、およびテスト。

Imperva Incapsulaソリューションの価格

キャプチャ
価格 (USD)
$ 2.00
1000トークン
キャプチャや防御機構が導入済みのサイトを引き継いだのに、ソースコードへアクセスできない? その場合、どの仕組みが入っているのか、設定は正しいのか、どう検証するのかが気になります。

この記事では、よくある疑問にできるだけお答えしました。まず最初のステップは、どのような保護システムが使われているかを特定することです。そのために、代表的なキャプチャやボット対策システムの一覧を参照できます。ここには、どの仕組みが使われているかを素早く見分けるための画面イメージや主な特徴がまとめられています。

もしサイトで Imperva Incapsula が使われていることが分かったら、次のステップはその特徴と動作をより詳しく確認することです。同じこの記事の中で、Imperva Incapsula をサイトに導入するための手順書も確認できるので、あなたのサイト上でどのように機能しているのかをしっかり理解できます。これにより、現在の保護を正しく把握できるだけでなく、今後の運用や保守も計画的に行えるようになります。

Incapsula とは
Incapsula とは
Imperva Incapsula Web Protection は、外部の脅威からWebサイトやアプリケーションを保護するためのクラウドベースのシステムです。このシステムは、世界中のCDNサーバーに配置された安全なリバースプロキシとWeb Application Firewall (WAF) を使用しています。サイトへのアクセスは保護された Imperva サーバーを経由するため、すべてのリクエストを検証し、悪意のある活動をフィルタリングすることが可能です。

CapMonster Cloud を使用して Incapsula を解決する方法

Imperva Incapsula で保護されたページをテストする際、保護が正しく機能しているか、システムが疑わしいトラフィックを適切にフィルタリングしているかを確認する必要がある場合がよくあります。

サイトの保護機能は手動で確認できます:

  • 目的のページを開き、Incapsula がチェック(検証)を表示することを確認します。
  • チェックを完了せずにアクセスしてみてください。サイトはエラー 405 または追加のチャレンジ(challenge)を返すはずです。
  • チェックに合格すると、エラーなしでアクセスできるようになります。

このようなチェックを自動化するには、CapMonster Cloud のようなサービスを使用できます。

CapMonster は Imperva のチャレンジパラメータ(例:_incap_ Cookie、HTML やスクリプトからのデータ)を受け取り、それらを処理して、ブラウザや HTTP クライアントに適用可能な有効な Cookie を返します。

CapMonster Cloud API を使った一般的な手順:

タスクの作成タスクの作成
arrow
API リクエストの送信API リクエストの送信
arrow
結果の受信結果の受信
arrow
ページへの Incapsula Cookie の挿入ページへの Incapsula Cookie の挿入
arrow
既製のライブラリを使用した Imperva Incapsula の認識
CapMonster Cloud サービスは、Python および JavaScript (Node.js) 言語で快適に作業できる既製のライブラリを提供しています。
Python
JavaScript
解決、パラメータの取得、および Cookie の設定
Web ページでのキャプチャ認識の完全なサイクルのための Node.js の例です。可能なアプローチ:HTTP リクエストを使用して HTML と保護システムのパラメータを取得し、レスポンスを送信して結果を処理する。または自動化ツール(例:Playwright)を使用する — ページを開き、チェックを待ち、CapMonster Cloud クライアント経由でパラメータを送信し、結果を受け取り、Cookie をブラウザに設定し(テストには正しいデータと不正なデータの両方を使用できます)、結果を確認します。
// 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);

Imperva Incapsula を自分のサイトに接続する方法
サイトでのキャプチャの動作を確実に把握し、検証ロジックを理解し、保護を再接続または再設定するには、このセクションを確認することをお勧めします。保護の接続プロセスについて説明されており、すべてのニュアンスを素早く理解するのに役立ちます。

1. アカウントを作成し(登録には職場のメールアドレスを使用してください)、Imperva Cloud Security Console に移動します。

2. メールを確認します。ログイン後、コントロールパネルに移動します(Security Console の操作についての詳細は、ドキュメントを参照してください)。

3. Websites セクションを開き、サイトの実際のドメインを入力します。

HowTo Connect image 1

Imperva は自動的に以下を行います:

  • DNS プロバイダーの検出、
  • SSL の確認、
  • DNS レコードのスキャンの開始。

4. DNS レコードを設定します。Imperva が以下のステップを表示した場合:

Point dev.mysite.com DNS records to Imperva

以下を実行してください:

  • レジストラまたはホスティングの DNS パネルに移動します。
  • レコードを作成または更新します:


タイプ (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 は自動的に以下を行います:

  • CDN の展開、
  • WAF (Web Application Firewall) の有効化、
  • HTTPS 証明書の作成、
  • DDoS およびボットからの保護の有効化。

6. サーバーへの直接アクセスを制限する(推奨)

トラフィックが必ず Imperva を経由するようにするには、サーバー側で以下を行う必要があります:

  • Imperva の IP アドレスからのアクセスのみを許可する、
  • 直接接続を禁止する(自分の IP を除く)、

詳細は Create Rules セクションで確認できます。

7. サイトの動作を確認します。有効化後、

  • ブラウザでサブドメイン/ドメインを開く、
  • または curl を使用する:

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 を経由していることを意味します。

Background
想定されるエラーとデバッグ
Bug Icon
無効なドメインまたはルール — Challenge が表示されない。
Security Rule が正しいドメインとパスに紐付けられているか、IncapRules や ACL との競合がないかを確認してください。
Bug Icon
ページの読み込みまたは検証のタイムアウト。
ブラウザが Imperva からの応答を待機できていない可能性があります。テストのタイムアウト時間を延長し、バックエンドが十分に速く応答することを確認してください。
Bug Icon
期限切れの Imperva Cookie。
古い visid_incapincap_sesnlbi は、再度の Challenge やブロックの原因となります。
Bug Icon
過敏なルール。
厳格なシグネチャは、サイトへの実際の訪問者をブロックする可能性があります。
Bug Icon
不適切な設定。
サイトの特性を考慮していない誤った設定やルールは、誤ったブロックや誤検知(False Positive)を引き起こします。
保護の堅牢性チェック
統合後は、システムが本当に自動化された操作からサイトを守れているか確認しましょう。
セキュリティと最適化のヒント
リスクレベルに応じて WAF とセキュリティポリシーを設定してください。より正確な制御のために、Managed Rules、Bot Protection、カスタムルールを使用してください。
セキュリティイベントと WAF の発動をログに記録し、誤検知を特定してブロックの原因を分析してください。
透明性を確保するために、<span class="font-bold">プライバシーポリシー</span>と<span class="font-bold">利用規約</span>へのリンクを追加してください。これは、透明性とセキュリティ要件への準拠において重要です。
まとめ

すでにキャプチャや別の保護システムが導入されているサイトを引き継いだものの、コードにはアクセスできない場合でも心配はいりません!どの技術が使われているかを特定するのはそれほど難しくありません。動作が正しいか確認するには、隔離されたテスト環境で認識サービスCapMonster Cloudを利用し、トークン処理の仕組みと検証ロジックが正しく機能しているかをチェックできます。

Imperva Incapsulaの場合も、システムを特定し、その挙動を調べて、保護機能が正しく動いていることを確認すれば十分です。この記事では、Imperva Incapsulaを見分ける方法と、その導入や再設定に関する手順書の見つけ方を紹介しました。これにより、防御を安心して維持し、その動作をしっかりと管理できます。

Conclusion
参考リンク
DocIconImperva Incapsula ドキュメントDocIconCloud Security Console へのログインDocIconCapMonster Cloud ドキュメント(Imperva Incapsula との連携)

Imperva Incapsula に関するよくある質問

公式の JavaScript および Python SDK ライブラリを使用すると、低レベル API のポーリングを手動で処理する代わりに、統合を簡素化できます。

一般的なロジックには次の手順が含まれます:

  1. websiteURLmetadata オブジェクトを持つ ImpervaRequest を作成します。この metadata には以下が含まれている必要があります:
    • incapsulaScriptUrl — Incapsula JS ファイル名。
    • incapsulaCookies — Incapsula からの cookies。document.cookie を使用してページ上で取得するか、リクエストヘッダー Set-Cookie: "incap_ses_=...; visid_incap_=..." で取得できます
    • reese84UrlEndpoint(任意)— reese84 fingerprint が送信される endpoint の名前。リクエストの中で見つかり、?d=site.com で終わります
  2. JavaScript/Node.js クライアントでは、Solve() を使用して完成したソリューションを待ちます。
  3. 返されたソリューションには有効な cookies が含まれます。

Python も同じ全体的な workflow に従います。

  1. Imperva アカウントを作成
  2. Cloud Security Console を開く
  3. Websites セクションにサイトを追加

Imperva は次に使用すべき DNS ターゲットを提供します。通常、接続するサブドメインの CNAME として設定します。

DNS 接続が確認されると、Imperva は CDN/WAF レイヤーを有効化し、リクエストを origin に転送する前にインフラ経由でトラフィックをルーティングします。

設定を確認するには、curl -I https://dev.mysite.com のようなヘッダーのみのリクエストを実行します。

トラフィックが Imperva 経由で正しく通過している場合、応答例には visid_incap_*incap_ses_* などの 403 Forbidden および Set-Cookie ヘッダーが含まれます。

Imperva Incapsula 統合エラーの多くは、proxy、cookies、timing、または rule 設定の問題が原因です。まず以下を確認してください:

  • Error 16: proxy の地理位置情報が必要なリージョンと一致しません。正しい国またはリージョンの proxy を使用してください。
  • 無効な domain または rule 設定: ターゲット domain、WAF rule のバインド、統合設定を確認してください。
  • 検証 timeout: 一部の challenge パラメータはすぐに期限切れになるため、最新のページデータを収集してすぐに送信してください。
  • 期限切れの Imperva cookies: リクエストを再試行する前に cookies を更新してください。
  • proxy またはブラウザの不一致: 独自の proxy を使用し、タスク用に現在の Windows browser userAgent を送信してください。
  • 繰り返しチェックまたは検証失敗: payload が間違っていると判断する前に、cookies、proxy リージョン、rule の感度、timeout 設定を確認してください。

動的パラメータ visid_incap_*incap_ses_* は短命です。期限切れの cookies を使用すると、Imperva は繰り返し challenge を発行するか、リクエストを完全にブロックします。修正方法は、ページから最新の cookies を再収集し、metadata オブジェクト内の更新された incapsulaCookies で CapMonster Cloud に新しいタスクをすぐに送信することです。

Imperva Incapsula は、CDN インフラ上に展開された安全な reverse proxies と Web Application Firewall を使用するクラウドベースの保護レイヤーとして説明されています。

このモデルでは、サイトトラフィックは Imperva サーバー経由でルーティングされ、トラフィックが origin に到達する前にリクエストを検査し、悪意のある活動をフィルタリングできます。

このアーキテクチャを効果的にするために、サーバーへの直接アクセスを制限し、適切な場合は Imperva IP レンジからのトラフィックのみを許可することも推奨します。