Google reCAPTCHA の新しい料金設定は 8 月 1 日に開始されます。つまり、より安価な代替品に移行するか、銀行口座に十分な資金があることを確認するまでに数日残っています。
1,000 件の検証で 1 ドルから始まり、かなりの費用がかかります。 Mailmeteor では、サービスをボットから保護するために reCAPTCHA を広範囲に使用しています。 Google の価格変更により、reCAPTCHA サービスを使い続けるには毎月数千ドルを支払うことになると計算されました。
CAPTCHA は Web の重要な部分です。善良な市民を悪者から分離することを目的としています。基本的に、これはフロントエンドで動作し、バックエンドに送信されるトークンを生成するサービスです。次に、バックエンドはトークンが正当であることを検証し、正当である場合はアクションを実行します。
Google は独自のサービスを宣伝するという点で素晴らしい仕事をしましたが、ありがたいことに代替手段がいくつかあります。
詳しく見てみましょう。
弊社の無料ツールの 1 つは、AI Email Writer です。これは基本的に、リクエストをバックエンドに送信する HTML ページであり、その後、サードパーティの AI ソリューションに送信されます。
悪用から保護するために、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 パッケージを活用して実装を非常に簡単にしました。
...クラウドフレア回転木戸へ
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