Nhìn vào User-Agent của một trình duyệt Chrome hiện đại, bạn sẽ thấy thứ gì đó như "Mozilla/5.0 ... AppleWebKit/537.36 ... Chrome/120.0 Safari/537.36" — một chuỗi đầy tên các trình duyệt mà Chrome thực ra không phải. Đây là kết quả của hàng chục năm các giải pháp tình thế mang tính lịch sử, không phải ngẫu nhiên.
Nguồn gốc của từ "Mozilla"
Vào thập niên 1990, các trang web xác định khả năng của trình duyệt bằng cách kiểm tra User-Agent có chứa "Mozilla" hay không (tên mã của Netscape Navigator, trình duyệt dẫn đầu thị trường lúc bấy giờ). Khi Internet Explorer muốn nhận được nội dung "cao cấp" tương tự, nó bắt đầu thêm "Mozilla" vào User-Agent của chính mình — và tiền lệ này tồn tại mãi trong ngành.
Cốc Cốc và thị trường trình duyệt di động Việt Nam
Việt Nam là một trong số ít thị trường trên thế giới có hẳn một trình duyệt nội địa cạnh tranh sòng phẳng với các ông lớn quốc tế: Cốc Cốc, ra đời tại Việt Nam, tối ưu cho tiếng Việt (gõ dấu, tìm kiếm, chặn quảng cáo) và vẫn giữ được một lượng người dùng đáng kể trên cả desktop lẫn di động. Cốc Cốc dựa trên Chromium nên User-Agent của nó rất giống Chrome nhưng thường có thêm token riêng, khiến code parse chỉ tìm từ khóa "Chrome" đơn thuần dễ nhận nhầm nó là Chrome gốc. Bên cạnh đó, Android vẫn chiếm ưu thế áp đảo so với iOS trên thị trường di động Việt Nam.
Vì sao nhận diện qua User-Agent không đáng tin cậy
Vì mỗi trình duyệt mới đều thêm token của các phiên bản tiền nhiệm vào User-Agent để tương thích ngược, chuỗi này đã trở thành một đống tàn tích lịch sử chứ không còn là mô tả chính xác về trình duyệt nữa. Thực hành tốt nhất hiện nay là phát hiện trực tiếp khả năng hỗ trợ các tính năng JavaScript/CSS cụ thể, thay vì parse User-Agent.
Dùng để làm gì
- Chẩn đoán các vấn đề tương thích bằng cách xem chính xác client báo trình duyệt và phiên bản nào.
- Hiểu log server, nơi User-Agent của khách truy cập được ghi lại.
- Hiểu vì sao code nhận diện trình duyệt cũ dựa trên User-Agent thường sai.
User-Agent Client Hints như một giải pháp thay thế
Thay vì parse một chuỗi cồng kềnh duy nhất, các trình duyệt hiện đại dựa trên Chromium giờ đây hỗ trợ User-Agent Client Hints — các header riêng biệt như Sec-CH-UA, Sec-CH-UA-Platform và Sec-CH-UA-Mobile, mà server phải yêu cầu tường minh và nhận về ở dạng có cấu trúc. Đây là một phần của xu hướng "User-Agent Reduction" rộng hơn nhằm bảo vệ quyền riêng tư, nên theo thời gian chuỗi User-Agent cổ điển sẽ chứa ngày càng ít chi tiết hơn.