Comparisons

WebDriver et Chrome DevTools Protocol pour la QA CAPTCHA interne

Périmètre sûr : Ce guide s'applique à vos propres applications et à vos environnements de QA, de préproduction ou de production, ou à des systèmes pour lesquels vous disposez d'une autorisation écrite. Il ne couvre pas l'automatisation de sites tiers.

Quand une suite de tests interne s'arrête sur un défi CAPTCHA, le protocole de pilotage n'est presque jamais le coupable. WebDriver et Chrome DevTools Protocol (CDP) récupèrent le même token, via le même appel d'API, dans le même temps. Ce qui les sépare, c'est ce que vous pouvez observer quand un test tombe : WebDriver rend un verdict, CDP livre la trace réseau qui l'explique. Restez sur WebDriver tant que votre parc de navigateurs est hétérogène ; basculez sur CDP le jour où un formulaire refuse un token valide.

Trancher en une minute : WebDriver ou CDP ?

Contrainte principale À retenir Raison
Chrome, Firefox et Safari WebDriver Seul protocole interopérable (norme W3C)
Diagnostiquer un token refusé CDP Accès aux événements Network et Fetch
Suite Selenium existante WebDriver + CDP ponctuel Commandes CDP sans réécriture
Runners CI courts et nombreux CDP Démarrage de session plus rapide

WebDriver : le standard W3C, portable par défaut

WebDriver passe par un intermédiaire — ChromeDriver, geckodriver — qui traduit vos commandes HTTP en instructions navigateur. Ce détour coûte quelques centaines de millisecondes par commande, mais il achète une propriété rare : le même test tourne sur Chrome, Firefox, Edge et Safari sans branche conditionnelle.

Côté CAPTCHA, il suffit à un scénario complet : lire le sitekey, envoyer la tâche, injecter le token, soumettre le formulaire. La limite apparaît au diagnostic — sans outil complémentaire, ni les requêtes sortantes ni les cookies httpOnly ne vous sont visibles.

CDP : voir ce que le navigateur fait vraiment

CDP parle directement à Chrome via un WebSocket persistant. Vous y gagnez de la latence et surtout de l'observabilité : interception des requêtes, contrôle complet des cookies, évaluation de code au niveau du moteur. Sur un défi CAPTCHA, cela répond à des questions précises — le script du widget est-il chargé, le champ de réponse existe-t-il à l'injection, la soumission part-elle avec le token attendu ? Revers : CDP ne concerne que Chrome et les navigateurs Chromium.

Récupérer un token reCAPTCHA v2 depuis votre suite de tests

L'appel de résolution est indépendant du protocole : c'est une requête HTTP classique. Envoyez la tâche, conservez l'identifiant, puis interrogez le résultat à intervalle régulier.

import os
import requests

API_KEY = os.environ['CAPTCHAAI_KEY']

def submit_recaptcha_v2(sitekey: str, page_url: str) -> str:
    payload = {
        'clientKey': API_KEY,
        'task': {
            'type': 'NoCaptchaTaskProxyless',
            'websiteURL': page_url,
            'websiteKey': sitekey,
        },
    }
    resp = requests.post('https://api.captchaai.com/createTask', json=payload, timeout=30)
    resp.raise_for_status()
    return resp.json()['taskId']

Le même envoi se transpose en Node.js ou en Go ; seule change la bibliothèque HTTP. Le guide de démarrage rapide détaille la création de la clé. Dimensionnez vos timeouts sur les plafonds par type — moins de 10 s pour Cloudflare Turnstile, moins de 60 s pour reCAPTCHA v2 — et non sur une médiane observée un mardi matin.

Approche hybride : Selenium 4 parle aussi CDP

Le choix n'est pas binaire. Selenium 4 expose execute_cdp_cmd() : vous gardez une suite WebDriver portable et n'activez les événements réseau que sur les tests où un défi CAPTCHA pose problème. C'est le compromis courant des équipes qui gardent Firefox dans leur matrice. Traitez ces sessions comme du code de diagnostic, désactivable par une variable d'environnement.

