블로그로 돌아가기

User-Agent 설명: UA 문자열과 브라우저 지문부터 Client Hints까지

User-Agent 문법, 지문 엔트로피, 교차 신호 불일치, Chrome UA Reduction, Client Hints, 서버 측 파싱, 안정적인 브라우저 프로필 관리에 관한 실용적이고 연구 기반의 안내서입니다.

User-Agent 설명: UA 문자열과 브라우저 지문부터 Client Hints까지

브라우저의 개발자 도구에서 네트워크 패널을 열면 거의 항상 User-Agent 헤더를 찾을 수 있습니다. 간단한 소개처럼 보입니다: 어떤 브라우저가 요청을 보내는지, 어떤 운영체제에서 실행되는지, 그리고 어떤 버전을 주장하는지 말이죠.

이로 인해 헤더를 장치 ID로 간주하거나, 한 줄을 바꾸면 브라우저가 다른 기기로 변할 수 있다고 생각하는 유혹이 생깁니다. 두 가지 생각 모두 부분적으로만 맞습니다.

User-Agent 문자열 또는 UA는 클라이언트가 선언하는 호환성 정보입니다. 이 인증은 신뢰할 수 있는 신원 증명이 아니며, 클라이언트가 이를 수정할 수 있습니다. 하지만 그것은 고립되어 존재하지 않는다. 사이트는 Client Hints, JavaScript API, 화면 속성, 폰트, Canvas, WebGL, 네트워크 컨텍스트, 동작 등과 UA을 비교할 수 있습니다. 따라서 유용한 질문은 단순히 UA을 변경할 수 있는지가 아니라, 브라우저의 전체 관측 가능한 표면에서 어떤 역할을 하는가입니다.

이 글은 HTTP 표준과 브라우저 지문 인식 연구를 활용해 네 가지 질문에 답합니다:

  1. 왜 UA 문자열이 브라우저 고고학 조각처럼 보일까요?
  2. UA가 얼마나 많은 식별 정보를 제공할 수 있으며, 연구를 어떻게 해석해야 할까요?
  3. 왜 UA만 바꾸는 것이 더 명백한 불일치를 만들 수 있을까요?
  4. UA Reduction와 User-Agent Client Hints가 실제로 무엇을 바꿨나요?

이 글에서 UA 주로 HTTP User-Agent 요청 헤더를 의미합니다. JavaScript에서는 navigator.userAgentnavigator.userAgentData도 논의합니다. 이 인터페이스들은 관련되어 있지만 모든 브라우저와 컨텍스트에서 영구적으로 동일하지는 않습니다.

1. User-Agent란 무엇인가요?

RFC 9110 10.1.5절 User-Agent를 요청을 시작한 사용자 에이전트에 관한 정보를 담은 필드로 정의합니다. 그 간략한 문법은 다음과 같습니다:

User-Agent = product *( RWS ( product / comment ) )
product    = token [ "/" product-version ]

쉽게 말하면, 문자열은 제품명으로 시작하며 버전도 포함될 수 있습니다. 더 많은 제품이나 댓글을 팔로우할 수 있습니다. 이 표준은 상호운용성 우회 방법, 진단, 분석 등의 활용법을 인정하지만, 불필요한 세부사항을 공개하지 않도록 구현 시 권장합니다: 더 길고 구체적인 UA은 요청 크기와 지문 인식 위험을 모두 증가시킵니다.

현대 Chromium 데스크톱 UA는 다음과 같을 수 있습니다:

Mozilla/5.0 (Windows NT 10.0; Win64; x64)
AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/145.0.0.0 Safari/537.36

문자열을 공간으로 나누면 Chrome와 관련 없어 보이는 여러 이름이 드러납니다:

