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.brand
및UserAgent.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_ENTROPY
및CLIENT_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
의 경우 source
가 CLIENT_HINTS_HIGH_ENTROPY
로 설정된 경우에만 채워집니다.
비트 수
플랫폼의 비트 수(예: 32비트 또는 64비트 CPU)를 식별합니다. 이 필드는 아키텍처에 관한 추가 정보를 제공하는 정수 문자열입니다. 예를 들어 'x86' 아키텍처의 비트 수는 '32' 또는 '64'로 설정할 수 있습니다.
클라이언트 힌트를 기반으로 하는 UserAgent
의 경우 source
가 CLIENT_HINTS_HIGH_ENTROPY
로 설정된 경우에만 채워집니다.
모델
기기 모델을 식별합니다. 노트북이나 데스크톱이 아닌 휴대기기의 경우 'Pixel 6 Pro'와 같은 모델 이름으로 채워집니다.
다음은 source
값에 따라 예상되는 차이를 설명합니다.
USER_AGENT
- 휴대기기가 아닌 기기:
model
필드에는 종종 결합된 아키텍처 및 비트 값(예: Windows의 'x64')이 포함됩니다. 이 값은 교차 플랫폼이 아닙니다. 예를 들어 Linux에서는 동일한 하드웨어에 'x86_64'를 사용할 수 있습니다. - 휴대기기: 이 필드에는 아키텍처와 비트수가 포함되지 않습니다.
이러한 값에 관심이 있으면
UserAgent.architecture
및UserAgent.bitness
를 참고하세요.
- 휴대기기가 아닌 기기:
CLIENT_HINTS_LOW_ENTROPY
:model
필드가 채워지지 않습니다.CLIENT_HINTS_HIGH_ENTROPY
:model
필드는 휴대기기의 기기 모델에 대해서만 채워집니다. 데스크톱 플랫폼에는 값이 설정되어 있지 않습니다.
소스
UserAgent
를 만드는 데 사용된 헤더를 식별합니다. 클라이언트 힌트의 경우 다음 두 가지 사례를 구분합니다.
CLIENT_HINTS_LOW_ENTROPY
: 기본 클라이언트 힌트만 사용할 수 있습니다.CLIENT_HINTS_HIGH_ENTROPY
: 엔트로피가 높게 분류된 필드가 하나 이상 포함된 클라이언트 힌트를 사용할 수 있습니다.