Tutorials

Construire un pipeline CaptchaAI type-safe avec Effect TS

Périmètre sûr : Ce guide s'applique exclusivement à vos propres applications ou à des systèmes pour lesquels vous disposez d'une autorisation écrite. Il ne décrit ni l'automatisation de sites tiers, ni le contournement de protections, ni l'évasion d'anti-bot.

Un pipeline de résolution CAPTCHA qui survit à la production repose sur trois piliers : erreurs typées, tentatives bornées et appels tracés de bout en bout. Effect TS fournit les trois au niveau du système de types, transformant un script fragile en service prévisible. Voici comment le structurer autour de l'API CaptchaAI, avec un exemple Node.js.

Ce qu'apporte Effect TS à ce pipeline

Chaque appel à CaptchaAI peut échouer de plusieurs façons ; Effect vous force à les modéliser :

  • Erreurs typées : réseau indisponible, clé invalide ou tâche non résolue deviennent des cas distincts du système de types, pas des exceptions silencieuses.
  • Tentatives bornées : le planificateur Schedule exprime le backoff exponentiel et le plafond de tentatives sans boucle manuelle.
  • Appels tracés : chaque effet porte sa durée et son code retour, prêts pour le tableau de bord.

Préparer un environnement de test isolé

Isolez l'environnement avant d'écrire la moindre logique :

  • Une QA séparée de la production, dont les endpoints acceptent le trafic de test.
  • La clé CaptchaAI dans un coffre ou un secret CI, jamais dans le dépôt.
  • Pour l'UE, un worker OVHcloud ou Scaleway (région Paris, eu-west-3) pour la latence.

Encapsuler l'appel : exemple Turnstile

Enfermez l'appel dans une fonction réutilisable, partagée entre tests et jobs planifiés. L'exemple Node.js ci-dessous crée une tâche Turnstile et renvoie son identifiant — le cœur de votre effet Effect TS :

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 : cela bloque toute requête fondée sur un token périmé ou contrefait. Côté Effect, modélisez ce rejet comme une erreur distincte de l'échec de résolution — nouvelle tentative pour l'un, alerte pour l'autre.

Observabilité et journalisation

Instrumentez chaque appel pour obtenir des signaux exploitables. Séparez les journaux par environnement et appliquez la minimisation du RGPD : consignez des identifiants techniques, jamais de données personnelles.

Signal à instrumenter Où l'exploiter
Durée d'obtention du token Tableaux de bord de QA
Code retour HTTP Règles d'alerte
Identifiant de tâche Traçage OpenTelemetry (rejeu de scénario)

Dépannage

Ces erreurs couvrent l'essentiel des tickets ; chacune se corrige sans quitter l'éditeur.

Symptôme Cause probable Correctif
ERROR_WRONG_USER_KEY Espace parasite ou mauvais compte Recopiez la clé, stockez-la en secret CI
ERROR_ZERO_BALANCE Solde sous le minimum par tâche Rechargez et ajoutez une alerte de solde
ERROR_BAD_PARAMETERS Paramètre absent ou mal formé Revalidez l'URL et la sitekey contre le HTML réel
Token refusé après résolution Token appliqué dans une autre session Gardez résolution et soumission dans le même contexte

Liste de contrôle avant mise en production

  • La clé CaptchaAI vit dans un secret CI ou un coffre, jamais dans le code source.
  • Les durées d'appel et les codes retour sont tracés à chaque exécution.
  • Le backoff exponentiel est borné (trois tentatives, plafond explicite) via Schedule.
  • Les tests restent rejouables et reproductibles depuis votre CI.

FAQ

Ai-je besoin d'Effect TS pour intégrer CaptchaAI ?

Non. L'API CaptchaAI est un simple appel HTTP ; n'importe quel client suffit. Effect TS ajoute les erreurs typées, le retry déclaratif et l'observabilité, et la même logique se transpose vers Go, Python ou Java.

Quels CAPTCHA ce pipeline peut-il résoudre ?

CaptchaAI prend en charge reCAPTCHA v2 et v3, Cloudflare Turnstile et Challenge, GeeTest v3 et les CAPTCHA image/OCR et en grille, plus CaptchaFox (bêta), Friendly Captcha (bêta) et Lemin (bêta). hCaptcha et FunCaptcha ne sont pas pris en charge ; GeeTest v4 est annoncé mais pas encore disponible. Changez le type de tâche, pas la structure.

Comment sécuriser la clé API dans un pipeline CI ?

Stockez-la comme secret chiffré de votre CI et injectez-la à l'exécution via une variable d'environnement. Ne la committez jamais ; faites-la tourner en cas de fuite. Le modèle par threads de CaptchaAI (à partir de BASIC, $15/mois, 5 threads) se facture au compte : une clé compromise pèse sur tout votre solde.

Ce guide autorise-t-il l'automatisation de sites tiers ?

Non. Tous les exemples portent sur vos propres applications ou des environnements autorisés. Aucune technique de contournement n'est décrite ; pour une source externe, validez d'abord les conditions d'utilisation.

Guides connexes

Passez d'un script fragile à un pipeline mesurable et reproductible. – Créez votre clé CaptchaAI.

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