Explainers

Análisis profundo de la API de evaluación empresarial reCAPTCHA

reCAPTCHA Enterprise es el servicio CAPTCHA premium de Google que amplía reCAPTCHA v3 con análisis de riesgos detallados, motivos de puntuación, señales de detección de fraude y capacidades de defensa de cuentas. A diferencia de la versión gratuita estándar que solo devuelve una puntuación y una acción, Enterprise proporciona evaluaciones explicables con factores de riesgo específicos. Esta guía cubre la arquitectura de la API de Enterprise Assessment, la estructura de respuesta y cómo manejar los sitios protegidos por Enterprise en la automatización.


ReCAPTCHA empresarial versus estándar

Característica reCAPTCHA v3 (gratis) Empresa reCAPTCHA
Puntuación Puntuación 0,0-1,0 0,0-1,0 puntuación + motivos de puntuación
Análisis de riesgos Básico Detallado (señales de fraude, información de cuenta)
Razones de puntuación No proporcionado Razones específicas que explican la puntuación.
Defensor de cuenta No Sí (sigue el ciclo de vida de la cuenta)
Integración WAF No Sí (Cloudflare, Fastly, F5)
Evaluación exprés No Sí (solo del lado del servidor, sin JS)
Detección de fuga de contraseña No si
Precio Gratis (1 millón de evaluaciones/month) $1 por cada 1000 evaluaciones (0-1 millón gratis)
Punto final API google.com/recaptcha/api/siteverify recaptchaenterprise.googleapis.com

Flujo de API de evaluación empresarial

Client-side:

  1. Load reCAPTCHA Enterprise script
  2. Call grecaptcha.enterprise.execute(SITE_KEY, {action: 'LOGIN'})
  3. Receive token
  4. Send token to your backend

Server-side:

  1. Create assessment via Enterprise API
  2. Receive detailed risk analysis
  3. Make access decision based on score + reasons
  4. Optionally annotate the assessment (report fraud/legitimate)

Integración del lado del cliente

SDK de JavaScript

<script src="https://www.google.com/recaptcha/enterprise.js?render=SITE_KEY"></script>
<script>
    grecaptcha.enterprise.ready(function() {
        grecaptcha.enterprise.execute('SITE_KEY', { action: 'LOGIN' })
            .then(function(token) {
                // Send token to backend
                fetch('/api/verify', {
                    method: 'POST',
                    headers: { 'Content-Type': 'application/json' },
                    body: JSON.stringify({ token: token })
                });
            });
    });
</script>

Diferencias clave con respecto al estándar reCAPTCHA v3:

  • La URL del script usa .../recaptcha/enterprise.js en lugar de .../recaptcha/api.js
  • El objeto API es grecaptcha.enterprise en lugar de grecaptcha
  • execute() devuelve el mismo formato de token

Detección en la fuente de la página

import requests
import re

def detect_recaptcha_enterprise(url):
    """Detect if a page uses reCAPTCHA Enterprise."""
    html = requests.get(url, timeout=10).text

    indicators = {
        "is_enterprise": False,
        "is_standard": False,
        "site_key": None,
        "actions": [],
    }

    # Enterprise detection
    if "recaptcha/enterprise.js" in html:
        indicators["is_enterprise"] = True
        match = re.search(r"render=([A-Za-z0-9_-]+)", html)
        if match:
            indicators["site_key"] = match.group(1)

    # Standard v3 detection
    elif "recaptcha/api.js?render=" in html:
        indicators["is_standard"] = True
        match = re.search(r"render=([A-Za-z0-9_-]+)", html)
        if match:
            indicators["site_key"] = match.group(1)

    # Extract action names
    actions = re.findall(r"action:\s*['\"](\w+)['\"]", html)
    indicators["actions"] = list(set(actions))

    return indicators

print(detect_recaptcha_enterprise("https://staging.example.com/qa-login"))

API de evaluación del lado del servidor

Crear una evaluación (API de Google Cloud)

from google.cloud import recaptchaenterprise_v1
from google.cloud.recaptchaenterprise_v1 import Assessment

def create_assessment(project_id, site_key, token, action):
    """Create a reCAPTCHA Enterprise assessment."""
    client = recaptchaenterprise_v1.RecaptchaEnterpriseServiceClient()

    event = recaptchaenterprise_v1.Event()
    event.site_key = site_key
    event.token = token
    event.expected_action = action

    assessment = recaptchaenterprise_v1.Assessment()
    assessment.event = event

    request = recaptchaenterprise_v1.CreateAssessmentRequest()
    request.assessment = assessment
    request.parent = f"projects/{project_id}"

    response = client.create_assessment(request)
    return response

Estructura de respuesta de evaluación

