CAPTCHA の種類 · imperva
Imperva Incapsula 解決 API:reese84 と utmvc Cookie
SolveHub API で Imperva / Incapsula の保護を reese84 または UT.mvc モードで解決。各モードのフィールド、プロキシ要件、cURL 例、結果 Cookie、エラー。
許可された QA 自動化とブラウザー連携向けです。テスト権限のあるサイトと業務フローでのみ使用してください。
POST /v1/tasks に Authorization: Bearer <API_KEY>、Content-Type: application/json、Idempotency-Key 付きで送信します。事前にリアルタイム料金で利用可能か確認し、作成から照会までの流れはクイックスタートを参照してください。対象のチャレンジに応じてモードを選択してください。スクリプトのアドレスを混同しないでください。Reese84 では websiteURL,reeseScriptUrl が必要です。UT.mvc では websiteURL,isUtmvc:true,scriptURL が必要で、scriptURL は /_Incapsula_Resource?SWJIYLWA=... の完全なアドレスです。どちらのモードでも HTTP プロキシ、useragent、language は任意です。cookies はブラウザ Cookie の事前設定に使用でき、各項目には name,value のみを含めることができます。
ブラウザーの選択
useragent を指定する場合はデスクトップ Chrome/Chromium または Android Chrome を使用してください。Firefox、Edge、Opera、iOS は非対応です。Android の対応可否は互換性のあるデバイス指紋を生成できるかに依存します。
リクエストフィールド
外側の type と task は必須です。以下の task.* パスはすべて task オブジェクト内にあります。フィールド名は大文字と小文字を区別します。長さの制限は UTF-8 のバイト数で計算されます。
| フィールド | 型 | 必須 | 制限 | 説明 |
|---|---|---|---|---|
type |
文字列 | はい | imperva 固定 |
プラットフォームのタスクタイプ。 |
task |
JSON オブジェクト | はい | ≤ 7 MiB | このタイプのタスクパラメータ。 |
task.type |
文字列 | いいえ | 指定する場合は imperva であること |
旧リクエスト形式との互換用です。新規の連携では省略できます。 |
task.websiteURL |
HTTP(S) URL | はい | ≤ 2048 バイト | 解決対象ページの完全な URL です。アカウント名やパスワードは含めないでください。 |
task.isUtmvc |
真偽値 | いいえ | true / false |
true の場合は UT.mvc を選択します。省略または false の場合は Reese84 を使用します。 |
task.reeseScriptUrl |
HTTP(S) URL | Reese84 モード | ≤ 4096 バイト | Reese84 チャレンジスクリプトの完全な URL。 |
task.scriptURL |
HTTP(S) URL | UT.mvc モード | ≤ 4096 バイト | UT.mvc の /_Incapsula_Resource?... スクリプトの完全な URL。 |
task.cookies |
オブジェクト配列 | いいえ | ≤ 100 項目 | 事前設定する Cookie です。各項目には name と value の 2 つの文字列フィールドのみを含めることができます。 |
task.cookies[].name |
文字列 | 各項目で必須 | ≤ 256 バイト | 事前設定する Cookie の名前。 |
task.cookies[].value |
文字列 | 各項目で必須 | ≤ 4096 バイト | 事前設定する Cookie の値。 |
task.language |
文字列 | いいえ | ≤ 64 バイト | ブラウザの言語(例:zh-CN)。 |
task.useragent |
文字列 | いいえ | ≤ 512 バイト | カスタムのブラウザ User-Agent です。後続のリクエストでは、実際に返された solution.useragent を優先して使用してください。 |
task.proxyType |
文字列 | いいえ | http のみ |
プロキシのプロトコルです。指定する場合は http である必要があります。 |
task.proxyAddress |
文字列 | いいえ | ≤ 256 バイト | プロキシの IP アドレスまたはホスト名です。proxyPort と併せて指定する必要があります。 |
task.proxyPort |
文字列 | いいえ | 1–5 バイト、値は 1–65535 | プロキシのポートです。引用符で囲んだ数字の文字列で指定する必要があります。 |
task.proxyLogin |
文字列 | いいえ | ≤ 256 バイト | プロキシに認証が必要な場合のユーザー名です。アドレスとポートを指定せずに単独で指定することはできません。 |
task.proxyPassword |
文字列 | いいえ | ≤ 256 バイト | プロキシに認証が必要な場合のパスワードです。アドレスとポートを指定せずに単独で指定することはできません。 |
Reese84 リクエスト:
作成リクエストの例
{
"type": "imperva",
"task": {
"websiteURL": "https://example.com/protected",
"reeseScriptUrl": "https://example.com/challenge/reese.js"
}
}
cURL での呼び出し
例の API キー、サイト情報、プロキシを実際の値に置き換えてください。Idempotency-Key は同一の業務リクエストに対して同じ値を維持してください。
curl -sS -X POST 'https://www.tiam.codes/v1/tasks' \
-H 'Authorization: Bearer sh_REPLACE_ME' \
-H 'Content-Type: application/json' \
-H 'Idempotency-Key: example-imperva-0001' \
--data-binary @- <<'JSON'
{
"type": "imperva",
"task": {
"websiteURL": "https://example.com/protected",
"reeseScriptUrl": "https://example.com/challenge/reese.js"
}
}
JSON
UT.mvc リクエスト:
{
"type": "imperva",
"task": {
"websiteURL": "https://example.com/protected",
"isUtmvc": true,
"scriptURL": "https://example.com/_Incapsula_Resource?SWJIYLWA=example"
}
}
cURL での呼び出し
例の API キー、サイト情報、プロキシを実際の値に置き換えてください。Idempotency-Key は同一の業務リクエストに対して同じ値を維持してください。
curl -sS -X POST 'https://www.tiam.codes/v1/tasks' \
-H 'Authorization: Bearer sh_REPLACE_ME' \
-H 'Content-Type: application/json' \
-H 'Idempotency-Key: example-imperva-0001' \
--data-binary @- <<'JSON'
{
"type": "imperva",
"task": {
"websiteURL": "https://example.com/protected",
"isUtmvc": true,
"scriptURL": "https://example.com/_Incapsula_Resource?SWJIYLWA=example"
}
}
JSON
作成レスポンスと照会
作成に成功すると HTTP 202 が返され、status の初期値は通常 queued です。taskId を保存し、約 2–3 秒ごとに GET /v1/tasks/{taskId} を呼び出して照会してください。このタイプの処理のソフトタイムリミットは 180 秒 です。ソフトタイムリミットを超えると uncertain になる場合があります。受理済みのタスクの結果は引き続き確認できるため、クライアントは新しい冪等キー(Idempotency-Key)で安易に再作成しないでください。
結果フィールド
solution は status=completed の場合にのみ読み取ってください。下表は主なフィールドの一覧です。実際のフィールドは当該タスクのレスポンスに従ってください。
| フィールド | 型 | 読み取り方法 |
|---|---|---|
solution.cookies |
オブジェクト | Reese84 または UT.mvc のセッション Cookie です。完全なセットを保持する必要があります。 |
solution.useragent |
文字列 | 後続のリクエストで使用する User-Agent。 |
結果には solution.cookies と solution.useragent が含まれます。Reese84 では通常 reese84、UT.mvc では通常 ___utmvc が含まれ、そのほかのセッション Cookie が付随する場合もあります。結果の例:{"cookies":{"reese84":"EXAMPLE_COOKIE"},"useragent":"Mozilla/5.0 ..."}。後続のリクエストでは、完全な Cookie セット、返された User-Agent、および解決時のプロキシの送信元 IP を再利用してください。
失敗とトラブルシューティング
Reese84 と UT.mvc のスクリプトフィールドを混在させることはできません。cookies を送信する場合、各項目には name,value だけを過不足なく含める必要があります。プロキシのアドレスとポートは併せて指定してください。
作成リクエストでよく発生するエラーは 400 INVALID_TASK、402 INSUFFICIENT_BALANCE、429 TASK_LIMIT_EXCEEDED、503 TYPE_UNAVAILABLE です。作成済みのタスクが失敗した場合の公開エラーコードは TASK_FAILED または TASK_TIMEOUT で、uncertain は TASK_UNCERTAIN に対応します。詳しくは プラットフォーム API リファレンス を参照してください。
処理時間はタスク作成の受理確認後に起算し、待ち行列の時間は差し引きません。ノードの現在のタイムアウトは約120秒、プラットフォームのソフト期限は通信と結果確認を含め180秒です。
関連ドキュメント
最終更新: