Akamai
Solve Akamai Bot Manager challenges. Returns the cookie jar (including _abck) to replay on the protected origin.
Akamai
Akamai Bot Manager fingerprints the client and gates the origin behind a sensor-data challenge. The solver runs the full handshake through the target's own JS sensor and returns the resulting cookie jar — most importantly _abck, which marks the session as trusted.
Request
| Field | Type | Required | Notes |
|---|---|---|---|
type | string | Yes | akamai (or alias akamai-bypass). |
url | string | Yes | The Akamai-protected origin (the page that loads the sensor script). |
user_agent | string | Yes | Akamai fingerprints UA — replay with the same value you submit. |
proxy | string | Yes | A proxy is required. http://, https://, socks5:// schemes only. |
Unlike Turnstile, proxy is required. The solver routes the entire handshake (including the sensor POSTs) through it so the resulting cookies are bound to that exit IP. Replaying _abck from a different IP will fail.
Response
{
"success": true,
"type": "akamai",
"cookies": {
"_abck": "...",
"bm_sz": "...",
"ak_bmsc": "..."
},
"cost": 0.0020
}Replay the returned cookies on your next request to the protected origin, paired with the same User-Agent and same proxy/exit IP you submitted.
How it works (under the hood)
- The solver fetches the target URL and extracts the relative path to Akamai's sensor JS from the HTML.
- It fetches that sensor script.
- It runs the sensor in an isolated JS environment three times in succession, posting the resulting sensor-data payload back to the sensor endpoint each round.
- After the third round Akamai issues a valid
_abckcookie, which the solver returns along with the rest of the jar.
You don't need to drive any of this — you just need url, user_agent, and proxy.
Performance
| Metric | Typical value |
|---|---|
| Solve time | 4-12 seconds |
| Success rate | 90%+ |
Solve time is dominated by the three sequential sensor rounds and the proxy latency on each leg.
Examples
import requests
ua = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/144.0.0.0 Safari/537.36"
proxy = "http://user:[email protected]:8000"
r = requests.post(
"https://api.nslsolver.com/solve",
headers={"X-API-Key": "YOUR_KEY"},
json={
"type": "akamai",
"url": "https://www.target.com/login",
"user_agent": ua,
"proxy": proxy,
},
timeout=180,
)
solved = r.json()
# Replay on the same proxy/UA
session = requests.Session()
session.headers["User-Agent"] = ua
session.proxies = {"http": proxy, "https": proxy}
for k, v in solved["cookies"].items():
session.cookies.set(k, v)
# session.get("https://www.target.com/login")const ua = "Mozilla/5.0 ... Chrome/144.0.0.0 Safari/537.36";
const proxy = "http://user:[email protected]:8000";
const r = await fetch("https://api.nslsolver.com/solve", {
method: "POST",
headers: {
"Content-Type": "application/json",
"X-API-Key": process.env.NSL_API_KEY,
},
body: JSON.stringify({
type: "akamai",
url: "https://www.target.com/login",
user_agent: ua,
proxy: proxy,
}),
signal: AbortSignal.timeout(180_000),
});
const { cookies } = await r.json();
const cookieHeader = Object.entries(cookies)
.map(([k, v]) => `${k}=${v}`)
.join("; ");type AkamaiReq struct {
Type string `json:"type"`
URL string `json:"url"`
UserAgent string `json:"user_agent"`
Proxy string `json:"proxy"`
}
payload, _ := json.Marshal(AkamaiReq{
Type: "akamai",
URL: "https://www.target.com/login",
UserAgent: "Mozilla/5.0 ... Chrome/144.0.0.0 Safari/537.36",
Proxy: "http://user:[email protected]:8000",
})
req, _ := http.NewRequest("POST", "https://api.nslsolver.com/solve", bytes.NewReader(payload))
req.Header.Set("Content-Type", "application/json")
req.Header.Set("X-API-Key", os.Getenv("NSL_API_KEY"))
client := &http.Client{Timeout: 180 * time.Second}curl -X POST https://api.nslsolver.com/solve \
-H "Content-Type: application/json" \
-H "X-API-Key: $NSL_API_KEY" \
-d '{
"type": "akamai",
"url": "https://www.target.com/login",
"user_agent": "Mozilla/5.0 ... Chrome/144.0.0.0 Safari/537.36",
"proxy": "http://user:[email protected]:8000"
}'Troubleshooting
| Symptom | Likely cause | Fix |
|---|---|---|
user_agent is required for akamai type | Missing UA | Always send a user_agent. |
Proxy is required | Missing proxy | Akamai needs to bind cookies to an exit IP. |
Invalid proxy: scheme must be... | Bad proxy URL | Use http://, https://, socks5://. |
Could not find Akamai script tag | URL doesn't load Akamai sensor on first GET | Use the URL that actually serves the sensor (often the login page). |
| Cookies rejected by target | UA or IP mismatch on replay | Replay with the same UA and same proxy/exit IP you submitted. |
_abck rejected after a few requests | Cookie burned (Akamai invalidated it) | Solve again to get a fresh jar. |