본문으로 건너뛰기
피드

챗GPT 광고는 이렇게 대화창에 끼어들고 추적된다

ai-ml 약 10분
vote
0
댓글
북마크

한 연구자가 동의받은 모바일 트래픽에서 챗GPT 광고 삽입과 광고주 사이트 추적 흐름을 관찰했다. 챗GPT 백엔드는 대화 응답 스트림에 구조화된 광고 객체를 끼워 넣고, 광고주 사이트는 오픈AI의 OAIQ SDK로 클릭 이후 행동을 다시 보고하는 구조였다. 핵심은 Fernet 암호화 토큰 4개로 대화 속 광고 노출, 클릭, 광고주 페이지 방문, 이후 이벤트를 묶는 귀속 루프다.

  • 1

    챗GPT 응답 스트림에 single_advertiser_ad_unit 광고 객체가 모델 출력과 함께 전달됨

  • 2

    광고 클릭 링크에는 oppref와 olref 토큰이 붙고, 광고주 페이지의 OAIQ SDK가 oppref를 30일짜리 1차 쿠키로 저장함

  • 3

    관찰된 광고는 같은 계정에서도 대화 주제에 따라 다른 브랜드가 나오는 문맥 기반 타기팅에 가까웠음

  • 4

    Fernet 토큰은 서버 키 없이는 복호화할 수 없지만 생성 시각은 공개 바이트만으로 확인 가능함

  • 챗GPT 광고는 그냥 화면 어딘가에 붙는 배너가 아니라, 대화 응답 스트림 안에 구조화된 객체로 들어오는 방식이었음

    • 사용자가 메시지를 보내면 chatgpt.com/backend-api/f/conversation 쪽으로 서버 전송 이벤트(SSE) 응답이 열림
    • 대부분은 모델 출력 이벤트지만, 중간에 single_advertiser_ad_unit 타입의 광고 이벤트가 섞여 들어감
    • 객체 안에는 광고 요청 ID, 광고주 브랜드, 캐러셀 카드, 이미지, 클릭 대상 URL, 광고 데이터 토큰 같은 값이 들어 있었음
  • 광고 객체 이름부터 꽤 노골적임. single_advertiser_ad_unit이라는 타입명은 “한 광고주짜리 광고 단위”라는 뜻에 가깝고, 다른 형제 타입도 있을 법한 네이밍임

    • 광고주 ID는 adacct_ 뒤에 32자리 16진수가 붙는 형태였고, 광고주 계정 단위로 안정적인 식별자처럼 보였음
    • 광고주의 파비콘과 광고 이미지는 모두 bzrcdn.openai.com에서 로드됨
    • 즉 광고 소재를 광고주 서버가 아니라 오픈AI 쪽 CDN이 호스팅하는 구조였음
  • 클릭은 챗GPT 안의 인앱 웹뷰로 열리도록 설정돼 있었음

    • 광고 카드의 target.open_externally 값이 false였음
    • 사용자가 바깥 브라우저로 바로 나가는 게 아니라 챗GPT 안에서 광고주 페이지를 여는 흐름이라, 오픈AI가 클릭 이후 내비게이션도 관찰하기 쉬워짐
    • 여기에 광고주 사이트의 픽셀 신호까지 붙으면, 대화창에서 광고를 본 뒤 실제 사이트에서 뭘 봤는지까지 이어지는 그림이 나옴

중요

> 핵심은 “광고 노출” 하나가 아니라, 대화 스트림 광고 객체, 클릭 URL 토큰, 인앱 웹뷰, 광고주 SDK 이벤트가 한 루프로 묶인다는 점임.

문맥 타기팅은 꽤 직접적으로 보임

  • 같은 계정에서도 대화 주제가 바뀌면 완전히 다른 광고주가 나왔음

    • 베이징 여행 계획 대화에서는 Grubhub의 “중국 음식 배달” 광고가 나왔음
    • 베이징 투어 예약 대화에서는 GetYourGuide의 만리장성 투어 광고가 나왔음
    • 베이징 항공권 대화에서는 항공권 관련 캠페인이 붙었음
    • NBA 플레이오프 대화에서는 Gametime 광고가 나왔고, 봄 패션 트렌드 대화에서는 Aritzia 광고가 나왔음
    • 생산성이나 슬라이드 관련 대화에서는 Canva 광고가 붙었음
  • 이 관찰만 놓고 보면 최소한 대화 주제 기반 문맥 타기팅은 작동하고 있었음

    • 연구자는 이전 대화 기록까지 타기팅에 쓰이는지는 확인하지 못했다고 선을 그음
    • 그래서 “챗GPT가 모든 과거 대화를 광고에 쓴다” 같은 결론까지 가면 안 됨
    • 확인된 건 같은 계정, 다른 대화 주제, 다른 광고주라는 패턴임

광고 하나에 Fernet 토큰이 4개 붙음

  • 광고에는 서로 다른 Fernet 암호화 토큰 4개가 실려 있었음

    • ads_spam_integrity_payload는 SSE 데이터 안에만 있고 클릭 URL에는 없었음. 위조 클릭을 막는 서버 측 무결성 체크 용도로 보임
    • oppref는 클릭 URL에 붙고, 광고주 사이트의 OAIQ 픽셀이 __oppref 쿠키로 그대로 복사함
    • olref도 클릭 URL에 붙지만 관찰된 SDK에서는 저장되지 않았음. 노출이나 아웃바운드 링크 기록 쪽에 쓰일 가능성이 있음
    • ad_data_token은 base64로 감싼 JSON 안에 또 다른 Fernet 토큰을 담고 있었고, 서버 측에서 클릭 시점에 대조하는 용도로 추정됨
  • Fernet은 내용을 못 읽게 암호화하지만, 토큰 생성 시각은 일부 공개 바이트만으로 확인할 수 있음

    • Fernet 토큰의 첫 9바이트는 버전 바이트 0x80과 8바이트 빅엔디언 유닉스 타임스탬프임
    • 서버 키가 없어도 토큰이 언제 만들어졌는지는 뽑아낼 수 있음
    • 연구자가 캡처한 Home Depot 클릭 URL은 2026년 4월 26일 11시 30분 8초 UTC에 만들어졌고, 브라우저가 광고주 페이지를 가져온 시각은 11시 31분 43초였음
    • 클릭까지 걸린 시간은 95초였음. 이런 디테일이 실제 트래픽 관찰 기반이라는 느낌을 확 줌

ℹ️참고

> Fernet 토큰의 내용을 복호화한 건 아님. 다만 포맷상 생성 시각은 암호화 키 없이도 읽을 수 있어서, 토큰 발급과 실제 클릭 사이의 시간차를 계산할 수 있었음.

광고주 사이트에서는 OAIQ SDK가 루프를 닫음

  • 사용자가 광고 카드를 누르면 광고주 URL에 opprefolref가 붙은 채로 이동함

    • 예시 흐름에서는 utm_source=chatgptpilot 같은 캠페인 파라미터도 함께 붙었음
    • 일반적인 광고 캠페인 UTM에 오픈AI 전용 귀속 토큰이 추가된 형태라고 보면 됨
  • 광고주 페이지에는 오픈AI의 oaiq.min.js SDK가 로드됨

    • 관찰된 버전은 0.1.3이었음
    • 초기화할 때 광고주 픽셀 ID를 받고, contents_viewed 같은 측정 이벤트를 호출함
    • SDK는 URL의 oppref 값을 읽어서 __oppref라는 1차 쿠키에 저장함
    • 쿠키 TTL은 720시간, 즉 30일임
  • 이후 이벤트는 오픈AI의 수집 엔드포인트로 POST됨

    • 요청은 bzr.openai.com/v1/sdk/events 계열 엔드포인트로 나감
    • 파라미터에는 광고주 ID, SDK 종류, SDK 버전 같은 값이 포함됨
    • 이렇게 되면 “챗GPT 대화에서 광고 노출 → 광고 클릭 → 광고주 사이트 방문 → 상품 조회 같은 후속 행동”을 한 광고 루프로 이어 붙일 수 있음
sequenceDiagram
    participant 사용자
    participant 챗GPT백엔드
    participant 챗GPT웹뷰
    participant 광고주사이트
    participant 오픈AI수집서버

    사용자->>챗GPT백엔드: 대화 메시지 전송
    챗GPT백엔드-->>사용자: SSE로 모델 출력과 광고 객체 전달
    사용자->>챗GPT웹뷰: 광고 카드 클릭
    챗GPT웹뷰->>광고주사이트: oppref와 olref가 붙은 URL 열기
    광고주사이트->>광고주사이트: OAIQ SDK가 oppref를 30일 쿠키로 저장
    광고주사이트->>오픈AI수집서버: 상품 조회 등 픽셀 이벤트 전송
  • 개발자 입장에서 재밌는 지점은 챗GPT가 광고를 “대화형 UI에 맞게” 넣고 있다는 거임

    • 전통적인 웹 광고처럼 DOM 어딘가에 광고 스크립트가 붙는 게 아니라, 백엔드가 대화 이벤트 스트림에 광고 단위를 직접 넣음
    • 모델 출력과 광고 단위가 같은 스트리밍 채널에 있으니, 제품 경험상으로는 답변의 일부처럼 매끄럽게 보일 수 있음
    • 반대로 투명성이나 추적 범위 관점에서는 사용자가 어디까지 광고 시스템에 들어왔는지 알아차리기 어려울 수도 있음
  • 다만 이 글에서 확인된 건 관찰된 트래픽의 구조지, 오픈AI의 전체 광고 정책이나 내부 타기팅 로직 전부는 아님

    • 사전 대화 기록을 쓰는지, 계정 프로필을 쓰는지, 어떤 기준으로 광고주를 고르는지는 확정할 수 없음
    • 그래도 대화 주제 기반 광고 선택, 4개 토큰 기반 귀속, 광고주 사이트 SDK 추적이라는 큰 흐름은 꽤 선명하게 드러남

