创建 reCAPTCHA 密钥

本页介绍了如何创建 reCAPTCHA 密钥(也称为网站密钥),以验证您的网页和移动应用上的用户互动。

reCAPTCHA 网站密钥代表如何为网站或应用配置 reCAPTCHA Enterprise。配置包括一些重要选项,例如是否显示人机识别系统挑战。reCAPTCHA 网站密钥与 API 密钥不同。

准备工作

  1. 选择在您的环境中设置 reCAPTCHA Enterprise 的最佳方法,并完成设置。

  2. 选择合适的密钥类型。详细了解 reCAPTCHA 密钥

  3. 安全审核后,可以访问移动应用的 reCAPTCHA 网站密钥(移动密钥)。请与我们的销售团队联系,在您的网站上启用此功能。

创建网站密钥

您可以为项目创建的 reCAPTCHA 密钥数量没有限制。最好为每个网站或移动应用创建一个 reCAPTCHA 密钥。

为预演环境和生产环境创建单独的网站密钥。否则,您可能要冒着测试环境中的数据污染 reCAPTCHA 的风险来进行风险分析。

创建网站密钥的最简单方法是通过 Cloud Console。或者,您也可以使用 reCAPTCHA Enterprise API 或 Google Cloud CLI。

控制台

  1. 在控制台中,转到 reCAPTCHA Enterprise 页面。

    转到 reCAPTCHA Enterprise

  2. 验证项目名称是否显示在页面顶部的项目选择器中。

    如果您没有看到项目名称,请点击资源选择器,然后选择您的项目。

  3. 点击创建密钥

  4. 显示名字段中,输入密钥的显示名。
  5. 为网站或移动平台创建网站密钥。有关说明,请展开与您的平台对应的部分。
  6. 为网站创建网站密钥

    您可以为网站创建基于分数和复选框的键。

    1. 选择平台类型下拉菜单中,选择网站

      系统会显示网域列表部分。

    2. 输入您的网站的域名:

      如果您要创建质询页面网站密钥,请跳过此步骤。

      1. 网域列表部分中,点击添加网域

      2. 网域字段中,输入您的域名。
      3. 可选:要添加其他网域,请点击添加网域,然后在网域字段中输入其他网域的名称。 您最多可以添加 250 个网域。

        对于网站,reCAPTCHA 网站密钥对您指定的网域和子网域具有唯一性。如果您从多个网域传送您的网站,则可以指定多个网域。如果您指定了网域(例如 examplepetstore.com),则无需指定其子网域(例如 subdomain.examplepetstore.com)。

    3. 根据您要创建的网站密钥类型,执行相应的操作:
      • 如需创建基于分数的网站密钥(推荐),请执行以下操作:
        1. 可选:如果您想停用网域验证或允许 AMP 网页,请展开 Web 应用防火墙 (WAF)、网域验证、AMP 网页和验证部分。
          1. 为了保护您的网域和子网域的 reCAPTCHA 网站密钥,请务必关闭停用网域验证切换开关。

            停用网域验证是一种安全风险,因为该网站没有限制,因此任何人都可以访问和使用 reCAPTCHA 密钥。

            当您对验证页面的网站密钥停用域名验证后,Google Cloud Armor 会验证该域名。

          2. 如果您想允许基于得分的网站密钥与 Accelerated Mobile Pages (AMP) 网页搭配使用,请开启允许此密钥与 AMP 网页配合使用切换开关。
        2. 点击创建密钥

        新创建的密钥会列在 reCAPTCHA 密钥页面上。

      • 如需创建复选框网站密钥以向用户显示可见的验证,请执行以下操作:
        1. 展开 Web 应用防火墙 (WAF)、网域验证、AMP 网页和验证部分。
        2. 为了保护您的网域和子网域的 reCAPTCHA 网站密钥,请务必关闭停用网域验证切换开关。

          停用网域验证是一种安全风险,因为该网站没有限制,因此任何人都可以访问和使用 reCAPTCHA 密钥。

          当您对验证页面的网站密钥停用域名验证后,Google Cloud Armor 会验证该域名。

        3. 开启使用复选框验证开关。
        4. 选择适当的验证安全性选项。

          验证安全性选项可控制提示用户进行二级挑战的可能性,在二级挑战中,将提示用户根据已确定的类别选择图像(例如,选择含摩托车或楼梯的图片)。

          如果您想确保最佳的反欺诈防护,请选择难度较大(更加安全,可防范聊天机器人)

          如果您选择最简单的挑战难度,用户就不太可能收到视觉挑战提示。

        5. 点击创建密钥

        新创建的密钥会列在 reCAPTCHA 密钥页面上。

    为 Web 应用防火墙 (WAF) 创建网站密钥

    您可以为网站创建 WAF 网站密钥。如需创建 Web 应用防火墙 (WAF) 密钥,请执行以下操作:

    1. 选择平台类型下拉菜单中,选择网站

      系统会显示网域列表部分。

    2. 输入您的网站的域名:

      如果您要创建质询页面网站密钥,请跳过此步骤。

      1. 网域列表部分中,点击添加网域

      2. 网域字段中,输入您的域名。
      3. 可选:要添加其他网域,请点击添加网域,然后在网域字段中输入其他网域的名称。 您最多可以添加 250 个网域。

        对于网站,reCAPTCHA 网站密钥对您指定的网域和子网域具有唯一性。如果您从多个网域传送您的网站,则可以指定多个网域。如果您指定了网域(例如 examplepetstore.com),则无需指定其子网域(例如 subdomain.examplepetstore.com)。

    3. 展开 Web 应用防火墙 (WAF)、网域验证、AMP 网页和验证部分。
    4. 开启 Web 应用防火墙 (WAF) 切换开关。
    5. 功能下拉菜单中,选择要创建的 WAF 密钥的类型。

    6. 对于质询页网站密钥,请开启停用域名验证。对于操作令牌和会话令牌网站密钥,此步骤是可选的。

      停用网域验证是一种安全风险,因为该网站没有限制,因此任何人都可以访问和使用 reCAPTCHA 密钥。

      当您对验证页面的网站密钥停用域名验证后,Google Cloud Armor 会验证该域名。

    7. 可选:对于操作令牌网站密钥,请开启使用复选框验证

    8. 点击创建密钥
    9. 新创建的密钥会列在 reCAPTCHA 密钥页面上。

    为移动应用创建网站密钥

    您只能为移动应用创建基于得分的网站密钥。

    1. 选择平台类型下拉菜单中,选择Android 应用iOS 应用
    2. 根据您选择的平台,输入 Android 软件包或 iOS 软件包 ID。

      如果您选择了 Android 应用,请执行以下操作:

      1. Android 软件包列表部分中,点击添加 Android 软件包
      2. Android 软件包字段中,输入您的 Android 软件包的名称。

      3. 可选:要添加其他软件包,请点击添加 Android 软件包,然后在 Android 软件包字段中输入其他 Android 软件包的名称。

      如果您选择了 iOS 应用,请执行以下操作:

      1. iOS 软件包 ID 列表部分中,点击添加 iOS 软件包 ID
      2. 软件包 ID 字段中,输入 iOS 软件包 ID 的名称。

      3. 可选:要添加其他软件包 ID,请点击添加 iOS 软件包 ID,然后在软件包 ID 字段中输入 iOS 软件包 ID 的名称。

      对于移动应用,reCAPTCHA 网站密钥因指定的软件包名称而异(例如 com.google.recaptcha.test)。

    3. 点击创建密钥

    新创建的密钥会列在 reCAPTCHA 密钥页面上。

