Việc giảm thông tin trong chuỗi 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 tác nhân người dùng. Thông tin này có thể được dùng để tạo dấu vân tay thụ động. Giờ đây, những thay đổi này đã được triển khai cho bản phát hành công khai, tất cả các yêu cầu về tài nguyên đều có tiêu đề User-Agent được rút gọn. Do đó, các giá trị trả về từ một số giao diện Navigator nhất định sẽ giảm, bao gồm: navigator.userAgent, navigator.appVersion và navigator.platform.
Nhà phát triển web nên xem xét mã trang web của họ để biết 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 User-Agent để đọc mô hình 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 ý cho ứng dụng tác nhân người dùng.
Thông tin mô tả của ứng dụng tác nhân người dùng (UA-CH)
Gợi ý về ứng dụng tác nhân người dùng cho phép truy cập vào toàn bộ tập hợp dữ liệu về Tác nhân người dùng, nhưng chỉ khi các máy chủ chủ động khai báo nhu cầu rõ ràng đối với các phần dữ liệu cụ thể.
Bằng cách xoá dữ liệu người dùng bị lộ một cách thụ động, chúng tôi có thể đo lường và giảm lượng thông tin bị lộ một cách có chủ ý bằng tiêu đề yêu cầu, API JavaScript và các cơ chế khác.
Tại sao chúng ta cần giảm UA và UA-CH?
Trước đây, chuỗi User-Agent sẽ truyền một chuỗi dữ liệu lớn về trình duyệt, hệ điều hành và phiên bản của người dùng trong mỗi yêu cầu HTTP. Điều này gây ra vấn đề vì 2 lý do:
- Độ chi tiết và lượng thông tin chi tiết có thể dẫn đến việc nhận dạng người dùng.
- Việc thông tin này có sẵn theo mặc định có thể dẫn đến hành vi theo dõi bí mật.
UA và UA-CH đã giảm giúp 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.
User-Agent rút gọn bao gồm thương hiệu và phiên bản quan trọng của trình duyệt, nơi yêu cầu đến (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, User-Agent Client Hints 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 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, giúp bạn dễ dàng diễn giải hơn. Mã hiện có phân tích cú pháp chuỗi UA sẽ không bị gián đoạn (mặc dù sẽ trả về ít dữ liệu hơn) và bạn sẽ cần di chuyển sang UA-CH nếu trang web của bạn cần thông tin cụ thể về máy khách.
Cách thức hoạt động của UA và UA-CH đã giảm?
Sau đây là một ví dụ ngắn gọn về cách hoạt động của chuỗi tác nhân người dùng đã giảm và UA-CH. Để 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 của nhà phát triển bằng Gợi ý cho ứng dụng tác nhân người dùng.
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 yêu cầu tải trang web.
- Trình duyệt bao gồm tiêu đề
User-Agentcó chuỗi User-Agent đã giảm. 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 sẽ đưa thông tin đó vào tiêu đề User-Agent Client Hint 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 bao gồm tiêu đề
Máy chủ có thể yêu cầu trình duyệt gửi thêm gợi ý cho ứng dụng khách, chẳng hạn như kiểu thiết bị, bằng 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-ModelTrì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 đề 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"
Client Hints quan trọng
Nếu cần một nhóm Gợi ý cho ứng dụng khách cụ thể trong yêu cầu ban đầu, bạn có thể sử dụng tiêu đề phản hồi Critical-CH. Các giá trị Critical-CH phải là một tập hợp con của 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 về 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 một gợi ý quan trọng (Critical-CH) để hiển thị trang web đúng cách, 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 một nhóm nhỏ các giá trị mà bạn phải có khi tải để tải trang đúng cách. Hãy tham khảo quy cách Độ tin cậy của gợi ý cho ứng dụng để biết thêm thông tin.
Phát hiện thiết bị máy tính bảng bằng UA-CH API
Khi ranh giới giữa thiết bị di động, máy tính bảng và máy tính ngày càng mờ nhạt và các kiểu dáng linh hoạt trở nên 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), bạn nên sử dụng thiết kế thích ứng và tính năng phát hiện để trình bày 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 User-Agent và User-Agent Client Hints đề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 kiểm tra trên chuỗi UA:
- Mẫu điện thoại:
'Android' + 'Chrome/[.0-9]* Mobile' - Mẫu máy tính bảng:
'Android' + 'Chrome/[.0-9]* (?!Mobile)'
Bạn có thể kiểm tra giao diện tiêu đề UA-CH mặc định phù hợp:
- Mẫu số điện thoại:
Sec-CH-UA-Platform: "Android",Sec-CH-UA-Mobile: ?1 - Mẫu 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:
- Mẫu điện thoại:
navigator.userAgentData.platform === 'Android' && navigator.userAgentData.mobile === true - Mẫu 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 dành riêng cho phần cứng, 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ó độ đo lường thông tin cao.
Làm cách nào để sử dụng và kiểm thử UA được rút gọn?
Để bắt đầu, hãy xem xét mã trang web để 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 User-Agent để đọc mô hình 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 sẽ cần triển khai UA-CH API.
Sau khi cập nhật lên UA-CH API, bạn nên kiểm thử để đảm bảo nhận được dữ liệu mà bạn mong đợi từ User-Agent. Có 3 cách để kiểm thử, mỗi cách có độ phức tạp tăng dần.
Việc giảm tác nhân người dùng trên quy mô lớn có nghĩa là chuỗi UA đã giảm hoàn toàn được phân phối trên tất cả các thiết bị Chrome. Việc giảm bắt đầu từ một bản phát hành phụ của Chrome vào quý 2 năm 2022.
Kiểm thử các chuỗi tuỳ chỉnh cục bộ
Nếu bạn muốn kiểm thử trang web bằng các chuỗi User-Agent tuỳ chỉnh để mô phỏng các thiết bị khác nhau, 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ờ hiệu dòng lệnh tại đây.
Hoặc 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ã của trang web
Nếu xử lý chuỗi user-agent hiện có của Chrome trong 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 và kiểm thử song song.
Hỗ trợ gợi ý về ứng dụng và gợi ý quan trọng
Có 3 Gợi ý mặc định về ứng dụng được trả về cho máy chủ, bao gồm tên trình duyệt và phiên bản chính, một giá trị boolean cho biết liệu trình duyệt có đang chạy trên thiết bị di động hay không và tên hệ điều hành. Các chứng chỉ này được gửi sau khi bắt tay bằng giao thức Bảo mật tầng truyền tải (TLS). Các API này đã có sẵn và được trình duyệt của bạn hỗ trợ.
Tuy nhiên, có thể có những lúc bạn cần truy xuất thông tin quan trọng để trang web của bạn hiển thị.
Tối ưu hoá các gợi ý quan trọng
Bắt tay TLS là bước đầu tiên để tạo kết nối bảo mật 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 đượ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.
Sec-CH-UA-Model được yêu cầu hai lần: một lần dưới dạng Gợi ý cho ứng dụng và một lần dưới dạng gợi ý quan trọng với Critical-CH.Accept-CH
Để tối ưu hoá các gợi ý quan trọng (tiêu đề Critical-CH), bạn phải chặn quá trình bắt tay này và cung cấp một mô hình cho Gợi ý cho ứng dụng. Các bước này có thể phức tạp và đòi hỏi kiến thức nâng cao.
Khung ACCEPT_CH HTTP/2 và HTTP/3, kết hợp với tiện ích TLS ALPS, là một phương pháp tối ưu hoá ở cấp độ kết nối để phân phối các lựa chọn ưu tiên về Gợi ý cho ứng dụng của máy chủ kịp thời cho yêu cầu HTTP đầu tiên. Những thông tin này đòi hỏi cấu hình phức tạp và bạn chỉ nên sử dụng cho thông tin thực sự quan trọng.
BoringSSL (một nhánh của OpenSSL) giúp bạn sử dụng 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à việc tối ưu hoá các gợi ý quan trọng.
Câu hỏi thường gặp
Các gợi ý được chỉ định thông qua tiêu đề Accept-CH sẽ được gửi trong bao lâu?
Các gợi ý được chỉ định thông qua tiêu đề Accept-CH sẽ được gửi trong suốt phiên trình duyệt hoặc cho đến khi bạn chỉ định một bộ gợi ý khác.
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.
Các miền phụ (và CNAME) có cần 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 đề yêu cầu bị hạn chế đối với các yêu cầu trên nhiều nguồn gốc, bất kể nguồn gốc đó được xác định như thế nào ở phía DNS. Bạn phải xử lý 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 nhận được thông qua JavaScript thực thi trong bối cảnh nhiều nguồn gốc.
Việc giảm User-Agent ảnh hưởng như thế nào đến việc phát hiện bot?
Thay đổi của Chrome đối với chuỗi Tác nhân người dùng không ảnh hưởng trực tiếp đến chuỗi Tác nhân người dùng mà một bot chọn gửi.
Các bot có thể chọn cập nhật chuỗi của riêng mình để phản ánh thông tin mà Chrome gửi đi đã giảm bớt, 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 User-Agent và những bot nối giá trị nhận dạng của riêng chúng vào cuối chuỗi User-Agent của Chrome vẫn có thể tiếp tục làm như vậy.
Nếu có bất kỳ lo ngại nào 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ó kế hoạch thay đổi chuỗi User-Agent hay không.
Tương tác 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ạ: Hãy dùng thử bản minh hoạ về việc giảm User-Agent.
- GitHub: Đọc bài giải thích về UA-CH, đặt câu hỏi và theo dõi cuộc thảo luận.
Tìm hiểu thêm
- Cải thiện quyền riêng tư của người dùng và trải nghiệm của nhà phát triển: 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 dành cho nhà phát triển web
- Tìm hiểu kỹ về Hộp cát về quyền riêng tư