#
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
#
Parameters
#
Finding the p.js URL
- Open browser DevTools (F12) → Network tab
- Search for
p.jsor 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:
#
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- iOSj-1.2.139- JavaScript (web)