gcloud

如需创建密钥,请使用 gcloud recaptcha keys create 命令:
  • 要为网站创建密钥,请使用以下命令:

       gcloud recaptcha keys create \
          --web \
          --display-name=DISPLAY_NAME  \
          --waf-feature=WAF_FEATURE \
          --waf-service=WAF_SERVICE \
          --integration-type=INTEGRATION_TYPE \
          --domains=DOMAIN_NAME
      

    请提供以下值:

    • DISPLAY_NAME:密钥的名称。通常是网站名称。
    • WAF_FEATURE(仅限 WAF 网站密钥):WAF 功能的名称。可能的值包括:challenge-pageaction-tokensession-token
    • WAF_SERVICE(仅限 WAF 网站密钥):WAF 服务提供商的名称。为 Google Cloud Armor 指定 CA
    • INTEGRATION_TYPE:集成类型。根据密钥类型指定以下值:
      • SCORE,适用于基于分数的网站键。
      • CHECKBOX:表示复选框网站键。
      • INVISIBLE,适用于质询页网站密钥。
      • SCORECHECKBOX(适用于操作令牌网站密钥)。
      • SCORE(适用于会话令牌网站密钥)。
    • DOMAIN_NAME:获准使用相应密钥的网站的网域或子网域。以逗号分隔列表的形式指定多个网域。可选:对于 WAF 网站密钥,请指定 --allow-all-domains 以停用网域验证。

      停用网域验证是一种安全风险,因为该网站没有限制,因此任何人都可以访问和使用 reCAPTCHA 密钥。

      当您对验证页面的网站密钥停用域名验证后,Google Cloud Armor 会验证该域名。

  • 如需为 Android 应用创建密钥,请使用以下命令:
        gcloud recaptcha keys create \
          --android --package-names=PACKAGE_NAMES \
          --display-name=DISPLAY_NAME
        

    请提供以下值:

    • DISPLAY_NAME:密钥的名称。通常是应用名称。
    • PACKAGE_NAMES:允许使用相应密钥的应用的 Android 软件包名称。以英文逗号分隔的列表形式指定多个软件包名称。
  • 如需为 iOS 应用创建密钥,请使用以下命令:
        gcloud recaptcha keys create \
          --ios --bundle-ids=BUNDLE_IDs \
          --display-name=DISPLAY_NAME
        

    请提供以下值:

    • DISPLAY_NAME:密钥的名称。通常是应用名称。
    • BUNDLE_IDs:允许使用相应密钥的应用的 iOS 软件包 ID。 以英文逗号分隔的列表形式指定多个软件包 ID。
  • 以下示例展示了使用 gcloud recaptcha keys create 命令创建密钥的示例输出。

      Created [6Ld3howaAAAAAFYDMsLz2nWFXhsnmBjdrBra5_Bq].
    

