Cloudflare Challenge
et CapMonster Cloud

Résolution de captcha, installation sur le site et tests.

Tarifs de la solution Cloudflare Challenge

CAPTCHA
Prix (USD)
$ 1.30
1000 jetons
$ 1.30
1000 jetons
Vous avez hérité d’un site doté d’une captcha ou d’une autre couche de protection mais sans accès au code source ? Il est alors naturel de se demander quelle solution est installée, si elle est correctement configurée et comment la tester.

Dans cet article, nous avons essayé de répondre à toutes les questions essentielles. Pour commencer à résoudre le problème, il faut d’abord déterminer quel système de protection est utilisé. Pour cela, vous pouvez consulter la liste des captchas et systèmes de protection antibot les plus populaires, qui présente des exemples visuels et des caractéristiques clés permettant d’identifier rapidement avec quoi vous avez affaire.

Si vous constatez que votre site utilise Cloudflare Challenge, l’étape suivante consiste à étudier plus en détail ses propriétés et son fonctionnement. Dans cet article, vous pouvez également consulter le guide d’intégration de Cloudflare Challenge afin de comprendre pleinement la façon dont il fonctionne sur votre site. Cela vous permettra non seulement de mieux connaître la protection en place, mais aussi de planifier correctement sa maintenance.

Qu'est-ce que Cloudflare Challenge
Qu'est-ce que Cloudflare Challenge
Cloudflare Challenge (ou Interstitial Challenge Pages) est un système de vérification de Cloudflare conçu pour protéger les sites web contre les bots, le spam et le trafic malveillant. Lorsque Cloudflare soupçonne qu'une requête ne provient pas d'un vrai visiteur (par exemple, à cause d'une IP suspecte ou de l'absence de JavaScript), il affiche un Challenge — c'est-à-dire un 'test' que l'on doit réussir pour confirmer que vous êtes humain. Ce type de vérification diffère de Turnstile car l'utilisateur voit d'abord une page intermédiaire avec le message “Just a moment…” et “Verifying you are human. This may take a few seconds.”

Comment résoudre Cloudflare Challenge avec CapMonster Cloud

Lors du test de la protection avec Cloudflare Challenge, il est important de s’assurer que la vérification fonctionne correctement et filtre correctement le trafic suspect.
Vous pouvez tester manuellement le challenge installé sur votre page :
  • Ouvrez la page en mode incognito où le Challenge est attendu et assurez-vous que le captcha est affiché.
  • Essayez d'insérer des cookies cf_clearance incorrects dans le navigateur (voir détails ci-dessous) — le serveur doit renvoyer une erreur.
  • Après avoir résolu le captcha avec succès, la page réelle du site devrait s'ouvrir sans vérification.
Pour les tests automatisés et la reconnaissance de captcha, vous pouvez utiliser des services spécialisés tels que CapMonster Cloud — un outil qui reçoit les paramètres du captcha, les traite sur ses serveurs et renvoie une solution prête à l'emploi. Cette solution (token ou cookie) peut être insérée dans un formulaire ou un navigateur pour passer la vérification sans interaction utilisateur.

Travailler avec CapMonster Cloud via l’API comprend généralement les étapes suivantes :

Création de la tâcheCréation de la tâche
arrow
Envoyer une requête APIEnvoyer une requête API
arrow
Réception du résultatRéception du résultat
arrow
Insertion de cf_clearanceInsertion de cf_clearance
arrow
Reconnaissance de Cloudflare Challenge avec des bibliothèques prêtes à l'emploi
CapMonster Cloud fournit des bibliothèques pour Python, JavaScript (Node.js) et C#.
Python
JavaScript
C#
Résolution du Challenge et insertion du cookie
Exemple en Node.js pour le cycle complet de reconnaissance de captcha sur votre page. Approches : utiliser des requêtes HTTP pour obtenir le HTML et les paramètres de protection, envoyer la réponse et traiter le résultat. Ou avec des outils d'automatisation (Playwright) — ouvrir la page, attendre la vérification, envoyer les paramètres via CapMonster Cloud, obtenir le résultat, insérer le cookie dans le navigateur (pour les tests, vous pouvez utiliser des valeurs correctes ou incorrectes) et observer le résultat.

  // npm install playwright @zennolab_com/capmonstercloud-client
// npx playwright install chromium