토큰오늘날 일반적으로 의미하는 바흔한 오해
Mozilla/5.0역사적 호환성 토큰브라우저는 Firefox 또는 Mozilla 제품이어야 합니다
Windows NT 10.0Windows 플랫폼 카테고리; 축소 UA은 Windows 10과 11컴퓨터는 10
Win64; x64이것이 x86-64 아키텍처에서 64비트 Windows이라는 단서정확한 물리적 CPU 모델을 증명합니다
AppleWebKit/537.36엔진 계보 및 호환성 토큰Chrome 여전히 Safari의 완전한 구현
KHTML, like Gecko역사적 호환성 언어KHTML와 Gecko 모두 운영 중입니다
Chrome/145.0.0.0Chrome/Chromium 계열과 주요 버전; 하위 버전 부품은 줄일 수 있습니다정확한 패치 버전을 공개합니다
Safari/537.36이전 사이트와의 호환성을 위해 보유된 토큰브라우저는 Safari

초기 웹사이트들이 종종 브라우저 이름으로 분기되어 UA이 장황해졌습니다. 새로운 브라우저는 올바른 페이지를 받기 위해 구형 제품과의 호환성을 주장해야 했습니다. 이 선언들은 시간이 지나면서 쌓여 문자 그대로 읽을 수 없는 역사적 기록을 남겼습니다.

따라서 UA 파싱의 첫 번째 규칙은 간단합니다: 이는 엄격한 장치 설명이 아니라 호환성 프로토콜입니다.

2. 왜 웹사이트들은 여전히 UA를 사용할까요?

UA 추적에만 사용되는 것은 아닙니다. 정당한 용도는 다음과 같습니다:

  • 호환성 문제가 알려진 구형 브라우저에 대한 백업 역할을 하며;
  • 적절한 설치 프로그램 또는 다운로드 형식을 선택하는 것;
  • 진단 로그에서 버전별 고장 발견;
  • 광범위한 브라우저 가족, 플랫폼, 메이저 버전 배포판 측정;
  • 자동화된 트래픽이나 악의적인 트래픽에서 불가능한 조합을 식별하는 것.

문제는 UA 스니핑이 좁은 호환성 백업에서 제품명으로 기능을 추측하는 것으로 바뀌면서 시작됩니다. 코드는 Chrome 인식하고 특정 API가 존재한다고 가정할 수 있습니다. 이 가정은 임베디드 WebView, Chromium 기반 브라우저, 엔터프라이즈 정책을 가진 브라우저, UA가 정지된 브라우저, 헤더를 변경한 클라이언트에서 실패할 수 있습니다.

더 견고한 연산 순서는 다음과 같습니다:

  1. 능력 탐지가 가능할 때마다 필요한 API 또는 동작을 직접 테스트하세요.
  2. 브라우저 식별이 불가피할 경우, 임시 정규 표현식 대신 유지 관리된 파서를 사용하세요.
  3. 제품이 진정으로 필요한 대략적인 카테고리만 저장하세요.
  4. 알려지지 않은 브랜드, 알려지지 않은 버전, 누락된 필드에 대한 대체 수단을 제공합니다.

3. 브라우저 지문UA 있나요?

더 정확히 말하면, UA 브라우저 지문에 입력되는 한 가지 입력을 의미하며, 보통 전체 지문은 아닙니다.

브라우저 지문 인식은 비밀 일련번호가 필요하지 않습니다. 이는 브라우저가 노출한 비교적 안정적이고 구별되는 속성들의 집합을 측정합니다. UA 브라우저 계열, 버전, 플랫폼에 대한 단서를 제공합니다. 화면 크기, 글꼴, 시간대, Canvas, WebGL, AudioContext 등 다양한 인터페이스가 추가 정보를 제공합니다.

Laperdrix와 동료들인 Browser Fingerprinting: A Survey의 설문조사는 이러한 기법들을 무상태 인식의 한 형태로 논의합니다. 사이트가 반드시 먼저 Cookie를 작성해야 하는 것은 아닙니다; 브라우저가 노출하는 속성에서 방문을 연관시키려 시도할 수 있습니다. "상태 없음"이 서버가 아무것도 저장하지 않는다는 뜻은 아닙니다. 이는 인식 자료가 지속적인 클라이언트 측 식별자에 의존하지 않는다는 의미입니다.

1. 논문의 10비트 결과는 무엇을 의미하는가?

