1 of 25

User-Agent Reduction

miketaylr@chromium.org

2 of 25

3 second talk preview

  1. The briefest history tour of User-Agent strings possible
  2. Why, how, when?
  3. Q&A

3 of 25

Mozilla/1.0 (Win3.1)

4 of 25

Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.1) Gecko/20020826

5 of 25

Mozilla/5.0 (compatible; Konqueror/3.2; FreeBSD) (KHTML, like Gecko)

6 of 25

Mozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/85.7 (KHTML, like Gecko) Safari/85.5

7 of 25

Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.27 Safari/525.13

8 of 25

Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36 Edg/95.0.1020.44

9 of 25

etc.

10 of 25

11 of 25

Parsing is painful and fragile

Mechanism for covert tracking

Exposes highly identifiable data on every request

Requires messy parsing logic that is prone to bugs

12 of 25

User-Agent Reduction

13 of 25

User-Agent: Mozilla/5.0 (Linux; Android 10; Pixel 3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4076.0 Mobile Safari/537.36

User-Agent: Mozilla/5.0 (Linux; Android 10; Pixel 3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4076.0 Mobile Safari/537.36

These low-entropy bits will continue to be updated.

Not changing

Not changing

Not changing

14 of 25

User-Agent: Mozilla/5.0 (Linux; Android 10; Pixel 3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4076.0 Mobile Safari/537.36

User-Agent: Mozilla/5.0 (Linux; Android 10; Pixel 3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4076.0 Mobile Safari/537.36

User-Agent: Mozilla/5.0 (Linux; Android 10; K ) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.0.0 Mobile Safari/537.36

These low-entropy bits will continue to be updated.

Not changing

Not changing

Not changing

Not changing

These high-entropy bits will be frozen.

🥶

🥶

🥶

15 of 25

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

Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.0.0 Mobile Safari/537.36

Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.0.0 Safari/537.36

16 of 25

User-Agent Client Hints API

17 of 25

User-Agent

Mozilla/5.0 (Linux; Android 10; Pixel 3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4076.0 Mobile Safari/537.36

Android

?1

84.0.4076.0

Sec-CH-UA-Platform

Sec-CH-UA-Mobile

Sec-CH-UA-Full-Version

10

Sec-CH-UA-Platform-Version

"Chromium";v="84",

"Google Chrome";v="84"

Sec-CH-UA

ARM

Sec-CH-UA-Arch

Pixel 3

Sec-CH-UA-Model

User-Agent

Provided by default

Not provided by default, needs explicit request

User-Agent Client Hints

64

Sec-CH-UA-Bitness

Sec-CH-UA-Full-Version-List

"Chromium";v="84.0.4076.0",

"Google Chrome";v="84.0.4076.0"

Being replaced with…

18 of 25

“Reduced” JS APIs

\

> navigator.userAgent

> navigator.platform

> navigator.appVersion

19 of 25

navigator.userAgentData API

\

> navigator.userAgentData

▷ NavigatorUAData {brands: Array(3), mobile: false, platform: 'macOS'}

> await navigator.userAgentData.getHighEntropyValues([“bitness”]);

{bitness: “64”}

20 of 25

Timelines

21 of 25

Testing Timeline

Reduced UA Origin Trial from M95 - M100.

Send feedback to Chrome via bugs (GitHub or crbug), or email miketaylr@google.com

M95

Oct 2021

Enable testing reduced UA at scale

six months for testing

M100

Mar ‘22

M96

Nov 2021

(TLS ACCEPT_CH available in Chrome)

22 of 25

Gradual Reduction

The proposed rollout will happen in phases.

Phase 1: MINOR.BUILD.PATCH => “0.0.0”

Phase 2: Desktop rollout

Phase 3: Mobile rollout

Minor Version

M101

Apr ‘22

Desktop

M107

Oct‘22

Android

M110

Feb‘23

Apr ‘22 - Feb’23

UA String Reduction

23 of 25

Deprecation Trial

For sites needing a little more time to migrate.

Mar ‘22 - May ‘23

Enable opt-in to legacy UA

M113

May ‘23

M100

Mar ‘22

Minor Version

M101

Apr ‘22

Desktop

M107

Oct‘22

Android

M110

Feb‘23

Apr ‘22 - Feb’23

UA String Reduction

24 of 25

Questions?

25 of 25

Learn more