reCAPTCHA Enterprise 使用两个不同的密钥 - 混淆它们是最常见的配置错误之一。站点密钥在页面上呈现验证码小部件。 API 密钥对向 Google 发出的服务器端验证请求进行身份验证。向 CaptchaAI 发送任务时需要站点密钥,而不是 API 密钥。
两个键的解释
站点密钥(公共)
站点密钥嵌入在 HTML 页面中。它标识要加载的 reCAPTCHA 配置:
<script src="https://www.google.com/recaptcha/enterprise.js?render=6LcR_RsTAAAAADge..."></script>
或者在 grecaptcha.enterprise.execute 调用中:
grecaptcha.enterprise.execute('6LcR_RsTAAAAADge...', { action: 'login' });
特性:
- 以
6L开头(与标准 reCAPTCHA 相同的前缀) - 在页面源代码中可见——设计为公开
- 绑定到 Google Cloud Console 中的特定域
- 这就是CaptchaAI需要解决的挑战
API 密钥(私有)
API 密钥对服务器到 Google 的通信进行身份验证以进行令牌验证:
POST https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/assessments?key=AIzaSy...
特性:
- 以
AIzaSy开头(Google Cloud API 密钥格式) - 从未在客户端代码中暴露
- 仅由网站后端用于验证令牌
- CaptchaAI 不需要需要此密钥
主要比较
| 财产 | 站点密钥 | API密钥 |
|---|---|---|
| 格式 | 6L...(40 个字符) |
AIzaSy...(39 个字符) |
| 能见度 | 公开(在 HTML/JS 中) | 私有(仅限服务器端) |
| 目的 | 加载验证码小部件 | 使用 Google 验证令牌 |
| 哪里发现的 | 页面源码、JS调用 | 服务器配置、环境变量 |
| CaptchaAI 需要吗? | 是的 | 不 |
reCAPTCHA 企业版与标准版
reCAPTCHA Enterprise 与免费版本的不同之处在于密钥的工作方式:
| 特征 | 标准(免费) | 企业 |
|---|---|---|
| 站点关键源 | reCAPTCHA 管理控制台 | 谷歌云控制台 |
| 验证端点 | siteverify |
assessments |
| Auth 用于验证 | 秘密密钥(共享秘密) | API 密钥或服务帐户 |
| 评分反应 | score 字段 (0.0–1.0) |
riskAnalysis.score + 原因 |
| CaptchaAI 任务类型 | RecaptchaV2Task / RecaptchaV3Task |
RecaptchaV2EnterpriseTask / RecaptchaV3EnterpriseTask |
查找站点密钥
方法一:页面源码搜索
在 HTML 中搜索 enterprise.js:
View Source → Ctrl+F → "enterprise.js"
render 参数包含站点密钥:
<script src="https://www.google.com/recaptcha/enterprise.js?render=6LcR_RsTAAAAADge..."></script>
方法 2:JavaScript 控制台
在浏览器控制台中运行:
// Check for Enterprise grecaptcha
if (window.grecaptcha && window.grecaptcha.enterprise) {
console.log('reCAPTCHA Enterprise detected');
}
// Find site key from rendered widgets
document.querySelectorAll('[data-sitekey]').forEach(el => {
console.log('Site key:', el.getAttribute('data-sitekey'));
});
方法 3:网络选项卡
过滤 enterprise.js 或 recaptcha/enterprise 的网络请求 - 站点密钥出现在请求 URL 或负载中。
发送至CaptchaAI
获得站点密钥后,将其作为 websiteKey 参数提交:
POST https://ocr.captchaai.com/in.php
所需参数:
| 范围 | 价值 |
|---|---|
key |
您的 CaptchaAI API 密钥 (YOUR_API_KEY) |
method |
userrecaptcha |
googlekey |
页面中的站点密钥 (6LcR_Rs...) |
pageurl |
显示验证码的完整 URL |
enterprise |
1(将其标记为企业) |
可选企业参数:
| 范围 | 目的 |
|---|---|
enterprise_type |
指定 v2 或 v3 Enterprise |
action |
操作名称(对于 v3 Enterprise) |
企业验证有何不同
了解完整流程有助于解释为什么只有站点关键才能解决以下问题:
- 浏览器使用站点密钥加载
enterprise.js - 浏览器运行挑战,获取令牌
- 站点后端将令牌 + API 密钥发送到 Google 的
assessments端点 - Google 返回风险评分和评估详细信息
- 网站后台根据分数决定是否接受
CaptchaAI 替换步骤 1-2。它使用站点密钥生成有效令牌。然后,网站后端使用自己的 API 密钥验证该令牌 — CaptchaAI 不参与验证。
故障排除
| 问题 | 原因 | 处理方式 |
|---|---|---|
| “ERROR_WRONG_CAPTCHA_ID” | 发送 API 密钥而不是站点密钥 | 使用页面中的 6L... 密钥,而不是 AIzaSy... 密钥 |
| 令牌被网站拒绝 | 错误的企业类型(v2 与 v3) | 设置 enterprise=1 并更正 enterprise_type |
| “站点密钥无效” | 来自错误环境的密钥(暂存与生产) | 从确切的目标 URL 中提取密钥 |
| 无企业旗帜 | 作为标准 reCAPTCHA 提交 | 将 enterprise=1 添加到您的请求中 |
常问问题
如何判断网站使用的是企业版还是标准版 reCAPTCHA?
检查脚本 URL。企业版从 /recaptcha/enterprise.js 加载,而标准版则使用 /recaptcha/api.js。在 JavaScript 中,Enterprise 使用 grecaptcha.enterprise.execute() 而不是 grecaptcha.execute()。
我可以对标准版和企业版使用相同的 CaptchaAI API 密钥吗?
是的。您的 CaptchaAI API 密钥适用于所有验证码类型。在您的请求中设置 enterprise=1 以指示企业挑战 - 解决问题按相同费率收费。
网站的 API 密钥轮换是否会影响我的求解?
不可以。API 密钥仅用于网站后端和 Google 之间的服务器端验证。它对代币生成或 CaptchaAI 的解决过程没有影响。
相关文章
- 如何使用Api解决Recaptcha V2回调
- Captchaai Ip 白名单 Api 密钥安全
- Captchaai Api 密钥轮换
下一步
解决 reCAPTCHA Enterprise 挑战 —获取您的 CaptchaAI API 密钥并提交带有 enterprise=1 标志的站点密钥。