使用 API 获取 Kasada 请求头
为 www.ticketmaster.com 上的确切 HTTPS URL 请求 KasadaTask,然后在目标请求中使用返回的请求头。独立 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();
}这些后续代码需要 Python 中的 requests 或 Node.js 中的 undici。它们会向任务中的确切 URL 发送请求,并替换冲突的浏览器请求头。请保留目标所需的其他应用请求头或会话数据。
如果使用 proxyCandidates,请在发送目标请求前,通过 successful_proxy 或 successfulProxy 选出成功的代理。单代理示例会复用 Python 中的 request["proxy"] 或 Node.js 中的 request.proxy。
提交后检查目标响应。如果返回 403,请参阅 Ticketmaster 故障排查指南,检查被拒绝的是哪个请求。
等待与错误
solve() 会为你处理轮询。如需立即获得任务 ID,请使用 create_task 或 createTask 并将等待时间设为零,然后持续获取该 ID 对应的任务,直到状态变为 ready 或 failed。
使用原始 API 时,创建 Kasada 任务默认最多等待 75 秒。请将 HTTP 超时时间设置为大于该等待时间,或使用 ?waitMs=0 并轮询。请求顺序请参阅任务轮询与超时。
任务失败时,停止轮询并检查 errorCode 和 error。求解失败会退款。如果创建请求超时,恢复时请保持相同的 requestId 和输入;使用新 ID 可能会创建另一个计费的求解任务。
来源与 API 参考
运行您的第一个任务。
使用 $5 工作区额度开始体验。