CAPTCHA invisibile (Beta)
Il CAPTCHA invisibile fornisce protezione bot senza interruzioni senza interrompere l’esperienza utente. La sfida CAPTCHA viene eseguita in background e presenta solo una sfida visibile se è necessaria una verifica aggiuntiva.
Panoramica
Sezione intitolata PanoramicaIl CAPTCHA invisibile funziona:
- Eseguendo sfide di verifica in background
- Analizzando il comportamento dell’utente e le caratteristiche del browser
- Mostrando solo una sfida visibile se l’utente appare sospetto
- Fornendo un’esperienza fluida per gli utenti legittimi
Tipi di CAPTCHA
Sezione intitolata Tipi di CAPTCHAFrictionless invisibile
Sezione intitolata Frictionless invisibileL’opzione più intelligente che si adatta dinamicamente in base al comportamento dell’utente:
<button class="procaptcha" data-sitekey="your_site_key" data-captcha-type="frictionless" data-size="invisible" data-callback="onCaptchaSuccess"> Submit</button>Proof of Work invisibile
Sezione intitolata Proof of Work invisibileEsegue una sfida computazionale invisibilmente in background:
<button class="procaptcha" data-sitekey="your_site_key" data-captcha-type="pow" data-size="invisible" data-callback="onCaptchaSuccess"> Submit</button>Immagine invisibile
Sezione intitolata Immagine invisibileMostra sfide visibili per verificare l’utente all’invio del modulo:
<button class="procaptcha" data-sitekey="your_site_key" data-captcha-type="image" data-size="invisible" data-callback="onCaptchaSuccess"> Submit</button>Metodi di implementazione
Sezione intitolata Metodi di implementazioneRendering implicito
Sezione intitolata Rendering implicitoAggiunga la classe procaptcha e gli attributi data direttamente agli elementi del suo form:
<!DOCTYPE html><html><head> <script src="https://js.prosopo.io/js/procaptcha.bundle.js" async defer></script></head><body> <form> <input type="email" name="email" required> <button type="button" class="procaptcha" data-sitekey="your_site_key" data-captcha-type="frictionless" data-size="invisible" data-callback="handleSubmit" data-failed-callback="handleFailure"> Submit Form </button> </form>
<script> function handleSubmit(token) { console.log('CAPTCHA verified:', token); // Submit your form with the token }
function handleFailure() { console.log('CAPTCHA verification failed'); // Handle failure case } </script></body></html>Rendering esplicito
Sezione intitolata Rendering esplicitoPer un maggiore controllo sul ciclo di vita del CAPTCHA:
<!DOCTYPE html><html><head> <script src="https://js.prosopo.io/js/procaptcha.bundle.js" async defer></script></head><body> <form id="demo-form"> <input type="email" name="email" required> <div id="captcha-container"></div> <button type="submit">Submit Form</button> </form>
<script type="module"> import { render, execute } from "https://js.prosopo.io/js/procaptcha.bundle.js"
let widgetId;
function handleCaptchaSuccess(token) { console.log('CAPTCHA verified:', token); // Process form submission with token }
function handleCaptchaFailure() { console.log('CAPTCHA verification failed'); // Handle failure }
document.addEventListener('DOMContentLoaded', function() { // Render invisible CAPTCHA widgetId = render(document.getElementById('captcha-container'), { siteKey: 'your_site_key', captchaType: 'frictionless', size: 'invisible', callback: handleCaptchaSuccess, 'failed-callback': handleCaptchaFailure });
// Handle form submission document.getElementById('demo-form').addEventListener('submit', function(e) { e.preventDefault(); // Trigger CAPTCHA verification execute(); }); }); </script></body></html>Opzioni di configurazione
Sezione intitolata Opzioni di configurazione| Attribute | Value | Description |
|---|---|---|
data-size | "invisible" | Obbligatorio. Abilita la modalità invisibile |
data-captcha-type | "frictionless", "pow", "image" | Tipo di sfida CAPTCHA |
data-callback | Nome funzione | Chiamata quando il CAPTCHA è verificato con successo |
data-failed-callback | Nome funzione | Chiamata quando la verifica CAPTCHA fallisce |
data-sitekey | La sua site key | Obbligatorio. La sua site key Procaptcha |
Best practice
Sezione intitolata Best practice1. Scegliere il tipo giusto
Sezione intitolata 1. Scegliere il tipo giusto- Frictionless: Migliore per la maggior parte dei casi d’uso, si adatta automaticamente
- PoW: Buono per form dove si desidera sfide invisibili consistenti
- Image: Utilizzare quando si ha bisogno di verifica basata su immagini con fallback invisibile
2. Gestire i fallimenti con eleganza
Sezione intitolata 2. Gestire i fallimenti con eleganzaImplementi sempre un callback di fallimento per gestire i fallimenti di verifica:
function onCaptchaFailed() { // Show user-friendly error message alert('Verification failed. Please try again.'); // Reset form or provide alternative}3. Fornire indicatori di caricamento
Sezione intitolata 3. Fornire indicatori di caricamentoPoiché la verifica avviene in background, consideri di mostrare stati di caricamento:
function onCaptchaStart() { document.getElementById('submit-btn').disabled = true; document.getElementById('submit-btn').textContent = 'Verifying...';}
function onCaptchaComplete(token) { document.getElementById('submit-btn').disabled = false; document.getElementById('submit-btn').textContent = 'Submit'; // Process with token}Verifica lato server
Sezione intitolata Verifica lato serverVerifichi sempre la risposta Procaptcha sul suo server:
// Node.js exampleconst response = await fetch('https://api.prosopo.io/siteverify', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ secret: 'your_secret_key', response: token, // Token from Procaptcha callback remoteip: userIP // Optional })});
const result = await response.json();if (result.success) { // Procaptcha verified successfully console.log('Verification successful');} else { // Verification failed console.log('Verification failed:', result['error-codes']);}Risoluzione problemi
Sezione intitolata Risoluzione problemiCAPTCHA non si attiva
Sezione intitolata CAPTCHA non si attiva- Si assicuri che
data-size="invisible"sia impostato - Verifichi che la sua site key sia corretta e attiva
- Verifichi che il suo dominio sia registrato nel portale
- Confermi di essere sul tier Pro o Enterprise
Sfide visibili inaspettate
Sezione intitolata Sfide visibili inaspettateQuesto è un comportamento normale quando:
- Il comportamento dell’utente appare sospetto
- Le caratteristiche del browser suggeriscono automazione
- È necessaria una verifica aggiuntiva per la sicurezza
Problemi di integrazione
Sezione intitolata Problemi di integrazione- Si assicuri che lo script Procaptcha si carichi prima che il suo codice venga eseguito
- Verifichi nella console del browser eventuali messaggi di errore
- Verifichi che le funzioni callback siano definite globalmente
- Testi con diversi tipi di CAPTCHA per isolare i problemi
Migrazione da CAPTCHA visibile
Sezione intitolata Migrazione da CAPTCHA visibilePer convertire le implementazioni CAPTCHA visibili esistenti:
- Aggiunga
data-size="invisible"alle configurazioni esistenti - Aggiorni l’UI per rimuovere il contenitore CAPTCHA (per il rendering implicito)
- Adatti lo stile del form poiché non apparirà alcun widget visibile
- Testi i flussi utente per garantire un’esperienza fluida
- Aggiorni qualsiasi CSS o JavaScript dipendente dalle dimensioni