Tutorials

Utiliser l'extension CaptchaAI derrière un bastion SSH (jumphost)

Périmètre sûr : ce guide vise vos propres applications et vos environnements de QA ou de préproduction, ou des systèmes pour lesquels vous détenez une autorisation écrite. Il ne couvre pas l'automatisation de sites tiers ni la neutralisation de protections anti-bot.

Piloter l'extension CaptchaAI depuis un navigateur joignable seulement via un bastion SSH devient fiable dès lors que vous la traitez comme un profil de navigateur persistant, non comme un bouton à activer. Quatre points font la différence : l'état du compte, le profil du navigateur, le gestionnaire de CAPTCHA et le comportement après résolution. C'est là que se concentrent les erreurs et la charge de support.

Pourquoi un bastion SSH change la donne pour l'extension

Un bastion SSH (ou jumphost) place le navigateur sur un hôte interne que vous n'atteignez pas directement : vous y accédez par un tunnel SSH, du forwarding X11 ou une session VNC relayée par le bastion. L'extension CaptchaAI s'exécute côté serveur, dans le profil. Gardez ce profil stable entre deux connexions pour qu'elle reste configurée sans intervention. C'est le cas d'une équipe dont les workers de QA tournent sur un hôte OVHcloud ou Scaleway (eu-west-3, Paris) joignable via bastion uniquement.

Préparer le profil de l'extension derrière le bastion

  • Isolez la QA de la production ; n'ouvrez que les ports nécessaires sur le bastion.
  • Stockez la clé CaptchaAI dans un coffre ou un secret de CI, jamais dans un profil versionné.
  • Pointez le navigateur vers un répertoire de profil dédié (--user-data-dir) : configuration, cookies et authentification y persistent d'une session à l'autre.
  • Sauvegardez ce répertoire pour reprovisionner un worker sans reconfiguration manuelle.

Encapsuler l'appel à l'API CaptchaAI

  • Isolez l'appel à CaptchaAI dans une fonction réutilisable prenant la sitekey et l'URL de la page.
  • Faites-lui renvoyer un token et tracer la durée et le code retour.
  • Réutilisez-la dans chaque worker au lieu de dupliquer le code.

Exemple : créer une tâche Turnstile

Voici un exemple commenté en français qui appelle l'API :

import fetch from 'node-fetch';

const API_KEY = process.env.CAPTCHAAI_KEY;

export async function createTurnstileTask(siteKey, pageUrl) {
  const res = await fetch('https://api.captchaai.com/createTask', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({
      clientKey: API_KEY,
      task: {
        type: 'TurnstileTaskProxyless',
        websiteURL: pageUrl,
        websiteKey: siteKey,
      },
    }),
  });
  const data = await res.json();
  return data.taskId;
}

Vérifier le token côté backend

Le token renvoyé doit être validé par votre backend avant toute opération métier. Cette étape bloque une requête portant un token périmé ou contrefait. Faites-la toujours côté serveur, jamais dans le navigateur piloté à distance.

Mesurer les appels à travers le tunnel

Instrumentez chaque appel CAPTCHA et séparez les journaux par environnement. Corrélez-les à votre traçage distribué (OpenTelemetry, par exemple) pour rejouer un scénario depuis un seul identifiant. Suivez en permanence quatre signaux :

  • Durée d'obtention du token — latence réelle vue par le worker.
  • Code retour HTTP — échecs réseau ou rejets côté API.
  • Identifiant de tâche — corrélation avec le traçage distribué.
  • Taille de la file d'attente — saturation des threads du plan.

Liste de contrôle avant la mise en production

  • Périmètre limité à vos applications ou à des sources autorisées.
  • Clé CaptchaAI en secret de CI ou coffre, jamais dans le code.
  • Profil persistant et sauvegardé, prêt à survivre à une reconnexion.
  • Durées d'appel et codes retour tracés à chaque exécution.
  • Retry idempotent sur les erreurs transitoires, tests rejouables en CI.

Dépannage des workflows derrière le bastion

Ces incidents tiennent presque toujours au profil, au tunnel ou à la session du token.

Symptôme Cause probable Correctif
Extension déconfigurée après reconnexion Profil non persistant Fixez --user-data-dir et sauvegardez le répertoire
Token refusé par le backend Validation faite dans le navigateur Validez le token côté serveur uniquement
Appels qui expirent par intermittence Tunnel SSH ou DNS instable Contrôlez le réseau du bastion et bornez le timeout

FAQ

Comment atteindre l'extension à travers un bastion SSH ?

Faites tourner le navigateur sur l'hôte interne et exposez son affichage via un tunnel SSH, du forwarding X11 ou une session VNC. Vous ne pilotez que l'affichage à distance ; n'ouvrez que les ports nécessaires sur le bastion.

Le profil du navigateur conserve-t-il la configuration de l'extension ?

Oui, avec un répertoire de profil persistant (--user-data-dir) : l'extension y garde sa configuration d'une session à l'autre. Sauvegardez-le pour reprovisionner un worker sans reconfiguration manuelle.

Que faire en cas d'erreur transitoire de l'API ?

Mettez en place un retry avec backoff exponentiel borné : trois tentatives, doublement du délai à chaque essai, plafond à 30 secondes. Tracez chaque échec avec son identifiant de tâche. Si l'erreur persiste, contrôlez le réseau (DNS, certificats) et les quotas de votre clé.

Quel plan CaptchaAI convient à une flotte de workers ?

Il dépend du nombre de résolutions simultanées, pas du volume total : la facturation est par thread, avec des résolutions illimitées par thread. Le plan BASIC ($15/mois, 5 threads) suffit pour quelques workers de QA ; STANDARD ($30/mois, 15 threads) couvre une flotte plus large.

Guides connexes

Fiabilisez vos workflows CAPTCHA avec une approche méthodique et reproductible. — Obtenez votre clé CaptchaAI.

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