기술 맥락

  • 여기서 가장 중요한 선택은 광고를 별도 웹 광고 슬롯이 아니라 챗GPT의 SSE 응답 스트림 안에 넣었다는 점이에요. 챗GPT는 답변을 토큰 단위로 계속 흘려보내는 제품이라, 같은 채널에 광고 객체를 섞으면 UI 입장에서는 자연스럽게 렌더링할 수 있거든요.

  • 귀속 쪽에서는 oppref, olref, ad_data_token, ads_spam_integrity_payload처럼 역할이 나뉜 토큰을 여러 개 둔 게 눈에 띄어요. 하나의 토큰에 모든 걸 넣기보다 클릭 URL, 서버 검증, 광고 데이터 대조, 광고주 픽셀 전달을 분리하면 각 단계에서 필요한 값만 노출할 수 있기 때문이에요.

  • 광고주 사이트에 OAIQ SDK를 심는 방식은 기존 광고 픽셀과 닮아 있어요. 차이는 출발점이 검색 결과나 소셜 피드가 아니라 대화형 AI라는 점이고, 그래서 “어떤 질문을 하다가 이 광고를 봤는가”라는 문맥이 훨씬 강한 신호가 될 수 있어요.

  • 30일짜리 __oppref 1차 쿠키는 클릭 직후 한 번의 방문만 보려는 게 아니라 이후 행동까지 묶으려는 설계로 보여요. 사용자가 바로 구매하지 않고 나중에 돌아와도 광고 기여를 계산할 수 있어야 광고 플랫폼으로서 의미가 생기거든요.

챗GPT 광고가 단순 배너가 아니라 대화 스트림, 인앱 웹뷰, 광고주 픽셀까지 이어지는 폐쇄형 귀속 시스템으로 설계된 게 포인트다. 개발자 입장에서는 AI 서비스가 광고 플랫폼이 될 때 어떤 추적 표면이 생기는지 꽤 구체적으로 볼 수 있는 사례다.

댓글

댓글

댓글을 불러오는 중...

ai-ml

건설업계도 피지컬 AI 실험 중, 관건은 로봇보다 현장 데이터다

국내 건설사들이 인공지능(AI)과 로보틱스를 건설 현장에 적용하려는 실험을 늘리고 있다. GS건설은 로봇을 활용한 자재 운반·반복 작업 자동화를 검토하고, 현대건설은 AI 카메라 기반 안전 기술을 도입하려는 중이다. 다만 실제 안착까지는 사람과 AI의 협업 방식, 현장 작업자의 데이터 활용 체계 같은 숙제가 남아 있다.

ai-ml

AI 모델 접속도 수출통제 대상이 되면 벌어지는 일

앤트로픽이 미국 정부 수출통제 지침에 따라 최신 AI 모델 접근을 출시 사흘 만에 차단했다는 사례를 통해, 클라우드 AI 모델 접근권이 국가 안보와 산업정책에 종속될 수 있다는 문제가 드러났다. 데이터 주권만으로는 부족하고, 모델 능력과 연산 접근권까지 포함한 소버린 AI 전략이 필요하다는 논점이다.

ai-ml

건설 현장에 AI 로봇이 들어오려면 아직 데이터와 협업 방식이 숙제

GS건설, 현대건설, 삼성물산 등 국내 건설사가 AI와 로봇 기술을 현장 자동화와 안전관리, 단지 서비스에 적용하려는 움직임을 보이고 있다. 다만 사람과 로봇이 함께 일하는 방식, 실증 사례 축적, 현장 작업자의 데이터 활용 체계가 갖춰져야 실제 확산이 가능하다는 지적이 나온다.

ai-ml

라벨링 1천 장을 100장으로 줄인다는 슈퍼브에이아이의 비전 AI 플랫폼

슈퍼브에이아이가 2026 스마트테크 코리아에서 데이터 구축부터 모델 개발, 운영까지 묶은 슈퍼브 플랫폼을 공개했다. 비전 파운데이션 모델로 라벨링 부담을 줄이고, 대규모 언어 모델과 비디오 언어 모델을 결합해 텍스트 명령만으로 CCTV 속 위험 상황을 찾는 기능까지 제시했다.

ai-ml

프롬프트만으로 게임 만드는 시대, 진짜 어디까지 왔나

AI가 이미지·영상·코드 생성을 넘어, 탐험 가능한 3D 세계와 게임 프로토타입까지 만들기 시작했다. 구글 딥마인드의 프로젝트 지니부터 오버데어, 버스에잇, 바르코까지 사례는 늘고 있지만, 물리 오류·레이턴시·최적화·조작감 같은 완성도 문제는 아직 사람 몫으로 남아 있다.