OpenAI 的廣告平台有兩個部分。在 ChatGPT 端,後端會在模型回應時,將結構化的 `single_advertiser_ad_unit` 物件注入對話的 SSE 串流中。在商家端,一個名為 OAIQ 的追蹤 SDK 會在訪客的瀏覽器中運行,並將產品瀏覽資訊回報給 OpenAI。這兩者透過 Fernet 加密的點擊代幣連結在一起,每個廣告配有四個代幣。
我在一個經過同意的行動流量研究車隊中捕捉到了這兩個部分。以下所有內容均來自觀察到的流量。
當您向 ChatGPT 發送訊息時,後端會在 `chatgpt.com/backend-api/f/conversation` 開啟一個 SSE 回應。該串流中的大多數事件是模型輸出。有些是廣告單元。它們看起來像這樣:
一個帳戶在面板中收到了六個不同對話中的六個不同廣告,涵蓋六個不同主題。廣告的鎖定是根據對話內容進行的:
同一個帳戶,不同的主題,不同的品牌。我沒有找到證據表明鎖定是否也納入了先前的對話歷史記錄。
每個廣告都附帶四個不同的 Fernet 加密區塊。根據它們出現的位置,它們的作用如下:
Fernet 的前九個位元組是公開的:版本位元組 `0x80` 加上一個 8 位元組大端序 Unix 時間戳。因此,在沒有 OpenAI 金鑰的情況下,可以恢復這些代幣中的任何一個的鑄造時間:
我捕捉到的 Home Depot 點擊 URL 是在 11:30:08 鑄造的;瀏覽器在 11:31:43 載入了商家頁面。點擊延遲:95 秒。
商家頁面載入了 OAIQ SDK: