What is Imperva Incapsula?
Imperva Incapsula is a CDN/WAF that protects ~27,000 sites including banks, insurance companies, and enterprise portals. It uses JS challenges (reese84 + utmvc) to fingerprint browsers and set authentication cookies. The reese84 challenge factors in IP ASN, TLS fingerprint, and behavioral signals before issuing clearance.
How it works
Send Task
POST your AntiImpervaTask with the target URL and sitekey to our API. We'll queue it instantly.
We Solve
Capzy's proprietary solver returns the Imperva reese84 / incap_ses session cookies plus the matching User-Agent. ProxyLess is routed for you; AntiImpervaTask uses your own proxy directly.
Get Token
Poll getTaskResult — when status is 'ready', the solution contains the token to inject into the target page.
Quick integration
import requests, time
API = "https://api.capzy.ai"
KEY = "capzy_your_key_here"
# Step 1: Create task
task = requests.post(f"{API}/createTask", json={
"clientKey": KEY,
"task": {
"type": "AntiImpervaTask",
"proxyPort": "8080",
"proxyType": "http",
"proxyLogin": "user",
"websiteURL": "https://example.com/protected",
"proxyAddress": "123.45.67.89",
"proxyPassword": "pass"
}
}).json()
task_id = task["taskId"]
print(f"Task created: {task_id}")
# Step 2: Poll for result
while True:
result = requests.post(f"{API}/getTaskResult", json={
"clientKey": KEY,
"taskId": task_id
}).json()
if result["status"] == "ready":
print("Solved!", result["solution"])
break
elif result["status"] == "failed":
print("Failed:", result.get("errorDescription"))
break
time.sleep(1)
# Step 3: Use the result — set every cookie on a session jar
sol = result["solution"]
session = requests.Session()
for c in sol["cookies"]:
session.cookies.set(c["name"], c["value"], domain=c.get("domain"), path=c.get("path", "/"))
session.headers["User-Agent"] = sol.get("userAgent", "")
# IMPORTANT: route through the SAME proxy you supplied at solve time
resp = session.get("https://target.example.com/", proxies={
"http": "http://USER:PASS@PROXY_HOST:PORT",
"https": "http://USER:PASS@PROXY_HOST:PORT",
})
print(resp.status_code, len(resp.text), "bytes")Task parameters
typetypestringreqyesAntiImpervaTaskProxyLess (residential routed) or AntiImpervaTask (your proxy)websiteURLtypestringreqyesThe Imperva-protected page URLproxyTypetypestringreqyesProxy protocol: http or httpsproxyAddresstypestringreqyesProxy IP address or hostnameproxyPorttypenumberreqyesProxy port numberproxyLogintypestringreqnoProxy username (if auth required)proxyPasswordtypestringreqnoProxy password (if auth required)userAgenttypestringreqyesUser-Agent string to use. Must match the UA you use when submitting the tokenSolution response
cookiestypearrayCookie objects `{name, value, domain, path}`. Includes `reese84` (Imperva's primary clearance), `incap_ses_*`, `visid_incap_*`, and any other Imperva cookies the deployment set.userAgenttypestringExact User-Agent the browser used. Imperva correlates UA with the TLS fingerprint that produced the cookies — reuse verbatim on replay.ipBoundtypebooleanAlways `true`. Imperva cookies are bound to the IP that solved the challenge — replay through the same proxy.domaintypestringHostname the cookies were validated against (host of `websiteURL`). Cookies are scoped to this domain.Example response
Full getTaskResult response shape. The fields in the table above describe what's inside solution — the outer envelope (errorId, status) is identical for every captcha type.
{
"errorId": 0,
"status": "ready",
"solution": {
"domain": "www.example.com",
"cookies": [
{
"name": "reese84",
"path": "/",
"value": "3:abcdef...long_reese84_value...",
"domain": ".example.com"
},
{
"name": "incap_ses_123_456",
"path": "/",
"value": "session_id_value",
"domain": ".example.com"
},
{
"name": "visid_incap_456",
"path": "/",
"value": "visitor_id_value",
"domain": ".example.com"
}
],
"ipBound": true,
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36"
}
}Error response
Failures use the same envelope with errorId: 1 plus errorCode + errorDescription. See the error-code reference for the full list.
{
"errorId": 1,
"errorCode": "ERROR_CAPTCHA_UNSOLVABLE",
"errorDescription": "Solver gave up — automatically refunded."
}Pending response
While the solver is still working, getTaskResult returns status: "processing". Poll every 1–2 seconds until ready or failed.
{
"errorId": 0,
"status": "processing"
}Features
task types
required: AntiImpervaTask