REST 和命令行

如需了解密钥类型和集成类型的 API 参考信息,请参阅密钥集成类型

在使用任何请求数据之前,请先进行以下替换:

  • PROJECT_ID:您的 Google Cloud 项目 ID
  • DISPLAY_NAME:密钥的显示名
  • WAF_SERVICE:WAF 服务提供商的名称。为 Google Cloud Armor 指定 CA
  • WAF_FEATURE:WAF 功能的名称。

    根据密钥类型,指定 challenge-pageaction-tokensession-token

  • DOMAINS(仅适用于网站和 WAF):网站可用于使用此密钥的网域或子网域。以英文逗号分隔列表的形式指定多个网域。可选:指定 --allow-all-domains 可停用网域验证。

    停用网域验证是一种安全风险,因为该网站没有限制,因此任何人都可以访问和使用 reCAPTCHA 密钥。

    当您对验证页面的网站密钥停用域名验证后,Google Cloud Armor 会验证该域名。

  • TYPE_OF_INTEGRATION(仅适用于网站和 WAF):根据密钥类型指定以下值:
    • SCORE,适用于基于分数的网站键。
    • CHECKBOX:表示复选框网站键。
    • INVISIBLE,适用于质询页网站密钥。
    • SCORECHECKBOX(适用于操作令牌网站密钥)。
    • SCORE(适用于会话令牌网站密钥)。
  • PACKAGE_NAMES(仅适用于 Android 应用):获准使用该密钥的应用的 Android 软件包名称。以英文逗号分隔的列表形式指定多个软件包名称。
  • BUNDLE_IDs(仅适用于 iOS 应用):获准使用该密钥的应用的 iOS 软件包 ID。以英文逗号分隔的列表形式指定多个软件包 ID。

HTTP 方法和网址:

POST https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/keys

请求 JSON 正文:


To create keys for websites:
{
  "displayName": "DISPLAY_NAME",
  "webSettings": {
    "allowedDomains": "DOMAINS",
    "integrationType": "TYPE_OF_INTEGRATION"
  }
}

To create keys for WAF:

{
   "displayName": "DISPLAY_NAME",
    'wafSettings': "  {
        "wafService": "WAF_SERVICE",
"wafFeature": "WAF_FEATURE"
   }
   "webSettings": {
     "allowedDomains": "DOMAINS",
     "integrationType": "TYPE_OF_INTEGRATION"
    }
}

To create keys for Android apps:
{
  "displayName": "DISPLAY_NAME",
  "androidSettings": {
  "allowedPackageNames":"PACKAGE_NAMES"
  }
}

To create keys for iOS apps:

{
  "displayName": "DISPLAY_NAME",
  "iosSettings": {
   "allowedBundleIds":"BUNDLE_IDs"

  }
}

如需发送请求,请选择以下方式之一:

curl

将请求正文保存在名为 request.json 的文件中,然后执行以下命令:

curl -X POST \
-H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/keys"

PowerShell

将请求正文保存在名为 request.json 的文件中,然后执行以下命令:

$cred = gcloud auth application-default print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/keys" | Select-Object -Expand Content

您应该会收到类似以下内容的 JSON 响应:


{
  "name": "projects/project-id/keys/6Ldqgs0UAAAAAIn4k7YxEB-LwEh5S9-Gv6IIWB8m",
  "displayName": "DISPLAY_NAME",
  "webSettings": {
    "allowAllDomains": false,
    "allowedDomains": [
      DOMAINS
    ],
    "allowAmpTraffic": false,
    "integrationType": "SCORE",
    "challengeSecurityPreference": "CHALLENGE_SECURITY_PREFERENCE_UNSPECIFIED"
  }
}

后续步骤