谷歌 google验证码 reCAPTCHA V3 对接
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请求,有三个预设参数:
key value 说明 secret key 必须的,后端用的key,也就是第二个key response token 必须的,上面基本那里返回的token remoteip ip 不是必须的,用户的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-secret secret参数无效或者不正确 missing-input-response response参数没有,也就是token不存在 invalid-input-response response参数无效或者不正确 bad-request 请求无效或格式不正确 timeout-or-duplicate 响应超时,或者重复
蛋疼,没有测试成功,也不知道为什么,不知道是不是我使用了cdn的缘故,以后有时间再试试。
官方说v3最好和v2搭配使用。
然后分数因为测试没成功,不知道怎么整,
打赏
本文分类:JavaScript
本文标签:reCAPTCHA
流行热度:已超过 680 人围观了本文
最后更新:2020年05月7日 - 23时47分54秒
发布日期:2020年05月7日 - 23时47分54秒
版权申明:本文系作者@木灵鱼儿 原创发布在木灵鱼儿 - 有梦就能远航站点。未经许可,禁止转载。
无语
木灵鱼儿