Il parser funziona. HTTP 200 scorrono senza sosta, i proxy sono attivi, il captcha non appare, la coda dei link cresce. E dopo una settimana si scopre che metà dei prezzi raccolti è un'invenzione, e i gigabyte di traffico sono andati su pagine che nel sito reale non esistono. Non si tratta di un guasto del parser né di un cattivo pool di IP. È una nuova modalità di protezione: il sito non ti blocca, il sito ti nutre.
Negli ultimi diciotto mesi, l'industria della protezione anti-bot ha silenziosamente cambiato obiettivo. Il blocco è una misura costosa e visibile: lo scraper vede un 403, ripara l'impronta, cambia subnet e torna. È molto più vantaggioso non ostacolarlo nel lavoro, ma rendere il suo lavoro privo di significato. Di seguito sono riportate tre meccaniche che sono già in uso su milioni di siti, e un insieme di controlli che li catturano dalla tua parte.
Meccanica prima: tarpit invece di blocco
Il tarpit (tarpit, "fossa di pece") è un generatore di siti infiniti. Il crawler riceve una pagina HTML valida con decine di link, ciascun link porta a un'altra pagina generata in modo simile, e la coda di scansione non si svuota mai.
Lo strumento open source più noto è Nepenthes. Le sue impostazioni mostrano bene l'intento: per impostazione predefinita, il server mantiene la risposta da 10 a 65 secondi, restituisce un testo "di chiacchiere di Markov", generato da un corpus, e lo fa in modo deterministico: lo stesso URL restituisce sempre lo stesso spazzatura, affinché le pagine sembrino normali file statici e non trappole. I dati vengono restituiti in piccole porzioni, "alcuni byte", per esaurire i timeout del client. L'autore fornisce una misurazione per un'ora di lavoro: 1850 clienti diversi, 10.015 richieste e 56.020 secondi di ritardo totale — circa quindici ore di tempo macchina sprecato.
Iocaine è strutturato diversamente: funziona come un proxy inverso davanti al sito reale, alla prima intercettazione restituisce al bot un link unico "avvelenato" e lo riconosce al ritorno, mentre il testo viene generato da catene di Markov — il calcolo è che questo testo entrerà nel campione di addestramento.
Cloudflare ha trasformato lo stesso approccio in un prodotto — AI Labyrinth, presentato a marzo 2025. Le pagine-bait non vengono generate al volo: viene utilizzato un sistema di pre-generazione su Workers AI, il risultato è memorizzato in R2 e distribuito rapidamente. I link al labirinto vengono incorporati in pagine normali tramite trasformazione HTML, e sulle stesse esche ci sono direttive meta contro l'indicizzazione, per non danneggiare i risultati. Qui l'importante non è il tempo sprecato dal bot, ma il segnale: i link, nascosti agli esseri umani e contrassegnati con nofollow, sono percorsi solo da automi, e il passaggio a tre livelli di profondità in un tale labirinto diventa di per sé un'impronta di un cattivo bot. Cloudflare stima l'entità del problema per cui è stato fatto questo in oltre 50 miliardi di richieste da crawler AI al giorno — poco meno dell'1% di tutto il traffico della rete.
Come appare il tarpit nei tuoi log
Un quadro caratteristico: una coda di diverse migliaia di URL, che continua a crescere, il tempo di risposta si mantiene stabilmente intorno a un secondo e mezzo e oltre, i codici HTTP sono tutti 200, e il numero di record utili estratti è pari a zero. Non c'è un solo 403, nessun captcha, e nessuna via d'uscita: per quante pagine vengano scansionate, nuovi link appaiono più velocemente di quanto vengano chiusi quelli vecchi.
Meccanica seconda: contenuto avvelenato per agenti AI
Se la prima meccanica brucia risorse, la seconda colpisce i risultati. I ricercatori Minghao Luo e Liang Chen hanno pubblicato a giugno 2026 un lavoro con il simulatore FORGE (Fake Online Recommendations in Generative Environments): hanno testato 12 grandi modelli linguistici su 225 prodotti in 15 categorie — dall'abbigliamento all'elettronica. La meccanica dell'attacco è semplice: nel testo della pagina, un marchio reale viene sostituito con uno inventato.
Il risultato è che una pagina contraffatta genera fino al 27% di casi in cui l'assistente raccomanda un marchio inesistente, e la sostituzione di tutti e tre i risultati principali della ricerca aumenta questa percentuale fino al 73,8%. I modelli non si limitavano a ripetere il nome falso — inventavano pregi per esso, inclusa la presunta popolarità nelle comunità. Le tre difese proposte (un prompt di scetticismo, un consenso sulle conoscenze interne del modello, un confronto tra documenti) o non hanno funzionato o hanno creato nuovi problemi. La conclusione degli autori è: è necessario controllare più a monte — nella fase di raccolta, non nella fase di ragionamento.
La terza meccanica completa il quadro. Nel lavoro "A Whole New World: Creating a Parallel-Poisoned Web Only AI-Agents Can See" (Shaked Zychlinski) viene descritto il cloaking, mirato specificamente agli agenti AI: il sito riconosce l'agente tramite gli attributi del browser, le firme del framework di automazione e le caratteristiche di rete e gli restituisce una versione diversa della pagina — con istruzioni nascoste e fatti alterati. L'uomo che apre lo stesso URL vede una pagina normale, quindi un controllo manuale "sono entrato, tutto a posto" non prova nulla.
Perché questo è prima di tutto una questione di budget
Il tarpit è progettato in modo che ogni pagina sia economica per il sito e costosa per te. Quando il traffico è pagato a gigabyte, il generatore di pagine infinite diventa un contatore delle tue spese: paghi per megabyte di testo di Markov, che non diventerà mai una riga nel database. È esattamente la stessa aritmetica delle richieste fallite: il costo per gigabyte non dice nulla sul costo del risultato, finché non consideri il costo di una registrazione riuscita, e non di una richiesta.
Da qui la prima regola pratica: il limite di traffico deve essere impostato a livello di dominio e compito, non solo a livello di account. Un dominio che ha consumato più di un gigabyte e non ha restituito alcuna registrazione deve essere fermato automaticamente: senza questo, una trappola può mangiarsi il budget giornaliero durante la notte.
Sette controlli che catturano spazzatura
- Conta il yield, non i codici di risposta. La metrica principale della catena è la percentuale di richieste che hanno dato una registrazione valida con i campi obbligatori compilati. Finché guardi la percentuale di 200, il tarpit sembra una fonte perfettamente sana.
- URL canarino. Una volta ogni N richieste, richiedi un indirizzo noto per non esistere all'interno del dominio — con un segmento di percorso casuale. Un sito normale risponderà con un 404 o un reindirizzamento, il generatore restituirà una pagina completa con testo e link. Questo è il controllo più economico e più affidabile.
- Cross-validation da un altro profilo IP. Prendi lo stesso URL in due modi diversi — ad esempio, tramite IP residenziale e tramite mobile — e confronta l'hash dei campi chiave: prezzi, nomi, disponibilità. Una discrepanza con lo stesso URL e un tempo di richiesta simile significa che ti vengono mostrate versioni diverse della pagina, e almeno una di esse non è destinata agli esseri umani.
- Non seguire link invisibili. Link con nofollow, dimensioni nulle,
display:noneo portati oltre il limite dello schermo — sono esche, e il passaggio attraverso di essi è l'impronta del bot. Filtrali nella fase di estrazione dei link, non dopo. - Limiti rigidi sulle risposte. Limita non solo il timeout, ma anche la dimensione massima del corpo e la profondità massima di scansione dal punto di ingresso. Un'erogazione lenta in piccoli chunk è un segno tipico di una fossa, non di un server lento.
- Cerca la ripetitività del testo. La generazione di Markov si rivela attraverso le statistiche: lunghezza dei paragrafi sospettosamente uniforme, n-grammi ripetuti tra pagine "diverse", decine di link in uscita in assenza di elementi strutturali come prezzo, articolo o data. Un semplice controllo sui shingle ripetuti tra pagine adiacenti del dominio esclude tali fonti in blocco.
- Controlla i numeri per buon senso. Prezzo al di fuori del corridoio storico, prodotto senza alcuna corrispondenza nel tuo stesso database di marchi, improvviso balzo nell'assortimento — queste sono regole di validazione che devono essere applicate prima della registrazione nel database, non nel rapporto dopo un mese. Soprattutto se i dati poi entrano in un modello o in una decisione automatica di acquisto.
Cosa fare con il già raccolto
Se il sospetto è sorto a posteriori, ordina non per date, ma per fonti. Raggruppa le registrazioni per dominio e osserva tre grandezze: la percentuale di pagine senza campi obbligatori, il numero medio di link in uscita per pagina e la dispersione della lunghezza del testo. I domini trappola di solito si distinguono immediatamente in tutti e tre. Poi ricontrolla selettivamente gli URL controversi da un altro profilo IP: se i dati non coincidono, l'intero insieme di questo dominio deve essere ricostruito, non riparato con filtri.
Vale la pena rivedere separatamente le regole per gli scenari agenti, dove il modello stesso naviga tra le pagine e prende decisioni. È proprio lì che la sostituzione di una pagina produce il massimo effetto, e non c'è un intermediario che possa notare stranezze nella catena. La minima protezione è richiedere conferma del fatto da due fonti indipendenti e non permettere all'agente di agire sulla base di dati ottenuti da un unico dominio.
In breve
I bot hanno da tempo superato gli esseri umani in quota di traffico, e la protezione ha risposto non solo con filtri: oggi è più economico nutrire un automa con spazzatura plausibile che discutere con lui tramite blocchi. Ci sono tre conseguenze pratiche. Conta le registrazioni utili, non gli stati delle risposte. Mantieni i controlli canarini e i limiti di traffico per ogni dominio. Confronta le pagine controverse da diversi profili IP: la discrepanza tra le versioni della stessa pagina è la prova che ti vengono mostrate versioni separate, preparate appositamente per i bot. I proxy in questo schema risolvono solo un compito — forniscono una seconda visione indipendente della pagina; tutto il resto è fatto dalla validazione dalla tua parte.