2010년 Panopticlick 연구How Unique Is Your Web Browser?에서 피터 에커슬리는 약 47만 개의 브라우저 지문을 분석했습니다. 신문은 다음과 같이 보도했습니다:

  • 전체 지문은 해당 샘플에서 평균 약 18.1비트의 식별 정보를 담고 있었으며;
  • 직관적으로 말해, 평균 지문은 286,777개의 브라우저에서 대략 한 번 정도 발생했습니다;
  • 표는 UA 문자열만으로도 평균 정보를 약 10.0비트 정도 보고했습니다;
  • Flash 또는 자바가 활성화된 브라우저에서는 완전한 지문의 94.2%가 고유했습니다.

자기 정보는 일반적으로 다음과 같이 표기됩니다:

I(x) = -log₂ P(x)

특정 UA가 집단에서 확률 1/1024로 발생한다면, 관찰하면 10비트의 정보를 얻을 수 있습니다. 이것이 **UA가 정확히 1,024가지 가능한 값이 있거나 사람을 고유하게 식별한다는 의미는 아닙니다. 이는 그 관측이 평균적으로 얼마나 많은 불확실성을 제거하는지를 설명합니다.

2. 왜 2010년 결과가 오늘날 웹에서 일정하지 않은가?

결과는 여전히 중요하지만, 최소 세 가지 자격이 필요하다:

  • 프라이버시 테스트 페이지의 방문자는 모든 인터넷 사용자의 무작위 표본이 아니었습니다;
  • 2010년의 브라우저, 플러그인, UA 버전 다양성은 오늘날의 생태계와 크게 달랐습니다;
  • UA Reduction, 플러그인 표면 축소, 지문 인식 방지 보호 등으로 관찰 가능한 속성의 분포가 변화했습니다.

이 연구는 UA 및 기타 속성들이 측정 가능한 구별 정보를 제공할 수 있다는 주장을 뒷받침합니다. 오늘날 UA가 항상 정확히 10비트의 엔트로피를 가진다고 말하는 것은 지지하지 않습니다. 지문 인식 능력은 인구, 시간대, 브라우저 정책, 신호 조합에 따라 달라집니다.

4. 왜 변화만 UA 되어도 역효과를 낼 수 있을까요?

UA 암호화 증명 없이 클라이언트 선언입니다. 서버는 이 헤더에서 장치의 공장 진실을 읽을 수 없습니다. 하지만 서로 다른 관측값이 합리적으로 일치하는지 확인할 수는 있습니다.

User-Agent 신호와 다른 브라우저 신호 간의 일관성

UA가 모바일 브라우저라고 주장하지만, 페이지에는 터치 포인트가 없고, 창이 데스크톱 디스플레이와 일관되게 닮아 있으며, 데스크톱 플랫폼을 보고하는 Client Hints가 있다고 가정해 봅시다. 어떤 관찰이든 정당한 예외가 있을 수 있습니다. 여러 안정된 모순이 함께 있어도 분류 가능한 패턴을 형성할 수 있습니다.

Panopticlick 논문에서는 이미 유사한 사례를 문서화했는데, 일부 브라우저는 Flash를 지원하면서 iPhone라고 주장했고, 일부 Firefox UA는 인터넷 익스플로러에서만 제공되는 저장 기능과 함께 나타났습니다. 2018년 FP-Scanner 연구는 이 문제를 체계적으로 검토했습니다. 일부 지문 인식 방지 확장 및 스푸핑 도구는 인터페이스 간 불일치를 도입하여, 탐지기가 수정된 속성을 식별하거나 경우에 따라 원본 브라우저나 운영 체제 계열을 추론할 수 있게 했습니다.

모든 불일치가 악의적인 것은 아닙니다. 원격 데스크톱, 접근성 도구, 기업 정책, 호환성 계층, 그리고 드문 하드웨어 모두 독특한 조합을 만들 수 있습니다. 신중한 위험 시스템은 불일치를 확률적 증거로 다루어야 하며, 사용자를 자동으로 차단하는 이유로 삼아서는 안 됩니다.

브라우저 프로필 관리에 중요한 세 가지 속성은 다음과 같습니다:

  • 내부 일관성: UA, Client Hints, 플랫폼, 아키텍처, 터치, 스크린 신호가 서로 직접적으로 모순되어서는 안 됩니다.
  • 시간에 따른 안정성: 장기 수명의 프로필은 이유 없이 매번 출시될 때마다 극적으로 변해서는 안 됩니다.
  • 그럴듯한 다양성: 프로필은 다를 수 있지만, 드문 기계적으로 생성된 조합이 반드시 더 안전한 것은 아닙니다.

