Cloudflare Turnstile a été lancé en 2022 avec un pitch bien rodé : l’alternative « privacy-first » à reCAPTCHA. Fini les grilles de feux tricolores, fini le tracking Google qui engraisse la machine publicitaire, juste un petit widget discret qui vérifie que tu es humain sans transformer ton navigateur en cobaye. Pour les développeurs qui voulaient sortir de reCAPTCHA sans se retrouver dans une solution tout aussi invasive, ça sonnait vraiment bien.
Sauf qu’un article publié sur hacktivis.me a mis le doigt sur quelque chose de gênant : Turnstile exige que WebGL soit actif dans le navigateur. Si l’API est désactivée ou bloquée par des extensions de protection de la vie privée, le widget refuse de valider. Or, WebGL est l’un des vecteurs de fingerprinting les plus robustes qui existent côté client. C’est le genre de détail technique qui ne figure pas en gros dans la doc officielle.
Alors on creuse : comment fonctionne le fingerprinting via WebGL, pourquoi Cloudflare s’y appuie, et est-ce qu’on peut encore qualifier Turnstile de solution « privacy-respecting » sans un brin de mauvaise foi ?
TL;DR — Turnstile exige WebGL, une API qui permet d’identifier un navigateur de manière quasi-unique via les caractéristiques matérielles du GPU. Ce n’est pas forcément malveillant, mais ça contredit frontalement le discours « privacy-first » de Cloudflare. Si tu intègres Turnstile sur un site sensible, ouvre les yeux avant de cocher la case « conforme RGPD ».
La promesse Turnstile, version non-marketée
Quand Cloudflare a présenté Turnstile, la comparaison avec reCAPTCHA v3 était le cœur de l’argument. Google, avec reCAPTCHA, collecte des signaux comportementaux qui alimentent son graphe publicitaire. C’est documenté, critiqué, et ça reste une vraie douleur pour quiconque prend la conformité RGPD au sérieux. Sur ce point, Cloudflare a effectivement une meilleure posture : leur modèle économique ne repose pas sur la revente de données comportementales à des régies.
Techniquement, Turnstile analyse une combinaison de signaux côté client — timing des événements, caractéristiques du navigateur, comportement de navigation — pour calculer un score de confiance. Si le score est suffisant, l’utilisateur passe sans friction visible, avec juste un badge vert qui clignote deux secondes. C’est le principe du « non-interactive challenge », et c’est objectivement une meilleure expérience utilisateur que de faire identifier des feux de circulation pendant trente secondes.
Le problème, c’est que « privacy-respecting » est une affirmation auto-déclarée. Il n’existe pas de label indépendant qui certifie qu’un outil anti-bot ne collecte pas de données identifiantes. C’est Cloudflare qui le dit, sur la base de leur propre politique de confidentialité — qui peut changer, et qui ne liste pas exhaustivement les signaux techniques collectés. Et quand on regarde ce que Turnstile exige réellement du navigateur pour fonctionner, certains de ces signaux sont particulièrement chargés.
WebGL fingerprinting : comment on trace un navigateur avec son GPU
WebGL (Web Graphics Library) est une API JavaScript qui donne au navigateur accès au GPU de la machine pour du rendu 3D. Utile pour les jeux en ligne, les visualisations de données interactives, ou encore les expériences immersives. Et aussi, malheureusement, pour identifier un utilisateur avec une précision redoutable.
Le fingerprinting WebGL repose sur un fait simple : le rendu graphique n’est pas identique d’une machine à l’autre. La combinaison GPU + driver + système d’exploitation produit des artefacts de précision flottante légèrement différents. Deux techniques se combinent pour créer une empreinte :
DÉCOUVREZ NOS RÉALISATIONS

