Capy Puzzle
Capy Puzzle 是 Capy Inc. 的拼图(拖拽补齐缺口)。一张背景图上缺了一块,用户把浮在旁边的拼图块拖到缺口位置补齐即可通过。背景图和拼图块形状都能由站点自定义——官方的 Freestyle Puzzle 变体会把方形块换成羊、心形之类的异形轮廓,所以同样是 Capy,两个站点看起来可能完全不像。
接口规格
| 项目 | 值 |
|---|---|
| type | capy |
| 必填参数 | website_urlwebsite_key |
| 可选参数 | api_server |
| 返回 | 一组字段(要一起提交)(solution.captchakeysolution.challengekeysolution.answer) |
| 怎么用这个解 | 三个字段一起回填,缺任何一个目标站都会拒 |
| 价格 | $3.06 / 1K 次 —— 按成功计费,没解出来退款 |
| 厂商文档 | Capy Inc. 官方文档 |
参数去页面哪里取
下面全部是可以直接照做的定位方法 —— DOM 属性名、JS 全局变量名、script 上的 query 参数。
website_key(Capy 自己叫 captchakey)
官方嵌入代码长这样,key 就在 script src 的 k= 查询参数里:
<div id="capy-captcha" style="padding-bottom: 16px;">
<script src="https://www.capy.me/puzzle/get_js/?k=PUZZLE_Abc1dEFghIJKLM2no34P56q7rStu8v"></script>
</div>
最快的找法:页面源码 Ctrl+F 搜 PUZZLE_。这个前缀在页面里几乎不会有第二个东西用它,一搜就中。次选搜 capy.me/puzzle/get_js 定位到 script 标签再取 k= 的值。格式是 PUZZLE_ + 约 30 位大小写字母数字,整体连前缀一起复制。
挂载容器的默认 id 是 capy-captcha,它本身不是参数,但可以当定位锚点用。
api_server(可选)
只有目标站用了非默认接口域时才需要传。已知两个域并存:https://www.capy.me/(嵌入脚本与老版校验走这里)和 https://jp.api.capy.me/(官方开发者文档里写的校验域)。判断方法是打开 Network 面板,看拼图图片和校验请求实际打在哪个域上,照抄那个。不确定就别传,走默认。
解出来之后往哪填
三个值分别对应表单里这三个字段名(Capy 官方 WordPress 插件的服务端就是按这三个名字从请求里取的):
captchakey -> capy_captchakey
challengekey -> capy_challengekey
answer -> capy_answer
注意 capy_privatekey 是站长的私钥、只存在于站点服务端,页面上根本没有——把它当成「要从页面复制的参数」是最常见的浪费时间方式。
调用示例
一个端点解全部验证码类型 —— 换一种验证码只改 type 这一个字段。
curl -X POST https://api.everyinfra.com/api/v1/captcha \ -H "Authorization: Bearer omg_你的KEY" \ -H "Content-Type: application/json" \ -d '{"type":"capy","website_url":"<website_url>","website_key":"<website_key>"}'
{ "solution": { "captchakey": "…", "challengekey": "…", "answer": "…" }, "billing": { "charged": true, "credits": 220 }}
怎么确认目标站用的就是它
校验的不是最终落点那一个坐标,而是 answer 字段里的一整串坐标序列。官方把它描述为「答案的坐标数据」,示例写成 `10,20,30,40,` 这样的逗号分隔序列,而真实取到的值是几十个点连成的长串(形如 `0xax8ex0xax84x0xkx7qx...`)——即提交的是拖拽轨迹而不是一个偏移量。服务端再拿站长私钥 + challengekey 回 Capy 核验,challenge 是一次性的,同一 IP 并发重复提交同一个会被判 `is-not-active`。
容易搞混的
最容易和 Lemin Cropped Captcha 搞混,而且这个混淆有根:两者是同一家公司(Capy Inc.)的两代产品,Lemin 是新一代品牌,连 answer 的编码形状都同源。区分只看两处:key 前缀 PUZZLE_ 是 Capy、CROPPED_ 是 Lemin;域名 capy.me 是 Capy、leminnow.com 是 Lemin。另外别把它和通用「滑块验证码」(极验、腾讯天御、TikTok 那类)归成一类——观感相似,但参数体系和回填字段完全不同,按滑块的套路去找 sitekey 会扑空。
常见部署场景
- 日本市场的登录/注册页,主打防撞库与密码暴力破解
- 越南的积分兑换类站点(经 Asia Plus 代理部署)
- 法国由 Oktoprod 作为销售代理
- 同厂另有 Text/Gimpy CAPTCHA、Avatar CAPTCHA、风险认证与实时黑名单,同一账号体系下可能混用
已知的坑
只把 answer 回填给目标站一定过不了:captchakey、challengekey、answer 三个必须一起交回去,缺任何一个都被拒。
answer 是一串坐标序列不是单个数值。算出缺口的 x 偏移量直接填进去是无效的。
capy_privatekey 是站长私钥,页面上找不到,不要浪费时间去挖。
两个接口域并存(www.capy.me 与 jp.api.capy.me),老集成走前者、开发者文档写后者,取错会失败;不确定就看 Network 面板里实际请求打的域。
Capy 官方文档自身不一致:校验参数表列的是 capy_challengekey,另一节又说要转发 capy_captchakey,错误码列表里还有个拼错的 invalid-capcha-key。照单一处文档抄容易漏字段。
Capy 是申请/邀请制开户,拿不到自助测试账号,只能对着真实目标站验证,调试成本天然偏高。
公司源头在日本(2010 年京都大学的研究项目,创始人 Mitsuo Okada),但 Capy Inc. 2012 年注册在美国特拉华州——「日本验证码」这个标签对判断部署地区有用,对判断公司实体没用。
常见问题
Capy Puzzle 要传哪些参数?
必填 website_url、website_key;可选 api_server。请求里 type 传 capy。
解出来的东西怎么用?
返回一组字段(要一起提交),取 solution.captchakey、solution.challengekey、solution.answer。三个字段一起回填,缺任何一个目标站都会拒
capy_privatekey 要去页面的哪里找?
重点找 capy_privatekey、capy-captcha、challengekey。本页「参数去页面哪里取」一节写了全部位置与取法,含可直接粘进控制台的一行命令。
怎么确认目标站用的就是 Capy Puzzle?
最容易和 Lemin Cropped Captcha 搞混,而且这个混淆有根:两者是同一家公司(Capy Inc.)的两代产品,Lemin 是新一代品牌,连 answer 的编码形状都同源。区分只看两处:key 前缀 PUZZLE_ 是 Capy、CROPPED_ 是 Lemin;域名 capy.me 是 Capy、leminnow.com 是 Lemin。另外别把它和通用「滑块验证码」(极验、腾讯天御、TikTok 那类)归成一类——观感相似,但参数体系和回填字段完全不同,按滑块的套路去找 sitekey 会扑空。
有什么容易踩的坑?
只把 answer 回填给目标站一定过不了:captchakey、challengekey、answer 三个必须一起交回去,缺任何一个都被拒。
多少钱一次,失败扣不扣?
$3.06 / 1K 次。按成功计费 —— 没解出来一律退款,所以失败不花钱。账单按次记,标价按每千次是为了让量级读得出来。