reCAPTCHA v3 API:分步指南
集成 reCAPTCHA v3 包括三个连续阶段:注册密钥、在 frontend 连接 recaptcha v3 javascript,以及在 backend 验证 token。下面是完整流程。
第 1 步 —— 在 Google Admin Console 中注册您的密钥
在编写任何代码之前,您需要先获取凭据。
- 前往 Google reCAPTCHA Admin Console。
- 填写 Label name 并选择 reCAPTCHA v3(基于评分,无 challenge)。
- 添加您网站运行的所有域名(例如:example.com、www.example.com)。
- 如果已有 Google Cloud Platform 项目,请选择它;如果没有,系统会自动创建。
- 提交表单。Google 会提供两个密钥:
- Site key —— 公开的;用于您的 frontend HTML/JS。
- Secret key —— 私密的;仅用于您的 backend 服务器。切勿在客户端代码中暴露它。
第 2 步 —— 加载 reCAPTCHA v3 JavaScript 库
在每个您想保护的页面上,通过将以下标签添加到 HTML 的 <head> 中来加载 recaptcha v3 api 脚本,并将 YOUR_SITE_KEY 替换为您的真实密钥:
<script src="https://www.google.com/recaptcha/api.js?render=YOUR_SITE_KEY"></script>
这一段代码会初始化 recaptcha v3 google 引擎,并开始在后台被动收集行为信号——不会向用户显示任何 widget。
第 3 步 —— 在受保护操作上执行 reCAPTCHA
与 recaptcha v2 不同,您不需要渲染 widget。相反,您应在用户触发受保护操作时以编程方式调用 grecaptcha.execute()。
方案 A —— 带 data-attributes 的按钮(适用于简单表单):
<form id="login-form">
<!-- 您的表单字段 -->
<button
class="g-recaptcha"
data-sitekey="YOUR_SITE_KEY"
data-callback="onSubmit"
data-action="login"
type="button">
登录
</button>
</form>
<script>
function onSubmit(token) {
fetch("/api/login", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ recaptchaToken: token })
});
}
</script>
方案 B —— 编程式执行(推荐用于 AJAX/API 流程):
<script src="https://www.google.com/recaptcha/api.js?render=YOUR_SITE_KEY"></script>
<script>
async function submitLogin() {
const token = await new Promise((resolve) => {
grecaptcha.ready(() => {
grecaptcha.execute("YOUR_SITE_KEY", { action: "login" }).then(resolve);
});
});
// 立即发送 token —— 它会在 2 分钟后过期
await fetch("/api/login", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ recaptchaToken: token })
});
}
</script>
关键规则:action 名称(例如 login、signup、checkout)必须与您的 backend 预期一致。这可以防止 token 在不同 endpoint 之间被重复使用。
第 4 步 —— 在 backend 上验证 token
您的服务器会接收 token,并在处理用户请求之前将其转发到 Google 的 siteverify endpoint。
Node.js 示例(包含错误处理):
import express from "express";
const app = express();
app.use(express.json());
app.post("/api/login", async (req, res) => {
const token = req.body.recaptchaToken;
const params = new URLSearchParams();
params.set("secret", process.env.RECAPTCHA_SECRET);
params.set("response", token);
let data;
try {
const verifyResp = await fetch("https://www.google.com/recaptcha/api/siteverify", {
method: "POST",
headers: { "content-type": "application/x-www-form-urlencoded" },
body: params
});
data = await verifyResp.json();
} catch (err) {
console.error("reCAPTCHA verification network error:", err);
return res.status(503).json({ error: "verification_unavailable" });
}
// → 继续执行第 5 步
});
注意:原生 fetch 在 Node.js 18+ 中可用。对于更早版本,请使用 node-fetch 或 axios。
Python(Flask ≥ 2.0)示例:
import os, requests
from flask import Flask, request, jsonify
app = Flask(__name__)
@app.post("/api/signup") # 需要 Flask >= 2.0
def signup():
token = request.json.get("recaptchaToken")
resp = requests.post(
"https://www.google.com/recaptcha/api/siteverify",
data={"secret": os.environ["RECAPTCHA_SECRET"], "response": token},
timeout=5
)
data = resp.json()
# → 继续执行第 5 步
if not data.get("success"):
return jsonify({"error": "recaptcha_failed"}), 403
return jsonify({"ok": True})
第 5 步 —— 解释评分并采取行动
Google 的 siteverify endpoint 会返回一个 JSON 响应。下面是成功响应的样子:
{
"success": true,
"score": 0.7,
"action": "login",
"challenge_ts": "2026-02-27T10:00:00Z",
"hostname": "example.com"
}
您的 backend 必须按顺序检查三项内容:
- success 为 true——说明 token 有效并且已被 Google 接受。
- action 与预期值匹配——这可确认该 token 是为正确的上下文生成的。
- score 达到您的阈值——0.5 是 Google 推荐的起始点。
第 6 步 —— 妥善处理错误
siteverify 响应中可能包含一个 error-codes 数组。最重要、需要处理的错误包括:
- timeout-or-duplicate —— token 已超过 2 分钟,或已被使用过;请在客户端重新运行 grecaptcha.execute() 以获取新的 token。
- missing-input-secret / invalid-input-secret —— 您的 secret key 缺失或不正确;这是配置错误,不是用户错误。
- missing-input-response / invalid-input-response —— token 未发送或格式错误;请检查您的 frontend 集成。
- bad-request —— 发往 siteverify 的整体请求格式不正确。
不要将原始错误代码直接展示给终端用户——应在服务端记录日志,并显示类似“请重试”的通用消息。
第 7 步 —— 端到端测试您的集成
在进入生产环境之前,请验证完整流程:
- 打开受保护页面,触发相应操作,并确认浏览器中已生成 token。
- 在 backend 中记录原始的 siteverify 响应,以确认存在 success: true、有效的 score 以及正确的 action。
- 对于自动化测试,CapMonster Cloud 提供了一个 solver API,可通过编程方式生成有效的 reCAPTCHA v3 token。它支持 reCAPTCHA v3、v2 和 Enterprise,并通过 REST API 集成。
- 发送一个过期或格式错误的 token,以确认您的错误处理路径正常工作,并检查 backend 是否返回了正确响应。
隐私与合规性考量
reCAPTCHA version 3 的行为画像模型带来了重要的隐私影响。该系统会收集鼠标移动、按键时序、浏览器指纹、IP 地址等数据——这些数据远远超出仅用于验证用户是否为真人所严格必需的范围。
对欧洲运营方而言,这尤其会带来 GDPR 风险。在一项引人注目的 2023 年执法行动中,法国数据保护机构(CNIL)对电动滑板车公司 Cityscoot 处以 €125,000 的罚款,原因是其存在多项 GDPR 违规行为——其中既包括过度收集地理位置数据(每 30 秒跟踪一次滑板车),也包括在未获得适当用户同意的情况下部署 Google reCAPTCHA。CNIL 裁定,reCAPTCHA 对用户终端数据的访问需要依据法国《数据保护法》第 82 条事先取得同意——它并不只是一个被动的安全 widget。如果您在 GDPR 框架下运营,那么在部署 google recaptcha v3 之前,与 Google 签署适当的 Data Processing Agreement 并获得相应的用户同意是必要的。
CapMonster Cloud 与 reCAPTCHA v3
CapMonster Cloud 是一项由 AI 驱动的 CAPTCHA 识别与自动化服务,支持 reCAPTCHA v2、v3 和 Enterprise,以及许多其他 CAPTCHA 类型。对于开发和测试团队来说,它提供了一种无需人工干预即可自动化与受 reCAPTCHA 保护表单交互的方式——这对集成测试、自动化监控流水线,或那些 CAPTCHA 处理成为瓶颈的合法抓取工作流都很有用。
在 using recaptcha v3 的场景中,CapMonster Cloud 充当 solver API:给定目标 URL 和 site key,它会返回一个有效的 reCAPTCHA token,这个 token 可以像真实浏览器那样提交到受保护的 endpoint。
使用 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"
}
}
详细的 API 文档和集成示例可在 capmonster.cloud 上查看。
结论
reCAPTCHA v3 在平衡机器人防护与用户体验方面代表了一项重要进步。它将验证过程完全移到后台,并用细致的风险评分取代二元的 pass/fail 逻辑,使 recaptcha google v3 能让安全团队按比例采取措施——阻止明显的机器人、对可疑会话提升阻碍级别,同时让合法用户完全不受打扰。
这种权衡是真实存在的:评分解释需要 backend 投入,阈值调优需要时间,而在 GDPR 框架下,其隐私足迹也不可忽视。不过,对于大多数生产环境 Web 应用——尤其是那些在登录、注册或结账环节中,任何阻碍都会带来转化损失的应用来说——从 v2 升级到 v3 是非常值得的。
准备好在您的网站上部署 reCAPTCHA v3,或者围绕它自动化您的测试流水线了吗?访问 CapMonster Cloud,探索适用于 reCAPTCHA v3、v2 和 Enterprise 的 AI 驱动 CAPTCHA 解决方案——提供完整 API 文档和集成示例,帮助您在几分钟内快速上手。