Cloudflare Challenge
e CapMonster Cloud

Risoluzione del captcha, installazione sul sito e test.

Prezzi della soluzione Cloudflare Challenge

CAPTCHA
Prezzo (USD)
$ 1.30
1000 gettoni
$ 1.30
1000 gettoni
Hai ereditato un sito con una captcha o un'altra protezione ma senza accesso al codice sorgente? È normale chiedersi quale soluzione sia installata, se sia configurata correttamente e come testarla.

In questo articolo abbiamo cercato di rispondere a tutte le domande principali. Il primo passo per risolvere il problema è capire quale sistema di protezione viene utilizzato. A questo scopo puoi consultare l’elenco dei captcha e dei sistemi di protezione antibot più diffusi, dove trovi esempi visivi e caratteristiche chiave che ti aiutano a identificare rapidamente con cosa hai a che fare.

Se scopri che sul tuo sito viene utilizzato Cloudflare Challenge, il passo successivo è analizzarne più nel dettaglio le proprietà e il funzionamento. In questo stesso articolo puoi anche studiare la guida all’integrazione di Cloudflare Challenge, per comprendere a fondo come opera sul tuo sito. Questo ti permetterà non solo di capire la protezione attuale, ma anche di pianificarne correttamente la manutenzione.

Cos'è Cloudflare Challenge
Cos'è Cloudflare Challenge
Cloudflare Challenge (o Pagine Intermedie di Challenge) è un sistema di verifica di Cloudflare progettato per proteggere i siti web da bot, spam e traffico dannoso. Quando Cloudflare sospetta che una richiesta non provenga da un visitatore reale (ad esempio a causa di un IP sospetto o assenza di JavaScript), mostra un Challenge — cioè una 'prova' che deve essere superata per confermare che sei umano. Questo tipo di verifica è diverso da Turnstile, poiché l'utente vede prima una pagina intermedia con il messaggio “Just a moment…” e “Verifying you are human. This may take a few seconds.”

Come risolvere Cloudflare Challenge con CapMonster Cloud

Durante il test della protezione con Cloudflare Challenge è importante assicurarsi che la verifica funzioni correttamente e blocchi adeguatamente il traffico sospetto.
Puoi testare manualmente il challenge installato sulla tua pagina:
  • Apri la pagina in modalità incognito dove è previsto il Challenge e assicurati che il captcha venga visualizzato.
  • Prova a inserire cookie cf_clearance errati nel browser (vedi dettagli più avanti) — il server dovrebbe restituire un errore.
  • Dopo aver risolto correttamente il captcha, la pagina reale del sito dovrebbe aprirsi senza verifica.
Per test automatici e riconoscimento del captcha, puoi usare servizi specializzati come CapMonster Cloud — uno strumento che riceve i parametri del captcha, li elabora sui propri server e restituisce una soluzione pronta. Questa soluzione (token o cookie) può essere inserita in un form o nel browser per superare la verifica senza intervento dell'utente.

Lavorare con CapMonster Cloud via API di solito prevede i seguenti passaggi:

Creazione della taskCreazione della task
arrow
Invio della richiesta APIInvio della richiesta API
arrow
Ricezione del risultatoRicezione del risultato
arrow
Inserimento di cf_clearanceInserimento di cf_clearance
arrow
Riconoscimento di Cloudflare Challenge con librerie pronte
CapMonster Cloud fornisce librerie pronte per Python, JavaScript (Node.js) e C#.
Python
JavaScript
C#
Risoluzione del Challenge e inserimento del cookie
Esempio in Node.js per l'intero ciclo di riconoscimento captcha sulla tua pagina web. Possibili approcci: usare richieste HTTP per ottenere HTML e parametri di protezione, inviare la risposta e gestire il risultato. Oppure con strumenti di automazione (come Playwright) — aprire la pagina, attendere la verifica, inviare parametri tramite CapMonster Cloud, ottenere il risultato, inserire il cookie nel browser (per test è possibile usare dati corretti o errati) e vedere il risultato.

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

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

// Impostazioni — sostituire con i propri valori
const API_KEY = 'YOUR_API_KEY';
const TARGET_URL = 'https://www.example.com';
const SITE_KEY = 'xxxxx'; // può essere inviata qualsiasi stringa
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';

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

  // Avviare il 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
  });

  // Creare contesto con User-Agent richiesto e dimensione finestra (opzionale)
  const context = await browser.newContext({ userAgent: USER_AGENT, viewport: { width: 1280, height: 800 } });

  // Creare la pagina e caricare URL target
  const page = await context.newPage();
  const resp = await page.goto(TARGET_URL, { waitUntil: 'domcontentloaded', timeout: 60000 });
  console.log('Stato della richiesta iniziale:', resp?.status());

  // Ottenere HTML della pagina e convertire in Base64 per CapMonster
  const htmlBase64 = Buffer.from(await page.content(), 'utf-8').toString('base64');

  // Creare task Turnstile per ottenere 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('Impossibile ottenere cf_clearance da CapMonster:', solveResult);
    await browser.close();
    return;
  }
  console.log('cf_clearance ottenuto:', cf_clearance);

  // Aggiungere cookie cf_clearance al contesto del browser
  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 aggiunto con successo nel browser.');

  // Riaprire la pagina con cf_clearance impostato
  const page2 = await context.newPage();
  const resp2 = await page2.goto(TARGET_URL, { waitUntil: 'domcontentloaded', timeout: 60000 });
  console.log('Stato della richiesta dopo aver impostato cf_clearance:', resp2?.status());

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

