NSLSolver
API Reference

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

FieldTypeRequiredNotes
typestringYesakamai (or alias akamai-bypass).
urlstringYesThe Akamai-protected origin (the page that loads the sensor script).
user_agentstringYesAkamai fingerprints UA — replay with the same value you submit.
proxystringYesA 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)

  1. The solver fetches the target URL and extracts the relative path to Akamai's sensor JS from the HTML.
  2. It fetches that sensor script.
  3. 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.
  4. After the third round Akamai issues a valid _abck cookie, 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

MetricTypical value
Solve time4-12 seconds
Success rate90%+

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

SymptomLikely causeFix
user_agent is required for akamai typeMissing UAAlways send a user_agent.
Proxy is requiredMissing proxyAkamai needs to bind cookies to an exit IP.
Invalid proxy: scheme must be...Bad proxy URLUse http://, https://, socks5://.
Could not find Akamai script tagURL doesn't load Akamai sensor on first GETUse the URL that actually serves the sensor (often the login page).
Cookies rejected by targetUA or IP mismatch on replayReplay with the same UA and same proxy/exit IP you submitted.
_abck rejected after a few requestsCookie burned (Akamai invalidated it)Solve again to get a fresh jar.

On this page