Analisi del mouse
Linearità del percorso, varianza della velocità e cambi di direzione. I bot si muovono in linea retta con velocità costante.
Pattern di digitazione
Inter-keystroke intervals (IKI) e durata di compilazione. Gli umani digitano con ritmo variabile e naturale.
Comportamento di scroll
Varianza dei delta e timing tra eventi. Lo scroll umano è irregolare, quello automatico è uniforme.
Timing di interazione
Ritardo dalla prima interazione dal caricamento della pagina. I bot agiscono in millisecondi.
Token per dominio
Ogni integrazione ha un token con domini autorizzati, score threshold e modalità debug configurabili.
Modalità debug
Attivabile per token dal pannello admin: bordo visivo sui form protetti e console.log in tempo reale.
API Reference
| Metodo | Endpoint | Descrizione | Auth |
|---|---|---|---|
| POST | /captcha/verify | Verifica sessione → score + sessionProof | — |
| POST | /captcha/report | Report blocco lato client | — |
| GET | /captcha/validate | Valida sessionProof lato server | — |
| GET | /captcha/config | Configurazione pubblica del token (debugMode) | — |
| GET | /captcha/reports | Lista report sessioni | JWT |
| POST | /auth/login | Login → access_token JWT | — |
| GET | /auth/me | Profilo utente corrente | JWT |
| GET | /admin/tokens | Lista token | JWT |
| POST | /admin/tokens | Crea token | JWT |
| PATCH | /admin/tokens/:id/domains | Aggiorna domini autorizzati | JWT |
| PATCH | /admin/tokens/:id/debug/enable | Attiva debug mode sul token | JWT |
| DELETE | /admin/tokens/:id | Revoca token | JWT |
| GET | /admin/users | Lista utenti | JWT admin |
| GET | /admin/download/wordpress-plugin | Scarica plugin WordPress (.zip) | — |
Quick Start
1. Includi lo script nel <head>
<script defer src="/wecaptcha.js" data-token="LA_TUA_SITE_KEY" data-api="" data-threshold="0.4"> </script>
2. Aggiungi data-bd-protect al form
<form action="/login" method="POST" data-bd-protect> ... </form>
3. Valida il proof sul server
// Node.js / Express
const r = await fetch(`/captcha/validate?tokenId=TOKEN&proof=${req.body['bd-proof']}`)
const { valid } = await r.json()
if (!valid) return res.status(403).json({ error: 'Bot detected' })