Boucherie Foulon
Site vitrine WordPress pour un artisan boucher a Vaiges (53). Photographie, mise en valeur des produits et communication web.
Voir le projet →- WebGL Renderer/Vendor : via
getParameter(RENDERER), on récupère directement la chaîne d’identification du GPU. Exemple :"ANGLE (NVIDIA GeForce RTX 3080 Direct3D11 vs_5_0 ps_5_0)". C’est grossier mais immédiatement utile. - Canvas WebGL : on demande au GPU de rendre une scène 3D précise, on lit les pixels résultants et on calcule un hash. Beaucoup plus précis, quasi-unique par configuration matérielle.
// Exemple simplifié de collecte d'empreinte WebGL
const canvas = document.createElement('canvas');
const gl = canvas.getContext('webgl');
const renderer = gl.getParameter(gl.RENDERER);
const vendor = gl.getParameter(gl.VENDOR);
// "ANGLE (NVIDIA GeForce RTX 3080 Direct3D11 vs_5_0 ps_5_0)"
console.log(renderer, vendor);
Des outils comme EFF’s Cover Your Tracks ou AmIUnique.org confirment empiriquement que WebGL contribue de manière significative à l’unicité d’une empreinte navigateur. C’est précisément pour ça que Tor Browser et Firefox en mode privacy.resistFingerprinting normalisent délibérément les valeurs retournées par ces API — ils renvoient des données génériques pour noyer le poisson dans la masse.
Si Turnstile refuse de fonctionner sans WebGL actif, c’est un signal fort : l’API n’est pas là pour des raisons de rendu visuel. Elle est là pour caractériser le navigateur. Appeler ça autrement serait du mauvais esprit — ou du bon marketing.
Ce que dit Cloudflare — et ce qu’il ne dit pas
La documentation officielle de Turnstile affirme qu’il « n’utilise pas de techniques de fingerprinting invasives ». Mais exiger WebGL comme prérequis fonctionnel, c’est précisément demander la disponibilité d’un vecteur de fingerprinting parmi les plus puissants du navigateur. Ces deux affirmations coexistent dans la même documentation sans que Cloudflare semble trouver ça problématique.
Ce n’est pas parce que la finalité déclarée est la sécurité anti-bot que l’outil utilisé cesse d’être un outil de fingerprinting. Les deux ne sont pas mutuellement exclusifs.
Est-ce que Cloudflare construit et stocke une empreinte WebGL persistante par utilisateur à des fins de tracking publicitaire ? Probablement pas — ce n’est pas leur modèle. Mais utiliser WebGL pour renforcer la fiabilité du score de confiance — en comparant l’empreinte à un profil de « navigateur légitime » — c’est techniquement du fingerprinting, indépendamment de l’intention. La finalité est la sécurité, soit. Le mécanisme, lui, reste le même que celui utilisé par les trackers publicitaires les plus agressifs.
Ce que ça change concrètement si tu intègres Turnstile
Premier effet concret : les utilisateurs qui ont désactivé WebGL — via une extension comme CanvasBlocker, via Firefox privacy.resistFingerprinting, ou via les paramètres renforcés de Tor Browser — vont voir Turnstile échouer silencieusement. Pas de message d’erreur explicite, juste un widget qui tourne indéfiniment ou qui ne valide jamais. Ces utilisateurs ne rempliront pas ton formulaire, ne finaliseront pas leur commande, et n’enverront pas de ticket support pour te dire pourquoi.
C’est un taux d’échec invisible, le pire type. Sur une boutique en ligne avec un tunnel de conversion serré, même 0,5% d’abandons supplémentaires sur la page de checkout, c’est de l’argent qui part sans qu’aucun outil d’analytics ne l’identifie correctement comme lié à l’anti-bot.
Deuxième effet : la zone grise réglementaire. Le RGPD impose un consentement explicite pour toute collecte de données permettant l’identification d’un utilisateur. Si Turnstile utilise WebGL d’une façon qui contribue à construire une empreinte identifiante — même à des fins de sécurité — on est dans un territoire que peu d’intégrateurs ont pris la peine de faire auditer par leur DPO. Dans les pays comme l’Allemagne ou les Pays-Bas, où les autorités de contrôle sont particulièrement actives sur ces sujets, c’est une exposition non nulle.
Troisième effet, plus technique : si tu utilises une Content Security Policy (CSP) stricte sur ton site, Turnstile va nécessiter des exceptions pour plusieurs sources Cloudflare. Ce n’est pas rédhibitoire, mais c’est du travail supplémentaire qui ne figure pas dans le « quick start » de la documentation.
WESTCODE BY LEB
Studio web en Mayenne — On crée des outils numériques qui transforment
Les alternatives qui valent vraiment le détour
Si la vie privée de tes utilisateurs est une vraie contrainte — audience technique, secteur sensible, conformité RGPD stricte — voici ce qui existe :
- Friendly Captcha : solution européenne (Allemagne), RGPD-native par conception, basée sur un proof-of-work côté client. Aucun cookie, aucune donnée personnelle transmise. Le meilleur choix pour les cas où la conformité prime sur tout le reste.
- Altcha : open-source, auto-hébergeable, proof-of-work également. Si tu gères toi-même ton infrastructure d’hébergement, c’est l’option la plus propre — zéro dépendance externe, zéro donnée qui sort de ton serveur.
- Honeypot + rate limiting côté serveur : pas glamour, mais couvre 90% des bots de masse sans aucun JavaScript tiers. Un champ caché, un compteur de requêtes par IP, et la plupart des spambots passent à la trappe.
- hCaptcha : similaire à Turnstile en termes d’interface, plus transparent sur le modèle économique que Google, mais n’est pas exempt de tout reproche sur le fingerprinting non plus.
Pour la majorité des sites, la combinaison honeypot + rate limiting couvre 80 à 90% des attaques de bots sans aucune dépendance externe. Avant de brancher un widget tiers, vérifie si tu en as vraiment besoin.
Mon avis tranché : Turnstile reste utile, mais arrêtons de le vendre comme « privacy-first »
Turnstile est objectivement meilleur que reCAPTCHA v3 dans la majorité des cas. L’expérience utilisateur est supérieure, le modèle économique de Cloudflare n’est pas fondé sur la revente de données comportementales, et la friction introduite est minimale. Si tu construis un site web pour une PME qui veut se débarrasser de Google reCAPTCHA, Turnstile est un choix raisonnable.
Mais « meilleur que reCAPTCHA » et « privacy-respecting » ne sont pas synonymes, et Cloudflare devrait avoir l’honnêteté de faire cette distinction clairement. Exiger WebGL et documenter l’usage qui en est fait de manière aussi vague, c’est laisser les intégrateurs assumer une exposition réglementaire que Cloudflare s’est bien gardé de préciser dans ses landing pages marketing.
Ma position : si ton audience inclut des utilisateurs techniquement avertis, si tu opères dans un secteur sensible, ou si tu veux une conformité RGPD solide, Friendly Captcha ou Altcha sont des choix plus défendables. Si tu veux le meilleur rapport facilité d’intégration / efficacité anti-bot sans te poser trop de questions, Turnstile fait le job — mais cesse de prétendre que c’est de la privacy, c’est juste moins pire.




