两个版本都以隐形方式运行,并返回 0.0(机器人)和 1.0(人类)之间的风险评分。 Enterprise 添加了原因代码、基于项目的管理、自适应阈值和帐户防御者。对于CaptchaAI用户来说,解决差异是一个参数:enterprise=1。
本指南重点关注对自动化重要的内容:Enterprise 添加了哪些内容、如何检测它以及评分差异如何影响您的集成。
特性比较
| 特征 | 标准v3 | 企业版3 |
|---|---|---|
| 隐形操作 | 是的 | 是的 |
| 分数(0.0–1.0) | 是的 | 是的 |
| 动作参数 | 必需的 | 必需的 |
| 原因代码 | 不 | 是的 |
| 每个操作的自定义阈值 | 不 | 是(通过 Cloud Console) |
| 密码泄露检测 | 不 | 是的 |
| 账户卫士 | 不 | 是的 |
| 防欺诈标签 | 不 | 是的 |
| 多因素身份验证集成 | 不 | 是的 |
| 验证端点 | siteverify(免费) |
recaptchaenterprise.googleapis.com |
| 每月配额 | 100 万次免费评估 | 按评估付费 |
| JS文件 | api.js?render=KEY |
enterprise.js?render=KEY |
| CaptchaAI 参数 | version=v3 |
version=v3 + enterprise=1 |
企业原因代码解释
企业响应包括解释评分原因的原因代码。这些代码可帮助网站所有者微调其安全性,而了解它们可帮助您构建更好的自动化。
| 代码 | 意义 | 对自动化的影响 |
|---|---|---|
AUTOMATION |
检测到自动行为 | 使用真实的浏览器特征 |
UNEXPECTED_ENVIRONMENT |
不寻常的浏览器环境 | 检查无头浏览器检测 |
TOO_MUCH_TRAFFIC |
来自来源的高请求量 | 实施速率限制和代理轮换 |
UNEXPECTED_USAGE_PATTERNS |
异常交互模式 | 在操作之间添加真实的延迟 |
LOW_CONFIDENCE_SCORE |
数据不足,无法自信评分 | 发送更多行为信号 |
SUSPECTED_CARDING |
信用卡诈骗模式 | 与大多数自动化无关 |
SUSPECTED_CHARGEBACK |
退款欺诈模式 | 与大多数自动化无关 |
注意: 通过 CaptchaAI 求解时,您不会看到这些代码。它们在令牌验证期间返回到网站的后端。了解它们有助于您诊断令牌可能被拒绝的原因。
企业评分差异
标准 v3 使用单一全局评分模型。 Enterprise v3 添加了层:
| 评分方面 | 标准 | 企业 |
|---|---|---|
| 基础分数模型 | 谷歌的全球模式 | Google 的全局模型 + 自定义信号 |
| 每个操作阈值 | 所有行动的一个门槛 | 每个操作的阈值不同(登录=0.7,结帐=0.9) |
| 适应性学习 | 基本的 | 从网站的特定流量模式中学习 |
| 评分粒度 | 0.0-1.0(两位小数) | 相同的范围,更细致的信号 |
| 误报处理 | 手动阈值调整 | 自动原因代码分析 |
这对于 CaptchaAI 用户意味着什么: 企业网站可能对每个操作有更严格或更细致的阈值。发送正确的 action 参数对于 Enterprise 来说更为重要,因为每个操作可能都有自己的阈值。
检测与解决
检测哪个版本
import requests
import re
def detect_v3_version(url):
html = requests.get(url).text
if "enterprise.js" in html:
version = "enterprise"
elif "recaptcha/api.js" in html and "render=" in html:
version = "standard"
else:
return None
# Extract sitekey
key_match = re.search(r'render[=:]\s*["\']?([A-Za-z0-9_-]{40})', html)
sitekey = key_match.group(1) if key_match else None
# Extract action
action_match = re.search(r'action["\']?\s*[:=]\s*["\'](\w+)', html)
action = action_match.group(1) if action_match else None
return {"version": version, "sitekey": sitekey, "action": action}
const axios = require("axios");
async function detectV3Version(url) {
const { data: html } = await axios.get(url);
const version = html.includes("enterprise.js")
? "enterprise"
: html.includes("recaptcha/api.js") && html.includes("render=")
? "standard"
: null;
const keyMatch = html.match(/render[=:]\s*['"]?([A-Za-z0-9_-]{40})/);
const actionMatch = html.match(/action['"]?\s*[:=]\s*['"](\w+)/);
return {
version,
sitekey: keyMatch?.[1],
action: actionMatch?.[1],
};
}
解决标准 v3
import requests
import time
resp = requests.get("https://ocr.captchaai.com/in.php", params={
"key": "YOUR_API_KEY",
"method": "userrecaptcha",
"version": "v3",
"googlekey": sitekey,
"action": "login",
"pageurl": page_url
})
task_id = resp.text.split("|")[1]
for _ in range(60):
time.sleep(5)
result = requests.get("https://ocr.captchaai.com/res.php", params={
"key": "YOUR_API_KEY", "action": "get", "id": task_id
})
if result.text.startswith("OK|"):
token = result.text.split("|")[1]
break
解决企业 v3
import requests
import time
# Only difference: enterprise=1
resp = requests.get("https://ocr.captchaai.com/in.php", params={
"key": "YOUR_API_KEY",
"method": "userrecaptcha",
"version": "v3",
"enterprise": 1,
"googlekey": sitekey,
"action": "login",
"pageurl": page_url
})
task_id = resp.text.split("|")[1]
for _ in range(60):
time.sleep(5)
result = requests.get("https://ocr.captchaai.com/res.php", params={
"key": "YOUR_API_KEY", "action": "get", "id": task_id
})
if result.text.startswith("OK|"):
token = result.text.split("|")[1]
break
自动检测求解器
class V3AutoSolver:
def __init__(self, api_key):
self.api_key = api_key
def solve(self, page_url, action=None):
import re
html = requests.get(page_url).text
is_enterprise = "enterprise.js" in html
key_match = re.search(r'render[=:]\s*["\']?([A-Za-z0-9_-]{40})', html)
if not key_match:
raise Exception("No v3 sitekey found")
if not action:
act_match = re.search(r'action["\']?\s*[:=]\s*["\'](\w+)', html)
action = act_match.group(1) if act_match else "verify"
params = {
"key": self.api_key,
"method": "userrecaptcha",
"version": "v3",
"googlekey": key_match.group(1),
"action": action,
"pageurl": page_url
}
if is_enterprise:
params["enterprise"] = 1
resp = requests.get("https://ocr.captchaai.com/in.php", params=params)
if not resp.text.startswith("OK|"):
raise Exception(f"Submit failed: {resp.text}")
task_id = resp.text.split("|")[1]
for _ in range(60):
time.sleep(5)
result = requests.get("https://ocr.captchaai.com/res.php", params={
"key": self.api_key, "action": "get", "id": task_id
})
if result.text.startswith("OK|"):
return result.text.split("|")[1]
if result.text != "CAPCHA_NOT_READY":
raise Exception(f"Solve error: {result.text}")
raise Exception("Timed out")
故障排除
| 问题 | 可能的原因 | 处理方式 |
|---|---|---|
| 令牌在企业网站上被拒绝 | 缺少 enterprise=1 |
检查 enterprise.js 并添加标志 |
| 在Enterprise住宿中评分较低 | action参数错误 |
从 grecaptcha.enterprise.execute() 调用中提取准确的操作 |
| 令牌在测试中有效,在生产中失败 | 企业自适应学习标记了您的模式 | 轮换 IP、增加延迟、改变请求模式 |
ERROR_WRONG_GOOGLEKEY |
v3 sitekey 来自渲染参数,而不是 data-sitekey | 在脚本 URL 中查找 render=KEY |
常问问题
Enterprise v3 给出的分数是否与标准分数不同?
基本评分模型类似,但企业可以使用其他信号和自定义每个操作阈值。标准 0.7 可能会通过,而企业可能需要 0.9 才能完成相同操作。 CaptchaAI 对两者的处理方式相同——返回的令牌质量相同。
如何在页面上检测 Enterprise v3?
在脚本标记中查找 enterprise.js 而不是 api.js,在 JavaScript 中查找 grecaptcha.enterprise.execute()。两个版本都是隐形的——没有视觉差异。
Enterprise v3 的解决成本是否更高?
查看 CaptchaAI 的当前定价。企业解决方案的定价可能不同,但 API 集成代码除了一个参数外是相同的。
站点可以从标准站点切换到企业站点吗?
是的,他们经常这样做。 Google 鼓励迁移到企业版以实现更好的分析。构建检测来检查每个请求,而不是对版本进行硬编码。
为什么网站迁移到企业版后我的分数下降了?
企业使用自适应学习根据站点的特定流量构建模型。如果您的自动化模式以前很突出,企业可能会更快地抓住它们。改进特征采集,而不仅仅是 CaptchaAI - 添加真实的浏览器行为。
相关指南
- 标准与企业 reCAPTCHA v3 — 解决指南—替代实际比较
- reCAPTCHA 企业版与标准版 — 实用指南— 涵盖 v2 和 v3
- 如何使用API解决reCAPTCHA v3— 标准 v3 教程
- 如何使用API解决reCAPTCHA v3 Enterprise— 企业版 v3 教程
- reCAPTCHA v3 Enterprise 风险评分如何运作
- 如何使用API解决reCAPTCHA v3 Enterprise
- 标准版与企业版 reCAPTCHA v3