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

Tiêu đề User-Agent thường đượ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 chỉnh sửa rất nhiều 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. Để đáp lại yêu cầu này, Google hỗ trợ Gợi ý cho ứng dụng tác nhân người dùng. Các gợi ý này được đưa vào yêu cầu giá thầu (nếu có) để bổ sung cho tiêu đề Tác nhân người dùng. Bạn có thể lấy các Client Hints này (viết tắt) từ tiêu đề Sec-Ch-UA* hoặc từ Client Hints API của Javascript.

Tiêu đề User-Agent đượ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 bằng Gợi ý cho ứng dụng khi có sẵn, nhưng nếu không, thông báo 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 tiết lộ 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 User-Agent.

Cách hệ thống điền sẵn dữ liệu cho UserAgent

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

Tuỳ thuộc vào việc Client Hints có trong yêu cầu quảng cáo hay không, thông báo UserAgent có thể được điền sẵn theo những cách sau:

  • Nếu yêu cầu chứa ít nhất một Gợi ý cho ứng dụng khách có entropy thấp, thì UserAgent sẽ được điền sẵ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, thì UserAgent sẽ được điền sẵn dựa trên những gì có thể 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 chỉ được điền dựa trên tiêu đề Tác nhân người dùng có thể trô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 sẵn UserAgent dựa trên Gợi ý về ứng dụng khách

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 các Gợi ý cho ứng dụng có entropy thấp, UserAgent sẽ được điền sẵn dựa trên nội dung của các tiêu đề đó, ngay cả khi có tiêu đề User-Agent. URL 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 đề User-Agent so với Client Hints

Một số trường được điền theo những cách khác nhau, tuỳ thuộc vào việc chúng dựa trên tiêu đề User-Agent hay Gợi ý về ứng dụng khách. 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 đề User-Agent hoặc Gợi ý về ứng dụng khách. 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 UserAgent.browsers chỉ có trong tiêu đề User-Agent hoặc trong Gợi ý cho ứng dụng. Ví dụ: "AppleWebKit" sẽ xuất hiện nếu UserAgent 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 ý về ứng dụng.
  • Chỉ UserAgent dựa trên tiêu đề User-Agent 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ị 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 ý cho ứng dụng khách thường sẽ không phải là một giải pháp thay thế không chính xác cho thông tin bị đóng băng hoặc bị chỉnh sửa. Nếu có sự không nhất quán giữa tiêu đề User-Agent và UserAgent dựa trên Client Hints, thì thông tin từ UserAgent sẽ được ưu tiên.

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 cụ thể của 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 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 AppleWebKit, một phần 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 sẽ không phải lúc nào cũng liệt kê các trình duyệt theo một thứ tự cụ thể, đặc biệt nếu trình duyệt đó dựa trên Gợi ý về ứng dụng. 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ể đượ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 thấy giá trị bị cố định.
  • CLIENT_HINTS_LOW_ENTROPYCLIENT_HINTS_HIGH_ENTROPY: Các mục 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 này theo thứ tự khác nhau trong mỗi yêu cầu. Chúng cũng có thể chứa một mục NHÁP mà bạn nên bỏ qua.
  • CLIENT_HINTS_HIGH_ENTROPY: Bạn có thể đặt tất cả các trường version có trong trình duyệt thành phiên bản đầy đủ.

Nền tảng

Một mục BrandVersion mô tả nền tảng. Điều này có thể không tương thích trên tiêu đề User-Agent và Gợi ý về ứng dụng, vì vậy, việc nhắm đến 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ại là "macOS" trong Gợi ý về ứng dụng khách. 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ể được giảm xuống thành phiên bản chính hoặc bị đóng băng. Xin lưu ý rằng sẽ không có dấu hiệu nào cho thấy giá trị bị cố định.
  • 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 đủ.

Thiết bị 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 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 ý cho ứng dụng khách, xin lưu ý rằng thông tin này sẽ chỉ được điền sẵn khi source được đặt thành CLIENT_HINTS_HIGH_ENTROPY.

Độ rộng bit

Xác định độ bit của nền tảng, chẳng hạn như liệu 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ông tin bổ sung về cấu trúc của nó; ví dụ: cấu trúc "x86" có thể có độ rộng bit được đặt thành "32" hoặc "64".

Đối với UserAgent dựa trên Gợi ý cho ứng dụng khách, xin lưu ý rằng thông tin này sẽ chỉ được điền sẵ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 (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".

Sau đây là nội dung 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 di động: Trường model thường chứa giá trị kết hợp giữa cấu trúc và độ rộng bit, chẳng hạn như "x64" cho Windows. Giá trị này không phải là giá trị trên nhiều 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.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ị 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 đề 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 2 trường hợp sau:

  • CLIENT_HINTS_LOW_ENTROPY: Chỉ có thể sử dụng Client Hints cơ bản.
  • CLIENT_HINTS_HIGH_ENTROPY: Client Hints có sẵn, bao gồm ít nhất một trường được phân loại là entropy cao.