TanodTools
VI

Phân tích user agent

Tách chuỗi user agent thành trình duyệt, engine, hệ điều hành, thiết bị và CPU, bắt đầu từ chuỗi của chính trình duyệt bạn.

Chạy hoàn toàn trong trình duyệt của bạn

Client Hints từ trình duyệt của bạn

Việc phân tích dùng ua-parser-js 1.0.41 (MIT) và dựa trên các mẫu nhận dạng, nên chuỗi bất thường hoặc bị giả mạo có thể bị đọc sai. Client Hints chỉ hiển thị cho trình duyệt bạn đang dùng, và chỉ khi trình duyệt đó hỗ trợ (các trình duyệt Chromium có; Firefox và Safari thì không).

Cách đọc chuỗi user agent

  1. User agent của chính trình duyệt bạn được phân tích ngay khi trang tải xong. Để kiểm tra một chuỗi khác, hãy dán vào ô, chẳng hạn từ log máy chủ.
  2. Đọc các hàng trình duyệt, engine, hệ điều hành, thiết bị và CPU. Hãy coi chúng là những gì chuỗi tuyên bố, chứ không phải sự thật đã được chứng minh.
  3. Với trình duyệt của chính bạn, hãy so sánh kết quả với phần Client Hints, nơi có thể hiển thị những chi tiết mà chuỗi rút gọn đã lược bỏ.

User agent cho bạn biết gì, và che giấu gì

User agent ban đầu là cách để máy chủ biết trình duyệt nào đang yêu cầu, nhằm gửi một trang chạy được ở đó. Sau đó các trình duyệt sao chép tên của nhau để nhận được những trang tốt, đó là lý do chuỗi Chrome ngày nay còn nhắc đến Mozilla, AppleWebKit, KHTML, Gecko và Safari. Bộ phân tích xử lý điều này bằng cách thử các mẫu theo thứ tự cẩn thận và chọn kết quả khớp cụ thể nhất.

Chuỗi này cũng đang được cố ý rút ngắn. User-Agent reduction của Chrome cố định phiên bản Windows ở NT 10.0, phiên bản macOS ở 10_15_7, mẫu Android ở K và số bản dựng ở 0.0.0, để chuỗi không còn là dấu vân tay tốt. Các chi tiết không biến mất: một trang yêu cầu chúng qua Client Hints sẽ nhận được phiên bản nền tảng, kiến trúc, mẫu máy và phiên bản trình duyệt đầy đủ, còn trình duyệt của khách quyết định có trả lời hay không.

Hãy dùng chuỗi này cho các quyết định thô và cho log, đừng dùng để tin cậy. Trình thu thập dữ liệu và công cụ dòng lệnh như curl gửi chuỗi ngắn của riêng chúng, và mọi thứ đều có thể bị giả mạo. Nếu bạn đang đuổi theo một lỗi bố cục, phát hiện tính năng ngay trong trang đáng tin cậy hơn việc đọc tên trình duyệt.

Mẹo

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

Chuỗi user agent là gì?

Đó là một dòng văn bản mà trình duyệt hoặc chương trình gửi kèm mỗi yêu cầu web để cho biết nó là gì. Do hàng chục năm mẹo tương thích, hầu như mọi trình duyệt đều bắt đầu bằng Mozilla/5.0 và nhắc đến nhiều trình duyệt khác, nên việc đọc nó cần so khớp mẫu chứ không phải một phép tách đơn giản.

Tại sao Windows 11 hiện là Windows 10?

Chrome và các trình duyệt Chromium khác đóng băng phần nền tảng của chuỗi ở "Windows NT 10.0", bất kể phiên bản Windows thực. Chỉ Client Hints mới phân biệt được: phiên bản nền tảng từ 13 trở lên nghĩa là Windows 11. Trang này hiển thị giá trị đó cho trình duyệt của chính bạn khi có.

Tại sao iPad của tôi lại tự nhận là Mac?

Kể từ iPadOS 13, Safari mặc định yêu cầu phiên bản máy tính của trang web và gửi user agent Macintosh. Riêng chuỗi này không thể phân biệt Mac với iPad, dù trang có thể kiểm tra màn hình cảm ứng. Điều tương tự áp dụng cho macOS: phiên bản bị đóng băng ở 10_15_7 trong chuỗi.

User-Agent reduction là gì?

Chrome đang lược bớt chi tiết khỏi chuỗi để giảm việc theo dõi thụ động: phiên bản phụ hiện là 0.0.0, mẫu thiết bị Android hiện là một chữ K duy nhất, và phiên bản hệ điều hành bị cố định. Các trang cần chi tiết phải yêu cầu chúng bằng Client Hints.

Client Hints là gì?

Đó là các header có cấu trúc và một API JavaScript (navigator.userAgentData) cho phép trang yêu cầu các chi tiết cụ thể, như kiến trúc hoặc phiên bản trình duyệt đầy đủ, thay vì đọc chúng từ chuỗi. Hiện nay chỉ các trình duyệt dựa trên Chromium hỗ trợ.

Tôi có thể tin user agent cho các quyết định bảo mật không?

Không. Ai cũng có thể gửi bất kỳ chuỗi nào, và bot thường giả làm Chrome. Nó ổn cho thống kê và để chọn bố cục, nhưng không dùng để kiểm soát truy cập. Để xác minh Googlebot, một trang web kiểm tra địa chỉ IP của khách bằng tra cứu DNS ngược.