Passa al contenuto principale

Il pixel pubblicitario di ChatGPT e il cookie __obi

Intermedio
What you'll learn
  • Distinguere i tre cookie dello stack pubblicitario di OpenAI — due sul dominio dell'inserzionista, uno su .openai.com — e capire perché solo il terzo ti collega
  • Seguire il flusso di sync: un JWT RS256 con validità di 60 secondi emesso da ChatGPT e inviato in POST cross-site a un collector che imposta la chiave di join
  • Capire perché il "rifiuta marketing" di un banner cookie può lasciare tutto attivo, e perché la chiamata di consenso dell'inserzionista non può disattivarlo
  • Vedere cosa raccoglie l'Automatic Advanced Matching da una pagina che nessuno gli ha chiesto di leggere — e quali campi, secondo la documentazione di OpenAI stessa, viaggiano in chiaro
  • Sapere esattamente dove il meccanismo non funziona (e perché un iPhone è un modello di minaccia diverso da un Android)
  • Controllare il tuo browser in cinque minuti e mettere in sicurezza il tuo pixel con due impostazioni

Il modello mentale che quasi tutti hanno degli annunci in ChatGPT è una scatola: gli annunci compaiono dentro ChatGPT, personalizzati in base a ciò che hai detto dentro ChatGPT, e la scatola ha un muro intorno. Gli inserzionisti comprano posizionamenti; non vedono mai le tue conversazioni. Questa parte è vera, e OpenAI lo dice chiaramente.

La parte interessante è quella fuori dalla scatola. OpenAI distribuisce anche un pixel di misurazione che gli inserzionisti installano sui propri siti, come fanno con quello di Meta o di Google. I pixel di misurazione hanno bisogno di una chiave di join: un identificatore che dica il browser che ha visto l'annuncio è lo stesso browser arrivato al checkout. A settembre 2026 un ricercatore indipendente ha tracciato come viene creata quella chiave di join, e si scopre che viene emessa da ChatGPT stesso, consegnata a un collector pubblicitario di OpenAI e poi trasportata dal tuo browser verso ogni sito di inserzionista che esegue il pixel.

Il flusso non è una fuga di dati né un bug. È una pipeline di misurazione pubblicitaria progettata così — la stessa forma che Meta e Google usano da un decennio. Ciò che rende la cosa degna di una pagina è una scelta di progettazione specifica sulla classificazione del consenso, più un default attivato ad agosto 2026 che ha silenziosamente trasformato molti siti di inserzionisti in raccoglitori di identità.

Leggendo la copertura mediatica, vedrai __obi, __obref e __oppref usati quasi in modo intercambiabile. Sono tre cose diverse con tre profili di privacy diversi, e confonderle è il modo in cui si finisce o per esagerare la reazione o per rassicurarsi con il controllo sbagliato.

CookieImpostato suImpostato daDurataCos'è
__opprefil dominio dell'inserzionistal'SDK del pixel30 giorni da ogni scritturaID di attribuzione catturato dall'URL della landing page. Normale tracciamento dei click.
__obrefil dominio dell'inserzionistal'SDK del pixel365 giorniUn riferimento casuale del browser, limitato a quel singolo inserzionista.
__obi.openai.combzr.openai.com365 giorni (Max-Age=31536000)La chiave di join cross-site. HttpOnly, Secure, SameSite=None.

I primi due sono documentati da OpenAI nella documentazione pubblica per inserzionisti. Sono first-party rispetto all'inserzionista e, da soli, non ti collegano tra siti diversi — la cattura del ricercatore lo conferma: 2.828 dei 2.860 valori __obref osservati comparivano sotto esattamente un inserzionista, che è l'aspetto che dovrebbe avere un cookie per sito.

__obi è quello che non è per sito. Vive su .openai.com con SameSite=None, che è esattamente la configurazione che permette a un browser di allegarlo a richieste effettuate dalla pagina di qualcun altro. Dei 30 valori __obi distinti osservati dal ricercatore, 12 comparivano sotto più di un inserzionista — uno di essi sotto dieci. Questo è il grafo cross-site, misurato.

★ __obi è HttpOnly. Nessun JavaScript su nessuna pagina può leggerlo, incluso quello del pixel. Sembra protettivo e per lo più non lo è: il browser lo allega automaticamente alle richieste dirette a bzr.openai.com, quindi il pixel non ha mai bisogno di leggerlo. HttpOnly impedisce agli script di pagina di rubare l'identificatore; non fa nulla per impedire che l'identificatore venga usato.

