Cloudflare Challenge
en CapMonster Cloud

Captcha oplossen, installatie op de website en testen.

Prijzen van Cloudflare Challenge-oplossing

Bericht
Prijs (USD)
$ 1.30
1000 tokens
$ 1.30
1000 tokens
Heb je een site geërfd met een ingebouwde captcha of andere bescherming, maar zonder toegang tot de broncode? Dan wil je natuurlijk weten welke oplossing draait, of die goed is ingesteld en hoe je de werking test.

In dit artikel hebben we geprobeerd antwoord te geven op alle belangrijke vragen. De eerste stap bij het oplossen van het vraagstuk is vaststellen welk beveiligingssysteem wordt gebruikt. Daarvoor kun je de lijst met populaire captcha’s en anti-botbeveiligingssystemen raadplegen, met visuele voorbeelden en kernkenmerken die je helpen snel te bepalen waarmee je te maken hebt.

Als je ontdekt dat je website Cloudflare Challenge gebruikt, is de volgende stap om de eigenschappen en werking ervan uitgebreider te bestuderen. In dit artikel vind je ook een handleiding voor het integreren van Cloudflare Challenge, zodat je volledig begrijpt hoe het systeem op je website werkt. Zo kun je niet alleen de huidige bescherming beter doorgronden, maar ook het onderhoud ervan goed plannen.

Wat is Cloudflare Challenge
Wat is Cloudflare Challenge
Cloudflare Challenge (of Interstitial Challenge Pages) is een verificatiesysteem van Cloudflare, ontworpen om websites te beschermen tegen bots, spam en schadelijk verkeer. Wanneer Cloudflare vermoedt dat een verzoek niet van een echte bezoeker komt (bijvoorbeeld door een verdacht IP-adres of ontbrekende JavaScript), wordt een Challenge weergegeven — een 'uitdaging' die moet worden voltooid om te bevestigen dat je een mens bent. Dit type verificatie verschilt van Turnstile, omdat de gebruiker eerst een tussenpagina ziet met het bericht “Just a moment…” en “Verifying you are human. This may take a few seconds.”

Hoe Cloudflare Challenge op te lossen met CapMonster Cloud

Bij het testen van de bescherming met de Cloudflare Challenge is het belangrijk om te controleren of de verificatie correct werkt en verdacht verkeer goed afvangt.
U kunt de geïnstalleerde challenge op uw pagina handmatig testen:
  • Open de pagina in incognitomodus waar de Challenge verwacht wordt en zorg ervoor dat de captcha wordt weergegeven.
  • Probeer onjuiste cf_clearance cookies in de browser te plaatsen (zie details hieronder) — de server moet een fout retourneren.
  • Na succesvolle oplossing van de captcha zou de daadwerkelijke websitepagina zonder verificatie moeten openen.
Voor automatische tests en captcha-herkenning kunt u gespecialiseerde diensten zoals CapMonster Cloud gebruiken — een tool die captcha-parameters ontvangt, deze op zijn servers verwerkt en een kant-en-klare oplossing teruggeeft. Deze oplossing (token of cookie) kan in een formulier of browser worden geplaatst om de verificatie zonder gebruikersinteractie te doorlopen.

Werken met CapMonster Cloud via de API bestaat doorgaans uit de volgende stappen:

Taak aanmakenTaak aanmaken
arrow
API-aanvraag versturenAPI-aanvraag versturen
arrow
Resultaat ontvangenResultaat ontvangen
arrow
Plaatsing van cf_clearancePlaatsing van cf_clearance
arrow
Cloudflare Challenge herkennen met kant-en-klare bibliotheken
CapMonster Cloud biedt kant-en-klare bibliotheken voor Python, JavaScript (Node.js) en C#.
Python
JavaScript
C#
Oplossen van Challenge en plaatsen van cookie
Node.js-voorbeeld voor de volledige cyclus van captcha-herkenning op uw webpagina. Mogelijke benaderingen: HTTP-verzoeken gebruiken om HTML en beveiligingsparameters op te halen, antwoord verzenden en resultaat verwerken. Of met automatiseringstools (zoals Playwright) — open de pagina, wacht op verificatie, stuur parameters via CapMonster Cloud, ontvang resultaat, plaats cookie in browser (voor testen kunt u zowel correcte als incorrecte waarden gebruiken) en bekijk resultaat.

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

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

