AI-generated Key Takeaways
-
Generalized user agents provide increased privacy by limiting information that could distinguish a browser or device.
-
The bid request includes both a
User-Agentstring and aUserAgentobject for user agent information. -
When generalized, finer-grained version components in the
UserAgentobject's browser and platform fields are replaced with zeros. -
In the generalized
User-Agentstring, browser and platform identifiers are reduced to major versions, and some other details may be redacted. -
Bid requests indicate if User Agent fields are generalized in the
BidRequest.ext.privacy_treatmentsfield.
If a publisher or a user requires increased privacy protections, Google might reduce the amount of information provided in the user agent fields. When the information is reduced, these user agent representations are considered generalized.
Generalized user agent representations provide increased privacy protections by limiting information that might distinguish a given browser or a device from other browsers or devices.
Overview
The bid request contains two representations of User Agent information:
the User-Agent string found in BidRequest.device.ua and the
UserAgent object found in
BidRequest.device.sua. Both fields contain information provided by the
request's user agent HTTP headers.
Non-generalized user agents can contain granular browser and operating system versions and other detailed data that is reduced in the generalized form of the user agent.
Generalization is backwards-compatible for browser and device type detection.
Bid requests indicate if the User Agent fields have been generalized in
BidRequest.ext.privacy_treatments.
Generalized UserAgent object
In the generalized UserAgent, the version fields from all browser entries
and from the platform are reduced to only contain the major version by
replacing any finer-grained version components with zeros. No other information
in the UserAgent object is removed.
The following example compares the original contents of UserAgent.browser to
its generalized form:
Original
brand: "Chrome" version: ["96", "0", "4664", "92"]
Generalized
brand: "Chrome" version: ["96", "0", "0", "0"]
Google doesn't always generalize browser and platform versions, in particular
when the full version is frozen by the browser. For example, the following
value of UserAgent.browser will not be modified:
brand: "AppleWebKit" version: ["537", "36"].
When the UserAgent object is generalized, the bid request also contains the
user_agent_data field in the PrivacyTreatments object:
BidRequest.ext.privacy_treatments: { user_agent_data: USER_AGENT_DATA_COARSENED }
Generalized User-Agent string
In the generalized User-Agent string, browser and platform identifiers are
reduced to major versions only. For example, "Chrome/96.0.4664.92"
becomes "Chrome/96.0.0.0". Frozen version components, such as
"AppleWebKit/537.36", are preserved. These changes are equivalent to
what we described for the UserAgent object.
Unique to the User-Agent string, some details or non-standard elements
might also be redacted, for example the device's Build or firmware version, or
certain app-specific data that's often added at the end of the string.
The following example compares the original contents of the User-Agent string
to its generalized form:
Original
Mozilla/5.0 (Linux; Android 11; M2007J20CG Build/RKQ1.200826.002; wv)
AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0
Chrome/96.0.4664.92 Mobile Safari/537.36 [MyApp:CustomSignals:ABC123]
Generalized
Mozilla/5.0 (Linux; Android 11; M2007J20CG; wv)
AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0
Chrome/96.0.0.0 Mobile Safari/537.36
When the User-Agent string is generalized, the bid request contains the
user_agent signal in the PrivacyTreatments object:
BidRequest.ext.privacy_treatments: { user_agent: USER_AGENT_COARSE }
Google uses similar approaches to generalizing the User-Agent string and the
UserAgent object. As a result, the generalized User-Agent string and the
generalized UserAgent object carry a similar amount of information.