ReCAPTCHA V3通过给用户行为打分(0.0到1.0)来判断风险,分数越低风险越高。但在实际业务中,单纯依赖V3低分就拒绝访问容易误伤正常用户。更合理的做法是:用V3做常态无感风控,当分数低于设定阈值时,再降级调用ReCAPTCHA V2让用户完成一次可见验证,以此确认真人身份。

一、ReCAPTCHA V3与V2的差异
V3不打断用户操作,只返回分数;V2需要用户勾选或做图片挑战。将两者结合,可以在低风险时保持流畅,高风险或低分时启用强验证。
核心思路
- 前端加载V3脚本,在关键操作(如登录、提交)时获取token和score。
- 后端校验V3分数,若分数低于阈值(如0.5),要求前端再执行V2验证。
- 后端二次校验V2 token,通过才放行请求。
二、前端集成示例
以下代码演示如何先执行V3评分,低分时渲染V2按钮。
<script src="https://www.google.com/recaptcha/api.js?render=V3站点密钥"></script>
<script src="https://www.google.com/recaptcha/api.js" async defer></script>
<button id="submitBtn">提交</button>
<div id="v2Box" style="display:none">
<div class="g-recaptcha" data-sitekey="V2站点密钥"></div>
</div>
<script>
// 点击提交先走V3
document.getElementById('submitBtn').onclick = function() {
grecaptcha.ready(function() {
grecaptcha.execute('V3站点密钥', {action: 'submit'}).then(function(token) {
// 将token发给后端校验分数
fetch('/checkV3', {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({token: token})
}).then(function(r){ return r.json(); }).then(function(data){
if (data.score < 0.5) {
// 低分显示V2
document.getElementById('v2Box').style.display = 'block';
} else {
alert('通过无感验证');
}
});
});
});
};
</script>
三、后端校验逻辑
后端需要分别调用V3和V2的验证接口。下面以Node.js为例。
const axios = require('axios');
// 校验V3分数
async function verifyV3(token) {
const res = await axios.post('https://www.google.com/recaptcha/api/siteverify', null, {
params: {
secret: 'V3密钥',
response: token
}
});
return res.data.score; // 返回分数
}
// 校验V2
async function verifyV2(token) {
const res = await axios.post('https://www.google.com/recaptcha/api/siteverify', null, {
params: {
secret: 'V2密钥',
response: token
}
});
return res.data.success;
}
// 业务接口
app.post('/login', async (req, res) => {
const v3Score = await verifyV3(req.body.v3Token);
if (v3Score < 0.5) {
const ok = await verifyV2(req.body.v2Token);
if (!ok) return res.status(403).send('验证失败');
}
res.send('成功');
});
四、阈值与用户体验平衡
阈值设置需结合业务场景。注册页可设严一点(0.6),评论页可放宽(0.3)。同时应注意,V3分数受网络和环境影响,偶尔低分未必是机器人,因此用V2做二次确认比直接拦截更友好。
| 场景 | 建议V3阈值 | 低分动作 |
|---|---|---|
| 登录 | 0.5 | 弹V2 |
| 支付 | 0.6 | 弹V2+短信 |
| 搜索 | 0.2 | 仅记录 |
小结
通过V3常态评分加V2按需挑战,开发者能以较小成本实现智能风控,既拦住恶意流量,也减少对真实用户的干扰。
ReCAPTCHA_V3ReCAPTCHA_V2风险控制用户验证低分处理修改时间:2026-07-24 20:57:25