SolveHub

验证码类型 · imperva

Imperva / Incapsula 识别 API:reese84 与 utmvc Cookie

通过 SolveHub API 处理 Imperva / Incapsula 防护,支持 reese84 与 UT.mvc 两种模式。各模式请求字段、代理要求、cURL 示例、结果 Cookie 与错误码。

适用于授权自动化测试、风控 QA 与浏览器集成。请仅在有权测试的站点和业务流程中使用。

创建此类任务:向 POST /v1/tasks 发送下方 JSON,附带 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 两个字符串字段。
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 调用

把示例中的 Key、站点信息与代理替换为你的实际值;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 调用

把示例中的 Key、站点信息与代理替换为你的实际值;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,有已受理任务的结果可继续核对,客户端不要用新幂等键盲目重建。

结果字段

只在 status=completed 时读取 solution;下表列出常用字段,实际字段以该任务响应为准。

字段 类型 读取方式
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 和解题时的代理出口。

失败与排查

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 秒软时限以等待网络和轮询结果。

支持的 User-Agent

相关文档

从 cURL 开始接入注册账户

最近更新: