User-Agent (viết tắt là UA) là một trường trong tiêu đề yêu cầu HTTP, mà trình duyệt (hoặc crawler, ứng dụng khách HTTP khác) sẽ mang theo chuỗi này mỗi khi gửi yêu cầu, để nói với máy chủ「tôi là ai」— chứa thông tin như tên và phiên bản trình duyệt, hệ điều hành và phiên bản, công cụ kết xuất, loại thiết bị, kiến trúc CPU v.v. Máy chủ có thể trả về nội dung thích ứng cho các thiết bị khác nhau dựa trên UA, nhà phát triển cũng thường dùng UA để xử lý tương thích, thống kê lưu lượng và nhận dạng crawler.
Chuỗi UA trông dài và lộn xộn là có lý do lịch sử: từ thời kỳ chiến tranh trình duyệt, trình duyệt mới để trang web dựa trên dò tìm trình duyệt cũ hoạt động bình thường sẽ khai báo mình là trình duyệt cũ trong UA (ví dụ Chrome sẽ mang dấu hiệu Safari, Safari sẽ mang dấu hiệu Gecko), việc chồng chất lớp lớp khiến chuỗi UA hiện đại chứa rất nhiều dấu hiệu lịch sử để lại, khiến người ta khó đọc trực tiếp. Vai trò của trình phân tích UA là tách các chuỗi phức tạp này ra, trích xuất thông tin thực sự hữu ích.
Các trình duyệt phổ biến đều có định dạng và từ khóa nhận dạng cố định: Chrome chứa Chrome/phiên bản, Firefox chứa Firefox/phiên bản, Safari chứa Version/phiên bản và dấu hiệu Safari/, phiên bản Edge mới dùng dấu hiệu Edg/, trình duyệt tích hợp WeChat dùng dấu hiệu MicroMessenger/. Hệ điều hành cũng có dấu hiệu tương ứng: Windows dùng Windows NT+phiên bản, macOS dùng Mac OS X+phiên bản, iOS dùng CPU iPhone OS+phiên bản, Android dùng trực tiếp Android+phiên bản. Thông qua đối sánh regex các từ khóa này có thể nhận dạng chính xác.
Công cụ kết xuất là lõi của trình duyệt dùng để phân tích HTML/CSS/kết xuất trang web: các trình duyệt dòng Chromium (Chrome, Edge, Opera v.v.) sử dụng công cụ Blink, Safari dùng WebKit, Firefox dùng Gecko, IE cũ dùng Trident. Biết công cụ kết xuất có thể giúp xác định vấn đề tương thích CSS/JS — dưới cùng một công cụ Blink, hiệu suất kết xuất của Chrome và Edge nhất quán cao độ.
Phát hiện crawler là một trong những mục đích quan trọng của phân tích UA. Crawler công cụ tìm kiếm (Googlebot, Bingbot, Baiduspider), crawler công cụ SEO, chương trình cào dữ liệu độc hại, công cụ dòng lệnh (curl, wget), thư viện script (Python requests) đều sẽ mang dấu hiệu riêng trong UA, hoặc đơn giản là dùng chuỗi UA rất đơn giản. Thông qua đối sánh các từ khóa như bot, crawler, spider, curl có thể nhanh chóng nhận dạng lưu lượng không phải con người.
Nhận dạng loại thiết bị chủ yếu dựa vào dấu hiệu di động: chứa các từ khóa như Mobile, iPhone, Android là điện thoại; chứa iPad, Tablet, Kindle là máy tính bảng; còn lại là máy tính để bàn. Nhưng cần lưu ý UA có thể bị giả mạo (User-Agent Spoofing), crawler độc hại có thể ngụy trang thành trình duyệt thông thường, vì vậy chống crawler nghiêm ngặt còn cần kết hợp các đặc trưng khác, phân tích UA chỉ có thể dùng làm đánh giá ban đầu.
Thông tin kiến trúc CPU ngày càng trở nên quan trọng hiện nay: Mac dòng M của Apple sử dụng kiến trúc ARM64, Mac Intel truyền thống dùng x64; PC Windows vừa có x64 vừa có ARM64 (như laptop Snapdragon); điện thoại toàn bộ là ARM64. Khi cung cấp tải xuống phần mềm, nếu có thể xác định kiến trúc người dùng từ UA, trực tiếp đưa ra gói cài đặt tương ứng (ví dụ .dmg phân biệt phiên bản Intel/Mac, .exe phân biệt phiên bản x64/ARM64) có thể nâng cao đáng kể trải nghiệm người dùng.
Cần lưu ý phân tích UA tồn tại hạn chế: UA có thể bị người dùng hoặc plugin sửa đổi giả mạo, trình duyệt phiên bản mới có thể thay đổi định dạng UA khiến regex vô hiệu, Windows 11 vì tiếp tục sử dụng số phiên bản NT 10.0 nên không thể phân biệt Win10/Win11 từ UA, tất cả các trình duyệt bên thứ ba trên iOS (Chrome, Firefox for iOS) đều bị buộc sử dụng công cụ WebKit nên UA sẽ mang dấu hiệu Safari. Phân tích của công cụ này phù hợp với hầu hết các tình huống như gỡ lỗi phát triển, phân tích log, nhưng đối với các tình huống yêu cầu bảo mật cực cao vui lòng kết hợp IP, vân tay TLS và đánh giá đa chiều khác.