User-Agent 헤더는 이전에 기기의 브라우저 및 플랫폼과 같은 유용한 타겟팅 데이터를 제공하기 위해 입찰 요청에 포함되어 있었습니다. 그러나 브라우저는 사용자 에이전트를 크게 수정하는 경우가 많은데, 이는 사용의 어려움으로 인해 사용자 개인 정보를 더 안전하게 보호하기 위함입니다. 이에 따라 Google은 사용자 에이전트 헤더를 보완할 수 있는 경우 입찰 요청에 포함되는 사용자 에이전트 클라이언트 힌트를 지원합니다. 클라이언트 힌트 (줄여서)는 Sec-Ch-UA* 헤더 또는 JavaScript Client Hints API에서 가져올 수 있습니다.
사용자 에이전트 헤더는 사용되는 프로토콜에 따라 다음 문자열 필드 중 하나와 함께 노출됩니다.
- Google:
BidRequest.user_agent
- OpenRTB:
BidRequest.device.ua
UserAgent
메시지는 클라이언트 힌트를 사용할 수 있을 때 그 내용으로 채워지지만 그 외의 경우에는 사용자 에이전트 헤더에서 파싱된 값에 따라 채워집니다. 사용되는 프로토콜에 따라 다음 필드 중 하나로 표시됩니다.
- Google:
BidRequest.user_agent_data
- OpenRTB:
BidRequest.device.sua
입찰자는 사용자 에이전트 문자열이 아닌 UserAgent
메시지를 사용하는 것이 좋습니다.
UserAgent
가 채워지는 방법
사용자 에이전트 헤더와 달리 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
적어도 낮은 엔트로피 클라이언트 힌트가 포함된 경우 사용자 에이전트 헤더가 있더라도 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
사용자 에이전트 헤더와 클라이언트 힌트를 기반으로 채우기
일부 필드는 사용자 에이전트 헤더 또는 클라이언트 힌트 중 무엇을 기반으로 하는지에 따라 다르게 채워집니다. 다음은 이러한 차이점을 요약한 내용입니다.
- 동일한 브라우저와 플랫폼에서
UserAgent.browsers.brand
와UserAgent.platform.brand
는 사용자 에이전트 헤더 또는 클라이언트 힌트에 따라UserAgent
간에 다른 경우가 많습니다. 예를 들어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”, “0”]
로 설정됩니다. 이는 10 이상의 Windows 버전에 대한 고정 값이기 때문입니다.
클라이언트 힌트를 기반으로 하는 UserAgent
의 데이터는 일반적으로 고정되거나 수정된 정보를 부정확하게 대체하지 않습니다. 클라이언트 힌트에 기반한 User-Agent 헤더와 UserAgent
간에 불일치가 있는 경우 UserAgent
의 정보를 사용하는 것이 좋습니다.
UserAgent 객체 필드
이 섹션에서는 Google RTB 관련 동작 및 사용 권장사항에 중점을 두고 각 필드를 요약합니다.
브라우저
일반적으로 특정성에 따라 정렬되는 BrandVersion 항목의 목록을 포함합니다. 예를 들어 browsers
의 콘텐츠를 나열하면 각 항목의 brand
가 다음과 같은 순서로 표시될 수 있습니다.
브랜드 | 의미 |
Mozilla | Mozilla 호환 |
AppleWebKit | AppleWebKit 기반이며 Mozilla의 하위 집합입니다. |
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 운영체제는 User-Agent 헤더에는 '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
: 높은 엔트로피로 분류된 필드를 하나 이상 포함한 클라이언트 힌트를 사용할 수 있습니다.