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

如何解决Node.js中Recaptcha聚合超时错误

修复Recaptcha v3验证10分钟后出现的聚合超时问题

你的问题核心出在三个关键环节:

  • 依赖的request库已停止维护,长时间运行后易出现连接池泄漏、请求挂起等稳定性问题
  • 未设置验证请求的超时时间,一旦谷歌验证服务响应缓慢,请求会一直处于等待状态,最终触发聚合超时
  • 谷歌官方推荐用POST请求验证Recaptcha Token,当前GET拼接参数的方式不符合规范,还存在潜在的参数长度限制风险

修复步骤

1. 替换为维护中的HTTP库(以axios为例)

先安装axios:

npm install axios

2. 重构验证代码,添加超时与异常处理

替换原验证代码为以下实现:

const axios = require('axios');

try {
  // 用POST请求发送验证,设置10秒超时阈值
  const response = await axios.post('https://www.google.com/recaptcha/api/siteverify', null, {
    params: {
      secret: process.env.LOGIN_RECAPTCHA_KEY,
      response: req.body.recaptcha
    },
    timeout: 10000 // 10秒超时,避免请求无限挂起
  });

  const { success, error_codes } = response.data;

  if (success) {
    delete req.body.recaptcha;
    console.log("Captcha Verification Successful");
    next();
  } else {
    console.error("Recaptcha验证失败,错误码:", error_codes);
    return next(new AppError("验证码验证失败", 400));
  }
} catch (error) {
  // 捕获超时、网络错误等异常
  console.error("Recaptcha验证请求异常:", error.message);
  return next(new AppError("验证码验证服务暂时不可用,请稍后重试", 503));
}

3. 额外优化建议

  • 给验证请求添加1-2次重试机制,提升网络波动场景下的容错性
  • 监控Recaptcha验证的成功率和响应时间,及时排查服务端或网络问题
  • 确认服务器网络可正常访问谷歌验证服务,避免防火墙或代理阻断连接

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 19:13:17