Nhắm mục tiêu tác nhân người dùng

Trước đây, tiêu đề User-Agent đượ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, 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 tốt hơn. Để giải quyết vấn đề này, Google hỗ trợ tính năng Gợi ý ứng dụng tác nhân người dùng. Tính năng này có trong yêu cầu giá thầu (nếu có) để bổ sung cho tiêu đề Tác nhân người dùng. Các Gợi ý ứng dụng này (viết tắt) có thể lấy từ tiêu đề Sec-Ch-UA* hoặc từ API Gợi ý của ứ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ị bằng một trong các trường chuỗi sau:

  • Google: BidRequest.user_agent
  • OpenRTB: BidRequest.device.ua

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 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 tin này sẽ hiển thị dưới dạng một trong các trường sau:

  • Google: BidRequest.user_agent_data
  • OpenRTB: BidRequest.device.sua

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 điền sẵn UserAgent

Không giống như tiêu đề Tác nhân người dùng, thông báo UserAgent thể hiện thông tin tác nhân người dùng được chia nhỏ thành nhiều trường để cung cấp thông tin cụ thể.

Tuỳ thuộc vào việc có tính năng Gợi ý của ứ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 những cách sau:

  • Nếu yêu cầu chứa ít nhất Gợi ý ứng dụng có mức entropy thấp, thì UserAgent sẽ đượ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, thì UserAgent sẽ được điền dựa trên nội dung có thể phân tích cú pháp trong 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 trong đó trình duyệt gửi các tiêu đề sau đây:

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 chỉ dựa trên tiêu đề Tác nhân người dùng 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 trong đó trình duyệt gửi các tiêu đề sau đây:

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ó Gợi ý ứng dụng có entropy ít nhất, UserAgent sẽ được điền dựa trên nội dung của các tiêu đề đó ngay cả khi có tiêu đề Tác nhân người dùng. Đoạn 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 sẵn dựa trên tiêu đề Tác nhân người dùng so với Gợi ý ứ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à nội dung 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 nhau, UserAgent.browsers.brandUserAgent.platform.brand thường sẽ khác nhau giữa UserAgent 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 đề 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à dành riêng cho tiêu đề Tác nhân người dùng hoặc Gợi ý ứng dụng. Ví dụ: "AppleMetric" sẽ xuất hiện nếu UserAgent 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 ý ứng dụng.
  • Chỉ một 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 đặt thành [“10”, “0”] vì đó là giá trị bị treo 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ó 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 Gợi ý ứng dụng, bạn nên ưu tiên thông tin từ UserAgent.

Các trường đối tượng tác nhân người dùng

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 tính năng RTB của Google 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 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 AppleMetric, một tập hợp con của Mozilla.
Chrome Trình duyệt Chrome, một nhóm nhỏ trình duyệt tương thích với Applemột
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 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ường version có thể bị giảm xuống thành phiên bản lớn hoặc bị treo (tuỳ thuộc vào chính sách dành riêng cho từng tác nhân). Lưu ý rằng sẽ không có dấu hiệu nào cho thấy giá trị bị treo.
  • CLIENT_HINTS_LOW_ENTROPYCLIENT_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 nhiều thứ tự trong mỗi yêu cầu. Các mục này cũng có thể chứa mục GREASE và bạn nên bỏ qua mục này.
  • CLIENT_HINTS_HIGH_ENTROPY: Tất cả các trường version có trong trình duyệt có thể được đặ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 của một số nền tảng có thể yêu cầu kiểm thử 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 ý ứ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ường version có thể bị giảm xuống mức phiên bản lớn hoặc bị treo. Lưu ý rằng sẽ không có chỉ báo nào cho thấy giá trị này bị treo.
  • CLIENT_HINTS_LOW_ENTROPY: Trường version sẽ không được điền sẵn.
  • CLIENT_HINTS_HIGH_ENTROPY: Bạn có thể đặt trường version thành phiên bản đầy đủ.

Di động

Cho biết liệu nội dung như quảng cáo có nên được tối ưu hoá cho màn hình nhỏ và/hoặc phương thức nhập bằng cách 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 dành cho thiết bị di động có thể được định cấu hình để yêu cầu một “trang web dành cho máy tính”.

Cấu trúc

Xác định kiến 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, lưu ý rằng thông tin này sẽ chỉ được điền khi source được đặt thành CLIENT_HINTS_HIGH_ENTROPY.

Bit

Xác định độ 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 của trường; 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, lưu ý rằng thông tin 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), tên mẫu sẽ được điền sẵn như “Pixel 6 Pro”.

Nội dung 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 di động: Trường model thường chứa giá trị kiến trúc và độ bit kết hợp, chẳng hạn như “x64” đối với 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.architectureUserAgent.bitness.
  • CLIENT_HINTS_LOW_ENTROPY: Trường model sẽ không được điền sẵn.
  • CLIENT_HINTS_HIGH_ENTROPY: Trường model sẽ chỉ được điền sẵn cho mẫu thiết bị di động. Không có giá trị nào được đặt cho nền tảng máy tính để bàn.

Nguồn

Xác định tiêu đề nào được dùng để tạo UserAgent. Đối với tính năng 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ó các Gợi ý ứng dụng cơ bản.
  • CLIENT_HINTS_HIGH_ENTROPY: Có tính năng Gợi ý ứng dụng, bao gồm ít nhất một trường được phân loại là có mức entropy cao.