Guide

Détecter les bots sans CAPTCHA : ce qui marche vraiment

Pourquoi le défi a cessé d'être une défense, quels signaux l'ont remplacé, et à quoi ressemble en pratique une installation honnête de détection invisible.

Le défi a cessé de fonctionner avant qu'on cesse de l'utiliser

Un CAPTCHA est un test qui suppose que le résoudre coûte cher à une machine et peu à une personne. Les deux moitiés de cette hypothèse sont tombées.

Résoudre coûte peu aux machines aujourd'hui. Des services commerciaux de résolution acceptent un défi via une API et renvoient le jeton, facturé au millier, et les opérateurs qui s'intéressent à votre site ont déjà cette ligne à leur budget. La vision par ordinateur vient à bout de la plupart des grilles d'images sans aucune aide humaine.

Et résoudre ne coûte plus peu aux personnes. Les grilles se sont durcies précisément parce que les machines se sont améliorées : le coût a donc atterri sur vos clients plutôt que sur l'attaquant. Sur un paiement, ce coût se mesure en commandes abandonnées.

Le défi est donc devenu une taxe sur les vrais utilisateurs qu'un bot déterminé contourne pour une fraction de centime. C'est tout l'argument pour regarder ailleurs.

Ce qui le remplace : des signaux, pas des tests

La détection invisible cesse de demander au visiteur de prouver quoi que ce soit et lit à la place ce que la session vous dit déjà. Trois couches portent l'essentiel du signal.

Comportement. Comment la session interagit avec la page — la forme du mouvement du pointeur, le rythme entre les événements, la façon dont le focus traverse un formulaire. L'automatisation produit des distributions différentes des distributions humaines, et l'écart est le plus grand là où elle s'efforce le plus de paraître humaine.

Transport. La poignée de main TLS et les paramètres HTTP/2 décrivent la pile cliente. Une empreinte JA3 ou JA3N vous dit quelle bibliothèque a établi la connexion, et un navigateur headless pilotant une vraie pile TLS annonce encore une combinaison qu'un vrai Chrome sous Windows ne produit pas. C'est nettement plus difficile à falsifier qu'une chaîne user-agent, car il faut reproduire la pile cryptographique d'un vrai client au lieu de modifier un en-tête.

Réputation. Ce que cette adresse a fait avant — sur votre site, et éventuellement sur ceux des autres. Une adresse n'est pas jugée seulement sur la session que vous avez sous les yeux.

Aucune couche ne suffit à elle seule. Les signaux comportementaux sont minces sur une session qui arrive et soumet aussitôt ; les empreintes de transport sont partagées par tous ceux qui utilisent la même bibliothèque, y compris les légitimes ; la réputation est vide la première fois qu'une adresse apparaît. Le verdict naît de leur combinaison.

Les modes de défaillance qu'il faut connaître

Toute description honnête de la détection invisible inclut ses ratés, car ils sont plus discrets que ceux d'un CAPTCHA et donc plus faciles à manquer.

  • Les vrais utilisateurs soucieux de confidentialité paraissent automatisés. Quelqu'un sur un navigateur verrouillé via un VPN produit des signaux comportementaux minces et une empreinte inhabituelle. Votre liste d'autorisation existe pour cela, et elle doit être réellement tenue à jour.
  • Les adresses de sortie partagées. Les NAT d'entreprise, le CGNAT mobile et les sorties VPN placent des milliers de personnes sans lien derrière une seule adresse. La réputation sur ce type d'adresse doit être pondérée différemment, sinon vous bloquez une entreprise parce qu'une personne de son réseau a lancé un scraper.
  • Les bons bots qui ont l'air mauvais. Le renvoi de webhook de votre prestataire de paiement, votre supervision de disponibilité, l'intégration d'un partenaire — tous automatisés, tous nécessaires. Ils appartiennent à la liste d'autorisation avant que l'application ne s'active, pas après qu'on a signalé une panne.
  • La première apparition. Une adresse toute neuve n'a pas d'historique. C'est exactement à cela que sert une liste de blocage partagée, et c'est aussi pourquoi un système qui ne fait que de la réputation, sans analyse de session, est faible le premier jour.
  • La dérive silencieuse. Un CAPTCHA cassé fait du bruit. Un détecteur qui s'est mis à laisser passer discrètement un nouveau motif de bot ressemble à une semaine calme. Surveillez le taux de blocage rapporté au trafic, pas seulement la disponibilité du tableau de bord.

