Scarnox · Blog

Cloudflare Turnstile: come funziona e come risolverlo (in arrivo)

Cloudflare Turnstile è un captcha che di solito non chiede nulla al visitatore. Esegue controlli nel browser, e nella maggior parte dei casi passa senza alcun puzzle. Quando non è sicuro, può mostrare un breve passaggio interattivo. Il widget scrive poi un token nel form, e il sito lo verifica presso Cloudflare. Il supporto Scarnox per Turnstile è in arrivo. Questa guida spiega come funziona il widget, perché viene spesso confuso con altre sfide, e gli approcci generali per il lavoro legittimo.

Come viene incorporato il widget

La pagina include un elemento contenitore con la classe cf-turnstile e un attributo data-sitekey. Lo script di Turnstile viene caricato, esegue i suoi controlli e aggiunge un input nascosto chiamato cf-turnstile-response. Il valore di quell'input è il token. Il form lo invia insieme agli altri campi, e il backend del sito lo spedisce all'endpoint di verifica di Cloudflare insieme alla chiave segreta del sito.

Come gli altri widget a token, la verifica avviene lato server. Un form che accetta qualsiasi valore in quel campo senza controllarlo non è realmente protetto.

Modalità e cosa significano per uno script

Turnstile può funzionare in più modalità. In modalità gestita, Cloudflare decide se mostrare un passaggio interattivo. In modalità non interattiva, il widget non chiede mai nulla al visitatore e mostra solo uno stato. In modalità invisibile non viene mostrato nulla. Per uno script la modalità cambia ciò che vedi nella pagina, ma il risultato è lo stesso: un token nel campo del form, verificato sul server.

I token sono di breve durata e monouso. Invia il form subito dopo che il widget ha prodotto il token, e non riusare un token già verificato.

Perché blocca l'automazione

Turnstile osserva i segnali dell'ambiente del browser e il comportamento della sessione. Un browser headless con impostazioni predefinite, un insieme di funzioni del browser mancante o incoerente, una sessione nuova senza storico e un indirizzo di rete sospetto possono spingere la decisione verso una sfida o un blocco. I segnali sono della stessa famiglia di quelli usati dagli altri controlli basati su punteggio, ed è il motivo per cui gli approcci sono simili.

Approcci legittimi

Questi sono gli approcci che funzionano per il lavoro legittimo:

  1. Usa un browser reale per le pagine che caricano Turnstile. Un profilo browser normale con impostazioni coerenti ha meno probabilità di essere sfidato di una build di automazione spoglia. La guida al rilevamento dei browser headless elenca i segnali più comuni.
  2. Resta nella sessione. Mantieni i cookie tra le pagine del tuo flusso di lavoro, così il visitatore non sembra nuovo a ogni richiesta.
  3. Scandisci le richieste. Un ritmo costante, simile a quello umano, riduce le sfide molto più di qualsiasi trucco singolo.
  4. Leggi prima le regole del sito protetto da Cloudflare. Molti siti protetti pubblicano un'API o un feed. Verificalo prima di costruire un flusso nel browser. La guida allo scraping di siti protetti da Cloudflare approfondisce l'approccio.
  5. Usa chiavi di test in sviluppo. Cloudflare pubblica chiavi di test per lo sviluppo, che producono risultati prevedibili senza un controllo reale. Servono per i test di integrazione, non per il traffico di produzione.
  6. Chiedi al proprietario. Se gestisci tu il sito, puoi regolare le impostazioni di Turnstile per i percorsi usati dai tuoi test automatici. Se non lo gestisci, chiedi una allowlist o un'API.

Cosa fa un solver Turnstile

Un solver Turnstile basato su token prende la sitekey e l'URL della pagina, produce un token valido per il campo cf-turnstile-response e lo restituisce al tuo codice. Il tuo codice scrive il token nel form e lo invia subito. È lo stesso schema dell'integrazione PopularCaptcha attiva, con un tipo di task diverso.

Scarnox non risolve ancora Turnstile in tempo reale. L'unico tipo di task attivo oggi è PopularCaptcha, proxyless. Turnstile è in arrivo, e i suoi dettagli di richiesta saranno nella documentazione API quando sarà disponibile. Non costruire su un'interfaccia presunta prima di allora.

Errori comuni

Le integrazioni Turnstile falliscono di solito in pochi modi prevedibili. Il più comune è usare un token dopo che è scaduto o dopo che è già stato verificato. I token sono monouso, quindi un retry dopo un invio del form fallito richiede un nuovo risultato del widget, non il valore vecchio. Il secondo è una sitekey che appartiene a un altro ambiente. Una chiave di sviluppo su una pagina di produzione, o viceversa, produce un errore di verifica che sembra un bug nel tuo codice. Controlla quale chiave usa la pagina prima di fare qualsiasi altro debug.

Un altro errore frequente è considerare un passaggio interattivo un fallimento. In modalità gestita, Turnstile può mostrare un breve passaggio ad alcuni visitatori, e uno script che si aspetta un passaggio silenzioso si bloccherà. Costruisci il flusso in modo che aspetti il risultato del widget e gestisca il caso in cui il widget chiede di più.

Infine, non fissare il nome del campo senza verificarlo sulla pagina reale. L'input cf-turnstile-response è lo standard, ma un sito può incapsulare il widget in modo diverso, e leggere il form renderizzato è più veloce che indovinare.

Scraping responsabile

Fare scraping di un sito protetto da Turnstile è un lavoro comune, e richiede la stessa cura di qualsiasi altro scraping. Controlla robots.txt e i termini di servizio. Mantieni basso il ritmo e non raccogliere dati personali che non ti servono. Dove un sito ha un'API, preferiscila. La guida su se il web scraping è legale copre le domande principali.

Prepararsi

Crea un account per iniziare con crediti di prova gratuiti, senza carta di credito. Quando il supporto Turnstile sarà disponibile, potrai testarlo sulle tue pagine prima di eseguire qualsiasi cosa su un sito reale.

Prossimi passi