Hoe reCAPTCHA v2 werkt en hoe je het oplost (binnenkort beschikbaar)
reCAPTCHA v2 is de klassieke captcha van Google. Het toont een vakje met het label "Ik ben geen robot" en voegt, wanneer het niet zeker is van de bezoeker, een beeldopdracht toe. Een solver daarvoor moet een geldig antwoordtoken maken dat de site bij Google kan verifiëren. Ondersteuning van reCAPTCHA v2 bij Scarnox komt binnenkort beschikbaar. Deze gids legt uit hoe de widget werkt, welke algemene aanpakken mensen vandaag gebruiken, en wat je van een tokengebaseerde solver kunt verwachten.
Scarnox lost reCAPTCHA v2 nog niet live op. Het enige live tasktype is vandaag PopularCaptcha, proxyless. Als je project nu reCAPTCHA v2 nodig heeft, zijn de onderstaande aanpakken de realistische opties.
Hoe de widget werkt
De pagina bevat een container met het attribuut data-sitekey. Die sitekey identificeert de site bij Google. Wanneer de widget laadt, draait hij controles in de browser, kijkt naar het gedrag van de bezoeker, cookies en geschiedenis, en stuurt een risicobeoordeling naar Google.
Als de beoordeling laag risico is, vinkt het vakje zichzelf aan en schrijft de widget een token in een verborgen veld met de naam g-recaptcha-response. Als de beoordeling hoger risico is, ziet de bezoeker een beeldopdracht, zoals tegels selecteren met een bepaald voorwerp. Het doorstaan van de opdracht schrijft ook het token.
De backend van de site stuurt dat token vervolgens naar het verificatie-eindpunt van Google, samen met de geheime sleutel van de site. Google antwoordt met succes of mislukking. Omdat de verificatie op de server gebeurt, is een formulier dat een token accepteert zonder het bij Google te controleren, helemaal niet beschermd door reCAPTCHA.
Waarom het wordt gemarkeerd
Het vinkje is een risicobeslissing, geen puzzel. De gebruikelijke triggers zijn:
- een uitbarsting van requests vanaf één IP-adres;
- een nieuwe browsersessie zonder cookies of geschiedenis;
- een browseromgeving die geautomatiseerd lijkt, zoals een standaard headless-opzet;
- een invoerpatroon dat niet lijkt op een persoon die de muis beweegt of typt.
Het begrijpen van deze triggers is belangrijker dan de widget zelf. Als je verkeer het vinkje niet activeert, zie je de beeldopdracht nooit.
Algemene aanpakken die vandaag werken
Deze aanpakken worden breed gebruikt, en het zijn eerlijke methoden. Ze verminderen hoe vaak een uitdaging verschijnt bij legitiem werk.
- Houd echte sessies aan. Hergebruik cookies en een consistent browserprofiel gedurende een sessie, in plaats van op elke pagina opnieuw te beginnen.
- Stem je requests af. Een gestaag, rustig tempo lijkt veel meer op een persoon dan een uitbarsting.
- Gebruik een echte browser voor de widget. Een volledige browser met normale instellingen wordt minder snel gemarkeerd dan een uitgeklede headless-opzet. De gids over headless browserdetectie somt de gebruikelijke signalen op.
- Vraag om een uitzondering of een testsleutel. Als de site van jou is, gebruik dan de gepubliceerde testsleutels van Google in staging. Zo niet, vraag de eigenaar om een allowlist.
- Zet een mens in de lus. Voor taken met een laag volume kan een mens het vinkje invullen en het token doorgeven. Dat is traag maar betrouwbaar.
Deze aanpakken garanderen niet dat er nooit een uitdaging verschijnt. Ze verminderen de frequentie, en dat houdt een legitiem proces stabiel.
Wat een tokengebaseerde solver doet
Een tokengebaseerde solver voor reCAPTCHA v2 doet wat PopularCaptcha vandaag doet. Hij neemt de sitekey en de paginaurl, maakt een geldig g-recaptcha-response-token, en geeft dat aan je code terug. Je code zet het token dan in het formulier en verstuurt het voordat het verloopt.
Scarnox documenteert het tasktype en eventuele extra velden in de API-referentie zodra reCAPTCHA v2-ondersteuning wordt uitgebracht. Tot die tijd bouw je niet op een aangenomen interface. Het verzoek zal lijken op het PopularCaptcha-voorbeeld, maar controleer de documentatie voor de exacte waarden.
Checklist voor een reCAPTCHA v2-taak
Wanneer je een taak plant die een reCAPTCHA v2-formulier raakt, controleer dan deze punten:
- Is de site van jou? Gebruik dan testsleutels in staging en houd productietests minimaal.
- Is de taak legitiem? Openbare dataverzameling en je eigen workflows zijn dat; accountmisbruik en spam zijn dat niet.
- Is de frequentie laag genoeg dat het vinkje rustig blijft?
- Heb je een plan voor de beeldopdracht, hetzij een mens, hetzij een solver zodra die live is?
- Controleer je het verificatieresultaat aan de serverkant, en niet alleen of er een token bestaat?
Veelgemaakte fouten
De meest voorkomende storing bij een reCAPTCHA v2-integratie is een token dat de site weigert, ook al ziet het er correct uit. Drie oorzaken verklaren de meeste gevallen. De eerste is een mismatch tussen de sitekey en de paginaurl: het token is gebonden aan de pagina waar de widget werd getoond, dus een sitekey van de ene pagina die naar een andere pagina wordt gestuurd, faalt. De tweede is een verlopen token. Tokens zijn kortlevend, dus een script dat eerst oplost en daarna een trage reeks andere stappen doorloopt, verstuurt een verlopen waarde. De derde is een ontbrekende controle aan jouw kant. Als je tests alleen bevestigen dat er een token bestaat, merk je niet dat de verificatiestap faalt.
Een tweede groep fouten komt uit de workflow rond de widget. Inloggen in de ene sessie en het formulier vanuit een andere sessie versturen is een veelvoorkomende fout, omdat de verificatie kan afhangen van de sessie die de widget heeft geladen. Een afgewezen formulier vele keren achter elkaar opnieuw proberen maakt de sessie ook verdacht, wat één uitdaging kan veranderen in een reeks. Pauzeer bij een fout, controleer de paginastatus, en probeer het één keer opnieuw met verse waarden.
Scrape verantwoord
Als het formulier deel uitmaakt van een scrapingtaak, controleer dan robots.txt en de voorwaarden van de site voordat je begint. Houd de frequentie laag, en verzamel geen persoonsgegevens die je niet nodig hebt. De gids over of webscraping legaal is behandelt de belangrijkste overwegingen.