Che cos'è lo spoofing del user-agent
Ogni client HTTP può inviare un User-Agent header che lo descrive: il nome e la versione di un browser, il nome di un crawler, l'identificatore di una libreria. L'header è auto-dichiarato. In HTTP non c'è nulla che ne verifichi la veridicità, quindi qualsiasi client può inviare qualsiasi valore. Lo spoofing del user-agent è la pratica di inviare un valore che travisa il client, per esempio:
- uno script di automazione che si presenta come un browser desktop aggiornato,
- uno scraper che si dichiara un crawler di ricerca noto per ottenere un trattamento favorevole,
- un agente AI che usa una stringa generica da browser così da essere trattato come una persona.
Perché è importante
Molti sistemi prendono ancora decisioni basandosi sulla stringa user-agent: consentire i crawler noti, servire contenuti diversi ai bot o escludere l'automazione dalle analisi. Ognuna di queste decisioni eredita la debolezza dell'header. Se una policy dice "consenti tutto ciò che afferma di essere il crawler X", consente chiunque copi la stringa del crawler X.
Per le applicazioni che ricevono traffico da agenti AI, questo conta sempre di più nel tempo. Gli agenti eseguono sempre più spesso browser reali o framework di browser headless, quindi le loro stringhe user-agent appaiono identiche a quelle dei browser usati dalle persone. Altri si identificano in modo onesto. Il solo header non può dirti chi è chi. Il nostro articolo su come capire se il traffico di un sito web proviene da agenti AI analizza i segnali che funzionano meglio.
Evidenze migliori dell'header
- Firme crittografiche. Con HTTP Message Signatures e il lavoro su Web Bot Auth, un client dimostra di possedere una chiave pubblicata dall'operatore che nomina. Una stringa user-agent copiata non può riprodurre una firma.
- Verifica pubblicata dall'operatore. Alcuni operatori di crawler pubblicano intervalli IP o supportano controlli reverse DNS, rendendo l'impersonificazione più difficile rispetto al solo header. Google documenta un controllo reverse DNS e intervallo IP per i propri crawler, Microsoft offre uno strumento Verify Bingbot, e OpenAI pubblica file di indirizzi IP per ciascuno dei suoi bot. Le indicazioni di Anthropic per il suo agente browser ospitato affermano chiaramente che chiunque può inviare lo stesso header User-Agent e raccomandano di verificare gli indirizzi IP pubblicati.
- Controlli di coerenza. Confrontare il client dichiarato con i dettagli del protocollo e i segnali dell'interazione può mostrare quando una dichiarazione non torna, anche se questo produce un'inferenza, non una prova.
- Credenziali. Per le API, una chiave API o un token ti dice quale account sta chiamando, indipendentemente da ciò che dice l'header.
Errori comuni
- "Un user-agent da browser significa una persona." I browser headless e i framework di agenti inviano regolarmente stringhe da browser.
- "Un user-agent da crawler significa che il crawler è autentico." Senza una firma o un controllo di verifica dell'operatore, è solo una dichiarazione.
- "Lo spoofing è sempre malevolo." Alcuni strumenti legittimi inviano stringhe generiche per evitare di ricevere pagine non funzionanti. Lo spoofing è un motivo per ridimensionare il peso dell'header, non una prova di cattive intenzioni.
Come Proof of Actor tratta la stringa user-agent
Proof of Actor registra una dichiarazione user-agent come evidenza dichiarata: qualcosa che il client ha affermato, che può essere vero oppure no. Non promuove mai da sola una dichiarazione a verificata. Una richiesta la cui unica evidenza identificativa è una stringa user-agent da crawler viene etichettata di conseguenza e, quando l'evidenza è insufficiente, il risultato è Unknown invece di un'ipotesi sicura. Le tue policy in Route possono quindi trattare in modo diverso un agente firmato e verificato e uno auto-dichiarato, per esempio consentendo entrambi sulle route di sola lettura ma applicando limiti più stretti a quello dichiarato.
Vedi come funzionano le basi dell'evidenza oppure richiedi l'accesso anticipato.
Fonti
- RFC 9110: HTTP Semantics, User-Agent: l'header è auto-dichiarato dal client
- Google: Verifying Google's crawlers and fetchers: controlli reverse DNS e intervalli IP pubblicati
- Microsoft Bing: Verify Bingbot tool: verifica se un indirizzo IP appartiene a Bingbot
- OpenAI: Overview of OpenAI Crawlers: user agent e file di indirizzi IP pubblicati
- Anthropic: how Anthropic-hosted browsers identify themselves: avviso che l'header User-Agent può essere copiato