Friendly Captcha
Friendly Captcha 是 Friendly Captcha 的工作量证明(无题目,浏览器算一小段谜题)。一个窄条组件,上面写着「Anti-Robot Verification」并自动跑进度。多数情况下用户什么都不用点——是否需要点一下由站点在后台选的 Widget Mode 决定(One-click / Zero-click / Smart,默认 Smart)。没有图片题,也没有勾选框。
接口规格
| 项目 | 值 |
|---|---|
| type | friendly_captcha |
| 必填参数 | website_urlwebsite_key |
| 可选参数 | api_get_lib |
| 返回 | 一个 token 字符串(solution.token) |
| 怎么用这个解 | 填回表单的 `frc-captcha-solution` |
| 价格 | $2.22 / 1K 次 —— 按成功计费,没解出来退款 |
| 厂商文档 | Friendly Captcha 官方文档 |
参数去页面哪里取
下面全部是可以直接照做的定位方法 —— DOM 属性名、JS 全局变量名、script 上的 query 参数。
必填 website_url + website_key,可选 api_get_lib。
website_key
组件是一个带 frc-captcha 类名的 div:
<div class="frc-captcha" data-sitekey="<my sitekey>"></div>一行取:document.querySelector('.frc-captcha').dataset.sitekey
判断 v1 还是 v2——这是本条最容易踩的地方
两代的表单字段名相同(都是 frc-captcha-response),所以不能靠它区分。看 endpoint 属性名:
- v2:data-api-endpoint,取值是完整 URL 或字面量 eu / global,默认 https://global.frcapi.com/api/v2/captcha
- v1:data-puzzle-endpoint
页面上出现哪一个,就说明是哪一代。
api_get_lib
填的就是上面那个 endpoint 值。自托管部署必须传 —— Friendly Captcha 允许把谜题服务架在自己域名下,那种站点不传 endpoint 我们就找不到谜题从哪来。看到 data-api-endpoint / data-puzzle-endpoint 指向的不是 frcapi.com,基本可以确定是自托管。
其他 data-* 属性(不用传给我们,但能帮你判断页面行为)
data-start(auto / focus 默认 / none)决定什么时候开始算;data-form-field-name 会改掉隐藏 input 的名字——站点改过的话,你回填时要用它指定的名字而不是默认的 frc-captcha-response;data-theme(light/dark/auto)与 lang 只影响外观。
调用示例
一个端点解全部验证码类型 —— 换一种验证码只改 type 这一个字段。
curl -X POST https://api.everyinfra.com/api/v1/captcha \ -H "Authorization: Bearer omg_你的KEY" \ -H "Content-Type: application/json" \ -d '{"type":"friendly_captcha","website_url":"<website_url>","website_key":"<website_key>"}'
{ "solution": { "token": "…" }, "billing": { "charged": true, "credits": 160 }}
怎么确认目标站用的就是它
浏览器在本地算一段工作量证明谜题,算完把结果换成一个 token。因为不采集用户行为特征、也不依赖第三方 Cookie,它主打的就是 GDPR 合规——这也是欧洲站点选它的主要原因。
容易搞混的
和 ALTCHA 最容易混——两者都是「工作量证明 + 隐私优先 + 欧洲背景 + 窄条组件」。看类名与脚本域:Friendly Captcha 是 .frc-captcha 与 frcapi.com,ALTCHA 是 altcha-widget 自定义元素。
常见部署场景
- 德语区与欧盟站点的注册与联系表单——GDPR 顾虑最重的场景
- 政府与公共部门网站(不愿把用户数据交给美国厂商)
- 医疗、保险、律所这类隐私敏感行业的表单
- 从 reCAPTCHA 迁走的欧洲电商
已知的坑
回填字段名可能被站点改掉:默认 frc-captcha-response,但 data-form-field-name 一设就变。回填前先看一眼那个属性。
Widget Mode 在厂商后台配、不在页面上(官方说明:放在 markup 里会被攻击者改成对自己有利的值)。所以「这个组件到底要不要用户点一下」你从 HTML 里看不出来。
自托管部署不传 api_get_lib 会受理不了——这是这条能力可选参数里最值得传的一个。
v1 与 v2 的表单字段名相同,别拿字段名去判断版本,要看 endpoint 属性名。
这是自托管型验证码,常见于注重隐私的欧洲站点
常见问题
Friendly Captcha 要传哪些参数?
必填 website_url、website_key;可选 api_get_lib。请求里 type 传 friendly_captcha。
解出来的东西怎么用?
返回一个 token 字符串,取 solution.token。填回表单的 frc-captcha-solution
frc-captcha-response 要去页面的哪里找?
重点找 frc-captcha-response、data-puzzle-endpoint、data-form-field-name。本页「参数去页面哪里取」一节写了全部位置与取法,含可直接粘进控制台的一行命令。
怎么确认目标站用的就是 Friendly Captcha?
和 ALTCHA 最容易混——两者都是「工作量证明 + 隐私优先 + 欧洲背景 + 窄条组件」。看类名与脚本域:Friendly Captcha 是 .frc-captcha 与 frcapi.com,ALTCHA 是 altcha-widget 自定义元素。
有什么容易踩的坑?
回填字段名可能被站点改掉:默认 frc-captcha-response,但 data-form-field-name 一设就变。回填前先看一眼那个属性。
多少钱一次,失败扣不扣?
$2.22 / 1K 次。按成功计费 —— 没解出来一律退款,所以失败不花钱。账单按次记,标价按每千次是为了让量级读得出来。