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

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. Chuỗi này có thể được dùng để tạo vân tay số thụ động. Giờ đây, khi các thay đổi này đã được triển khai rộng rãi, tất cả các yêu cầu tài nguyên đều có tiêu đề User-Agent giảm. Do đó, các giá trị trả về từ một số giao diện Navigator nhất định sẽ 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 họ để 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 kiể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 ý ứ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 ý ứng dụng của Tác nhân người dùng cho phép truy cập vào toàn bộ dữ liệu Tác nhân người dùng, nhưng chỉ khi 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ị hiển thị thụ động, chúng tôi có thể đo lường và giảm lượng thông tin được hiển thị 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 với mọi yêu cầu HTTP. Điều này gây ra vấn đề vì hai lý do:

  • Độ chi tiết và sự phong phú của thông tin có thể dẫn đến việc nhận dạng người dùng.
  • Việc cung cấp thông tin này theo mặc định có thể dẫn đến việc theo dõi lén lút.

UA và UA-CH rút gọn 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.

Tác nhân người dùng 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, nguồn gốc của 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, Gợi ý ứng dụng của 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.

Hơn nữa, 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ễ gặp 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ị 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ề ứ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 rút gọn và UA-CH. Để biết ví dụ chuyên sâu 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ỉ:

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

    1. Trình duyệt bao gồm tiêu đề User-Agent với chuỗi User-Agent 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 sẽ đưa thông tin tương tự vào các tiêu đề Gợi ý ứng dụng của 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ư 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-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 đề 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"
    

Gợi ý quan trọng cho ứng dụng

Nếu cần một nhóm Gợi ý cho ứng dụng 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ị mà 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-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 một gợi ý quan trọng (Critical-CH) để hiển thị đúng trang web, 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ị mà bạn muốn cho trang, trong khi Critical-CH chỉ yêu cầu một tập hợp con các giá trị mà bạn phải có khi tải để tải trang đúng cách. Hãy tham khảo Thông số kỹ thuật về độ 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 trở nên mờ nhạt và các kiểu dáng linh động 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 để hiển thị 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à Gợi ý ứng dụng User-Agent đều đến từ cùng một nguồn, vì vậy, các hình thức logic giống nhau sẽ hoạt động.

Ví dụ: nếu mẫu này được đánh dấu 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 đ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ó độ hỗn loạn cao.

Làm cách nào để sử dụng và kiểm thử UA giảm?

Để bắt đầu, hãy xem lại mã trang web để biết các thực thể 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 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 mong muốn từ Trình đại diện người dùng. Có ba cách để kiểm thử, mỗi cách đều tăng dần độ phức tạp.

Phạm vi cung cấp theo tỷ lệ cho tính năng Giảm thiểu tác nhân người dùng có nghĩa là chuỗi UA được giảm thiểu hoàn toàn sẽ được phân phối trên tất cả thiết bị Chrome. Việc giảm bắt đầu bằng một bản phát hành nhỏ của Chrome vào quý 2 năm 2022.

Kiểm thử chuỗi tuỳ chỉnh cục bộ

Nếu bạn muốn kiểm thử trang web bằng cách sử dụng chuỗi User-Agent 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ã 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 mã phía máy chủ, bạn có thể chuyển đổi chuỗi đó sang định dạng mới để kiểm thử 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 ý cho ứng dụng và gợi ý quan trọng

Có 3 Gợi ý cho ứ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, một boolean cho biết liệu 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 thông báo này được gửi sau khi bắt tay giao thức Bảo mật tầng truyền tải (TLS). Các tính năng này đã có sẵn và được hỗ trợ trong trình duyệt của bạn.

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 hiển thị.

Tối ưu hoá 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ó biện pháp 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 yêu cầu 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 Gợi ý ứng dụng có gợi ý quan trọng.
Khi máy chủ yêu cầu một gợi ý quan trọng, ứng dụng sẽ thử lại gửi yêu cầu đầu tiên cho trang web có 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 dưới dạng Gợi ý cho ứng dụng khách với Accept-CH và một lần nữa dưới dạng 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 thao tác bắt tay này và cung cấp 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 HTTP/2 và HTTP/3 ACCEPT_CH, kết hợp với tiện ích TLS ALPS, là một tính năng tối ưu hoá ở cấp kết nối để phân phối các tuỳ chọn ưu tiên của Gợi ý ứng dụng của máy chủ kịp thời cho yêu cầu HTTP đầu tiên. Các loại này yêu cầu cấu hình phức tạp và bạn chỉ nên sử dụng loại 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 gợi ý quan trọng, hãy tham khảo hướng dẫn của chúng tôi về tính tin cậy và tối ưu hoá gợi ý quan trọng.

Câu hỏi thường gặp

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 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 một nhóm 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ó độ hỗn loạn cao không?

UA-CH có độ hỗn loạn 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 lấy thông qua JavaScript thực thi trong ngữ cảnh trên 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 User-Agent không ảnh hưởng trực tiếp đến chuỗi User-Agent mà 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 giảm thiểu 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 User-Agent và các bot thêm giá trị nhận dạng của riêng chúng vào cuối chuỗi User-Agent của Chrome có thể tiếp tục làm như vậy.

Nếu có bất kỳ mối lo ngại nào về các 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.

Tham gia và chia sẻ ý kiến phản hồi

Tìm hiểu thêm