User-Agent Client Hints의 도입, UA 프리징을 대비하라
클라이언트 입장의 User-Agent Client Hints
유저의 많은 정보를 담고 있기 때문에 개인정보 침해가 우려, UA를 점진적 삭제할 예정이라고 예전에 포스팅 했었다.
당장에 무엇을 수정해야하는지, 언제 해야하는지 몰라서 고민하던 중에 네이버 개발블로그에서 작업한 내용에 대한 포스팅했더라.
UA 프리징으로 달라지는 점
-
속성 값 고정
-
navigator.userAgent
-
navigator.appVersion
-
navigator.platform
-
navigator.productSub
-
navigator.vendor
-
크롬에서 안드로이드를 제외한 모든 운영체제는 윈도우10
-
동기방식으로 OS이름, OS버전, 모델명을 알 수 있음
-
비동기 방식으로 os이름, 버전, 모델명, 브아루저 풀 버전을 알 수 있음(기존 사용하던 로직 사용하려면)
-
navigator.userAtent 대신 navigator.userAgentData를 사용해야함
-
브라우저버전은 메이저 버전만 나타냄
usetAgentData
동기 방식으로 확인 가능한 정보
-
navigator.userAgentData.brands 브라우저의 이름과 메이저 버전, Chromium 정보
-
navigator.userAgentData.mobile 모바일 여부
-
navigator.platform: Android Chrome(Linux armv8l) 여부
-
User-Agent Client Hints를 지원하지 않는 브라우저의 OS, OS 버전(Chrome 84의 지원 범위: Android 5.0 이상, Mac OS X 10.10 이상, 윈도우 7 이상)
비동기 방식으로 확인 가능한 정보
-
기존 User-Agent string으로 얻은 정보와 동일한 정보를 얻을 수 있음
-
Android, iOS, Mac Safari를 제외한 OS 정보
-
특정 OS 버전
-
브라우저의 풀버전
-
getHighEntropyValues 메서드를 통해 비동기로 필요한 정보 가져올 수 있음
-
navigator.userAgentData.getHighEntropyValues 메서드로 정확한 agent 값을 얻을 수 있도록 만든 getAccurateAgent 비동기 함수
navigator.userAgentData.getHighEntropyValues([
"architecture",
"model", "platform",
"platformVersion",
"uaFullVersion",
]).then(info => {
console.log(info);
});
async function start() {
const agent = await getAccurateAgent();
const isWindows = agent.os.name === "window";
const isMac = agent.os.name === "mac";
}
크롬을 제외 타 브라우저는 아직 도입 예정이 없음? 그렇기 때문에 어떤식으로 UA 정보를 수정 도입할 지 추측 중..
출처
User-Agent Client Hints의 도입, UA 프리징을 대비하라
https://d2.naver.com/helloworld/6532276
예전 포스팅
크롬 사용자에이전트 문자열(UA, User agent string) 점진적 삭제
'~2022 > 아티클' 카테고리의 다른 글
[아티클 프로젝트 059] 모듈 시스템: CommonJS, AMD, UMD, ES6 (0) | 2020.11.04 |
---|---|
[아티클 프로젝트 058] 즉시 실행 함수 (IIFE, Immediately-Invoked Function Expression) (0) | 2020.11.03 |
[아티클 프로젝트 057] 취준생이 반드시 알아야 할 프론트엔드 지식들 (var va let va const) (0) | 2020.11.02 |
[아티클 프로젝트 055] this (0) | 2020.10.28 |
[아티클 프로젝트 049] Chrome is deploying HTTP/3 and IETF QUIC (0) | 2020.10.08 |
[아티클 프로젝트 047] 취준생이 반드시 알아야 할 프론트엔드 지식들 -CSS (0) | 2020.10.06 |
[아티클 프로젝트 045] ORM이란 (0) | 2020.09.24 |
[아티클 프로젝트 042] NAVER FE devtalk: 디자인 시스템에 대한 소개와 효율성 개선 및 구축 경험공유 - 플랫폼 디자이너 없이 디자인 시스템을 구축하는 프로덕트 디자이너의 우당탕탕 고통 연대기 (0) | 2020.09.21 |