本文档介绍了如何在不集成 reCAPTCHA JavaScript(Web)或原生移动(iOS 或 Android)SDK 的情况下,在应用服务器上设置 reCAPTCHA WAF express protection (reCAPTCHA WAF Express)。
reCAPTCHA WAF Express 仅使用后端信号来生成 reCAPTCHA 风险得分。您可以使用此风险评分来决定是处理请求、重定向到挑战页面,还是记录下来以供日后分析。
准备工作
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
记录您的 Google Cloud 项目 ID,以备日后使用。Enable the reCAPTCHA Enterprise API.
创建用于身份验证的 API 密钥:
在 Google Cloud 控制台中,转到凭据页面。
点击
创建凭据,然后选择 API 密钥。记录 API 密钥以供日后使用。
创建 reCAPTCHA WAF 极速密钥
如需实施 reCAPTCHA WAF express protection,请创建 reCAPTCHA WAF Express 密钥。
In the Google Cloud console, 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.
gcloud
如需创建 reCAPTCHA 密钥,请使用 gcloud recaptcha keys create 命令。
在使用下面的命令数据之前,请先进行以下替换:
- DISPLAY_NAME:键的名称。通常是网站名称。
- INTEGRATION_TYPE:集成类型。
指定
score
。 - DOMAIN_NAME:获准使用该密钥的网站的网域或子网域。
指定
--allow-all-domains
。 - WAF_FEATURE:WAF 功能的名称。指定
express
。 - WAF_SERVICE:WAF 服务提供商的名称。
执行 gcloud recaptcha keys create 命令:
Linux、macOS 或 Cloud Shell
gcloud recaptcha keys create \ --web \ --display-name=DISPLAY_NAME \ --integration-type=INTEGRATION_TYPE \ --domains=DOMAIN_NAME \ --waf-feature=WAF_FEATURE \ --waf-service=WAF_SERVICE
Windows (PowerShell)
gcloud recaptcha keys create ` --web ` --display-name=DISPLAY_NAME ` --integration-type=INTEGRATION_TYPE ` --domains=DOMAIN_NAME ` --waf-feature=WAF_FEATURE ` --waf-service=WAF_SERVICE
Windows (cmd.exe)
gcloud recaptcha keys create ^ --web ^ --display-name=DISPLAY_NAME ^ --integration-type=INTEGRATION_TYPE ^ --domains=DOMAIN_NAME ^ --waf-feature=WAF_FEATURE ^ --waf-service=WAF_SERVICE
响应中包含新创建的 reCAPTCHA 密钥。
REST
如需了解密钥类型和集成类型的 API 参考信息,请参阅密钥和集成类型。在使用任何请求数据之前,请先进行以下替换:
- DISPLAY_NAME:键的名称。通常是网站名称。
- INTEGRATION_TYPE:集成类型。
指定
score
。 - DOMAIN_NAME:获准使用该密钥的网站的网域或子网域。
指定
--allow-all-domains
。 - WAF_FEATURE:WAF 功能的名称。指定
express
。 - WAF_SERVICE:WAF 服务提供商的名称。
HTTP 方法和网址:
POST https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/keys
请求 JSON 正文:
{ "displayName": "DISPLAY_NAME", 'wafSettings': " { "wafService": "WAF_SERVICE", "wafFeature": "WAF_FEATURE" } "webSettings": { "allowedDomains": "DOMAINS", "integrationType": "TYPE_OF_INTEGRATION" } }
如需发送请求,请选择以下方式之一:
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"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" | Select-Object -Expand Content您应该收到类似以下内容的 JSON 响应:
{ "name": "projects/project-id/keys/7Ldqgs0UBBBBBIn4k7YxEB-LwEh5S9-Gv6QQIWB8m", "displayName": "DISPLAY_NAME, "webSettings": { "allowAllDomains": true, "allowedDomains": [ "localhost" ], "integrationType": "SCORE", }, "wafSettings": { "wafService": "", "wafFeature": "EXPRESS" } }
记录您的 Express 密钥以备日后使用。
创建评估
如需从应用服务器向 reCAPTCHA Enterprise 发出请求,请使用 projects.assessments.create
方法创建评估。
在使用任何请求数据之前,请先进行以下替换:
- API_KEY:您为身份验证创建的 API 密钥。
- EXPRESS_KEY:您为应用创建的 reCAPTCHA WAF Express 密钥。
- USER_IP_ADDRESS:用户设备发出的与此事件相关的请求中的 IP 地址。
- HEADER_INFO:可选。客户端发送至应用服务器的 HTTP 标头。
- JA3_FINGERPRINT:可选。JA3 是 TLS 客户端 Hello 数据包中某些字段的 MD5 指纹。如需了解详情,请参阅 JA3 - 一种用于分析 SSL/TLS 客户端的方法。
- URI_NAME:可选。用户正在访问的 URI。
- USER_AGENT:可选。与此事件相关的用户设备的请求中存在的用户代理。
HTTP 方法和网址:
POST https://public-preview-recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/assessments?key=API_KEY
请求 JSON 正文:
{ "event": { "siteKey": "EXPRESS_KEY", "express": true, "userIpAddress": "USER_IP_ADDRESS", "headers": ["HEADER_INFO"], "ja3": "JA3_FINGERPRINT", "requestedUri": "URI_NAME", "userAgent": "USER_AGENT", } }
如需发送请求,请选择以下方式之一:
curl
将请求正文保存在名为 request.json
的文件中,然后执行以下命令:
curl -X POST \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://public-preview-recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/assessments?key=API_KEY"
PowerShell
将请求正文保存在名为 request.json
的文件中,然后执行以下命令:
$headers = @{ }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://public-preview-recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/assessments?key=API_KEY" | Select-Object -Expand Content
您应该收到类似以下内容的 JSON 响应:
{ "name": "projects/123456789/assessments/abcdef1234000000", "event": { "token": "", "siteKey": "6L...", "userAgent": "Mozilla/5.0 (X11; CrOS x86_64 13816.55.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.86 Safari/537.36", "userIpAddress": "1.2.3.4", "express": true, "requestedUri": "https://example.com/", "firewallPolicyEvaluation": false }, "riskAnalysis": { "score": 0.7, "reasons": [] } }