你笑了

你的笑,是星星跳跃浪花的笑

0%

reCAPTCHA

人机识别系统-reCAPTCHA

简介

  • 免费服务
  • 用于区分人和机器人

功能

保护网站免受垃圾内容和滥用行为的侵扰

接口防刷

比ip黑名单和验证码效果好(用户体验和防刷效果)

费用

每月免费获得最多 100 万次评估

原理

  1. 浏览器加载包含 reCAPTCHA 代码的前端页面
  2. 用户触发被 reCAPTCHA 保护的动作时,弹出 reCAPTCHA 页面,并将用户行为发送到 reCAPTCHA 服务器分析
  3. reCAPTCHA 服务器返回一个加密的token给前端
  4. 前端将加密token发给后端
  5. 后端用加密token向 reCAPTCHA 服务器发起本次用户行为的评估请求
  6. reCAPTCHA 服务器返回评估后的分数「0.0-1.0之间」及原因
  7. 后端根据分数决定后续操作。高分为人,低分为机器

发展

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 []

    错误码

参考