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 aktor 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, melakukan tindakan itu.
Google melakukan kerja yang hebat dalam mempromosikan perkhidmatan mereka sendiri, tetapi syukur, terdapat beberapa alternatif:
Mari kita mendalami.
Salah satu alatan percuma kami ialah Penulis E-mel AI. Ia pada asasnya ialah 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 perisian tengah 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 pada sebarang permintaan:
// index.js app.post('/api/ai-email-writer', aiRateLimiter, turnstile, aiEmailWriter)
Dan di dalam fungsi yang merawat permintaan, ia agak serupa dengan 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' }) } ...
Berhijrah 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 halimunan yang pengguna kami tidak nampak. Tetapi dokumentasi Turnstile merangkumi secara meluas cara menggunakan widget interaktif mereka.
Sebut saja sehari!
Atas ialah kandungan terperinci Berhijrah daripada reCAPTCHA Google ke Cloudflare Turnstile?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!