Passer au contenu principal

Résoudre les soucis liés au Captcha

L’agent de test Thunders permet aux équipes de lancer des tests fonctionnels automatisés sur votre site web, en simulant le comportement réel d’un utilisateur.

Écrit par Ines

Problématique :

Les systèmes CAPTCHA (Cloudflare Turnstile, Google reCAPTCHA, etc.) sont conçus pour bloquer les robots, et bloquent donc également les tests automatisés.

Pour que Thunders puisse explorer, scanner et valider vos parcours utilisateur, il est nécessaire d’autoriser temporairement le passage de la plateforme sur les environnements de test, en contournant le CAPTCHA.

Pour tirer pleinement parti des tests par l’IA avec Thunders, nous recommandons donc de désactiver les CAPTCHA sur les environnements de tests, selon ces meilleures pratiques :

1) Désactiver le CAPTCHA sur les environnements de test

Désactivez la vérification CAPTCHA sur vos environnements de QA/staging via la configuration ou un feature flag.

Lieu de modification habituel : variables d’environnement, fichiers de config, ou options dans la console d’admin. (Cette méthode est standard si les environnements sont bien séparés.)

Exemple :

CAPTCHA_ENABLED = true en production ; CAPTCHA_ENABLED = false en staging.

Déployez, puis utilisez Thunders sur le domaine staging.

2) Whitelister les IPs/clusters Thunders

Vous pouvez ajouter une ou plusieurs IP de test Thunders à la liste blanche de votre fournisseur CAPTCHA ou de votre firewall, afin que les requêtes de ces IP passent outre le défi CAPTCHA.

Exemple :

Ajoutez les IP de Thunders (disponibles ici) à la liste blanche du module CAPTCHA ou en règle WAF “trusted” sur le staging.

NB : Cette méthode est idéale pour les environnements staging et réseaux internes.

3) Utiliser les clés de test ou le mode démo des fournisseurs

La plupart des fournisseurs proposent des “keys” ou modes test permettant de passer les Captcha sur les environnements de test.

Exemple :

  • Google reCAPTCHA propose des clés test “toujours valides” pour v2/v3.

  • Cloudflare Turnstile fournit des “sitekeys”/tests dédiés et un flux test automatique.

    Utilisez ces clés sur le staging QA.

    Exemple :

    Créez des clés séparées pour le staging et la production.

    En staging config/env : RECAPTCHA_SITE_KEY=test_key, RECAPTCHA_SECRET_KEY=test_secret (ou l’équivalent Turnstile).

    Définissez l’URL de test sur Thunders.

    Pourquoi : rapide, officiel, traçable et ne pose aucun risque si les clés sont limitées à l’envi de test.

4) Exempter les comptes de test dédiés (trusted accounts)

Créez un ou plusieurs comptes dédiés au test (ex : [email protected]) et appliquez-leur un flag spécial (ex : bypass_captcha=true), pour qu’ils ne soient jamais challengés par le CAPTCHA lors de la connexion.

Exemple :

Ajoutez un boolean “skip_captcha” sur le profil utilisateur ou vérifiez le rôle “trusted” avant d’afficher un CAPTCHA.

Veillez à ce que ces comptes soient limités au minimum d’accès et que les credentials soient renouvelés régulièrement.

5) Laisser Thunders définir un indicateur de contournement (window.__thunders_bypass)

Utilisez cette méthode quand les précédentes ne vous sont pas accessibles : vous ne pouvez pas changer de sitekey, vous ne pouvez pas whitelister nos IP, et le captcha ne se trouve pas derrière une connexion que vous pouvez exempter. C'est la seule méthode de cette liste qui nécessite une modification de code dans votre application.

Comment cela fonctionne :

  • Thunders exécute un script d'initialisation dans le navigateur avant le JavaScript de votre page, en définissant window.__thunders_bypass avec le captcha détecté, par exemple "hcaptcha". Les autres valeurs sont "recaptcha_v2", "recaptcha_v3" et "turnstile".

  • Votre application lit cet indicateur et ignore son captcha.

  • L'indicateur seul ne fait rien. Tant que votre application ne le lit pas, le captcha s'affiche toujours et le test échoue toujours.

Étape 1 : ignorer le widget dans votre application. Encapsulez l'appel qui affiche votre captcha pour qu'il soit ignoré quand l'indicateur est défini.

reCAPTCHA v2 :

if (!window.__thunders_bypass) {
grecaptcha.render("captcha-container", { sitekey: RECAPTCHA_SITE_KEY });
}

hCaptcha :

if (!window.__thunders_bypass) {
hcaptcha.render("captcha-container", { sitekey: HCAPTCHA_SITE_KEY });
}

Cloudflare Turnstile :

if (!window.__thunders_bypass) {
turnstile.render("#captcha-container", { sitekey: TURNSTILE_SITE_KEY });
}

reCAPTCHA v3 n'a pas de widget à ignorer, ignorez donc le jeton :

const token = window.__thunders_bypass
? null
: await grecaptcha.execute(RECAPTCHA_SITE_KEY, { action: "login" });

Étape 2 : ignorer la vérification sur votre serveur. La modification côté client ne suffit pas. Sans widget, il n'y a pas de jeton captcha : un backend qui en exige toujours un rejettera la requête, et votre test échouera à la soumission plutôt que sur le captcha.

window.__thunders_bypass n'existe que dans le navigateur, votre serveur ne peut donc pas le lire. Faites en sorte que le client indique au serveur qu'il est en mode contournement, par exemple via un champ de requête ou un en-tête, et que le serveur ne l'honore que sur votre environnement de test.

À ne jamais activer en production:

Il s'agit d'un véritable contournement de captcha. N'incluez cette vérification que dans les builds hors production, et conditionnez le contournement côté serveur à l'environnement, jamais à la seule parole du client. Un contournement que votre backend de production honore est une faille, pas un réglage de test.

Étape 3 : activer le script d'initialisation dans Thunders.

  1. Ouvrez votre projet de test, allez dans Environnements et ouvrez l'environnement que vous testez.

  2. Sélectionnez l'onglet Scripts d'initialisation et cliquez sur Ajouter un script.

  3. Nommez-le Captcha bypass et définissez le script sur window.__thunders_bypass = "hcaptcha";, en utilisant le fournisseur de votre application.

  4. Cliquez sur Enregistrer les modifications.

Pourquoi : fonctionne quand rien d'autre ne fonctionne, et reste sous votre contrôle. Coût : une modification de code et un déploiement de votre côté, ce que les quatre autres méthodes évitent.

Bonnes pratiques

  • Toujours limiter le contournement du CAPTCHA aux environnements de test/QA/staging, et jamais en production.

  • Documentez la méthode utilisée pour assurer la traçabilité.

Avez-vous trouvé la réponse à votre question ?