配置 IP 地址许可名单

如需将受信任的 IP 地址从 reCAPTCHA 强制执行中排除,请为与您的网站关联的 reCAPTCHA 密钥创建许可名单。然后,将 IP 地址和子网添加到此许可名单。

您还可以从许可名单中移除 IP 地址或子网,并查看许可名单中的 IP 地址和子网。

准备工作

在开始之前,请确保您已完成以下操作:

  • 收集您要添加到许可名单的所有 IP 地址和子网。

  • 确定您要从许可名单中移除的 IP 地址和子网。

  • 确保您具有以下 Identity and Access Management 角色:reCAPTCHA Enterprise 管理员 (roles/recaptchaenterprise.admin)。

将 IP 地址或子网添加到许可名单

将 IP 地址或子网添加到许可名单后,reCAPTCHA 会跳过验证,并始终为来自该 IP 地址或子网的请求提供 0.9 的分数。 您最多可以将 1000 个 IP 地址和子网添加到许可名单。

gcloud

  1. 在 Google Cloud 控制台中,激活 Cloud Shell。

    激活 Cloud Shell

    Cloud Shell 会话随即会在控制台的底部启动,并显示命令行提示符。 Google Cloud Cloud Shell 是一个已安装 Google Cloud CLI 且已为当前项目设置值的 Shell 环境 。该会话可能需要几秒钟时间来完成初始化。

  2. 在使用下面的命令数据之前, 请先进行以下替换:

    • KEY:与您的网站关联的 reCAPTCHA 密钥。
    • IP_ADDRESS_OR_SUBNET:需要添加到许可名单的 IP 地址或子网。

    执行以下命令:

    Linux、macOS 或 Cloud Shell

    gcloud recaptcha keys add-ip-override
    KEY \
    --ip=IP_ADDRESS_OR_SUBNET \
    --override=ALLOW

    Windows (PowerShell)

    gcloud recaptcha keys add-ip-override
    KEY `
    --ip=IP_ADDRESS_OR_SUBNET `
    --override=ALLOW

    Windows (cmd.exe)

    gcloud recaptcha keys add-ip-override
    KEY ^
    --ip=IP_ADDRESS_OR_SUBNET ^
    --override=ALLOW

REST

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

  • KEY:与您的网站关联的 reCAPTCHA 密钥。
  • IP_ADDRESS_OR_SUBNET:需要添加到许可名单的 IP 地址或子网。
  • PROJECT_ID:您的 Google Cloud 项目 ID

HTTP 方法和网址:

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

请求 JSON 正文:


{
  "ip_override_data": {
    "ip": "IP_ADDRESS_OR_SUBNET",
    "override_type": "ALLOW"
  }
}

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

curl

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

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

PowerShell

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

$cred = gcloud auth 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/KEY:addIpOverride" | Select-Object -Expand Content

您应该会收到一个成功的状态代码 (2xx) 和一个空响应。

将 IP 地址或子网添加到许可名单后,更改会在几分钟内生效。

验证许可名单配置

如需确认 IP 许可名单是否按预期运行,请完成以下步骤:

  1. 验证您是否已将 IP 地址或子网添加到特定 reCAPTCHA 密钥的许可名单。

  2. 从使用许可名单中的 IP 地址的机器或环境中发起完整的 reCAPTCHA 事务。

  3. 检查评估结果。如果许可名单对来源 IP 处于活跃状态,则 JSON 响应中的 riskAnalysis.score0.9

从许可名单中移除 IP 地址或子网

gcloud

  1. 在 Google Cloud 控制台中,激活 Cloud Shell。

    激活 Cloud Shell

    Cloud Shell 会话随即会在控制台的底部启动,并显示命令行提示符。 Google Cloud Cloud Shell 是一个已安装 Google Cloud CLI 且已为当前项目设置值的 Shell 环境 。该会话可能需要几秒钟时间来完成初始化。

  2. 在使用下面的命令数据之前, 请先进行以下替换:

    • KEY:与您的网站关联的 reCAPTCHA 密钥。
    • IP_ADDRESS_OR_SUBNET:需要添加到许可名单的 IP 地址或子网。

    执行以下命令:

    Linux、macOS 或 Cloud Shell

    gcloud recaptcha keys remove-ip-override
    KEY \
    --ip=IP_ADDRESS_OR_SUBNET \
    --override=ALLOW

    Windows (PowerShell)

    gcloud recaptcha keys remove-ip-override
    KEY `
    --ip=IP_ADDRESS_OR_SUBNET `
    --override=ALLOW

    Windows (cmd.exe)

    gcloud recaptcha keys remove-ip-override
    KEY ^
    --ip=IP_ADDRESS_OR_SUBNET ^
    --override=ALLOW

REST

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

  • KEY:与您的网站关联的 reCAPTCHA 密钥。
  • IP_ADDRESS_OR_SUBNET:需要添加到许可名单的 IP 地址或子网。
  • PROJECT_ID:您的 Google Cloud 项目 ID

HTTP 方法和网址:

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

请求 JSON 正文:


{
  "ip_override_data": {
    "ip": "IP_ADDRESS_OR_SUBNET",
    "override_type": "ALLOW"
  }
}

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

curl

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

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

PowerShell

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

$cred = gcloud auth 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/KEY:removeIpOverride" | Select-Object -Expand Content

您应该会收到一个成功的状态代码 (2xx) 和一个空响应。

从许可名单中移除 IP 地址或子网后,更改会在几分钟内生效。

列出许可名单中的所有 IP 地址

gcloud

  1. 在 Google Cloud 控制台中,激活 Cloud Shell。

    激活 Cloud Shell

    Cloud Shell 会话随即会在控制台的底部启动,并显示命令行提示符。 Google Cloud Cloud Shell 是一个已安装 Google Cloud CLI 且已为当前项目设置值的 Shell 环境 。该会话可能需要几秒钟时间来完成初始化。

  2. 在使用下面的命令数据之前, 请先进行以下替换:

    • KEY:与您的网站关联的 reCAPTCHA 密钥。

    执行以下命令:

    Linux、macOS 或 Cloud Shell

    gcloud recaptcha keys list-ip-overrides KEY --format=json

    Windows (PowerShell)

    gcloud recaptcha keys list-ip-overrides KEY --format=json

    Windows (cmd.exe)

    gcloud recaptcha keys list-ip-overrides KEY --format=json

REST

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

  • KEY:与您的网站关联的 reCAPTCHA 密钥。
  • PROJECT_ID:您的 Google Cloud 项目 ID

HTTP 方法和网址:

GET https://recaptchaenterprise.googleapis.com/v1/projects//keys/:listIpOverrides

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

curl

执行以下命令:

curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://recaptchaenterprise.googleapis.com/v1/projects//keys/:listIpOverrides"

PowerShell

执行以下命令:

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

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://recaptchaenterprise.googleapis.com/v1/projects//keys/:listIpOverrides" | Select-Object -Expand Content

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


{
  "ipOverrides": [
    {
      "ip": "1.2.3.4",
      "overrideType": "ALLOW"
    }
  ],
  "nextPageToken": ""
}


后续步骤