Tiêu đề User-Agent trước đây được đưa vào yêu cầu giá thầu để cung cấp dữ liệu nhắm mục tiêu hữu ích, 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, trình duyệt thường loại bỏ nhiều thông tin trong User-Agent do khó sử dụng và để bảo vệ quyền riêng tư của người dùng tốt hơn. Để giải quyết vấn đề này, Google hỗ trợ Gợi ý cho ứng dụng tác nhân người dùng. Gợi ý này được đưa vào yêu cầu giá thầu khi có để bổ sung cho tiêu đề Tác nhân người dùng. Các Gợi ý cho ứng dụng (viết tắt là Gợi ý) này có thể lấy từ tiêu đề Sec-Ch-UA* hoặc từ API Gợi ý cho ứng dụng JavaScript.
Tiêu đề User-Agent (Tác nhân người dùng) được hiển thị dưới dạng một chuỗi trong trường BidRequest.device.ua
.
Thông báo UserAgent
sẽ được điền sẵn Gợi ý cho ứng dụng khi có, nếu khô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 đề User-Agent. Thông tin này được hiển thị trong trường BidRequest.device.sua
.
Người đặt giá thầu nên sử dụng thông báo UserAgent
thay vì chuỗi Trình đại diện người dùng.
Cách điền sẵn UserAgent
Không giống như tiêu đề User-Agent, thông báo UserAgent
đại diện cho thông tin về tác nhân người dùng được chia thành nhiều trường cho thông tin cụ thể.
Tuỳ thuộc vào việc có Gợi ý cho ứng dụng trong yêu cầu quảng cáo hay không, thông báo UserAgent
có thể được điền theo các cách sau:
- Nếu yêu cầu chứa ít nhất một Gợi ý ứng dụng entropy thấp, thì
UserAgent
sẽ được điền dựa trên nội dung của các gợi ý đó. - Nếu yêu cầu chỉ chứa tiêu đề User-Agent,
UserAgent
sẽ được điền dựa trên nội dung có thể được phân tích cú pháp từ tiêu đề.
Ví dụ: Điền UserAgent
dựa trên tiêu đề User-Agent
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
UserAgent
được điền chỉ dựa trên tiêu đề User-Agent có thể có dạng 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 ít nhất có Gợi ý ứng dụng có độ hỗn loạn thấp, UserAgent
sẽ được điền dựa trên nội dung của các tiêu đề đó ngay cả khi có tiêu đề User-Agent. 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 đề User-Agent so với Thông tin gợi ý của ứng dụng
Một số trường được điền theo cách khác nhau tuỳ thuộc vào việc các trường đó dựa trên tiêu đề Tác nhân người dùng hay Gợi ý ứng dụng. Sau đây là bản tóm tắt về những điểm khác biệt này:
- Đối với các trình duyệt và nền tảng giống hệt nhau,
UserAgent.browsers.brand
vàUserAgent.platform.brand
thường sẽ khác nhau giữaUserAgent
dựa trên tiêu đề Tác nhân người dùng hoặc Gợi ý ứng dụng. Ví dụ:UserAgent.platform.brand
có thể xuất hiện dưới dạng "Windows NT" nếu dựa trên tiêu đề User-Agent hoặc "Windows" nếu dựa trên Gợi ý cho ứng dụng. - Một số mục nhập
UserAgent.browsers
là dành riêng cho tiêu đề User-Agent hoặc gợi ý cho ứng dụng. Ví dụ: "AppleWebKit" sẽ xuất hiện nếuUserAgent
dựa trên tiêu đề User-Agent, trong khi "Chromium" sẽ chỉ xuất hiện nếu dựa trên Gợi ý ứng dụng. - Chỉ
UserAgent
dựa trên tiêu đề User-Agent mới có thể chứa các giá trị đã đóng băng. Ví dụ: nếu nền tảng là Windows 11 22H2, thìUserAgent.platform.brand
sẽ được đặt thành "Windows NT" vàUserAgent.platform.version
sẽ được đặt thành[“10”, “0”]
vì đó là giá trị cố định cho mọi phiên bản Windows từ 10 trở lên.
Dữ liệu trong UserAgent
dựa trên Gợi ý của ứng dụng thường sẽ không thay thế không chính xác cho thông tin bị đóng băng hoặc bị loại bỏ. Nếu có bất kỳ sự không nhất quán nào giữa tiêu đề User-Agent và UserAgent
dựa trên Gợi ý cho ứng dụng, thì bạn nên ưu tiên thông tin từ UserAgent
.
Các trường đối tượng UserAgent
Phần này tóm tắt từng trường, tập trung vào hành vi dành riêng cho Google RTB và các phương pháp hay nhất để sử dụng.
Trình duyệt
Chứa danh sách các mục nhập BrandVersion thường được sắp xếp theo mức độ cụ thể – ví dụ: nếu bạn liệt kê nội dung của browsers
, thì brand
cho mỗi mục nhập 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, trái ngược với thiết bị di động. |
UserAgent
không phải lúc nào cũng liệt kê trình duyệt theo thứ tự cụ thể, đặc biệt là nếu trình duyệt đó dựa trên Gợi ý ứ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ể được giảm xuống phiên bản chính hoặc bị đóng băng (tuỳ thuộc vào chính sách dành riêng cho tác nhân). Xin lưu ý rằng sẽ không có dấu hiệu nào cho biết giá trị bị khoá.CLIENT_HINTS_LOW_ENTROPY
vàCLIENT_HINTS_HIGH_ENTROPY
: Các mục nhập 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 này theo thứ tự khác nhau trong mỗi yêu cầu. Các tệp này cũng có thể chứa mục nhập GREASE. Bạn nên bỏ qua mục nhập này.CLIENT_HINTS_HIGH_ENTROPY
: Bạn có thể đặt tất cả các trườngversion
tìm thấy trong trình duyệt thành phiên bản đầy đủ.
Nền tảng
Mục nhập BrandVersion mô tả nền tảng. Điều này có thể không tương thích trên tiêu đề Tác nhân người dùng và Gợi ý ứng dụng, vì vậy, việc nhắm mục tiêu một số nền tảng có thể yêu cầu thử nghiệm hai 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à "macOS" trong Gợi ý cho ứ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ể được giảm xuống phiên bản chính hoặc bị khoá. Xin lưu ý rằng sẽ không có thông báo nào cho biết giá trị đã bị khoá.CLIENT_HINTS_LOW_ENTROPY
: Trườngversion
sẽ không được điền sẵn.CLIENT_HINTS_HIGH_ENTROPY
: Bạn có thể đặt trườngversion
thành phiên bản đầy đủ.
Thiết bị 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 phương thức nhập bằng thao tác chạm hay không. Xin lưu ý rằng đây không nhất thiết là chỉ báo về loại thiết bị, vì 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 ý của ứng dụng, xin lưu ý rằng giá trị này sẽ chỉ được điền khi source
được đặt thành CLIENT_HINTS_HIGH_ENTROPY
.
Độ sâu bit
Xác định số bit của nền tảng, chẳng hạn như nền tảng có CPU 32 bit hay 64 bit. Trường này là một chuỗi số nguyên cung cấp thêm thông tin về cấu trúc; ví dụ: cấu trúc "x86" có thể có số bit được đặt thành "32" hoặc "64".
Đối với UserAgent
dựa trên Gợi ý cho ứng dụng, xin lưu ý rằng giá trị này sẽ chỉ được điền khi source
được đặt thành CLIENT_HINTS_HIGH_ENTROPY
.
Mô hình
Xác định mẫu thiết bị. Đối với thiết bị di động (nghĩa là không phải máy tính xách tay hoặc máy tính để bàn), trường này sẽ được điền sẵn tên mẫu như "Pixel 6 Pro".
Phần sau đây mô tả những điểm 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 chứa một giá trị kết hợp giữa cấu trúc và số bit, chẳng hạn như "x64" cho Windows. Giá trị này 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 các 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 các nền tảng máy tính.
Nguồn
Xác định tiêu đề nào được dùng để tạo UserAgent
. Đối với Gợi ý cho ứ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ó thể sử dụng các Gợi ý ứng dụng cơ bản.CLIENT_HINTS_HIGH_ENTROPY
: Có thể sử dụng các gợi ý cho ứng dụng, bao gồm ít nhất một trường được phân loại là có độ hỗn loạn cao.