User-Agent trước đây được bao gồm trong yêu cầu giá thầu để cung cấp thông tin hữu ích dữ liệu nhắm mục tiêu, chẳng hạn như trình duyệt và nền tảng của thiết bị khởi tạo. Tuy nhiên, các trình duyệt thường loại bỏ rất nhiều Tác nhân người dùng do khó sử dụng và để bảo vệ quyền riêng tư của người dùng một cách hiệu quả hơn. Để trả lời câu hỏi này, Google hỗ trợ Gợi ý ứng dụng tác nhân người dùng, trong đó được bao gồm trong yêu cầu giá thầu nếu có để bổ sung cho tiêu đề User-Agent. Các Gợi ý về ứng dụng này (gọi ngắn gọn) có thể được lấy từ các tiêu đề Sec-Ch-UA* hoặc từ API Gợi ý ứng dụng JavaScript.
Tuỳ thuộc vào giao thức được sử dụng, tiêu đề Tác nhân người dùng sẽ hiển thị cùng với một trong các các trường chuỗi sau:
- OpenRTB:
BidRequest.device.ua
- Google RTB (Không dùng nữa):
BidRequest.user_agent
Thông báo UserAgent
sẽ được điền sẵn Gợi ý ứng dụng khi
có sẵn, nhưng sẽ được điền sẵn dựa trên các giá trị được phân tích cú pháp từ
Tiêu đề Tác nhân người dùng. Tuỳ thuộc vào giao thức được sử dụng, thông số này sẽ hiển thị dưới dạng một
trong các trường sau:
- OpenRTB:
BidRequest.device.sua
- Google RTB (Không dùng nữa):
BidRequest.user_agent_data
Bên đặt giá thầu nên sử dụng thông báo UserAgent
thay vì
Chuỗi tác nhân người dùng.
Cách hệ thống điền UserAgent
Không giống như tiêu đề Tác nhân người dùng, thông báo UserAgent
đại diện cho tác nhân người dùng
thông tin được chia nhỏ thành nhiều trường để có thông tin cụ thể.
Tuỳ thuộc vào việc Gợi ý về ứng dụng có xuất hiện trong yêu cầu quảng cáo hay không,
Bạn có thể điền UserAgent
thông báo theo các cách sau:
- Nếu yêu cầu chứa ít nhất
entropy thấp
Gợi ý ứng dụng,
UserAgent
được điền dựa trên nội dung của ứng dụng. - Nếu yêu cầu chỉ chứa tiêu đề Tác nhân người dùng,
UserAgent
sẽ được điền dựa trên thông tin có thể phân tích cú pháp được từ tiêu đề.
Ví dụ: Điền UserAgent
dựa trên tiêu đề Tác nhân người dùng
Giả sử có một yêu cầu quảng cáo mà trình duyệt gửi các tiêu đề sau:
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36
Một UserAgent
được điền sẵn chỉ dựa trên tiêu đề Tác nhân người dùng có thể có dạng như sau
như sau:
browsers: [{ brand: "Mozilla", version: ["5", "0"] },
{ brand: "AppleWebKit", version: ["537", "36"] },
{ brand: "Chrome", version: ["103", "0", "0", "0"] },
{ brand: "Safari", version: ["537", "36"] }],
platform: { brand: "Windows NT", version: ["10", "0"] },
mobile: false,
architecture: "x86",
bitness: "64",
model: "x64",
source: USER_AGENT_STRING
Ví dụ: Điền UserAgent
dựa trên Gợi ý ứng dụng
Giả sử có một yêu cầu quảng cáo mà trình duyệt gửi các tiêu đề sau:
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36
Sec-Ch-Ua: ".Not/A)Brand";v="99", "Google Chrome";v="103", "Chromium";v="103"
Sec-Ch-Ua-Arch: x86
Sec-Ch-Ua-Full-Version: 103.0.5060.134
Sec-Ch-Ua-Mobile: ?0
Sec-Ch-Ua-Platform: Windows
Sec-Ch-Ua-Platform-Version: 15.0.0
Trong trường hợp có ít nhất Gợi ý ứng dụng có entropy thấp, thì UserAgent
sẽ được điền dựa trên nội dung của các tiêu đề đó ngay cả khi User-Agent
có tiêu đề. Mã sẽ có dạng như sau:
browsers: [{ brand: ".Not/A)Brand", version: ["99", "0", "0", "0"] },
{ brand: "Google Chrome", version: ["103", "0", "5060", "134"] },
{ brand: "Chromium", version: ["103", "0", "5060", "134"] }],
platform: { brand: "Windows", version: ["15", "0", "0"] },
mobile: false,
architecture: "x86",
bitness: "64",
source: CLIENT_HINTS_HIGH_ENTROPY
Điền dựa trên tiêu đề Tác nhân người dùng và Gợi ý ứng dụng
Một số trường được điền sẵn theo cách khác nhau tuỳ thuộc vào việc các trường đó có dựa trên tiêu đề Tác nhân người dùng hoặc Gợi ý về ứng dụng. Sau đây là tóm tắt về khác biệt:
- Đối với các trình duyệt và nền tảng giống nhau,
UserAgent.browsers.brand
vàUserAgent.platform.brand
thường sẽ khác nhau giữa mộtUserAgent
dựa trên tiêu đề Tác nhân người dùng hoặc Gợi ý về ứng dụng. Ví dụ:UserAgent.platform.brand
có thể xuất hiện dưới dạng "Windows NT" nếu nền tảng này dựa trên tiêu đề Tác nhân người dùng hoặc "Windows" nếu dựa trên Gợi ý ứng dụng. - Một số mục nhập
UserAgent.browsers
là duy nhất đối với tiêu đề Tác nhân người dùng hoặc cho Gợi ý về ứng dụng. Ví dụ: "AppleWebKit" sẽ xuất hiện nếuUserAgent
dựa trên tiêu đề Tác nhân người dùng, trong khi “Chromium” sẽ chỉ xuất hiện nếu dựa trên Gợi ý của ứng dụng. - Chỉ
UserAgent
dựa trên tiêu đề Tác nhân người dùng mới có thể chứa các giá trị cố định. Ví dụ: nếu nền tảng là Windows 11 22H2,UserAgent.platform.brand
sẽ được đặt thành "Windows NT" vàUserAgent.platform.version
sẽ được thiết lập thành[“10”, “0”]
vì đó giá trị cố định cho bất kỳ phiên bản Windows nào từ 10 trở lên.
Dữ liệu trong UserAgent
dựa trên Gợi ý ứng dụng thường sẽ không phải là
thay thế không chính xác đối với thông tin bị cố định hoặc bị che khuất. Nếu có
sự không nhất quán giữa tiêu đề Tác nhân người dùng và UserAgent
dựa trên Ứng dụng
Gợi ý, thông tin từ UserAgent
sẽ được ưu tiên.
Trường đối tượng UserAgent
Phần này tóm tắt từng trường, tập trung vào RTB Google và các phương pháp sử dụng hay nhất.
Trình duyệt
Chứa danh sách
BrandVersion
các mục nhập thường được sắp xếp theo tính cụ thể (ví dụ: nếu bạn muốn
liệt kê nội dung của browsers
, brand
cho mỗi mục có thể xuất hiện
theo thứ tự sau:
Thương hiệu | Ý nghĩa |
Mozilla | Tương thích với Mozilla |
AppleWebKit | Dựa trên AppleWebKit, một tập hợp con của Mozilla. |
Chrome | Trình duyệt Chrome, một nhóm nhỏ các trình duyệt tương thích với AppleWebKit |
Safari | Biến thể dành cho máy tính, thay vì thiết bị di động. |
UserAgent
không phải lúc nào cũng liệt kê các trình duyệt theo bất kỳ thứ tự cụ thể nào, đặc biệt
nếu dựa trên Gợi ý của ứng dụng. Phần sau đây mô tả những điểm khác biệt khác
mà bạn có thể thấy dựa trên giá trị của source
:
USER_AGENT
: Trườngversion
có thể bị giảm thành phiên bản lớn hoặc bị treo (tuỳ thuộc vào chính sách của từng tác nhân cụ thể). Xin lưu ý rằng sẽ không có cho biết giá trị này bị cố định.CLIENT_HINTS_LOW_ENTROPY
vàCLIENT_HINTS_HIGH_ENTROPY
: Các mục nhập là không được sắp xếp theo bất kỳ tiêu chí nào; Ví dụ: cùng một trình duyệt có thể gửi các mục nhập theo các đơn đặt hàng khác nhau trong mỗi yêu cầu. Chúng cũng có thể chứa Mục GREASE, tức là sẽ bị bỏ qua.CLIENT_HINTS_HIGH_ENTROPY
: Tất cảversion
trường có trong trình duyệt có thể thành phiên bản đầy đủ.
Nền tảng
BrandVersion (Phiên bản thương hiệu)
mục nhập mô tả nền tảng. Tính năng này có thể không tương thích giữa Tác nhân người dùng
tiêu đề và Gợi ý ứng dụng khách, vì vậy việc nhắm mục tiêu một số nền tảng có thể yêu cầu kiểm tra
2 tên. Ví dụ: hệ điều hành Macintosh của Apple được gắn thương hiệu là
"Macintosh" trong tiêu đề User-Agent nhưng lại là "macOS" trong phần Client Hints.
Phần sau đây mô tả những điểm khác biệt khác mà bạn có thể thấy dựa trên
giá trị của source
:
USER_AGENT
: Trườngversion
có thể bị giảm thành phiên bản lớn hoặc bị treo. Lưu ý rằng sẽ không có chỉ báo cho biết giá trị này bị cố định.CLIENT_HINTS_LOW_ENTROPY
: Trườngversion
sẽ không được điền sẵn.CLIENT_HINTS_HIGH_ENTROPY
: Trườngversion
có thể được đặt thành đầy đủ .
Di động
Cho biết liệu nội dung như quảng cáo có được tối ưu hoá cho màn hình nhỏ và/hoặc không nhập bằng cách chạm. Xin lưu ý rằng đây không nhất thiết là một chỉ báo về loại thiết bị, trình duyệt di động có thể được định cấu hình để yêu cầu "trang web dành cho máy tính".
Kiến trúc
Xác định cấu trúc của nền tảng, chẳng hạn như "x86" hoặc "arm".
Đối với UserAgent
dựa trên Gợi ý ứng dụng, xin lưu ý rằng giá trị này sẽ chỉ được điền sẵn
khi bạn đặt source
thành CLIENT_HINTS_HIGH_ENTROPY
.
Bit
Xác định bit của nền tảng, chẳng hạn như nó có 32 bit hay 64 bit CPU. Trường này là một chuỗi số nguyên cung cấp thông tin bổ sung về kiến trúc của nó; ví dụ: cấu trúc "x86" có thể có bit bit được đặt thành "32" hoặc "64".
Đối với UserAgent
dựa trên Gợi ý ứng dụng, xin lưu ý rằng giá trị này sẽ chỉ được điền sẵn
khi bạn đặt source
thành CLIENT_HINTS_HIGH_ENTROPY
.
Mẫu
Xác định mẫu thiết bị. Dành cho thiết bị di động – có nghĩa là không phải máy tính xách tay hoặc máy tính để bàn – tên này sẽ được điền sẵn bằng tên mẫu, chẳng hạn như "Pixel 6 Pro".
Phần sau đây mô tả những khác biệt mà bạn có thể thấy dựa trên
giá trị của source
:
USER_AGENT
- Thiết bị không phải thiết bị di động: Trường
model
thường sẽ chứa mã kết hợp kiến trúc và bit bit như “x64” đối với Windows. Giá trị này là không đa nền tảng; ví dụ: Linux có thể sử dụng “x86_64” cho cùng một phần cứng. - Thiết bị di động: Trường này sẽ không bao gồm cấu trúc và bit.
Nếu bạn quan tâm đến những giá trị này, hãy xem
UserAgent.architecture
vàUserAgent.bitness
- Thiết bị không phải thiết bị di động: Trường
CLIENT_HINTS_LOW_ENTROPY
: Trườngmodel
sẽ không được điền sẵn.CLIENT_HINTS_HIGH_ENTROPY
: Trườngmodel
sẽ chỉ được điền cho mẫu thiết bị của thiết bị di động. Không có giá trị nào được đặt cho nền tảng máy tính.
Nguồn
Xác định tiêu đề dùng để tạo UserAgent
. Đối với Gợi ý về ứng dụng,
điều này cũng phân biệt giữa hai trường hợp sau:
CLIENT_HINTS_LOW_ENTROPY
: Chỉ có các Gợi ý ứng dụng cơ bản.CLIENT_HINTS_HIGH_ENTROPY
: Có sẵn Gợi ý ứng dụng, bao gồm ít nhất một trường được phân loại là có entropy cao.