Trois couches de défense, quatre surfaces, aucun bot ne gagne
La vérification est le cœur de Caputchin. Les portes travaillent ensemble ; les surfaces sont la façon dont tu les branches sur ton stack. Le chemin par défaut, c'est le widget plus un appel de verify depuis ton backend. Les autres surfaces sont là quand le défaut ne convient pas.
Comment une vérification se déroule.
Le visiteur ouvre ta page. Le widget exécute les portes. Un jeton signé passe vers ton backend. Ton backend nous demande de le confirmer.
- VisiteurOuvre ta page
- Widget CaputchinSe charge dans ta page
- Anti-triche de jeuTourne dans un iframe en bac à sable
- Ton backendReçoit le jeton enveloppé
- /siteverifyCaputchin confirme le jeton
Chaque couche renchérit une attaque différente.
Aucune couche seule n'est censée battre toutes les attaques à elle seule. Le but, c'est la composition : le temps qu'une requête atteigne le jeu, elle a déjà payé la taxe de chaque porte devant elle. Carte honnête ci-dessous.
| Motif d'attaque | Proof of work | Instrumentation du navigateur | Anti-triche de jeu |
|---|---|---|---|
Scripts curl et fetchDes scripts HTTP nus qui frappent directement ton endpoint. | Répond à cette attaque | ||
Navigateurs headlessPuppeteer, Playwright ou Selenium tournant en arrière-plan. | Répond à cette attaque | ||
Fermes de bots à vrais navigateursDe vraies instances Chrome sur des serveurs loués, parfois pilotées par des humains. | Répond à cette attaque | Répond à cette attaque | |
Solveur en tant que serviceDes fermes de résolution payantes qui prennent un défi et renvoient la réponse, souvent avec de la main-d'œuvre humaine bon marché. | Répond à cette attaque | Répond à cette attaque | |
Modèles d'IA de pointeDes modèles de vision et d'agent qui lisent des grilles d'images, résolvent des énigmes d'OCR et passent les vieux CAPTCHA en quelques millisecondes. | Répond à cette attaque |
- Scripts curl et fetchDes scripts HTTP nus qui frappent directement ton endpoint.Couches qui y répondent
- Instrumentation du navigateur
- Navigateurs headlessPuppeteer, Playwright ou Selenium tournant en arrière-plan.Couches qui y répondent
- Instrumentation du navigateur
- Fermes de bots à vrais navigateursDe vraies instances Chrome sur des serveurs loués, parfois pilotées par des humains.Couches qui y répondent
- Proof of work
- Anti-triche de jeu
- Solveur en tant que serviceDes fermes de résolution payantes qui prennent un défi et renvoient la réponse, souvent avec de la main-d'œuvre humaine bon marché.Couches qui y répondent
- Proof of work
- Anti-triche de jeu
- Modèles d'IA de pointeDes modèles de vision et d'agent qui lisent des grilles d'images, résolvent des énigmes d'OCR et passent les vieux CAPTCHA en quelques millisecondes.Couches qui y répondent
- Anti-triche de jeu
Plus qu'un jeu. Un moteur de vérification.
Un tout petit jeu varié que les humains jouent en quelques secondes et apprécient. En dessous, il fait tourner le même manuel anti-triche que les jeux multijoueurs compétitifs utilisent pour attraper les tricheurs : nos serveurs mettent en place chaque manche avant que tu joues (autorité serveur) et la re-simulent après (rejouabilité déterministe), si bien que le jeu ne peut pas être falsifié, seulement joué. C'est la couche qu'aucun autre CAPTCHA n'a, et la raison pour laquelle Caputchin existe.
Configuration faisant autorité côté serveur
- Un ticket signé à usage unique (fenêtre de 30 minutes) frappe la manche. Dépense-le une fois et il ne peut plus jamais être rejoué.
- Le jeu et sa graine aléatoire sont choisis sur nos serveurs, jamais dans le navigateur, si bien que rien côté client ne peut sélectionner une cible plus facile.
- Un jeu différent du pool à chaque fois. Un solveur ne sait jamais lequel il va affronter, donc il ne peut pas se préentraîner.
Le même modèle qu'un serveur de jeu compétitif : le client n'envoie que des entrées, jamais le verdict.
Rejouabilité déterministe
- Tes entrées exactes sont rejouées sur nos serveurs sous la même graine, dans un isolat scellé sans réseau et avec un budget de temps strict.
- Le réussi ou échoué est recalculé par cette rejouabilité, jamais pris dans le navigateur.
- Le code de chaque jeu est vérifié par hachage avant de tourner, si bien que l'artefact ne peut pas être échangé sous toi.
Bâtie sur le même déterminisme dont dépend le multijoueur en lockstep : la manche est re-simulée depuis la graine pour confirmer qu'elle a vraiment été jouée.
Mis en bac à sable dans ta page
Un iframe isolé sans réseau et sans portée sur tes cookies, ton stockage ou ton DOM.
Variété de jeux
Des sites différents reçoivent des jeux différents, et le catalogue ne cesse de grandir.
Rejouabilité scellée
La rejouabilité tourne sans réseau et avec un budget CPU strict. Rien n'entre ni ne sort.
Code inviolable
Chaque artefact de jeu est vérifié par hachage avant qu'une seule image ne tourne.
Pas de profilage
On ne surveille ni ta souris ni ton timing. On rejoue la manche à la place.
Deux portes de plus, empilées à côté
L'anti-triche de jeu ne travaille jamais seul. Une porte de proof of work et l'instrumentation du navigateur tournent avec lui, chacune renchérissant un motif d'attaque différent. Composées en série, chaque couche que l'attaquant atteint a déjà payé une taxe.
Surfaces d'intégration
Quatre façons de mettre la vérification devant un visiteur. Choisis celle qui colle à la forme de ton code, de ton stack ou de ton équipe.
Mets la vérification en ligne sur une seule clé de site. Gratuit.
Inscris-toi, frappe une clé de site, pose le widget sur un formulaire. Passe à un plan supérieur plus tard quand tu as besoin d'une fonctionnalité d'un niveau plus haut.
Commencer gratuitement