FP-STALKER 연구는 속성 변경이 자동으로 연관성을 차단하지 않는다는 것도 보여주었습니다. 모델은 안정적인 속성과 그럴듯한 버전 변경을 사용하여 이전 지문과 후대 지문을 연결할 수 있습니다.

5. UA Reduction 어떤 문제를 해결하는가?

거의 모든 요청에 전통적인 UA이 전달됩니다. 요청을 받은 모든 1자 또는 제3자 엔드포인트는 수동적으로 읽을 수 있습니다. 문자열이 정밀할수록 모든 수신자가 기본적으로 더 구별되는 정보를 얻게 됩니다.

Chromium의 User-Agent Reduction 계획은 이 기본 세분성을 줄입니다:

  • Chrome 101부터 데스크톱 마이너, 빌드, 패치 버전은 0.0.0로 축소되었고;
  • 후속 단계에서는 데스크톱 운영 시스템 버전, CPU 세부 정보, Android 장치 정보가 통합되었습니다;
  • 축소된 Android UA은 고정된 플랫폼 및 모델 값을 사용하며, 예를 들어 Android 10; K;
  • 더 많은 정보를 요구하는 사이트는 User-Agent Client Hints 요청할 수 있습니다.

축소된 형식은 다음과 같이 요약할 수 있습니다:

Mozilla/5.0 (<unified platform information>)
AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/<major version>.0.0.0 Safari/537.36

감소는 레거시 UA의 수동 지문 인식 표면을 줄입니다. 브라우저 지문 인식을 완전히 없애지는 못합니다. 주요 버전, 광범위한 플랫폼, 모바일 상태는 여전히 보이지만, 다른 API, 네트워크 속성, 동작 등은 여전히 정보를 제공할 수 있습니다.

6. User-Agent Client Hints 어떻게 작동하나요?

일반적인 메커니즘은 RFC 8942에 정의되어 있으며, WICG User-Agent Client Hints 초안은 UA 특정 필드를 설명합니다. 이 접근법은 비구조화된 문자열에 존재했던 정보를 구조화된 필드로 분리하여, 기본적으로 전송될 수 있는 저엔트로피 힌트와 사이트가 일반적으로 명시적으로 요청하는 고엔트로피 힌트를 구분합니다.

UA Reduction 및 User-Agent Client Hints 요청 흐름

간단한 초기 요청은 다음과 같을 수 있습니다:

GET /download HTTP/1.1
User-Agent: Mozilla/5.0 (...) Chrome/145.0.0.0 Safari/537.36
Sec-CH-UA: "Chromium";v="145", "Not_A Brand";v="99"
Sec-CH-UA-Mobile: ?0
Sec-CH-UA-Platform: "Windows"

서버가 설치 프로그램을 선택하는 데 아키텍처와 비트 특성이 진짜로 필요하다면, 다음과 같이 응답할 수 있습니다:

HTTP/1.1 200 OK
Accept-CH: Sec-CH-UA-Arch, Sec-CH-UA-Bitness
Vary: Sec-CH-UA-Arch, Sec-CH-UA-Bitness

브라우저가 메커니즘을 지원하고 보안 및 정책 요구사항이 충족되면, 이후 요청에는 다음이 포함될 수 있습니다:

Sec-CH-UA-Arch: "x86"
Sec-CH-UA-Bitness: "64"

일반적인 UA Client Hints은 다음과 같습니다:

필드일반적인 목적정보 수준
Sec-CH-UA브랜드 및 주요 버전 목록보통 낮은 엔트로피
Sec-CH-UA-Mobile고객이 모바일 경험을 선호하는지보통 낮은 엔트로피
Sec-CH-UA-Platform광범위 플랫폼 분류보통 낮은 엔트로피
Sec-CH-UA-ArchCPU 아키텍처높은 엔트로피; 필요할 때 요청
Sec-CH-UA-Bitness아키텍처 비트니스높은 엔트로피; 필요할 때 요청
Sec-CH-UA-Platform-Version플랫폼 버전높은 엔트로피; 필요할 때 요청
Sec-CH-UA-Full-Version-List보고된 브랜드별 전체 버전높은 엔트로피; 필요할 때 요청
Sec-CH-UA-Model장치 모델높은 엔트로피; 필요할 때 요청