{
    "name": "projects/123456/assessments/abcdef123",
    "event": {
        "token": "...",
        "siteKey": "6Le...",
        "expectedAction": "LOGIN",
        "hashedAccountId": "abc123..."
    },
    "riskAnalysis": {
        "score": 0.9,
        "reasons": [
            "AUTOMATION",
            "TOO_MUCH_TRAFFIC"
        ],
        "extendedVerdictReasons": [
            "BROWSER_ERROR"
        ]
    },
    "tokenProperties": {
        "valid": true,
        "hostname": "example.com",
        "action": "LOGIN",
        "createTime": "2025-01-15T10:30:00Z",
        "invalidReason": ""
    },
    "accountDefenderAssessment": {
        "labels": ["PROFILE_MATCH"]
    }
}

Razones de la puntuación empresarial

Enterprise proporciona razones específicas que explican por qué una puntuación es baja:

Razón Descripción Impacto en la puntuación
AUTOMATION Agente de usuario automatizado o navegador sin cabeza detectado -0,3 a -0,7
UNEXPECTED_ENVIRONMENT Inconsistencias en el entorno del navegador o del dispositivo -0,2 a -0,4
TOO_MUCH_TRAFFIC Alto volumen de solicitudes de esta IP o sesión -0,1 a -0,3
UNEXPECTED_USAGE_PATTERNS Las señales de comportamiento se desvían de las normas humanas -0,2 a -0,5
LOW_CONFIDENCE_SCORE Datos insuficientes para hacer una evaluación segura variable
SUSPECTED_CARDING El patrón de transacción coincide con el fraude con tarjetas de crédito -0,3 a -0,6
SUSPECTED_CHARGEBACK Riesgo de contracargo basado en señales de transacción -0,2 a -0,4

Motivos del veredicto ampliado (detalle adicional)

Razón Descripción
BROWSER_ERROR Errores de ejecución de JavaScript en CAPTCHA SDK
SITE_MISMATCH Token creado para un sitio diferente al validado en
FAILED_TWO_FACTOR La autenticación de dos factores falló recientemente

Defensor de cuenta

Account Defender de Enterprise rastrea las cuentas de usuario a lo largo de su ciclo de vida:

{
    "accountDefenderAssessment": {
        "labels": [
            "PROFILE_MATCH",
            "SUSPICIOUS_LOGIN_ACTIVITY",
            "SUSPICIOUS_ACCOUNT_CREATION",
            "RELATED_ACCOUNTS_NUMBER_HIGH"
        ]
    }
}
Etiqueta Significado
PROFILE_MATCH El comportamiento coincide con el perfil conocido de esta cuenta.
SUSPICIOUS_LOGIN_ACTIVITY El patrón de inicio de sesión se desvía del normal (dispositivo nuevo, ubicación)
SUSPICIOUS_ACCOUNT_CREATION La creación de cuenta parece automatizada
RELATED_ACCOUNTS_NUMBER_HIGH Varias cuentas vinculadas al mismo dispositivo/session

Integración WAF

reCAPTCHA Enterprise se integra con proveedores WAF para agregar desafíos CAPTCHA en el borde de la red:

Integración WAF de Cloudflare

Request arrives at Cloudflare edge
    ↓
Cloudflare WAF rule evaluates request
    ↓
Rule triggers reCAPTCHA Enterprise challenge
    ↓
Client solves CAPTCHA → token returned
    ↓
Cloudflare validates token via Enterprise API
    ↓
If valid + score above threshold → request forwarded to origin

Integración F5 BIG-IP

F5 iRule or policy evaluates request
    ↓
Triggers reCAPTCHA Enterprise challenge page
    ↓
Client solves → token validated server-side
    ↓
F5 forwards or blocks based on assessment score

Manejo de Enterprise reCAPTCHA en la automatización

CaptchaAI resuelve Enterprise de la misma manera que el reCAPTCHA estándar

Desde la perspectiva del solucionador de API, los tokens reCAPTCHA Enterprise funcionan de manera idéntica a los tokens reCAPTCHA estándar:

import requests
import time

API_KEY = "YOUR_API_KEY"

# Enterprise is solved with the same method
# The solver handles the Enterprise variant automatically
submit = requests.post("https://ocr.captchaai.com/in.php", data={
    "key": API_KEY,
    "method": "userrecaptcha",
    "googlekey": "6LcR_RsTAAAAAN_r0GEkGBfq3L7KmU5JbPHJtwNp",
    "pageurl": "https://enterprise-site.com/login",
    "enterprise": 1,  # Flag for Enterprise variant
    "json": 1,
})

task_id = submit.json()["request"]

for _ in range(60):
    time.sleep(5)
    result = requests.get("https://ocr.captchaai.com/res.php", params={
        "key": API_KEY,
        "action": "get",
        "id": task_id,
        "json": 1,
    }).json()

    if result.get("status") == 1:
        token = result["request"]
        print(f"Enterprise token: {token[:50]}...")
        break

Nodo.js

const axios = require("axios");

