EveryInfra

hCaptcha(勾选框 / 隐藏式)

hCaptcha(勾选框 / 隐藏式)hCaptcha勾选框 / 隐藏式和 reCAPTCHA 几乎一模一样的勾选框,勾完可能出图片题(选出所有的公交车那种)。隐藏式配置下什么都不显示。API 是**刻意设计成与 reCAPTCHA 兼容**的(官方原话:方法「are API-compatible with reCAPTCHA methods」),所以两者外观和用法都很像。

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

接口规格

项目
typehcaptcha
必填参数website_urlwebsite_key
可选参数
返回一个 token 字符串solution.gRecaptchaResponse
怎么用这个解填回目标站表单的 `h-captcha-response` 字段
价格$4.58 / 1K 次 —— 按成功计费,没解出来退款
厂商文档hCaptcha 官方文档

参数去页面哪里取

下面全部是可以直接照做的定位方法 —— DOM 属性名、JS 全局变量名、script 上的 query 参数。

必填 website_url + website_key

website_key

容器带 h-captcha 类,key 在 data-sitekey

<div class="h-captcha" data-sitekey="your_site_key"></div>

一行取:document.querySelector('.h-captcha').dataset.sitekey
⚠ 官方说容器「can be any element」,不一定是 div —— 按类名找,别按标签找

⚠⚠ 一眼区分 hCaptcha 与 reCAPTCHA:看 sitekey 长什么样

· hCaptcha 的 sitekey 是 UUID 形态 —— 官方测试 key 就是
10000000-ffff-ffff-ffff-000000000001(企业版测试 key 用 20000000- / 30000000- 前缀)

· reCAPTCHA 的 sitekey 是 `6L` 开头的 40 位连续字符串

这个差别比看类名更快,因为 sitekey 常常同时出现在 HTML 与 JS 里。

其余三处判据

类名 h-captcha(不是 g-recaptcha)· 回填字段 `h-captcha-response`(不是 g-recaptcha-response)· 脚本域 js.hcaptcha.comhttps://js.hcaptcha.com/1/api.js)。

隐藏式怎么看

hCaptcha 的 invisible 不是靠 data 属性,是在 hcaptcha.render() 里传 size: 'invisible',再用 hcaptcha.execute(widgetId) 触发:

widgetId = hcaptcha.render('hcaptcha-container', {
  sitekey: 'your_site_key_here', size: 'invisible', callback: onSolve });

所以页面上看到 api.js?onload=…&render=explicit + 一个空容器 + hcaptcha.execute,就是隐藏式。

调用示例

一个端点解全部验证码类型 —— 换一种验证码只改 type 这一个字段。

请求
curl -X POST https://api.everyinfra.com/api/v1/captcha \  -H "Authorization: Bearer omg_你的KEY" \  -H "Content-Type: application/json" \  -d '{"type":"hcaptcha","website_url":"<website_url>","website_key":"<website_key>"}'
响应
{  "solution": {    "gRecaptchaResponse": "…"  },  "billing": { "charged": true, "credits": 330 }}

怎么确认目标站用的就是它

组件换一个 token,站点后端拿它去 `api.hcaptcha.com/siteverify` 校验。主打卖点是隐私合规与向站长分成,所以从 reCAPTCHA 迁过来的站点很多。

容易搞混的

⚠ 与 reCAPTCHA v2 最容易混(这是设计使然,hCaptcha 主打的就是无痛迁移)。四个判据任选其一即可确定:sitekey 是 UUID 还是 6L…、类名 h-captcha 还是 g-recaptcha、字段 h-captcha-response 还是 g-recaptcha-response、脚本域 hcaptcha.com 还是 google.com。

去看 reCAPTCHA v2 那一条 →

常见部署场景

已知的坑

别把 reCAPTCHA 的 sitekey 拿来当 hCaptcha 用:UUID 形态 vs 6L 开头 40 位,两者格式完全不同,混了会直接受理失败。

回填字段是 h-captcha-response不是 g-recaptcha-response。迁移过来的站点后端如果没改字段名,本来就是坏的。

官方明说容器「can be any element」—— 按 <div> 硬找会漏。

hCaptcha 的属性名与 reCAPTCHA 高度兼容(theme/size/tab-index 同名同义),这既是便利也是陷阱:光看属性名分不出是哪一家。

hCaptcha 与 reCAPTCHA 在页面上很像:前者的脚本域名是 hcaptcha.com,表单字段是 h-captcha-response

常见问题

hCaptcha(勾选框 / 隐藏式) 要传哪些参数?

必填 website_url、website_key,没有可选参数。请求里 type 传 hcaptcha。

解出来的东西怎么用?

返回一个 token 字符串,取 solution.gRecaptchaResponse。填回目标站表单的 h-captcha-response 字段

hcaptcha.execute 要去页面的哪里找?

重点找 hcaptcha.execute、js.hcaptcha.com、tab-index。本页「参数去页面哪里取」一节写了全部位置与取法,含可直接粘进控制台的一行命令。

怎么确认目标站用的就是 hCaptcha(勾选框 / 隐藏式)?

⚠ 与 reCAPTCHA v2 最容易混(这是设计使然,hCaptcha 主打的就是无痛迁移)。四个判据任选其一即可确定:sitekey 是 UUID 还是 6L…、类名 h-captcha 还是 g-recaptcha、字段 h-captcha-response 还是 g-recaptcha-response、脚本域 hcaptcha.com 还是 google.com。

有什么容易踩的坑?

别把 reCAPTCHA 的 sitekey 拿来当 hCaptcha 用:UUID 形态 vs 6L 开头 40 位,两者格式完全不同,混了会直接受理失败。

多少钱一次,失败扣不扣?

$4.58 / 1K 次。按成功计费 —— 没解出来一律退款,所以失败不花钱。账单按次记,标价按每千次是为了让量级读得出来。

开始接入

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