reCAPTCHA v3

reCAPTCHA v3 会返回每个请求的得分,而不会让用户感到卡顿。此得分根据用户与您网站的互动情况计算得出,可帮助您对自己的网站采取适当措施。在 reCAPTCHA 管理控制台中注册 reCAPTCHA v3 密钥。

本页介绍了如何在网页上启用和自定义 reCAPTCHA v3。

放置到网站上

reCAPTCHA v3 绝不会干扰您的用户,因此您可以随时运行它,而不会影响 。reCAPTCHA 需要最充分地了解与您的网站互动的相关背景信息,才能发挥最佳效果。 因此,我们建议 包括在表单或操作中使用 reCAPTCHA 验证 分析。

您可以在同一页面上对任意多个操作执行 reCAPTCHA。

自动将挑战绑定到按钮

要在网页上使用 reCAPTCHA v3,最简单的方法是 并为您的 html 按钮添加一些属性。

  1. 加载 JavaScript API。

     <script src="https://www.google.com/recaptcha/api.js"></script>
    
  2. 添加用于处理令牌的回调函数。

     <script>
       function onSubmit(token) {
         document.getElementById("demo-form").submit();
       }
     </script>
    
  3. 向您的 html 按钮添加属性。

    <button class="g-recaptcha" 
            data-sitekey="reCAPTCHA_site_key" 
            data-callback='onSubmit' 
            data-action='submit'>Submit</button>
    

以程序化方式调用验证

如果您希望更好地控制 reCAPTCHA 的运行时间,可以使用 grecaptcha 对象中的 execute 方法。为此, 您需要向 reCAPTCHA 脚本加载添加 render 参数。

  1. 使用您的网站密钥加载 JavaScript API。

    <script src="https://www.google.com/recaptcha/api.js?render=reCAPTCHA_site_key"></script>
    
  2. 针对要保护的每项操作调用 grecaptcha.execute

       <script>
          function onClick(e) {
            e.preventDefault();
            grecaptcha.ready(function() {
              grecaptcha.execute('reCAPTCHA_site_key', {action: 'submit'}).then(function(token) {
                  // Add your logic to submit to your backend server here.
              });
            });
          }
      </script>
    
  3. 立即将令牌连同请求发送到您的后端 验证

解读得分

reCAPTCHA v3 会返回一个得分(1.0 表示很可能是完全正常的互动,0.0 表示很可能是漫游器)。 根据该得分,您可以根据网站的具体情况采取相应措施。每个网站 不同,但以下是一些网站如何使用得分的示例。如下面的示例所示,将 而不是阻止流量来更好地保护您的网站。

使用场景 建议
首页 在滤除抄袭者的同时,在管理控制台中了解流量的整体情况。
登录 如果得分较低,可要求双重身份验证或电子邮件验证,以防止凭据填充攻击。
social 限制来自滥用用户的尚未回应的好友请求,以及发送有风险的评论以进行审核。
电子商务 避免漫游器接触到您的真实销售交易,并识别有风险的交易。

reCAPTCHA 通过查看您网站上的实际流量来进行学习。因此,预演中的得分 或实施不久之后,可能与生产环境不同。reCAPTCHA v3 从未如此 中断用户体验流程,您可以先运行 reCAPTCHA 而不执行任何操作,然后决定 在管理控制台中查看您的流量,以达到最低标准修改者 那么可以使用 0.5 作为阈值

操作

reCAPTCHA v3 引入了一个新概念:操作。指定操作名称时 您可以在每个执行 reCAPTCHA 的位置启用以下新功能:

  • 管理控制台
  • 基于操作情境的自适应风险分析,因为存在滥用行为 可能有所不同

需要注意的是,在验证 reCAPTCHA 响应时,您应验证 action name 是您希望使用的名称。

网站验证响应

发出请求以验证响应令牌,就像使用 reCAPTCHA v2 一样;或者 隐形 reCAPTCHA。

响应是一个 JSON 对象:

{
  "success": true|false,      // whether this request was a valid reCAPTCHA token for your site
  "score": number             // the score for this request (0.0 - 1.0)
  "action": string            // the action name for this request (important to verify)
  "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
}

提示

  1. grecaptcha.ready() 会在 reCAPTCHA 库加载时运行您的函数。接收者 避免使用 api.js 出现竞态条件,请在api.js 或继续使用 使用 v2 API 定义的 onload 回调
  2. 尝试将 execute 调用与有趣或敏感的操作相关联,例如 注册、重置密码、购买或玩。
  3. 使用 https://www.google.com/recaptcha/api.js?trustedtypes=true 执行以下操作: 加载与可信类型兼容的代码。