// Instellingen — vervang door uw waarden
const API_KEY = 'YOUR_API_KEY';
const TARGET_URL = 'https://www.example.com';
const SITE_KEY = 'xxxxx'; // elke string kan worden verzonden
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';

// Proxy-instellingen
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 })
  );

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

  // Creëer context met benodigde User-Agent en venstergrootte (optioneel)
  const context = await browser.newContext({ userAgent: USER_AGENT, viewport: { width: 1280, height: 800 } });

  // Maak pagina en laad doel-URL
  const page = await context.newPage();
  const resp = await page.goto(TARGET_URL, { waitUntil: 'domcontentloaded', timeout: 60000 });
  console.log('Status van initiële aanvraag:', resp?.status());

  // Haal HTML van de pagina op en converteer naar Base64 voor CapMonster
  const htmlBase64 = Buffer.from(await page.content(), 'utf-8').toString('base64');

  // Maak Turnstile-taak om cf_clearance te verkrijgen
  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('Kon cf_clearance niet verkrijgen van CapMonster:', solveResult);
    await browser.close();
    return;
  }
  console.log('cf_clearance verkregen:', cf_clearance);

  // Voeg cf_clearance-cookie toe aan browsercontext
  await context.addCookies([{
    name: 'cf_clearance',
    value: cf_clearance,
    domain: '.' + new URL(TARGET_URL).hostname,
    path: '/',
    httpOnly: true,
    secure: true
  }]);
  console.log('cf_clearance-cookie succesvol toegevoegd aan browser.');

  // Pagina opnieuw openen met cf_clearance ingesteld
  const page2 = await context.newPage();
  const resp2 = await page2.goto(TARGET_URL, { waitUntil: 'domcontentloaded', timeout: 60000 });
  console.log('Status van het verzoek na het instellen van cf_clearance:', resp2?.status());

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

main().catch(err => {
  console.error('Er is een fout opgetreden:', err);
  process.exit(1);
});
  
Cloudflare Challenge verbinden met uw website
Om het gedrag van captcha op uw site te begrijpen, de verificatielogica en hoe u opnieuw kunt verbinden of configureren, raden we deze sectie aan. Hier wordt het configuratieproces uitgelegd, zodat u snel alle details kunt begrijpen.
1. Registreer of log in en koppel uw domein aan Cloudflare.
2. Schakel Challenge in via WAF-regel.
Ga naar: Security → Custom Rules → Create rule
HowTo Connect image 1

Voorbeeldconditie (controleer de gehele loginpagina):
http.request.uri.path contains "/login"
3. Kies actie:
Managed Challenge (aanbevolen) — het systeem bepaalt automatisch of en welke challenge wordt weergegeven.
Stel de overige gewenste instellingen in en klik op Deploy.
Na verificatie ontvangt de gebruiker een cf_clearance-cookie, waardoor Challenge niet opnieuw wordt weergegeven op hetzelfde apparaat en browser.
Background
Mogelijke fouten en debugging
Bug Icon
Ongeldige domein of regelconfiguratie
Challenge wordt niet weergegeven. Controleer of de WAF-regel is gekoppeld aan de juiste URI, pad of host.
Bug Icon
Timeout bij laden pagina of challenge
Browser of client heeft niet gewacht op Cloudflare-response. Verhoog de timeouts in tests en monitoring.
Bug Icon
Herhaalde controle of verlopen cf_clearance
Als de bezoeker een verlopen cf_clearance gebruikt, toont het systeem opnieuw de Challenge.
Bug Icon
Andere verificatie na Challenge
Het gelijktijdig gebruik van Challenge + aangepaste regels kan cycluscontroles veroorzaken. Volg Cloudflare-aanbevelingen om dit op te lossen.
Controle van de robuustheid
Aanbevelingen voor veiligheid en optimalisatie
Configureer WAF-regels en Managed/JS/Interactive Challenge op basis van risiconiveau.
Log beveiligingsevenementen en Challenge-status om blokkeringen en false positives te begrijpen.
Voor transparantie en naleving, voeg links naar <span class="font-bold">Privacybeleid</span> en <span class="font-bold">Gebruiksvoorwaarden</span> van Cloudflare/site toe op Challenge-pagina’s.
Conclusie

