Integrations

Résoudre les CAPTCHA dans les pipelines Elixir Broadway

Périmètre sûr : ce guide s'applique exclusivement à vos propres applications, à vos environnements de QA, de préproduction ou de production, 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 Elixir Broadway traite ses messages en parallèle et gère son propre backpressure ; dès qu'une étape doit franchir un CAPTCHA, la vraie question n'est pas « comment résoudre le défi » mais « comment appeler un solveur sans casser cette concurrence ». Trois règles suffisent : alignez vos processors sur vos threads CaptchaAI, résolvez le CAPTCHA de façon synchrone dans le processor, et tracez chaque appel pour rejouer un incident depuis un seul identifiant.

Aligner la concurrence Broadway sur vos threads CaptchaAI

CaptchaAI facture par thread simultané, avec des résolutions illimitées par thread : un thread correspond à un CAPTCHA en cours. C'est exactement l'unité que Broadway pilote avec son option concurrency. La règle est directe : le nombre de processors appelant l'API en parallèle ne doit jamais dépasser vos threads.

Plan Threads concurrency conseillée
BASIC ($15/mois) 5 5
STANDARD ($30/mois) 15 15
ADVANCE ($90/mois) 50 jusqu'à 50

Pour traiter davantage de messages en parallèle, montez de palier plutôt que de sur-provisionner des processors qui resteront en file d'attente. Un worker déployé sur Scaleway ou OVHcloud avec cinq processors et cinq threads garde une latence prévisible ; quinze processors sur cinq threads tripleraient l'attente sans rien accélérer.

Ce qu'un CAPTCHA change dans un pipeline Broadway

Broadway ingère des flux — RabbitMQ, Amazon SQS, Google Pub/Sub, Kafka — et les traite par lots avec une concurrence contrôlée. Un appel réseau vers un solveur ajoute plusieurs secondes de latence au cœur d'un processor. Non maîtrisée, elle se propage : les messages s'accumulent, le producer applique son backpressure et le débit s'effondre. L'objectif n'est donc pas de réussir un appel une fois, mais de rester stable message après message, déploiement après déploiement.

Le déroulé d'un appel depuis un processor

Dans le handle_message, chaque message qui touche un CAPTCHA suit le même déroulé :

  1. Capturez les seuls paramètres utiles : sitekey, URL, et si besoin action ou proxy. En stocker davantage crée de fausses pistes de débogage.
  2. Envoyez la tâche et vérifiez le statut : tout statut d'erreur est un échec à journaliser et à remonter à votre supervision.
  3. Interrogez le résultat : attendez environ 15 secondes, puis toutes les 5 secondes, avec un plafond de 120 secondes par tâche.
  4. Appliquez le token dans la même session que le défi — même client HTTP, même cookie jar. Une session différente est la première cause de rejet.
  5. Mesurez latence, retries et acceptation en aval : une résolution réussie et un workflow réussi sont deux métriques distinctes.

Exemple d'appel côté serveur

L'appel part de votre service, jamais du navigateur du client. L'exemple crée une tâche Turnstile et renvoie l'identifiant à interroger :

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

Observabilité et journalisation

Instrumentez chaque appel : durée d'obtention du token, code retour HTTP, identifiant de tâche et taille de la file interne. Ces signaux distinguent une lenteur du solveur d'une saturation de vos processors. Séparez les journaux par environnement et corrélez chaque identifiant à votre traçage distribué (OpenTelemetry) : vous rejouez un incident complet à partir de l'identifiant d'un message Broadway, ce qui réduit nettement le temps de diagnostic.

Dépannage

Symptôme Cause probable Correctif
Les messages s'accumulent en amont concurrency supérieure au nombre de threads Alignez concurrency sur vos threads ou montez de plan.
ERROR_WRONG_USER_KEY Clé mal copiée ou mauvais compte Recopiez la clé et 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 sitekey ou URL manquant ou mal formé Revalidez les champs contre le HTML réel de la page.
Token refusé après résolution Token appliqué dans une autre session Restez dans la même session HTTP que le message.

Checklist avant la mise en production

  • Périmètre limité à vos applications ou à des sources autorisées.
  • Clé CaptchaAI dans un coffre (Vault, AWS Secrets Manager, Azure Key Vault) ou un secret CI, jamais dans le code source.
  • concurrency de l'étape ≤ nombre de threads du plan.
  • Durée, code retour et identifiant de tâche tracés à chaque appel.
  • Retry idempotent avec backoff exponentiel borné sur les erreurs transitoires.
  • Token appliqué dans la même session que le message déclencheur.

FAQ

Combien de threads CaptchaAI pour un pipeline Broadway ?

Autant que la concurrence effective de vos processors. Chaque appel en vol occupe un thread ; avec le plan BASIC ($15/mois, 5 threads), fixez concurrency: 5 puis montez de plan si vos processors dépassent ce chiffre.

Faut-il bloquer le processor pendant la résolution ?

Oui, dans la plupart des cas. Attendre le token, avec un plafond de 120 secondes, garde le backpressure honnête ; le nombre de processors concurrents sert alors de limiteur de débit naturel.

Comment gérer une erreur sans casser le pipeline ?

Appliquez un retry avec backoff exponentiel borné (trois tentatives, plafond de 30 secondes) dans le processor, puis laissez le message échouer proprement pour qu'il soit rejoué ou envoyé en dead-letter.

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

Non. Les exemples visent vos propres applications ou une collecte de données autorisée par écrit. Avant toute source externe, vérifiez les conditions d'utilisation et vos obligations RGPD.

Guides connexes

Un pipeline Broadway stable commence par des appels CAPTCHA mesurés et reproductibles. – Obtenez votre clé CaptchaAI.

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