{"object":"captcha.types","types":[{"type":"akamai_bmp","title":"Akamai Bot Manager（移动端 SDK）","available":false,"price_credits":330,"price_cny":0.033,"required_params":[{"name":"package_name","type":"string","description":"目标 App 的包名，形如 `com.example.app`"}],"optional_params":[{"name":"app_version","type":"string","description":"App 版本号，影响生成的传感器数据"},{"name":"platform","type":"string","description":"设备平台","allowed_values":["android","ios"]},{"name":"count","type":"number","description":"一次生成几份传感器数据"}],"solution":{"shape":"fields","fields":["sensors","user_agent","device_id"],"description":"把 sensors 放进 `X-acf-sensor-data` 头，UA 与设备 id 需配套使用"},"notes":["⚠ 这是移动 App 那一侧，目标是 App 的后端接口而不是网页 —— 如果你在抓网页，要的是 Akamai Bot Manager（Web）那一条","三个字段必须配套使用：换了 UA 或设备 id，传感器数据就不匹配了"]},{"type":"akamai_sec_cpt","title":"Akamai sec-cpt 挑战令牌","available":false,"price_credits":220,"price_cny":0.022,"required_params":[{"name":"sec_cpt","type":"string","description":"响应里的 `sec-cpt` cookie 值"},{"name":"sec_json","type":"object","description":"挑战页返回的 JSON 原文（原样转发）"}],"optional_params":[],"solution":{"shape":"token","fields":["token"],"description":"回填 sec-cpt 校验接口"},"notes":["⚠ 这个挑战自带强制等待时长 —— 是 Akamai 的要求，不是我们慢。我们会在超时预算内等满再返回"]},{"type":"akamai_web","title":"Akamai Bot Manager（Web）","available":true,"price_credits":330,"price_cny":0.033,"required_params":[{"name":"website_url","type":"string","description":"验证码所在页面的完整 URL"}],"optional_params":[{"name":"user_agent","type":"string","description":"求解时使用的 UA，需与你后续请求一致"}],"solution":{"shape":"cookie","fields":["cookie"],"description":"带回请求的 Cookie 串（含 `_abck` 等）"},"notes":["⚠ 产出绑定求解时的出口 IP —— 你必须用同一个 sticky 出口发后续请求，换 IP 会立刻失效（与 DataDome 同类约束）","只要目标页面 URL —— 不需要你自己去扒页面里的挑战脚本"]},{"type":"alibaba","title":"阿里云验证码","available":true,"price_credits":90,"price_cny":0.009,"required_params":[{"name":"website_url","type":"string","description":"验证码所在页面的完整 URL"}],"optional_params":[],"solution":{"shape":"token","fields":["token"],"description":"⚠ 一个 **JSON 字符串**（需二次 parse），内含 sceneId / certifyId / deviceToken / data"},"notes":["⚠ 与「阿里云 5 秒盾 / Alix5sec」不是一回事 —— 那个交付的是 Cookie，这个交付的是表单 token，目前我们不做那一个","⚠ 返回值需要 JSON.parse 一次才能拿到里面的字段"]},{"type":"altcha","title":"ALTCHA","available":true,"price_credits":110,"price_cny":0.011,"required_params":[],"optional_params":[{"name":"challenge","type":"object","description":"页面上 ALTCHA widget 给出的挑战对象（原样转发）"},{"name":"challenge_url","type":"string","description":"ALTCHA 的挑战下发地址，让我们代为拉取"},{"name":"website_url","type":"string","description":"验证码所在页面的完整 URL"}],"solution":{"shape":"token","fields":["token"],"description":"填回表单的 `altcha` 字段"},"notes":["`challenge` 与 `challenge_url` 至少传一个","它是自托管的工作量证明式验证码，常见于注重隐私的欧洲站点"]},{"type":"anubis","title":"Anubis 工作量证明网关（PoW）","available":true,"price_credits":10,"price_cny":0.001,"required_params":[{"name":"website_url","type":"string","description":"验证码所在页面的完整 URL"},{"name":"proxy","type":"string","description":"你自己的出口代理，形如 `http://user:pass@host:port`（也支持 socks5）。⚠ **必须与你后续请求用的是同一个出口** —— 这类能力的交付物绑定求解时的 IP，换出口立刻失效。免密代理省掉 user:pass 即可"}],"optional_params":[],"solution":{"shape":"cookie","fields":["cookie"],"description":"带回目标站的 Cookie（一张有效期最长 7 天的通行证）"},"notes":["⚠ 这类网关防的就是 AI 爬虫，已装在 GNOME、Linux kernel git、SourceHut、Arch Wiki、UNESCO 等站点上","解一次拿到的是**一张通行证**（最长 7 天），不是一次性令牌 —— 同一个站你不需要每个请求都来解一次","⚠ **通行证绑定你给的代理出口 IP**。所以代理必填，而且必须与你后续请求用的是同一个出口 —— 换出口立刻失效","⚠ **7 天是上限不是承诺**：通行证里绑着站点当前策略的哈希，站点一改策略，已签发的通行证全部立即作废。这不是我们能控制的","⚠ 目前只接**难度 5 及以下**（覆盖默认难度 4 的绝大多数部署）。更高难度会明确报错并且不计费，不会让你付钱等一个算不完的题","⚠ 少数站点会把通行证绑到某个请求头上。表现是「解对了、Cookie 拿到了、用起来仍被挡」—— 遇到这种情况请告诉我们你需要绑定哪个头"]},{"type":"atb_captcha","title":"atbCAPTCHA","available":true,"price_credits":160,"price_cny":0.016,"required_params":[{"name":"website_url","type":"string","description":"验证码所在页面的完整 URL"},{"name":"app_id","type":"string","description":"atbCAPTCHA 组件的 appId"},{"name":"api_server","type":"string","description":"atbCAPTCHA 的接口域名，形如 `https://cap.aisecurius.com`"}],"optional_params":[],"solution":{"shape":"token","fields":["token"],"description":"填回目标站的 atbCAPTCHA token（⚠ 结尾冒号是值的一部分）"},"notes":["常见于国内厂商 AISecurius 的部署"]},{"type":"audio","title":"音频验证码识别（语音 → 文字）","available":true,"price_credits":60,"price_cny":0.006,"required_params":[{"name":"body","type":"string","description":"音频的 base64。⚠ mp3 格式，不超过 1MB，不能带换行也不能带 data URI 前缀"}],"optional_params":[{"name":"language","type":"string","description":"音频语言","allowed_values":["en","fr","de","el","pt","ru"]}],"solution":{"shape":"text","fields":["text"],"description":"听写出的文字"},"notes":["⚠ 很多带图验证码都提供「听语音」的无障碍通道 —— 图识别不出来时，换这条走音频往往是更稳的一条路"]},{"type":"aws_waf","title":"AWS WAF 挑战","available":true,"price_credits":160,"price_cny":0.016,"required_params":[{"name":"website_url","type":"string","description":"验证码所在页面的完整 URL"}],"optional_params":[],"solution":{"shape":"cookie","fields":["cookie"],"description":"带回请求的 Cookie 串"},"notes":["本类型出结果比其他类型慢，等 30 秒是正常的"]},{"type":"aws_waf_classify","title":"AWS WAF 图像识别（九宫格 / 找目标）","available":true,"price_credits":70,"price_cny":0.007,"required_params":[{"name":"images","type":"object","description":"一组图片的 base64 数组（九宫格一次传 9 张）"},{"name":"question","type":"string","description":"题目标识，形如 `aws:grid:bag`、`aws:toycarcity:carcity` —— 从挑战页上抄，不要自己编"}],"optional_params":[],"solution":{"shape":"points","fields":["box"],"description":"命中目标的位置。⚠ 这是**识图**不是过盾 —— 它告诉你点哪里，拿到坐标后还要你自己去点"},"notes":["⚠ 与 AWS WAF 挑战（`aws_waf`）不是一回事：那条直接交付通行 Cookie，这条只做图像识别、交付坐标，适合你自己驱动浏览器的场景"]},{"type":"basilisk","title":"Basilisk（又名 Faucet Pay）","available":true,"price_credits":110,"price_cny":0.011,"required_params":[{"name":"website_url","type":"string","description":"验证码所在页面的完整 URL"},{"name":"website_key","type":"string","description":"页面里的站点公钥（sitekey）"}],"optional_params":[],"solution":{"shape":"fields","fields":["captcha_response","user_agent"],"description":"答案与配套 UA 一起使用 —— 换 UA 会失效"},"notes":["⚠ Basilisk 与 Faucet Pay 是同一件东西 —— 不同资料里两个名字都会出现"]},{"type":"binance","title":"Binance 验证码","available":true,"price_credits":220,"price_cny":0.022,"required_params":[{"name":"validate_id","type":"string","description":"页面下发的动态标识，来自 securityCheckResponseValidateId / validateId / securityId 之一（不同页面叫法不同）"}],"optional_params":[{"name":"biz_id","type":"string","description":"业务标识 bizId / bizType / bizCode，部分场景必需"},{"name":"website_url","type":"string","description":"验证码所在页面的完整 URL"},{"name":"website_key","type":"string","description":"页面里的站点公钥（sitekey）"}],"solution":{"shape":"token","fields":["token"],"description":"回填目标站的校验参数"},"notes":["⚠ 解出验证码不等于能登录 —— 目标站在验证码之后还叠了设备指纹与风控。我们交付的是通过验证码这一关，登录仍可能失败，那不在本能力范围内","token 带 `captcha#` 前缀，那是值的一部分，不要截断"]},{"type":"botdeflector","title":"BotDeflector","available":true,"price_credits":170,"price_cny":0.017,"required_params":[{"name":"body","type":"string","description":"挑战图的 base64"}],"optional_params":[],"solution":{"shape":"points","fields":["points"],"description":"要点击的坐标"},"notes":["⚠ 本能力交付的是**坐标**，你拿到之后自己去点。BotDeflector 另有直接交付 token 的形态，本接口不覆盖那一种"]},{"type":"bounding_box","title":"框选验证码（把目标框起来）","available":true,"price_credits":130,"price_cny":0.013,"required_params":[{"name":"body","type":"string","description":"图片的 base64。⚠ 不能带换行，也不能带 `data:image/png;base64,` 前缀"}],"optional_params":[{"name":"comment","type":"string","description":"要框什么，例如「框出所有的车」。⚠ 不传的话识别方不知道你要什么 —— 这条题型没有默认目标"}],"solution":{"shape":"boxes","fields":["bounding_boxes"],"description":"一组矩形框，每个是 `{x_min, x_max, y_min, y_max}`（像素坐标）"},"notes":["⚠ 与点选验证码不是一回事：那个交付的是几个坐标点，这个交付的是矩形范围"]},{"type":"captchafox","title":"CaptchaFox","available":true,"price_credits":110,"price_cny":0.011,"required_params":[{"name":"website_url","type":"string","description":"验证码所在页面的完整 URL"},{"name":"website_key","type":"string","description":"页面里的站点公钥（sitekey）"},{"name":"proxy","type":"string","description":"你自己的出口代理，形如 `http://user:pass@host:port`（也支持 socks5）。⚠ **必须与你后续请求用的是同一个出口** —— 这类能力的交付物绑定求解时的 IP，换出口立刻失效。免密代理省掉 user:pass 即可"}],"optional_params":[{"name":"user_agent","type":"string","description":"求解时使用的 UA，需与你后续请求一致"}],"solution":{"shape":"token","fields":["token"],"description":"填回目标站表单的 CaptchaFox 响应字段"}},{"type":"capy","title":"Capy Puzzle","available":true,"price_credits":220,"price_cny":0.022,"required_params":[{"name":"website_url","type":"string","description":"验证码所在页面的完整 URL"},{"name":"website_key","type":"string","description":"页面里的站点公钥（sitekey）"}],"optional_params":[{"name":"api_server","type":"string","description":"Capy 的接口域名，目标站换了备用域时才需要"}],"solution":{"shape":"fields","fields":["captchakey","challengekey","answer"],"description":"三个字段一起回填，缺任何一个目标站都会拒"}},{"type":"castle","title":"Castle（反欺诈请求令牌）","available":true,"price_credits":70,"price_cny":0.007,"required_params":[{"name":"website_url","type":"string","description":"验证码所在页面的完整 URL"},{"name":"website_key","type":"string","description":"页面里的站点公钥（sitekey）"},{"name":"metadata","type":"object","description":"页面上 Castle 那两个脚本的地址，形如 `{\"wUrl\": \"…/cw.js\", \"swUrl\": \"…/csw.js\"}`。⚠ 去目标页搜 `cw.js` / `csw.js` 抄出来 —— 逐站不同，猜不出来"}],"optional_params":[{"name":"count","type":"number","description":"一次要几个令牌（1–49，默认 1）。⚠ 它决定这次给你几个，**不影响计费**：按次收，不按令牌数"},{"name":"user_agent","type":"string","description":"你后续请求要用的 User-Agent。⚠ **必须是 Windows 的真实 UA**"},{"name":"proxy","type":"string","description":"你自己的出口代理，形如 `http://user:pass@host:port`（也支持 socks5）。⚠ **必须与你后续请求用的是同一个出口** —— 这类能力的交付物绑定求解时的 IP，换出口立刻失效。免密代理省掉 user:pass 即可"}],"solution":{"shape":"tokens","fields":["tokens"],"description":"一批可回填的 Castle 请求令牌（按你要的 count 个）"},"notes":["⚠ 这是**反欺诈 SDK 的请求令牌**，不是一道要解的题 —— 没有图、没有交互，我们生成一批目标站会接受的令牌","⚠ 一次拿回的是**一批**（1–49 个，`count` 控制），不是一个。客户在后续多个请求上逐个用掉，用完再来取"]},{"type":"cloudflare_challenge","title":"Cloudflare 挑战页（5 秒盾）","available":true,"price_credits":130,"price_cny":0.013,"required_params":[{"name":"website_url","type":"string","description":"验证码所在页面的完整 URL"},{"name":"proxy","type":"string","description":"你自己的出口代理，形如 `http://user:pass@host:port`（也支持 socks5）。⚠ **必须与你后续请求用的是同一个出口** —— 这类能力的交付物绑定求解时的 IP，换出口立刻失效。免密代理省掉 user:pass 即可"}],"optional_params":[{"name":"user_agent","type":"string","description":"求解时使用的 UA，需与你后续请求一致"}],"solution":{"shape":"cookie","fields":["cookie"],"description":"带回请求的 Cookie 串（含 `cf_clearance`）"},"notes":["⚠ 产出绑定求解时的出口 IP **和** UA —— 两者任一不同，目标站都会重新拦你。所以 `proxy` 必须是你自己后续要用的那个出口","⚠ 这条和 Turnstile 不是一回事：Turnstile 是页面里的小组件、交付 token；这条是整页拦截的 5 秒盾、交付 Cookie"]},{"type":"coordinates","title":"点选坐标（在图上按要求点几下）","available":true,"price_credits":130,"price_cny":0.013,"required_params":[{"name":"body","type":"string","description":"图片的 base64。⚠ 不能带换行，也不能带 `data:image/png;base64,` 前缀"}],"optional_params":[{"name":"comment","type":"string","description":"给识别方的指示，例如「点出所有的红色方块」。⚠ 不给的话识别方只能靠猜你要点什么"}],"solution":{"shape":"points","fields":["coordinates"],"description":"按顺序点击这些坐标（原点在图片左上角，单位像素）"},"notes":["⚠ 这个能力**不回顶层 `token` 字段** —— 解是坐标数组，取 `solution.coordinates`"]},{"type":"cutcaptcha","title":"Cutcaptcha","available":true,"price_credits":160,"price_cny":0.016,"required_params":[{"name":"website_url","type":"string","description":"验证码所在页面的完整 URL"},{"name":"misery_key","type":"string","description":"页面上 Cutcaptcha 组件的 `data-sitekey`（Cutcaptcha 自己的文档里写作 miseryKey）"},{"name":"captcha_api_key","type":"string","description":"Cutcaptcha 脚本 URL 里的 apikey 参数"}],"optional_params":[],"solution":{"shape":"token","fields":["token"],"description":"填回目标站表单的 Cutcaptcha 响应字段"}},{"type":"cybersiara","title":"CyberSiARA","available":true,"price_credits":160,"price_cny":0.016,"required_params":[{"name":"website_url","type":"string","description":"验证码所在页面的完整 URL"},{"name":"master_url_id","type":"string","description":"CyberSiARA 脚本 URL 里的 MasterUrlId 参数"}],"optional_params":[{"name":"user_agent","type":"string","description":"你抓页面时用的 User-Agent"}],"solution":{"shape":"token","fields":["token"],"description":"填回目标站表单的 CyberSiARA 响应字段"}},{"type":"datadome","title":"DataDome 滑块","available":true,"price_credits":180,"price_cny":0.018,"required_params":[{"name":"captcha_url","type":"string","description":"DataDome 弹出的挑战页 URL。⚠ 里面必须是 `t=fe`；如果是 `t=bv`，说明你当前出口 IP 已被目标站封了，先换 IP 再来"},{"name":"user_agent","type":"string","description":"你抓挑战页时用的 User-Agent。⚠ 只接受 Windows Chrome 的真实 UA，拿别的 UA 会被拒；解出来的 Cookie 也必须配同一个 UA 使用"},{"name":"proxy","type":"string","description":"你自己的出口代理。⚠ 本类型必须用**和抓挑战页同一个出口**，换 IP 解出来的 Cookie 目标站不认"}],"optional_params":[{"name":"website_url","type":"string","description":"验证码所在页面的完整 URL"}],"solution":{"shape":"cookie","fields":["cookie"],"description":"形如 `datadome=…` 的 Cookie 串"},"notes":["⚠ 传了 `website_url` 才能用上更便宜的那家；只传挑战地址仍然可用","这是唯一要求客户自带代理的能力 —— 不是我们偷懒，是 Cookie 与出口 IP 绑定"]},{"type":"datadome_interstitial","title":"DataDome 整页设备检查（插页版）","available":false,"price_credits":220,"price_cny":0.022,"required_params":[{"name":"website_url","type":"string","description":"验证码所在页面的完整 URL"},{"name":"proxy","type":"string","description":"你自己的出口代理，形如 `http://user:pass@host:port`（也支持 socks5）。⚠ **必须与你后续请求用的是同一个出口** —— 这类能力的交付物绑定求解时的 IP，换出口立刻失效。免密代理省掉 user:pass 即可"}],"optional_params":[{"name":"user_agent","type":"string","description":"求解时使用的 UA，需与你后续请求一致"}],"solution":{"shape":"cookie","fields":["cookie"],"description":"形如 `datadome=…` 的 Cookie 串"},"notes":["⚠ 与 DataDome 滑块不是同一条：滑块版要你先拿到挑战页地址（`captcha_url`），插页版只要页面地址 —— 你看到的是整页设备检查而不是拖动条时用这条"]},{"type":"f5_shape","title":"F5 Distributed Cloud / Shape Bot Defense","available":false,"price_credits":220,"price_cny":0.022,"required_params":[{"name":"website_url","type":"string","description":"验证码所在页面的完整 URL"},{"name":"proxy","type":"string","description":"你自己的出口代理，形如 `http://user:pass@host:port`（也支持 socks5）。⚠ **必须与你后续请求用的是同一个出口** —— 这类能力的交付物绑定求解时的 IP，换出口立刻失效。免密代理省掉 user:pass 即可"}],"optional_params":[{"name":"user_agent","type":"string","description":"求解时使用的 UA，需与你后续请求一致"}],"solution":{"shape":"cookie","fields":["cookie"],"description":"带回请求的 Cookie 串"},"notes":["⚠ 与 F5 BIG-IP / TSPD 不是一回事：那个是负载均衡器种的 `TS*` Cookie，这个是独立的 Bot Defense 产品，遥测更重","⚠ 产出绑定求解时的出口 IP，且**多为一次性** —— 别缓存复用"]},{"type":"f5_tspd","title":"F5 BIG-IP / TSPD","available":true,"price_credits":180,"price_cny":0.018,"required_params":[{"name":"website_url","type":"string","description":"验证码所在页面的完整 URL"},{"name":"proxy","type":"string","description":"你自己的出口代理，形如 `http://user:pass@host:port`（也支持 socks5）。⚠ **必须与你后续请求用的是同一个出口** —— 这类能力的交付物绑定求解时的 IP，换出口立刻失效。免密代理省掉 user:pass 即可"}],"optional_params":[{"name":"user_agent","type":"string","description":"求解时使用的 UA，需与你后续请求一致"}],"solution":{"shape":"cookie","fields":["cookie"],"description":"带回请求的 Cookie 串（`TS*` 系列）"},"notes":["⚠ 产出绑定求解时的出口 IP —— `proxy` 必须是你自己后续要用的那个出口"]},{"type":"friendly_captcha","title":"Friendly Captcha","available":true,"price_credits":160,"price_cny":0.016,"required_params":[{"name":"website_url","type":"string","description":"验证码所在页面的完整 URL"},{"name":"website_key","type":"string","description":"页面里的站点公钥（sitekey）"}],"optional_params":[{"name":"api_get_lib","type":"string","description":"Friendly Captcha 脚本的 API 地址（页面上 widget 的 data-puzzle-endpoint）。⚠ 建议填上：缺了它，自托管部署的那些站点可能受理不了"}],"solution":{"shape":"token","fields":["token"],"description":"填回表单的 `frc-captcha-solution`"},"notes":["这是自托管型验证码，常见于注重隐私的欧洲站点"]},{"type":"funcaptcha","title":"FunCaptcha / Arkose Labs","available":true,"price_credits":120,"price_cny":0.012,"required_params":[{"name":"website_url","type":"string","description":"验证码所在页面的完整 URL"},{"name":"website_key","type":"string","description":"页面里的站点公钥（sitekey）"}],"optional_params":[],"solution":{"shape":"token","fields":["token"],"description":"填回目标站表单的 `fc-token`"},"notes":["**一条能力覆盖五个平台**：X/Twitter、LinkedIn、Roblox、Microsoft/Outlook、GitHub 的登录注册都落在它上面","`website_key` 填页面上的 `data-pkey`"]},{"type":"geetest","title":"极验 GeeTest v4","available":true,"price_credits":150,"price_cny":0.015,"required_params":[{"name":"website_url","type":"string","description":"验证码所在页面的完整 URL"},{"name":"website_key","type":"string","description":"页面里的站点公钥（sitekey）"}],"optional_params":[],"solution":{"shape":"fields","fields":["captcha_id","lot_number","pass_token","gen_time","captcha_output"],"description":"把这五个字段一起提交回目标站"}},{"type":"hcaptcha","title":"hCaptcha（勾选框 / 隐藏式）","available":true,"price_credits":330,"price_cny":0.033,"required_params":[{"name":"website_url","type":"string","description":"验证码所在页面的完整 URL"},{"name":"website_key","type":"string","description":"页面里的站点公钥（sitekey）"}],"optional_params":[],"solution":{"shape":"token","fields":["gRecaptchaResponse"],"description":"填回目标站表单的 `h-captcha-response` 字段"},"notes":["hCaptcha 与 reCAPTCHA 在页面上很像：前者的脚本域名是 hcaptcha.com，表单字段是 `h-captcha-response`"]},{"type":"hunt","title":"Hunt Captcha","available":true,"price_credits":110,"price_cny":0.011,"required_params":[{"name":"website_url","type":"string","description":"验证码所在页面的完整 URL"}],"optional_params":[],"solution":{"shape":"token","fields":["token"],"description":"回填目标站的校验参数"},"notes":["⚠ Hunt 在部分部署里把结果放在 `X-HD` 响应头而不是 token 字段 —— 我们只交付 token 那条路径；拿到「无解」而目标站又确实有 Hunt 时，多半是撞上了那种部署"]},{"type":"image","title":"图形验证码识别（图片 → 文字）","available":true,"price_credits":60,"price_cny":0.006,"required_params":[{"name":"body","type":"string","description":"图片的 base64。⚠ 不能带换行，也不能带 `data:image/png;base64,` 前缀"}],"optional_params":[{"name":"case_sensitive","type":"boolean","description":"区分大小写"},{"name":"charset","type":"string","description":"限定字符集","allowed_values":["any","digits"]},{"name":"math","type":"boolean","description":"图里是算式，要算出结果而不是抄下来"}],"solution":{"shape":"text","fields":["text"],"description":"识别出的文字"},"notes":["图片限 JPG / GIF / PNG，100 字节 ~ 500KB","「在这组图里找出所有的猫」这类点选题不属于本能力"]},{"type":"imperva","title":"Imperva / Incapsula","available":true,"price_credits":220,"price_cny":0.022,"required_params":[{"name":"website_url","type":"string","description":"验证码所在页面的完整 URL"}],"optional_params":[{"name":"proxy","type":"string","description":"你自己的出口代理，形如 `http://user:pass@host:port`（也支持 socks5）。⚠ **必须与你后续请求用的是同一个出口** —— 这类能力的交付物绑定求解时的 IP，换出口立刻失效。免密代理省掉 user:pass 即可"},{"name":"user_agent","type":"string","description":"求解时使用的 UA，需与你后续请求一致"}],"solution":{"shape":"cookie","fields":["cookie"],"description":"带回请求的 Cookie 串（含 `___utmvc` 等）"},"notes":["⚠ 产出绑定求解时的出口 IP —— 传 `proxy` 时必须是你后续要用的那个出口"]},{"type":"kasada","title":"Kasada Bot Defense","available":false,"price_credits":220,"price_cny":0.022,"required_params":[{"name":"website_url","type":"string","description":"验证码所在页面的完整 URL"},{"name":"proxy","type":"string","description":"你自己的出口代理，形如 `http://user:pass@host:port`（也支持 socks5）。⚠ **必须与你后续请求用的是同一个出口** —— 这类能力的交付物绑定求解时的 IP，换出口立刻失效。免密代理省掉 user:pass 即可"}],"optional_params":[{"name":"bootstrap_url","type":"string","description":"加载 Kasada 脚本的页面地址。⚠ 当 `website_url` 指向的是 API 域名（如 `api.example.com`）而不是网页时必须传 —— 脚本不在 API 域上"},{"name":"website_domain","type":"string","description":"`bootstrap_url` 的替代写法：装载 Kasada 的域名"},{"name":"cf_cookies","type":"object","description":"若目标站在 Kasada 前面还叠了 Cloudflare，把已解出的那份 Cookie 传进来"}],"solution":{"shape":"fields","fields":["x-kpsdk-ct","x-kpsdk-cd","x-kpsdk-v","x-kpsdk-r","x-kpsdk-st"],"description":"把这几个值原样设成同名请求头"},"notes":["⚠ 产出绑定求解时的出口 IP —— `proxy` 必须是你后续要用的那个出口","⚠ 如果目标是 App 或 API 域名而不是网页，多半要额外传 `bootstrap_url`"]},{"type":"kasada_cd","title":"Kasada 单次令牌（CD）","available":false,"price_credits":110,"price_cny":0.011,"required_params":[{"name":"platform_inputs","type":"string","description":"本次请求的 platform inputs 值（Kasada 侧的参数名是 `s`），从页面上取"}],"optional_params":[{"name":"site","type":"string","description":"已登记的站点别名，用它换取该站的挑战常量"},{"name":"challenge_key","type":"string","description":"该站的挑战常量（64 位十六进制）。已经有就直接传，省一次查询"},{"name":"session_token","type":"string","description":"你当前的会话令牌（`x-kpsdk-ct`），会原样带回结果里"},{"name":"session_timestamp","type":"string","description":"会话时间戳（`x-kpsdk-st`）"},{"name":"dynamic_config","type":"string","description":"站点 `/mfc` 返回的 base64 动态配置块"}],"solution":{"shape":"fields","fields":["x-kpsdk-cd","x-kpsdk-ct","x-kpsdk-st"],"description":"把这几个值原样设成同名请求头"},"notes":["⚠ 这条不建立会话，只为**已有会话**签一个单次令牌 —— 所以它便宜一半、也不需要代理。第一次过 Kasada 请用 `kasada`"]},{"type":"keycaptcha","title":"KeyCAPTCHA","available":true,"price_credits":330,"price_cny":0.033,"required_params":[{"name":"website_url","type":"string","description":"验证码所在页面的完整 URL"},{"name":"user_id","type":"string","description":"页面上的 `s_s_c_user_id`"},{"name":"session_id","type":"string","description":"页面上的 `s_s_c_session_id`"},{"name":"web_server_sign","type":"string","description":"页面上的 `s_s_c_web_server_sign`"},{"name":"web_server_sign2","type":"string","description":"页面上的 `s_s_c_web_server_sign2`"}],"optional_params":[],"solution":{"shape":"token","fields":["token"],"description":"填回目标站表单"},"notes":["⚠ 四个 `s_s_c_*` 值都必须从**当次**页面取 —— 它们是一次性的","⚠ 解出来的值以 `|1` 结尾，那是值的一部分，不要截断"]},{"type":"lemin","title":"Lemin Cropped Captcha","available":true,"price_credits":110,"price_cny":0.011,"required_params":[{"name":"website_url","type":"string","description":"验证码所在页面的完整 URL"},{"name":"website_key","type":"string","description":"页面里的站点公钥（sitekey）"}],"optional_params":[{"name":"div_id","type":"string","description":"页面上 Lemin 容器的 div id"},{"name":"api_server","type":"string","description":"Lemin 的接口子域，目标站自定义时才需要"}],"solution":{"shape":"fields","fields":["answer","challenge_id"],"description":"两个字段一起回填 —— 只有 answer 是过不了的"}},{"type":"mtcaptcha","title":"MTCaptcha","available":true,"price_credits":160,"price_cny":0.016,"required_params":[{"name":"website_url","type":"string","description":"验证码所在页面的完整 URL"},{"name":"website_key","type":"string","description":"页面里的站点公钥（sitekey）"}],"optional_params":[],"solution":{"shape":"token","fields":["token"],"description":"填回目标站表单的 `mtcaptcha-verifiedtoken`"}},{"type":"perimeterx","title":"PerimeterX / HUMAN Security","available":true,"price_credits":220,"price_cny":0.022,"required_params":[{"name":"website_url","type":"string","description":"验证码所在页面的完整 URL"},{"name":"proxy","type":"string","description":"你自己的出口代理。⚠ **必须与后续请求同一个出口** —— 解出来的凭证与 IP 绑定，换 IP 目标站不认"}],"optional_params":[{"name":"user_agent","type":"string","description":"你抓页面时用的 User-Agent"},{"name":"website_key","type":"string","description":"页面里的站点公钥（sitekey）"}],"solution":{"shape":"cookie","fields":["cookie"],"description":"带回请求的 Cookie 串"},"notes":["⚠ 必须自带代理：不带代理的请求会被直接拒绝","厂商已更名 HUMAN Security，页面上两个名字都可能出现"]},{"type":"prosopo","title":"Prosopo Procaptcha","available":true,"price_credits":150,"price_cny":0.015,"required_params":[{"name":"website_url","type":"string","description":"验证码所在页面的完整 URL"},{"name":"website_key","type":"string","description":"页面里的站点公钥（sitekey）"}],"optional_params":[],"solution":{"shape":"token","fields":["token"],"description":"填回表单的 procaptcha 响应字段"}},{"type":"recaptcha_grid","title":"reCAPTCHA 九宫格识图（只识别，不过盾）","available":true,"price_credits":50,"price_cny":0.005,"required_params":[{"name":"body","type":"string","description":"九宫格图片的 base64"},{"name":"question","type":"string","description":"题目标识，形如 `/m/015qff`（交通灯）—— 从页面上抄，不要自己编"}],"optional_params":[],"solution":{"shape":"points","fields":["objects"],"description":"命中的格子位置"},"notes":["⚠ 与 reCAPTCHA v2 不是一回事：那条直接交付可提交的 token，这条只做图像识别、交付要点哪几格，适合你自己驱动浏览器的场景"]},{"type":"recaptcha_v2","title":"reCAPTCHA v2（勾选框 / 隐藏式）","available":true,"price_credits":80,"price_cny":0.008,"required_params":[{"name":"website_url","type":"string","description":"验证码所在页面的完整 URL"},{"name":"website_key","type":"string","description":"页面里的站点公钥（sitekey）"}],"optional_params":[{"name":"invisible","type":"boolean","description":"目标是隐藏式（invisible）验证码"},{"name":"data_s","type":"string","description":"Google 自家站点上那个 `data-s` 属性的值"},{"name":"page_action","type":"string","description":"页面调用时传的 action 值。⚠ 去目标页搜 `grecaptcha.execute` 抄出来，**猜一个多半是错的** —— 错的 action 会让拿到的 token 被目标站拒绝，而客户查不出原因。所以我们不替你兜底默认值，不传就不发。"},{"name":"api_domain","type":"string","description":"加载验证码脚本的域名。只有目标站换了备用域时才需要传","allowed_values":["www.google.com","www.recaptcha.net"]}],"solution":{"shape":"token","fields":["gRecaptchaResponse"],"description":"填回目标站表单的 `g-recaptcha-response` 字段"},"notes":["隐藏式 v2 和 v3 在页面上长得一样。分不清就两个都试一次，错的那次会以 422 明确报错，不会扣费"]},{"type":"recaptcha_v2_enterprise","title":"reCAPTCHA v2 Enterprise","available":true,"price_credits":110,"price_cny":0.011,"required_params":[{"name":"website_url","type":"string","description":"验证码所在页面的完整 URL"},{"name":"website_key","type":"string","description":"页面里的站点公钥（sitekey）"}],"optional_params":[{"name":"enterprise_payload","type":"object","description":"企业版页面额外传给验证码的对象（原样转发）"},{"name":"page_action","type":"string","description":"页面调用时传的 action 值。⚠ 去目标页搜 `grecaptcha.execute` 抄出来，**猜一个多半是错的** —— 错的 action 会让拿到的 token 被目标站拒绝，而客户查不出原因。所以我们不替你兜底默认值，不传就不发。"},{"name":"invisible","type":"boolean","description":"目标是隐藏式（invisible）验证码"},{"name":"api_domain","type":"string","description":"加载验证码脚本的域名。只有目标站换了备用域时才需要传","allowed_values":["www.google.com","www.recaptcha.net"]}],"solution":{"shape":"token","fields":["gRecaptchaResponse"],"description":"填回目标站表单的 `g-recaptcha-response` 字段"}},{"type":"recaptcha_v3","title":"reCAPTCHA v3（打分式，无交互）","available":true,"price_credits":100,"price_cny":0.01,"required_params":[{"name":"website_url","type":"string","description":"验证码所在页面的完整 URL"},{"name":"website_key","type":"string","description":"页面里的站点公钥（sitekey）"}],"optional_params":[{"name":"page_action","type":"string","description":"页面调用时传的 action 值。⚠ 去目标页搜 `grecaptcha.execute` 抄出来，**猜一个多半是错的** —— 错的 action 会让拿到的 token 被目标站拒绝，而客户查不出原因。所以我们不替你兜底默认值，不传就不发。"},{"name":"min_score","type":"number","description":"要求的最低分。⚠ 非必要不传 —— 要求越高越可能受理不了，而目标站真正卡在分数上的情况远比想象中少","allowed_values":[0.3,0.7,0.9]},{"name":"api_domain","type":"string","description":"加载验证码脚本的域名。只有目标站换了备用域时才需要传","allowed_values":["www.google.com","www.recaptcha.net"]},{"name":"invisible","type":"boolean","description":"目标是隐藏式（invisible）验证码"},{"name":"enterprise_payload","type":"object","description":"企业版页面额外传给验证码的对象（原样转发）"}],"solution":{"shape":"token","fields":["gRecaptchaResponse"],"description":"填回目标站表单的 `g-recaptcha-response` 字段"}},{"type":"recaptcha_v3_enterprise","title":"reCAPTCHA v3 Enterprise","available":true,"price_credits":220,"price_cny":0.022,"required_params":[{"name":"website_url","type":"string","description":"验证码所在页面的完整 URL"},{"name":"website_key","type":"string","description":"页面里的站点公钥（sitekey）"}],"optional_params":[{"name":"page_action","type":"string","description":"页面调用时传的 action 值。⚠ 去目标页搜 `grecaptcha.execute` 抄出来，**猜一个多半是错的** —— 错的 action 会让拿到的 token 被目标站拒绝，而客户查不出原因。所以我们不替你兜底默认值，不传就不发。"},{"name":"enterprise_payload","type":"object","description":"企业版页面额外传给验证码的对象（原样转发）"},{"name":"api_domain","type":"string","description":"加载验证码脚本的域名。只有目标站换了备用域时才需要传","allowed_values":["www.google.com","www.recaptcha.net"]}],"solution":{"shape":"token","fields":["gRecaptchaResponse"],"description":"填回目标站表单的 `g-recaptcha-response` 字段"}},{"type":"rotate","title":"旋转对齐（把图转正，返回角度）","available":true,"price_credits":110,"price_cny":0.011,"required_params":[{"name":"body","type":"string","description":"图片的 base64。⚠ 不能带换行，也不能带 `data:image/png;base64,` 前缀"}],"optional_params":[],"solution":{"shape":"number","fields":["angle"],"description":"需要顺时针旋转的角度（整数，正数为顺时针）"},"notes":["⚠ 本能力只处理**单张图**，契约是一个角度数 —— 多图请拆成多次调用","正数代表顺时针"]},{"type":"shein","title":"Shein 图标框选","available":true,"price_credits":170,"price_cny":0.017,"required_params":[{"name":"body","type":"string","description":"挑战图的 base64"}],"optional_params":[],"solution":{"shape":"boxes","fields":["rects"],"description":"要框选的矩形区域"},"notes":["⚠ 走的是**站点专用识别模型**，不吃 `comment` —— 通用框选那条要你说「框出什么」，这条已经知道 Shein 的图标集，直接给图即可","⚠ 只对 Shein 的图标题有效；别的站的框选题请用通用框选那条"]},{"type":"slider","title":"滑块验证码（算出要拖多远）","available":true,"price_credits":170,"price_cny":0.017,"required_params":[{"name":"body","type":"string","description":"带缺口的背景图 base64"},{"name":"piece","type":"string","description":"滑块小图的 base64"}],"optional_params":[],"solution":{"shape":"number","fields":["distance"],"description":"要拖动的像素距离（整数）"},"notes":["⚠ 返回的是**像素距离**，不是坐标也不是百分比 —— 拖动轨迹要你自己生成，我们只给距离"]},{"type":"temu","title":"Temu 图片验证码","available":true,"price_credits":110,"price_cny":0.011,"required_params":[{"name":"body","type":"string","description":"主图的 base64（要在它上面点选）。⚠ 不能带换行，也不能带 `data:image/png;base64,` 前缀"},{"name":"parts","type":"object","description":"候选小图的 base64 数组 —— 要在主图上找出它们的位置"}],"optional_params":[],"solution":{"shape":"points","fields":["coordinates"],"description":"在主图上要点的坐标，形如 `[{\"x\": 36, \"y\": 26}, …]`，顺序与 `parts` 对应"},"notes":["⚠ 主图与候选图**分开传**：主图放 `body`，候选图放 `parts` 数组 —— 把候选图逐个当独立参数传是行不通的","⚠ 返回的坐标与 `parts` 顺序一一对应，别打乱"]},{"type":"tencent_tendi","title":"腾讯天御 TenDI 防水墙","available":true,"price_credits":180,"price_cny":0.018,"required_params":[{"name":"website_url","type":"string","description":"验证码所在页面的完整 URL"},{"name":"website_key","type":"string","description":"页面里的站点公钥（sitekey）"}],"optional_params":[{"name":"captcha_script","type":"string","description":"页面加载的天御脚本地址，非默认时才需要"}],"solution":{"shape":"fields","fields":["ticket","randstr"],"description":"两个字段一起回填目标站的校验接口"},"notes":["`website_key` 传的是天御的 captchaAppId（形如 `189123456`）"]},{"type":"text_captcha","title":"文字问答验证码（无图，纯文本题）","available":true,"price_credits":60,"price_cny":0.006,"required_params":[{"name":"question","type":"string","description":"题面原文，例如「天空是什么颜色？」。⚠ 这类题**没有图片** —— 有图的走图形识别那条"}],"optional_params":[{"name":"language","type":"string","description":"题面语言，影响派给谁答","allowed_values":["en","ru"]}],"solution":{"shape":"text","fields":["text"],"description":"答案文本"},"notes":["⚠ 这是真人答题，不是识别 —— 延迟通常在十几秒，别拿它当 OCR 用"]},{"type":"turnstile","title":"Cloudflare Turnstile","available":true,"price_credits":110,"price_cny":0.011,"required_params":[{"name":"website_url","type":"string","description":"验证码所在页面的完整 URL"},{"name":"website_key","type":"string","description":"页面里的站点公钥（sitekey）"}],"optional_params":[{"name":"action","type":"string","description":"组件上的 `action` 属性"},{"name":"cdata","type":"string","description":"组件上的 `cData` 属性"},{"name":"page_data","type":"string","description":"挑战页里带的 `chlPageData`"}],"solution":{"shape":"token","fields":["token"],"description":"填回表单的 `cf-turnstile-response`"},"notes":["交互式 / 非交互式 / 隐藏式会自动识别，不用指定","⚠ 自定义 User-Agent 对本类型无效，传了会被忽略"]},{"type":"yandex_smartcaptcha","title":"Yandex SmartCaptcha","available":false,"price_credits":330,"price_cny":0.033,"required_params":[{"name":"website_url","type":"string","description":"验证码所在页面的完整 URL"},{"name":"website_key","type":"string","description":"页面里的站点公钥（sitekey）"}],"optional_params":[],"solution":{"shape":"token","fields":["token"],"description":"填回表单的 smart-token"},"notes":["目标站多在俄语区，建议配合当地住宅出口使用"]},{"type":"yidun","title":"网易易盾 NECaptcha","available":true,"price_credits":110,"price_cny":0.011,"required_params":[{"name":"website_url","type":"string","description":"验证码所在页面的完整 URL"},{"name":"website_key","type":"string","description":"页面里的站点公钥（sitekey）"}],"optional_params":[{"name":"captcha_id","type":"string","description":"易盾的 captchaId，与站点 key 不同时才需要"},{"name":"user_agent","type":"string","description":"求解时使用的 UA，需与你后续请求一致"}],"solution":{"shape":"token","fields":["token"],"description":"回填目标站的校验参数"}}],"billing":"charged per successful solve; failures are never charged"}