EveryInfra

Akamai sec-cpt 挑战令牌

Akamai sec-cpt 挑战令牌Akamai反爬平台挑战(带强制等待)一个中间页,通常写着请稍候之类的提示,**必须等满一段时间**才能继续 —— 那个等待是挑战本身要求的。

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

接口规格

项目
typeakamai_sec_cpt
必填参数sec_cptsec_json
可选参数
返回一个 token 字符串solution.token
怎么用这个解回填 sec-cpt 校验接口
价格$3.06 / 1K 次 —— 按成功计费,没解出来退款
厂商文档Akamai 官方文档

参数去页面哪里取

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

必填 sec_cpt + sec_json

这两个值来自被拦时的响应:sec-cpt 是那个挑战 cookie,sec_json 是挑战页给出的 JSON 载荷。

document.cookie.split('; ').find(c => c.startsWith('sec_cpt'))

JSON 载荷那一半在挑战响应体里,不在 DOM 上 —— 要从被拦那次请求的响应里取。

这个挑战自带强制等待时长:慢不是我们的问题,是 Akamai 要求等满。我们会在超时预算内等完再返回,所以这条的响应时间天然比别的类型长。

调用示例

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

请求
curl -X POST https://api.everyinfra.com/api/v1/captcha \  -H "Authorization: Bearer omg_你的KEY" \  -H "Content-Type: application/json" \  -d '{"type":"akamai_sec_cpt","sec_cpt":"<sec_cpt>","sec_json":"<sec_json>"}'
响应
{  "solution": {    "token": "…"  },  "billing": { "charged": true, "credits": 220 }}

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

Akamai 下发一个 sec-cpt 挑战,其中带一个强制等待时长;等满并回填校验值之后才放行。

容易搞混的

Akamai Bot Manager(Web,`akamai_web`)移动端 SDK(`akamai_bmp`) 同属 Akamai,但三者要的输入完全不同:这条要 sec_cpt + sec_json,Web 那条只要 URL,移动端那条要包名。

去看 Akamai Bot Manager 那一条 →

常见部署场景

已知的坑

强制等待是挑战本身的要求,不是我们慢。规划超时预算时要给足。

sec_json 在响应体里而不是 DOM 上,浏览器里直接找找不到 —— 要抓那次被拦的响应。

akamai_web 是同体系的不同形态:那条只要页面 URL、交付 Cookie;这条要你先拿到挑战的两个值。

这个挑战自带强制等待时长 —— 是 Akamai 的要求,不是我们慢。我们会在超时预算内等满再返回

常见问题

Akamai sec-cpt 挑战令牌 要传哪些参数?

必填 sec_cpt、sec_json,没有可选参数。请求里 type 传 akamai_sec_cpt。

解出来的东西怎么用?

返回一个 token 字符串,取 solution.token。回填 sec-cpt 校验接口

sec-cpt 要去页面的哪里找?

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

怎么确认目标站用的就是 Akamai sec-cpt 挑战令牌?

Akamai Bot Manager(Web,`akamai_web`)移动端 SDK(`akamai_bmp`) 同属 Akamai,但三者要的输入完全不同:这条要 sec_cpt + sec_json,Web 那条只要 URL,移动端那条要包名。

有什么容易踩的坑?

强制等待是挑战本身的要求,不是我们慢。规划超时预算时要给足。

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

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

开始接入

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