Hoe een AI-captchasolver werkt: modellen, tokens en grenzen
Een AI-captchasolver is software die machine-learningmodellen gebruikt om namens jou een captcha te beantwoorden. Hij werkt het best bij uitdagingen waarvan het antwoord uit de inhoud zelf te lezen is, zoals vervormde tekst of een raster van afbeeldingen. Bij tokengebaseerde widgets is de taak van het model om een antwoord te produceren dat de server van de site accepteert, en dat is een ander probleem. Deze gids legt beide gevallen uit, waar de grenzen liggen, en wat je van een solverservice daadwerkelijk ontvangt.
Deze gids beschrijft algemene technieken. Hij gaat niet in op de werking van een specifieke dienst. Wat voor jou als ontwikkelaar telt, is het contract: je stuurt de gegevens van een captcha en krijgt een token terug.
Drie families van captcha
De meeste captchas vallen in een van drie families, en AI behandelt elke familie anders.
Inhoudsuitdagingen. De bezoeker leest of herkent iets: vervormde tekens, een reeks huisnummers, verkeerslichten in een raster, een gedraaid voorwerp. Het juiste antwoord zit in het beeld of de audio zelf. Dit is het gebied waar machine learning het sterkst is.
Gedragsscoring. Er is misschien helemaal geen zichtbare uitdaging. De site kijkt hoe de browser zich gedraagt, bekijkt de requestgeschiedenis en geeft de bezoeker een score. reCAPTCHA v3 werkt zo, en het levert een getal op in plaats van een puzzel. Een model kan het antwoord hier niet simpelweg "lezen", want er is geen antwoord om te lezen. De vraag is of de signalen menselijk genoeg lijken.
Tokengebaseerde widgets. Een widget draait in de pagina, voert zijn controles uit en schrijft een token in een verborgen formulierveld. De backend van de site verifieert het token daarna bij de provider. PopularCaptcha werkt zo, en reCAPTCHA v2 en Cloudflare Turnstile ook.
Hoe modellen met inhoudsuitdagingen omgaan
Voor vervormde tekst is de standaardaanpak een optische tekenherkenningsmodel (OCR). Een convolutioneel netwerk, of een op transformers gebaseerd visionmodel, leest het beeld en geeft een reeks tekens terug. Het model wordt getraind op grote sets gegenereerde captchas met bekende antwoorden, zodat het de gebruikelijke vervormingen leert: kronkelingen, ruislijnen, overlappende letters en achtergrondtextuur.
Voor rasters van afbeeldingen is de taak classificatie. Het model bekijkt elke tegel en beslist of die het gevraagde object bevat. De moeilijke gevallen zijn objecten die deels verborgen zijn, aan de rand van een tegel liggen, of dubbelzinnig zijn, zoals een bus die grotendeels buiten beeld valt. De nauwkeurigheid is daar lager, en een goede solver moet beslissen wanneer hij moet gokken en wanneer hij een nieuwe ronde moet aanvragen.
Audio-uitdagingen gebruiken spraakherkenning. Het model transcribeert het fragment, en het antwoord is de transcriptie. Achtergrondgeluid en opzettelijke vervorming zijn de belangrijkste moeilijkheden.
Puzzeluitdagingen, zoals een afbeelding draaien of een stukje op zijn plek schuiven, vragen om een ander soort model. Het model schat een hoek of positie uit het beeld en produceert vervolgens de sleep- of klikactie die daarbij past.
Hoe modellen met scoring en tokens omgaan
Gedragsscoring en tokenwidgets zijn moeilijker op te lossen door de pagina te lezen. De eigen controles van de provider draaien in de browser van de bezoeker, en hun uitkomst hangt af van signalen zoals de browseromgeving, de timing van invoergebeurtenissen en de geschiedenis van de sessie. De solver kan de score of de signalen van buitenaf niet op een bruikbare manier zien.
Voor deze gevallen is de werkbare aanpak een solver die het antwoord teruggeeft dat de provider verwacht, met een pijplijn die geldige tokens maakt. Aan jouw kant is de belangrijke eigenschap eenvoudig: je krijgt een token of een fout, en het token wordt door de site gecontroleerd.
Daarom is de Scarnox-API zo opgebouwd. Je stuurt het tasktype, de sitekey en de paginaurl, en ontvangt een token in het veld solution:
{"errorId": 0, "solution": {"token": "..."}, "cost": ...}
Het token gaat in het formulierveld dat de site verwacht, en het verloopt na ongeveer twee minuten. De gids over de captchasolver-API behandelt het volledige verzoek.
Waar AI helpt en waar het stopt
AI-solvers zijn goed in:
- vervormde tekst consistent lezen, zodra ze voor de captchafamilie zijn afgestemd;
- rasters van afbeeldingen classificeren met een hoge nauwkeurigheid bij duidelijke voorbeelden;
- snel genoeg antwoorden voor een synchroon verzoek;
- falen op een manier die je niets kost, als de solver is gebouwd rond gratis mislukte solves.
Ze zijn zwakker bij:
- puzzels die vaak van ontwerp veranderen, omdat een model dat getraind is op de versie van vorige maand misschien niet meer werkt;
- gedragscontroles, waarbij de uitkomst net zo goed van de omgeving waarin je draait afhangt als van het antwoord;
- elke uitdaging die menselijk oordeel over de inhoud vereist, zoals een vraag naar betekenis of context.
Er is ook een praktische grens die geen enkel model wegneemt. Een captcha is een opzettelijke barrière, en aanbieders passen hun uitdagingen aan. Een solver die vandaag werkt, kan volgende maand falen. Behandel de output van een solver daarom als iets dat je in de gaten houdt, niet als iets waarvan je aanneemt dat het blijft werken.
Een solver kiezen
Vier vragen helpen je elke solverdienst te beoordelen:
- Welke captchatypen ondersteunt hij nu, en welke staan alleen op een roadmap?
- Wat kost een mislukte solve je? Een solver die voor mislukkingen rekent, maakt opnieuw proberen duur.
- Hoe gedraagt hij zich bij een timeout of een trage reactie? Je code heeft een duidelijke fout nodig waarop hij kan reageren.
- Wat moet je in je code veranderen als de captcha verandert? Hoe minder, hoe beter.
Scarnox ondersteunt op dit moment PopularCaptcha, proxyless, live. Andere typen komen eraan, en de gids over captchatypen legt de status van elk type uit.