# Kasada

Bypass Kasada bot protection (used by Nike, Twitch, etc.).


# Overview

Kasada is an advanced bot detection system that uses a proof-of-work challenge. CaptchaSolv handles the challenge solving and returns valid tokens.


# Task Types

Task Type Description Price
KasadaTaskProxyless Without proxy (recommended) $0.00
KasadaTask With your proxy $0.00

# Parameters

Parameter Type Required Description
websiteURL string Target URL protected by Kasada
pjs string Full URL to Kasada p.js script
v string Kasada version override (e.g., i-1.18.2)
proxy string Required for KasadaTask

# Finding the p.js URL

  1. Open browser DevTools (F12) → Network tab
  2. Search for p.js or look for paths like:
/149e9513-01fa-4fb0-aad4-566afd725d1b/2d206a39-8ed7-437e-a3be-862e0f06eea3/p.js

The URL pattern: /{uuid1}/{uuid2}/p.js


# Example

import requests, json

response = requests.post("https://v1.captchasolv.com/solve", json={
    "clientKey": "YOUR_API_KEY",
    "task": {
        "type": "KasadaTaskProxyless",
        "websiteURL": "https://example.com",
        "pjs": "https://example.com/{uuid1}/{uuid2}/p.js"
    }
}, timeout=130)

solution = response.json()["solution"]
token_data = json.loads(solution["token"])
# Use: token_data["x-kpsdk-ct"], token_data["x-kpsdk-cd"], solution["userAgent"]
const response = await axios.post('https://v1.captchasolv.com/solve', {
    clientKey: 'YOUR_API_KEY',
    task: {
        type: 'KasadaTaskProxyless',
        websiteURL: 'https://example.com',
        pjs: 'https://example.com/{uuid1}/{uuid2}/p.js'
    }
}, { timeout: 130000 });

const tokenData = JSON.parse(response.data.solution.token);
// Use: tokenData['x-kpsdk-ct'], tokenData['x-kpsdk-cd']

# Response Format

{
  "errorId": 0,
  "solution": {
    "token": "{\"x-kpsdk-ct\":\"...\",\"x-kpsdk-cd\":\"...\",\"x-kpsdk-v\":\"i-1.18.2\"}",
    "userAgent": "Mozilla/5.0..."
  },
  "cost": "0.00350"
}

The token field contains JSON with Kasada headers:

Header Description
x-kpsdk-ct Kasada token (main cookie/header)
x-kpsdk-cd Challenge data
x-kpsdk-v Kasada version

# Using the Solution

import json

# After solving
solution = solve_kasada(url, pjs_url)

# Parse token JSON
token_data = json.loads(solution["token"])

# Use in headers
headers = {
    "User-Agent": solution["userAgent"],
    "x-kpsdk-ct": token_data["x-kpsdk-ct"],
    "x-kpsdk-cd": token_data["x-kpsdk-cd"],
    "x-kpsdk-v": token_data.get("x-kpsdk-v", "i-1.18.2"),
}

# Make protected request
response = requests.get("https://api.nike.com/protected", headers=headers)

# Nike Example

import requests
import json

API_KEY = "your_api_key"

def make_nike_request():
    # 1. Solve Kasada
    solution = solve_kasada(
        website_url="https://api.nike.com/",
        pjs_url="https://api.nike.com/149e9513-01fa-4fb0-aad4-566afd725d1b/2d206a39-8ed7-437e-a3be-862e0f06eea3/p.js"
    )
    
    token_data = json.loads(solution["token"])
    
    # 2. Build headers
    headers = {
        "Host": "api.nike.com",
        "User-Agent": solution["userAgent"],
        "Accept": "application/json",
        "x-kpsdk-ct": token_data["x-kpsdk-ct"],
        "x-kpsdk-cd": token_data["x-kpsdk-cd"],
        "x-kpsdk-v": token_data.get("x-kpsdk-v", "i-1.18.2"),
    }
    
    # 3. Make API request
    response = requests.get(
        "https://api.nike.com/product_feed/threads/v3",
        headers=headers
    )
    
    return response.json()

# Version Override

Some sites use specific Kasada versions. Use the v parameter to specify:

solution = solve_kasada(
    website_url="https://example.com",
    pjs_url="https://example.com/.../p.js",
    version="i-1.18.2"  # iOS version
)

Common versions:

  • i-1.18.2 - iOS
  • j-1.2.139 - JavaScript (web)