سيتم طرح أسعار Google reCAPTCHA الجديدة في الأول من أغسطس، مما يعني أنه أمامك بضعة أيام متبقية للانتقال إلى بديل أرخص أو التأكد من أن حسابك المصرفي ممول بشكل جيد.
بدءًا من دولار واحد مقابل 1000 عملية تحقق، سيكلف ذلك الكثير. في Mailmeteor، نستخدم reCAPTCHA على نطاق واسع لحماية خدماتنا من الروبوتات. مع تغيير أسعار Google، حسبنا أننا على وشك دفع آلاف الدولارات شهريًا للاستمرار في استخدام خدمة reCAPTCHA الخاصة بهم.
تعتبر اختبارات CAPTCHA جزءًا أساسيًا من الويب. ويهدف إلى فصل المواطنين الصالحين عن الجهات الفاعلة السيئة. في الأساس، إنها خدمة ستعمل على الواجهة الأمامية وتقوم بإنشاء رمز مميز يتم نقله إلى الواجهة الخلفية. تتحقق الواجهة الخلفية بعد ذلك من شرعية الرمز المميز، وإذا كان الأمر كذلك، تنفذ الإجراء.
قامت Google بعمل رائع في الترويج لخدمتها الخاصة، ولكن لحسن الحظ، هناك بعض البدائل:
دعونا نتعمق.
إحدى أدواتنا المجانية هي كاتب البريد الإلكتروني بالذكاء الاصطناعي. إنها في الأساس صفحة HTML ترسل طلبًا إلى الواجهة الخلفية لدينا، والتي تقوم بعد ذلك بإرسال طلب إلى حل الذكاء الاصطناعي التابع لجهة خارجية.
لحمايته من سوء الاستخدام، تم تفعيل Google reCAPTCHA منذ اليوم الأول. إليك كيفية إجراء التحقق حتى الآن (الجانب الخلفي):
// 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هذا أمر بسيط جدًا وهو جزء أساسي من سبب شهرة Google reCAPTCHA. البصمة محدودة للغاية ومن السهل جدًا تنفيذها. بالنسبة للأشخاص الأكثر فضولًا، قمنا بالاستفادة من حزمة Express-recaptcha لتسهيل تنفيذها حقًا.
... إلى Cloudflare Turnstile
عند الترحيل إلى Turnstile، لم نتمكن من العثور على حزمة NPM، لذلك كان علينا كتابة برنامج وسيط لمعالجة الرمز المميز. إليك كيف يبدو الأمر:
// 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 }بمجرد وضع البرنامج الوسيط، يمكننا تطبيقه على أي طلبات:
// index.js app.post('/api/ai-email-writer', aiRateLimiter, turnstile, aiEmailWriter)وداخل الوظيفة التي تتعامل مع الطلب، فهي مشابهة تمامًا لما لدينا سابقًا:
// 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' }) } ...خاتمة
يعد الترحيل من reCAPTCHA إلى Turnstile أمرًا بسيطًا ولا ينبغي أن يستغرق أكثر من بضع ساعات. إنه يعمل بشكل مشابه تمامًا وسيوفر لك بالتأكيد الكثير من المال في نفس الوقت.
لم أقم بتغطية الواجهة الأمامية في هذه المقالة، لأننا نستخدم أداة غير مرئية لا يراها مستخدمونا. لكن وثائق Turnstile تغطي على نطاق واسع كيفية استخدام عناصر واجهة المستخدم التفاعلية الخاصة بهم.
أوقف العمل!
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3