User-Agent 헤더는 시작 기기의 브라우저 및 플랫폼과 같은 유용한 타겟팅 데이터를 제공하기 위해 입찰 요청에 포함되어 왔습니다. 하지만 브라우저는 사용이 어렵고 사용자 개인 정보를 더 잘 보호하기 위해 사용자 에이전트를 대폭 수정하는 경우가 많습니다. 이에 따라 Google은 사용자 에이전트 클라이언트 힌트를 지원합니다. 이는 사용자 에이전트 헤더를 보완하기 위해 사용 가능한 경우 입찰 요청에 포함됩니다. 이러한 클라이언트 힌트 (줄여서)는 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 헤더와 Client Hints를 기반으로 채우기
일부 필드는 User-Agent 헤더를 기반으로 하는지 아니면 클라이언트 힌트를 기반으로 하는지에 따라 다르게 채워집니다. 다음은 이러한 차이점을 요약한 내용입니다.
- 브라우저와 플랫폼이 동일한 경우
UserAgent.browsers.brand와UserAgent.platform.brand는 사용자 에이전트 헤더 또는 클라이언트 힌트를 기반으로 하는UserAgent간에 종종 다릅니다. 예를 들어 User-Agent 헤더를 기반으로 하는 경우UserAgent.platform.brand이 'Windows NT'로 표시될 수 있고, 클라이언트 힌트를 기반으로 하는 경우 'Windows'로 표시될 수 있습니다. - 일부
UserAgent.browsers항목은 User-Agent 헤더 또는 클라이언트 힌트에서만 고유합니다. 예를 들어UserAgent이 사용자 에이전트 헤더를 기반으로 하는 경우 'AppleWebKit'이 표시되지만, 클라이언트 힌트를 기반으로 하는 경우에는 'Chromium'만 표시됩니다. - 사용자-에이전트 헤더를 기반으로 하는
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 | Mozilla의 하위 집합인 AppleWebKit 기반입니다. |
| Chrome | Chrome 브라우저, AppleWebKit 호환 브라우저의 하위 집합 |
| Safari | 모바일이 아닌 데스크톱 변형입니다. |
UserAgent는 항상 특정 순서로 브라우저를 나열하지는 않습니다. 특히 클라이언트 힌트를 기반으로 하는 경우에 그렇습니다. 다음은 source 값에 따라 표시될 수 있는 다른 차이점을 설명합니다.
USER_AGENT:version필드는 주 버전으로 축소되거나 고정될 수 있습니다 (에이전트별 정책에 따라 다름). 값이 고정되었다는 표시가 없습니다.CLIENT_HINTS_LOW_ENTROPY및CLIENT_HINTS_HIGH_ENTROPY: 항목이 기준에 따라 정렬되지 않습니다. 예를 들어 동일한 브라우저가 각 요청에서 이러한 항목을 다른 순서로 보낼 수 있습니다. 무시해야 하는 GREASE 항목도 포함될 수 있습니다.CLIENT_HINTS_HIGH_ENTROPY: 브라우저에서 발견되는 모든version필드는 전체 버전으로 설정될 수 있습니다.
플랫폼
플랫폼을 설명하는 BrandVersion 항목입니다. 이는 사용자 에이전트 헤더와 클라이언트 힌트 간에 호환되지 않을 수 있으므로 일부 플랫폼을 타겟팅하려면 두 이름을 테스트해야 할 수 있습니다. 예를 들어 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비트 CPU가 있는지 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: 엔트로피가 높은 것으로 분류된 필드가 하나 이상 포함된 클라이언트 힌트를 사용할 수 있습니다.