Come viene costruito il join​

Guided walkthrough1 of 4
  1. Il client web di ChatGPT genera 16 byte casuali e invia un POST a /backend-api/bazaar/obi/sync-token su chatgpt.com — oppure a /backend-anon/… quando non hai fatto il login. La risposta è un JWT RS256 con scadenza di 60 secondi.

Dei 932 token di sync decodificati dal ricercatore, 736 portavano subject_type: account_user e 196 erano anonimi. Quindi in circa quattro sync osservati su cinque, l'identificatore piantato era stato emesso nel contesto di un account ChatGPT loggato.

L'autore è prudente su cosa questo dimostri e cosa no, e dovresti esserlo anche tu: il collegamento da __obi all'account è stato dedotto dal design del token, non osservato direttamente. Ciò che si osserva è che ChatGPT emette un token legato a un account, un collector lo converte in un cookie cross-site di lunga durata, e quel cookie compare poi sotto più inserzionisti non collegati tra loro.

La classificazione del consenso è tutta la storia​

Ecco la parte che rende questo caso diverso da "anche Meta ha un pixel".

La cookie policy di OpenAI elenca __obi sotto analytics. I cookie di misurazione delle campagne di Google, Meta, LinkedIn, TikTok, Reddit e Microsoft stanno sotto marketing nella stessa interfaccia. Il JWT che innesca il sync porta consent_decision: "analytics_allowed" — non un consenso marketing.

Segui la conseguenza attraverso un normale banner cookie europeo:

  • Clicchi su "Rifiuta marketing, consenti analytics" — una scelta che fa un'ampia fetta di utenti attenti alla privacy, e che molte piattaforme di consenso presentano come la via di mezzo sensata.
  • Il consenso analytics viene concesso, quindi il token di sync viene emesso.
  • __obi viene piantato su .openai.com per un anno.
  • Ogni pixel di inserzionista che incontri successivamente lo riceve.

Hai rifiutato la categoria a cui il comportamento appartiene, e il comportamento è avvenuto lo stesso, perché era archiviato sotto una categoria diversa. Il ricercatore ha chiesto a OpenAI esattamente questo — perché __obi è classificato come analytics, e se gli utenti che rifiutano il consenso marketing lo ricevano comunque — via mail a press@openai.com e privacy@openai.com il 2026-09-14. Il supporto di OpenAI ha confermato la ricezione della richiesta e non ha risposto a nessuna delle due domande.

★ L'interruttore di consenso dell'inserzionista non può aiutarti. La documentazione di OpenAI fornisce agli inserzionisti oaiq("consent", false), che "rimuove entrambi i cookie" — cioè __obref e __oppref, i due sul dominio dell'inserzionista. Non ha alcuna presa su .openai.com. Un sito che blocca il pixel in modo impeccabile dietro il proprio CMP sta bloccando i due cookie che non erano mai stati il problema di tracciabilità.

Esiste un controllo separato e reale dentro ChatGPT: Impostazioni → Controlli dei dati → Privacy marketing, riportato come attivo per impostazione predefinita sugli account gratuiti e disattivo su quelli a pagamento. Considera la sua relazione con __obi come irrisolta: l'indagine non ha verificato se disattivarlo fermi il sync, OpenAI non ha risposto quando le è stato chiesto, e un'impostazione etichettata marketing che governa un cookie archiviato come analytics è esattamente lo scollamento in discussione. Disattivalo — è l'interruttore giusto a cui pensare — ma non dare per scontato che sia quello che ferma il comportamento sulla rete finché qualcuno non cattura il traffico con l'impostazione disattivata.

Automatic Advanced Matching: il pixel legge la pagina​

Il problema di un pixel di conversione è che gli identificatori di click spariscono — bloccati, rimossi, o persi in un redirect. La risposta del settore è l'advanced matching: inviare identità in forma hash insieme all'evento, così la piattaforma pubblicitaria può fare il join su quella. Meta lo offre da anni. La versione di OpenAI ha una particolarità che vale la pena conoscere.

L'Advanced Matching Automatico (AAM) non aspetta che l'inserzionista passi qualcosa. La documentazione di OpenAI dice che il pixel "rileva automaticamente le informazioni cliente supportate dal tuo sito web". La cattura del ricercatore mostra quattro fonti di raccolta etichettate:

EtichettaFonteCome ottiene il valore
inFornito dall'inserzionistaIl sito lo passa deliberatamente
fmCampi di formEstratto da input riconoscibili nella pagina
htTesto della paginaRicavato dal contenuto renderizzato
jsTag managerLetto da window.dataLayer, dal data layer di Adobe o da layer GTM rinominati

Negli eventi osservati, l'identità estratta automaticamente ha superato quella fornita dall'inserzionista 685 a 255. Il pixel, la maggior parte delle volte, raccoglieva cose che nessuno gli aveva chiesto di raccogliere.

Hash contro chiaro — direttamente dalla documentazione di OpenAI. Email, telefono, ID esterno, nome e cognome vengono normalizzati e sottoposti a SHA-256 nel browser. Paese (codice ISO), regione, città e codice postale sono elencati come campi in chiaro. L'affermazione di OpenAI secondo cui "le informazioni cliente grezze non vengono inviate a OpenAI tramite l'automatic advanced matching" è limitata all'insieme dei dati identitari; la geografia non è in quell'insieme. La cattura conferma: il codice postale è stato il campo di form più raccolto, 100 eventi su 28 siti, senza hash.

Esiste una denylist — OpenAI esclude password, codici monouso, numeri di carta, codici fiscali/SSN, date di nascita, anamnesi, diagnosi e campi giudiziari. È una mitigazione reale e va riconosciuta. È anche una denylist, il che significa che protegge le categorie a cui qualcuno ha pensato.

L'identità non è l'unico payload. Gli eventi trasportano anche il percorso URL della pagina che li ha generati — pagine prodotto, URL di articoli, passaggi di checkout — con i termini di ricerca nella query string riportati come rimossi. Per un retailer questo significa gli articoli specifici che hai guardato; per un editore significa gli articoli specifici che hai letto.

★ Il default è cambiato il 2026-08-17. L'AAM era già il default per i nuovi pixel Web creati; quel giorno OpenAI lo ha attivato anche sui pixel esistenti, con logica di opt-out invece che di opt-in. Il ricercatore ha trovato l'AAM attivo su 638 pixel su 881 di cui erano visibili le impostazioni. Se hai installato un pixel OpenAI all'inizio del 2026 e non l'hai più toccato, ad agosto il tuo sito ha iniziato a raccogliere campi di form senza alcun deploy da parte tua.

Dove non funziona​

Questo non è un tracker universale, e le eccezioni contano più del solito:

  • Chrome per Android — la piattaforma su cui il ricercatore lo ha riprodotto. Interessata.
  • Safari, e Chrome su iOS — non interessati. L'Intelligent Tracking Prevention di Safari blocca il cookie di terze parti, e ogni browser iOS gira su WebKit, quindi "Chrome su iPhone" eredita lo stesso blocco. Un utente iPhone e un utente Android sono davvero in modelli di minaccia diversi qui.
  • Chrome desktop — non testato nel lavoro pubblicato. Ignoto, non sicuro.
  • La copertura è comunque parziale. Solo circa il 20% delle sessioni ChatGPT osservate ha prodotto un token di sync; il client web mobile serve annunci senza sincronizzare. Qualunque grafo esista è rado, non totale.

Quest'ultimo numero taglia in due sensi. Significa che l'identificatore è tutt'altro che universale — e significa che "ho controllato una volta e non ho visto nulla" non è prova di assenza.

Controlla il tuo browser​

Cinque minuti, senza strumenti oltre ai DevTools. Fallo su Chrome per Android se vuoi vedere il meccanismo in azione.

Cerca prima il sync, poi il cookie

# 1. Open ChatGPT with DevTools → Network, filter: obi
#    Look for a POST to:
#      /backend-api/bazaar/obi/sync-token      (logged in)
#      /backend-anon/bazaar/obi/sync-token     (logged out)
#    then a cross-site POST to:
#      https://bzr.openai.com/v1/obi/sync

# 2. Paste the JWT from the sync-token response into a local decoder.
#    You are looking for these claims:
#      iss: "chatgpt-wadi"    aud: "bzr.openai.com"
#      purpose: "obi_sync"    consent_decision: "analytics_allowed"
#      subject_type: "account_user" | "anonymous"

# 3. Application → Cookies → https://chatgpt.com
#    Look for __obi on domain .openai.com, Max-Age 31536000,
#    HttpOnly, Secure, SameSite=None.