Journaliser ce qui rend un échec explicable

Un test CAPTCHA qui échoue sans trace coûte une demi-journée. Instrumentez quatre signaux : la durée entre l'envoi de la tâche et l'obtention du token, le code retour HTTP, l'identifiant de tâche et le nombre de threads occupés. Ces valeurs distinguent une saturation de threads d'un problème d'injection côté page ; corrélez-les à votre traçage distribué, OpenTelemetry par exemple.

Runners européens : latence et réflexes RGPD

Si vos runners tournent chez OVHcloud, Scaleway ou sur une région AWS eu-west-3 (Paris), la latence réseau vers l'API reste marginale face aux plafonds par type : inutile de les déplacer pour cette raison.

La journalisation, elle, mérite un passage RGPD : vos traces contiennent souvent des URL de préproduction, des identifiants de session et des données issues d'un jeu de test. Minimisez ce qui est conservé, tronquez les tokens dans les logs et fixez une rétention explicite sur vos artefacts CI.

Liste de contrôle avant d'industrialiser

  • Périmètre limité à vos applications ou à des environnements autorisés par écrit.
  • Clé CaptchaAI dans un secret CI ou un coffre, jamais dans le dépôt.
  • Versions de Chrome et de ChromeDriver épinglées dans l'image CI.
  • Durée d'appel, code retour et identifiant de tâche tracés à chaque exécution.
  • Retry idempotent avec backoff exponentiel borné sur les erreurs transitoires.

Dépannage

Symptôme Cause probable Correctif
Token injecté, formulaire toujours bloqué Widget dans une iframe, ou second champ homonyme non mis à jour Renseignez tous les champs portant ce nom, puis soumettez le formulaire parent
Les temps d'attente s'allongent en fin de journée Tous vos threads sont occupés Étalez les exécutions ou passez au palier de threads supérieur
La session CDP se coupe pendant un test long WebSocket coupé par un proxy ou un timeout d'inactivité Autorisez le WebSocket vers le port de debug
ChromeDriver ne démarre plus après une mise à jour Versions de Chrome et du driver désynchronisées Épinglez et mettez à jour les deux ensemble

FAQ

CaptchaAI prend-il en charge hCaptcha dans ce type de tests ?

Non — hCaptcha n'est pas pris en charge, pas plus que FunCaptcha (Arkose Labs) ; GeeTest v4 est seulement annoncé comme à venir. Les types utilisés ici, reCAPTCHA v2 et Cloudflare Turnstile, sont couverts, comme GeeTest v3, Cloudflare Challenge et les CAPTCHA image et grille. CaptchaFox, Friendly Captcha et Lemin restent en bêta.

Peut-on mélanger WebDriver et CDP dans une même suite ?

Oui, et c'est souvent l'option la plus rentable. Selenium 4 émet des commandes CDP depuis une session WebDriver : la navigation reste portable, et seule la poignée de tests à diagnostiquer ouvre une session CDP.

Quel plan choisir pour une suite de tests en intégration continue ?

Cela dépend du parallélisme, pas du volume : la facturation porte sur les threads simultanés, avec des résolutions illimitées par thread. BASIC ($15/mois, 5 threads) suffit à une suite nocturne ; STANDARD ($30/mois, 15 threads) convient à plusieurs pipelines déclenchés ensemble.

Que faire quand l'interrogation du résultat dépasse le délai prévu ?

Vérifiez que votre timeout dépasse le plafond du type concerné — moins de 60 s pour reCAPTCHA v2. Espacez vos interrogations d'environ cinq secondes plutôt que de boucler serré, et conservez l'identifiant de tâche des échecs : c'est la seule clé exploitable a posteriori.

Guides connexes

Choisissez le protocole selon ce que vous devez observer, pas selon la mode du moment. – Obtenez votre clé CaptchaAI.

Les commentaires sont désactivés pour cet article.