User agent (Chuỗi User-Agent)
Thông tin nhận dạng trình duyệt và hệ điều hành mà trình duyệt gửi trong tiêu đề User-Agent và hiển thị cho JavaScript.
Định nghĩa
Trong HTTP, user agent là phần mềm máy khách thực hiện yêu cầu, và tiêu đề yêu cầu User-Agent là chuỗi văn bản mà nó gửi để các máy chủ có thể xác định ứng dụng, hệ điều hành, nhà cung cấp và phiên bản. MDN lưu ý rằng thông tin này trong lịch sử đã gây ra những lo ngại về quyền riêng tư vì nó có thể được sử dụng để tạo dấu vân tay (fingerprinting). Các trình duyệt Chromium hiện đại gửi một chuỗi rút gọn và chuyển các giá trị chi tiết vào User-Agent Client Hints (các tiêu đề Sec-CH-UA-* và navigator.userAgentData).
Cách thức hoạt động
- Trình duyệt gửi User-Agent với mọi yêu cầu; một giá trị Chrome desktop điển hình trông giống như "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36". Các mã thông báo "Mozilla/5.0", "KHTML, like Gecko" và "Safari" được giữ lại để tương thích về mặt lịch sử.
- Kể từ khi giảm thiểu User-Agent (được triển khai từ Chrome 101 đến 110), Chrome đóng băng phiên bản phụ ở mức 0.0.0, sử dụng các chuỗi nền tảng desktop cố định, và trên Android sẽ gửi một chuỗi cố định "Android 10; K" thay vì phiên bản OS và kiểu thiết bị thực tế. Giá trị rút gọn tương tự cũng xuất hiện trong navigator.userAgent và navigator.platform.
- Chromium các trình duyệt cũng gửi Client Hints có độ entropy thấp theo mặc định — Sec-CH-UA (các thương hiệu và phiên bản chính), Sec-CH-UA-Mobile và Sec-CH-UA-Platform. Máy chủ có thể yêu cầu các gợi ý có độ entropy cao như phiên bản nền tảng, kiểu máy, kiến trúc hoặc danh sách phiên bản đầy đủ bằng tiêu đề phản hồi Accept-CH, và trình duyệt sẽ quyết định những gì cần trả về.
Tại sao nó lại quan trọng
- User agent là một trong những tín hiệu thụ động trong dấu vân tay trình duyệt: nó đến trong mọi yêu cầu mà không cần bất kỳ tập lệnh nào chạy.
- Các hệ thống phát hiện có thể so sánh chuỗi User-Agent với Client Hints và các giá trị JavaScript (navigator.platform, kích thước màn hình, hỗ trợ cảm ứng). Một hồ sơ có các giá trị không đồng nhất sẽ nổi bật hơn một hồ sơ chỉ đơn thuần là phổ biến.
- Các trình duyệt chống phát hiện (Antidetect browsers) cho phép mỗi hồ sơ thiết lập user agent của riêng nó; các công cụ tốt sẽ giữ cho các Client Hints, nền tảng và phiên bản công cụ trình duyệt tương ứng nhất quán với nó.
Giới hạn và những quan niệm sai lầm phổ biến
- "Thay đổi chuỗi User-Agent sẽ thay đổi dấu vân tay trình duyệt của tôi." Nó chỉ thay đổi một giá trị; Client Hints, các API JavaScript, đầu ra Canvas/WebGL và phông chữ vẫn mô tả thiết lập thực tế trừ khi chúng cũng được thay đổi một cách nhất quán.
- "Chuỗi User-Agent hiển thị chính xác OS và thiết bị của tôi." Trong Chrome đã được giảm thiểu, nó không còn làm điều đó nữa — Windows 8.1 và Windows 11 đều báo cáo "Windows NT 10.0", và các thiết bị Android báo cáo "Android 10; K".
- "Một user agent hiếm hoặc rất mới thì an toàn hơn." Các giá trị bất thường hoặc không khớp sẽ thu hẹp phạm vi nhận diện bạn; một sự kết hợp phổ biến và nhất quán nội bộ sẽ ít đặc trưng hơn.
Không có trình duyệt hay proxy nào có thể đảm bảo rằng các tài khoản sẽ không bị hạn chế. Hãy tuân thủ quy định của từng nền tảng.
Các thuật ngữ liên quan
- Dấu vân tay trình duyệt — Một sự kết hợp giữa các đặc điểm của trình duyệt và thiết bị có thể nhận dạng một trình duyệt mà không cần cookie.
- Canvas fingerprinting — Nhận dạng một thiết bị từ những khác biệt nhỏ trong cách nó kết xuất một bản vẽ HTML canvas.
- Hồ sơ trình duyệt — Một tập hợp dữ liệu trình duyệt riêng biệt — cookie, lịch sử, cài đặt, tiện ích mở rộng — được giữ tách biệt với các hồ sơ khác.
Các hướng dẫn liên quan
Nguồn
- MDN: Tiêu đề User-Agent (tài liệu trình duyệt)
- MDN: HTTP Client hints (tài liệu trình duyệt)
- Chromium: Giảm thiểu User-Agent (tài liệu trình duyệt)
- Chrome dành cho Nhà phát triển: User-Agent Client Hints (tài liệu trình duyệt)
Đã kiểm tra 2026-11-07.