Gợi ý của Client User-Agent: một sự thay thế cho User-Agent hoặc một nguồn dữ liệu mới
26/1/26


Markus_automation
Expert in data parsing and automation
Mỗi yêu cầu HTTP chứa một tập hợp các tiêu đề truyền thông tin về máy khách đến máy chủ. Một trong những tiêu đề này là User-Agent. Lịch sử, nó là một chuỗi dài chứa tên trình duyệt, phiên bản, hệ điều hành, và thậm chí cả mô hình thiết bị. Các nhà phát triển đã sử dụng chuỗi này để phục vụ các phiên bản khác nhau của một trang web cho các trình duyệt khác nhau.
Client Hints là một phần mở rộng của HTTP cho phép trình duyệt cung cấp gợi ý về chính nó cho máy chủ chỉ khi có yêu cầu rõ ràng. Thay vì gửi thụ động tất cả dữ liệu trong chuỗi User-Agent, trình duyệt đợi đến khi máy chủ trả về tiêu đề Accept-CH liệt kê các tiêu đề cần thiết. Chỉ sau đó nó mới thêm các tiêu đề này vào các yêu cầu tiếp theo.
Hiện tại, các trình duyệt được sử dụng bởi hơn 75% người dùng Internet hỗ trợ Client Hints. Trong thực tế, điều này ảnh hưởng trực tiếp đến cách các bộ phân giải, hệ thống chống lừa đảo và vân tay hoạt động ngày nay, vì các phương pháp cũ để phân tích User-Agent đang trở nên kém tin cậy hơn. Xử lý UA-CH đúng cách làm cho việc thu thập cùng một dữ liệu với độ chính xác và kiểm soát tốt hơn khi phát triển logic phát hiện người dùng và bộ phân giải. Cân nhắc UA-CH cũng quan trọng đối với vân tay, vì giả mạo một UA duy nhất mà không xem xét UA-CH có thể gây ra sự không nhất quán.
Trong bài viết này, chúng tôi phân tích cách thức hoạt động của giao thức UA-CH và chia sẻ những mẹo thực tế.
Mỗi yêu cầu HTTP chứa một tập hợp các tiêu đề truyền thông tin về máy khách đến máy chủ. Một trong những tiêu đề này là User-Agent. Lịch sử, nó là một chuỗi dài chứa tên trình duyệt, phiên bản, hệ điều hành, và thậm chí cả mô hình thiết bị. Các nhà phát triển đã sử dụng chuỗi này để phục vụ các phiên bản khác nhau của một trang web cho các trình duyệt khác nhau.
Client Hints là một phần mở rộng của HTTP cho phép trình duyệt cung cấp gợi ý về chính nó cho máy chủ chỉ khi có yêu cầu rõ ràng. Thay vì gửi thụ động tất cả dữ liệu trong chuỗi User-Agent, trình duyệt đợi đến khi máy chủ trả về tiêu đề Accept-CH liệt kê các tiêu đề cần thiết. Chỉ sau đó nó mới thêm các tiêu đề này vào các yêu cầu tiếp theo.
Hiện tại, các trình duyệt được sử dụng bởi hơn 75% người dùng Internet hỗ trợ Client Hints. Trong thực tế, điều này ảnh hưởng trực tiếp đến cách các bộ phân giải, hệ thống chống lừa đảo và vân tay hoạt động ngày nay, vì các phương pháp cũ để phân tích User-Agent đang trở nên kém tin cậy hơn. Xử lý UA-CH đúng cách làm cho việc thu thập cùng một dữ liệu với độ chính xác và kiểm soát tốt hơn khi phát triển logic phát hiện người dùng và bộ phân giải. Cân nhắc UA-CH cũng quan trọng đối với vân tay, vì giả mạo một UA duy nhất mà không xem xét UA-CH có thể gây ra sự không nhất quán.
Trong bài viết này, chúng tôi phân tích cách thức hoạt động của giao thức UA-CH và chia sẻ những mẹo thực tế.
Nội dung
Chỉ số Khách hàng và Chỉ số Khách hàng User-Agent
Mặc dù cơ chế Chỉ số Khách hàng xuất hiện từ năm 2013, nó được sử dụng để tối ưu hóa việc phân phối nội dung và không liên quan đến việc xác định trình duyệt. Chỉ với sự ra đời của Chỉ số Khách hàng User-Agent, nó mới bắt đầu được coi như một sự thay thế cho User-Agent tiêu chuẩn.
Cách tiếp cận Chỉ số Khách hàng được triển khai trên các trình duyệt dựa trên Chromium: máy chủ yêu cầu chỉ số, và trình duyệt quyết định những gì sẽ trả về. Điều này có nghĩa là, theo mặc định, trình duyệt không gửi bất kỳ dữ liệu bổ sung nào và chỉ cung cấp thông tin được yêu cầu rõ ràng bởi máy chủ. Ví dụ đơn giản nhất là các nhà phát triển có thể tránh việc phân tích phức tạp chuỗi User-Agent và thay vào đó sử dụng các tiêu đề đơn giản, không phụ thuộc vào biểu thức chính quy.