# 4. Now visit a retailer that runs the pixel and filter for:
#      bzrcdn.openai.com/sdk/oaiq.min.js
#      bzr.openai.com/v1/sdk/events
#    Check the Cookies tab of that events request: __obi riding along
#    is the cross-site join, observed on your own machine.

Decodifica il JWT in locale. Incollare un token che contiene un sub legato a un account in un decoder web consegna quell'identificatore a una terza parte — un modo leggermente assurdo di concludere un'indagine sulla privacy.

Se gestisci il pixel​

Qui sei titolare del trattamento in un modo che lo snippet di installazione del pixel non rendeva ovvio. Due impostazioni e un'abitudine:

Guided walkthrough1 of 4
  1. Ads Manager → Tools → Conversions → Data Source → Edit pixel, poi disattiva Automatic Advanced Matching (oppure conferma che lo vuoi attivo). L'impostazione è per pixel — se ne gestisci diversi, ne cambi diversi. Dal 2026-08-17 il default è attivo, quindi l'inazione è una decisione.

★ Hash non significa anonimo. Lo SHA-256 di un indirizzo email è un identificatore deterministico: chiunque possieda la stessa email calcola lo stesso digest. Questo è esattamente il punto — è così che funziona il join. Tratta l'identità in forma hash come dato personale pseudonimizzato nella tua analisi di conformità, non come dato de-identificato.

Se usi soltanto ChatGPT​

  • Disattiva Impostazioni → Controlli dei dati → Privacy marketing. È l'interruttore giusto a cui pensare; l'effetto su __obi non è confermato, come sopra.
  • Usa il gestore dei cookie, non solo l'impostazione dell'account — per la navigazione non autenticata, il link a piè di pagina "Gestisci cookie" / "Le tue scelte sulla privacy" è l'unica superficie che hai.
  • Invia il Global Privacy Control. OpenAI dichiara di rispettare il GPC come segnale di opt-out legalmente valido. Firefox e Brave lo inviano nativamente; per Chrome esistono estensioni. È un segnale leggibile da una macchina con peso normativo alle spalle in California e in diverse altre giurisdizioni.
  • La scelta del browser è un controllo reale qui. Safari blocca il meccanismo oggi. Non è un argomento per cambiare browser per un cookie — è un promemoria del fatto che la policy sui cookie di terze parti pesa sulla tua postura di privacy più di qualsiasi interruttore tu possa trovare in una schermata di impostazioni.

Cosa è effettivamente accertato e cosa no​

Vale la pena tenerlo distinto, perché la copertura mediatica confonde le cose:

Accertato tramite cattura: gli endpoint, gli attributi del cookie, i claim del JWT incluso consent_decision, le quattro fonti di raccolta, la separazione campo per campo tra hash e chiaro (che la documentazione di OpenAI conferma), i conteggi — 936 pixel su 1.029 hostname, 12 valori __obi su 30 sotto più inserzionisti, 638 pixel su 881 con AAM attivo.

Dedotto, ed etichettato come tale dall'autore: che __obi venga ricollegato lato server a un account ChatGPT. Il design del token va in quella direzione; il collegamento non è stato osservato.

Senza risposta da OpenAI: perché __obi è classificato come analytics, e se rifiutare il consenso marketing produca comunque il sync.

Non testato: Chrome desktop, e se l'interruttore Privacy marketing fermi il comportamento sulla rete.

Lo stack pubblicitario in otto termini
Premi Invio o Spazio per girare la carta. Usa le frecce sinistra e destra per spostarti tra le carte.Termine mostrato.
1 / 8

Verifica te stesso

0/5
  1. Un utente europeo clicca "Rifiuta marketing, consenti analytics" in un banner cookie. Cosa succede al sync di __obi?
  2. Un inserzionista chiama oaiq("consent", false) a ogni caricamento di pagina prima del consenso. Cosa rimuove davvero?
  3. Quali campi, secondo la documentazione del pixel di OpenAI, vengono trasmessi SENZA hash?
  4. Perché un utente iPhone si trova in una posizione diversa da un utente Android qui?
  5. Hai installato un pixel pubblicitario OpenAI a marzo 2026 e non hai più toccato le impostazioni. Cosa è cambiato il 2026-08-17?

Fonti e approfondimenti​

Prossimi passi​