세 가지 엔지니어링 세부사항은 쉽게 놓치기 쉽습니다.

1. Client Hints 모두 자동으로 전송되지 않습니다

저엔트로피 힌트는 기본적으로 나타날 수 있습니다. 고엔트로피 힌트는 보통 Accept-CH 반응을 요구합니다. 초기 내비게이션, 하위 자원, 권한 정책, 안전한 전송, 브라우저 지원 등이 모두 도착 데이터에 영향을 줄 수 있습니다. 서버는 모든 선택적 필드가 빠지도록 허용해야 합니다.

2. 브랜드 목록은 의도적으로 파서의 견고성을 테스트합니다

Sec-CH-UA 여러 브랜드와 호환성 테스트용 합성 브랜드를 포함할 수 있습니다. 코드는 첫 번째 항목이 항상 제품명이라고 가정해서는 안 되며, 알 수 없는 브랜드가 나타났을 때 실패해서는 안 됩니다. 구조화된 필드를 분석하고, 모르는 항목은 무시하며, 미래 브랜드를 위한 공간을 남겨두세요.

3. 힌트에 따라 달라지는 응답은 올바른 캐시 처리가 필요합니다

아키텍처, 플랫폼 또는 다른 힌트가 응답을 변경한다면, Vary 또는 이에 상응하는 캐시키 전략을 올바르게 구성하세요. 그렇지 않으면 공유 캐시가 한 장치 클래스에서 생성된 콘텐츠를 다른 장치에 전달할 수 있습니다.

7. 전통적인 UA보다 더 사적인 Client Hints인가?

이 검사들은 정보 노출 방식을 개선하지만, 지문에 대한 면역을 제공하지는 않습니다.

전통적인 UA은 수동적이고 기본적으로 큰 비구조화 다발을 드러냅니다. Client Hints 번들을 필드로 나누고, 엔트로피가 높은 정보를 요청할 때 더 명시적으로 하며, 브라우저가 정책, 권한, 프라이버시 예산 제어를 적용할 기회를 제공합니다.

하지만 아키텍처, 전체 버전, 플랫폼 버전, 장치 모델은 여전히 구별성을 높일 수 있습니다. RFC 8942는 프라이버시와 성능을 설계 제약 조건으로 명시적으로 다룹니다. 개발자들은 다음을 물어야 합니다:

  • 이 기능이 정말 필드를 필요로 하나요?
  • 능력 감지나 사용자 선택이 이를 대체할 수 있을까요?
  • 애플리케이션이 대략적인 범주만 저장할 수 있나요?
  • 원시 값은 얼마나 오래 유지되며, 누가 접근할 수 있나요?
  • 서드파티 자료도 같은 힌트를 받을까요?

8. 서버 측 UA 처리를 위한 엔지니어링 지침

1. UA을 신원이나 권위의 증거로 절대 사용하지 마십시오

UA 프레젠테이션 선택과 호환성 대체 기능을 지원할 수 있습니다. 신원, 승인, 결제 신뢰, 보안 경계를 결정해서는 안 됩니다. 클라이언트가 제어하는 값은 접근 제어 자격 증명으로 기능할 수 없습니다.

2. 브라우저 목록보다 기능 감지를 선호합니다

프론트엔드가 API가 필요할 때는 그 기능을 직접 테스트하세요:

if ('share' in navigator) {
  // Offer the system share feature.
} else {
  // Fall back to copying a link.
}

기능 탐지는 "Chrome 145에 대해 활성화"와 같은 규칙보다 파생 브라우저, 실험적 기능, 기업 정책, 향후 릴리스를 더 잘 처리합니다.

3. 레거시 UA, Client Hints, 미확인 상태 수용

마이그레이션 과정에서 서버는 UA와 Client Hints 레거시 UA만 받거나 두 가지 모두의 매우 축소된 형태만 받을 수 있습니다. 데이터 모델은 모든 필드를 정확한 운영체제나 장치 모델을 추측하는 대신 unknown 가능하게 해야 합니다.

