如何查找并使用您的 reCAPTCHA 密钥

如果您的网站依赖 Google reCAPTCHA 来拦截机器人,那么 reCAPTCHA 密钥就是您所拥有的最关键的安全凭证。没有它,您的服务器就无法验证用户是否真的通过了 CAPTCHA 挑战——这会使这层保护实际上失去作用。然而,它也是最常被错误配置、泄露或误解的密钥。
本指南将详细介绍密钥究竟是什么、如何在 Google Admin Console 中找到它、如何在后端代码中正确集成它,以及如何确保其安全。我们还会介绍像 CapMonster Cloud 这样的工具如何使用配套的公钥,对您自己的 CAPTCHA 配置进行合法的自动化测试。
什么是 reCAPTCHA 密钥?
当您注册一个站点时,Google reCAPTCHA 会签发 两个密钥,而在动任何一行代码之前,理解它们之间的区别至关重要。
recaptcha secret key(在代码中有时也写作 recaptcha_secret_key )仅用于您的服务器。它会与用户浏览器生成的令牌一起,通过 POST 请求发送到 Google 的 siteverify 端点。Google 会返回一个 JSON 对象,用于确认该挑战是否已通过。
无论是 reCAPTCHA v2(经典复选框和 invisible 变体)还是 reCAPTCHA v3(基于评分、无需用户交互),都遵循相同的双密钥模型。区别在于令牌所代表的含义:对 v2 来说是二元的通过/失败结果;对 v3 来说则是介于 0.0 和 1.0 之间的风险评分。
如何在 reCAPTCHA Admin Console 中找到您的 reCAPTCHA 密钥
如果您是第一次获取一对 Google reCAPTCHA key,可以通过 reCAPTCHA Admin Console 完成——本节将介绍具体流程。如果您已经为自己的网站注册过 reCAPTCHA 密钥,请注意,现有密钥是在 Google Cloud Console 中管理的;您可以直接跳到下一节。
步骤 1 — 进入 reCAPTCHA Admin Console
打开 google.com/recaptcha/admin。使用您希望持有这些密钥的 Google 账号登录。
步骤 2 — 注册新站点
登录后,您会看到注册首个站点的提示:

请填写:
- Label: 仅供您在控制台中识别使用的显示名称。请使用描述性名称,例如 Production – Checkout Form 或 Staging – Contact Page。它不会带来任何 SEO 或安全方面的影响;其作用纯粹是为了内部管理更清晰,尤其是在管理多组密钥时。
- reCAPTCHA type: 请参见下表。
- Domains: 用于限制哪些域名可以使用此密钥加载和提交 reCAPTCHA 令牌。为 example.com 注册后,会自动覆盖 subdomain.example.com —— 无需单独列出子域名。需要注意以下规则:
- 不要包含路径、端口、查询字符串或片段(例如,应使用 example.com,而不是 example.com/contact)。
- 域名变更的传播可能需要 最多 30 分钟。
- 此字段不适用于 reCAPTCHA v2 Android 站点类型。
将此列表保持精简,是防止您的密钥在第三方域名上被未经授权使用的最有效方式之一。
- Google Cloud Platform: 创建的 API 密钥会在 Google Cloud Platform 中管理。因此,如果您还没有 Google Cloud Platform 账号或项目,系统会提示您自动创建一个。
步骤 3 — 选择您的 reCAPTCHA 类型
请注意,注册后将无法更改:
使用 google recaptcha v2 路径时,您会得到一个基于挑战机制、且安全级别可调的小组件。使用 recaptcha v3 路径时,防护则是不可见且基于评分的——您的服务器决定如何处理该结果。
步骤 4 — 接受条款并提交
勾选服务条款复选框,然后点击 Submit。Google 将生成您的密钥对。
步骤 5 — 复制您的密钥
在确认页面上,您会看到两个值:
- Site key —— 可以公开;放入您的 HTML 中
- Secret key —— 您的 google reCAPTCHA secret key;只能放在服务器上

