logo
bars

Cloudflare Challenge
et CapMonster Cloud

Résolution de captcha, installation sur le site et tests.
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/145.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 <b>Politique de confidentialité</b> et les <b>Conditions d'utilisation</b> 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