Als je een website in beheer krijgt waarop al een captcha of een ander beveiligingssysteem is geïnstalleerd en je geen toegang hebt tot de code, is dat geen probleem! Het is vrij eenvoudig te bepalen welke technologie precies wordt gebruikt. Voor het controleren of alles correct werkt, kun je de herkenningsservice CapMonster Cloud in een geïsoleerde testomgeving gebruiken, zodat je zeker weet dat het tokenverwerkingsmechanisme en de validatielogica correct functioneren.

In het geval van Cloudflare Challenge is het voldoende om het systeem te herkennen, het gedrag te analyseren en te bevestigen dat de beveiliging correct werkt. In het artikel hebben we laten zien hoe je Cloudflare Challenge kunt herkennen en waar je instructies vindt om het te koppelen of opnieuw te configureren, zodat je de bescherming met vertrouwen kunt onderhouden en de werking onder controle kunt houden.

Conclusion

Veelgestelde vragen over Cloudflare Challenge

Cloudflare gebruikt de cookie cf_clearance om een client te herkennen die de verificatie al heeft doorstaan. De CapMonster Cloud API retourneert deze in het antwoord van getTaskResult.

Voor ruwe HTTP-verzoeken: stuur deze mee in de header Cookie: cf_clearance=<value> bij volgende verzoeken naar de doelwebsite.

Voor browserautomatisering: injecteer deze in de browsercontext voordat u de beveiligde URL opnieuw laadt met Playwright, Selenium, Puppeteer of een andere headless browser om de Cloudflare-pagina «Just a moment» automatisch op te lossen.

Als een cf_clearance-cookie niet meer geldig is, kan Cloudflare de challenge opnieuw tonen in plaats van toegang te verlenen tot de beveiligde inhoud. In dat geval:

  1. Maak een nieuw createTask-verzoek aan met de nieuwe htmlPageBase64 (Base64-gecodeerde HTML-pagina «Just a moment», weergegeven met een 403-antwoord) uit het challenge-antwoord
  2. Ontvang een nieuwe cf_clearance-waarde.
  3. Probeer het verzoek naar de doelsite opnieuw met de nieuwe cf_clearance-cookie.

Turnstile integreert doorgaans een widget in een pagina of formulierstroom, terwijl Cloudflare Bot Challenge het verzoek onderbreekt met een aparte tussenpagina voordat de doelsite wordt geladen.

Voor Cloudflare Challenge ondersteunt CapMonster Cloud twee resultaatmodi: het kan een token of een cf_clearance-cookie retourneren.

  • Als u de tokengebaseerde optie gebruikt, kan de taak worden opgelost met CapMonster Cloud-proxies. In sommige specifieke gevallen kunt u ook uw eigen proxy gebruiken.
  • Als u de cf_clearance-cookie in het resultaat nodig heeft, moet u uw eigen proxy gebruiken bij het aanmaken van de taak.

Voor details over het gebruik van proxies, zie de taakdocumentatie.

CapMonster Cloud biedt kant-en-klare bibliotheken voor Python, JavaScript/Node.js en C#. Elke bibliotheek omvat de volledige verzoekcyclus, inclusief het aanmaken van een oplossingstaak, het opvragen van het resultaat, en retourneert het token of de cf_clearance-cookie zodra de challenge is opgelost.