Integrations

Résoudre les CAPTCHA dans un edge worker Hono

Périmètre sûr : ce guide s'applique uniquement à 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 décrit ni l'automatisation de sites tiers, ni la gestion de protections anti-bot que vous ne contrôlez pas.

Un edge worker Hono résout un CAPTCHA en déléguant le travail à un service externe : le worker envoie les paramètres du défi à l'API CaptchaAI, récupère un token, puis l'injecte dans la requête qui poursuit le parcours. Le worker lui-même ne résout rien localement ; il orchestre un appel HTTPS et attend la réponse. Cette distinction change tout côté architecture, car un edge worker n'est pas un serveur classique : le temps CPU est plafonné, le système de fichiers est absent et chaque milliseconde compte. Voici comment structurer l'intégration pour qu'elle tienne en production.

Ce qu'un edge worker Hono change

Hono s'exécute sur des runtimes edge — Cloudflare Workers, Deno Deploy, Bun, Vercel — qui imposent trois contraintes absentes d'un serveur Node.js classique :

  • Temps CPU plafonné : souvent quelques dizaines de millisecondes de calcul actif par requête.
  • Ni processus longs, ni disque : aucun état persistant entre deux invocations.
  • Facturation au calcul, pas à l'attente : les millisecondes passées sur un appel réseau ne consomment pas de CPU.

Or la résolution d'un CAPTCHA prend plusieurs secondes : envoyer la tâche, attendre, interroger le résultat. Bonne nouvelle, cette attente relève de l'I/O réseau. Sur Cloudflare Workers, waitUntil et un nombre de sous-requêtes maîtrisé suffisent à couvrir le cycle sans épuiser votre budget CPU.

Architecture : appeler CaptchaAI depuis le worker

Le worker reçoit une requête, extrait les paramètres du défi (sitekey, URL de la page, type de CAPTCHA) et appelle l'API CaptchaAI en HTTPS. CaptchaAI expose une seule API pour reCAPTCHA v2 et v3, Cloudflare Turnstile et Challenge, GeeTest v3 et les CAPTCHA image/OCR : vous changez le type de tâche, la boucle envoi/interrogation reste identique. Tracez chaque étape — identifiant de tâche, durée, code retour — pour repérer les régressions lors des montées de version du runtime.

Gérer les secrets sur une plateforme edge

Sur une plateforme edge, la clé API ne vit jamais dans le code. Utilisez le magasin de secrets natif — wrangler secret pour Cloudflare, les variables d'environnement chiffrées de votre plateforme — ou un coffre externe (HashiCorp Vault, AWS Secrets Manager). Le déploiement injecte la clé au runtime, hors du bundle. Pensez aussi au RGPD : un edge worker journalise des requêtes utilisateurs, donc minimisez les données personnelles conservées et documentez la base légale de votre traitement.

Exemple : lancer une tâche Turnstile

Voici un appel HTTP côté serveur, dans votre propre service, pour créer une tâche Turnstile et récupérer son identifiant :

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

Le worker renvoie ensuite le taskId, puis interroge le résultat jusqu'à obtention du token. Bornez cette boucle : un plafond de tentatives évite de bloquer une invocation edge indéfiniment.

Observabilité et journalisation

Instrumentez chaque appel CAPTCHA pour obtenir des métriques exploitables : durée totale d'obtention du token, code retour HTTP, identifiant de tâche et taille de la file interne. Ces signaux alimentent vos tableaux de bord de QA et vos alertes.

Séparez les journaux par environnement (développement, préproduction, production) et conservez un identifiant corrélé à votre traçage distribué, par exemple via OpenTelemetry. Sur un déploiement multirégion — un worker répliqué près de Paris (eu-west-3), par exemple — étiquetez aussi la région : une latence anormale y est souvent locale, pas globale. En cas d'incident, ces journaux réduisent nettement le temps de diagnostic.

Liste de contrôle avant la mise en production

Passez ces points en revue avant de fusionner l'intégration. Chacun correspond à une panne réellement observée sur un déploiement edge.

Point de contrôle Pourquoi Réglage recommandé
Périmètre Écarter toute automatisation non autorisée Limiter aux applications que vous exploitez ou à des sources autorisées
Stockage de la clé Une clé dans le bundle fuit au déploiement Secret de plateforme (wrangler secret) ou coffre externe
Traçabilité Sans trace, aucun diagnostic n'est possible Journaliser la durée, le code retour et l'identifiant de tâche
Boucle d'interrogation Une boucle infinie bloque l'invocation edge Plafonner les tentatives et ajouter un retry idempotent avec backoff
Reproductibilité Un test non rejouable masque les régressions Rejouer les tests d'intégration depuis la CI

Dépannage des erreurs courantes

Symptôme Cause probable Correctif
Clé refusée au démarrage Clé copiée avec un espace ou mauvais compte Recopier la clé depuis le tableau de bord vers un secret de plateforme
Token rejeté après résolution Token appliqué dans une autre session que le défi Réutiliser le même contexte HTTP entre le défi et la soumission
Invocation edge interrompue Boucle d'interrogation non bornée Limiter les tentatives et prolonger le cycle via waitUntil
Solde insuffisant Compte sous le minimum par tâche Recharger et poser une alerte de solde dans le tableau de bord

FAQ

Un edge worker peut-il attendre la résolution d'un CAPTCHA sans dépasser sa limite de temps ?

Oui, car l'attente relève de l'I/O réseau, pas du temps CPU. La plupart des runtimes edge plafonnent le calcul actif, pas les millisecondes passées à attendre une réponse HTTP. Bornez malgré tout la boucle d'interrogation avec un nombre maximal de tentatives et, sur Cloudflare Workers, prolongez le cycle avec waitUntil plutôt que de bloquer la réponse.

Faut-il un proxy pour résoudre le CAPTCHA depuis le worker ?

Pas nécessairement. Le type de tâche Turnstile utilisé ici est « proxyless » : CaptchaAI résout le défi sans proxy fourni de votre côté. Un proxy résidentiel ne devient utile que si la page cible applique un filtrage géographique ou réseau strict que votre worker doit reproduire.

Comment maîtriser le coût quand le trafic augmente ?

La facturation CaptchaAI repose sur le nombre de threads simultanés, pas sur le nombre de résolutions, avec des résolutions illimitées par thread. Le plan BASIC ($15/mois, 5 threads) suffit à un worker à faible concurrence ; passez à STANDARD ($30/mois, 15 threads) ou ADVANCE ($90/mois, 50 threads) quand les tâches simultanées grimpent. Les vrais postes de surcoût restent les boucles de retry et les paramètres erronés.

CaptchaAI prend-il en charge hCaptcha dans ce montage ?

Non — hCaptcha n'est pas pris en charge, pas plus que FunCaptcha (Arkose Labs). CaptchaAI couvre reCAPTCHA v2 et v3, Cloudflare Turnstile et Challenge, GeeTest v3 et les CAPTCHA image/OCR ; GeeTest v4 est annoncé « à venir ». Vérifiez le type affiché sur votre page avant de câbler l'intégration.

Guides connexes

Structurez vos workflows CAPTCHA avec une méthode reproductible et mesurable. – Créez votre clé API CaptchaAI.

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