Heim >Web-Frontend >js-Tutorial >Migrieren Sie von Googles reCAPTCHA zu Cloudflare Turnstile?
Die neuen Preise für Google reCAPTCHA werden am 1. August eingeführt. Das bedeutet, dass Sie noch ein paar Tage Zeit haben, um auf eine günstigere Alternative umzusteigen oder sicherzustellen, dass Ihr Bankkonto gut gedeckt ist.
Ab 1 $ für 1.000 Verifizierungen wird es viel kosten. Bei Mailmeteor verwenden wir reCAPTCHA in großem Umfang, um unsere Dienste vor Bots zu schützen. Aufgrund der Preisänderung von Google haben wir berechnet, dass wir bald Tausende von Dollar pro Monat zahlen werden, um den reCAPTCHA-Dienst weiterhin zu nutzen.
CAPTCHAs sind ein wesentlicher Bestandteil des Webs. Ziel ist es, gute Bürger von schlechten Akteuren zu trennen. Im Wesentlichen handelt es sich um einen Dienst, der im Frontend ausgeführt wird und ein Token generiert, das an das Backend übertragen wird. Das Backend überprüft dann, ob das Token legitim ist, und führt in diesem Fall die Aktion aus.
Google hat bei der Werbung für seinen eigenen Dienst großartige Arbeit geleistet, aber zum Glück gibt es einige Alternativen:
Lasst uns reinschnuppern.
Eines unserer kostenlosen Tools ist ein AI Email Writer. Es handelt sich im Grunde um eine HTML-Seite, die eine Anfrage an unser Backend sendet, die diese dann an eine KI-Lösung eines Drittanbieters weiterleitet.
Um es vor Missbrauch zu schützen, wurde Google reCAPTCHA vom ersten Tag an aktiviert. So wurde die Verifizierung bisher durchgeführt (Backend-Seite):
// index.js app.post('/api/email-ai-writer', recaptcha.middleware.verify, aiEmailWriter) // ai_email_writer.js async function aiEmailWriter(request, response) { try { // Recaptcha if (!request.recaptcha || request.recaptcha.error || !request.recaptcha.data) { console.warn('Recaptcha: verification failed.') return response.status(403).send({ error: true, message: 'Recaptcha: verification failed' }) } else if (request.recaptcha.data.action !== 'aiemailwriter') { console.warn('Recaptcha: bad action name') return response.status(403).send({ error: true, message: 'Recaptcha: bad action name' }) } else if (request.recaptcha.data.score < 0.3) { const score = request.recaptcha.data.score console.warn(`Recaptcha: score is below 0.3 (${score})`) return response.status(403).send({ error: true, message: 'Recaptcha: score too low' }) } ...
Das ist ganz einfach und ein wesentlicher Grund dafür, warum Google reCAPTCHA so beliebt war. Der Platzbedarf ist sehr begrenzt und die Implementierung ist wirklich einfach. Für die Neugierigsten haben wir das Express-Recaptcha-Paket genutzt, um die Implementierung wirklich einfach zu machen.
Bei der Migration zu Turnstile konnten wir kein NPM-Paket finden, also mussten wir eine Middleware schreiben, um das Token zu verarbeiten. So sieht es aus:
// middlewares/turnstile.js const turnstile = async (request, response, next) => { try { // Turnstile injects a token in "cf-turnstile-response". const token = request.query['cf-turnstile-response'] const ip = request.header('CF-Connecting-IP') if (!token) { throw new Error('Missing CloudFlare Turnstile Token') } // Validate the token by calling the // "/siteverify" API endpoint. const formData = new FormData() formData.append('secret', process.env.CLOUDFLARE_TURNSTILE_SECRET_KEY) formData.append('response', token) if (ip) formData.append('remoteip', ip) const url = 'https://challenges.cloudflare.com/turnstile/v0/siteverify' const result = await fetch(url, { body: formData, method: 'POST', }) // Process the verification outcome const outcome = await result.json() if (!outcome.success) { throw new Error('CloudFlare Turnstile declined the token') } request.turnstile = outcome // If authentified, go to next middleware next() } catch (err) { console.error(err) return response.status(403).send('Forbidden') } } export { turnstile }
Sobald die Middleware vorhanden ist, können wir sie auf alle Anfragen anwenden:
// index.js app.post('/api/ai-email-writer', aiRateLimiter, turnstile, aiEmailWriter)
Und innerhalb der Funktion, die die Anfrage behandelt, ist es ziemlich ähnlich zu dem, was wir zuvor hatten:
// ai_email_writer.js async function aiEmailWriter(request, response) { try { // CloudFlare Turnstile protection if (!request.turnstile || request.turnstile.error) { console.warn('Recaptcha: verification failed.') return response.status(403).json({ error: true, message: 'Recaptcha: verification failed' }) } else if (request.turnstile.action !== 'aiemailwriter') { console.warn('Recaptcha: bad action name') return response.status(403).json({ error: true, message: 'Recaptcha: bad action name' }) } ...
Die Migration von reCAPTCHA zu Turnstile ist unkompliziert und sollte nicht länger als ein paar Stunden dauern. Es funktioniert ganz ähnlich und spart Ihnen auf jeden Fall gleichzeitig viel Geld.
Ich habe in diesem Artikel nicht auf das Frontend eingegangen, da wir ein unsichtbares Widget verwenden, das unsere Benutzer nicht sehen. Die Dokumentation von Turnstile behandelt jedoch ausführlich die Verwendung der interaktiven Widgets.
Machen Sie Schluss!
Das obige ist der detaillierte Inhalt vonMigrieren Sie von Googles reCAPTCHA zu Cloudflare Turnstile?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!