EveryInfra

Kasada Bot Defense

Kasada Bot DefenseKasada反爬平台挑战(无可见组件)正常访问看不到任何东西。被判定为机器人时通常是直接 4xx 或一个朴素的拒绝页 —— Kasada 的设计哲学是**不给攻击者反馈**,所以你往往不知道自己为什么被挡。

正在查询可用性…$3.06 / 1K 次按成功计费,失败退款

接口规格

项目
typekasada
必填参数website_urlproxy
可选参数bootstrap_urlwebsite_domaincf_cookies
返回一组字段(要一起提交)solution.x-kpsdk-ctsolution.x-kpsdk-cdsolution.x-kpsdk-vsolution.x-kpsdk-rsolution.x-kpsdk-st
怎么用这个解把这几个值原样设成同名请求头
价格$3.06 / 1K 次 —— 按成功计费,没解出来退款
厂商文档Kasada 官方文档

参数去页面哪里取

下面全部是可以直接照做的定位方法 —— DOM 属性名、JS 全局变量名、script 上的 query 参数。

必填 website_url + proxy,可选 user_agent

⚠ 怎么确认是 Kasada —— 看请求头,这是全场最好认的一家

Kasada 是所有反爬平台里请求头最话痨的一个,只要看到 x-kpsdk- 前缀就能确定:

// 在 DevTools Network 面板筛任意一个受保护请求,看 Request/Response Headers
// 或者在控制台看已发出的请求
performance.getEntriesByType('resource').map(e=>e.name).filter(u=>/\/\.k($|\?)|\/_ato/.test(u))
  • `x-kpsdk-ct` —— client / challenge token(核心)
  • `x-kpsdk-cd` —— client data,带编码后的设备指纹
  • `x-kpsdk-v` —— SDK 版本
  • `x-kpsdk-dv` —— device validation

另一个判据:内部挑战端点路径

浏览器会向 `/.k``/_ato` 发请求 ——
这两个路径是 Kasada 的挑战通道,出现即可确认。

`proxy` 必填

产出与出口 IP 绑定。

调用示例

一个端点解全部验证码类型 —— 换一种验证码只改 type 这一个字段。

请求
curl -X POST https://api.everyinfra.com/api/v1/captcha \  -H "Authorization: Bearer omg_你的KEY" \  -H "Content-Type: application/json" \  -d '{"type":"kasada","website_url":"<website_url>","proxy":"<proxy>"}'
响应
{  "solution": {    "x-kpsdk-ct": "…",    "x-kpsdk-cd": "…",    "x-kpsdk-v": "…",    "x-kpsdk-r": "…",    "x-kpsdk-st": "…"  },  "billing": { "charged": true, "credits": 220 }}

怎么确认目标站用的就是它

客户端 SDK 跑一段动态下发的挑战代码(每次都不一样),产出一组 `x-kpsdk-*` 请求头随后续请求带上;服务端据此判定。

容易搞混的

⚠ 与 Kasada 单次令牌(`kasada_cd`) 是同一家的两种用法:这条跑完整挑战,那条只产出单次令牌、需要你自己从页面上取 platform_inputs。按你手上有什么来选。

去看 Kasada 单次令牌 那一条 →

常见部署场景

已知的坑

Kasada 刻意不给失败原因:被挡时通常没有可读的错误信息,别指望从响应里看出哪一步不对。

挑战代码是动态下发的,每次都不同 —— 不存在「解一次存下来复用」这条路。

产出绑定出口 IP,proxy 必须是你后续要用的那个。

如果你只需要一个一次性令牌而不是完整挑战,看 kasada_cd 那一条。

产出绑定求解时的出口 IP —— proxy 必须是你后续要用的那个出口

如果目标是 App 或 API 域名而不是网页,多半要额外传 bootstrap_url

常见问题

Kasada Bot Defense 要传哪些参数?

必填 website_url、proxy;可选 bootstrap_url、website_domain、cf_cookies。请求里 type 传 kasada。

解出来的东西怎么用?

返回一组字段(要一起提交),取 solution.x-kpsdk-ct、solution.x-kpsdk-cd、solution.x-kpsdk-v、solution.x-kpsdk-r、solution.x-kpsdk-st。把这几个值原样设成同名请求头

x-kpsdk-dv 要去页面的哪里找?

重点找 x-kpsdk-dv、x-kpsdk-v、x-kpsdk-。本页「参数去页面哪里取」一节写了全部位置与取法,含可直接粘进控制台的一行命令。

怎么确认目标站用的就是 Kasada Bot Defense?

⚠ 与 Kasada 单次令牌(`kasada_cd`) 是同一家的两种用法:这条跑完整挑战,那条只产出单次令牌、需要你自己从页面上取 platform_inputs。按你手上有什么来选。

有什么容易踩的坑?

Kasada 刻意不给失败原因:被挡时通常没有可读的错误信息,别指望从响应里看出哪一步不对。

多少钱一次,失败扣不扣?

$3.06 / 1K 次。按成功计费 —— 没解出来一律退款,所以失败不花钱。账单按次记,标价按每千次是为了让量级读得出来。

开始接入

一个端点覆盖全部验证码类型,按成功计费,失败与空结果一律退款。