v3它没有显式的一个操作,他可以在用户不知道的情况下进行验证,通过判断用户评分这些,不过评分判断要配合后端使用,如果是纯前端操作,那么会和v2一样,成功会返回一个token。

基本

<script src="https://www.recaptcha.net/recaptcha/api.js?render=第一个key"></script>
<script>
  grecaptcha.ready(function () {
    grecaptcha.execute('第一个key', { action: 'homepage' }).then(function (token) {
      console.log(token)
    });
  });
</script>

这里只返回一个token,需要配合后端使用

action参数为验证场景,谷歌提供了4种场景,可以自行根据使用场景的不同替换参数。

参数使用场景
homepage一般场景,可在管理后台查看流量趋势
login分数较低的用户需要进行二次验证
social限制一些滥用的用户请求,一般用于评论
e-commerce商品交易的时候

后端

后端我测试了好久,总是返回false,invalid-input-response,找不到原因,反正说一下请求的原理吧。

谷歌提供了一个后端的请求连接:

 https://www.google.com/recaptcha/api/siteverify 

这个如果要在国内用的话也要替换成:

https://www.recaptcha.net/recaptcha/api/siteverify

然后这个链接get请求,有三个预设参数:

keyvalue说明
secretkey必须的,后端用的key,也就是第二个key
responsetoken必须的,上面基本那里返回的token
remoteipip不是必须的,用户的ip地址

后端发送请求,然后会返回一个json对象:

{
  "success": true|false,
  "challenge_ts": timestamp,  // timestamp of the challenge load (ISO format yyyy-MM-dd'T'HH:mm:ssZZ)
  "hostname": string,         // the hostname of the site where the reCAPTCHA was solved
  "error-codes": [...]        // optional
}

我测试,success总是返回false,error-codes为invalid-input-response

然后error-codes有几个值,我这写一下:

error-codes说明
missing-input-secret缺少输入密钥,也就是key没有
invalid-input-secretsecret参数无效或者不正确
missing-input-responseresponse参数没有,也就是token不存在
invalid-input-responseresponse参数无效或者不正确
bad-request请求无效或格式不正确
timeout-or-duplicate响应超时,或者重复

蛋疼,没有测试成功,也不知道为什么,不知道是不是我使用了cdn的缘故,以后有时间再试试。

官方说v3最好和v2搭配使用。

然后分数因为测试没成功,不知道怎么整,

分类: JavaScript 标签: reCAPTCHA

评论

全部评论 5

  1. fy
    fy
    FireFox Windows 10

    reCaptcha那边本来就是post呀,只是axios默认发json格式数据,要把data换成
    ```js
    qs.stringify({
    secret: secret,
    response: resp,
    }),
    ```
    py的requests好久没写了,忘了

  2. fy
    fy
    FireFox Windows 10
    因为reCaptcha那边只收formBody,不收json格式的数据。
    1. 木灵鱼儿
      木灵鱼儿
      FireFox Windows 10
      @fy那不是get要换成post请求了→_→
  3. 无语
    无语
    Google Chrome Windows 10
    我看后台也是一直提示这个 {"success":false,"error-codes":["invalid-input-response","invalid-input-secret"]} 啥意思没搞懂
    1. 木灵鱼儿
      木灵鱼儿
      FireFox Windows 10
      @无语估计是参数问题吧

目录