MAISON CODE .
/ Security · Cloudflare · Bots · Infrastructure · Redis · Architecture

Mitigazione dei bot: la guerra ai rivenditori

I robot delle scarpe da ginnastica stanno mangiando il tuo inventario. Una guida tecnica per sconfiggere gli scalper automatizzati utilizzando Cloudflare Turnstile, Honeypot e Redis Rate Limiting.

AB
Alex B.
Mitigazione dei bot: la guerra ai rivenditori

Se lanci un prodotto pubblicitario su Shopify (ad esempio, un lancio limitato di sneaker) senza protezione, lo esaurirai in 1 secondo. Sembra un “buon problema”. Non lo è. Perché il 98% dell’inventario è andato a un singolo rivenditore di Chicago che eseguiva uno script Python. I tuoi clienti fedeli, le persone che effettivamente indossano il marchio, non hanno ottenuto nulla. Sono arrabbiati. Twittano. Se ne vanno.

Mitigazione dei bot non è un ticket IT. È la protezione del marchio. Presso Maison Code Paris, progettiamo sistemi di “lancio corretto” che garantiscono la vittoria degli esseri umani.

Perché Maison Code ne parla

In Maison Code Paris, agiamo come la coscienza architettonica dei nostri clienti. Spesso ereditiamo stack “moderni” costruiti senza una comprensione fondamentale della scala.

Discutiamo di questo argomento perché rappresenta un punto di svolta critico nella maturità ingegneristica. Implementarlo correttamente differenzia un MVP fragile da una piattaforma resiliente di livello aziendale.

Perché Maison Code discute della protezione dei bot

Abbiamo combattuto i robot più sofisticati del mondo. Abbiamo visto bot in grado di risolvere reCAPTCHA V3. Abbiamo visto bot che utilizzano proxy residenziali per assomigliare agli utenti iPhone in 50 stati. Sappiamo che “Installare un plug-in” non è sufficiente. Hai bisogno di una Difesa a più livelli. Condividiamo la nostra strategia in modo che tu possa prepararti alla guerra.

1. Il modello della minaccia: come funzionano i bot

Per fermare un bot, devi pensare come uno sviluppatore di bot. La maggior parte dei bot non “naviga” il tuo sito.

  1. Monitor: interrogano il tuo endpoint “products.json” ogni 50 ms.
  2. Carrello: ignorano completamente l’interfaccia utente e POST /cart/add.js direttamente.
  3. Checkout: utilizzano “Link di precaricamento” per compilare automaticamente la spedizione/fatturazione.
  4. Proxy: instradano il traffico attraverso 10.000 IP residenziali (dispositivi IoT dirottati).
  5. Captcha: utilizzano API farm (2Captcha) in cui gli esseri umani nelle click-farm risolvono captcha per € 0,001.

2. Livello 1: La sfida invisibile (tornello Cloudflare)

Il vecchio Google reCAPTCHA (Click semaforo) distrugge i tassi di conversione. Utilizziamo Tornello Cloudflare. È “invisibile”. Esegue una sfida Proof-of-Work JavaScript in background del browser. Se il visitatore è uno script senza testa (Puppeteer/Selenium), non supera il controllo.

Implementazione in Remix (idrogeno)

Integriamo Turnstile nel flusso di invio del “Modulo”.

“tsx // app/components/Turnstile.tsx import { useEffect, useRef } da ‘react’;

