Cloudflare Turnstile : fonctionnement et résolution (bientôt disponible)
Cloudflare Turnstile est un captcha qui, en général, ne demande rien au visiteur. Il lance des vérifications dans le navigateur et, dans la plupart des cas, il réussit sans aucun puzzle. Lorsqu'il a un doute, il peut afficher une courte étape interactive. Le widget écrit alors un token dans le formulaire, et le site vérifie ce token auprès de Cloudflare. Le support de Turnstile chez Scarnox arrive bientôt. Ce guide explique le fonctionnement du widget, pourquoi on le confond souvent avec d'autres défis, et les approches générales pour un travail légitime.
Comment le widget est intégré
La page inclut un élément conteneur portant la classe cf-turnstile et un attribut data-sitekey. Le script Turnstile se charge, lance ses vérifications, et ajoute un champ caché nommé cf-turnstile-response. La valeur de ce champ est le token. Le formulaire l'envoie avec le reste des champs, et le backend du site le transmet au point de vérification de Cloudflare avec la clé secrète du site.
Comme pour les autres widgets à token, la vérification a lieu côté serveur. Un formulaire qui accepte n'importe quelle valeur dans ce champ sans la vérifier n'est pas réellement protégé.
Modes et conséquences pour un script
Turnstile peut fonctionner selon plusieurs modes. En mode géré, Cloudflare décide s'il faut afficher une étape interactive. En mode non interactif, le widget ne demande jamais rien au visiteur et affiche seulement un statut. En mode invisible, rien ne s'affiche. Pour un script, le mode change ce que l'on voit sur la page, mais le résultat est le même : un token dans le champ du formulaire, vérifié côté serveur.
Les tokens sont de courte durée et à usage unique. Soumettez le formulaire peu après que le widget a produit le token, et ne réutilisez pas un token qui a déjà été vérifié.
Pourquoi il bloque l'automatisation
Turnstile examine les signaux de l'environnement du navigateur et le comportement de la session. Un navigateur headless par défaut, un ensemble de fonctionnalités du navigateur absent ou incohérent, une session neuve sans historique et une adresse réseau suspecte peuvent tous faire pencher la décision vers un défi ou un blocage. Les signaux appartiennent à la même famille que ceux utilisés par les autres contrôles fondés sur un score, c'est pourquoi les approches sont similaires.
Approches légitimes
Voici les approches qui fonctionnent pour un travail légitime :
- Utiliser un vrai navigateur pour les pages qui chargent Turnstile. Un profil de navigateur normal aux réglages cohérents a moins de chances d'être contesté qu'une version d'automatisation nue. Le guide de détection des navigateurs headless liste les signaux courants.
- Rester dans la session. Conservez les cookies d'une page à l'autre de votre parcours, pour que le visiteur n'apparaisse pas comme nouveau à chaque requête.
- Cadencer vos requêtes. Un rythme régulier, semblable à celui d'un humain, réduit les défis bien plus que n'importe quelle astuce isolée.
- Lire d'abord les règles du site protégé par Cloudflare. Beaucoup de sites protégés publient une API ou un flux. Vérifiez cela avant de construire un parcours navigateur. Le guide sur le scraping des sites protégés par Cloudflare approfondit l'approche.
- Utiliser des clés de test en développement. Cloudflare publie des clés de site de test pour le développement, qui produisent des résultats prévisibles sans vérification réelle. Elles servent à vos propres tests d'intégration, pas au trafic de production.
- Demander au propriétaire. Si vous gérez le site, vous pouvez ajuster les réglages de Turnstile pour les chemins utilisés par vos tests automatisés. Sinon, demandez une liste blanche ou une API.
Ce que ferait un solveur Turnstile
Un solveur Turnstile fondé sur des tokens prend la sitekey et l'URL de la page, produit un token valide pour le champ cf-turnstile-response, et le renvoie à votre code. Votre code écrit le token dans le formulaire et le soumet sans délai. C'est le même schéma que l'intégration PopularCaptcha en production, avec un autre type de tâche.
Scarnox ne résout pas Turnstile en direct pour le moment. Le seul type de tâche disponible aujourd'hui est PopularCaptcha, sans proxy. Turnstile arrive bientôt, et ses détails de requête figureront dans la référence de l'API lors de sa sortie. Ne développez pas sur une interface supposée avant cela.
Erreurs courantes
Les intégrations Turnstile échouent de quelques façons prévisibles. La plus fréquente est d'utiliser un token après son expiration ou après sa vérification. Les tokens sont à usage unique, donc un réessai après un échec d'envoi de formulaire a besoin d'un nouveau résultat de widget, et non de l'ancienne valeur. La deuxième est une sitekey qui appartient à un autre environnement. Une clé de développement sur une page de production, ou l'inverse, provoque un échec de vérification qui ressemble à un bogue de votre code. Vérifiez quelle clé la page utilise avant de déboguer quoi que ce soit d'autre.
Une autre erreur fréquente consiste à traiter une étape interactive comme un échec. En mode géré, Turnstile peut afficher une courte étape à certains visiteurs, et un script qui attend un passage silencieux restera bloqué. Construisez le flux pour attendre le résultat du widget, et pour gérer le cas où il demande davantage.
Enfin, ne figez pas le nom du champ sans le vérifier sur la page en ligne. L'entrée cf-turnstile-response est le standard, mais un site peut envelopper le widget différemment, et lire le formulaire rendu est plus rapide que deviner.
Scrapez de manière responsable
Scraper un site protégé par Turnstile est une tâche courante, et elle demande le même soin que tout autre scraping. Consultez le robots.txt et les conditions d'utilisation. Gardez un faible rythme de requêtes, et ne collectez pas de données personnelles dont vous n'avez pas besoin. Lorsqu'un site propose une API, privilégiez-la. Le guide sur la légalité du web scraping couvre les principales questions.
Se préparer
Créez un compte pour démarrer avec un crédit d'essai gratuit, sans carte bancaire. Lorsque le support de Turnstile sera disponible, vous pourrez le tester sur vos propres pages avant de lancer quoi que ce soit sur un site en ligne.