Harga baharu Google reCAPTCHA akan dilancarkan pada 1 Ogos, bermakna anda mempunyai beberapa hari lagi untuk berhijrah ke alternatif yang lebih murah atau memastikan akaun bank anda dibiayai dengan baik.
Bermula pada $1 untuk 1,000 pengesahan, ia akan menelan kos yang tinggi. Di Mailmeteor, kami menggunakan reCAPTCHA secara meluas untuk melindungi perkhidmatan kami daripada bot. Dengan perubahan harga Google, kami mengira bahawa kami akan membayar beribu-ribu dolar sebulan untuk terus menggunakan perkhidmatan reCAPTCHA mereka.
CAPTCHA ialah bahagian penting dalam web. Ia bertujuan untuk memisahkan warga yang baik daripada pelakon yang tidak baik. Pada asasnya, ia adalah perkhidmatan yang akan beroperasi pada bahagian hadapan dan menjana token yang dihantar ke bahagian belakang. Bahagian belakang kemudian mengesahkan bahawa token itu sah dan, jika ya, lakukan tindakan itu.
Google melakukan kerja yang hebat dalam mempromosikan perkhidmatan mereka sendiri, tetapi syukur, terdapat beberapa alternatif:
Jom kita gali.
Salah satu alatan percuma kami ialah Penulis E-mel AI. Ia pada asasnya adalah halaman HTML yang menghantar permintaan ke bahagian belakang kami, yang kemudiannya membuat kepada penyelesaian AI pihak ketiga.
Untuk melindunginya daripada penyalahgunaan, Google reCAPTCHA telah didayakan dari hari pertama. Begini cara pengesahan dilakukan setakat ini (bahagian belakang):
// 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' }) } ...
Itu agak mudah dan ia merupakan bahagian penting mengapa Google reCAPTCHA begitu popular. Jejaknya sangat terhad dan ia sangat mudah untuk dilaksanakan. Untuk yang paling ingin tahu, kami memanfaatkan pakej express-recaptcha untuk menjadikannya sangat mudah untuk dilaksanakan.
Apabila berhijrah ke Turnstile, kami tidak menemui pakej NPM, jadi kami terpaksa menulis middleware untuk memproses token. Begini rupanya:
// 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 }
Setelah perisian tengah tersedia, kami boleh menggunakannya untuk sebarang permintaan:
// index.js app.post('/api/ai-email-writer', aiRateLimiter, turnstile, aiEmailWriter)
Dan di dalam fungsi yang merawat permintaan, ia agak serupa dengan apa yang kami ada sebelum ini:
// 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' }) } ...
Perpindahan daripada reCAPTCHA ke Turnstile adalah mudah dan tidak perlu mengambil masa lebih daripada beberapa jam. Ia berfungsi agak serupa dan pastinya akan menjimatkan banyak wang pada masa yang sama.
Saya tidak menutup bahagian hadapan dalam artikel ini, kerana kami menggunakan widget yang tidak kelihatan yang pengguna kami tidak nampak. Tetapi dokumentasi Turnstile merangkumi secara meluas cara menggunakan widget interaktif mereka.
Sebut saja sehari!
以上是Berhijrah daripada reCAPTCHA Google ke Cloudflare Turnstile?的详细内容。更多信息请关注PHP中文网其他相关文章!