사용자 에이전트 타겟팅

User-Agent 헤더는 이전부터 시작 기기의 브라우저 및 플랫폼과 같은 유용한 타겟팅 데이터를 제공하기 위해 입찰 요청에 포함되어 왔습니다. 그러나 브라우저는 사용하기 어렵고 사용자 개인 정보를 더 잘 보호하기 위해 User-Agent를 대폭 수정하는 경우가 많습니다. 이에 따라 Google은 User-Agent 클라이언트 힌트를 지원합니다. 이 힌트는 가능한 경우 User-Agent 헤더를 보완하기 위해 입찰 요청에 포함됩니다. 이러한 클라이언트 힌트는 Sec-Ch-UA* 헤더 또는 JavaScript 클라이언트 힌트 API에서 가져올 수 있습니다.

User-Agent 헤더는 BidRequest.device.ua 필드에 문자열로 노출됩니다.

UserAgent 메시지는 클라이언트 힌트를 사용할 수 있는 경우 클라이언트 힌트로 채워지지만, 그렇지 않은 경우에는 User-Agent 헤더에서 파싱된 값을 기반으로 채워집니다. 이는 BidRequest.device.sua 필드에 노출됩니다.

입찰자는 User-Agent 문자열 대신 UserAgent 메시지를 사용하는 것이 좋습니다.

UserAgent가 채워지는 방식

User-Agent 헤더와 달리 UserAgent 메시지는 특정 정보의 여러 필드로 분류된 사용자 에이전트 정보를 나타냅니다.

광고 요청에서 클라이언트 힌트를 사용할 수 있는지에 따라 UserAgent 메시지는 다음과 같은 방식으로 채워질 수 있습니다.

  • 요청에 엔트로피가 낮은 클라이언트 힌트가 하나 이상 포함된 경우 UserAgent는 콘텐츠를 기반으로 채워집니다.
  • 요청에 User-Agent 헤더만 포함된 경우 헤더에서 파싱할 수 있는 항목을 기반으로 UserAgent가 채워집니다.

예: User-Agent 헤더를 기반으로 UserAgent 채우기

브라우저가 다음 헤더를 전송하는 광고 요청이 있다고 가정해 보겠습니다.

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
            AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36

User-Agent 헤더를 기반으로만 채워진 UserAgent는 다음과 같이 표시될 수 있습니다.

browsers: [{ brand: "Mozilla", version: ["5", "0"] },
           { brand: "AppleWebKit", version: ["537", "36"] },
           { brand: "Chrome", version: ["103", "0", "0", "0"] },
           { brand: "Safari", version: ["537", "36"] }],
platform: { brand: "Windows NT", version: ["10", "0"] },
mobile: false,
architecture: "x86",
bitness: "64",
model: "x64",
source: USER_AGENT_STRING

예: 클라이언트 힌트를 기반으로 UserAgent 채우기

브라우저가 다음 헤더를 전송하는 광고 요청이 있다고 가정해 보겠습니다.

User-Agent:                 Mozilla/5.0 (Windows NT 10.0; Win64; x64)
                            AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36
Sec-Ch-Ua:                  ".Not/A)Brand";v="99", "Google Chrome";v="103", "Chromium";v="103"
Sec-Ch-Ua-Arch:             x86
Sec-Ch-Ua-Full-Version:     103.0.5060.134
Sec-Ch-Ua-Mobile:           ?0
Sec-Ch-Ua-Platform:         Windows
Sec-Ch-Ua-Platform-Version: 15.0.0

엔트로피가 낮은 클라이언트 힌트가 하나 이상 포함된 경우 User-Agent 헤더가 있더라도 이러한 헤더의 콘텐츠를 기반으로 UserAgent가 채워집니다. 다음과 같이 표시됩니다.

browsers: [{ brand: ".Not/A)Brand", version: ["99", "0", "0", "0"] },
           { brand: "Google Chrome", version: ["103", "0", "5060", "134"] },
           { brand: "Chromium", version: ["103", "0", "5060", "134"] }],
platform: { brand: "Windows", version: ["15", "0", "0"] },
mobile: false,
architecture: "x86",
bitness: "64",
source: CLIENT_HINTS_HIGH_ENTROPY

User-Agent 헤더와 클라이언트 힌트를 기반으로 채우기

일부 필드는 User-Agent 헤더를 기반으로 하는지 아니면 클라이언트 힌트를 기반으로 하는지에 따라 다르게 채워집니다. 다음은 이러한 차이점을 요약한 내용입니다.

  • 동일한 브라우저와 플랫폼의 경우 UserAgent.browsers.brandUserAgent.platform.brand는 User-Agent 헤더 또는 클라이언트 힌트를 기반으로 하는 UserAgent 간에 종종 다릅니다. 예를 들어 UserAgent.platform.brand는 User-Agent 헤더를 기반으로 하는 경우 'Windows NT'로, 클라이언트 힌트를 기반으로 하는 경우 'Windows'로 표시될 수 있습니다.
  • 일부 UserAgent.browsers 항목은 User-Agent 헤더 또는 클라이언트 힌트에 고유합니다. 예를 들어 UserAgent가 User-Agent 헤더를 기반으로 하는 경우 'AppleWebKit'이 표시되고 클라이언트 힌트를 기반으로 하는 경우에만 'Chromium'이 표시됩니다.
  • User-Agent 헤더를 기반으로 하는 UserAgent만 고정 값을 포함할 수 있습니다. 예를 들어 플랫폼이 Windows 11 22H2인 경우 UserAgent.platform.brand는 'Windows NT'로 설정되고 UserAgent.platform.version는 10 이상의 Windows 버전의 고정 값이므로 [“10”, “0”]로 설정됩니다.