À quoi ressemble une installation défendable

Classé selon le poids de chaque étape dans le résultat.

Commencez en mode observation. Faites tourner la détection sans application assez longtemps pour voir un cycle hebdomadaire complet, y compris votre nuit la plus calme et votre promotion la plus chargée. Vous cherchez des verdicts qui contredisent des choses que vous savez déjà vraies.

Remplissez la liste d'autorisation avant d'appliquer, pas après. Webhooks de paiement, supervision, intégrations partenaires, vos propres plages de bureau, les robots dont vous voulez être indexé. C'est l'étape qu'on saute et qu'on découvre à trois heures du matin.

Appliquez à la passerelle, pas dans la page. Une décision appliquée en JavaScript est une décision qu'un attaquant peut sauter. L'application a sa place là où la requête est servie.

Fail open sur la plateforme, fail closed sur vos propres règles. Si le service de verdicts est injoignable, le trafic doit passer — une panne qui emporte votre site est pire qu'un bot qui passe. Votre liste de refus, elle, est différente : c'est votre instruction explicite, elle doit survivre.

Gardez les verdicts explicables. Quand quelqu'un conteste un blocage, vous devez voir quels signaux l'ont produit. Un système qui ne renvoie qu'un chiffre vous laisse sans réponse face à un client.

Où se situe Karma

Karma est cette conception mise en produit : un snippet asynchrone, des signaux comportementaux et de transport envoyés à un collecteur en TLS, un verdict rendu contre votre propre base de réputation par locataire et — si vous l'activez — une liste de blocage partagée construite à partir de ce que d'autres locataires ont vu.

L'application se fait sur votre passerelle, et les décisions sont mises en cache localement pour qu'une panne du collecteur ne puisse pas emporter votre site. Vos listes d'autorisation et de refus priment toujours sur le verdict de la plateforme.

L'offre gratuite Detect, c'est le mode observation : 25 000 verdicts par mois, en permanence, sans carte et sans application. C'est exactement l'installation décrite ci-dessus, et c'est la bonne façon de commencer quel que soit votre choix final.

FAQ

Peut-on détecter les bots sans CAPTCHA ?
Oui, et c'est désormais l'approche dominante. La détection invisible lit les signaux comportementaux de la session, les empreintes de transport issues de la poignée de main TLS et des paramètres HTTP/2, ainsi que la réputation de l'adresse, puis rend un verdict sans rien demander au visiteur. Rien n'est affiché : il n'y a donc aucune étape de tunnel où perdre de vrais clients.
Les CAPTCHA sont-ils encore efficaces contre les bots ?
Bien moins que leur diffusion ne le laisse croire. Des services commerciaux de résolution renvoient un jeton via une API pour une fraction de centime, et la vision par ordinateur vient à bout de la plupart des grilles d'images sans aide. Le défi est devenu un coût supporté surtout par les vrais utilisateurs, tandis que les attaquants qui comptent le traitent comme une petite ligne de budget.
Qu'est-ce que le fingerprinting TLS et en quoi aide-t-il ?
La poignée de main TLS expose un ensemble ordonné de suites de chiffrement, d'extensions et de courbes qui varie selon la bibliothèque cliente — résumé en un hachage JA3 ou JA3N. Il identifie la pile qui a établi la connexion : un script qui se dit Chrome mais utilise une bibliothèque TLS Python devient visible. C'est bien plus dur à falsifier qu'un user-agent, car il faut reproduire la pile cryptographique d'un vrai client au lieu de modifier un en-tête.
Quels sont les risques de la détection invisible ?
Principalement des faux positifs sur de vrais utilisateurs qui paraissent automatisés — navigateurs verrouillés, sorties VPN et CGNAT — et sur de bons bots comme les webhooks de paiement et la supervision. Les deux se gèrent avec une liste d'autorisation remplie avant l'activation de l'application, et avec une période d'observation couvrant un cycle hebdomadaire de trafic complet.