The short version: on Akamai, the browser is often the wrong tool. A plain HTTP client that sends a real browser's TLS handshake, such as curl-cffi, on residential proxies is the first thing to try against Akamai Bot Manager v4. It fixes the signal that is checked before any page loads, and it costs a fraction of what a stealth browser costs to run at scale.
That advice is specific to Akamai. On Cloudflare a JavaScript challenge sits in the middle of the detection stack, and on PerimeterX the telemetry is continuous, so a client that never runs JavaScript gets much less far. If you carry a Cloudflare playbook over to an Akamai target, you can end up paying for browser instances that do not fix the layer that is blocking you.
This post covers what Akamai Bot Manager v4 checks, roughly in the order it matters, and the changes worth making first. ScrapeWise publishes this blog and sells a scraping API, so read the last section with that in mind.
Why Akamai Inverts the Usual Advice
Most WAF guides tell you to reach for a stealth browser. That advice comes from Cloudflare, where a JavaScript challenge sits in the middle of the detection stack and you cannot answer it without a JS runtime.
On Akamai, the handshake carries more of the weight. TLS fingerprinting is treated as a primary signal, not a secondary one. Akamai's own security configuration exposes JA4 TLS fingerprint settings (Akamai techdocs, checked Nov 2026), and Akamai researchers published the passive HTTP/2 client fingerprinting method at Black Hat Europe 2017 that scraping tools now call the "Akamai fingerprint". Get the handshake wrong and no amount of browser realism saves you, because the client was already identified before the first byte of HTML was sent.
This is why a headless HTTP library with a correct TLS signature can get further than a full stealth browser here, and why the gap tends to run the other way on Cloudflare.
Confirm You Are Actually Facing Akamai
Debugging a bypass against the wrong detection model is the most expensive mistake available. Three signals identify Akamai before you write any code:
| Signal | Where to look |
|---|---|
_abck cookie |
Response cookies on first page load |
sensor_data POST payload |
Network tab, usually to a path on the site's own domain |
AkamaiGHost in the Server header |
Response headers, often on an error or challenge response |
A bm_sz cookie alongside _abck confirms Bot Manager specifically rather than generic Akamai CDN delivery. If you see cf-ray or __cf_bm instead, you are on Cloudflare and this post's conclusions do not transfer. See the full three-WAF comparison for that split.
If you want a faster read on whether a target is protected at all, paste a category page into our free product URL extractor. It makes one plain, unrendered request and reports whether the page came back directly, whether it had to retry through a proxy, or whether the HTML contains almost no links, which is the signature of a grid that only exists after JavaScript runs.
What Bot Manager v4 Checks, in Priority Order
Akamai describes its detection as "AI models for user behavior analysis, browser fingerprinting, and more", with a bot score assigned to each request at the edge (Akamai Bot Manager product page, checked Nov 2026). In practice it helps to think of five layers, and they do not carry equal weight.
1. TLS fingerprinting (JA3/JA4) and HTTP/2 fingerprinting. The handshake signature and the HTTP/2 settings frame are compared against known browser profiles. A raw Python requests call emits a Python TLS fingerprint that looks nothing like a browser's, which is most of why plain requests fails here so often.
2. IP reputation. Datacenter ASNs carry little trust. This caps your ceiling regardless of how clean everything above it is, which is why residential proxies matter even for an HTTP client.
3. JavaScript telemetry. Akamai says its behaviour anomaly detection works "by injecting a simple script into each monitored page" (same product page). That script collects device and interaction data and posts it back as an encrypted sensor_data payload, which is what produces a valid _abck cookie.
4. Behavioural biometrics. Mouse trajectory, keystroke timing, scroll events, validated server-side against the sensor payload rather than in the browser.
5. Session continuity. Whether this session's navigation path looks like a real visit or like a cold jump straight to a high-value page.
The important structural point: layers 3 and 4 only bite if you are running a browser. A well-formed curl-cffi request never executes the sensor script, so there is no telemetry to get wrong. You trade the sensor-data problem for a session-continuity problem, which is usually the cheaper of the two.
What Each Approach Fixes Against Akamai v4
Most DIY setups are an HTTP client or a browser, plus a proxy tier. Here is which layers each combination addresses. It is a reasoning aid, not a measurement: results vary by site and change whenever Akamai updates its detection.
| Approach | TLS / HTTP/2 fingerprint | Sensor script and behaviour | IP reputation | Relative compute cost |
|---|---|---|---|---|
| Requests library + datacenter proxies | Python fingerprint | Not run | Low | Lowest |
| curl-cffi + datacenter proxies | Browser fingerprint | Not run | Low | Low |
| curl-cffi + residential proxies | Browser fingerprint | Not run | Higher | Low |
| Patchright + residential proxies | Real Chromium | Run, must look human | Higher | High |
| Camoufox + datacenter proxies | Real Firefox | Run, must look human | Low | High |
| Camoufox + residential proxies | Real Firefox | Run, must look human | Higher | Highest |
Two things follow. The combination that fixes the first two layers without taking on layers 3 and 4 is also among the cheapest to operate, which is unusual and specific to this WAF. And between the two browsers, Camoufox changes fingerprint data in Firefox's C++ code rather than through injected JavaScript (camoufox.com, checked Nov 2026), while Patchright works on the Chromium side. Neither escapes the sensor script once it runs.
If you are already on Playwright and wondering whether to fix it or replace it, the browser-side decision (warm-up, motion, cost, and when to keep the browser anyway) is in Playwright vs Akamai Bot Manager. The socket-side fix is in curl_cffi and TLS fingerprint impersonation.
The Three Changes Worth Making First
Impersonate at the socket, not in headers. Setting a Chrome User-Agent on a Python requests call changes nothing, because Akamai reads the TLS handshake, which still says Python. The curl_cffi README (checked Nov 2026) describes it as an HTTP client that "can impersonate browser tls/ja3/http2 fingerprints", with Chrome, Safari and Firefox presets. On Akamai this is usually the single biggest step up from plain requests.
Warm up the session. Akamai's continuity tracking flags sessions that navigate straight to high-value pages. Two or three page loads with random dwell time before hitting the target URL make the session look like a real visit. It costs you a few cheap requests and no new tooling.
If you must run a browser, curve the mouse. Where a browser is unavoidable, cursor movement that runs in perfectly straight lines is easy to tell apart from a person. Simulating trajectories along cubic bezier curves looks far less suspicious than linear movement.
Randomised request intervals matter too: jitter in a 300 to 2,500ms band rather than a fixed sleep. A fixed time.sleep(1) is itself a fingerprint.
Where Akamai Still Wins
Two target classes resist the cheap approach.
Authenticated and checkout flows. Session state has to survive across a rotating proxy pool, which means pinning sessions to IPs and managing their lifecycle. This is real engineering, and it is where most in-house Akamai scrapers stall.
Sites that render the data client-side. If the prices only exist after JavaScript runs, no TLS trick retrieves them. You are back to a browser and back to the sensor-data problem, so accept the cost and budget for a patched browser on residential proxies.
Akamai is common on large fashion and electronics retailers, which makes it a recurring obstacle for product data extraction and SKU-level competitor price tracking in European retail.
The Cost Nobody Budgets For
Getting through once is one input. Maintenance is the other. Akamai says its models "learn over time", browsers change their handshakes, and the impersonation library has to follow. A setup that worked last month can start failing overnight, and because the failures are often intermittent, each one costs a debugging session just to work out which layer broke.
On compute, the gap is structural: an HTTP client opens a socket, a browser runs a whole rendering engine per worker. Camoufox's own site puts its footprint at around 200MB per instance. That is the strongest practical argument for getting the TLS layer right before reaching for a browser.
When to Stop Building Your Own
Paying someone else to run the fetch layer is usually the cheaper answer when any of these are true:
- A scraping engineer spends more than a day a month on Akamai maintenance.
- Your targets are authenticated, so session management across a proxy pool becomes a standing project.
- You need data you can put in front of a stakeholder every day, rather than a setup that breaks with each detection update.
ScrapeWise (which publishes this blog) runs the fetch layer for you: each page is tried plain first and moved to a real browser or residential IPs only when it is blocked. That will not get through every site. Some block automated visits outright or need a login, and no tool covers all of them. Pricing is per page and published: €0.15 per 1,000 for plain requests, €0.75 with rendering, €1.50 through the residential tier, and €3.75 for render plus residential, which is the tier Akamai targets usually need. Schedules run up to once a day, and results come out as a table, CSV or Excel, through the API or over MCP.
To see whether your Akamai targets are ones it can reach, run a few of their URLs through ScrapeWise: the first 5 requests are free, no card needed.
Related reading: bypassing DataDome, which inverts this advice again because there the browser is mandatory, and bypassing PerimeterX / HUMAN, where no single setup works across sites.
Paste a URL that blocks your scraper
Browser rendering and residential proxies are built in. No proxies to manage, pay per page from €0.15 per 1,000.
Not ready to sign up? See 12 real Amazon rows, 972 columns →
5 free requests no credit card · from €0.15 per 1,000 pages · or call it from Python or MCP →
