先说结论:对写自动化的人来说,两者只差一个参数——提交任务时多带 enterprise=1。原因码、自定义阈值、WAF 集成这些差异都在网站那一侧,不改变你拿 token 的流程。
真正卡人的是判断页面用的是哪个版本。判断错了参数就错,token 校验不通过,报错还什么都不说。
为什么越来越多站点切到 Enterprise
- WAF 集成:接入 Cloudflare / Akamai 的规则
- 精细分析:控制台能看风险趋势与攻击模式
- 自定义规则:每个 action 可设不同阈值
- 合规需求:企业级 SLA 与数据驻留
- 账号保护:Account Defender、密码泄露检测
国内开发者撞上它的场景很集中:中文站点多用 GeeTest(极验)、易盾、防水墙;对接海外 SaaS 后台时才会遇到 Enterprise。
两个版本的功能差异
| 对比项 | 标准版 | Enterprise |
|---|---|---|
| 价格 | 免费(每月最多 100 万次评估) | 每 1,000 次评估 $1(每月 1K–100K),更高用量分级 |
| 原因码 | 无 | 有(AUTOMATION、UNEXPECTED_ENVIRONMENT 等) |
| 自定义阈值 | 无(自行判断) | 有(控制台按 action 配置) |
| 项目管理 | 无 | 有(Google Cloud Console) |
| 校验接口 | siteverify |
recaptchaenterprise.googleapis.com |
| 密码泄露检测 | 无 | 有 |
| Account Defender | 无 | 有 |
| 多因素验证 | 无 | 有(配合 WAF 集成) |
两版都支持 v2 和 v3。落到写代码,只有两点要紧:
- 差异都在站点后端,客户端拿 token 的方式没变;
- 版本认错,参数就配错。
评分响应差在哪
两版都返回 0.0–1.0 的分数,Enterprise 多给上下文。
标准版响应
{
"success": true,
"score": 0.7,
"action": "login",
"challenge_ts": "2024-01-15T12:00:00Z",
"hostname": "example.com"
}
Enterprise 响应
{
"tokenProperties": {
"valid": true,
"action": "login",
"createTime": "2024-01-15T12:00:00Z",
"hostname": "example.com"
},
"riskAnalysis": {
"score": 0.7,
"reasons": ["LOW_CONFIDENCE_SCORE"],
"extendedVerdictReasons": []
},
"event": {
"token": "...",
"siteKey": "...",
"expectedAction": "login"
}
}
reasons告诉网站分数为什么是这个值,低分可以降级为二次验证而不是直接拒绝。这段只有站点后端看得到,客户端拿到的 token 两版一样。
在页面上怎么认出 Enterprise
- 脚本地址:
api.js/enterprise.js - 执行函数:
grecaptcha.execute()/grecaptcha.enterprise.execute() - 校验接口:
siteverify/recaptchaenterprise.googleapis.com - 管理后台:reCAPTCHA 控制台 / Google Cloud Console
最直接的办法是看页面引了哪个 js:
// Standard
<script src="https://www.google.com/recaptcha/api.js?render=SITEKEY"></script>
// Enterprise
<script src="https://www.google.com/recaptcha/enterprise.js?render=SITEKEY"></script>
- 控制台里执行
typeof grecaptcha.enterprise,返回object即 Enterprise; - sitekey 本身看不出版本。
用 CaptchaAI 识别这两种版本
四种组合并排看,差别只有一行。
标准版 reCAPTCHA v3
resp = requests.get("https://ocr.captchaai.com/in.php", params={
"key": API_KEY, "method": "userrecaptcha", "version": "v3",
"googlekey": SITEKEY, "action": "login", "pageurl": URL, "json": 1
})
Enterprise reCAPTCHA v3
resp = requests.get("https://ocr.captchaai.com/in.php", params={
"key": API_KEY, "method": "userrecaptcha", "version": "v3",
"enterprise": 1, # Only difference
"googlekey": SITEKEY, "action": "login", "pageurl": URL, "json": 1
})
标准版 reCAPTCHA v2
resp = requests.get("https://ocr.captchaai.com/in.php", params={
"key": API_KEY, "method": "userrecaptcha",
"googlekey": SITEKEY, "pageurl": URL, "json": 1
})
Enterprise reCAPTCHA v2
resp = requests.get("https://ocr.captchaai.com/in.php", params={
"key": API_KEY, "method": "userrecaptcha",
"enterprise": 1,
"googlekey": SITEKEY, "pageurl": URL, "json": 1
})
- 提交任务,拿到任务 ID;
- 每 5 秒轮询
res.php取 token; - 把 token 写进页面字段并提交表单。
- 计费按并发线程算,不按次数,Enterprise 不额外加价;
- BASIC $15/月 5 线程、STANDARD $30/月 15 线程、ADVANCE $90/月 50 线程。
常见问题
只加 enterprise=1 就够了吗?
v3 还必须传 action,且要与页面 grecaptcha.enterprise.execute() 的动作名一致;对不上时 expectedAction 校验不过,token 作废。v2 不用传。
CaptchaAI 的 v2 和 v3 都支持 Enterprise 吗?
都支持,统一走 userrecaptcha 方法,区别只在参数组合。另外:hCaptcha 与 FunCaptcha(Arkose Labs)不在支持范围内;GeeTest 支持到 v3,v4 为即将支持。
大陆网络下 Google 脚本加载不出来,怎么排查?
- 先确认
enterprise.js能否加载成功——脚本没起来,后面都白排; - 核对 sitekey 与 pageurl 是否取自同一页面;
- 比对 v3 的
action与页面调用是否一致。