logo
bars

Cloudflare Turnstile
e CapMonster Cloud

Risoluzione CAPTCHA, installazione sul sito web e test.
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 Turnstile, 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 Turnstile, 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 Turnstile
Cos'è Cloudflare Turnstile
Cloudflare Turnstile è un CAPTCHA moderno di Cloudflare che protegge i siti web da azioni automatizzate. Per i visitatori del sito web, la verifica è quasi invisibile, non è necessario completare compiti: di solito è sufficiente un clic sulla casella di controllo, dopo di che il sistema decide se lasciare passare il visitatore o bloccarlo in caso di sospetto bot. A differenza di Cloudflare Challenge, il CAPTCHA Turnstile viene posizionato direttamente sul sito web, non in una finestra separata, di solito nei moduli di accesso o registrazione.

Come risolvere Cloudflare Turnstile tramite CapMonster Cloud

Quando testi form che includono Cloudflare Turnstile devi spesso verificare che la captcha funzioni e sia integrata correttamente.

Puoi verificare manualmente la captcha inserita nel tuo sito.

  • Apri la pagina del form e assicurati che la captcha venga visualizzata.
  • Prova a inviare il form senza risolverla: il server dovrebbe restituire un errore.
  • Dopo una soluzione corretta il form deve essere inviato senza problemi.

Per la risoluzione automatica puoi usare strumenti come CapMonster Cloud, che accetta i parametri della captcha, li elabora sui propri server e restituisce un token pronto all'uso. Inserisci quel token nel form per superare il controllo 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 del token nella paginaInserimento del token nella pagina
arrow
Riconoscimento di Cloudflare Turnstile utilizzando librerie pronte
Il servizio CapMonster Cloud fornisce librerie pronte per un lavoro comodo nei linguaggi Python, JavaScript (Node.js) e C#.
Python
JavaScript
C#
Risoluzione, inserimento token e invio del modulo
Esempio in Node.js per il ciclo completo di riconoscimento CAPTCHA sulla tua pagina web. Approcci possibili: utilizzare richieste HTTP per ottenere HTML e parametri CAPTCHA, inviare la risposta e elaborare il risultato; oppure con strumenti di automazione (ad esempio, Playwright): aprire la pagina, attendere il CAPTCHA, inviare i parametri (per i test è possibile inviare sia dati corretti che errati), ottenere la soluzione tramite il client CapMonster Cloud, inserire il token nel modulo e vedere il risultato.
// npm install playwright @zennolab_com/capmonstercloud-client

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

async function main() {
  // 1. Risoluzione Turnstile tramite CapMonster Cloud
  const cmcClient = CapMonsterCloudClientFactory.Create(
    new ClientOptions({ clientKey: 'YOUR_CAPMONSTER_API_KEY' })
  );

  const turnstileRequest = new TurnstileRequest({
    websiteURL: 'http://tsmanaged.zlsupport.com',
    websiteKey: '0x4AAAAAAABUYP0XeMJF0xoy',
  });

  const result = await cmcClient.Solve(turnstileRequest);
  const token = result.solution.token;
  console.log('Token Turnstile ricevuto:', token);

  // 2. Avvio di Playwright
  const browser = await chromium.launch({ headless: false });
  const context = await browser.newContext();
  const page = await context.newPage();
  await page.goto('http://tsmanaged.zlsupport.com');

  // 3. Compilazione di login e password
  await page.fill('#username', 'your_username');
  await page.fill('#password', 'your_password');

  // 4. Attesa della comparsa del campo token nascosto
  await page.waitForSelector('#token', { state: 'attached', timeout: 60000 });

  // 5. Inserimento del token e rendere visibile il campo
  await page.evaluate((t) => {
    const tokenInput = document.querySelector('#token');
    if (tokenInput) {
      tokenInput.type = 'text';  // rendi visibile il campo
      tokenInput.value = t;      // inserisci il token
      console.log('Token inserito nel campo token');
    } else {
      console.error('Campo #token non trovato');
    }
  }, token);

  // 6. Verifica che il token sia stato effettivamente inserito
  const checkValue = await page.$eval('#token', el => el.value);
  console.log('Verifica del valore del token:', checkValue);

  // 7. Invio del modulo
  await page.click('button[type="submit"]');
  console.log('Modulo inviato con token Turnstile');

  // await browser.close();
}

main().catch(err => console.error(err));
Come connettere Cloudflare Turnstile al tuo sito web
Per navigare con sicurezza nel funzionamento del CAPTCHA sul tuo sito web, comprendere la logica della sua verifica, riconnetterlo o riconfigurarlo, ti consigliamo di studiare questa sezione. Descrive il processo di connessione della protezione: ciò ti aiuterà a comprendere rapidamente tutte le sfumature.

1. Vai alla pagina Cloudflare Turnstile, fai clic su Inizia ora.

2. Registrati al servizio.

3. In Turnstile Widgets, fai clic sul pulsante blu Add Widget.

HowTo Connect image 1

4. Configura Cloudflare Turnstile, specifica:

  • Widget name: nome del CAPTCHA (per comodità, ad esempio Login form).
  • Hostname Management: domini dove il CAPTCHA funzionerà (ad esempio, example.com).
  • Widget Mode:
    • Managed: opzione ottimale, il CAPTCHA decide da solo se mostrare la casella di controllo.
    • Non-interactive: la verifica viene eseguita automaticamente senza clic.
    • Invisible: completamente invisibile.
  • Pre-clearance: imposta su Yes se il sito passa attraverso Cloudflare Proxy (per evitare di ripetere il CAPTCHA).

