Việc giảm thiểu tác nhân người dùng (UA) sẽ giảm thiểu thông tin nhận dạng được chia sẻ trong chuỗi User-Agent. Chuỗi này có thể được dùng cho phương thức tạo vân tay số thụ động. Giờ đây, những thay đổi này đã được phát hành rộng rãi, tất cả các yêu cầu về tài nguyên đều có tiêu đề User-Agent
rút gọn. Do đó, giá trị trả về từ một số giao diện Navigator
nhất định bị giảm, bao gồm: navigator.userAgent
, navigator.appVersion
và navigator.platform
.
Nhà phát triển web nên xem lại mã trang web của mình để sử dụng chuỗi Tác nhân người dùng. Nếu trang web của bạn dựa vào việc phân tích cú pháp chuỗi Tác nhân người dùng để đọc mẫu thiết bị, phiên bản nền tảng hoặc phiên bản trình duyệt đầy đủ, thì bạn cần triển khai API Gợi ý của ứng dụng tác nhân người dùng.
Gợi ý của ứng dụng tác nhân người dùng (UA-CH)
Gợi ý ứng dụng tác nhân người dùng cho phép truy cập vào tập hợp đầy đủ dữ liệu Tác nhân người dùng, nhưng chỉ khi máy chủ chủ động khai báo một nhu cầu rõ ràng về một số phần dữ liệu cụ thể.
Bằng cách xoá dữ liệu người dùng bị tiếp xúc thụ động, chúng tôi có thể đo lường và giảm lượng thông tin bị chủ động hiển thị qua các tiêu đề của yêu cầu, API JavaScript và các cơ chế khác một cách hiệu quả hơn.
Tại sao chúng ta cần giảm bớt UA và UA-CH?
Trước đây, chuỗi Tác nhân người dùng sẽ truyền phát một chuỗi lớn dữ liệu về trình duyệt, hệ điều hành và phiên bản của người dùng với mọi yêu cầu HTTP. Việc này gây ra vấn đề vì hai lý do:
- Mức độ chi tiết và phong phú có thể giúp tăng khả năng nhận dạng người dùng.
- Sự sẵn có mặc định của thông tin này có thể dẫn đến việc theo dõi bí mật.
Giảm UA và UA-CH để cải thiện quyền riêng tư của người dùng bằng cách chỉ chia sẻ thông tin cơ bản theo mặc định.
Tác nhân người dùng được rút gọn bao gồm thương hiệu của trình duyệt và một phiên bản quan trọng, nơi xuất phát yêu cầu (máy tính hoặc thiết bị di động) và nền tảng. Để truy cập vào nhiều dữ liệu hơn, tính năng Gợi ý ứng dụng tác nhân người dùng cho phép bạn yêu cầu thông tin cụ thể về thiết bị hoặc điều kiện của người dùng.
Ngoài ra, theo thời gian, chuỗi User-Agent
ngày càng dài hơn và phức tạp hơn, dẫn đến việc phân tích cú pháp chuỗi dễ xảy ra lỗi. UA-CH cung cấp dữ liệu có cấu trúc và đáng tin cậy, dễ diễn giải hơn. Mã hiện có phân tích cú pháp chuỗi UA sẽ không bị ngắt (mặc dù sẽ trả về ít dữ liệu hơn) và bạn sẽ cần chuyển sang UA-CH nếu trang web của bạn cần thông tin cụ thể về ứng dụng.
UA và UA-CH đã rút gọn hoạt động như thế nào?
Dưới đây là ví dụ ngắn gọn về cách hoạt động của chuỗi User-Agent và UA-CH được rút gọn. Để xem ví dụ chi tiết hơn, hãy xem bài viết Cải thiện quyền riêng tư của người dùng và trải nghiệm nhà phát triển bằng tính năng Gợi ý ứng dụng tác nhân người dùng.
Một người dùng mở trình duyệt và nhập example.com
vào thanh địa chỉ:
Trình duyệt gửi một yêu cầu để tải trang web.
- Trình duyệt chứa tiêu đề
User-Agent
có chuỗi User-Agent được rút gọn. Ví dụ:User-Agent: Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.0.0 Mobile Safari/537.36
Trình duyệt cũng đưa thông tin đó vào tiêu đề Gợi ý ứng dụng tác nhân người dùng mặc định. Ví dụ:
Sec-CH-UA: "Chrome"; v="98" Sec-CH-UA-Mobile: ?1 Sec-CH-UA-Platform: "Android"
- Trình duyệt chứa tiêu đề
Máy chủ có thể yêu cầu trình duyệt gửi thêm gợi ý về ứng dụng (chẳng hạn như mẫu thiết bị) có tiêu đề phản hồi
Accept-CH
. Ví dụ:Accept-CH: Sec-CH-UA, Sec-CH-UA-Mobile, Sec-CH-UA-Platform, Sec-CH-UA-Model
Trình duyệt áp dụng các chính sách và cấu hình người dùng để xác định dữ liệu nào được phép trả về máy chủ trong các tiêu đề của yêu cầu tiếp theo. Ví dụ:
Sec-CH-UA: "Chrome"; v="93" Sec-CH-UA-Mobile: ?1 Sec-CH-UA-Platform: "Android" Sec-CH-UA-Model: "Pixel 2"
Các Gợi ý quan trọng về ứng dụng
Nếu cần một tập hợp Gợi ý ứng dụng cụ thể trong yêu cầu ban đầu của mình, bạn có thể sử dụng tiêu đề phản hồi Critical-CH
. Giá trị Critical-CH
phải là một tập hợp con gồm các giá trị do Accept-CH
yêu cầu.
Ví dụ: yêu cầu ban đầu có thể bao gồm yêu cầu đối với Device-Memory
và Viewport-Width
, trong đó Device-Memory
được coi là quan trọng.
GET / HTTP/1.1
Host: example.com
HTTP/1.1 200 OK
Content-Type: text/html
Accept-CH: Device-Memory, Viewport-Width
Vary: Device-Memory, Viewport-Width
Critical-CH: Device-Memory
Nếu trình duyệt yêu cầu gợi ý quan trọng (Critical-CH
) để hiển thị trang web chính xác, thì máy chủ có thể yêu cầu thông tin bổ sung này bằng tiêu đề Accept-CH
. Sau đó, trình duyệt có thể gửi một yêu cầu mới cho trang đó, bao gồm cả gợi ý quan trọng.
Tóm lại, Accept-CH
yêu cầu tất cả các giá trị bạn muốn cho trang, trong khi Critical-CH
chỉ yêu cầu tập hợp con các giá trị bạn phải có khi tải để tải trang đúng cách. Hãy tham khảo quy cách về Độ tin cậy của Gợi ý của ứng dụng để biết thêm thông tin.
Phát hiện các thiết bị máy tính bảng bằng API UA-CH
Khi đường liên kết giữa thiết bị di động, máy tính bảng và máy tính ngày càng trở nên ít khác biệt và có kiểu dáng động, phổ biến hơn (màn hình gập, chuyển đổi giữa chế độ máy tính xách tay và máy tính bảng). Do đó, bạn nên sử dụng thiết kế thích ứng và phát hiện tính năng để đưa ra giao diện người dùng phù hợp.
Tuy nhiên, thông tin do trình duyệt cung cấp cho cả chuỗi tác nhân người dùng và Gợi ý ứng dụng tác nhân người dùng đều đến từ cùng một nguồn, vì vậy, các dạng logic tương tự sẽ hoạt động.
Ví dụ: nếu mẫu này được đánh dấu trên chuỗi UA:
- Hình mở khoá điện thoại:
'Android' + 'Chrome/[.0-9]* Mobile'
- Hình mở khoá máy tính bảng:
'Android' + 'Chrome/[.0-9]* (?!Mobile)'
Bạn có thể kiểm tra giao diện các tiêu đề UA-CH mặc định trùng khớp:
- Hình mở khoá điện thoại:
Sec-CH-UA-Platform: "Android"
,Sec-CH-UA-Mobile: ?1
- Hình mở khoá máy tính bảng:
Sec-CH-UA-Platform: "Android"
,Sec-CH-UA-Mobile: ?0
Hoặc giao diện JavaScript tương đương:
- Hình mở khoá điện thoại:
navigator.userAgentData.platform === 'Android' && navigator.userAgentData.mobile === true
- Hình mở khoá máy tính bảng:
navigator.userAgentData.platform === 'Android' && navigator.userAgentData.mobile === false
Đối với các trường hợp sử dụng phần cứng cụ thể, bạn có thể yêu cầu tên mẫu thiết bị thông qua gợi ý Sec-CH-UA-Model
có độ entropy cao.
Làm cách nào để sử dụng và thử nghiệm UA đã giảm?
Để bắt đầu, hãy xem lại mã trang web của bạn để biết các trường hợp và cách sử dụng chuỗi User-Agent. Nếu trang web của bạn dựa vào việc phân tích cú pháp chuỗi Tác nhân người dùng để đọc mẫu thiết bị, phiên bản nền tảng hoặc phiên bản trình duyệt đầy đủ, thì bạn cần triển khai API UA-CH.
Sau khi cập nhật lên API UA-CH, bạn nên kiểm thử để đảm bảo nhận được dữ liệu mà mình mong đợi từ Tác nhân người dùng. Có ba cách để kiểm thử, mỗi cách có độ phức tạp tăng dần.
Khả năng sử dụng theo tỷ lệ để giảm Tác nhân người dùng có nghĩa là chuỗi UA giảm hoàn toàn được vận chuyển trên tất cả thiết bị Chrome. Quá trình giảm bắt đầu từ một bản phát hành nhỏ của Chrome vào quý 2 năm 2022.
Kiểm thử cục bộ các chuỗi tuỳ chỉnh
Nếu bạn muốn kiểm thử trang web của mình bằng các chuỗi Tác nhân người dùng tuỳ chỉnh để mô phỏng nhiều thiết bị, hãy chạy Chrome bằng cờ dòng lệnh --user-agent="Custom string here"
. Tìm hiểu thêm về cờ dòng lệnh tại đây.
Ngoài ra, bạn có thể sử dụng trình mô phỏng thiết bị trong Công cụ của Chrome cho nhà phát triển.
Biến đổi chuỗi trong mã trang web của bạn
Nếu xử lý chuỗi user-agent
hiện có của Chrome ở mã phía máy khách hoặc phía máy chủ, bạn có thể chuyển đổi chuỗi đó sang định dạng mới để kiểm tra khả năng tương thích. Bạn có thể kiểm thử bằng cách ghi đè và thay thế chuỗi hoặc tạo phiên bản mới rồi kiểm thử cạnh nhau.
Hỗ trợ tính năng Gợi ý của ứng dụng và các gợi ý quan trọng
Có 3 Gợi ý ứng dụng mặc định được trả về máy chủ, bao gồm tên trình duyệt và phiên bản chính, boolean cho biết trình duyệt có trên thiết bị di động hay không và tên hệ điều hành. Các đường liên kết này được gửi sau khi giao thức Bảo mật tầng truyền tải (TLS) bắt tay nhau. Các tệp này đã có sẵn và được hỗ trợ trong trình duyệt của bạn.
Tuy nhiên, có thể đôi khi bạn cần truy xuất thông tin quan trọng để trang web hiển thị.
Tối ưu hoá các gợi ý quan trọng
Quá trình bắt tay TLS là bước đầu tiên để tạo ra kết nối an toàn giữa trình duyệt và máy chủ web. Nếu không có sự can thiệp, tiêu đề phản hồi Critical-CH (Quan trọng-CH) được thiết kế để yêu cầu trình duyệt thử lại ngay lập tức nếu yêu cầu đầu tiên được gửi mà không có gợi ý quan trọng.
![Sơ đồ trình tự cho tính năng Gợi ý của ứng dụng khách với các gợi ý quan trọng.](https://developers.google.cn/privacy-sandbox/assets/images/sequence-diagram-with-critical-client-hints.avif?authuser=5&hl=vi)
Sec-CH-UA-Model
được yêu cầu hai lần: một lần là gợi ý ứng dụng với Accept-CH
và một lần nữa là gợi ý quan trọng với Critical-CH
.Để tối ưu hoá các gợi ý quan trọng (tiêu đề Critical-CH
), bạn phải chặn giao thức bắt tay này và cung cấp mô hình cho Gợi ý ứng dụng. Các bước này có thể phức tạp và đòi hỏi kiến thức chuyên sâu.
ACCEPT_CH
Khung HTTP/2 và HTTP/3, kết hợp với tiện ích ALPS TLS là tối ưu hoá ở cấp độ kết nối để cung cấp các lựa chọn ưu tiên Gợi ý ứng dụng của máy chủ trong thời gian thực hiện yêu cầu HTTP đầu tiên. Các trình xử lý này đòi hỏi cấu hình phức tạp và bạn chỉ nên sử dụng thuộc tính này cho thông tin thực sự quan trọng.
BoringSSL (một nhánh của OpenSSL) giúp bạn làm việc với các tính năng thử nghiệm của Google trong Chromium. Hiện tại, ALPS chỉ được triển khai trong BoringSSL.
Nếu bạn cần sử dụng các gợi ý quan trọng, hãy tham khảo hướng dẫn của chúng tôi về độ tin cậy và khả năng tối ưu hoá của gợi ý quan trọng.
Câu hỏi thường gặp
Các gợi ý được chỉ định qua tiêu đề Accept-CH
sẽ được gửi trong bao lâu?
Các gợi ý được chỉ định qua tiêu đề Accept-CH
sẽ được gửi trong suốt phiên duyệt web hoặc cho đến khi một tập hợp gợi ý khác được chỉ định.
UA-CH có hoạt động với HTTP/2 và HTTP/3 không?
UA-CH hoạt động với cả kết nối HTTP/2 và HTTP/3.
Miền con (và CNAME) có yêu cầu trang cấp cao nhất Permissions-Policy
để truy cập vào UA-CH có entropy cao không?
UA-CH có entropy cao trên tiêu đề của yêu cầu sẽ bị hạn chế trên các yêu cầu nhiều nguồn gốc
bất kể nguồn gốc đó được xác định ở phía DNS như thế nào. Bạn phải thực hiện việc uỷ quyền thông qua Permissions-Policy
cho mọi tài nguyên phụ trên nhiều nguồn gốc hoặc được lấy thông qua JavaScript thực thi trong ngữ cảnh nhiều nguồn gốc.
Tính năng giảm thiểu tác nhân người dùng ảnh hưởng như thế nào đến việc phát hiện bot?
Việc Chrome thay đổi chuỗi tác nhân người dùng sẽ không ảnh hưởng trực tiếp đến chuỗi tác nhân người dùng mà bot chọn gửi.
Các bot có thể chọn cập nhật các chuỗi của riêng chúng để phản ánh thông tin giảm đi mà Chrome gửi, nhưng đó hoàn toàn là lựa chọn triển khai của chúng. Chrome vẫn đang gửi cùng một định dạng Tác nhân người dùng và các bot thêm giá trị nhận dạng riêng vào cuối chuỗi Tác nhân người dùng của Chrome vẫn có thể tiếp tục làm như vậy.
Nếu có lo ngại về một số bot cụ thể, bạn nên liên hệ trực tiếp với chủ sở hữu để hỏi xem họ có dự định thay đổi chuỗi tác nhân người dùng hay không.
Thu hút và chia sẻ ý kiến phản hồi
- Bản dùng thử theo nguyên gốc: Chia sẻ ý kiến phản hồi của bạn về các bản dùng thử theo nguyên gốc trước đây.
- Bản minh hoạ: Xem bản minh hoạ về tính năng giảm thiểu tác nhân người dùng của chúng tôi.
- GitHub: Đọc tài liệu giải thích về UA-CH, đặt câu hỏi và theo dõi nội dung thảo luận.
- Hỗ trợ nhà phát triển: Đặt câu hỏi và tham gia thảo luận về kho lưu trữ Hỗ trợ nhà phát triển Hộp cát về quyền riêng tư.
Tìm hiểu thêm
- Cải thiện trải nghiệm của nhà phát triển và quyền riêng tư của người dùng: thông tin tổng quan dành cho nhà phát triển web
- Di chuyển từ chuỗi UA sang UA-CH: hướng dẫn cho nhà phát triển web
- Tìm hiểu Hộp cát về quyền riêng tư