Giảm thiểu tác nhân người dùng là gì?

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.appVersionnavigator.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ỉ:

  1. Trình duyệt gửi một yêu cầu để tải trang web.

    1. 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
    2. 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"
      
  2. 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

  3. 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-MemoryViewport-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.
Khi máy chủ yêu cầu một gợi ý quan trọng, máy khách sẽ thử gửi lại yêu cầu đầu tiên cho trang web kèm theo gợi ý quan trọng. Trong ví dụ này, gợi ý cho 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

Tìm hiểu thêm