谷歌 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
版权申明
本文系作者 @木灵鱼儿 原创发布在木灵鱼儿站点。未经许可,禁止转载。
全部评论 5
fy
FireFox Windows 10reCaptcha那边本来就是post呀,只是axios默认发json格式数据,要把data换成
```js
qs.stringify({
secret: secret,
response: resp,
}),
```
py的requests好久没写了,忘了
fy
FireFox Windows 10木灵鱼儿
FireFox Windows 10无语
Google Chrome Windows 10木灵鱼儿
FireFox Windows 10