Cloudflare Turnstile
Challenge invisibile anti-bot verificata server-side prima della chiamata al modello.
Widget Turnstile in modalità invisible montato nascosto nella pagina (components/TurnstileGate.tsx). Genera un token ogni 5 minuti circa, che il client include nel body della POST a /api/chat.
Il server verifica il token via challenges.cloudflare.com/turnstile/v0/siteverify prima di chiamare Anthropic. Token mancante o non valido → 401. Il token è usa-e-getta: dopo ogni richiesta il widget ne emette uno nuovo.
Turnstile è gratuito (fino a 1M richieste/mese) e non usa CAPTCHA visuali nella stragrande maggioranza dei casi. Per gli umani è completamente invisibile. Per bot automatizzati (curl, requests, headless browser) diventa un gate difficile da aggirare.