Google reCAPTCHA의 새로운 가격은 8월 1일에 출시됩니다. 즉, 며칠 내에 더 저렴한 대안으로 마이그레이션하거나 은행 계좌에 충분한 자금이 있는지 확인할 수 있습니다.
1,000번의 인증에 1달러부터 시작해서 비용이 많이 들 것입니다. Mailmeteor에서는 reCAPTCHA를 광범위하게 사용하여 봇으로부터 서비스를 보호합니다. Google의 가격 변경으로 인해 reCAPTCHA 서비스를 계속 사용하려면 매달 수천 달러를 지불해야 한다고 계산했습니다.
CAPTCHA는 웹의 필수적인 부분입니다. 이는 좋은 시민과 나쁜 행위자를 분리하는 것을 목표로 합니다. 기본적으로 이는 프런트엔드에서 작동하고 백엔드로 전송되는 토큰을 생성하는 서비스입니다. 그런 다음 백엔드는 토큰이 합법적인지 확인하고, 그렇다면 작업을 수행합니다.
Google은 자체 서비스를 홍보하는 데 큰 역할을 했지만 다행히도 몇 가지 대안이 있습니다.
자세히 살펴보겠습니다.
무료 도구 중 하나는 AI 이메일 작성기입니다. 기본적으로 백엔드로 요청을 보낸 후 타사 AI 솔루션으로 보내는 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 < 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' }) } ...
이는 매우 간단하며 Google reCAPTCHA가 그토록 인기를 얻은 이유 중 하나입니다. 설치 공간은 매우 제한되어 있으며 구현하기가 정말 쉽습니다. 가장 궁금한 분들을 위해 우리는 express-recaptcha 패키지를 활용하여 구현을 매우 쉽게 만들었습니다.
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의 문서에서는 대화형 위젯을 사용하는 방법을 광범위하게 다루고 있습니다.
오늘만 기다려주세요!
위 내용은 Google reCAPTCHA에서 Cloudflare Turnstile로 마이그레이션하시나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!