async function solveEnterprise(sitekey, pageurl) {
    const API_KEY = "YOUR_API_KEY";

    const { data: submit } = await axios.post(
        "https://ocr.captchaai.com/in.php",
        new URLSearchParams({
            key: API_KEY,
            method: "userrecaptcha",
            googlekey: sitekey,
            pageurl: pageurl,
            enterprise: 1,
            json: 1,
        })
    );

    const taskId = submit.request;

    for (let i = 0; i < 60; i++) {
        await new Promise(r => setTimeout(r, 5000));
        const { data: result } = await axios.get(
            "https://ocr.captchaai.com/res.php",
            { params: { key: API_KEY, action: "get", id: taskId, json: 1 } }
        );

        if (result.status === 1) return result.request;
    }

    throw new Error("Timeout");
}

Cómo detectar Enterprise vs Standard en una página de destino

def identify_recaptcha_version(html):
    """Determine which reCAPTCHA version a page uses."""
    if "recaptcha/enterprise.js" in html:
        return "enterprise"
    elif "recaptcha/api.js?render=" in html:
        return "v3"
    elif "g-recaptcha" in html and 'data-size="invisible"' in html:
        return "v2_invisible"
    elif "g-recaptcha" in html:
        return "v2"
    else:
        return "none"

Solución de problemas empresariales

Problema Diagnóstico Solución
Token rechazado por Enterprise API Usando el método estándar para el sitio Enterprise Agregue enterprise=1 a la solicitud del solucionador
Puntuación siempre 0,1 a pesar del token válido Los parámetros de acción no coinciden Verificar que action coincida con lo que envía la página
"SITE_MISMATCH" en motivos Token generado para dominio incorrecto Asegúrese de que pageurl coincida exactamente con el objetivo
"AUTOMATIZACIÓN" en motivos de puntuación Entorno del solucionador detectado CaptchaAI se encarga de esto; si persiste, comuníquese con el soporte técnico
Token válido pero el sitio aún está bloqueado El sitio utiliza controles adicionales más allá de CAPTCHA Verifique otras capas de detección de bots (WAF, señales del navegador)

Preguntas frecuentes

¿Es reCAPTCHA Enterprise más difícil de resolver que el reCAPTCHA estándar?

El proceso de generación de tokens es el mismo. Enterprise agrega funciones de análisis del lado del servidor (motivos de puntuación, Account Defender), pero el desafío del lado del cliente es idéntico. Los solucionadores de API generan tokens para Enterprise de la misma manera que lo hacen para las versiones estándar.

¿Necesito una cuenta de Google Cloud para resolver CAPTCHA empresariales?

No. Como desarrollador de automatización que resuelve CAPTCHA empresariales en sitios web de destino, solo necesita el sitekey de la página y un solucionador de API como CaptchaAI. La cuenta de Google Cloud la necesita el operador del sitio web para validar las evaluaciones, no el solucionador de CAPTCHA.

¿Cómo puedo saber si un sitio utiliza reCAPTCHA empresarial o estándar?

Verifique la URL del script. Enterprise usa recaptcha/enterprise.js mientras que estándar usa recaptcha/api.js. El nombre del objeto de la API de JavaScript también difiere: grecaptcha.enterprise.execute() frente a grecaptcha.execute().

¿Se pueden utilizar los motivos de puntuación empresarial para mejorar mi automatización?

Si opera el sitio de destino (probando su propia implementación de CAPTCHA), sí, los motivos le indican qué señales de detección se activaron. Si está resolviendo CAPTCHA en sitios de terceros, los motivos no son visibles para usted; solo el operador del sitio los ve.


Resumen

reCAPTCHA Enterprise amplía el reCAPTCHA estándar con análisis de riesgos detallados, motivos de puntuación, Account Defender e integración WAF. Desde una perspectiva de automatización, los CAPTCHA empresariales se resuelven de manera idéntica al reCAPTCHA estándar: agregue el parámetro enterprise=1 a suCaptchaAISolicitud de API. Detecte Enterprise buscando recaptcha/enterprise.js en la fuente de la página. La diferencia operativa clave es garantizar que se pasa el indicador enterprise correcto y el parámetro action correspondiente.

Artículos relacionados

Los comentarios están deshabilitados para este artículo.

Publicaciones relacionadas

Explainers Guía de extracción de URL de reCAPTCHA Anchor y Bframe
Explicación clara sobre Guía de extracción de URL de re CAPTCHA Anchor y Bframe y lo que implica para automatización, integración y tasas de éxito con Captcha A...

Explicación clara sobre Guía de extracción de URL de re CAPTCHA Anchor y Bframe y lo que implica para automati...

Apr 28, 2026
Explainers reCAPTCHA v2 Invisible: Detección y resolución de activadores
Explicación clara sobre re CAPTCHA v 2 Invisible: Detección y resolución de desencadenantes y lo que implica para automatización, integración y tasas de éxito c...

Explicación clara sobre re CAPTCHA v 2 Invisible: Detección y resolución de desencadenantes y lo que implica p...

Apr 29, 2026
Explainers Requisitos de sesión y cookies reCAPTCHA para resolver
Explicación clara sobre Requisitos de sesión y cookies re CAPTCHA para resolver y lo que implica para automatización, integración y tasas de éxito con Captcha A...

Explicación clara sobre Requisitos de sesión y cookies re CAPTCHA para resolver y lo que implica para automati...

Apr 20, 2026