Chrome 및 Firefox 곧 메이저 버전 100 출시

사용자 에이전트 문자열 변경사항, 영향을 완화하기 위해 Chrome 및 Firefox가 취하고 있는 전략, 사용자가 도울 수 있는 방법

알리 베이야드
Ali Beyad
밀리카 미하즐리야
밀리카 미하즐리야

ChromeFirefox는 몇 개월 내에 버전 100이 됩니다. 이로 인해 비즈니스 로직을 실행하기 위해 브라우저 버전을 식별해야 하는 사이트에서 손상이 발생할 수 있습니다. 이 게시물에서는 이벤트 타임라인, Chrome 및 Firefox에서 영향을 줄이기 위해 취하고 있는 전략, 개발자가 도울 수 있는 방법을 다룹니다.

사용자-에이전트 문자열

사용자 에이전트 (UA)는 서버가 브라우저를 식별할 수 있도록 브라우저가 HTTP 헤더로 보내는 문자열입니다. 이 문자열은 JavaScript를 통해 navigator.userAgent를 통해 액세스할 수도 있습니다. 일반적으로 다음과 같은 형식으로 되어 있습니다.

<browser_name>/<major_version>.<minor_version>

예를 들어 이 게시물을 게시할 당시에 출시된 최신 버전의 브라우저는 다음과 같습니다.

  • Chrome: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.54 Safari/537.36
  • Firefox: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:96.0) Gecko/20100101 Firefox/96.0
  • Safari: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.2 Safari/605.1.15

메이저 버전 100: 3자리 버전 번호

메이저 버전 100은 Chrome과 Firefox 모두에 중요한 단계입니다. 또한 2자리에서 3자리 버전 번호로 전환될 때 웹사이트가 손상될 수 있습니다. 웹 개발자는 커스텀 코드부터 사용자 에이전트 파싱 라이브러리 사용까지 이러한 문자열을 파싱하는 데 사용할 수 있는 모든 종류의 기법을 사용합니다. 그런 다음 이를 사용하여 해당하는 처리 로직을 결정할 수 있습니다. 사용자 에이전트 및 기타 버전 보고 메커니즘은 곧 3자리 버전 번호를 보고할 예정입니다.

버전 100 타임라인

버전 100 브라우저는 먼저 실험용 버전 (Chrome Canary, Firefox Nightly)으로 출시되고 베타 버전, 공개 버전 채널로 차례로 출시됩니다.

탐색자 타임라인
Chrome (출시 일정) 2022년 3월 29일
Firefox (출시 일정) 2022년 5월 3일

3자리 버전 번호가 문제가 될 수 있는 이유는 무엇인가요?

약 12년 전 브라우저가 버전 10에 처음 도달했을 때는 주 버전 번호가 한 자릿수에서 2자리로 변경됨에 따라 사용자 에이전트 파싱 라이브러리에서 많은 문제가 발견되었습니다.

따라야 할 단일 사양이 없으면 사용자 에이전트 문자열 및 사이트별 사용자 에이전트 파싱의 형식이 서로 다릅니다. 일부 파싱 라이브러리에는 3자리 주 버전 번호를 고려하지 않는 하드 코딩된 가정이나 버그가 있을 수 있습니다. 많은 라이브러리에서 브라우저가 2자리 버전 번호로 이동할 때 파싱 로직을 개선했으므로 3자리 마일스톤에 도달하면 더 적은 문제가 발생할 것으로 예상됩니다. Chrome팀의 엔지니어인 마이크 테일러가 일반 UA 파싱 라이브러리에 대한 설문조사를 실시한 결과 아무런 문제도 발견되지 않았습니다. 현장에서 Chrome 실험을 실행하면 몇 가지 문제가 발견되어 해결 중입니다.

브라우저는 이와 관련하여 어떤 조치를 취하고 있나요?

Firefox와 Chrome은 웹사이트 손상 가능성을 감지하기 위해 브라우저의 현재 버전이 메이저 버전 100으로 보고하는 실험을 진행했습니다. 이로 인해 몇 가지 보고된 문제가 발생했으며 그 중 일부는 이미 수정되었습니다. 이러한 실험은 버전 100이 출시될 때까지 계속 실행됩니다.

