Integrations

Appeler CaptchaAI depuis un asset Dagster

Périmètre sûr : ce guide s'applique uniquement à vos propres applications et à vos environnements de QA, de préproduction ou de production, ainsi qu'aux systèmes pour lesquels vous détenez une autorisation écrite. Il ne porte pas sur l'automatisation de sites tiers que vous ne contrôlez pas.

Un asset Dagster qui interroge un portail autorisé peut se bloquer sur un CAPTCHA en plein run planifié, sans personne pour remplir le formulaire à la main. La réponse tient en un appel HTTPS depuis l'asset : vous transmettez le défi à CaptchaAI, vous récupérez le token, puis vous le réinjectez dans la même session. Ce guide montre comment câbler cet appel proprement, le rendre observable et le garder stable en production.

Pourquoi appeler CaptchaAI depuis un asset Dagster

Le sujet paraît trivial dans un notebook : une requête, un token, terminé. Il se complique dès que l'asset tourne sans surveillance, à travers déploiements, aléas réseau et changements de famille de CAPTCHA. Ce qu'il vous faut, ce sont moins d'interventions manuelles et des délais prévisibles. CaptchaAI répond à ce besoin avec une seule API couvrant les familles reCAPTCHA, Cloudflare Turnstile, GeeTest v3 et les CAPTCHA image, et une facturation par thread qui ne pénalise pas la montée en charge.

Le déroulé, étape par étape

Le contrat est le même quelle que soit la famille de CAPTCHA :

  1. Capturez uniquement les paramètres attendus — sitekey, URL de la page, action, proxy éventuel. Stocker plus que nécessaire crée de fausses pistes de débogage.
  2. Envoyez la tâche au point d'entrée de résolution ; traitez tout statut d'échec comme une erreur à journaliser et à remonter.
  3. Interrogez le résultat régulièrement — attendez 15 secondes, puis interrogez toutes les 5 secondes, avec un plafond strict par tâche.
  4. Appliquez le token dans la même session que celle du défi : même contexte navigateur, même client HTTP, même cookie jar. Une session dépareillée est la première cause de rejet.
  5. Mesurez la latence, les retries et l'acceptation en aval : la réussite de la résolution et celle du workflow sont deux métriques distinctes.

Exemple de code

Voici un appel HTTP côté serveur dans votre propre service, ici en Node.js :

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;
}

Architecture : de l'asset au token

Votre asset appelle CaptchaAI via HTTPS pour obtenir un token, puis l'injecte dans votre formulaire ou votre route d'API. Tracez chaque étape : c'est ce qui rend les régressions visibles lors des montées de version. Sur un worker OVHcloud ou Scaleway en région eu-west-3 (Paris), le solde et les identifiants proviennent d'un coffre et la latence réseau reste mesurable. Si votre pipeline collecte des données personnelles, minimisez ce que vous journalisez et vérifiez vos obligations RGPD.

Gérer les secrets et la configuration

La clé CaptchaAI vit dans un coffre — HashiCorp Vault, AWS Secrets Manager ou Azure Key Vault — ou dans un secret de CI. Le déploiement la monte en variable d'environnement au runtime ; elle n'apparaît jamais dans le code source ni dans les logs. Pour un asset Dagster, exposez-la via la configuration de la ressource, jamais en dur dans la définition.

Observabilité et journalisation

Instrumentez les appels CAPTCHA pour obtenir des métriques exploitables : durée d'obtention du token, code retour HTTP, identifiant de tâche et taille de la file d'attente. Ces signaux alimentent vos tableaux de bord de QA et vos alertes. Séparez les journaux par environnement et corrélez les identifiants à votre traçage distribué (OpenTelemetry) pour rejouer un scénario complet depuis un seul identifiant.

Les KPI à suivre

Les chiffres ci-dessous reposent sur des mesures observées et des retours d'utilisateurs. Les résultats varient selon l'environnement, le volume et le moment de la journée.

KPI Cible Ce qu'il révèle
Latence de résolution (p50) Selon le type ; Turnstile en moins de 10 s L'intégration n'attend pas sur des retries.
Latence de résolution (p95) Queue bornée Vos timeouts sont bien dimensionnés.
Taux de réussite du solveur Élevé et stable par famille Vos paramètres correspondent au défi.
Acceptation de bout en bout Proche du taux de résolution Le token est accepté dans la même session.
Coût par résolution acceptée Stable sur la semaine Ni retries ni mauvais paramètres n'érodent la marge.

La facturation par thread — à partir de BASIC ($15/mois, 5 threads), résolutions illimitées — garde cette ligne prévisible : vous payez la concurrence, pas le volume.

Dépannage

Ces erreurs couvrent l'essentiel des tickets liés à cette intégration.

Symptôme Cause probable Correctif
ERROR_WRONG_USER_KEY Clé copiée avec un espace parasite ou mauvais compte. Recopiez la clé depuis le tableau de bord et stockez-la en secret de CI.
ERROR_ZERO_BALANCE Solde sous le minimum par tâche. Rechargez et ajoutez une alerte de solde.
Token refusé après résolution Token appliqué dans une autre session que celle du défi. Gardez la résolution et l'envoi du formulaire dans la même session.

Liste de contrôle avant la mise en production

  • Le périmètre reste limité à vos propres applications ou à des sources autorisées.
  • La clé CaptchaAI est stockée dans un coffre ou un secret de CI, jamais dans le code source.
  • Les durées d'appel et les codes retour sont tracés à chaque exécution.
  • Une stratégie de retry idempotent couvre les erreurs transitoires.
  • Les tests d'intégration sont rejouables depuis votre intégration continue.

FAQ

Comment déclencher l'appel CaptchaAI à l'intérieur d'un asset Dagster ?

Placez l'appel dans le corps de l'asset, après avoir récupéré la clé depuis la configuration de la ressource. L'asset envoie la tâche, interroge le résultat, puis renvoie le token comme sortie matérialisée. Gardez la boucle d'interrogation bornée pour ne pas bloquer le scheduler.

Le token expire-t-il avant la fin du run Dagster ?

Oui, les tokens ont une durée de vie courte. Résolvez le CAPTCHA au plus près de son utilisation, dans le même asset, plutôt que de constituer une réserve en amont. Régénérez-le si une étape ultérieure en a besoin.

Que faire si un run échoue sur une erreur transitoire de l'API ?

Mettez en place un retry avec backoff exponentiel borné : trois tentatives, délai doublé, plafond à 30 secondes. Tracez chaque échec avec son identifiant. Si l'erreur persiste, vérifiez le réseau (DNS, certificats) et le solde de votre clé.

CaptchaAI prend-il en charge hCaptcha pour ce type de pipeline ?

Non — hCaptcha n'est pas pris en charge, tout comme FunCaptcha (Arkose Labs). CaptchaAI couvre reCAPTCHA v2 et v3, Cloudflare Turnstile et Challenge, GeeTest v3, ainsi que les CAPTCHA image et en grille. Vérifiez que la famille de votre portail figure parmi ces types avant d'industrialiser l'asset.

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.