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

reCaptcha v3仅实现按钮自动绑定仍遭垃圾信息,求最小配置

问题解答

你的理解确实有误——reCaptcha v3仅完成客户端配置完全起不到防垃圾的作用,服务端验证是核心必做步骤,跳过它的话,垃圾机器人可以直接绕过前端逻辑提交表单,自然会持续收到垃圾信息。

reCaptcha v3 最小有效配置

客户端部分(你已完成的部分补充确认)

  • 引入官方脚本并传入站点密钥:
    <script src="https://www.google.com/recaptcha/api.js?render=你的站点密钥"></script>
    
  • 绑定表单提交动作,生成验证令牌并嵌入表单:
    grecaptcha.ready(function() {
        // action建议设为和表单相关的标识,比如"contact_submit",要和服务端验证时对应
        grecaptcha.execute('你的站点密钥', {action: 'contact_submit'}).then(function(token) {
            // 把令牌放到表单隐藏字段,随表单一起提交到后端
            document.querySelector('input[name="g-recaptcha-response"]').value = token;
        });
    });
    
  • 表单中需添加隐藏字段存储令牌:
    <input type="hidden" name="g-recaptcha-response">
    

服务端部分(你缺失的核心步骤)

这一步是拦截垃圾的关键,必须在后端完成:

  1. 接收表单提交的g-recaptcha-response令牌,使用服务端密钥(注意和前端站点密钥区分,绝对不能暴露在前端)向Google验证API发起请求:
    // ASP.NET 示例代码
    string recaptchaToken = Request.Form["g-recaptcha-response"];
    string secretKey = "你的服务端密钥";
    
    using var client = new HttpClient();
    var verifyResponse = await client.GetAsync(
        $"https://www.google.com/recaptcha/api/siteverify?secret={secretKey}&response={recaptchaToken}"
    );
    string verifyResultJson = await verifyResponse.Content.ReadAsStringAsync();
    
  2. 解析返回的JSON结果,重点检查三个核心字段:
    • success:是否验证通过
    • score:用户行为风险评分(0-1,分数越低越可能是机器人)
    • action:需和客户端设置的action一致,防止令牌被复用
  3. 根据验证结果决定是否处理表单:
    // 定义解析JSON的实体类
    public class RecaptchaVerifyResult
    {
        public bool Success { get; set; }
        public float Score { get; set; }
        public string Action { get; set; }
    }
    
    var verifyResult = JsonSerializer.Deserialize<RecaptchaVerifyResult>(verifyResultJson);
    
    // 建议设置合理的分数阈值,比如0.5,可根据垃圾情况调整
    if (!verifyResult.Success || verifyResult.Score < 0.5 || verifyResult.Action != "contact_submit")
    {
        // 验证失败,拒绝提交并返回提示
        ModelState.AddModelError(string.Empty, "验证失败,请稍后重试");
        return View();
    }
    
    // 验证通过,正常处理表单提交逻辑
    

补充说明

官方文档里的服务端验证章节并不是可选内容,它是reCaptcha v3生效的核心——客户端仅负责生成验证令牌,真正判断用户是否为机器人的逻辑在Google的验证服务,你的后端必须完成这个验证流程,才能有效拒绝机器人的提交请求。

内容的提问来源于stack exchange,提问作者Tillito

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 23:54:31