EveryInfra

Friendly Captcha

Friendly CaptchaFriendly Captcha工作量证明(无题目,浏览器算一小段谜题)一个窄条组件,上面写着「Anti-Robot Verification」并自动跑进度。多数情况下用户什么都不用点——是否需要点一下由站点在后台选的 Widget Mode 决定(One-click / Zero-click / Smart,默认 Smart)。没有图片题,也没有勾选框。

正在查询可用性…$2.22 / 1K 次按成功计费,失败退款

接口规格

项目
typefriendly_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 属性名:
- v2data-api-endpoint,取值是完整 URL 或字面量 eu / global,默认 https://global.frcapi.com/api/v2/captcha

- v1data-puzzle-endpoint

页面上出现哪一个,就说明是哪一代。

api_get_lib

填的就是上面那个 endpoint 值。自托管部署必须传 —— Friendly Captcha 允许把谜题服务架在自己域名下,那种站点不传 endpoint 我们就找不到谜题从哪来。看到 data-api-endpoint / data-puzzle-endpoint 指向的不是 frcapi.com,基本可以确定是自托管。

其他 data-* 属性(不用传给我们,但能帮你判断页面行为)

data-startauto / focus 默认 / none)决定什么时候开始算;data-form-field-name改掉隐藏 input 的名字——站点改过的话,你回填时要用它指定的名字而不是默认的 frc-captcha-responsedata-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 自定义元素。

去看 ALTCHA 那一条 →

常见部署场景

已知的坑

回填字段名可能被站点改掉:默认 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 次。按成功计费 —— 没解出来一律退款,所以失败不花钱。账单按次记,标价按每千次是为了让量级读得出来。

开始接入

一个端点覆盖全部验证码类型,按成功计费,失败与空结果一律退款。