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 projet de collecte d'offres d'emploi ne rencontre un CAPTCHA que sur des sources précises : votre propre portail RH, l'API d'un ATS partenaire, ou une source publique dont les conditions d'utilisation autorisent l'extraction. Dans ces cas, CaptchaAI résout le défi — reCAPTCHA v2, reCAPTCHA v3 ou Cloudflare Turnstile — et laisse le pipeline se poursuivre, sans jamais recourir à des techniques d'évasion. Ce guide décrit comment assembler un tel pipeline de bout en bout : cadrage des sources, orchestration, résolution du CAPTCHA, journalisation et conformité RGPD.
Ce qui rend une source de collecte « autorisée »
Avant d'écrire une ligne de code, tranchez la question de l'autorisation source par source. Trois cas se présentent :
- Votre propre plateforme RH — vous en êtes l'éditeur ; documentez les données extraites et leur fréquence.
- Une API d'ATS sous contrat — un partenaire vous ouvre un accès conventionné ; respectez ses quotas et ses clauses.
- Une source publique avec conditions explicites — vérifiez les CGU et la base juridique avant toute automatisation.
Les offres d'emploi contiennent souvent des données personnelles (nom du recruteur, coordonnées). Le RGPD s'applique dès que vous conservez ces champs : minimisez les données collectées, documentez la base légale et fixez une durée de conservation. La CNIL considère l'aspiration massive de données personnelles comme un traitement à part entière — validez ce point avec votre équipe conformité avant la mise en production.
Architecture d'un pipeline de collecte d'offres
Un orchestrateur (Airflow, Prefect, ou un simple planificateur) déclenche les jobs. Chaque job interroge la source ; si celle-ci renvoie un défi, il appelle CaptchaAI, récupère le token, puis rejoue la requête. Le résultat atterrit dans votre entrepôt interne pour analyse.
La fonction ci-dessous soumet un reCAPTCHA v2 et renvoie l'identifiant de tâche ; votre boucle d'interrogation récupère ensuite le token une fois la résolution terminée.
import os
import requests
API_KEY = os.environ['CAPTCHAAI_KEY']
def submit_recaptcha_v2(sitekey: str, page_url: str) -> str:
payload = {
'clientKey': API_KEY,
'task': {
'type': 'NoCaptchaTaskProxyless',
'websiteURL': page_url,
'websiteKey': sitekey,
},
}
resp = requests.post('https://api.captchaai.com/createTask', json=payload, timeout=30)
resp.raise_for_status()
return resp.json()['taskId']
Le même schéma vaut pour reCAPTCHA v3 et Cloudflare Turnstile : seul le type de tâche change. Résolvez à la demande, au moment où le défi apparaît — inutile de constituer une réserve de tokens, ceux-ci expirent vite.
Le CAPTCHA dans un pipeline d'offres : types pris en charge
Sur un portail RH ou une interface d'ATS, le défi est presque toujours l'un des trois suivants — CaptchaAI les prend tous en charge :
| Contexte de la source | Type de défi courant | Prise en charge CaptchaAI |
|---|---|---|
| Formulaire de connexion RH | reCAPTCHA v2 | ✅ |
| Page de recherche à fort volume | reCAPTCHA v3 (score) | ✅ |
| Portail protégé par Cloudflare | Cloudflare Turnstile | ✅ |
Pour reCAPTCHA v3, le service renvoie un token assorti d'un score ; vos propres seuils décident de l'acceptation. La facturation CaptchaAI est par thread simultané, avec des résolutions illimitées par thread : BASIC ($15/mois, 5 threads) suffit à un pipeline modéré, et vous montez en gamme selon le parallélisme visé.
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 interne. 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). Vous rejouerez ainsi un scénario complet à partir d'un identifiant unique, ce qui réduit le temps de diagnostic en cas d'incident.
Gérer les erreurs transitoires de l'API
Encadrez chaque appel par une stratégie de retry avec backoff exponentiel borné : 3 tentatives, doublement du délai, plafond à 30 secondes. Rendez l'opération idempotente pour ne pas dupliquer une collecte déjà réussie, et tracez chaque échec avec son identifiant de tâche. Si l'erreur persiste, laissez l'orchestrateur reprogrammer le job.
Déployer vos workers de collecte
Vos workers tournent n'importe où ; pour un public francophone, OVHcloud, Scaleway ou une région AWS européenne comme eu-west-3 (Paris) réduisent la latence vers vos sources. La facturation CaptchaAI reste en dollars US quelle que soit la région.
Dépannage
| Problème | Cause probable | Correctif |
|---|---|---|
| Le token est refusé au moment de l'injection | sitekey ou URL de page erronés | Vérifiez le sitekey extrait et l'URL exacte transmise à l'API |
| Timeouts répétés sur l'API | Connectivité sortante ou allocation de threads saturée | Contrôlez le réseau et votre nombre de threads simultanés |
| Un défi CAPTCHA à chaque exécution en préproduction | Environnement de test mal aligné sur la production | Reproduisez la configuration anti-bot de la production en préproduction |
| Données personnelles non filtrées dans l'entrepôt | Absence d'étape de minimisation RGPD | Ajoutez un filtre de champs avant l'écriture en base |
Liste de contrôle avant la production
- Le périmètre est strictement limité à vos propres applications ou à des sources autorisées.
- La clé CaptchaAI est stockée dans un secret CI ou un coffre, jamais dans le code source.
- La minimisation RGPD des champs personnels est appliquée avant stockage.
- Les durées d'appel et les codes retour sont tracés pour chaque exécution.
- Une stratégie de retry idempotent couvre les erreurs transitoires.
- Les tests sont rejouables depuis votre intégration continue.
FAQ
Quels types de CAPTCHA CaptchaAI résout-il pour ce type de pipeline ?
reCAPTCHA v2, reCAPTCHA v3 et Cloudflare Turnstile — les trois défis les plus courants sur les portails RH et interfaces d'ATS. Le service couvre aussi Cloudflare Challenge, GeeTest v3 et l'image/OCR. hCaptcha et FunCaptcha ne sont pas pris en charge : si votre source les utilise, ce pipeline ne s'applique pas.
Comment rester conforme au RGPD en collectant des offres ?
Ne conservez que les champs nécessaires à votre analyse, documentez la base légale et définissez une durée de conservation. Ajoutez une étape de filtrage qui écarte les données personnelles inutiles avant l'écriture, et validez le tout avec votre référent conformité.
Puis-je réutiliser ce pipeline dans un autre langage que Python ?
Oui. La logique est indépendante du langage : cadrez la source, résolvez le défi via l'API, puis automatisez la validation en intégration continue. Un pack d'exemples couvre Python, Node.js, PHP, Go, Java, C#, Ruby, Rust et Kotlin.
Que faire quand un appel à l'API échoue temporairement ?
Rejouez avec un backoff exponentiel borné (3 tentatives, plafond à 30 secondes) et tracez chaque échec avec son identifiant de tâche. Si l'erreur persiste, vérifiez le réseau (DNS, certificats) et le quota de threads de votre clé.
Guides connexes
- le guide de démarrage rapide CaptchaAI
- la QA CAPTCHA en environnements autorisés
- tester l'endpoint API sur vos formulaires
- intégrer la résolution CAPTCHA à votre CI
- résoudre reCAPTCHA v2 via l'API
- résoudre Cloudflare Turnstile via l'API
Renforcez la fiabilité de vos workflows CAPTCHA dans vos propres environnements. – Obtenez votre clé CaptchaAI.