안정적인 채널로 버전 100을 출시하면 예상보다 더 많은 손상이 발생할 경우에 대비하여 백업 완화 전략도 있습니다.

Chrome 완화

Chrome에서 백업 계획은 플래그를 사용하여 메이저 버전을 99로 고정하고 사용자 에이전트 문자열의 마이너 버전 부분에 실제 메이저 버전 번호를 보고하는 것입니다 (코드는 이미 도착함).

사용자 에이전트 문자열에 보고된 Chrome 버전은 <major_version>.<minor_version>.<build_number>.<patch_number> 패턴을 따릅니다.

백업 계획이 사용되면 사용자 에이전트 문자열은 다음과 같습니다.

99.101.4988.0

또한 Chrome 사용자 에이전트 문자열의 부 버전이 오랫동안 0으로 보고되었기 때문에 문자열의 부 버전 부분에서 3자리 값을 보고해도 손상이 발생하지 않도록 실험을 진행하고 있습니다. Chrome팀은 신고된 문제의 수와 심각도에 따라 백업 옵션 사용 여부를 결정합니다.

Firefox 완화

Firefox에서는 중단이 얼마나 중요한지에 따라 전략이 달라집니다. Firefox에는 사이트 개입 메커니즘이 있습니다. Mozilla Webcompat팀은 이 메커니즘을 사용하여 Firefox에서 손상된 웹사이트를 핫픽스할 수 있습니다. Firefox URL 입력란에 about:compat를 입력하면 현재 수정된 내용을 확인할 수 있습니다. 특정 도메인에서 메이저 버전이 100인 사이트가 중단되는 경우 버전 99를 대신 전송하여 문제를 해결할 수 있습니다.

중단이 광범위하게 중단되면 주 버전 번호를 고정할 수 있습니다. 가능한 전략은 각각 장단점이 있습니다. Mozilla는 실제 버전 번호를 부 버전 번호로 전송하거나, 문자열을 그대로 고정하거나, 다른 매개변수를 통해 실제 버전 번호를 전송할 수 있습니다.

사용자 에이전트 문자열을 더 복잡하게 만드는 모든 전략은 생태계에 큰 영향을 미칩니다. 또 다른 별난 행동을 피할 수 있도록 함께 노력합시다.

무엇을 도와드릴까요?

Chrome 및 Firefox Nightly에서 지금 바로 버전을 100으로 보고하고 문제가 발생하면 보고하도록 브라우저를 구성할 수 있습니다.

주요 버전을 100으로 보고하도록 Chrome 구성

  1. chrome://flags/#force-major-version-to-100 페이지로 이동합니다.
  2. 옵션을 Enabled로 설정합니다.

주요 버전을 100으로 보고하도록 Firefox Nightly를 구성합니다.

  1. Firefox Nightly의 설정 메뉴를 엽니다.
  2. 'Firefox 100'을 검색한 다음 'Firefox 100 User-Agent String' 옵션을 선택합니다.

테스트 및 보고서 제출

  • 웹사이트 운영자인 경우, Chrome 및 Firefox 100으로 웹사이트를 테스트합니다. 사용자 에이전트 파싱 코드 및 라이브러리를 검토하여 3자리 버전 번호를 처리할 수 있는지 확인합니다. 현재 손상되는 패턴 중 일부를 컴파일했습니다.
  • 사용자 에이전트 파싱 라이브러리를 개발하는 경우 100 이상 버전을 파싱하는 테스트를 추가합니다. 초기 테스트에서는 최신 버전의 라이브러리에서 이를 올바르게 처리할 수 있는 것으로 나타났습니다. 하지만 웹에는 오랜 역사가 있으므로 이전 버전의 파싱 라이브러리가 있는 경우 문제를 확인하고 최종적으로 업그레이드해야 합니다.
  • 웹을 탐색하는 중 메이저 버전 100에서 문제가 발견되면 webcompat.com에서 보고서를 제출하세요.