Un controllo bot sta sulle pagine che contano di più: il login, la registrazione, il checkout. È questo che lo rende utile, ed è anche questo che lo rende pericoloso. Se ogni checkout lo aspetta, il giorno in cui è lento il tuo checkout è lento; il giorno in cui è giù, sei giù anche tu.
Fail open o fail closed
Quando il controllo non riesce a rispondere, le scelte sono due. Fail closed blocca il visitatore: sicuro contro i bot, fatale per il business, perché viene bloccato anche ogni cliente vero. Fail open lascia passare il visitatore: durante il disservizio i bot entrano come prima che avessi un controllo, e nessun altro se ne accorge.
Per quasi tutti i siti, fail open è la scelta giusta. Qualche minuto senza protezione dai bot costa poco; qualche minuto senza checkout costa molto, oltre alla fiducia di chi se n'è accorto.
Quattro regole per chiamare un controllo bot
- Un timeout breve. Scegli il massimo che sei disposto ad aggiungere alla pagina, da 100 a 200 ms, e imponilo nel tuo codice. Non contare mai sul fatto che il fornitore sia veloce.
- Qualsiasi errore lascia passare il visitatore. Un timeout, un errore di connessione, un 5xx, un 402 per un piano esaurito o un body che non riesci a interpretare: significano tutti "nessuna risposta", e nessuna risposta significa andare avanti.
- Agisci solo su una risposta certa. Blocca sulla classe bot più alta; con prove più deboli aggiungi attrito, come un codice via email, mai un muro.
- Registra le risposte mancate. Conta i timeout e gli errori, così un disservizio è un grafico e non un mistero.
Come appare nel codice
const d = await fetch(API + "/v1/decide", {
method: "POST",
headers: { Authorization: `Bearer ${KEY}` },
body: JSON.stringify({ ip, user_agent, token, path }),
signal: AbortSignal.timeout(150),
}).then((r) => r.json()).catch(() => null);
if (d?.class === "bot_high") return res.status(403).end();
// anything else, including no answer: carry on
Il catch è tutta la policy: qualunque cosa vada storta diventa null, e null non è mai un bot.
Anche il lato browser è fail open
Nemmeno lo script sulla tua pagina deve mai bloccarla. Se non riesce a raggiungere il servizio, la pagina funziona esattamente come funzionerebbe senza; la decisione del server avrà semplicemente meno prove quella volta.
Come Bot Protection è costruito per questo
Bot Protection è una chiamata dal tuo server, non un proxy davanti al tuo sito, quindi non è mai nel percorso di una richiesta che non hai scelto di controllare. Il suo tag aspetta un tempo limitato e poi rinuncia in silenzio. Al raggiungimento del tuo limite di spesa risponde 402, che il tuo codice tratta come qualsiasi altro errore: i visitatori passano, e tu ricevi un'email prima che succeda.