- ChatGPT 응답 스트림에는 모델 출력과 함께 광고 유닛 객체가 섞여 들어오며, SSE의
delta이벤트로single_advertiser_ad_unit형태가 전달됨 - 광고 카드의 이미지와 favicon은
bzrcdn.openai.com에서 로드되고,target.open_externally: false링크는 ChatGPT 내부 웹뷰에서 열려 클릭 이후 merchant 페이지 이동까지 같은 흐름 안에서 이어짐 - 같은 계정에서도 대화 주제에 따라 서로 다른 광고주가 붙으며, 베이징 여행·항공편·NBA 플레이오프·패션·생산성 같은 맥락에 맞춰 Grubhub, GetYourGuide, Axel, Gametime, Aritzia, Canva가 각각 관찰됨
- 광고와 클릭 URL에는 Fernet 토큰 기반 식별값이 함께 전달되고,
ads_spam_integrity_payload,oppref,olref,ad_data_token이 클릭 무결성 확인과 식별 흐름에 쓰이며oppref는__oppref쿠키로 30일 저장됨 - merchant 페이지는 OAIQ SDK 를 불러
measure이벤트를bzr.openai.com으로 전송하며, ChatGPT 클릭 뒤 merchant 측 이벤트가 다시 OpenAI로 돌아가는 어트리뷰션 루프가 완성됨
광고 삽입과 클릭 흐름
- ChatGPT 응답 스트림에는 모델 출력과 함께
single_advertiser_ad_unit형태의 광고 객체가 섞여 들어옴- 대화 요청 시
chatgpt.com/backend-api/f/conversation에서 SSE 응답이 열리며, 일부delta이벤트로 광고 유닛이 전달됨 - 광고 객체에는
ads_request_id,ads_spam_integrity_payload,advertiser_brand,carousel_cards,ad_data_token등이 포함됨 advertiser_brand.id는adacct_<32-hex>형식의 merchant 계정 식별자로 보임
- 대화 요청 시
- 광고 카드의 브랜드 favicon과 이미지가 모두
bzrcdn.openai.com에서 로드됨- 광고 크리에이티브를 merchant가 아니라 OpenAI 쪽에서 호스팅하는 구조가 드러남
target.open_externally: false인 링크는 ChatGPT 내부 웹뷰에서 열림- 클릭 뒤 merchant 페이지로 이동하는 흐름도 OpenAI가 직접 관찰할 수 있게 됨
- 클릭 URL에는
utm_source=chatgptpilot같은 파라미터와 함께oppref,olref가 붙음- 예시 링크는
https://grubhub.com/?utm_source=chatgptpilot...&oppref=...&olr…=...형태로 열림
- 예시 링크는
타게팅과 어트리뷰션 체인
- 같은 계정에서도 대화 주제에 따라 서로 다른 광고주가 전달됨
- 베이징 여행 계획에는 Grubhub의 "Get Chinese Food Delivered"가 붙음
- 베이징 투어 예약에는 GetYourGuide의 Great Wall tour와
ad_id=beijing003가 붙음 - 베이징 항공편에는 Axel과
utm_term=vflight_beijing_03가 붙음 - NBA 플레이오프에는 Gametime과
utm_campaign=nba&utm_content=playoffs가 붙음 - 봄 패션과 트렌드에는 Aritzia와
utm_campaign=chatgptpilot_trav3가 붙음 - 생산성과 슬라이드 관련 대화에는 Canva와
utm_campaign=…link-clicks_products가 붙음
- 이 관찰에서는 대화 맥락 기반 타게팅이 드러남
- 이전 대화 기록까지 반영하는지는 확인되지 않음
- 광고마다 네 개의 Fernet 토큰이 함께 전달됨
ads_spam_integrity_payload는 SSE 안에만 들어가며, 위조 클릭에 대한 서버 측 무결성 검사에 쓰이는 값으로 정리됨oppref는 클릭 URL에 붙고 OAIQ SDK가 이를__oppref쿠키로 복사해 720시간, 30일 TTL로 저장함olref는oppref와 함께 클릭 URL에 붙지만, 관찰된 SDK에서는 저장되지 않음ad_data_token은 base64로 감싼 JSON 안에 또 다른 Fernet 토큰을 담는 구조임
- Fernet 토큰의 첫 9바이트는 공개 형식이라 발급 시각을 키 없이 복원할 수 있음
- 버전 바이트
0x80과 8바이트 big-endian Unix timestamp가 포함됨 - 포착된 Home Depot 클릭 URL은 2026-04-26 11:30:08 UTC에 발급됐고, 브라우저가 merchant 페이지를 가져온 시각은 11:31:43으로 95초 지연이 계산됨
- 버전 바이트
merchant 측 추적 SDK
- merchant 페이지는 OAIQ SDK
https://bzrcdn.openai.com/sdk/oaiq.min.js를 로드함- 관찰된 버전은
0.1.3임 - 초기화 코드는
oaiq('init', { pid: '<merchant pixel ID>' });형태로 들어감 - 페이지 측정은
oaiq('measure', 'contents_viewed', { ... });형태로 호출됨
- 관찰된 버전은
init시점에 OAIQ는 URL의?oppref=값을 읽어__oppref1st-party 쿠키로 기록함- 함께
__oaiq_domain_probe쿠키도 설정함
- 함께
- 이후 모든
measure호출은 JSON을https://bzr.openai.com/v1/sdk/…로 POST함- 클릭 이후 merchant 측 이벤트가 OpenAI로 되돌아가는 어트리뷰션 루프가 완성됨
- 차단이나 점검 대상으로는 두 도메인과 두 쿠키가 직접 제시됨
-
bzrcdn.openai.com,bzr.openai.com__oppref,__oaiq_domain_probe
-