人机识别系统-reCAPTCHA
简介
- 免费服务
- 用于区分人和机器人
功能
保护网站免受垃圾内容和滥用行为的侵扰
接口防刷
比ip黑名单和验证码效果好(用户体验和防刷效果)
费用
每月免费获得最多 100 万次评估
原理
- 浏览器加载包含 reCAPTCHA 代码的前端页面
- 用户触发被 reCAPTCHA 保护的动作时,弹出 reCAPTCHA 页面,并将用户行为发送到 reCAPTCHA 服务器分析
- reCAPTCHA 服务器返回一个加密的token给前端
- 前端将加密token发给后端
- 后端用加密token向 reCAPTCHA 服务器发起本次用户行为的评估请求
- reCAPTCHA 服务器返回评估后的分数「0.0-1.0之间」及原因
- 后端根据分数决定后续操作。高分为人,低分为机器
发展
v2 vs v3
特征 | 验证码 v3 | 验证码 v2 |
---|---|---|
成本 | 每月免费多达 100 万次评估 | 每月免费多达 100 万次评估 |
“我不是机器人”小部件支持 | 不支持 | 支持 |
分数粒度(需要安全审查) | 4个级别 | 无 |
注册密钥对
密钥对由站点密钥和密钥组成
- 站点密钥用于前端或移动端上调用 reCAPTCHA 服务。
- 密钥用于后端与 reCAPTCHA 服务器之间的通信,以验证用户的响应
v2
需要用户交互
有三种形式
复选框
render方法的成功回调中会被传入 g-recaptcha-response
token,该token需要给后端用于校验
v3
- 无需用户交互
- 返回一个分数(0.0-1.0),由服务器决定后续操作
后端
- 用户token有效期为2分钟
api
- 发 POST 请求到 reCaptcha 服务器
response
返回一个json对象
success boolean
评估是否成功
hostname string
发起验证请求的网站的域名。用来确保 reCAPTCHA 结果只能在正确的站点上使用,防止滥用或恶意使用
如果你的网站是
example.com
,那么hostname
字段的值就是example.com
challenge_ts string
时间戳,用于校验本次人机识别是否过期
error-codes []
错误码