立即将这两个值复制到安全的密码管理器或密钥保管库中。之后,您可以通过访问 Google Cloud Console 查看这些密钥(见下文)。
如何在 Google Cloud Console 中找到您的 reCAPTCHA 密钥
目前,reCAPTCHA Admin Console 只允许您注册第一个网站。后续的密钥管理和新密钥注册需要在 Google Cloud Console 中完成。
步骤 1 — 进入 Google Cloud Console
要查看现有站点的密钥,请打开 Google Cloud Console > Security > Detections and Controls > reCAPTCHA > Dashboard 标签页,然后稍微向下滚动到 reCAPTCHA keys 部分:

步骤 2 — 打开 Key details 面板
点击 Key details,您将进入 Key details 面板:

步骤 3 — 复制您的密钥
在 Key details 页面(reCAPTCHA 管理面板)中,点击 Edit key:

设置菜单会打开,您将同时看到自己的 site key(ID)和 secret key:

如何在代码中使用 reCAPTCHA 密钥
验证流程包含两个不同部分:显示小组件的 前端,以及校验响应的 后端。
前端:嵌入站点密钥
将以下代码片段放入任何您希望显示小组件的 HTML 页面中。data-sitekey 属性应填写您的 recaptcha public key —— 绝不能填写密钥。
reCAPTCHA v2 复选框小组件:
<html>
<head>
<script src="https://www.google.com/recaptcha/api.js" async defer></script>
</head>
<body>
<form action="/submit" method="POST">
<div class="g-recaptcha" data-sitekey="YOUR_SITE_KEY"></div>
<button type="submit">Submit</button>
</form>
</body>
</html>当用户提交表单时,Google 的脚本会注入一个隐藏字段 g-recaptcha-response,其中包含一个短时有效令牌。您的服务器必须校验的就是这个令牌。
后端:使用密钥验证令牌
您的服务器会将令牌和 recaptcha_secret_key 发送到 Google 的验证端点:
POST https://www.google.com/recaptcha/api/siteverify
Node.js(使用 axios):
const axios = require('axios');
async function verifyRecaptcha(token) {
const secret = process.env.RECAPTCHA_SECRET_KEY; // 从环境变量中加载
const { data } = await axios.post(
`https://www.google.com/recaptcha/api/siteverify`,
new URLSearchParams({ secret, response: token })
);
return data.success; // true 表示真人,false 表示机器人
}
PHP:
$token = $_POST['g-recaptcha-response'] ?? '';
$secret = getenv('RECAPTCHA_SECRET_KEY');
$options = [
'http' => [
'header' => "Content-type: application/x-www-form-urlencoded\\r\\n",
'method' => 'POST',
'content' => http_build_query(['secret' => $secret, 'response' => $token])
]
];
$context = stream_context_create($options);
$response = file_get_contents('https://www.google.com/recaptcha/api/siteverify', false, $context);
$result = json_decode($response, true);
if (!empty($result['success'])) {
// 继续处理表单
} else {
// 拒绝该请求
}
Python(使用 requests):
import requests, os
def verify_recaptcha(token: str) -> bool:
secret = os.environ["RECAPTCHA_SECRET_KEY"]
r = requests.post(
"https://www.google.com/recaptcha/api/siteverify",
data={"secret": secret, "response": token}
)
return r.json().get("success", False)Google 的 API 会返回一个 JSON 对象。对于 reCAPTCHA v2,请检查 success 字段。对于 v3,还应检查 score 字段(越接近 1.0 越表示是人类行为)以及 action 字段,以确认该令牌是在预期页面上生成的。
reCAPTCHA 密钥的安全最佳实践
保护您的 google reCAPTCHA private key 不是可选项——一旦密钥泄露,攻击者就能伪造验证结果,彻底绕过您的反机器人防护。
1. 永远不要在客户端暴露密钥。 recaptcha private key 绝不能出现在 HTML、JavaScript、移动应用二进制文件或公开的 Git 仓库中。即使只是在提交历史中短暂暴露,也足以让您的站点被攻破——请始终以与数据库密码相同的敏感级别来对待它。
2. 将密钥存储在环境变量或密钥管理器中。 把 recaptcha_secret_key 硬编码在源文件中,是最常见的安全错误之一。正确做法是在运行时加载它:
- 本地开发:通过 dotenv 加载的 .env 文件(绝不要提交到版本控制中)
- 生产环境:平台密钥管理服务(例如 AWS Secrets Manager、Google Secret Manager、HashiCorp Vault,或您的托管服务提供商提供的环境变量界面)
3. 限制允许的域名。 在 Admin Console 中,始终明确指定被授权使用您的 recaptcha key 的精确域名。这可以防止其他网站渲染您的小组件并消耗您的配额——或者借此探测您的验证逻辑。
4. 验证 API 响应中的每一个字段。 安全的服务器端检查应确认:
- success 为 true
- hostname 与您的真实域名一致
- 对于 v3: score 高于您的阈值(通常为 0.5),且 action 与预期的操作名称一致
- 该令牌此前未被使用过(令牌为一次性使用;重放尝试会返回 success: false)
5. 如果密钥泄露,请轮换密钥。 如果您怀疑自己的 google recaptcha private key 已泄露,请立即前往 Admin Console,删除受影响的密钥对并重新注册一个新的。在旧密钥失效之前,更新所有部署环境。
6. 持续保持监控。 Google Cloud Console 提供流量分析。请定期检查各域名的请求量、验证失败率以及异常流量峰值——这些都可能表明发生了密钥泄露或正在遭受滥用攻击。
使用 CapMonster Cloud 进行自动化 reCAPTCHA 测试
当您的 reCAPTCHA 集成上线后,您需要确认它能端到端正常工作——包括令牌流转、服务器端验证,以及成功通过挑战后的表单行为。在 QA 过程中手动解决 CAPTCHA 既慢又不稳定。这正是 CapMonster Cloud 成为实用工具的地方。
CapMonster Cloud 是一项自动化 CAPTCHA 求解服务,旨在测试您自己拥有合法访问权限的网站和系统。关键在于,它使用的是您的 recaptcha public key(即 site key),而不是密钥——这意味着即使在自动化测试运行期间,您的 recaptcha_secret_key 也始终不会离开服务器。
工作原理
CapMonster Cloud 通过其 API 接收任务,在其服务器上解决 CAPTCHA,并返回一个可直接使用的 g-recaptcha-response 令牌,您可以将其注入表单中以进行端到端验证。
使用 CapMonster Cloud 解决 reCAPTCHA v3 的示例:
创建任务:
POST https://api.capmonster.cloud/createTask请求
{
"clientKey": "API_KEY",
"task": {
"type": "RecaptchaV3TaskProxyless",
"websiteURL": "https://lessons.zennolab.com/captchas/recaptcha/v3.php?level=beta",
"websiteKey": "6Le0xVgUAAAAAIt20XEB4rVhYOODgTl00d8juDob",
"isEnterprise": false,
"minScore": 0.7,
"pageAction": "myverify"
}
}响应
{
"errorId":0,
"taskId":407533072
}获取任务结果:
POST https://api.capmonster.cloud/getTaskResult请求
{
"clientKey":"API_KEY",
"taskId": 407533072
}响应
{
"errorId":0,
"status":"ready",
"solution": {
"gRecaptchaResponse":"3AHJ_VuvYIBNBW5yyv0zRYJ75VkOKvhKj9_xGBJKnQimF72rfoq3Iy-DyGHMwLAo6a3"
}
}随后,返回的令牌会像真实用户的令牌一样提交到您的服务器,从而让您能够在自动化、可重复的测试中验证完整的校验流程——包括您的 recaptcha_secret_key 相关逻辑。CapMonster Cloud 支持 reCAPTCHA v2(复选框和 invisible)、reCAPTCHA v3 以及多种其他 CAPTCHA 类型,因此非常适合对站点的反机器人防护层进行全面回归测试。
详细的 API 文档和集成示例可在 capmonster.cloud 查看。
结论
您的 reCAPTCHA 密钥是服务器端机器人验证的核心——正确找到它、安全集成它并防止其暴露,是任何生产环境部署中都不可妥协的步骤。请在 reCAPTCHA Admin Console 或 Google Cloud Console 中注册您的站点,将密钥仅保存在服务器端的环境变量中,并验证 Google 返回的每一个字段——而不仅仅是 success 这个布尔值。
对于需要自动化其 CAPTCHA 流程 QA 的团队来说, CapMonster Cloud 提供了一种简洁、以 API 为驱动的方式,可在完全不暴露私钥的情况下测试完整的令牌生命周期。 立即开始使用 CapMonster Cloud,彻底将手动解决 CAPTCHA 从您的测试流水线中移除。