5. Dopo aver creato il widget, riceverai due chiavi: Site Key e Secret Key.

HowTo Connect image 2

6. Connetti la parte client

1) Connetti lo script Turnstile

Rendering automatico (il widget viene creato automaticamente al caricamento della pagina):

<script src="https://challenges.cloudflare.com/turnstile/v0/api.js" async defer></script>

Controllo programmatico (crei tu stesso il widget tramite JavaScript):

<script src="https://challenges.cloudflare.com/turnstile/v0/api.js?render=explicit" defer></script>

Importante: lo script deve essere caricato dall'URL esatto. Proxy o cache possono causare malfunzionamenti.

2) Crea un contenitore per il widget

Automatico:

<div class="cf-turnstile" data-sitekey="<YOUR_SITEKEY>"></div>

Programmaticamente:

<div id="turnstile-container"></div>

3) Configurazione del widget

Tramite attributi data:

<div class="cf-turnstile"
            data-sitekey="<YOUR_SITEKEY>"
            data-theme="light"
            data-size="normal"
            data-callback="onSuccess">
          </div>

Tramite JavaScript:

const widgetId = turnstile.render("#turnstile-container", {
  sitekey: "<YOUR_SITEKEY>",
  theme: "light",
  size: "normal",
  callback: token => console.log("Token:", token)
});

4) Lavorare con i token

const token = turnstile.getResponse(widgetId);      // ottieni il token
const isExpired = turnstile.isExpired(widgetId);    // verifica la scadenza
turnstile.reset(widgetId);                          // reimposta
turnstile.remove(widgetId);                         // rimuovi
turnstile.execute("#turnstile-container");         // esecuzione manuale

5) Integrazione con il modulo

<form id="my-form" method="POST">
  <input type="hidden" name="cf-turnstile-response" id="cf-turnstile-response">
  <button type="submit">Invia</button>
</form>

<script>
function onSuccess(token) {
  document.getElementById("cf-turnstile-response").value = token;
}
</script>

Esempio di codiceEsempio di codice
arrow

6) Configura la parte server

Processo di verifica lato server:

  • Client: l'utente completa Turnstile sulla pagina → viene creato il token.
  • Il modulo viene inviato: il token insieme ai dati del modulo viene inviato al server.
  • Server: effettua una richiesta POST all'API Siteverify di Cloudflare con il token e il segreto.
  • Cloudflare: restituisce JSON con il risultato (success: true/false) e informazioni aggiuntive (action, hostname, tempo di completamento).
  • Server: decide se consentire o rifiutare l'azione dell'utente.

API Siteverify:

POST
https://challenges.cloudflare.com/turnstile/v0/siteverify

Parametri della richiesta:

  • secret (obbligatorio): chiave segreta Turnstile dal pannello Cloudflare
  • response (obbligatorio): token ricevuto sul client
  • remoteip (facoltativo): indirizzo IP dell'utente (consigliato)
  • idempotency_key (facoltativo): UUID univoco per la protezione contro verifiche ripetute

Proprietà del token:

  • Lunghezza massima: 2048 caratteri
  • Valido per 5 minuti
  • Monouso
  • In caso di scadenza o nuova verifica, l'API restituirà l'errore timeout-or-duplicate

Esempio di verifica in PHPEsempio di verifica in PHP
arrow

Background
Possibili errori e debug
Bug Icon
Parametri errati
Il CAPTCHA non viene visualizzato o restituisce errori come invalid-input-secret, missing-input-response, invalid-input-response. Verifica la validità di sitekey e secret key, nonché le impostazioni nel Dashboard di Cloudflare.
Bug Icon
Timeout della soluzione
Il token è scaduto (valido per 300 secondi) o non è stato ricevuto in tempo. Assicurati di avere una connessione stabile e una corretta integrazione API.
Bug Icon
Token vuoto o errato
Il parametro cf-turnstile-response è mancante o errato. Verifica il trasferimento del token al modulo e al server.
Bug Icon
Risposta success=false
Il token è non valido, scaduto o già utilizzato. Ogni token può essere verificato una sola volta. Abilita il logging delle richieste e risposte Siteverify per l'analisi.
Verifiche della resilienza della protezione
Dopo l'integrazione assicurati che il sistema protegga davvero il sito dalle azioni automatizzate.
Suggerimenti di sicurezza e ottimizzazione
Verifica i token solo sul server, non chiamare mai l'API Siteverify dal frontend: ciò esporrà la tua chiave segreta.
Utilizza variabili d'ambiente o un sistema di gestione dei segreti invece di memorizzare le chiavi nel codice.
Verifica i campi aggiuntivi (<b>hostname</b>, <b>action</b>) per assicurarti che la richiesta provenga dal tuo sito web.
Utilizza HTTPS: tutte le chiamate a Siteverify devono essere effettuate tramite una connessione sicura.
Implementa la gestione degli errori: quando l'API non è disponibile, mostra all'utente un messaggio chiaro senza rivelare dati interni.
Limita l'uso della sitekey per domini.
Aggiungi link alla <b>Informativa sulla privacy</b> e ai <b>Termini di servizio di Cloudflare</b> al modulo se richiesto dalla tua organizzazione o dalla politica sulla privacy.
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 Turnstile, è sufficiente individuare il sistema, analizzarne il comportamento e assicurarsi che la protezione funzioni correttamente. Nell’articolo abbiamo mostrato come riconoscere Cloudflare Turnstile 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