配置 IP 地址许可名单

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

您还可以从许可名单中移除 IP 地址和子网,并列出添加到许可名单的 IP 地址和子网。

准备工作

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

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

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

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

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

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  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 地址或子网

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  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. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  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": ""
}


后续步骤