Een CAPTCHA is een eenvoudig idee: zet een taak voor een bezoeker die mensen kunnen oplossen en machines niet, en laat iedereen door die slaagt. Jarenlang was dat een redelijke afweging. Mensen verloren een paar seconden, en de slechtste automatisering werd afgeremd.
Drie dingen veranderden. Machines werden goed in het oplossen van de taken. Mensen raakten er moe van om ze op te lossen. En er verscheen een nieuw soort bezoeker: AI agents die handelen namens echte klanten, en mensen die met AI-assistenten werken. Een test die vraagt "ben je een mens?" heeft voor geen van beiden een goed antwoord.
Proof of Actor kiest een andere aanpak. In plaats van elke bezoeker te testen, vertelt het je applicatie wie of wat handelt, met het bewijs achter de conclusie, en laat het je code beslissen of een challenge überhaupt nodig is.
De korte versie
| CAPTCHA | Proof of Actor | |
|---|---|---|
| Hoofdvraag | Kan deze bezoeker slagen voor een mensentest? | Wie of wat handelt, en wat is het bewijs? |
| Wie draagt de kosten | Elke bezoeker die de challenge ziet | Niemand; classificatie gebeurt op de achtergrond |
| Mogelijke antwoorden | Slagen of mislukken | Human, Human + AI, Agent of Unknown, plus een basis |
| Legitieme AI-agents | Gestopt, of gedwongen om de test te omzeilen | Herkend, en naar de juiste ervaring gerouteerd |
| Mensen die AI-assistenten gebruiken | Behandeld als elke andere bezoeker | Een aparte klasse, Human + AI |
| Onduidelijk verkeer | Moet dezelfde test halen | Unknown, met een fallback die je per route kiest |
| Waar het geldt | De pagina's waar je het plaatst | Elke route die je integratie afdekt |
| Standaardgedrag bij installatie | Zichtbare challenge | Observatie; niets verandert totdat je een policy toevoegt |
Een test versus bewijs
Een CAPTCHA levert één stukje informatie op: de bezoeker is geslaagd of gezakt. Het vertelt je niet wie de bezoeker was, of die met een assistent werkte, of hoe zeker je moet zijn van het resultaat. En het levert dat stukje op door de bezoeker werk te laten doen.
Proof of Actor levert een classificatie en de evidence basis daarvan. Een Verified resultaat betekent dat een controleerbare verklaring is gevalideerd, zoals een request signature die is gecontroleerd tegen een gepubliceerde key. Een Declared resultaat betekent dat een client of je eigen applicatie het heeft verklaard. Een Inferred resultaat wordt als inferentie gelabeld. Unknown betekent dat het bewijs geen vaststelling ondersteunt. Je team kan elk resultaat lezen en zien waarop het rust, en de bezoeker hoeft niets te doen.
De kosten van iedereen uitdagen
Elke challenge is frictie die je beste gebruikers oplegt om je slechtste gebruikers af te remmen. Op een aanmeldpagina kost dat conversies. Bij een checkout kost het omzet. Op toegankelijkheidsniveau kan het mensen volledig buitensluiten. Teams accepteren die kosten alleen omdat ze geen beter signaal hebben over wie zich aan de andere kant bevindt.
Met actorcontext verandert de afweging. Je kunt de normale ervaring behouden voor sessies die door mensen worden geleid, de challenge overslaan waar het bewijs sterk is, en hem reserveren voor de smalle set gevallen waar hij nog waarde toevoegt: bijvoorbeeld een Unknown resultaat bij een wachtwoordwijziging of een actie met hoge waarde. De meeste bezoekers zien nooit meer een challenge.
Legitieme agents hebben een pad nodig, geen puzzel
Een CAPTCHA is gebouwd om software te stoppen. Dat was logisch toen bijna alle software die je pagina's bezocht ongewenst was. Dat is nu niet meer zo.
Vandaag kan een assistent je plannen vergelijken voor een klant, kan een agent via je app een meeting boeken, en kan een AI-client je MCP server aanroepen om een taak af te ronden. Hen stoppen betekent je klanten stoppen. Ze door pagina's en puzzels dwingen die voor mensen zijn gebouwd, creëert fragiele automatisering die bij elke herontwerp breekt.
Proof of Actor herkent agents, en met gesigneerde requests kan het verifiëren welke key en welke operator erachter zitten. Je applicatie kan dan iets beters doen dan een challenge: een gestructureerde API bedienen, een agentvriendelijke flow aanbieden, of een rate limit toepassen die is afgestemd op automatisering. De gids over AI agents gestructureerde content aanbieden laat zien hoe.
Een geverifieerde identiteit is niet hetzelfde als toestemming. Een geldige signature vertelt je welke key de request heeft ondertekend; of die agent een actie mag uitvoeren is je authorization decision. Proof of Actor houdt die twee vragen gescheiden.
Mensen die met AI werken zijn nog steeds je gebruikers
Een persoon die met een assistent een supportbericht opstelt, of een formulier invult met hulp van AI, is een klant. Een mensentest heeft daar niets nuttigs over te zeggen: ze slagen, of ze worden geblokkeerd omdat hun gedrag ongebruikelijk lijkt.
Proof of Actor geeft hen hun eigen klasse, Human + AI, gerapporteerd wanneer hulp wordt verklaard of zichtbaar is via een ondersteunde integratie. Daarmee kun je AI-opgestelde inzendingen labelen voor het juiste team, bestuderen hoe ondersteunde gebruikers door je product bewegen, en hun ervaring soepel houden. Lees meer in de glossary-entry AI-assisted interaction.
De onzekere gevallen bewust afhandelen
Sommig verkeer blijft altijd onduidelijk. Een CAPTCHA behandelt dat overal op dezelfde manier: iedereen doet de test.
Proof of Actor geeft Unknown terug als een eersteklas resultaat, nooit standaard als mens behandeld en nooit standaard als kwaadaardig behandeld. Jij kiest de fallback per route, afgestemd op risico:
- Openbare pagina's en documentatie: allow, en behoud de standaardervaring.
- Aanmeld- en contactformulieren: allow, met je gebruikelijke abuse controls.
- Accountwijzigingen: behoud je bestaande re-authentication flow.
- Acties met hoge impact: route to review, of pas hier een challenge toe als je dat nog wilt.
Dit is waar een challenge nog steeds zijn plek kan verdienen: als één bewuste policy-uitkomst op een gevoelige route, niet als tol voor elke bezoeker.
Waar de beslissing leeft
Een CAPTCHA-widget beslist op het moment dat die wordt getoond, op de pagina waar je hem hebt geplaatst, en slechts één keer.
Met Proof of Actor beslist je applicatie, op elke route die je integratie afdekt: server middleware, Next.js, de edge, een goedgekeurde browserintegratie, een generieke HTTP API of je MCP server. Policies gebruiken de actorclass en de basis samen: allow, adapt, challenge, review of rate-limit. Ze leven in je code, naast de rest van je bedrijfslogica, en je kunt ze wijzigen zonder een pagina opnieuw te ontwerpen.
Uitrollen
Proof of Actor begint in observatiemodus. Installatie verandert niets aan wat je gebruikers zien. Een verstandige weg weg van blanket challenges ziet er zo uit:
- Observe. Laat je bestaande challenges staan en voeg Proof of Actor toe. Let op de actor mix en de Unknown-rate op elke route.
- Compare. Kijk per uitgedaagde route hoeveel challenges menselijke sessies, AI-ondersteunde gebruikers en geverifieerde agents raken.
- Preview. Schrijf een policy die de challenge overslaat waar het bewijs sterk is en hem behoudt voor Unknown op gevoelige acties. Bekijk het effect op echt verkeer.
- Enforce. Zet de policy één route tegelijk aan, met een gedocumenteerde fallback en een rollback switch.
De gids over actorbewuste policies veilig uitrollen behandelt elke stap in detail.
Wanneer een CAPTCHA nog steeds zinvol is
Challenges blijven op een paar plekken een bruikbaar hulpmiddel: een piek van onduidelijk verkeer tegen een gevoelige actie, een formulier dat actief wordt misbruikt, of een route waarvoor je nog geen ander signaal hebt. Proof of Actor vraagt je niet om dat hulpmiddel weg te gooien. Het geeft je de context om het alleen te gebruiken waar het helpt.
Aan de slag
Proof of Actor bevindt zich in private beta. Geselecteerde founding developer teams kunnen tot 12 maanden gratis toegang krijgen binnen overeengekomen gebruikslimieten, met directe ondersteuning van het team dat het bouwt. Vraag vroege toegang aan en vertel ons welke routes je vandaag uitdagt.