4. 로그 세분성을 줄이기

분석이 데스크톱과 모바일, 브라우저 계열, 메이저 버전만 필요하다면, 원시 UA 문자열과 모든 고엔트로피 힌트를 무기한 유지하지 마세요. 데이터 최소화는 개인정보 위험을 줄이고 분석 파이프라인이 미세한 변동을 의미 있는 차원으로 다루지 못하게 합니다.

5. 이상 현상을 판결이 아닌 증거로 취급할 것

Windows 주장하는 UA 한 API가 다르게 동작한다고 주장하는 것은 최대 하나의 위험 신호일 뿐입니다. 기업 환경, 가상화, 원격 세션, 호환성 계층, 보조 기술은 정당한 이상 현상을 일으킬 수 있습니다. 한 번의 불일치를 자동 사기 판정으로 전환하면 오탐이 발생합니다.

9. 다중 프로필 환경에서 UA 어떻게 구성해야 하는가?

지역 간 테스트, 광고 미리보기, 계정 운영, 개인정보 보호를 위한 목표는 가장 독특한 UA을 만드는 것이 되어서는 안 됩니다. 프로필은 설명 가능하고 안정적이며 주변 환경과 호환되어야 합니다.

다음 내용을 순서대로 검토하세요:

  1. 브라우저 버전: UA 주요 버전은 실제 엔진과 그 기능에 적합해야 합니다.
  2. 운영체제: UA 플랫폼, Client Hints 플랫폼, JavaScript 가시 플랫폼 카테고리가 호환되어야 합니다.
  3. 아키텍처와 비트 특성: UA, Client Hints, 실행 환경은 직접적으로 상충되는 주장을 해서는 안 됩니다.
  4. 기기 폼팩터: 모바일 선언은 터치 지원, 뷰포트, 픽셀 비율, 상호작용 패턴과 함께 의미가 있어야 합니다.
  5. 지역 맥락: 언어, 시간대, 지리위치, 대리 출구가 기계적으로 일치할 필요는 없지만, 실제 작업 흐름에는 적합해야 합니다.
  6. 프로필 안정성: 한 계정이나 테스트 아이덴티티가 오래 사용된 프로필을 재사용할 때, 이유 없이 플랫폼과 주요 버전을 바꾸지 마세요.

PurpleMark의 현재 프로필 변환은 선택한 운영체제를 UA 플랫폼에 매핑하고, 먼저 구성된 Chrome/ 또는 CriOS/ 토큰에서 브라우저 버전을 추출하려고 시도합니다. 사용 가능한 버전이 없을 때는 현재 엔진의 주요 버전에서 합리적인 대체 수단을 도출합니다. 목적은 고립된 문자열을 스푸핑하는 것이 아니라, UA 구성 일관된 브라우저 프로필 모델 안에 배치하는 것입니다.

프로파일 격리와 매개변수 일관성은 기술적 상관관계와 테스트 편향을 줄일 수 있습니다. 계정이 절대 연동되지 않을 것임을 보장할 수 없으며, 플랫폼 규칙, 계정 데이터, 결제 정보, 책임 있는 운영 관행을 대체하지도 않습니다. 이 기능은 합법적인 개인정보 보호, 허가된 테스트, 그리고 준수하는 비즈니스 활동에만 사용하십시오.

10. 자주 묻는 질문

Q1: UA 변경하면 브라우저가 다른 브라우저로 바뀌나요?

아니. 클라이언트가 신고하는 내용의 일부를 변경합니다. JavaScript 엔진, 렌더링 파이프라인, 네트워크 스택, 지원되는 웹 API를 대체하지 않습니다.

Q2: 웹사이트가 "진짜 UA"을 읽을 수 있나요?

모든 웹사이트가 브라우저를 우회해 읽을 수 있는 보편적인 하드웨어 수준의 '실제 UA'은 없습니다. 그럼에도 불구하고 사이트는 Client Hints, 능력 테스트 및 기타 지문 신호를 비교하고, 호환되지 않는 주장을 찾아내며, 확률적 추론을 할 수 있습니다.

