Envoyez le sitekey 6L... lu dans la page, jamais la clé AIzaSy... issue de Google Cloud : des deux clés que manipule reCAPTCHA Enterprise, une seule sert à la résolution. Elles vivent dans la même console, sans le même propriétaire ni le même niveau de confidentialité : d'où ces tâches refusées dès l'envoi, avec un message d'erreur qui ne dit jamais laquelle est en cause.
Règle de base : la clé
6L...est publique et part à l'API de résolution ; la cléAIzaSy...ne quitte jamais le serveur du site.
Reconnaître la bonne clé en dix secondes
| Propriété | Sitekey | Clé API |
|---|---|---|
| Format | 6L... (40 caractères) |
AIzaSy... (39 caractères) |
| Visibilité | Publique (HTML/JS) | Privée (serveur uniquement) |
| Rôle | Charger le widget CAPTCHA | Faire évaluer le token par Google |
| Où la lire | Source de la page, appels JS | Configuration serveur, variables d'env. |
| Utile à CaptchaAI ? | Oui | Non |
Avant d'envoyer une tâche, une seule question compte : la valeur commence-t-elle par 6L ? Sinon, vous tenez la clé du projet Google Cloud du site, et elle ne vous servira à rien.
Le sitekey 6L... : la clé publique du widget
Le sitekey est écrit en clair dans le HTML et indique au navigateur quelle configuration reCAPTCHA charger :
<script src="https://www.google.com/recaptcha/enterprise.js?render=6LcR_RsTAAAAADge..."></script>
Il apparaît aussi dans un appel grecaptcha.enterprise.execute :
grecaptcha.enterprise.execute('6LcR_RsTAAAAADge...', { action: 'login' });
- Il commence par
6L, comme un sitekey reCAPTCHA standard. - Il est visible dans la source de la page : public par conception.
- Il est rattaché à des domaines autorisés dans Google Cloud Console.
- C'est la seule valeur dont CaptchaAI a besoin pour produire un token.
La clé API AIzaSy... : la vérification côté serveur
La clé API authentifie l'appel que le backend du site adresse à Google pour faire évaluer un token :
POST https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/assessments?key=AIzaSy...
- Elle commence par
AIzaSy, le format des clés Google Cloud. - Elle n'apparaît jamais dans le code exécuté par le navigateur.
- Elle appartient au propriétaire du site, pas à qui automatise.
- CaptchaAI n'en a pas besoin et ne doit jamais la recevoir.
Qui utilise quelle clé dans le flux Enterprise
- Le navigateur charge
enterprise.jsavec le sitekey. - Le navigateur exécute le défi et obtient un token.
- Le backend du site transmet ce token et sa clé API à l'endpoint
assessments. - Google renvoie un score de risque et ses motifs d'évaluation.
- Le backend du site accepte ou refuse la soumission selon ce score.
CaptchaAI n'intervient que sur les étapes 1 et 2 : il produit un token valide à partir du sitekey. Les étapes 3 à 5 restent entre le site et Google — une clé AIzaSy... n'a rien à faire dans votre pipeline.
Ce qui change entre Enterprise et le reCAPTCHA standard
Enterprise déplace la gestion des clés vers Google Cloud et change l'endpoint de vérification.
| Caractéristique | Standard (gratuit) | Enterprise |
|---|---|---|
| Origine du sitekey | Console d'administration reCAPTCHA | Google Cloud Console |
| Endpoint de vérification | siteverify |
assessments |
| Authentification | Clé secrète (secret partagé) | Clé API ou compte de service |
| Réponse du score | Champ score (0,0–1,0) |
riskAnalysis.score et motifs |
| Type de tâche CaptchaAI | RecaptchaV2Task / RecaptchaV3Task |
RecaptchaV2EnterpriseTask / RecaptchaV3EnterpriseTask |
Récupérer le sitekey d'une page cible
| Méthode | Ce qu'elle donne | Quand la préférer |
|---|---|---|
| Source de la page | Le paramètre render du script |
Widget présent dans le HTML |
| Console JavaScript | L'attribut data-sitekey |
Widget injecté après le chargement |
| Onglet Réseau | L'URL ou le payload de la requête | Widget monté tardivement |
Méthode 1 : lire la source de la page
Cherchez enterprise.js dans le HTML servi, puis relevez la valeur du paramètre render :
View Source → Ctrl+F → "enterprise.js"
<script src="https://www.google.com/recaptcha/enterprise.js?render=6LcR_RsTAAAAADge..."></script>
Méthode 2 : interroger la console JavaScript
// Check for Enterprise grecaptcha
if (window.grecaptcha && window.grecaptcha.enterprise) {
console.log('reCAPTCHA Enterprise detected');
}
// Find site key from rendered widgets
document.querySelectorAll('[data-sitekey]').forEach(el => {
console.log('Site key:', el.getAttribute('data-sitekey'));
});
Méthode 3 : filtrer l'onglet Réseau
Filtrez les requêtes sur enterprise.js ou recaptcha/enterprise : le sitekey apparaît dans l'URL ou dans le payload. C'est la méthode la plus fiable quand un framework injecte le widget après le premier rendu.
Envoyer le sitekey à l'API CaptchaAI via googlekey
POST https://ocr.captchaai.com/in.php
| Paramètre | Valeur | Requis |
|---|---|---|
key |
Votre clé API CaptchaAI (YOUR_API_KEY) |
Oui |
method |
userrecaptcha |
Oui |
googlekey |
Le sitekey lu dans la page (6LcR_Rs...) |
Oui |
pageurl |
L'URL complète où le défi apparaît | Oui |
enterprise |
1 (signale une variante Enterprise) |
Oui |
enterprise_type |
v2 ou v3 Enterprise |
Facultatif |
action |
Le nom de l'action, pour v3 Enterprise | Facultatif |
Un cas concret : la recette d'un back-office européen
Une équipe QA lyonnaise valide chaque nuit le formulaire de connexion d'un back-office hébergé chez OVHcloud. Sa préproduction répond sur un sous-domaine dédié : son sitekey diffère de celui de la production, puisque les domaines autorisés ne sont pas les mêmes dans Google Cloud Console. Trois réflexes suffisent :
- Ne codez pas le sitekey en dur. Lisez-le à l'exécution, sur l'URL réellement testée.
- Dimensionnez en threads simultanés. La facturation CaptchaAI se fait au thread, avec des résolutions illimitées par thread : un plan BASIC ($15/mois, 5 threads) couvre une suite qui enchaîne cinq connexions en parallèle.
- Gardez le RGPD en tête. Ne journalisez ni le token ni les données saisies dans le formulaire de test.
Erreurs de configuration et correctifs
| Problème | Cause | Correctif |
|---|---|---|
ERROR_WRONG_CAPTCHA_ID |
Clé API envoyée à la place du sitekey | Reprenez la clé 6L... de la page |
| Token refusé par le site | Mauvaise variante Enterprise | Corrigez enterprise_type |
| « Invalid sitekey » | Clé d'un autre environnement | Extrayez-la depuis l'URL cible exacte |
| Défi traité comme un reCAPTCHA classique | Indicateur Enterprise absent | Ajoutez enterprise=1 |
| Score v3 Enterprise toujours bas | action absent ou divergent |
Copiez la valeur de l'appel execute |
Questions fréquentes
Le sitekey change-t-il entre la préproduction et la production ?
Presque toujours : un sitekey est lié à des domaines autorisés, donc chaque environnement a le sien. Traitez-le comme une valeur de configuration, pas comme une constante figée dans le dépôt.
Que faire si la clé lue commence par AIzaSy ?
Ne l'envoyez pas : cette clé Google Cloud privée n'a rien à faire dans une requête de résolution. Reprenez la valeur du paramètre render ou de l'attribut data-sitekey.
CaptchaAI prend-il en charge hCaptcha si le site migre depuis reCAPTCHA Enterprise ?
Non — hCaptcha n'est pas pris en charge, pas plus que FunCaptcha. Les variantes reCAPTCHA v2 et v3 Enterprise le sont, comme Cloudflare Turnstile et GeeTest v3.
Articles connexes
- Résoudre un reCAPTCHA v2 avec callback via l'API
- Sécuriser votre clé API par liste blanche d'adresses IP
- Mettre en place une rotation de vos clés API
Passer à la pratique
Repérez le sitekey 6L... de votre page cible, récupérez votre clé API CaptchaAI et envoyez votre première tâche avec enterprise=1.