You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

网站reCAPTCHA Enterprise返回invalid-input-response问题求助

解决reCAPTCHA Enterprise "invalid-input-response" 错误

代码问题排查与修复

1. 前端脚本重复引入+缺少响应值存储

你当前的前端代码重复引入了enterprise.js,会导致加载冲突;同时未将验证码响应值存入表单,后端无法获取有效校验参数。修改后的前端代码:

<script>
    var onloadCallback = function() {
        grecaptcha.enterprise.render('html_element', {
            'sitekey' : '<?php echo G_RECAPTCHA_SITE_KEY?>',
            'callback' : function(response) {
                // 将验证码响应值存入隐藏字段,供表单提交时传递给后端
                document.getElementById('g-recaptcha-response').value = response;
            },
            'theme' : 'dark'
        });
    };
</script>
<form method="POST">
    <!-- 新增隐藏字段存储验证码响应值 -->
    <input type="hidden" id="g-recaptcha-response" name="g-recaptcha-response">
    ...
    <div id="html_element"></div>
    <button type="submit">提交</button>
</form>

<!-- 仅保留这一行带初始化参数的脚本引入 -->
<script src="https://www.google.com/recaptcha/enterprise.js?onload=onloadCallback&render=explicit" async defer></script>

2. 后端使用错误验证接口+请求方式错误

reCAPTCHA Enterprise不使用普通reCAPTCHA的/api/siteverify接口,必须调用专属的Enterprise验证端点,且需用POST请求传递参数。修改后的后端代码:

if(isset($_POST['g-recaptcha-response'])){
    $captcha = $_POST['g-recaptcha-response'];
}
if(!$captcha){
    // 无验证码响应,返回错误
    return false;
}

$secretKey = G_RECAPTCHA_SECRET_KEY;
// 替换[你的项目ID]为Google Cloud Console中的reCAPTCHA Enterprise项目ID
$verifyUrl = 'https://recaptchaenterprise.googleapis.com/v1/projects/[你的项目ID]/assessments?key=' . urlencode($secretKey);

// 构建请求体
$requestBody = json_encode([
    'event' => [
        'token' => $captcha,
        'siteKey' => G_RECAPTCHA_SITE_KEY,
        'remoteIp' => $_SERVER['REMOTE_ADDR'] // 可选但建议添加,提升校验准确性
    ]
]);

$options = [
    'http' => [
        'header' => "Content-Type: application/json\r\n",
        'method' => 'POST',
        'content' => $requestBody
    ]
];

$context = stream_context_create($options);
$response = file_get_contents($verifyUrl, false, $context);
$responseData = json_decode($response, true);

// Enterprise通过风险评分判断验证结果(通常取0.5为阈值,可根据需求调整)
if(!isset($responseData['riskAnalysis']['score']) || $responseData['riskAnalysis']['score'] < 0.5) {
    var_dump($responseData);
    return false;
}
// 验证成功
return true;

账户配置排查

  • 确认密钥对为reCAPTCHA Enterprise类型,普通reCAPTCHA v2/v3密钥无法兼容Enterprise验证。
  • 检查Google Cloud Console:项目已启用reCAPTCHA Enterprise API,且密钥对应的域名/IP已添加到允许列表。
  • 确认后端使用的API密钥(或服务账号)拥有调用assessments接口的权限。

内容的提问来源于stack exchange,提问作者Gergő S

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 01:01:14