Qua thời gian, User-Agent tích lũy thêm nhiều chi tiết và các giải pháp tạm thời từ trước như Mozilla/5.0 (mục cụ thể này đã tồn tại từ những năm 1990). Điều này dẫn đến:
Độ phức tạp trong việc phân tích. Vì định dạng User-Agent không được chuẩn hóa nên việc phân tích chuỗi đòi hỏi các biểu thức chính quy, điều không phải lúc nào cũng đáng tin cậy. Các chuỗi User-Agent khó đọc trở thành nguồn gốc của lỗi và các vấn đề tương thích.
Rò rỉ dữ liệu riêng tư. User-Agent truyền tải một lượng lớn thông tin, và nó được gửi với mỗi yêu cầu. Những chi tiết này cho phép theo dõi người dùng: phiên bản trình duyệt chính xác, mẫu thiết bị và bitness đều được sử dụng bởi các trình theo dõi cho việc xác định vân tay.
Như bạn thấy, có một nhu cầu rõ ràng trong việc thay thế User-Agent bằng một cơ chế mới sẽ có cấu trúc và được máy chủ kiểm soát, đồng thời vẫn duy trì khả năng tương thích và cải thiện sự riêng tư.
Chúng tôi sẽ tiếp tục sử dụng thuật ngữ entropy. Trong bối cảnh của UA-CH, nó chỉ mức độ duy nhất của thông tin được truyền đi. Độ entropy của tập hợp các tham số càng cao, khả năng trình duyệt có một vân tay duy nhất càng cao, điều này giúp hệ thống chống gian lận nhận diện nó trong số nhiều hồ sơ khác.
Chỉ số Khách hàng User-Agent (UA-CH) là một tập hợp chỉ số khách hàng chuyên dụng mà truyền tải các đặc điểm của trình duyệt và thiết bị. Thay vì một chuỗi UA đơn lẻ, trình duyệt gửi một tập hợp các tiêu đề có cấu trúc với tiền tố Sec-CH-UA-*, bao gồm:
Sec-CH-UA— một danh sách các thương hiệu trình duyệt và phiên bản của chúng.Sec-CH-UA-Mobile ?0hoặc?1— cho biết liệu trình duyệt hiện tại có được coi là di động không.Sec-CH-UA-Platform— tên hệ điều hành (Windows, Android, macOS).Sec-CH-UA-Platform-Version,Sec-CH-UA-Arch,Sec-CH-UA-Bitness,Sec-CH-UA-Model,Sec-CH-UA-Full-Version-List— chỉ số cao về entropy với phiên bản hệ điều hành chính xác, kiến trúc và mẫu thiết bị. Chúng có thể tiết lộ thông tin độc đáo hơn và do đó chỉ được gửi khi có yêu cầu rõ ràng từ máy chủ.
Một số chỉ số được coi là thấp về entropy: chúng được gửi ngay lập tức và không cung cấp thông tin độc nhất (thương hiệu trình duyệt, nền tảng, chỉ số di động).

Các chỉ số cao về entropy (phiên bản hệ điều hành chính xác, mẫu thiết bị, kiến trúc và bitness) chỉ được trình duyệt gửi sau một yêu cầu Accept-CH rõ ràng, vì chúng cung cấp nhiều dữ liệu độc đáo hơn. Bằng cách này, UA-CH cho phép truyền tải thông tin giống và thậm chí là bổ sung so với User-Agent, nhưng theo cách có ý thức về bảo mật hơn và được kiểm soát bởi máy chủ. Tuy nhiên, từ "kiểm soát" có phần nói quá, bởi vì về mặt kỹ thuật UA-CH có thể truyền tải nhiều thông tin hơn đáng kể so với chỉ UA, và không có gì ngăn cản máy chủ yêu cầu tất cả thông tin đó qua các yêu cầu bổ sung. Từ góc độ quản lý dữ liệu, UA-CH thuận tiện và có cấu trúc hơn so với một chuỗi dài, nhưng những lo ngại về sự riêng tư vẫn tồn tại.
Cách trao đổi Chỉ số Khách hàng hoạt động
Trong thực tế, vòng đời UA-CH diễn ra như sau:
Yêu cầu đầu tiên
Trong yêu cầu đầu tiên, trình duyệt mặc định sẽ thêm các chỉ số thấp về entropy vào các tiêu đề:
Sec-CH-UA: "Google Chrome";v="137", "Chromium";v="137", "Not/A)Brand";v="24" Sec-CH-UA-Mobile: ?0 Sec-CH-UA-Platform: "Windows"
Đây là tập dữ liệu cơ bản về thương hiệu trình duyệt và hệ điều hành.
Phản hồi của máy chủ
Trong phản hồi, máy chủ có thể chỉ định một tiêu đề Accept-CH liệt kê các chỉ số bổ sung mà nó cần. Ví dụ:
Accept-CH: Sec-CH-UA-Platform-Version, Sec-CH-UA-Arch, Sec-CH-UA-Model
Đây là một lệnh để yêu cầu phiên bản hệ điều hành, kiến trúc và mẫu. Trình duyệt sau đó lưu trữ yêu cầu này vào bộ nhớ đệm và trong các yêu cầu tiếp theo tới cùng một miền, nó bổ sung các tiêu đề này.
Các yêu cầu tiếp theo
Các yêu cầu tiếp theo sẽ trông như thế này:
Sec-CH-UA-Platform-Version: "10.0" Sec-CH-UA-Arch: "x86" Sec-CH-UA-Model: ""
Cuối cùng, máy chủ chỉ nhận thông tin chung ở yêu cầu đầu tiên và mọi thứ khác được thêm vào các điều hướng tiếp theo sau yêu cầu Accept-CH.
Đối với các CDN và proxy để lưu trữ các phiên bản nội dung khác nhau đúng cách, máy chủ cũng phải thêm Vary: Sec-CH-UA-Platform-Version, Sec-CH-UA-Arch. Điều này cần thiết, ví dụ, nếu trang web phục vụ các phiên bản JavaScript khác nhau cho ARM và x86.
API JavaScript thì sao?
Ngoài các tiêu đề HTTP, UA-CH còn có sẵn trong JavaScript của trình duyệt. Trên các trình duyệt dựa trên Chromium, có đối tượng navigator.userAgentData, cung cấp ngay lập tức dữ liệu thấp về entropy:
const brands = navigator.userAgentData?.brands; // [{brand: 'Chromium', version: '137'}, ...] const mobile = navigator.userAgentData?.mobile; // true/false const platform = navigator.userAgentData?.platform; // "Windows"

