Binance 验证码
Binance 验证码 是 Binance 的自研滑块拼图为主(`captchaType` 返回 `SLIDE`),连续失败后升级为图片多选 / 网格点选(`BOX`)。一个方形挑战框,把左侧的拼图碎片沿水平方向拖到大图缺口处,文案是 "Slide to complete the puzzle"。失败几次后换成「选出所有含 XX 的图片」这类多选题。整块 UI 以 SVG 组件渲染在页面里,不是 iframe。
接口规格
| 项目 | 值 |
|---|---|
| type | binance |
| 必填参数 | validate_id |
| 可选参数 | biz_idwebsite_urlwebsite_key |
| 返回 | 一个 token 字符串(solution.token) |
| 怎么用这个解 | 回填目标站的校验参数 |
| 价格 | $3.06 / 1K 次 —— 按成功计费,没解出来退款 |
| 厂商文档 | Binance 官方文档 |
参数去页面哪里取
下面全部是可以直接照做的定位方法 —— DOM 属性名、JS 全局变量名、script 上的 query 参数。
我们必填 validate_id,可选 biz_id、website_url、website_key(能传就一起传)。这两个值只在网络请求里出现,页面 DOM 上一个都没有 —— validate_id 来自 securityCheckResponseValidateId(precheck 响应里字段名是 validateId,个别页面叫 securityId);biz_id 就是 bizId / bizType,取值如 login、register。
最快的取法是挂一个 fetch 钩子,贴进控制台后再点一次登录/注册:
(()=>{const f=window.fetch;window.fetch=async(...a)=>{
const u=String(a[0]&&a[0].url||a[0]||'');
try{ if(/precheck|antibot\/getCaptcha|antibot\/validateCaptcha|check\/result/.test(u))
console.log('[bnc REQ]',u,a[1]&&a[1].body); }catch(e){}
const r=await f(...a);
if(/precheck|antibot\/getCaptcha/.test(u))
r.clone().json().then(j=>console.log('[bnc RES]',u,j&&j.data)).catch(()=>{});
return r;};})()
// 控制台会打印出 validateId / sessionId / bizId / sig / salt / path2 / captchaType不想改页面就用 DevTools 的 Network 面板筛 antibot/getCaptcha,请求体里 bizId 与 securityCheckResponseValidateId 一眼可见;captchaType 是 bCAPTCHA2 就说明命中的是这一条。
调用示例
一个端点解全部验证码类型 —— 换一种验证码只改 type 这一个字段。
curl -X POST https://api.everyinfra.com/api/v1/captcha \ -H "Authorization: Bearer omg_你的KEY" \ -H "Content-Type: application/json" \ -d '{"type":"binance","validate_id":"<validate_id>"}'
{ "solution": { "token": "…" }, "billing": { "charged": true, "credits": 220 }}
怎么确认目标站用的就是它
三步链路,全部在币安自有域下(`accounts.binance.com` + `bin.bnbstatic.com`),没有任何第三方验证码厂商参与。① `POST /bapi/accounts/v1/public/account/security/request/precheck`(body 带 `email`、`bizType`)返回 `captchaType: "bCAPTCHA2"`、`sessionId`、`validateId`、`validationTypes`。② `POST /bapi/composite/v1/public/antibot/getCaptcha`(表单参数 `bizId`、`sv`、`lang`、`securityCheckResponseValidateId`、`clientType`)返回 `sig`、`salt`、`path2`(图片路径,拼在 `https://bin.bnbstatic.com` 之后)、`ek`、`captchaType`、`tag`。③ `POST /bapi/composite/v1/public/antibot/validateCaptcha` 提交加密的 `data`(鼠标轨迹 + 浏览器指纹)与签名 `s`,成功返回 `token`,格式为 `captcha#<id>-<sig>`;再由 `/bapi/accounts/v1/public/account/security/check/result`(`sessionId` + `validateCodeType` + `bCaptchaToken`)收口。客户端逻辑在 `https://bin.bnbstatic.com/static/js/se/captcha/v1/captcha.min.js`,另有全站常驻的指纹脚本 `se_new.min.js`;请求头带 `device-info`(base64 JSON 设备指纹)、`captcha-sdk-version`、`x-captcha-se`、`bnc-uuid`、`fvideo-id`、`clienttype`。
容易搞混的
不是 reCAPTCHA、不是 GeeTest、不是任何外采产品 —— 脚本与图片全在 accounts.binance.com / bin.bnbstatic.com 自有域下。也别和币安的 2FA(验证器 App)、Passkey 通行密钥、人脸识别混为一谈:那些是身份验证,和这里的人机验证不是一层。
常见部署场景
- `accounts.binance.com` 的登录、注册、找回密码
- 提币、修改安全设置等敏感操作前的二次校验
- **Binance Alpha 空投抢购下单** —— 2025 年 10 月上线后成为最广为人知的触发点,社区普遍反映要在数秒内完成,慢一步就抢不到
- 风控命中时的临时校验:用 VPN、隐私窗口(无 cookie)、或用不存在的账号尝试登录都能稳定触发
已知的坑
解出验证码 ≠ 能登录。 验证码之后还叠着设备指纹与账号风控(device-info 头、se_new.min.js、bnc-uuid、fvideo-id)。我们交付的是过验证码这一关,登录仍可能被后置风控拦下,那不在本能力范围内。
返回的 token 带 captcha# 前缀,那是值的一部分,不要截断。
Alpha 抢购这类场景对时延极敏感 —— 社区反馈需要在数秒内完成,链路上任何一跳慢几秒都等于失败。规划超时预算时按「秒级」而不是「十几秒」算。
要复现挑战很容易:挂 VPN、开隐私窗口(无 cookie)、或用一个不存在的邮箱去登录,三者都能稳定把它调出来。
getCaptcha 返回的 path2 是相对路径,图片真实地址要拼 https://bin.bnbstatic.com 前缀。
端点与字段名来自公开安全研究与实测,币安没有公开文档 —— 版本迭代时字段可能变,别把它们当长期契约写死。
解出验证码不等于能登录 —— 目标站在验证码之后还叠了设备指纹与风控。我们交付的是通过验证码这一关,登录仍可能失败,那不在本能力范围内
token 带 captcha# 前缀,那是值的一部分,不要截断
常见问题
Binance 验证码 要传哪些参数?
必填 validate_id;可选 biz_id、website_url、website_key。请求里 type 传 binance。
解出来的东西怎么用?
返回一个 token 字符串,取 solution.token。回填目标站的校验参数
securityCheckResponseValidateId 要去页面的哪里找?
重点找 securityCheckResponseValidateId、validate_id、captchaType。本页「参数去页面哪里取」一节写了全部位置与取法,含可直接粘进控制台的一行命令。
怎么确认目标站用的就是 Binance 验证码?
不是 reCAPTCHA、不是 GeeTest、不是任何外采产品 —— 脚本与图片全在 accounts.binance.com / bin.bnbstatic.com 自有域下。也别和币安的 2FA(验证器 App)、Passkey 通行密钥、人脸识别混为一谈:那些是身份验证,和这里的人机验证不是一层。
有什么容易踩的坑?
解出验证码 ≠ 能登录。 验证码之后还叠着设备指纹与账号风控(device-info 头、se_new.min.js、bnc-uuid、fvideo-id)。我们交付的是过验证码这一关,登录仍可能被后置风控拦下,那不在本能力范围内。
多少钱一次,失败扣不扣?
$3.06 / 1K 次。按成功计费 —— 没解出来一律退款,所以失败不花钱。账单按次记,标价按每千次是为了让量级读得出来。