Получение заголовков Kasada через API
Запросите KasadaTask для точного HTTPS URL на www.ticketmaster.com, затем используйте возвращённые заголовки в запросе к целевому сайту. Отдельный продукт Kasada сейчас поддерживает этот хост.
На этой странице
Запросите заголовки
Используйте Python 3.10+ или Node.js 22+ с официальным SDK. Установите SDK из официального раздела загрузок.
Задайте в SOLVETHREE_API_KEY API-ключ рабочего пространства, а в SOLVETHREE_PROXY — URL прокси. Выполняйте код на сервере, чтобы API-ключ оставался конфиденциальным. Замените url на нужный HTTPS URL на поддерживаемом хосте.
import os
from uuid import uuid4
from solvethree import Solvethree
client = Solvethree(os.environ["SOLVETHREE_API_KEY"])
request = {
'type': 'KasadaTask',
'url': 'https://www.ticketmaster.com/',
"proxy": os.environ["SOLVETHREE_PROXY"],
"requestId": str(uuid4()),
}
result = client.solve(request, timeout=180)
headers = result["solution"]["headers"]
print("Ready task:", result["id"])import { randomUUID } from 'node:crypto';
import { Solvethree } from '@solvethree/sdk';
const client = new Solvethree({ apiKey: process.env.SOLVETHREE_API_KEY });
const request = {
type: 'KasadaTask',
url: 'https://www.ticketmaster.com/',
proxy: process.env.SOLVETHREE_PROXY,
requestId: randomUUID(),
};
const result = await client.solve(request, { timeoutMs: 180_000 });
const headers = result.solution.headers;
console.log('Ready task:', result.id);Оба примера вызывают solve: этот метод создаёт одну задачу и опрашивает её состояние до готовности либо выдаёт ошибку. В следующем разделе возвращённые заголовки отправляются на целевой сайт.
В задаче передаются type, url, один proxy и необязательный requestId. Не добавляйте собственные поля идентификационных данных браузера: используйте данные, возвращённые в решении.
Отправьте возвращённые заголовки на целевой сайт
{
"id": "example-kasada",
"status": "ready",
"solution": {
"headers": {
"x-kpsdk-ct": "EXAMPLE_HEADER_VALUE",
"x-kpsdk-cd": "EXAMPLE_HEADER_VALUE"
},
"userAgent": "EXAMPLE_USER_AGENT",
"secChUa": "EXAMPLE_CLIENT_HINTS"
}
}Скопируйте весь объект solution.headers. Задайте User-Agent и sec-ch-ua из результата и используйте тот же прокси, что и при решении:
# Continue after the Kasada solve. Install requests separately: pip install requests.
import requests
solution = result["solution"]
headers = {name: value for name, value in solution["headers"].items()
if name.lower() not in {"user-agent", "sec-ch-ua"}}
headers.update({"User-Agent": solution["userAgent"], "sec-ch-ua": solution["secChUa"]})
response = requests.get(
request["url"], headers=headers,
proxies={"http": request["proxy"], "https": request["proxy"]},
timeout=30, allow_redirects=False,
)
print("Target HTTP status:", response.status_code)// Continue after the Kasada solve. Install undici separately: npm install undici@7.
import { fetch, ProxyAgent } from 'undici';
const targetHeaders = new Headers(result.solution.headers);
targetHeaders.set('user-agent', result.solution.userAgent);
targetHeaders.set('sec-ch-ua', result.solution.secChUa);
const dispatcher = new ProxyAgent(request.proxy);
try {
const response = await fetch(request.url, {
dispatcher, headers: targetHeaders, redirect: 'manual',
signal: AbortSignal.timeout(30_000),
});
console.log('Target HTTP status:', response.status);
await response.arrayBuffer();
} finally {
await dispatcher.close();
}Для этих продолжений примеров требуется requests в Python или undici в Node.js. Они отправляют запрос на точный URL из задачи и заменяют конфликтующие браузерные заголовки. Сохраните остальные заголовки приложения или данные сессии, необходимые целевому сайту.
Если вы используете proxyCandidates, перед отправкой запроса к целевому сайту выберите сработавший прокси с помощью successful_proxy или successfulProxy. Примеры с одним прокси повторно используют request["proxy"] в Python или request.proxy в Node.js.
После отправки проверьте ответ целевого сайта. При 403 воспользуйтесь руководством по устранению неполадок Ticketmaster, чтобы выяснить, какой запрос отклоняется.
Ожидание и ошибки
solve() выполняет опрос за вас. Чтобы сразу получить ID задачи, используйте create_task или createTask с нулевым ожиданием, затем получайте задачу по этому ID, пока её статус не станет ready или failed.
При прямом использовании API создание Kasada по умолчанию ожидает до 75 секунд. Установите HTTP-тайм-аут больше этого времени или используйте ?waitMs=0 и опрос. Последовательность запросов приведена в разделе опрос состояния задач и тайм-ауты.
Если задача завершилась с ошибкой, прекратите опрос и проверьте errorCode и error. Стоимость неудачных решений возвращается. Если при создании истёк тайм-аут, при восстановлении используйте тот же requestId и те же входные данные; новый ID может создать ещё одно платное решение.
Источники и справочник API
Запустите первую задачу.
Начните с $5 на балансе рабочего пространства.