main().catch(err => {
  console.error('Si è verificato un errore:', err);
  process.exit(1);
});
  
Come collegare Cloudflare Challenge al tuo sito
Per capire come funziona il captcha sul tuo sito, la logica di verifica e come ricollegarlo o riconfigurarlo, ti consigliamo questa sezione. Descrive il processo di configurazione della protezione, aiutandoti a comprendere rapidamente tutti i dettagli.
1. Registrati o accedi e collega il tuo dominio a Cloudflare.
2. Abilita il Challenge tramite una regola WAF.
Vai a: Security → Custom Rules → Create rule
HowTo Connect image 1

Esempio di condizione (verifica dell'intera pagina di login):
http.request.uri.path contains "/login"
3. Seleziona un'azione:
Managed Challenge (consigliato) — il sistema decide automaticamente se mostrare un challenge e quale.
Imposta le altre opzioni necessarie e clicca su Deploy.
Dopo la verifica, l'utente riceverà un cookie cf_clearance che consente di non mostrare il Challenge nuovamente dallo stesso dispositivo e browser.
Background
Possibili errori e debug
Bug Icon
Dominio errato o configurazione della regola
Il Challenge non viene visualizzato. Controlla che la regola WAF sia applicata al URI, percorso o host corretto.
Bug Icon
Timeout caricamento pagina o Challenge
Il browser o il client non ha atteso la risposta di Cloudflare. Aumenta i timeout nei test e nel monitoraggio.
Bug Icon
Verifica ripetuta o cf_clearance scaduto
Se il visitatore utilizza un cf_clearance scaduto, il sistema mostrerà nuovamente il Challenge.
Bug Icon
Dopo il Challenge segue un'altra verifica
L'uso simultaneo di Challenge + regole personalizzate può causare cicli di verifica. Segui le raccomandazioni di Cloudflare per risolvere.
Verifiche della resilienza della protezione
Suggerimenti di sicurezza e ottimizzazione
Configura regole WAF e Managed/JS/Interactive Challenge in base al livello di rischio.
Registra eventi di sicurezza e stato del Challenge per comprendere i blocchi e identificare falsi positivi.
Per trasparenza e conformità, aggiungi link alla <span class="font-bold">Privacy Policy</span> e ai <span class="font-bold">Termini di utilizzo</span> di Cloudflare/sito nelle pagine con Challenge.
Conclusione

Se ti è capitato un sito con un captcha o un altro sistema di protezione già installato e senza accesso al codice, nessun problema! È piuttosto facile capire quale tecnologia viene utilizzata. Per verificare che tutto funzioni correttamente, puoi usare il servizio di riconoscimento CapMonster Cloud in un ambiente di test isolato, così da assicurarti che il meccanismo di elaborazione dei token e la logica di verifica funzionino correttamente.

Nel caso di Cloudflare Challenge, è sufficiente individuare il sistema, analizzarne il comportamento e assicurarsi che la protezione funzioni correttamente. Nell’articolo abbiamo mostrato come riconoscere Cloudflare Challenge e dove trovare le istruzioni per la sua integrazione o riconfigurazione, in modo da poter mantenere la protezione in modo affidabile e controllarne il funzionamento.

Conclusion

Domande frequenti su Cloudflare Challenge

Cloudflare utilizza il cookie cf_clearance per riconoscere un client che ha già superato la verifica. L'API CapMonster Cloud lo restituisce nella risposta di getTaskResult.

Per richieste HTTP dirette: invialo nell'intestazione Cookie: cf_clearance=<value> nelle richieste successive al sito di destinazione.

Per l'automazione del browser: iniettalo nel contesto del browser prima di ricaricare l'URL protetto con Playwright, Selenium, Puppeteer o qualsiasi altro browser headless per automatizzare la risoluzione della pagina Cloudflare «Just a moment».

Se un cookie cf_clearance non è più valido, Cloudflare può mostrare nuovamente il challenge invece di concedere l'accesso al contenuto protetto. In questo caso:

  1. Crea una nuova richiesta createTask utilizzando il nuovo htmlPageBase64 (pagina HTML «Just a moment» codificata in Base64, mostrata con risposta 403) dalla risposta del challenge
  2. Ricevi un nuovo valore cf_clearance.
  3. Riprova la richiesta al sito di destinazione con il nuovo cookie cf_clearance.

Turnstile in genere incorpora un widget in una pagina o in un flusso di modulo, mentre Cloudflare Bot Challenge interrompe la richiesta con una pagina interstiziale separata prima del caricamento del sito di destinazione.

Per Cloudflare Challenge, CapMonster Cloud supporta due modalità di risultato: può restituire un token o un cookie cf_clearance.

  • Se usi l'opzione basata sul token, l'attività può essere risolta con i proxy CapMonster Cloud. In alcuni casi specifici, puoi anche usare il tuo proxy.
  • Se hai bisogno del cookie cf_clearance nel risultato, devi usare il tuo proxy durante la creazione dell'attività.

Per i dettagli sull'uso dei proxy, consulta la documentazione dell'attività.

CapMonster Cloud fornisce librerie pronte per Python, JavaScript/Node.js e C#. Ogni libreria copre l'intero ciclo di richieste, inclusa la creazione di un'attività di risoluzione, il polling del risultato, e restituisce il token o il cookie cf_clearance una volta risolto il challenge.