import { chromium } from 'playwright';
import {
  CapMonsterCloudClientFactory,
  ClientOptions,
  TurnstileRequest
} from '@zennolab_com/capmonstercloud-client';

// Paramètres — remplacez par vos valeurs
const API_KEY = 'YOUR_API_KEY';
const TARGET_URL = 'https://www.example.com';
const SITE_KEY = 'xxxxx'; // n'importe quelle chaîne peut être utilisée
const USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36';

// Paramètres proxy
const proxy = {
  proxyType: 'http',
  proxyAddress: '8.8.8.8',
  proxyPort: 8080,
  proxyLogin: 'proxyLogin',
  proxyPassword: 'proxyPassword'
};

async function main() {

  const cmcClient = CapMonsterCloudClientFactory.Create(
    new ClientOptions({ clientKey: API_KEY })
  );

  // Lancer le navigateur
  const browser = await chromium.launch({
    headless: false,
    proxy: proxy.proxyAddress ? {
      server: `${proxy.proxyType}://${proxy.proxyAddress}:${proxy.proxyPort}`,
      username: proxy.proxyLogin,
      password: proxy.proxyPassword
    } : undefined
  });

  // Créer le contexte avec User-Agent requis et taille de fenêtre (optionnel)
  const context = await browser.newContext({ userAgent: USER_AGENT, viewport: { width: 1280, height: 800 } });

  // Créer la page et charger l'URL cible
  const page = await context.newPage();
  const resp = await page.goto(TARGET_URL, { waitUntil: 'domcontentloaded', timeout: 60000 });
  console.log('Statut de la requête initiale :', resp?.status());

  // Obtenir le HTML de la page et convertir en Base64 pour CapMonster
  const htmlBase64 = Buffer.from(await page.content(), 'utf-8').toString('base64');

  // Créer la tâche Turnstile pour obtenir cf_clearance
  const solveResult = await cmcClient.Solve(new TurnstileRequest({
    websiteURL: TARGET_URL,
    websiteKey: SITE_KEY,
    cloudflareTaskType: 'cf_clearance',
    htmlPageBase64: htmlBase64,
    userAgent: USER_AGENT,
    proxy: proxy.proxyAddress ? proxy : undefined
  }));

  const cf_clearance = solveResult?.solution?.cf_clearance;
  if (!cf_clearance) {
    console.error('Impossible d'obtenir cf_clearance depuis CapMonster :', solveResult);
    await browser.close();
    return;
  }
  console.log('cf_clearance obtenu :', cf_clearance);

  // Ajouter le cookie cf_clearance au contexte du navigateur
  await context.addCookies([{
    name: 'cf_clearance',
    value: cf_clearance,
    domain: '.' + new URL(TARGET_URL).hostname,
    path: '/',
    httpOnly: true,
    secure: true
  }]);
  console.log('Cookie cf_clearance ajouté avec succès au navigateur.');

  // Rouvrir la page avec cf_clearance défini
  const page2 = await context.newPage();
  const resp2 = await page2.goto(TARGET_URL, { waitUntil: 'domcontentloaded', timeout: 60000 });
  console.log('Statut de la requête après la définition de cf_clearance :', resp2?.status());

  await browser.close();
  console.log('Script terminé.');
}

main().catch(err => {
  console.error('Une erreur est survenue :', err);
  process.exit(1);
});
  
Comment connecter Cloudflare Challenge à votre site web
Pour comprendre le fonctionnement du captcha sur votre site, sa logique de vérification et comment le reconnecter ou le reconfigurer, nous recommandons cette section. Elle explique le processus de configuration de la protection pour vous aider à maîtriser rapidement tous les détails.
1. Inscrivez-vous ou connectez-vous et ajoutez votre domaine à Cloudflare.
2. Activez Challenge via une règle WAF.
Allez à : Security → Custom Rules → Create rule
HowTo Connect image 1

Exemple de condition (vérifier toute la page de login) :
http.request.uri.path contains "/login"
3. Choisissez une action :
Managed Challenge (recommandé) — le système décide automatiquement s'il faut afficher un challenge et lequel.
Configurez les autres options nécessaires et cliquez sur Deploy.
Après vérification, l'utilisateur reçoit un cookie cf_clearance permettant d'accéder à nouveau depuis le même navigateur/appareil sans Challenge.
Background
Erreurs possibles et débogage
Bug Icon
Domaine incorrect ou configuration de règle
Le Challenge n'est pas affiché. Vérifiez que la règle WAF est assignée au bon URI, chemin ou hôte.
Bug Icon
Timeout de chargement de page ou Challenge
Le navigateur ou le client n'a pas attendu la réponse de Cloudflare. Augmentez les timeouts dans les tests et le monitoring.
Bug Icon
Nouvelle vérification ou cf_clearance expiré
Si un visiteur utilise un cf_clearance expiré, le système affichera à nouveau le Challenge.
Bug Icon
Une autre vérification suit le Challenge
L'utilisation simultanée de Challenge + règles personnalisées peut créer des boucles. Suivez les recommandations de Cloudflare pour résoudre cela.
Tests de robustesse de la protection
Conseils de sécurité et d’optimisation
Configurez les règles WAF et Managed/JS/Interactive Challenge selon le niveau de risque.
Enregistrez les événements de sécurité et le statut de passage du Challenge pour comprendre les blocages et identifier les faux positifs.
Pour la transparence et la conformité, ajoutez des liens vers la <span class="font-bold">Politique de confidentialité</span> et les <span class="font-bold">Conditions d'utilisation</span> de Cloudflare/site sur les pages avec Challenge.
Conclusion

Si vous avez récupéré un site avec un captcha ou un autre système de protection déjà installé, mais sans accès au code, pas de panique ! Il est assez simple d’identifier quelle technologie est utilisée. Pour vérifier que tout fonctionne correctement, vous pouvez utiliser le service de reconnaissance CapMonster Cloud dans un environnement de test isolé, afin de vous assurer que le mécanisme de traitement des jetons et la logique de vérification fonctionnent correctement.

Dans le cas de Cloudflare Challenge, il suffit d’identifier le système, d’étudier son comportement et de vérifier que la protection fonctionne correctement. Dans cet article, nous avons montré comment reconnaître Cloudflare Challenge et où trouver les instructions pour son intégration ou sa reconfiguration, afin de maintenir la protection en toute confiance et de garder son fonctionnement sous contrôle.

Conclusion

Foire aux questions sur Cloudflare Challenge

Cloudflare utilise le cookie cf_clearance pour reconnaître un client ayant déjà passé la vérification. L'API CapMonster Cloud le renvoie dans la réponse de getTaskResult.

Pour les requêtes HTTP brutes : envoyez-le dans l'en-tête Cookie: cf_clearance=<value> lors des requêtes suivantes vers le site cible.

Pour l'automatisation du navigateur : injectez-le dans le contexte du navigateur avant de recharger l'URL protégée avec Playwright, Selenium, Puppeteer ou tout autre navigateur headless pour automatiser la résolution de la page Cloudflare « Just a moment ».

Si un cookie cf_clearance n'est plus valide, Cloudflare peut afficher à nouveau le challenge au lieu d'accorder l'accès au contenu protégé. Dans ce cas :

  1. Créez une nouvelle requête createTask en utilisant le nouveau htmlPageBase64 (page HTML « Just a moment » encodée en Base64, affichée avec une réponse 403) provenant de la réponse du challenge
  2. Recevez une nouvelle valeur cf_clearance.
  3. Réessayez la requête vers le site cible avec le nouveau cookie cf_clearance.

Turnstile intègre généralement un widget dans une page ou un flux de formulaire, tandis que Cloudflare Bot Challenge interrompt la requête avec une page interstitielle distincte avant le chargement du site cible.

Pour Cloudflare Challenge, CapMonster Cloud prend en charge deux modes de résultat : il peut renvoyer soit un jeton, soit un cookie cf_clearance.

  • Si vous utilisez l'option basée sur le jeton, la tâche peut être résolue avec les proxies CapMonster Cloud. Dans certains cas spécifiques, vous pouvez également utiliser votre propre proxy.
  • Si vous avez besoin du cookie cf_clearance dans le résultat, vous devez utiliser votre propre proxy lors de la création de la tâche.

Pour les détails d'utilisation des proxies, consultez la documentation de la tâche.

CapMonster Cloud fournit des bibliothèques prêtes à l'emploi pour Python, JavaScript/Node.js et C#. Chaque bibliothèque couvre le cycle complet des requêtes, y compris la création d'une tâche de résolution, l'interrogation du résultat, et renvoie le jeton ou le cookie cf_clearance une fois le challenge résolu.