Web Automation

How Kasada Works (2026)

How Kasada Works (2026) — conceptual illustration
On this page

Kasada is an anti-bot WAF — a security layer that sits in front of a website and decides which visitors to let through. What makes it stand out is its client-side challenge: it sends your browser a tiny custom program (a "VM" running scrambled, hard-to-read bytecode) plus a math puzzle your browser actually has to compute, called proof-of-work. It protects real-estate, retail, and hospitality sites, and is notable because that bytecode is rewritten every few weeks, so approaches that rely on reading the code statically stop working quickly.

This is a reference on how Kasada is built and what it measures.

Quick facts

Challenge fileips.js / p.js (VM bytecode)
Headersx-kpsdk-ct, x-kpsdk-cd
Distinct signalReal proof-of-work computation
Block styleSilent 429 / 403
Best approachReal-browser VM execution

What Kasada is

Kasada is a reverse-proxy WAF: it stands between visitors and the real server (the origin), inspecting every request before passing it on. It gives each request a trust score based on the reputation of your IP address, the output of its in-browser VM, the details of your TLS handshake (TLS is the encryption layer behind https), and how you behave on the page.

Requests it does not trust get one of two responses:

  • A silent 429 Too Many Requests carrying x-kpsdk-* headers — often on your very first request. That is a giveaway that you are dealing with Kasada, not a sign that you actually sent too many requests.
  • A proof-of-work challenge served from /ips.js or /p.js — a puzzle the browser must solve before any further request is accepted.

The four signal categories

1. IP address reputation

Where your connection comes from sets a starting trust level:

  • Datacenter IPs (AWS, GCP, Azure, DigitalOcean, OVH…) — addresses owned by cloud providers, scored low from the start. Kasada is especially harsh here; most cloud ranges are blocked outright on protected sites.
  • Residential IPs — addresses ISPs hand out to home internet connections. Higher baseline trust.
  • Mobile IPs — addresses from cell towers and carrier networks (CGNAT). Highest baseline trust.

2. The Kasada VM and proof-of-work

This is what Kasada is unique for. Instead of shipping a readable (if minified) detection script, Kasada sends a VM-bytecode payload (ips.js / p.js): scrambled instructions run by a tiny custom interpreter bundled in the same file. That VM creates two headers that authorise your next requests:

  • x-kpsdk-ct — a client token tied to your device fingerprint (the unique profile Kasada builds of your browser).
  • x-kpsdk-cd — the proof-of-work result, a calculation that costs a real browser roughly 100ms of CPU time. Headless browsers or attempts to compute it elsewhere get throttled.

The VM also gathers the usual fingerprint surface — canvas/WebGL rendering, audio context, installed fonts, screen size, timezone, the navigator.webdriver flag, the shape of the window.chrome object, the plugin list — and folds it into the bytecode's internal state. Because that bytecode rotates frequently, pre-built solvers stop working within weeks.

3. HTTP and TLS fingerprinting

Before any HTML is exchanged, Kasada fingerprints you from the TLS handshake (summarised as a JA3/JA4 hash) and from how you speak HTTP/2.

  • Most scraping libraries still default to the older HTTP/1.1. Real Chrome and Firefox stopped doing that years ago.
  • libcurl and Go's net/http produce JA3 signatures that match no real browser.
  • HTTP/2 fingerprinting tracks the order of pseudo-headers, SETTINGS frame values, and window-update sizes — low-level details that differ between real browsers and bots.

4. Behavioural and pattern analysis

Kasada also runs continuous machine-learning analysis looking for tell-tale patterns:

  • Missing headers that real browsers always send (Sec-Fetch-*, Accept-Language, sec-ch-ua).
  • x-kpsdk-* tokens from an earlier response now arriving from a different IP.
  • The same proof-of-work result reused across many requests instead of being recomputed for each page load.
  • Hits on honeypot links (decoy links invisible to humans but followed by bots).
  • Bursty, machine-like timing.

What this means for developers

With Kasada, the VM matters more than anything else: without a valid x-kpsdk-cd, no other signal can save your request. There are three broad categories of tooling:

  • HTTP clients with browser-impersonating TLScurl_cffi, curl-impersonate, tls-client. These copy a real browser's handshake, but they cannot run the VM.
  • Full-stack real browsersCamoufox, patchright, Playwright with consistent browser configuration. These run the VM inside a real browser, so the proof-of-work gets computed.
  • Managed scraping APIs — services that keep up with the frequent ips.js rotations for you.

Reusing the same session value across requests keeps your x-kpsdk-* tokens and trust score warm. Computing a fresh proof-of-work on every single request is both slow and a strong sign of automation.

Sites commonly fronted by Kasada

Mostly real-estate, retail, hospitality and ticketing sites. Many of these switch between Kasada, Cloudflare, Akamai, DataDome and PerimeterX depending on conditions.

Summary

Kasada builds a running trust score from four things: IP reputation, the ips.js VM and its proof-of-work output, TLS/HTTP/2 fingerprints, and behavioural patterns. The VM is the most distinctive piece — trying to crack it by reading the code stops working quickly because the bytecode rotates, which is why running it in a real browser is the dominant approach in production.

Related terms

Concept map

How How Kasada Works (2026) connects

The terms most directly tied to this one. Hover a node to see its neighbours, click to preview, drag to rearrange.

0 terms · 0 connections
You are here · Web Automation
Building map…

Frequently asked questions

What makes Kasada different from other WAFs?

It sends your browser a custom VM running scrambled bytecode plus a real proof-of-work puzzle the browser has to compute. The bytecode is rewritten often, so trying to crack it by reading the code stops working within weeks.

What are the x-kpsdk headers?

x-kpsdk-ct is a client token tied to your device, and x-kpsdk-cd is the proof-of-work result. Without a valid x-kpsdk-cd, no other signal will get your request through.

Why do I get a 429 on my very first request?

That silent 429 with x-kpsdk headers is Kasada's low-trust response, not real rate limiting. It simply means you have not solved the VM challenge yet.

Last updated: 2026-05-31