atbCAPTCHA
atbCAPTCHA 是 atbCAPTCHA (AISecurius) 的无感打分 / 滑块拼图 / 旋转 / 点选文字(顺序点选)/ 刮刮卡。默认是一个 300×200px 的嵌入式验证框(embed),也可能是最小只有 40px 高的一键条(oneclick)、行内浮层(inline)或弹窗(popup)。低风险用户直接被服务端放行、根本不出题;高风险才出滑动拼图、把图片转正、刮开涂层、或按提示顺序点击文字。
也叫 AISecurius(atbCAPTCHA 最常见的部署方名称)。调用时 type 一律传 atb_captcha。
接口规格
| 项目 | 值 |
|---|---|
| type | atb_captcha |
| 必填参数 | website_urlapp_idapi_server |
| 可选参数 | 无 |
| 返回 | 一个 token 字符串(solution.token) |
| 怎么用这个解 | 填回目标站的 atbCAPTCHA token(⚠ 结尾冒号是值的一部分) |
| 价格 | $2.22 / 1K 次 —— 按成功计费,没解出来退款 |
| 厂商文档 | atbCAPTCHA (AISecurius) 官方文档 |
参数去页面哪里取
下面全部是可以直接照做的定位方法 —— DOM 属性名、JS 全局变量名、script 上的 query 参数。
三个参数全部能从页面上直接抄,而且都在同一个函数调用里。
先确认是 atbCAPTCHA:<script> 标签长这样(官方示例自带 id,非常好认):
<script src="https://cdn.aisecurius.com/ctu-group/captcha-ui/v5/index.js"
crossorigin="anonymous" id="as-captcha-script"></script>初始化调用是 as.Captcha(容器DOM, {配置})。
全文搜 `as.Captcha(`,两个参数就在第二个实参里:
var myCaptcha = as.Captcha(document.getElementById('demo'), {
appId: 'your appId', // → 填我们的 app_id
apiServer: 'https://cap.aisecurius.com', // → 填我们的 api_server
success: function (token) { /* ... */ }
})appId→ 我们的 `app_id`apiServer→ 我们的 `api_server`,必须带 `https://` 前缀整串照抄
⚠ `apiServer` 是逐客户独立的域名,千万不要默认写死 `https://cap.aisecurius.com`。 SaaS 默认确实是它(我实测 https://cap.aisecurius.com/api/tokenVerify 活着、返回 {"success":false,...,"code":"1004"}),但私有化/独立部署的客户会换成自己的域名。厂商文档原话是「在控制台左上角获取,必须填写完整包括 https://」——所以一定从目标页面抄,不要从文档抄。
取不到 JS 配置时的兜底:Network 面板看组件初始化后打出的第一个 /api/... 请求,它的 host 就是 apiServer,query 或 body 里带着 appId。
⚠ 如果目标页面是中国大陆站点,脚本会换成 https://cdn.dingxiang-inc.com/ctu-group/captcha-ui/v5/index.js、id 变成 dx-captcha-script、调用变成 _dx.Captcha(el, {...}) ——但 `appId` / `apiServer` 两个键名一字不差,取法完全一样,只是 apiServer 会是 https://cap.dingxiang-inc.com 或客户自有域名。
`website_url` 填验证码所在页的完整地址(含路径),不是站点首页。
调用示例
一个端点解全部验证码类型 —— 换一种验证码只改 type 这一个字段。
curl -X POST https://api.everyinfra.com/api/v1/captcha \ -H "Authorization: Bearer omg_你的KEY" \ -H "Content-Type: application/json" \ -d '{"type":"atb_captcha","website_url":"<website_url>","app_id":"<app_id>","api_server":"<api_server>"}'
{ "solution": { "token": "…" }, "billing": { "charged": true, "credits": 160 }}
怎么确认目标站用的就是它
设备指纹 + 行为特征 + 访问频率 + 地理位置多因子联合判定:主组件之外还会加载 `constid-js`(设备标识)与 `ctu-greenseer`(环境采集)两个同源脚本。通过后前端拿到一个一次性 token(有效期 2 分钟),业务后端用 appId + appSecret 调 `<apiServer>/api/tokenVerify` 校验,返回 `success`/`msg`/`ip`/`code`。
容易搞混的
最容易和顶象国内版搞混——它其实是同一套前端,只是命名空间从 as 换成 _dx、CDN 域名换成 cdn.dingxiang-inc.com、script 的 id 从 as-captcha-script 换成 dx-captcha-script。参数键名一模一样,所以抄参数时不会出错,但判断「这是哪个验证码」时容易只认 aisecurius 域名而漏掉 dingxiang 域名的同款。另外「atb」不是缩写,就是产品名本身,别去猜它代表什么词。
常见部署场景
- atbCAPTCHA 这个品牌本身面向海外:站点全英文,运营主体地址在香港尖沙咀东(New Mandarin Plaza Tower B, 14 Science Museum Road),同门产品还有 iOS/Android 应用加固与设备指纹
- 厂商自述的三类场景:账号安全(防批量注册、防撞库)、数据安全(防自动化爬取)、营销安全(防薅券、防黄牛抢票)
- ⚠ 中国大陆看到的同一套引擎通常挂在 `dingxiang-inc.com` 域名下,以「顶象第五代验证码 / 智能无感验证」为名(详见 gotchas 里的证据);该厂商公开自述覆盖银行、电商、航空、出行、游戏、教育、旅游、媒体、政务、智能制造,总部北京,是 CNNVD / CICSVD / CNCERT 技术支撑单位
- 顶象一侧还提供本地化私有部署(客户自备服务器),所以国内案例里 apiServer 常常是客户自己的域名而非 SaaS 默认域名
已知的坑
返回的 token 结尾如果有一个冒号,那是值的一部分,不要 strip。 token 的格式是 <token>:<constId>(厂商文档原话:「本次验证的 token:constId」),设备指纹段为空时就只剩一个尾冒号。去掉它目标站会拒绝。
token 以 `sl` 开头 = 降级 token,官方定义是「前端网络不通生成的降级 token」。看到 sl 开头先回头查 apiServer 是不是抄错了或抄漏了 https://。
token 一次性、有效期只有 2 分钟,拿到必须立刻提交,不能缓存复用。
`apiServer` 在官方参数表里被归进「非必填」的高级配置,但三个语言的示例代码全都传了它、注释还写着「必须填写完整」 ——文档自相矛盾,实践上一律当必填处理。
不要去找 `appSecret` ——它只存在于目标站的服务端,页面上不会有,也不是我们需要的参数。同理别把 uid(业务方自己的用户标识)当必填。
页面上另外两个同源脚本 .../ctu-group/constid-js/index.js 与 .../ctu-group/ctu-greenseer/greenseer.js 是设备指纹与环境采集,看到它们说明你找对地方了,但它们本身不携带 appId/apiServer。
「atbCAPTCHA 与顶象是同一套前端引擎」是代码层面的观察,双方官网都没有公开说明这层关系,采信时请知道证据边界。可核验的事实:两个 CDN 的路径完全相同(/ctu-group/captcha-ui/v5/index.js);我实测下载两个 bundle(279KB / 271KB),两份里都同时含有 `"as"` 与 `"_dx"` 两个命名空间字符串,以及 _dxCaptchaConfig、/ctu-group/ctu-greenseer/、clickword、jigsaw 等相同内部标识;两边的服务端错误码表逐条相同(1001 appId 错 / 1002 签名错 / 1003 token 无效或过期 / 1004 参数错 / 1005 IP 不一致)、SDK 方法名相同(verifyToken)、token 有效期同为 2 分钟、降级 token 同为 sl 前缀;SaaS 默认域名对称(cap.aisecurius.com / cap.dingxiang-inc.com),我实测两个 /api/tokenVerify 返回的 JSON 形状逐字段一致。
常见于国内厂商 AISecurius 的部署
常见问题
atbCAPTCHA 要传哪些参数?
必填 website_url、app_id、api_server,没有可选参数。请求里 type 传 atb_captcha。
解出来的东西怎么用?
返回一个 token 字符串,取 solution.token。填回目标站的 atbCAPTCHA token(⚠ 结尾冒号是值的一部分)
apiServer 要去页面的哪里找?
重点找 apiServer、app_id、cap.dingxiang-inc.com。本页「参数去页面哪里取」一节写了全部位置与取法,含可直接粘进控制台的一行命令。
怎么确认目标站用的就是 atbCAPTCHA?
最容易和顶象国内版搞混——它其实是同一套前端,只是命名空间从 as 换成 _dx、CDN 域名换成 cdn.dingxiang-inc.com、script 的 id 从 as-captcha-script 换成 dx-captcha-script。参数键名一模一样,所以抄参数时不会出错,但判断「这是哪个验证码」时容易只认 aisecurius 域名而漏掉 dingxiang 域名的同款。另外「atb」不是缩写,就是产品名本身,别去猜它代表什么词。
有什么容易踩的坑?
返回的 token 结尾如果有一个冒号,那是值的一部分,不要 strip。 token 的格式是 <token>:<constId>(厂商文档原话:「本次验证的 token:constId」),设备指纹段为空时就只剩一个尾冒号。去掉它目标站会拒绝。
多少钱一次,失败扣不扣?
$2.22 / 1K 次。按成功计费 —— 没解出来一律退款,所以失败不花钱。账单按次记,标价按每千次是为了让量级读得出来。