Để lấy các trường chi tiết (cao về entropy), một lời hứa - một đối tượng đặc biệt mô tả cách làm việc với dữ liệu - được gọi:
navigator.userAgentData.getHighEntropyValues([ 'architecture','bitness','model','platformVersion','fullVersionList','wow64' ]).then(ua => { console.log(ua.architecture); // "x86" console.log(ua.bitness); // "64" console.log(ua.platformVersion); // "10.0" console.log(ua.model); // device model or empty console.log(ua.fullVersionList); // array of full versions });

Điều quan trọng cần lưu ý là API này chỉ được hỗ trợ trong các trình duyệt Chromium (nó không có trong Safari hoặc Firefox), vì vậy mã phải bao gồm một phương án thay thế cho navigator.userAgent, ít nhất là trong tương lai gần. Phía máy chủ cũng cần kiểm tra sự có mặt của các tiêu đề Sec-CH-UA-*, bởi vì nếu không có chúng, bạn sẽ phải phân tích User-Agent cũ.

User-Agent vs UA-CH
Hãy xem các sự khác biệt chính giữa User-Agent cổ điển và cách tiếp cận Chỉ số Khách hàng mới:
Đặc điểm | User‑Agent | UA‑CH (Chỉ số Khách hàng) |
Định dạng | một chuỗi dài | một tập hợp các tiêu đề có cấu trúc |
Truyền tải | luôn được gửi trong mọi yêu cầu | chỉ gửi các trường mà máy chủ yêu cầu |
Mở rộng | khó mở rộng, bất kỳ tham số mới nào đều có thể phá vỡ các bộ phân tích | linh hoạt, các chỉ số mới có thể được thêm khi cần |
Phân tích phía máy chủ | cần các biểu thức chính quy | các tiêu đề được đọc trực tiếp |
Hỗ trợ trình duyệt | tất cả các trình duyệt | trình duyệt dựa trên Chromium (Chrome 89+, Edge, Opera) |
Độ chính xác lần tải đầu tiên | thông tin đầy đủ ngay lập tức | chỉ có chỉ số cơ bản trước, chi tiết sau |
Máy chủ kiểm soát | không có | máy chủ quyết định yêu cầu điều gì |
Nguy cơ xác định vân tay | cao | giảm, nhưng không hoàn toàn loại bỏ |
Định dạng: UA là một chuỗi dài; UA-CH là một tập hợp các tiêu đề HTTP có cấu trúc (với tiền tố
Sec-CH-UA-*).Truyền tải: UA được gửi với mọi yêu cầu; UA-CH chỉ gửi những gì máy chủ yêu cầu rõ ràng. Trình duyệt tự quyết định các trường nào cần thêm khi cần thiết.
Mở rộng: UA cổ điển rất khó mở rộng (bất kỳ tham số mới nào cũng có thể phá vỡ các bộ phân tích); UA-CH là một giao thức linh hoạt hơn—các chỉ số mới có thể được thêm mà không phá vỡ các chỉ số hiện có, vì máy chủ yêu cầu rõ ràng chúng.
Phân tích: chuỗi UA cần được tách và phân tích thủ công (sử dụng các biểu thức chính quy); UA-CH được đọc trực tiếp từ các tiêu đề, điều này đơn giản và đáng tin cậy hơn.
Hỗ trợ: UA được hiểu bởi tất cả các trình duyệt; UA-CH được triển khai mặc định trong các trình duyệt dựa trên Chromium (Chrome 89+, Edge, Opera, Brave, Vivaldi và những trình duyệt khác trên cùng engine), nhưng không được hỗ trợ mặc định bởi Safari và Firefox.
Độ chính xác lần tải đầu tiên: UA cổ điển cung cấp thông tin đầy đủ ngay lập tức; UA-CH chỉ cung cấp chỉ số cơ bản khi yêu cầu đầu tiên, chi tiết sẽ chỉ trở nên khả dụng sau khi có yêu cầu từ phía máy chủ (điều này quan trọng cần cân nhắc khi chọn phiên bản nội dung).
Máy chủ kiểm soát: UA không cho phép máy chủ chọn dữ liệu được gửi—mọi thứ luôn được truyền đi; với UA-CH, máy chủ tự quyết định trong
Accept-CHcác trường nào cần thiết.Nguy cơ xác định vân tay: UA-CH tiết lộ ít thông tin độc nhất hơn cho các trình theo dõi, nhưng điều này không loại bỏ hoàn toàn các phương pháp duy nhất hóa người dùng khác (ngôn ngữ, múi giờ, Canvas/WebGL, v.v.). UA-CH chỉ giảm thiểu lượng dữ liệu được tiết lộ ở giai đoạn ban đầu, nhưng không hoàn toàn giải quyết vấn đề nhận dạng vân tay.
Tóm lại, UA-CH cho phép thu thập thông tin cần thiết một cách có chủ đích và ý thức về bảo mật, giúp phát triển thuận lợi và tăng cường linh hoạt. Tuy nhiên, việc chuyển đổi rõ ràng sẽ mất thời gian. Có vẻ như cách tiếp cận lai sẽ tồn tại trong một thời gian: nơi nào có UA-CH, chúng sẽ được sử dụng, và nơi nào không có, User-Agent cũ sẽ tiếp tục được phân tích.
Khuyến nghị thực tế
Đừng yêu cầu mọi thứ cùng một lúc. Nếu bạn chỉ định tất cả các chỉ số trong
Accept-CH, nó bắt đầu giống như xác định vân tay. Chỉ yêu cầu những gì bạn thực sự cần. Ví dụ, hình ảnh thích ứng lợi dụngSec-CH-Viewport-Width,Sec-CH-DPR, vàSec-CH-Width; thích ứng giao diện sử dụngSec-CH-UA-MobilevàSec-CH-UA-Platform; tối ưu hóa lưu lượng sử dụngSec-CH-Save-Data,Sec-CH-RTT, vàSec-CH-ECT. Tránh các thăm dò không cần thiết như yêu cầu tất cả thông tin thiết bị và bộ nhớ cùng một lúc, vì điều này có thể kích hoạt các hệ thống bảo vệ.Không quên việc lưu trữ. Nếu bạn thay đổi nội dung dựa trên Chỉ số Khách hàng, luôn bao gồm
Varycho các tiêu đề đó. Ví dụ, nếu bạn phân loại nội dung theoSec-CH-UA-MobilevàSec-CH-Viewport-Width, phản hồi phải bao gồmVary: Sec-CH-UA-Mobile, Sec-CH-Viewport-Width. Nếu không, một CDN hoặc proxy có thể lưu trữ phản hồi mà không tính đến các chỉ số yêu cầu và phục vụ một phiên bản không chính xác.Tránh thay đổi thường xuyên. Trình duyệt lưu trữ
Accept-CH. Đừng yêu cầu các chỉ số khác nhau trên mỗi trang, vì điều này tăng cường khối lượng công việc tiêu đề.Phương án thay thế là bắt buộc. UA-CH chưa bao phủ toàn bộ thị trường. Theo mặc định, tốt hơn nên đọc
Sec-CH-UA-*hoặcnavigator.userAgentData, và nếu chúng không có, hãy quay về phân tích User-Agent cổ điển. Đừng dựa vào UA-CH như một nguồn bắt buộc.
Kết luận
Chỉ số Khách hàng User-Agent không chỉ là một tiêu đề khác, mà là một nỗ lực hoàn toàn để đổi mới mô hình đơn chuỗi đã lỗi thời. Với UA-CH, dữ liệu khách hàng được truyền đi theo cách có cấu trúc và theo yêu cầu, điều này:
đơn giản hóa công việc của nhà phát triển;
tạo ra cơ hội cho sự phát triển tiếp theo của ngành công nghiệp.
Lợi ích chính của UA-CH cho các nhà phát triển bộ phân tích và người dùng trình duyệt chống phát hiện ngày nay là sự cân bằng giữa thông tin cần thiết và sự dễ dàng sử dụng.
Chỉ số Khách hàng và Chỉ số Khách hàng User-Agent
Mặc dù cơ chế Chỉ số Khách hàng xuất hiện từ năm 2013, nó được sử dụng để tối ưu hóa việc phân phối nội dung và không liên quan đến việc xác định trình duyệt. Chỉ với sự ra đời của Chỉ số Khách hàng User-Agent, nó mới bắt đầu được coi như một sự thay thế cho User-Agent tiêu chuẩn.
Cách tiếp cận Chỉ số Khách hàng được triển khai trên các trình duyệt dựa trên Chromium: máy chủ yêu cầu chỉ số, và trình duyệt quyết định những gì sẽ trả về. Điều này có nghĩa là, theo mặc định, trình duyệt không gửi bất kỳ dữ liệu bổ sung nào và chỉ cung cấp thông tin được yêu cầu rõ ràng bởi máy chủ. Ví dụ đơn giản nhất là các nhà phát triển có thể tránh việc phân tích phức tạp chuỗi User-Agent và thay vào đó sử dụng các tiêu đề đơn giản, không phụ thuộc vào biểu thức chính quy.

Qua thời gian, User-Agent tích lũy thêm nhiều chi tiết và các giải pháp tạm thời từ trước như Mozilla/5.0 (mục cụ thể này đã tồn tại từ những năm 1990). Điều này dẫn đến:
Độ phức tạp trong việc phân tích. Vì định dạng User-Agent không được chuẩn hóa nên việc phân tích chuỗi đòi hỏi các biểu thức chính quy, điều không phải lúc nào cũng đáng tin cậy. Các chuỗi User-Agent khó đọc trở thành nguồn gốc của lỗi và các vấn đề tương thích.
Rò rỉ dữ liệu riêng tư. User-Agent truyền tải một lượng lớn thông tin, và nó được gửi với mỗi yêu cầu. Những chi tiết này cho phép theo dõi người dùng: phiên bản trình duyệt chính xác, mẫu thiết bị và bitness đều được sử dụng bởi các trình theo dõi cho việc xác định vân tay.
Như bạn thấy, có một nhu cầu rõ ràng trong việc thay thế User-Agent bằng một cơ chế mới sẽ có cấu trúc và được máy chủ kiểm soát, đồng thời vẫn duy trì khả năng tương thích và cải thiện sự riêng tư.
Chúng tôi sẽ tiếp tục sử dụng thuật ngữ entropy. Trong bối cảnh của UA-CH, nó chỉ mức độ duy nhất của thông tin được truyền đi. Độ entropy của tập hợp các tham số càng cao, khả năng trình duyệt có một vân tay duy nhất càng cao, điều này giúp hệ thống chống gian lận nhận diện nó trong số nhiều hồ sơ khác.
Chỉ số Khách hàng User-Agent (UA-CH) là một tập hợp chỉ số khách hàng chuyên dụng mà truyền tải các đặc điểm của trình duyệt và thiết bị. Thay vì một chuỗi UA đơn lẻ, trình duyệt gửi một tập hợp các tiêu đề có cấu trúc với tiền tố Sec-CH-UA-*, bao gồm:
Sec-CH-UA— một danh sách các thương hiệu trình duyệt và phiên bản của chúng.Sec-CH-UA-Mobile ?0hoặc?1— cho biết liệu trình duyệt hiện tại có được coi là di động không.Sec-CH-UA-Platform— tên hệ điều hành (Windows, Android, macOS).Sec-CH-UA-Platform-Version,Sec-CH-UA-Arch,Sec-CH-UA-Bitness,Sec-CH-UA-Model,Sec-CH-UA-Full-Version-List— chỉ số cao về entropy với phiên bản hệ điều hành chính xác, kiến trúc và mẫu thiết bị. Chúng có thể tiết lộ thông tin độc đáo hơn và do đó chỉ được gửi khi có yêu cầu rõ ràng từ máy chủ.
Một số chỉ số được coi là thấp về entropy: chúng được gửi ngay lập tức và không cung cấp thông tin độc nhất (thương hiệu trình duyệt, nền tảng, chỉ số di động).

Các chỉ số cao về entropy (phiên bản hệ điều hành chính xác, mẫu thiết bị, kiến trúc và bitness) chỉ được trình duyệt gửi sau một yêu cầu Accept-CH rõ ràng, vì chúng cung cấp nhiều dữ liệu độc đáo hơn. Bằng cách này, UA-CH cho phép truyền tải thông tin giống và thậm chí là bổ sung so với User-Agent, nhưng theo cách có ý thức về bảo mật hơn và được kiểm soát bởi máy chủ. Tuy nhiên, từ "kiểm soát" có phần nói quá, bởi vì về mặt kỹ thuật UA-CH có thể truyền tải nhiều thông tin hơn đáng kể so với chỉ UA, và không có gì ngăn cản máy chủ yêu cầu tất cả thông tin đó qua các yêu cầu bổ sung. Từ góc độ quản lý dữ liệu, UA-CH thuận tiện và có cấu trúc hơn so với một chuỗi dài, nhưng những lo ngại về sự riêng tư vẫn tồn tại.
Cách trao đổi Chỉ số Khách hàng hoạt động
Trong thực tế, vòng đời UA-CH diễn ra như sau:
Yêu cầu đầu tiên
Trong yêu cầu đầu tiên, trình duyệt mặc định sẽ thêm các chỉ số thấp về entropy vào các tiêu đề:
Sec-CH-UA: "Google Chrome";v="137", "Chromium";v="137", "Not/A)Brand";v="24" Sec-CH-UA-Mobile: ?0 Sec-CH-UA-Platform: "Windows"
Đây là tập dữ liệu cơ bản về thương hiệu trình duyệt và hệ điều hành.
Phản hồi của máy chủ
Trong phản hồi, máy chủ có thể chỉ định một tiêu đề Accept-CH liệt kê các chỉ số bổ sung mà nó cần. Ví dụ:
Accept-CH: Sec-CH-UA-Platform-Version, Sec-CH-UA-Arch, Sec-CH-UA-Model
Đây là một lệnh để yêu cầu phiên bản hệ điều hành, kiến trúc và mẫu. Trình duyệt sau đó lưu trữ yêu cầu này vào bộ nhớ đệm và trong các yêu cầu tiếp theo tới cùng một miền, nó bổ sung các tiêu đề này.
Các yêu cầu tiếp theo
Các yêu cầu tiếp theo sẽ trông như thế này:
Sec-CH-UA-Platform-Version: "10.0" Sec-CH-UA-Arch: "x86" Sec-CH-UA-Model: ""
Cuối cùng, máy chủ chỉ nhận thông tin chung ở yêu cầu đầu tiên và mọi thứ khác được thêm vào các điều hướng tiếp theo sau yêu cầu Accept-CH.
Đối với các CDN và proxy để lưu trữ các phiên bản nội dung khác nhau đúng cách, máy chủ cũng phải thêm Vary: Sec-CH-UA-Platform-Version, Sec-CH-UA-Arch. Điều này cần thiết, ví dụ, nếu trang web phục vụ các phiên bản JavaScript khác nhau cho ARM và x86.
API JavaScript thì sao?
Ngoài các tiêu đề HTTP, UA-CH còn có sẵn trong JavaScript của trình duyệt. Trên các trình duyệt dựa trên Chromium, có đối tượng navigator.userAgentData, cung cấp ngay lập tức dữ liệu thấp về entropy:
const brands = navigator.userAgentData?.brands; // [{brand: 'Chromium', version: '137'}, ...] const mobile = navigator.userAgentData?.mobile; // true/false const platform = navigator.userAgentData?.platform; // "Windows"

Để lấy các trường chi tiết (cao về entropy), một lời hứa - một đối tượng đặc biệt mô tả cách làm việc với dữ liệu - được gọi:
navigator.userAgentData.getHighEntropyValues([ 'architecture','bitness','model','platformVersion','fullVersionList','wow64' ]).then(ua => { console.log(ua.architecture); // "x86" console.log(ua.bitness); // "64" console.log(ua.platformVersion); // "10.0" console.log(ua.model); // device model or empty console.log(ua.fullVersionList); // array of full versions });

Điều quan trọng cần lưu ý là API này chỉ được hỗ trợ trong các trình duyệt Chromium (nó không có trong Safari hoặc Firefox), vì vậy mã phải bao gồm một phương án thay thế cho navigator.userAgent, ít nhất là trong tương lai gần. Phía máy chủ cũng cần kiểm tra sự có mặt của các tiêu đề Sec-CH-UA-*, bởi vì nếu không có chúng, bạn sẽ phải phân tích User-Agent cũ.

User-Agent vs UA-CH
Hãy xem các sự khác biệt chính giữa User-Agent cổ điển và cách tiếp cận Chỉ số Khách hàng mới:
Đặc điểm | User‑Agent | UA‑CH (Chỉ số Khách hàng) |
Định dạng | một chuỗi dài | một tập hợp các tiêu đề có cấu trúc |
Truyền tải | luôn được gửi trong mọi yêu cầu | chỉ gửi các trường mà máy chủ yêu cầu |
Mở rộng | khó mở rộng, bất kỳ tham số mới nào đều có thể phá vỡ các bộ phân tích | linh hoạt, các chỉ số mới có thể được thêm khi cần |
Phân tích phía máy chủ | cần các biểu thức chính quy | các tiêu đề được đọc trực tiếp |
Hỗ trợ trình duyệt | tất cả các trình duyệt | trình duyệt dựa trên Chromium (Chrome 89+, Edge, Opera) |
Độ chính xác lần tải đầu tiên | thông tin đầy đủ ngay lập tức | chỉ có chỉ số cơ bản trước, chi tiết sau |
Máy chủ kiểm soát | không có | máy chủ quyết định yêu cầu điều gì |
Nguy cơ xác định vân tay | cao | giảm, nhưng không hoàn toàn loại bỏ |
Định dạng: UA là một chuỗi dài; UA-CH là một tập hợp các tiêu đề HTTP có cấu trúc (với tiền tố
Sec-CH-UA-*).Truyền tải: UA được gửi với mọi yêu cầu; UA-CH chỉ gửi những gì máy chủ yêu cầu rõ ràng. Trình duyệt tự quyết định các trường nào cần thêm khi cần thiết.
Mở rộng: UA cổ điển rất khó mở rộng (bất kỳ tham số mới nào cũng có thể phá vỡ các bộ phân tích); UA-CH là một giao thức linh hoạt hơn—các chỉ số mới có thể được thêm mà không phá vỡ các chỉ số hiện có, vì máy chủ yêu cầu rõ ràng chúng.
Phân tích: chuỗi UA cần được tách và phân tích thủ công (sử dụng các biểu thức chính quy); UA-CH được đọc trực tiếp từ các tiêu đề, điều này đơn giản và đáng tin cậy hơn.
Hỗ trợ: UA được hiểu bởi tất cả các trình duyệt; UA-CH được triển khai mặc định trong các trình duyệt dựa trên Chromium (Chrome 89+, Edge, Opera, Brave, Vivaldi và những trình duyệt khác trên cùng engine), nhưng không được hỗ trợ mặc định bởi Safari và Firefox.
Độ chính xác lần tải đầu tiên: UA cổ điển cung cấp thông tin đầy đủ ngay lập tức; UA-CH chỉ cung cấp chỉ số cơ bản khi yêu cầu đầu tiên, chi tiết sẽ chỉ trở nên khả dụng sau khi có yêu cầu từ phía máy chủ (điều này quan trọng cần cân nhắc khi chọn phiên bản nội dung).
Máy chủ kiểm soát: UA không cho phép máy chủ chọn dữ liệu được gửi—mọi thứ luôn được truyền đi; với UA-CH, máy chủ tự quyết định trong
Accept-CHcác trường nào cần thiết.Nguy cơ xác định vân tay: UA-CH tiết lộ ít thông tin độc nhất hơn cho các trình theo dõi, nhưng điều này không loại bỏ hoàn toàn các phương pháp duy nhất hóa người dùng khác (ngôn ngữ, múi giờ, Canvas/WebGL, v.v.). UA-CH chỉ giảm thiểu lượng dữ liệu được tiết lộ ở giai đoạn ban đầu, nhưng không hoàn toàn giải quyết vấn đề nhận dạng vân tay.
Tóm lại, UA-CH cho phép thu thập thông tin cần thiết một cách có chủ đích và ý thức về bảo mật, giúp phát triển thuận lợi và tăng cường linh hoạt. Tuy nhiên, việc chuyển đổi rõ ràng sẽ mất thời gian. Có vẻ như cách tiếp cận lai sẽ tồn tại trong một thời gian: nơi nào có UA-CH, chúng sẽ được sử dụng, và nơi nào không có, User-Agent cũ sẽ tiếp tục được phân tích.
Khuyến nghị thực tế
Đừng yêu cầu mọi thứ cùng một lúc. Nếu bạn chỉ định tất cả các chỉ số trong
Accept-CH, nó bắt đầu giống như xác định vân tay. Chỉ yêu cầu những gì bạn thực sự cần. Ví dụ, hình ảnh thích ứng lợi dụngSec-CH-Viewport-Width,Sec-CH-DPR, vàSec-CH-Width; thích ứng giao diện sử dụngSec-CH-UA-MobilevàSec-CH-UA-Platform; tối ưu hóa lưu lượng sử dụngSec-CH-Save-Data,Sec-CH-RTT, vàSec-CH-ECT. Tránh các thăm dò không cần thiết như yêu cầu tất cả thông tin thiết bị và bộ nhớ cùng một lúc, vì điều này có thể kích hoạt các hệ thống bảo vệ.Không quên việc lưu trữ. Nếu bạn thay đổi nội dung dựa trên Chỉ số Khách hàng, luôn bao gồm
Varycho các tiêu đề đó. Ví dụ, nếu bạn phân loại nội dung theoSec-CH-UA-MobilevàSec-CH-Viewport-Width, phản hồi phải bao gồmVary: Sec-CH-UA-Mobile, Sec-CH-Viewport-Width. Nếu không, một CDN hoặc proxy có thể lưu trữ phản hồi mà không tính đến các chỉ số yêu cầu và phục vụ một phiên bản không chính xác.Tránh thay đổi thường xuyên. Trình duyệt lưu trữ
Accept-CH. Đừng yêu cầu các chỉ số khác nhau trên mỗi trang, vì điều này tăng cường khối lượng công việc tiêu đề.Phương án thay thế là bắt buộc. UA-CH chưa bao phủ toàn bộ thị trường. Theo mặc định, tốt hơn nên đọc
Sec-CH-UA-*hoặcnavigator.userAgentData, và nếu chúng không có, hãy quay về phân tích User-Agent cổ điển. Đừng dựa vào UA-CH như một nguồn bắt buộc.
Kết luận
Chỉ số Khách hàng User-Agent không chỉ là một tiêu đề khác, mà là một nỗ lực hoàn toàn để đổi mới mô hình đơn chuỗi đã lỗi thời. Với UA-CH, dữ liệu khách hàng được truyền đi theo cách có cấu trúc và theo yêu cầu, điều này:
đơn giản hóa công việc của nhà phát triển;
tạo ra cơ hội cho sự phát triển tiếp theo của ngành công nghiệp.
Lợi ích chính của UA-CH cho các nhà phát triển bộ phân tích và người dùng trình duyệt chống phát hiện ngày nay là sự cân bằng giữa thông tin cần thiết và sự dễ dàng sử dụng.
Cập nhật với các tin tức Octo Browser mới nhất
Khi nhấp vào nút này, bạn sẽ đồng ý với Chính sách Quyền riêng tư của chúng tôi.
Cập nhật với các tin tức Octo Browser mới nhất
Khi nhấp vào nút này, bạn sẽ đồng ý với Chính sách Quyền riêng tư của chúng tôi.
Cập nhật với các tin tức Octo Browser mới nhất
Khi nhấp vào nút này, bạn sẽ đồng ý với Chính sách Quyền riêng tư của chúng tôi.
Các bài viết liên quan
Các bài viết liên quan
Các bài viết liên quan

Tham gia Octo Browser ngay
Hoặc liên hệ với Dịch vụ khách hàng bất kì lúc nào nếu bạn có bất cứ thắc mắc nào.

Tham gia Octo Browser ngay
Hoặc liên hệ với Dịch vụ khách hàng bất kì lúc nào nếu bạn có bất cứ thắc mắc nào.
Tham gia Octo Browser ngay
Hoặc liên hệ với Dịch vụ khách hàng bất kì lúc nào nếu bạn có bất cứ thắc mắc nào.


