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

Flutter如何通过代理发起HTTP请求调用reCAPTCHA验证接口

Flutter端通过代理调用reCAPTCHA接口改造方案

核心改造原则

绝对不要在Flutter客户端直接存储reCAPTCHA的secretKey、也不要让客户端直接请求Google官方接口:

  • secretKey属于服务端敏感凭证,打包在客户端内会被反编译窃取,造成验证码逻辑被绕过
  • 直接请求Google接口被拦截的问题,本质需要通过你已经配置好的服务端代理做转发,不需要在客户端做网络层代理配置

具体改造点

  • 将原代码里的Google官方接口地址,替换为你自己服务器暴露的reCAPTCHA校验代理接口地址
  • 删除客户端请求里无效的Access-Control-Allow-Origin头:这个头是服务端返回响应时携带的跨域配置,客户端主动添加没有任何作用
  • 客户端请求体只传前端拿到的验证码token即可,secretKey由服务端代理层存储维护,不要在客户端代码里出现

改造后代码示例

final response = await http.post(
  // 此处替换为你自有服务端的代理接口地址,例如 https://你的业务域名/api/recaptcha/verify
  Config.verificationURL,
  headers: {
    'Content-Type': 'application/x-www-form-urlencoded',
  },
  // 仅传递前端获取到的用户验证码token,secret参数由服务端拼接后请求Google接口
  body: 'response=$_token',
);

服务端代理配套逻辑

你的服务端代理接口收到Flutter传来的response参数后,在服务端侧拼接自身存储的secretKey,向https://www.google.com/recaptcha/api/siteverify发起form格式的POST请求,拿到Google返回的校验结果后,把结果处理后返回给Flutter端即可,全程客户端不需要和Google接口产生直接通信,自然不会出现被拦截的问题。

注意:不要尝试在Flutter客户端内置HTTP代理指向、内置代理账号密码或secretKey,这类客户端侧的配置都可以被抓包、反编译破解,安全性没有任何保障。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 01:40:05