Comparisons

reCAPTCHA 企业版与标准版对比:差异与识别方法

先说结论:对写自动化的人来说,两者只差一个参数——提交任务时多带 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
})
  1. 提交任务,拿到任务 ID;
  2. 每 5 秒轮询 res.php 取 token;
  3. 把 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 脚本加载不出来,怎么排查?

  1. 先确认 enterprise.js 能否加载成功——脚本没起来,后面都白排;
  2. 核对 sitekey 与 pageurl 是否取自同一页面;
  3. 比对 v3 的 action 与页面调用是否一致。

延伸阅读

该文章已禁用评论。