Q3: 축소된 UA이 Windows 10과 Windows 11을 구분할 수 있나요?

감소된 레거시 UA 두 곳 모두 Windows NT 10.0을 보고할 수 있기 때문에 일반적으로 신뢰성 있게 확인할 수 없습니다. UA Client Hints 지원하는 브라우저는 사이트가 요청하면 더 상세한 플랫폼 버전 정보를 제공할 수 있습니다. 서버는 여전히 누락된 필드와 매핑 차이를 처리해야 합니다.

Q4: JavaScript 비활성화하면 노출을 막UA나요?

완전히는 아니에요. HTTP User-Agent은 요청 헤더로, 페이지 JavaScript 실행 전에 요청과 함께 보낼 수 있습니다. JavaScript 비활성화하면 일부 수집 표면이 제거되지만, 현대 웹의 상당 부분이 깨집니다.

Q5: Client Hints 완전히 대체할 User-Agent인가요?

단기적으로 그렇게 가정하지 마세요. 많은 클라이언트와 서버가 여전히 레거시 UA에 의존하고 있으며, UA Client Hints 지원은 다양합니다. Client Hints 점진적 향상으로 간주하세요: 구조화된 정보를 선호하되, 기존 UA이나 미지의 상태에 대한 백업 수단을 유지하세요.

Q6: 무작위로 생성된 UA가 익명성을 개선하나요?

꼭 그런 건 아니에요. 한 필드를 무작위화하면 버전, 플랫폼, 터치, 렌더링 신호와 모순이 발생할 수 있습니다. 장기 수명 프로필의 경우, 공통적이고 안정적이며 내부적으로 호환되는 구성이 빈번한 무작위 변경보다 보통 더 방어하기 쉽습니다.

11. 결론

User-Agent 신뢰할 수 있는 신원 증명도, 무관한 문자열도 아닙니다. 웹 호환성, 개인정보 보호, 위험 분석의 교차점에 위치해 있습니다. 개발자에게는 과거의 부담을 주는 호환성 입력입니다. 지문 채취 연구자에게는 측정 가능한 통계 정보를 가진 속성입니다. 브라우저 벤더에게는 기본적으로 노출 표면을 줄여야 합니다.

핵심 아이디어는 세 가지 진술로 나뉩니다:

  • UA을 문자 그대로 읽지 마세요; 여기에는 많은 역사적 호환성 토큰이 포함되어 있습니다.
  • UA 단독으로 평가하지 마세요; 실용적인 인식은 신호의 조합과 그 시간이 지남에 따른 진화에서 나옵니다.
  • Client Hints를 단순히 '더 UA 분야'로 생각하지 말고; 그들의 가치는 구조화되고 요청 중심적이며 관리 가능한 공개에 있습니다.

시스템이 브라우저 이름 식별에서 필요한 기능을 테스트하는 단계로, 그리고 모든 가용 정보를 수집하는 단계에서 필요한 것만 요청하는 단계로 전환할 때, UA 본래의 역할, 즉 신원 확인이 아닌 호환성 단서로 돌아갑니다.

참고문헌 및 표준

  1. Peter Eckersley. How Unique Is Your Web Browser?. Privacy Enhancing Technologies Symposium, 2010.
  2. Pierre Laperdrix, Nataliia Bielova, Benoit Baudry, Gildas Avoine. Browser Fingerprinting: A Survey. ACM Transactions on the Web, 2020.
  3. Antoine Vastel, Pierre Laperdrix, Walter Rudametkin, Romain Rouvoy. FP-Scanner: The Privacy Implications of Browser Fingerprint Inconsistencies. USENIX Security Symposium, 2018.
  4. Antoine Vastel, Pierre Laperdrix, Walter Rudametkin, Romain Rouvoy. FP-STALKER: Tracking Browser Fingerprint Evolutions. IEEE Symposium on Security and Privacy, 2018.
  5. IETF. RFC 9110: HTTP Semantics, 2022.
  6. IETF. RFC 8942: HTTP Client Hints, 2021.
  7. WICG. User-Agent Client Hints, Draft Community Group Report.
  8. Chromium. User-Agent Reduction.
  9. Chrome for Developers. Improve user privacy and developer experience with User-Agent Client Hints.