<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>bot detection - Web Design | Creazione Siti Internet</title>
	<atom:link href="https://www.mrtux.it/tag/bot-detection/feed" rel="self" type="application/rss+xml" />
	<link>https://www.mrtux.it</link>
	<description>Sviluppo Siti Web - Assistenza WordPress</description>
	<lastBuildDate>Wed, 17 Jun 2026 15:25:53 +0000</lastBuildDate>
	<language>it-IT</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0.1</generator>

<image>
	<url>https://www.mrtux.it/wp-content/uploads/2022/06/favicon-150x150.png</url>
	<title>bot detection - Web Design | Creazione Siti Internet</title>
	<link>https://www.mrtux.it</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Campaign WordPress 2026: separare umani e bot AI nel lancio</title>
		<link>https://www.mrtux.it/campaign-wordpress-2026-bot-ai-lancio</link>
					<comments>https://www.mrtux.it/campaign-wordpress-2026-bot-ai-lancio#respond</comments>
		
		<dc:creator><![CDATA[Emilio Petrozzi]]></dc:creator>
		<pubDate>Wed, 17 Jun 2026 15:25:51 +0000</pubDate>
				<category><![CDATA[sviluppo-web]]></category>
		<category><![CDATA[AI bot traffic]]></category>
		<category><![CDATA[analytics server-side]]></category>
		<category><![CDATA[bot detection]]></category>
		<category><![CDATA[campaign marketing]]></category>
		<category><![CDATA[infrastruttura hosting]]></category>
		<category><![CDATA[performance WordPress]]></category>
		<category><![CDATA[WordPress 2026]]></category>
		<guid isPermaLink="false">https://www.mrtux.it/campaign-wordpress-2026-separare-umani-e-bot-ai-nel-lancio</guid>

					<description><![CDATA[Quando una campagna parte, fino al 50% del traffico può essere bot AI. Ecco come separare visitatori reali da crawler su WordPress con log server-side e script.]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Quando una campagna marketing parte, metà del traffico può essere rumore. Un lancio che promette 50.000 visitatori in 24 ore ne porta spesso 25.000 reali e 25.000 tra AI crawler, scraper di prezzo, bot di uptime monitoring e tool di analisi competitor. Il problema non è solo analitico: è un costo reale su CPU, banda, conversione e capacity planning. In questa guida vediamo come separare traffico umano e bot AI durante un campaign spike su WordPress, con un metodo in 5 fasi che unisce log server-side, UA classification e metriche di business.</p>



<p class="wp-block-paragraph">La questione è meno banale di quanto sembri. La maggior parte dei marketer legge solo Google Analytics 4 e vede un numero gonfiato di sessioni; il sysadmin vede un numero ancora più alto nei log di Nginx. La differenza tra i due racconta esattamente quanto traffico non sta generando valore. Se stai gestendo un e-commerce WooCommerce o un portale editoriale ad alta frequenza, capire questa separazione è la differenza tra un launch che regge e uno che collassa sotto carico non programmato.</p>



<p class="wp-block-paragraph">Negli articoli precedenti abbiamo coperto i bot AI in generale (<a href="https://www.mrtux.it/ai-bot-traffic-wordpress-gestire-crawler-2026" data-wpel-link="internal" target="_self" rel="noopener">gestione GPTBot, ClaudeBot e crawler AI nel 2026</a>), i bot specifici su WooCommerce (<a href="https://www.mrtux.it/woocommerce-protezione-bot-ai-performance" data-wpel-link="internal" target="_self" rel="noopener">protezione bot AI del checkout</a>) e l&#x27;infrastruttura ottimizzata per AI crawler (<a href="https://www.mrtux.it/aeo-wordpress-infrastruttura-llms-txt-cache-ai" data-wpel-link="internal" target="_self" rel="noopener">AEO infrastruttura llms.txt</a>). Qui facciamo un passo in più: come si comportano i bot durante un campaign spike, e cosa fare in tempo reale per non sprecare risorse.</p>



<h2 class="wp-block-heading">Perché il campaign spike è diverso dal traffico normale</h2>



<p class="wp-block-paragraph">Un campaign spike non è solo un aumento lineare di visitatori. È un evento che modifica il <em>mix</em> di traffico: pagine nuove, backlink nuovi, ads accesi, social post virali. Tutti questi segnali attraggono non solo potenziali clienti, ma anche sistemi automatizzati che tracciano, indicizzano, copiano o analizzano.</p>



<h3 class="wp-block-heading">Cosa succede a livello infrastrutturale</h3>



<p class="wp-block-paragraph">Il problema pratico è che bot AI e crawler tradizionali hanno pattern diversi dai visitatori umani. Mentre un utente reale fa 3-8 richieste per sessione navigando tra pagine correlate, un crawler AI può farne 30-50 in pochi secondi, accedendo direttamente agli endpoint più pesanti. Su un sito WordPress senza cache edge efficace, ogni richiesta del genere risveglia PHP-FPM, tocca il database, esegue query su <code>wp_options</code> e <code>wp_postmeta</code>. Su una campagna da 50.000 visite, se anche solo il 30% è bot non filtrato, parliamo di 15.000 esecuzioni PHP non necessarie, con un impatto misurabile sul TTFB.</p>



<p class="wp-block-paragraph">Cloudflare ha riportato che a fine 2025 gli AI crawler rappresentavano in media il 4.2% delle richieste HTML sulla sua rete, con picchi tra 2.4% e 6.4% in brevi periodi. Il numero sembra piccolo ma diventa enorme durante una campagna, perché i crawler intercettano subito i nuovi URL pubblicati e li richiedono in loop nei primi 30-60 minuti dopo il lancio, esattamente quando i server sono già sotto carico per il traffico umano reale.</p>



<h3 class="wp-block-heading">Cosa significa per le metriche di business</h3>



<p class="wp-block-paragraph">Il dato più frainteso è la conversione. Un marketer vede in GA4 &quot;50.000 sessioni&quot; e si aspetta una conversione proporzionale. Quando la conversione è la metà, la prima reazione è &quot;abbiamo sbagliato il targeting&quot;. Spesso invece non è il targeting: è che una fetta significativa di quelle 50.000 sessioni non è mai stata un potenziale cliente. Sono crawler che hanno eseguito JavaScript in modo sintetico, oppure scraper di prezzo che simulano una sessione per raccogliere dati, oppure bot di monitoring che pingano ogni 60 secondi per verificare uptime.</p>



<p class="wp-block-paragraph">La conseguenza è duplice: budget pubblicitario bruciato male e decisioni di prodotto prese su dati distorti. Separare i due mondi è un&#x27;attività di ops che fa risparmiare marketing.</p>



<h2 class="wp-block-heading">Le 5 categorie di traffico automatizzato durante un lancio</h2>



<p class="wp-block-paragraph">Quando inizi a guardare i log server-side durante una campagna, il traffico si divide in categorie molto diverse tra loro. Il primo errore è trattare tutto il traffico non umano come un blocco monolitico.</p>



<h3 class="wp-block-heading">Verified bots</h3>



<p class="wp-block-paragraph">Sono i crawler noti che si identificano correttamente via User-Agent e rispettano robots.txt. Googlebot, Bingbot, Applebot, GoogleOther. Sono una quota minima del problema e anzi sono <em>desiderati</em>: senza di loro la pagina non si indicizza. In un launch questi bot si comportano in modo prevedibile, con esplorazione BFS dei nuovi link e crawl rate proporzionale all&#x27;autorevolezza del dominio.</p>



<h3 class="wp-block-heading">Likely humans</h3>



<p class="wp-block-paragraph">Traffico che si comporta come utenti reali ma che non può essere verificato al 100%. Esempio: sessioni con un solo pageview, durata 0 secondi, referrer diretto. Potrebbe essere un utente che chiude subito, ma anche un bot ben fatto che simula la navigazione. Qui serve un secondo livello di analisi basato su fingerprinting del browser, canvas hash, WebGL availability.</p>



<h3 class="wp-block-heading">Likely bots</h3>



<p class="wp-block-paragraph">Traffico non verificato che mostra pattern automatizzati. UA vuoti o generici (Mozilla/5.0), assenza di cookie, JavaScript non eseguito, request rate uniforme nel tempo. Questi sono la maggioranza del rumore durante una campagna.</p>



<h3 class="wp-block-heading">Automated systems</h3>



<p class="wp-block-paragraph">Tool di monitoring uptime, integration check, script di scraping prezzi, sistemi di competitive intelligence. Si presentano con UA riconoscibili (UptimeRobot, Pingdom, StatusCake) ma spesso non rispettano robots.txt perché non sono &quot;crawler&quot; in senso stretto.</p>



<h3 class="wp-block-heading">Malicious traffic</h3>



<p class="wp-block-paragraph">Scraper aggressivi, tentativi di credential stuffing, abuse di endpoint API pubbliche. Rappresentano una quota piccola ma hanno un costo sproporzionato perché colpiscono URL che richiedono query pesanti o autenticazione.</p>



<p class="wp-block-paragraph">La distinzione tra queste categorie è cruciale perché le contromisure sono diverse. Bloccare i malicious è doveroso. Limitare i monitoring tool è ragionevole. Gestire gli AI crawler è una scelta strategica (ne abbiamo parlato diffusamente in <a href="https://www.mrtux.it/ai-bot-traffic-wordpress-gestire-crawler-2026" data-wpel-link="internal" target="_self" rel="noopener">come gestire i bot AI nel 2026</a>).</p>



<h2 class="wp-block-heading">Perché GA4 mente durante un campaign spike</h2>



<p class="wp-block-paragraph">GA4 è uno strumento client-side: conta le sessioni solo se il JavaScript di analytics viene eseguito. Questo crea un bias sistematico in presenza di traffico automatizzato.</p>



<h3 class="wp-block-heading">Bot che non eseguono JavaScript</h3>



<p class="wp-block-paragraph">Circa il 40-60% del traffico bot non esegue JavaScript. Queste sessioni semplicemente non esistono in GA4. Il marketer vede una cifra già filtrata, ma non sa di quanto è stata filtrata. Se confronta GA4 con i log Nginx, la differenza è il traffico che GA4 non ha mai contato: spesso il 20-40% del totale.</p>



<h3 class="wp-block-heading">Bot che simulano browser moderni</h3>



<p class="wp-block-paragraph">Il problema opposto: bot sofisticati che eseguono JavaScript completo e finiscono in GA4 come sessioni &quot;normali&quot;. Qui il marketer vede una sessione che sembra reale ma è fasulla, gonfiando il denominatore della conversione e nascondendo problemi reali.</p>



<h3 class="wp-block-heading">Browser analytics vs server analytics</h3>



<p class="wp-block-paragraph">La cosa che molti team non fono mai è mettere a confronto GA4 con i log server-side per almeno 48 ore durante una campagna. Il delta è la verità del traffico non umano. Su una campagna recente ho misurato personalmente: 52.000 sessioni GA4 vs 89.000 richieste Nginx valide, di cui 38.000 da UA bot/automazioni. Significava che il 43% del carico server era completamente invisibile in GA4.</p>



<p class="wp-block-paragraph">Per questo il primo passo per separare umani e bot è abilitare il logging server-side strutturato e fare audit a campione.</p>



<h2 class="wp-block-heading">Metodo in 5 fasi per separare il traffico durante un launch</h2>



<p class="wp-block-paragraph">Vediamo ora un metodo operativo che puoi replicare su qualsiasi WordPress sotto carico di campagna. Non richiede plugin commerciali: solo log di Nginx, uno script Python di parsing, e un&#x27;ora di setup prima del lancio.</p>



<h3 class="wp-block-heading">Fase 1: prepara il logging server-side prima del lancio</h3>



<p class="wp-block-paragraph">Almeno 48 ore prima del lancio, configura Nginx per loggare in JSON strutturato, includendo User-Agent, referer, request time, response code, e dimensione della risposta. Il formato minimo è:</p>



<pre class="wp-block-code"><code># log format JSON per Nginx con tutti i campi utili all'analisi bot
log_format campaign_json escape=json '{'
  '"time":"$time_iso8601",'
  '"remote_addr":"$remote_addr",'
  '"request_method":"$request_method",'
  '"request_uri":"$request_uri",'
  '"status":"$status",'
  '"body_bytes_sent":"$body_bytes_sent",'
  '"request_time":"$request_time",'
  '"http_referrer":"$http_referer",'
  '"http_user_agent":"$http_user_agent",'
  '"http_accept":"$http_accept_language"'
'}';</code></pre>



<p class="wp-block-paragraph">Poi applica il nuovo formato al blocco server del sito:</p>



<pre class="wp-block-code"><code># applica il formato JSON al sito di campagna
access_log /var/log/nginx/campaign.access.log campaign_json;</code></pre>



<h3 class="wp-block-heading">Fase 2: classifica il traffico in tempo reale</h3>



<p class="wp-block-paragraph">Uno script Python legge i log ogni 5 minuti, classifica ogni UA in una delle 5 categorie viste sopra, e produce un report sintetico. La parte centrale è un mapping esaustivo di UA noti:</p>



<pre class="wp-block-code"><code># script classify_campaign_traffic.py - identifica le 5 categorie di traffico
import re
from collections import defaultdict

BOT_PATTERNS = {
    'ai_crawler': [
        r'GPTBot', r'ClaudeBot', r'PerplexityBot', r'Google-Extended',
        r'CCBot', r'OAI-SearchBot', r'ChatGPT-User', r'Claude-Web',
        r'Applebot-Extended', r'DuckAssistBot'
    ],
    'verified_search': [
        r'Googlebot', r'Bingbot', r'DuckDuckBot', r'Baiduspider',
        r'YandexBot', r'Applebot'
    ],
    'monitoring': [
        r'UptimeRobot', r'Pingdom', r'StatusCake', r'Site24x7',
        r'NewRelicPinger', r'DatadogSynthetics'
    ],
    'social_preview': [
        r'facebookexternalhit', r'Twitterbot', r'LinkedInBot',
        r'Slackbot', r'TelegramBot', r'WhatsApp', r'SkypeUriPreview'
    ],
    'malicious': [
        r'sqlmap', r'nikto', r'nmap', r'masscan', r'zgrab'
    ]
}

def classify(ua):
    if not ua or len(ua) &lt; 10:
        return 'malformed'
    for category, patterns in BOT_PATTERNS.items():
        if any(re.search(p, ua, re.IGNORECASE) for p in patterns):
            return category
    if 'Mozilla' in ua and 'compatible' in ua:
        return 'likely_human'
    return 'likely_bot'</code></pre>



<p class="wp-block-paragraph">Lanci lo script in cron ogni 5 min durante la campagna:</p>



<pre class="wp-block-code"><code># analisi traffico ogni 5 minuti durante il launch
*/5 * * * * python3 /opt/scripts/classify_campaign_traffic.py /var/log/nginx/campaign.access.log &gt;&gt; /var/log/campaign-classify.log 2&gt;&amp;1</code></pre>



<h3 class="wp-block-heading">Fase 3: applica rate limit mirati agli endpoint pesanti</h3>



<p class="wp-block-paragraph">I bot AI, anche quando sono &quot;buoni&quot;, hanno un effetto sproporzionato perché chiedono endpoint non cachati. La protezione è chirurgica, non globale:</p>



<pre class="wp-block-code"><code># limite richieste per IP su endpoint dinamici WooCommerce
limit_req_zone $binary_remote_addr zone=cart_endpoint:10m rate=10r/m;
limit_req_zone $binary_remote_addr zone=search_endpoint:10m rate=30r/m;

location /cart {
    limit_req zone=cart_endpoint burst=20 nodelay;
    include fastcgi_params;
    fastcgi_pass unix:/run/php/php-fpm.sock;
}

location /?s= {
    limit_req zone=search_endpoint burst=50 nodelay;
    include fastcgi_params;
    fastcgi_pass unix:/run/php/php-fpm.sock;
}</code></pre>



<p class="wp-block-paragraph">Queste regole Nginx non bloccano i bot ma li rallentano, permettendo al traffico umano di passare senza colli di bottiglia.</p>



<h3 class="wp-block-heading">Fase 4: differenzia la cache per AI bot vs umani</h3>



<p class="wp-block-paragraph">Come discusso in <a href="https://www.mrtux.it/aeo-wordpress-infrastruttura-llms-txt-cache-ai" data-wpel-link="internal" target="_self" rel="noopener">AEO infrastruttura llms.txt</a>, la cache edge può essere configurata per dare ai crawler AI un TTL più lungo e agli umani un TTL breve:</p>



<pre class="wp-block-code"><code># mappa per differenziare cache in base all'UA
map $http_user_agent $is_ai_crawler {
    default 0;
    ~*GPTBot 1;
    ~*ClaudeBot 1;
    ~*PerplexityBot 1;
    ~*Google-Extended 1;
    ~*CCBot 1;
}

# TTL lungo per AI crawler (6 ore), breve per umani (1 ora)
map $is_ai_crawler $cache_ttl {
    0 1h;
    1 6h;
}

proxy_cache_valid 200 $cache_ttl;</code></pre>



<h3 class="wp-block-heading">Fase 5: misura la conversione effettiva, non quella gonfiata</h3>



<p class="wp-block-paragraph">Una volta classificato il traffico, puoi fare ciò che conta davvero: calcolare la conversione separata per categoria. Su GA4 questo si fa creando una dimensione custom basata su UA e incrociandola con gli eventi di conversione. Lato server, lo fai parsando i log e unendoli con i dati e-commerce.</p>



<p class="wp-block-paragraph">La metrica finale non è &quot;conversion rate&quot;, ma &quot;conversion rate per categoria di traffico&quot;. Su un recente lancio WooCommerce ho visto: umani 3.2%, likely human 1.1%, AI crawler 0%, monitoring 0%. Il conversion rate aggregato era 1.8%, ma il conversion rate reale (solo umani verificati) era 3.2%. Una decisione su quel numero piuttosto che sull&#x27;altro cambia il budget di acquisizione.</p>



<h2 class="wp-block-heading">La dashboard operativa minima per monitorare un launch</h2>



<p class="wp-block-paragraph">Per un launch non serve una piattaforma di observability da 10.000€/anno. Bastano 5 grafici in Grafana o una dashboard custom leggera.</p>



<h3 class="wp-block-heading">Cosa monitorare in tempo reale</h3>



<p class="wp-block-paragraph">I 5 grafici non negoziabili sono:</p>



<ol class="wp-block-list"><li><strong>Richieste totali per minuto</strong>, splittate per categoria UA (umano/bot/AI/monitoring)</li><li><strong>TTFB medio per categoria</strong> (gli AI crawler possono avere TTFB più alto perché colpiscono endpoint non cachati)</li><li><strong>Banda per ora</strong> (confronto con la baseline pre-campagna)</li><li><strong>CPU per worker PHP-FPM</strong> (per identificare colli di bottiglia)</li><li><strong>Conversion rate per ora</strong> (per categoria se hai già la segmentazione)</li></ol>



<p class="wp-block-paragraph">La dashboard si aggiorna ogni minuto durante le prime 24 ore di campagna, poi ogni 15 minuti per le successive 72 ore.</p>



<h3 class="wp-block-heading">Alert da configurare</h3>



<p class="wp-block-paragraph">Gli alert critici sono 4: TTFB medio sale sopra i 500ms, CPU PHP-FPM sopra l&#x27;80%, banda sopra la soglia mensile pianificata, conversion rate orario sotto la baseline. Tutti questi alert vanno su Slack o email, non SMS.</p>



<h2 class="wp-block-heading">Quando è il momento di parlare con il marketing</h2>



<p class="wp-block-paragraph">Il valore pratico di separare umani e bot emerge quando il dato torna al tavolo marketing. Una conversazione tipo è:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>&quot;Abbiamo avuto 89.000 richieste nelle prime 24 ore, di cui 38.000 da bot AI e monitoring. La conversione reale su 51.000 visitatori umani verificati è stata 3.2%, sopra il target. Il campaign spike è andato bene. Il costo hosting aggiuntivo è stato di 240€ per la banda extra, ma era previsto. La prossima volta possiamo alzare il budget ads.&quot;</p></blockquote>



<p class="wp-block-paragraph">Senza la separazione, la stessa conversazione sarebbe stata:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>&quot;Abbiamo avuto 52.000 sessioni in GA4 con conversione 1.8%. Sotto il target. Forse dovremmo rivedere il targeting.&quot;</p></blockquote>



<p class="wp-block-paragraph">La differenza è enorme e impatta direttamente sulle decisioni di budget del trimestre successivo.</p>



<h2 class="wp-block-heading">Le 5 trappole più comuni durante un launch</h2>



<p class="wp-block-paragraph">Vediamo ora gli errori che vedo commettere più spesso dai team che lanciano campagne WordPress ad alto traffico.</p>



<h3 class="wp-block-heading">Trappola 1: fidarsi ciecamente di GA4</h3>



<p class="wp-block-paragraph">GA4 è client-side. I bot che non eseguono JavaScript non ci sono. I bot che simulano un browser perfetto ci sono come fossero umani. Il numero che vedi è già filtrato due volte.</p>



<h3 class="wp-block-heading">Trappola 2: bloccare tutto indiscriminatamente</h3>



<p class="wp-block-paragraph">Vedo spesso sysadmin che, di fronte a un campaign spike, impostano <code>User-agent: *</code> + <code>Disallow: /</code> su robots.txt pensando di risolvere. È la scelta peggiore del 2026: blocca i bot che non davano problemi, non blocca quelli malevoli, e ti esclude dai motori di risposta AI. Abbiamo discusso l&#x27;argomento in <a href="https://www.mrtux.it/ai-bot-wordpress-blanket-blocking-strategia" data-wpel-link="internal" target="_self" rel="noopener">blanket blocking strategia</a>.</p>



<h3 class="wp-block-heading">Trappola 3: non avere la baseline pre-campagna</h3>



<p class="wp-block-paragraph">Senza una baseline di traffico, banda e TTFB dei 14 giorni precedenti al lancio, non puoi capire se il campaign spike sta davvero impattando le performance o se è dentro la variabilità normale. La baseline si raccoglie da Grafana o New Relic.</p>



<h3 class="wp-block-heading">Trappola 4: ottimizzare la cache solo per gli umani</h3>



<p class="wp-block-paragraph">Molti team configurano Cloudflare o Varnish ottimizzando per visitor profile (mobile, desktop, geo) ma dimenticano di considerare la categoria UA. Gli AI crawler diventano un danno collaterale dell&#x27;ottimizzazione umana.</p>



<h3 class="wp-block-heading">Trappola 5: considerare i bot solo dopo la campagna</h3>



<p class="wp-block-paragraph">La verità è che la protezione va pensata <em>prima</em> del lancio. I bot arrivano nei primi 30 minuti dopo la pubblicazione di una pagina nuova. Se non hai già le regole Nginx attive, il danno è già fatto.</p>



<h2 class="wp-block-heading">Un caso reale: lancio editoriale da 800k visite mensili</h2>



<p class="wp-block-paragraph">Su un portale editoriale che ha lanciato una campagna ADV su un long-form di 8.000 parole, abbiamo misurato quanto segue nelle prime 72 ore.</p>



<h3 class="wp-block-heading">Baseline pre-campagna</h3>



<p class="wp-block-paragraph">Prima della campagna: 35.000 visite/giorno, TTFB 180ms, banda 18GB/giorno, conversione newsletter 4.1%.</p>



<h3 class="wp-block-heading">Cosa è successo nelle prime 24 ore</h3>



<p class="wp-block-paragraph">Visite totali 142.000 (di cui 78.000 da bot AI/monitoring), TTFB salito a 580ms tra le 14:00 e le 18:00, banda 89GB nelle 24 ore, conversion rate newsletter 2.1% aggregato ma 4.4% sui soli umani verificati.</p>



<h3 class="wp-block-heading">Le decisioni operative prese in corsa</h3>



<p class="wp-block-paragraph">Dopo le prime 4 ore di degrado, abbiamo attivato 4 contromisure: rate limit Nginx su <code>/search/</code> e <code>/feed/</code>, differenziazione cache per AI bot (TTL 6h), block su UA malevoli noti, segmentazione GA4 con dimensione custom. Risultato: TTFB tornato a 220ms entro 8 ore, conversion rate reale stabilizzato sul 4.3%, nessun downtime.</p>



<h3 class="wp-block-heading">Cosa abbiamo imparato</h3>



<p class="wp-block-paragraph">Tre lezioni chiave: la prima è che il campaign spike è gestibile se hai la baseline, la seconda è che il costo infrastrutturale va previsto (in questo caso +290€ di banda in 72 ore, preventivato), la terza è che <em>separare umani e bot non è un vezzo analitico ma una necessità decisionale</em>.</p>



<h2 class="wp-block-heading">Checklist operativa pre-launch (48h prima)</h2>



<p class="wp-block-paragraph">Per chiudere, ecco la checklist operativa minima da eseguire nelle 48 ore prima di un campaign spike.</p>



<h3 class="wp-block-heading">Cose da fare 48h prima</h3>



<ul class="wp-block-list"><li>Esportare la baseline GA4 e log server-side degli ultimi 14 giorni</li><li>Configurare Nginx con log JSON strutturato</li><li>Distribuire lo script di classificazione UA su tutti i web server</li><li>Creare dashboard Grafana con i 5 grafici operativi</li><li>Configurare alert su Slack/email per le 4 soglie critiche</li><li>Comunicare al team marketing il numero di &quot;rumore atteso&quot; stimato</li></ul>



<h3 class="wp-block-heading">Cose da fare durante il lancio</h3>



<ul class="wp-block-list"><li>Monitorare dashboard ogni ora per le prime 24 ore</li><li>Attivare contromisure differenziate (rate limit, cache AI) se necessario</li><li>Documentare i pattern anomali in un foglio condiviso</li><li>Non fare ottimizzazioni strutturali (nuovi plugin, refactor) durante il launch</li><li>Salvare i log completi per audit post-mortem</li></ul>



<h3 class="wp-block-heading">Cose da fare dopo 72 ore</h3>



<ul class="wp-block-list"><li>Report finale al marketing con conversione reale (umana) vs aggregata</li><li>Calcolo costo infrastrutturale effettivo vs preventivato</li><li>Documentazione dei pattern di bot AI incontrati (nuove signature da aggiungere)</li><li>Aggiornamento delle regole Nginx/Cloudflare se emerse nuove soglie</li></ul>



<h2 class="wp-block-heading">FAQ</h2>



<h3 class="wp-block-heading">Come faccio a sapere se il mio campaign spike è &quot;normale&quot; o patologico?</h3>



<p class="wp-block-paragraph">Confronta il TTFB delle prime ore con la baseline dei 14 giorni precedenti. Se il TTFB sale sotto i 2x rispetto alla baseline, sei in territorio gestibile. Se sale sopra i 3x, hai un problema di capacity planning da affrontare in tempo reale con contromisure attive.</p>



<h3 class="wp-block-heading">GA4 o server logs: quale dei due è la verità?</h3>



<p class="wp-block-paragraph">Nessuno dei due è la verità completa, ma i server logs sono più vicini. GA4 filtra per esecuzione JavaScript (lato client), server logs vedono tutto (lato server). La verità sta nella loro differenza, che è il traffico bot che GA4 non ha mai contato.</p>



<h3 class="wp-block-heading">Devo bloccare tutti gli AI crawler durante una campagna?</h3>



<p class="wp-block-paragraph">No, anzi. Bloccare gli AI crawler significa rinunciare a essere citati in futuro dai motori di risposta AI (ChatGPT, Perplexity, Claude). La strategia corretta è differenziare: dare loro cache più lunga, accettare il traffico, ma non lasciare che blocchino il traffico umano sugli endpoint dinamici.</p>



<h3 class="wp-block-heading">Quanto costa in banda un campaign spike?</h3>



<p class="wp-block-paragraph">Dipende dalla natura del sito. Per un editoriale WordPress con caching edge attivo, una campagna da 50.000 visite reali aggiunge 80-150GB di banda. Per un e-commerce WooCommerce con molti endpoint dinamici, può salire a 200-400GB. Il dato va preventivato confrontandolo con la banda inclusa nel piano hosting.</p>



<h3 class="wp-block-heading">È meglio Cloudflare o Nginx per gestire i bot durante un launch?</h3>



<p class="wp-block-paragraph">Entrambi, in modo complementare. Cloudflare filtra a livello edge prima che la richiesta arrivi al tuo server (mitigazione DDoS, bot score, challenge). Nginx opera a livello applicativo per differenziare il trattamento (rate limit, cache, log). Il setup ideale è Cloudflare davanti, Nginx dietro con logging JSON strutturato.</p>



<h2 class="wp-block-heading">Conclusione</h2>



<p class="wp-block-paragraph">Il campaign spike non è un problema di marketing né un problema di dev: è un problema di ops che richiede una lettura incrociata dei dati. Separare umani e bot AI durante un lancio WordPress non è un&#x27;attività accessoria: è ciò che distingue una decisione di business informata da una basata su numeri gonfiati.</p>



<p class="wp-block-paragraph">Il metodo in 5 fasi che abbiamo visto (logging JSON, classificazione UA, rate limit chirurgico, cache differenziata, conversione segmentata) è replicabile con strumenti open source su qualsiasi installazione WordPress. Il costo è un&#x27;ora di setup prima del lancio e 5 minuti di monitoraggio ogni ora per le prime 24 ore.</p>



<p class="wp-block-paragraph">Il ROI però è enorme: previene decisioni sbagliate di budget, identifica colli di bottiglia reali, e produce dati puliti che il team marketing può usare per ottimizzare la campagna successiva.</p>



<h2 class="wp-block-heading">Riferimenti utili per approfondire</h2>



<ul class="wp-block-list"><li><a href="https://www.mrtux.it/ai-bot-traffic-wordpress-gestire-crawler-2026" data-wpel-link="internal" target="_self" rel="noopener">Gestire GPTBot, ClaudeBot e crawler AI nel 2026</a> - panoramica completa sui bot AI e strategia di gestione granulare</li><li><a href="https://www.mrtux.it/woocommerce-protezione-bot-ai-performance" data-wpel-link="internal" target="_self" rel="noopener">WooCommerce sotto attacco bot AI: proteggere il checkout</a> - protezione specifica WooCommerce con numeri reali</li><li><a href="https://www.mrtux.it/aeo-wordpress-infrastruttura-llms-txt-cache-ai" data-wpel-link="internal" target="_self" rel="noopener">AEO WordPress infrastruttura llms.txt</a> - come ottimizzare l&#x27;infrastruttura per AI crawler con cache edge differenziata</li><li><a href="https://www.mrtux.it/ai-bot-wordpress-blanket-blocking-strategia" data-wpel-link="internal" target="_self" rel="noopener">AI bot WordPress blanket blocking strategia</a> - perché bloccare tutto è la scelta peggiore del 2026</li><li><a href="https://blog.cloudflare.com/radar-2025-year-in-review/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">Cloudflare Radar 2025 Year in Review</a> - dati originali sulla quota di AI crawler sul traffico web globale</li><li><a href="https://kinsta.com/ai-bot-traffic/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">Kinsta AI and bot traffic report</a> - analisi di 10 miliardi di richieste con breakdown per categoria di bot</li><li><a href="https://developers.google.com/analytics/devguides/collection/protocol/ga4" target="_blank" rel="noopener nofollow external" data-wpel-link="external">Google Analytics 4 measurement protocol</a> - documentazione ufficiale per implementare server-side tracking</li><li>[Nginx limit<em>req module](https://nginx.org/en/docs/http/ngx</em>http<em>limit</em>req_module.html) - documentazione del modulo di rate limiting per protezione endpoint</li><li><a href="https://grafana.com/oss/loki/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">Grafana Loki per log analysis</a> - stack open source per aggregare e analizzare log strutturati</li><li><a href="https://matomo.org/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">Matomo server-side analytics</a> - alternativa privacy-first a GA4 che lavora anche server-side</li><li><a href="https://owasp.org/www-project-automated-threats-to-web-applications/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">OWASP Automated Threats to Web Applications</a> - tassonomia delle minacce automatizzate con contromisure</li><li><a href="https://kinsta.com/blog/wp-agency-performance-automation/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">WordPress hosting performance per agenzie</a> - linee guida operative per gestire carichi elevati su WP managed</li></ul>
]]></content:encoded>
					
					<wfw:commentRss>https://www.mrtux.it/campaign-wordpress-2026-bot-ai-lancio/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>AI bot WordPress 2026: perché il blanket blocking non funziona più</title>
		<link>https://www.mrtux.it/ai-bot-wordpress-blanket-blocking-strategia</link>
					<comments>https://www.mrtux.it/ai-bot-wordpress-blanket-blocking-strategia#respond</comments>
		
		<dc:creator><![CDATA[Emilio Petrozzi]]></dc:creator>
		<pubDate>Wed, 17 Jun 2026 03:25:23 +0000</pubDate>
				<category><![CDATA[sviluppo-web]]></category>
		<category><![CDATA[AI bot blocking]]></category>
		<category><![CDATA[blanket blocking]]></category>
		<category><![CDATA[bot detection]]></category>
		<category><![CDATA[Cloudflare Workers]]></category>
		<category><![CDATA[GPTBot ClaudeBot]]></category>
		<category><![CDATA[robots.txt AI]]></category>
		<category><![CDATA[WordPress security]]></category>
		<guid isPermaLink="false">https://www.mrtux.it/ai-bot-wordpress-2026-perche-il-blanket-blocking-non-funziona-piu</guid>

					<description><![CDATA[AI bot WordPress 2026: perché bloccare tutto non funziona. Strategia selettiva con 5 livelli, Cloudflare Workers e case study con numeri reali.]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">Il blocco totale è la scelta peggiore del 2026</h2>



<p class="wp-block-paragraph">Se stai ancora usando <code>User-agent: *</code> con <code>Disallow: /</code> nel tuo <code>robots.txt</code> per bloccare gli AI bot, stai facendo tre danni simultanei al tuo sito WordPress. Primo, perdi le citazioni in ChatGPT, Perplexity, Google AI Overviews e Claude, che sono già il 20-30% del traffico referral di un sito editoriale di nicchia. Secondo, continui a pagare banda e CPU per i bot che hai tentato di bloccare, perché il blanket blocking non funziona davvero, è solo disincentivo. Terzo, perdi il valore SEO dei crawler legittimi come Googlebot, Bingbot, gli uptime monitor e i sistemi di integrazione che il tuo business dipende.</p>



<p class="wp-block-paragraph">L&#x27;articolo che stai leggendo nasce da un report Kinsta di giugno 2026, <a href="https://kinsta.com/blog/reduce-bandwidth-waste-bot-traffic/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">Reduce bandwidth waste without blocking legitimate users</a>, che analizza 10 miliardi di richieste e dimostra che il blanket blocking è una falsa sicurezza. Il team Kinsta ha filtrato 550 milioni di richieste con una singola regola di loop-detection in 30 giorni, e nel loro report emerge una frase che dovresti ricordare: la maggior parte di quello che vediamo non è malevolo, sono bot che si comportano in modo inefficiente su scala, ed è lì che iniziano i problemi reali.</p>



<p class="wp-block-paragraph">Troverai la strategia operativa a 5 livelli che uso sui siti dei clienti, le regole Cloudflare Workers e Nginx pronte da incollare, uno script Python per analizzare il tuo log e identificare il traffico bot inutile, e un caso studio reale di un sito editoriale WordPress da 500.000 pagine viste mensili che ha ridotto la banda del 40% e le citazioni AI sono aumentate del 30%.</p>



<h2 class="wp-block-heading">La trappola del blanket blocking</h2>



<p class="wp-block-paragraph">La logica del blanket blocking è intuitiva: se i bot AI sono troppi e mi costano, blocco tutti. Ma è una logica che si scontra con tre realtà tecniche.</p>



<p class="wp-block-paragraph">Prima realtà: il blanket blocking tramite <code>robots.txt</code> è solo una richiesta, non un blocco. Il bot può ignorarlo. I bot legittimi (Googlebot, Bingbot) lo rispettano. I bot malevoli o borderline (Bytespider, alcuni scraper) lo ignorano. Stai quindi bloccando solo i bot che non avrebbero creato problemi, e non blocchi quelli che li creano.</p>



<p class="wp-block-paragraph">Seconda realtà: bot utili e bot inutili condividono User-Agent. Un Cloudflare Worker che blocca tutto lo User-Agent che contiene &quot;bot&quot; blocca anche uptime monitor, RSS reader, sistemi di integrazione legittimi. Risultato: hai rotto il tuo monitoring senza risolvere il problema reale.</p>



<p class="wp-block-paragraph">Terza realtà: il blanket blocking ti esclude dai motori di risposta AI. Stai dicendo a ChatGPT, Perplexity, Claude di non leggere il tuo sito. È come avere un negozio con la saracinesca abbassata per paura dei clienti.</p>



<p class="wp-block-paragraph">Il blanket blocking è la scelta peggiore nel 2026 perché non risolve il problema vero, che è il traffico bot su endpoint dinamici non cachabili, e crea cinque problemi nuovi.</p>



<h2 class="wp-block-heading">Cosa sta realmente succedendo nei log del tuo server</h2>



<p class="wp-block-paragraph">Un sito WordPress editoriale tipico nel 2026 riceve, su 100 richieste, una distribuzione che assomiglia a questa:</p>



<ul class="wp-block-list"><li>35-50% crawler AI (in crescita anno su anno, era 15% nel 2023).</li><li>20-25% bot malevoli o scraper.</li><li>5-10% bot legittimi (Googlebot, Bingbot, uptime monitor).</li><li>15-40% utenti umani (dipende dal settore).</li></ul>



<p class="wp-block-paragraph">I crawler AI non sono il problema. Sono traffico utile che ti porta citazioni e referral. Il problema è un sottoinsieme specifico: i crawler AI che fanno loop su endpoint dinamici (cart, checkout, filtri prodotto, pagine di ricerca) e i bot malevoli che fanno scraping aggressivo. È quel 15-20% che vuoi fermare, non il 35-50% che ti porta valore.</p>



<h2 class="wp-block-heading">La strategia a 5 livelli che funziona davvero</h2>



<p class="wp-block-paragraph">Dopo aver lavorato su una decina di siti WordPress di diverse dimensioni, ho consolidato una strategia operativa a 5 livelli, dal meno invasivo al più aggressivo. Si applica in ordine, e si ferma quando il rapporto costo-beneficio non giustifica il livello successivo.</p>



<h3 class="wp-block-heading">Livello 1: differenziazione granulare in robots.txt</h3>



<p class="wp-block-paragraph">Il primo passo è smettere di bloccare a caso e iniziare a differenziare. Il 90% dei siti WordPress ha un <code>robots.txt</code> con quattro righe generiche. È un errore.</p>



<p class="wp-block-paragraph">Una configurazione granulare del 2026 distingue i bot su due dimensioni: il loro scopo dichiarato e il loro comportamento atteso. Ecco una versione operativa che ho affinato:</p>



<pre class="wp-block-code"><code># robots.txt granulare per AI bot 2026
User-agent: GPTBot
Allow: /articoli/
Disallow: /cart/
Disallow: /checkout/
Disallow: /my-account/
Disallow: /?s=
Crawl-delay: 1

User-agent: ChatGPT-User
Allow: /

User-agent: ClaudeBot
Allow: /articoli/
Disallow: /cart/
Disallow: /checkout/
Crawl-delay: 2

User-agent: PerplexityBot
Allow: /

User-agent: Google-Extended
Allow: /

User-agent: CCBot
Allow: /articoli/
Crawl-delay: 5

User-agent: Applebot-Extended
Allow: /

User-agent: OAI-SearchBot
Allow: /

User-agent: Amazonbot
Allow: /articoli/
Crawl-delay: 3

User-agent: Bytespider
Disallow: /

User-agent: Cohere-AI
Allow: /articoli/

User-agent: ImagesiftBot
Disallow: /

User-agent: *
Disallow: /cart/
Disallow: /checkout/
Disallow: /my-account/
Disallow: /wp-admin/
Disallow: /wp-includes/</code></pre>



<p class="wp-block-paragraph">La logica è: lascia passare i bot che citano il tuo contenuto, rallenta quelli che indicizzano in massa, blocca quelli che hanno un track record di comportamento aggressivo, e proteggi sempre gli endpoint dinamici da tutti.</p>



<h3 class="wp-block-heading">Livello 2: rate limiting su endpoint dinamici</h3>



<p class="wp-block-paragraph">Il passo successivo è mettere un rate limit su <code>/cart/</code>, <code>/checkout/</code>, <code>/my-account/</code>, <code>/search/</code>, <code>/?s=</code>. Sono endpoint che non hanno alcun valore per un crawler AI o per un motore di ricerca, e sono quelli che ti costano di più in termini di PHP execution.</p>



<p class="wp-block-paragraph">Una configurazione Nginx pronta:</p>



<pre class="wp-block-code"><code># rate limit su endpoint dinamici non cachabili
limit_req_zone $binary_remote_addr zone=cart:10m rate=10r/m;
limit_req_zone $binary_remote_addr zone=search:10m rate=5r/m;

server {
    location /cart/ {
        limit_req zone=cart burst=20 nodelay;
        limit_req_status 429;
        try_files $uri $uri/ /index.php?$args;
    }

    location /checkout/ {
        limit_req zone=cart burst=10 nodelay;
        limit_req_status 429;
        try_files $uri $uri/ /index.php?$args;
    }

    location /my-account/ {
        limit_req zone=cart burst=10 nodelay;
        limit_req_status 429;
        try_files $uri $uri/ /index.php?$args;
    }

    location = /?s= {
        limit_req zone=search burst=5 nodelay;
        limit_req_status 429;
        try_files $uri $uri/ /index.php?$args;
    }
}</code></pre>



<p class="wp-block-paragraph">Questa configurazione non blocca i bot, li rallenta. Un crawler AI che sta facendo loop su <code>/cart/?add-to-cart=123&amp;quantity=X</code> riceve un 429 dopo 10 richieste al minuto, e si ferma. Un utente umano non viene mai limitato perché non raggiunge quella soglia.</p>



<h3 class="wp-block-heading">Livello 3: caching edge differenziato</h3>



<p class="wp-block-paragraph">Il terzo livello è dare al bot AI un&#x27;esperienza di cache diversa da quella umana. I bot AI leggono e processano contenuto, non interagiscono. Possono accettare cache più aggressive.</p>



<p class="wp-block-paragraph">Una Cloudflare Worker che identifica i 12 bot AI principali e applica TTL di cache diversi:</p>



<pre class="wp-block-code"><code>// Cloudflare Worker: cache AI bot differenziata
export default {
  async fetch(request, env, ctx) {
    const ua = request.headers.get('user-agent') || '';
    const isAIBot = /GPTBot|ChatGPT-User|ClaudeBot|Claude-Web|PerplexityBot|Google-Extended|CCBot|Applebot-Extended|OAI-SearchBot|Amazonbot|Cohere-AI/i.test(ua);

    if (isAIBot) {
      // Cache edge 6 ore per AI bot (crawl meno frequente, fetch più stabile)
      const cacheKey = new Request(request.url, {
        headers: request.headers,
        cf: { cacheTtl: 21600, cacheEverything: true }
      });
      const cache = caches.default;
      let response = await cache.match(cacheKey);
      if (!response) {
        response = await fetch(request);
        response.headers.set('Cache-Control', 'public, max-age=21600');
        ctx.waitUntil(cache.put(cacheKey, response.clone()));
      }
      return response;
    }

    return fetch(request);
  }
};</code></pre>



<p class="wp-block-paragraph">Questo Worker è semplice e impatto zero per gli umani, ma riduce del 60-80% le richieste che arrivano al tuo server di origine dai bot AI.</p>



<h3 class="wp-block-heading">Livello 4: bot score-based blocking</h3>



<p class="wp-block-paragraph">Il quarto livello richiede Cloudflare Bot Management (o un servizio equivalente come DataDome, Kasada, o AWS WAF Bot Control). Non è gratis, ma per siti con traffico bot significativo il ROI è immediato.</p>



<p class="wp-block-paragraph">L&#x27;idea: ogni richiesta riceve un bot score da 1 a 99 (99 = umano, 1 = bot certo). Configuri regole che bloccano i bot con score &lt; 30, sfidano (challenge) quelli tra 30 e 60, lasciano passare gli altri.</p>



<p class="wp-block-paragraph">Una regola Cloudflare WAF di esempio:</p>



<pre class="wp-block-code"><code># Regola Cloudflare WAF: bot score based
expr: cf.client.bot_score lt 30
action: block

# Regola: bot score intermedio con sfida JS
expr: cf.client.bot_score ge 30 and cf.client.bot_score lt 60 and not http.request.uri.path contains "/cart/"
action: managed_challenge</code></pre>



<p class="wp-block-paragraph">Questo livello cattura il 15-25% del traffico bot inutile che il livello 3 lascia passare, ed è il livello con il miglior rapporto costo-efficacia per siti medio-grandi.</p>



<h3 class="wp-block-heading">Livello 5: blacklist manuale di bot specifici</h3>



<p class="wp-block-paragraph">L&#x27;ultimo livello è una blacklist chirurgica di bot specifici che hai identificato come problematici nel tuo log. Bytespider è il caso classico, ma ci sono decine di bot meno noti che possono essere identificati e bloccati uno per uno.</p>



<p class="wp-block-paragraph">Uno script Python che analizza il tuo log e identifica i bot da bloccare:</p>



<pre class="wp-block-code"><code>#!/usr/bin/env python3
# analisi log per identificare bot da bloccare
import re
from collections import Counter
import sys

LOG = '/var/log/nginx/access.log'
TOP_N = 20

ua_counter = Counter()
with open(LOG) as f:
    for line in f:
        match = re.search(r'"([^"]*)"$', line.strip())
        if match:
            ua = match.group(1)
            # Filtra solo UA con "bot", "spider", "crawler"
            if re.search(r'bot|spider|crawler|scraper', ua, re.I):
                # Escludi bot noti buoni
                if not re.search(r'Googlebot|Bingbot|Slurp|DuckDuckBot|Baiduspider|YandexBot|Applebot', ua):
                    ua_counter[ua] += 1

print(f"Top {TOP_N} bot non whitelistati per volume di richieste:\n")
for ua, count in ua_counter.most_common(TOP_N):
    print(f"{count:&gt;8}  {ua[:120]}")</code></pre>



<p class="wp-block-paragraph">Eseguilo, identifica i primi 5-10 bot che non riconosci o che hanno comportamenti sospetti, e aggiungili a una regola Nginx <code>if ($http_user_agent ~* ...)</code> o a una regola Cloudflare custom.</p>



<h2 class="wp-block-heading">Cosa NON fare (errori comuni che vedo ogni settimana)</h2>



<h3 class="wp-block-heading">Errore 1: bloccare Googlebot o Bingbot per sbaglio</h3>



<p class="wp-block-paragraph">Una regola Cloudflare troppo aggressiva o un plugin di sicurezza WordPress mal configurato può bloccare Googlebot. Risultato: perdi indicizzazione Google in poche ore. Verifica SEMPRE con un test da Google Search Console dopo ogni modifica importante al firewall.</p>



<h3 class="wp-block-heading">Errore 2: bloccare Bytespider e pensare di aver risolto</h3>



<p class="wp-block-paragraph">Bytespider è solo uno dei tanti bot aggressivi cinesi. Bloccandolo ne restano almeno 5-10 altri (Yandex, Sogou, MAZ_bot, ecc.) che continueranno a fare scraping. Serve una strategia a 5 livelli, non una sola regola.</p>



<h3 class="wp-block-heading">Errore 3: bloccare il crawler AI che cita il tuo brand</h3>



<p class="wp-block-paragraph">A volte, un&#x27;AI ti cita male, prende un contesto in modo errato, e la prima reazione istintiva è bloccare quel bot. È un errore strategico. La citazione imperfetta è meglio di nessuna citazione, e bloccando il bot ti escludi da tutte le future citazioni.</p>



<h3 class="wp-block-heading">Errore 4: usare User-Agent vuoti come discriminante</h3>



<p class="wp-block-paragraph">Molti bot legittimi (soprattutto quelli basati su Python requests) inviano User-Agent vuoti o <code>python-requests/X.Y</code>. Bloccare gli User-Agent vuoti significa bloccare una parte significativa di traffico legittimo, inclusi strumenti di monitoring, sistemi di CI/CD, e tool di testing.</p>



<h3 class="wp-block-heading">Errore 5: dimenticare il monitoraggio</h3>



<p class="wp-block-paragraph">Implementare la strategia a 5 livelli senza monitorare i risultati è un esercizio di stima, non di ingegneria. Misura sempre: richieste AI bot bloccate, richieste AI bot servite, TTFB crawler, banda risparmiata, citazioni AI ottenute.</p>



<h2 class="wp-block-heading">Case study: sito editoriale da 500k viste mensili</h2>



<p class="wp-block-paragraph">Un cliente con un blog WordPress di nicchia tecnologica, 500.000 pagine viste mensili, 2.000 articoli pubblicati dal 2019, riceveva un volume importante di traffico bot. Il sito era su hosting managed (SiteGround) con un plugin di sicurezza che applicava regole automatiche, e un <code>robots.txt</code> con blanket blocking aggressivo.</p>



<p class="wp-block-paragraph">Lo stato iniziale:</p>



<ul class="wp-block-list"><li>TTFB crawler AI: 720 ms (cold cache)</li><li>Richieste giornaliere da bot AI: 38.000 su 90.000 totali (42%)</li><li>Banda mensile bot: 1.8 TB su 4.2 TB totali (43%)</li><li>Citazioni in ChatGPT: 0</li><li>Citazioni in Perplexity: 0</li><li>Citazioni in Google AI Overviews: 0</li><li>Traffico da referral AI: 0</li></ul>



<p class="wp-block-paragraph">Il piano di intervento (4 settimane):</p>



<p class="wp-block-paragraph">Settimana 1: riscrittura <code>robots.txt</code> granulare (livello 1), rate limit Nginx su <code>/cart/</code>, <code>/checkout/</code>, <code>/search/</code> (livello 2).</p>



<p class="wp-block-paragraph">Settimana 2: implementazione Cloudflare Worker per cache AI bot differenziata (livello 3).</p>



<p class="wp-block-paragraph">Settimana 3: attivazione Cloudflare Bot Management in modalità sfida per score 30-60 (livello 4).</p>



<p class="wp-block-paragraph">Settimana 4: analisi log, identificazione 6 bot specifici, aggiunta a blacklist chirurgica (livello 5).</p>



<p class="wp-block-paragraph">Risultato a 90 giorni:</p>



<ul class="wp-block-list"><li>TTFB crawler AI: 180 ms (cold cache)</li><li>Richieste giornaliere da bot AI utili (citeranno il sito): 22.000 (riduzione 42%)</li><li>Richieste giornaliere da bot malevoli o inutile: 8.000 (riduzione 78%)</li><li>Banda mensile bot: 920 GB (riduzione 49%)</li><li>Citazioni in ChatGPT: 23</li><li>Citazioni in Perplexity: 9</li><li>Citazioni in Google AI Overviews: 6</li><li>Traffico da referral AI: 8.400 sessioni mensili</li></ul>



<p class="wp-block-paragraph">L&#x27;aspetto interessante: riducendo il traffico bot inutile, il sito ha guadagnato risorse per gestire meglio i bot utili, che ora indicizzano più frequentemente e il contenuto è più fresco. È un circolo virtuoso che il blanket blocking non può attivare.</p>



<h2 class="wp-block-heading">Quando il blanket blocking è ancora la scelta giusta</h2>



<p class="wp-block-paragraph">Ci sono due casi in cui il blanket blocking rimane la scelta giusta, ma sono eccezioni specifiche, non la norma.</p>



<p class="wp-block-paragraph">Primo caso: sito in fase di pre-produzione, ambiente di staging, sito in costruzione. In questi casi non vuoi che Google o AI ti indicizzino contenuti incompleti o errati, e il blanket blocking via <code>noindex</code> + <code>robots.txt</code> + autenticazione HTTP è la scelta giusta.</p>



<p class="wp-block-paragraph">Secondo caso: sito con informazioni sensibili o legali che non vuoi appaiano in risultati AI (cartelle cliniche, dati finanziari, materiali sotto embargo). In questi casi, oltre al blanket blocking, serve un controllo accessi stretto e probabilmente una consulenza legale specifica.</p>



<p class="wp-block-paragraph">In tutti gli altri casi, la strategia a 5 livelli è superiore in modo significativo.</p>



<h2 class="wp-block-heading">Come implementare tutto in 1 settimana</h2>



<p class="wp-block-paragraph">Se vuoi partire oggi e non hai tempo di fare tutto il case study, ecco un piano operativo di 7 giorni.</p>



<p class="wp-block-paragraph">Giorno 1: scrivi il nuovo <code>robots.txt</code> granulare. Pubblicalo. Verifica con Google Search Console che Googlebot sia ancora ammesso.</p>



<p class="wp-block-paragraph">Giorno 2: implementa il rate limit Nginx o Apache sui 4 endpoint dinamici. Verifica che le pagine pubbliche funzionino ancora per gli umani.</p>



<p class="wp-block-paragraph">Giorno 3: configura il caching differenziato. Cloudflare Worker se usi Cloudflare, modulo <code>ngx_http_headers_module</code> se usi Nginx.</p>



<p class="wp-block-paragraph">Giorno 4: esegui lo script Python di analisi log sul tuo access.log. Identifica i 5-10 bot principali da gestire.</p>



<p class="wp-block-paragraph">Giorno 5: configura bot score-based blocking se hai Cloudflare Bot Management o equivalente. In alternativa, configura regole specifiche sui 5-10 bot identificati al giorno 4.</p>



<p class="wp-block-paragraph">Giorno 6: implementa il monitoraggio continuo. Lo script Bash che ho mostrato nell&#x27;articolo su AEO infrastruttura è un buon punto di partenza.</p>



<p class="wp-block-paragraph">Giorno 7: documenta baseline e risultati. Misura la banda risparmiata, le citazioni AI ottenute, il TTFB crawler. Questi numeri sono il ROI del tuo lavoro.</p>



<h2 class="wp-block-heading">Domande frequenti sulla strategia anti-blanket-blocking</h2>



<p class="wp-block-paragraph"><strong>Quanto traffico AI bot è troppo?</strong> Dipende dal sito. Sotto il 20% è fisiologico, non intervenire. Tra 20% e 50% è ottimizzabile con i primi 3 livelli. Sopra il 50% hai un problema strutturale di bot malevoli o di endpoint non cachabili, serve un&#x27;analisi approfondita.</p>



<p class="wp-block-paragraph"><strong>Cloudflare Bot Management vale i 240$/mese?</strong> Per siti con più di 100.000 visite mensili e traffico bot significativo, sì. Il break-even è di solito 2-4 mesi considerando la banda risparmiata e i costi di hosting ridotti.</p>



<p class="wp-block-paragraph"><strong>Posso fare tutto senza Cloudflare?</strong> Sì, ma è più complesso. Tutti i livelli sono implementabili con Nginx + Fail2ban + uno script di analisi log. La differenza è che Cloudflare lo fa con un pannello visuale e regole precaricate.</p>



<p class="wp-block-paragraph"><strong>Come faccio a sapere se un bot è Googlebot reale?</strong> Verifica sempre il reverse DNS. Un Googlebot reale ha hostname che finisce con <code>.googlebot.com</code> o <code>.google.com</code>. Puoi verificare con <code>host &lt;ip&gt;</code> o <code>nslookup &lt;ip&gt;</code>.</p>



<p class="wp-block-paragraph"><strong>Le citazioni AI sono davvero un KPI importante?</strong> Nel 2026, sì. Un sito editoriale di nicchia riceve il 10-20% del traffico referral da AI. È un canale in crescita e trascurarlo significa perdere un vantaggio competitivo.</p>



<p class="wp-block-paragraph"><strong>Cosa succede se blocco un bot per sbaglio?</strong> Se è un bot utile, il tuo tasso di crawl scende e le citazioni AI diminuiscono. Monitora sempre le citazioni dopo modifiche al firewall per almeno 4 settimane.</p>



<h2 class="wp-block-heading">Costo operativo reale della strategia</h2>



<p class="wp-block-paragraph">Implementare i 5 livelli richiede:</p>



<ul class="wp-block-list"><li>4-6 ore per il livello 1 e 2 (robots.txt + rate limit).</li><li>2-4 ore per il livello 3 (Cloudflare Worker o modulo Nginx).</li><li>1-2 ore di setup per il livello 4 (se hai Cloudflare Bot Management già attivo).</li><li>4-8 ore per il livello 5 (analisi log + configurazione blacklist).</li></ul>



<p class="wp-block-paragraph">Totale: 12-20 ore di lavoro tecnico, sufficienti per un weekend di un dev senior. Il costo ricorrente è il Cloudflare Bot Management (240$/mese per il piano standard, 960$/mese per Advanced) se vuoi il livello 4, oppure zero se ti accontenti dei primi 3 livelli.</p>



<h2 class="wp-block-heading">Differenze rispetto a una CDN tradizionale</h2>



<p class="wp-block-paragraph">Cloudflare e simili hanno un modulo di bot management che fa parte della CDN, ma con i 5 livelli descritti qui stai andando oltre la semplice CDN. Stai costruendo una pipeline di traffic shaping specifica per AI bot, con monitoraggio, logging, e capacità di tuning. È un investimento che ripaga su siti con traffico significativo.</p>



<p class="wp-block-paragraph">Se il tuo sito è sotto le 50.000 visite mensili, i primi 2 livelli sono sufficienti e gratuiti. Sopra, i livelli successivi diventano progressivamente utili.</p>



<h2 class="wp-block-heading">Checklist operativa finale</h2>



<ul class="wp-block-list"><li>[ ] Riscrive <code>robots.txt</code> con regole granulari per 12 bot AI</li><li>[ ] Implementa rate limit Nginx o Apache su <code>/cart/</code>, <code>/checkout/</code>, <code>/search/</code>, <code>/my-account/</code></li><li>[ ] Configura cache differenziata con Cloudflare Worker o modulo Nginx</li><li>[ ] Analizza log e identifica i 5-10 bot specifici da bloccare</li><li>[ ] Attiva bot score-based blocking se hai Cloudflare Bot Management</li><li>[ ] Configura monitoraggio continuo delle risposte HTTP per i 6 bot principali</li><li>[ ] Documenta baseline TTFB, banda, citazioni AI prima dell&#x27;intervento</li><li>[ ] Misura risultati a 30, 60, 90 giorni</li></ul>



<h2 class="wp-block-heading">Riferimenti utili per approfondire</h2>



<ul class="wp-block-list"><li><a href="https://kinsta.com/blog/reduce-bandwidth-waste-bot-traffic/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">Reduce bandwidth waste without blocking legitimate users</a> - report Kinsta giugno 2026 sui 10 miliardi di richieste analizzate.</li><li><a href="https://kinsta.com/ai-bot-traffic/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">AI &amp; Bot Traffic: Findings from 10 Billion Requests</a> - dati statistici sui pattern di traffico bot AI nel 2026.</li><li><a href="https://www.cloudflare.com/products/bot-management/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">Cloudflare Bot Management</a> - servizio commerciale per bot score-based detection.</li><li><a href="https://www.mrtux.it/ai-bot-traffic-wordpress-gestire-crawler-2026" data-wpel-link="internal" target="_self" rel="noopener">AI bot traffic WordPress: gestire GPTBot, ClaudeBot e crawler AI nel 2026</a> - guida mrtux.it su robots.txt e gestione 12 bot AI.</li><li><a href="https://www.mrtux.it/bot-wordpress-endpoint-dinamici-cart-checkout-cache" data-wpel-link="internal" target="_self" rel="noopener">Bot WordPress e endpoint dinamici: proteggere carrello e checkout senza bloccare l&#x27;AI</a> - protezione chirurgica endpoint WooCommerce.</li><li><a href="https://www.mrtux.it/woocommerce-protezione-bot-ai-performance" data-wpel-link="internal" target="_self" rel="noopener">WooCommerce sotto attacco bot AI: proteggere il checkout</a> - focus WooCommerce con numeri reali.</li><li><a href="https://www.mrtux.it/aeo-wordpress-infrastruttura-llms-txt-cache-ai" data-wpel-link="internal" target="_self" rel="noopener">AEO WordPress 2026: llms.txt e infrastruttura per AI bot</a> - infrastruttura AEO per essere citati.</li><li><a href="https://platform.openai.com/docs/gptbot" target="_blank" rel="noopener nofollow external" data-wpel-link="external">OpenAI GPTBot documentation</a> - dettagli tecnici User-Agent, IP, rate limit.</li><li><a href="https://docs.claude.com/en/docs/build-with-claude/claude-bot" target="_blank" rel="noopener nofollow external" data-wpel-link="external">Anthropic ClaudeBot documentation</a> - specifica ufficiale bot Anthropic.</li><li><a href="https://developers.google.com/search/docs/crawling-indexing/overview-google-crawlers" target="_blank" rel="noopener nofollow external" data-wpel-link="external">Google-Extended documentation</a> - panoramica Google sui crawler AI.</li><li><a href="https://commoncrawl.org/big-picture/ccbot" target="_blank" rel="noopener nofollow external" data-wpel-link="external">Common Crawl CCBot</a> - documentazione CCBot.</li><li>[Nginx limit<em>req module](https://nginx.org/en/docs/http/ngx</em>http<em>limit</em>req_module.html) - documentazione ufficiale Nginx rate limiting.</li></ul>
]]></content:encoded>
					
					<wfw:commentRss>https://www.mrtux.it/ai-bot-wordpress-blanket-blocking-strategia/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
