Cloudflare Turnstile: hoe het werkt en hoe je het oplost (binnenkort)
Cloudflare Turnstile is een captcha die meestal niets van de bezoeker vraagt. Hij voert controles uit in de browser, en in de meeste gevallen slaagt hij zonder enige puzzel. Als hij het niet zeker weet, kan hij een korte interactieve stap tonen. De widget schrijft dan een token in het formulier, en de site verifieert dat token bij Cloudflare. Scarnox-ondersteuning voor Turnstile komt binnenkort. Deze gids legt uit hoe de widget werkt, waarom hij vaak wordt verward met andere uitdagingen, en welke algemene aanpakken er zijn voor legitiem werk.
Hoe de widget wordt ingebed
De pagina bevat een containerelement met de klasse cf-turnstile en een attribuut data-sitekey. Het Turnstile-script laadt, voert zijn controles uit, en voegt een verborgen invoerveld toe met de naam cf-turnstile-response. De waarde van dat veld is het token. Het formulier stuurt het samen met de overige velden mee, en de backend van de site stuurt het naar het verificatie-eindpunt van Cloudflare, samen met de geheime sleutel van de site.
Net als bij andere token-widgets gebeurt de verificatie op de server. Een formulier dat elke waarde in dat veld accepteert zonder die te controleren, is niet echt beschermd.
Modi en wat ze betekenen voor een script
Turnstile kan in meer dan één modus draaien. In de beheerde modus beslist Cloudflare of er een interactieve stap wordt getoond. In de niet-interactieve modus vraagt de widget de bezoeker nooit iets en toont hij alleen een status. In de onzichtbare modus wordt helemaal niets getoond. Voor een script verandert de modus wat je op de pagina ziet, maar de uitkomst is hetzelfde: een token in het formulierveld, op de server geverifieerd.
Tokens zijn kortlevend en eenmalig bruikbaar. Verstuur het formulier kort nadat de widget het token heeft gemaakt, en hergebruik een token dat al is geverifieerd niet.
Waarom het automatisering blokkeert
Turnstile kijkt naar signalen uit de browseromgeving en naar het gedrag van de sessie. Een standaard headless browser, een ontbrekende of inconsistente set browserfuncties, een nieuwe sessie zonder geschiedenis en een verdacht netwerkadres kunnen de beslissing allemaal richting een uitdaging of een blokkade duwen. De signalen behoren tot dezelfde familie als die van andere op score gebaseerde controles, daarom zijn de aanpakken vergelijkbaar.
Legitieme aanpakken
Dit zijn de aanpakken die werken voor legitiem werk:
- Gebruik een echte browser voor pagina's die Turnstile laden. Een gewoon browserprofiel met consistente instellingen wordt minder vaak uitgedaagd dan een kale automatiseringsbuild. De gids over headless-browserdetectie somt de gebruikelijke signalen op.
- Blijf in de sessie. Houd cookies vast over de pagina's van je workflow heen, zodat de bezoeker niet bij elk verzoek nieuw lijkt.
- Verdeel je verzoeken. Een gelijkmatig, menselijk tempo vermindert uitdagingen veel meer dan één enkele truc.
- Lees eerst de regels van de door Cloudflare beschermde site. Veel beschermde sites publiceren een API of feed. Controleer dat voordat je een browserworkflow bouwt. De gids over het scrapen van door Cloudflare beschermde sites behandelt de aanpak dieper.
- Gebruik testsleutels in ontwikkeling. Cloudflare publiceert testsleutels voor ontwikkeling die voorspelbare resultaten geven zonder echte controle. Ze zijn bedoeld voor je eigen integratietests, niet voor productieverkeer.
- Vraag de eigenaar. Als je de site beheert, kun je de Turnstile-instellingen aanpassen voor de paden die je geautomatiseerde tests gebruiken. Zo niet, vraag dan om een allowlist of een API.
Wat een Turnstile-solver doet
Een op tokens gebaseerde Turnstile-solver neemt de sitekey en de paginaURL, maakt een geldig token voor het veld cf-turnstile-response, en geeft het aan je code terug. Je code schrijft het token in het formulier en verstuurt het snel. Dit is hetzelfde patroon als de live PopularCaptcha-integratie, met een ander tasktype.
Scarnox lost Turnstile vandaag nog niet live op. Het enige live tasktype is PopularCaptcha, zonder proxy. Turnstile komt binnenkort, en de aanvraagdetails staan in de API-referentie zodra het live gaat. Bouw tot die tijd niet tegen een aangenomen interface.
Veelgemaakte fouten
Turnstile-integraties falen op een paar voorspelbare manieren. De meest voorkomende is een token gebruiken nadat het is verlopen, of nadat het al is geverifieerd. Tokens zijn eenmalig, dus een nieuwe poging na een mislukte formulierverzending heeft een nieuw resultaat van de widget nodig, niet de oude waarde. De tweede is een sitekey die bij een andere omgeving hoort. Een ontwikkelsleutel op een productiepagina, of andersom, geeft een verificatiefout die op een bug in je code lijkt. Controleer welke sleutel de pagina gebruikt voordat je iets anders debugt.
Een andere veelvoorkomende fout is een interactieve stap als fout behandelen. In de beheerde modus kan Turnstile sommige bezoekers een korte stap tonen, en een script dat een stille doorgang verwacht loopt daarop vast. Bouw de flow zo dat hij wacht op het resultaat van de widget, en dat hij het geval afhandelt waarin de widget meer vraagt.
Hardcode de veldnaam ten slotte niet zonder hem op de live pagina te controleren. De invoer cf-turnstile-response is de standaard, maar een site kan de widget anders omhullen, en het gerenderde formulier lezen gaat sneller dan raden.
Verantwoord scrapen
Het scrapen van een site die door Turnstile wordt beschermd is een gewone klus, en die vraagt dezelfde zorg als elk ander scrapen. Controleer robots.txt en de servicevoorwaarden. Houd je tempo laag, en verzamel geen persoonsgegevens die je niet nodig hebt. Als een site een API heeft, geef daar de voorkeur aan. De gids over of webscraping legaal is behandelt de belangrijkste vragen.
Voorbereiden
Maak een account aan om te beginnen met gratis proefcredit, zonder creditcard. Wanneer Turnstile-ondersteuning live gaat, kun je het op je eigen pagina's testen voordat je iets tegen een live site draait.