클라이언트 힌트를 기반으로 하는 UserAgent의 데이터는 일반적으로 동결되거나 수정된 정보를 부정확하게 대체하지 않습니다. User-Agent 헤더와 클라이언트 힌트를 기반으로 한 UserAgent 간에 불일치가 있는 경우 UserAgent의 정보를 사용하는 것이 좋습니다.

UserAgent 객체 필드

이 섹션에서는 Google RTB 관련 동작 및 사용 권장사항에 중점을 두고 각 필드를 요약합니다.

브라우저

일반적으로 구체성별로 정렬된 BrandVersion 항목 목록을 포함합니다. 예를 들어 browsers의 콘텐츠를 나열하면 각 항목의 brand가 다음 순서로 표시될 수 있습니다.

브랜드 의미
Mozilla Mozilla 호환
AppleWebKit AppleWebKit 기반으로 Mozilla의 하위 집합입니다.
Chrome AppleWebKit 호환 브라우저의 하위 집합인 Chrome 브라우저
Safari 모바일이 아닌 데스크톱 변형입니다.

UserAgent는 특히 클라이언트 힌트를 기반으로 하는 경우 브라우저를 특정 순서로 나열하지 않을 수도 있습니다. 다음은 source 값에 따라 예상할 수 있는 다른 차이점을 설명합니다.

  • USER_AGENT: version 필드는 주 버전으로 축소되거나 동결될 수 있습니다 (상담사별 정책에 따라 다름). 값이 고정되었다는 표시가 없습니다.
  • CLIENT_HINTS_LOW_ENTROPYCLIENT_HINTS_HIGH_ENTROPY: 항목이 어떤 기준에 따라 순서가 지정되지 않습니다. 예를 들어 동일한 브라우저가 각 요청에서 이러한 항목을 다른 순서로 전송할 수 있습니다. 무시해야 하는 GREASE 항목이 포함될 수도 있습니다.
  • CLIENT_HINTS_HIGH_ENTROPY: 브라우저에 있는 모든 version 필드는 전체 버전으로 설정할 수 있습니다.

플랫폼

플랫폼을 설명하는 BrandVersion 항목입니다. 이는 User-Agent 헤더와 클라이언트 힌트에서 호환되지 않을 수 있으므로 일부 플랫폼을 타겟팅하려면 두 이름을 테스트해야 할 수 있습니다. 예를 들어 Apple의 Macintosh 운영체제는 사용자 에이전트 헤더에서는 'Macintosh'로 브랜딩되지만 클라이언트 힌트에서는 'macOS'로 브랜딩됩니다. 다음은 source의 값에 따라 예상할 수 있는 다른 차이점을 설명합니다.

  • USER_AGENT: version 필드는 메인 버전으로 축소되거나 동결될 수 있습니다. 값이 고정되었다는 표시가 없습니다.
  • CLIENT_HINTS_LOW_ENTROPY: version 필드가 채워지지 않습니다.
  • CLIENT_HINTS_HIGH_ENTROPY: version 필드는 전체 버전으로 설정될 수 있습니다.

모바일

광고와 같은 콘텐츠를 소형 화면 또는 터치 입력에 최적화해야 하는지 여부를 나타냅니다. 모바일 브라우저가 '데스크톱 사이트'를 요청하도록 구성할 수 있으므로 이 속성이 반드시 기기 유형을 나타내는 것은 아닙니다.

아키텍처

'x86' 또는 'arm'과 같은 플랫폼 아키텍처를 식별합니다.

클라이언트 힌트를 기반으로 하는 UserAgent의 경우 sourceCLIENT_HINTS_HIGH_ENTROPY로 설정된 경우에만 채워집니다.

비트 수

플랫폼의 비트 수(예: 32비트 또는 64비트 CPU)를 식별합니다. 이 필드는 아키텍처에 관한 추가 정보를 제공하는 정수 문자열입니다. 예를 들어 'x86' 아키텍처의 비트 수는 '32' 또는 '64'로 설정할 수 있습니다.

클라이언트 힌트를 기반으로 하는 UserAgent의 경우 sourceCLIENT_HINTS_HIGH_ENTROPY로 설정된 경우에만 채워집니다.

모델

기기 모델을 식별합니다. 노트북이나 데스크톱이 아닌 휴대기기의 경우 'Pixel 6 Pro'와 같은 모델 이름으로 채워집니다.

다음은 source 값에 따라 예상되는 차이를 설명합니다.

  • USER_AGENT
    • 휴대기기가 아닌 기기: model 필드에는 종종 결합된 아키텍처 및 비트 값(예: Windows의 'x64')이 포함됩니다. 이 값은 교차 플랫폼이 아닙니다. 예를 들어 Linux에서는 동일한 하드웨어에 'x86_64'를 사용할 수 있습니다.
    • 휴대기기: 이 필드에는 아키텍처와 비트수가 포함되지 않습니다. 이러한 값에 관심이 있으면 UserAgent.architectureUserAgent.bitness를 참고하세요.
  • CLIENT_HINTS_LOW_ENTROPY: model 필드가 채워지지 않습니다.
  • CLIENT_HINTS_HIGH_ENTROPY: model 필드는 휴대기기의 기기 모델에 대해서만 채워집니다. 데스크톱 플랫폼에는 값이 설정되어 있지 않습니다.

소스

UserAgent를 만드는 데 사용된 헤더를 식별합니다. 클라이언트 힌트의 경우 다음 두 가지 사례를 구분합니다.

  • CLIENT_HINTS_LOW_ENTROPY: 기본 클라이언트 힌트만 사용할 수 있습니다.
  • CLIENT_HINTS_HIGH_ENTROPY: 엔트로피가 높게 분류된 필드가 하나 이상 포함된 클라이언트 힌트를 사용할 수 있습니다.