funzione di esportazione Turnstile({ siteKey, action }) { const riferimento = useRef(null);

useEffect(() => { if (finestra.tornello) { window.turnstile.render(rif.current, { chiavesito: chiavesito, azione: azione, // ad esempio, ‘checkout-start’ richiamata: funzione (token) { // Inserisce il token nell’input nascosto document.getElementById(‘cf-token’).value = token; } }); } }, []);

return

; }


### Convalida lato server
Non fidarsi mai del cliente. Un bot può inviare un token falso. Devi verificarlo con l'API di Cloudflare.

"dattiloscritto".
// app/routes/api.checkout.ts
esporta l'azione della funzione asincrona ({ richiesta }) {
  const formData = attendono request.formData();
  const token = formData.get('cf-turnstile-response');
  const ip = request.headers.get('CF-Connecting-IP');

  const risultato = attendono fetch('https://challenges.cloudflare.com/turnstile/v0/siteverify', {
      metodo: 'POST',
      corpo: nuovo URLSearchParams({
          segreto: process.env.TURNSTILE_SECRET,
          risposta: gettone,
          ip remoto: ip
      })
  });

  const risultato = attendi risultato.json();
  if (!risultato.successo) {
      lancia una nuova risposta ("Bot rilevato", { status: 403 });
  }
}

3. Livello 2: Honeypot (semplice ma efficace)

I bot sono spesso stupidi. Trovano ogni campo "" e lo riempiono. Aggiungiamo un “Honey Pot”. Un campo nascosto che un essere umano non può vedere (CSS nascosto). Se il server riceve un valore in questo campo, banniamo immediatamente l’IP.

“tsx

```

Nota: non utilizzare “display: none”. I robot intelligenti ignorano gli elementi “display: none”. Usa “opacità: 0” o spostalo fuori dallo schermo (sinistra: -9999px).

4. Livello 3: limitazione della velocità (bucket token Redis)

Un essere umano non può aggiungere un articolo al carrello 50 volte in 1 secondo. Implementiamo una rigorosa limitazione della velocità a livello dell’applicazione (Vercel Middleware). Utilizziamo Redis (Upstash) per tenere traccia del conteggio delle richieste.

Algoritmo: finestra scorrevole.

  • Chiave: ratelimit:ip:192.168.1.1
  • Limite: 5 richieste / 10 secondi.

“dattiloscritto”. // middleware.ts importa { Redis } da ‘@upstash/redis’; importa {Ratelimit} da ‘@upstash/ratelimit’;

const limite di velocità = nuovo limite di velocità({ redis: Redis.fromEnv(), limitatore: Ratelimit.slidingWindow(5, ‘10 s’), });

esporta il middleware della funzione asincrona predefinita (richiesta) { const ip = richiesta.ip || ‘127.0.0.1’; const {successo} = attendono ratelimit.limit(ip);

se (!successo) { return new Response(“Troppe richieste”, { status: 429 }); } }

**Costo**: aggiunge circa 20 ms di latenza. Lo applichiamo solo alle rotte di *mutazione* (`POST`), non alle rotte di *lettura* (`GET`).

## 5. Livello 4: La sala d'attesa virtuale (coda)

A volte il traffico è reale (100.000 fan reali).
Questo è un attacco DDoS da parte dell'amore.
Il tuo database andrà in crash.
Per risolvere questo problema, implementiamo un **Queue System** (come Queue-it, ma personalizzato).
1. **Choke Point**: tutto il traffico raggiunge l'Edge.
2. **Controllo della capacità**: "`active_users < 1000`?"
3. **Reindirizzamento**: se completo, reindirizza alla pagina HTML statica `/waiting-room`.
4. **Sondaggio**: il client esegue il sondaggio su `/api/status`.
5. **Ammetti**: quando la capacità si apre, emette un cookie JWT firmato (`queue_pass`).

Ciò garantisce che le chiamate API di Shopify non superino mai il limite di limitazione.

## 6. La corsa agli armamenti: analisi comportamentale

I bot avanzati (stealth) imitano perfettamente le impronte digitali del browser.
Passiamo alla **Biometria comportamentale**.
Tracciamo:
* **Traiettoria del mouse**: gli esseri umani si muovono efficacemente in curva. I robot si muovono in linea retta o si teletrasportano.
* **Tempistica della pressione dei tasti**: gli esseri umani hanno intervalli variabili tra la pressione dei tasti. I bot digitano esattamente a intervalli di 50 ms.
* **Accelerometro**: i dispositivi mobili tremano leggermente. I server no.

Inviamo questa telemetria a un motore antifrode (Sift/Forter).

## 7. L'economia del bott

Perché le persone usano i bot?
**Profitto**.
Un paio di Jordan Travis Scotts vengono venduti al dettaglio per € 150. Rivende per € 1.200.
Profitto: € 1.050 al paio.
Se un bot ottiene 50 coppie, si tratta di un profitto di € 50.000 in 1 ora.
Questo è il motivo per cui spendono € 5.000 in licenze bot (CyberAIO) e € 1.000 in proxy.
**Il nostro lavoro**: rendere il costo della vincita > € 1.200.
Lo facciamo introducendo la "casualità" (lotterie) e la "frizione" (controlli dell'età del conto).
"Solo gli account creati > 3 mesi fa possono acquistare questo drop."
Questo uccide la strategia "Crea 1000 account oggi".

## 8. Crittografia lato client (protezione del carico utile)

I bot adorano decodificare la tua API.
Monitorano la scheda Rete. Vedono `POST /cart { id: 123 }`.
Lo replicano in Python.
**Difesa**: crittografa il carico utile.
1. **Modulo WASM**: compiliamo una funzione di crittografia C++ in WebAssembly.
2. **Crittografia**: il browser crittografa il payload del carrello `enc_abcd123...`.
3. **Decrittografia**: il server utilizza la chiave privata per decrittografare.
I bot non possono eseguire facilmente WASM (richiede un ambiente browser completo).
Non possono decodificare il codice C++ (è binario).
Ciò alza notevolmente l’asticella.

## 9. Azione legale (cessazione e desistenza)

A volte la tecnologia fallisce.
Se un fornitore di bot specifico (ad esempio "Dragon AIO") ti prende di mira in modo specifico, coinvolgi l'ufficio legale.
Nike ha citato in giudizio StockX. Ticketmaster ha citato in giudizio gli scalper.
Aggiorna i tuoi **Termini di servizio**: "L'uso del software di automazione costituisce una violazione del contratto."
Ciò ti consente di annullare legalmente gli ordini senza rimborsare le spese di spedizione.
Rendilo doloroso.
I Botter sono imprese. Se aumenti il ​​rischio legale, si sposteranno verso un obiettivo più morbido.

## 10. Conclusione

La mitigazione dei bot è una guerra economica.
Non puoi fermare il 100% dei bot.
Il tuo obiettivo è aumentare il **costo dell'attacco** più del **profitto potenziale**.
Se l'acquisto di una licenza bot costa € 500 e i proxy costano € 50 e il profitto derivante dalla rivendita della tua scarpa è di soli € 200... i botters se ne andranno.


<hr style="margin: 1rem 0" />

### Proteggere un calo di hype?
Lancerai presto un'edizione limitata?


**[Distribuisci protezione bot](/contatto)**.
**[Assumi i nostri architetti](/contact)**.