PowerScan
VI

Chuỗi User-Agent và Client Hints: chúng tiết lộ gì và điều gì đã bị đóng băng

Dấu vân tay trình duyệt · 6 phút đọc · bởi PowerScan

Ảnh: Unsplash

Chuỗi user agent là tín hiệu nhận dạng lâu đời nhất trên web và là tín hiệu thay đổi nhiều nhất trong vài năm qua. Đọc nó cho tốt nghĩa là biết còn gì trong đó, điều gì đã bị cố ý đóng băng, và chi tiết bị gỡ đã đi về đâu.

Chuỗi này nói gì

Một chuỗi Chromium hiện hành trên Windows trông như Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/154.0.0.0 Safari/537.36. Các token lịch sử (Mozilla/5.0, AppleWebKit, like Gecko, Safari) có mặt để tương thích với các script viết từ hàng chục năm trước và không mang thông tin gì. Các phần hữu ích là nền tảng (Windows NT 10.0, kể cả trên Windows 11), kiến trúc và phiên bản chính của trình duyệt.

Những gì từng có ở đó đã bị gỡ có chủ đích. Phiên bản phụ và bản vá nay là 0.0.0. Phiên bản Windows bị ghim ở 10.0. Chuỗi Android không còn bao gồm mẫu thiết bị. Đây là "user agent reduction" mà Chromium đã triển khai giữa 2022 và 2023 chính vì chuỗi này đã trở thành một bề mặt lấy vân tay.

Client Hints: cùng dữ liệu, theo yêu cầu

Chi tiết bị gỡ không biến mất; nó chuyển sang User-Agent Client Hints. Máy chủ có thể yêu cầu các trường cụ thể bằng header Accept-CH, và trình duyệt sẽ gửi các header như Sec-CH-UA-Platform-Version hoặc Sec-CH-UA-Model ở các yêu cầu sau. Các gợi ý entropy thấp (thương hiệu và phiên bản chính, nền tảng, cờ di động) được gửi mặc định. Các gợi ý entropy cao (phiên bản đầy đủ, kiến trúc, số bit, mẫu máy, phiên bản nền tảng) chỉ được gửi cho các trang yêu cầu, và một script có thể yêu cầu cùng bộ đó qua navigator.userAgentData.getHighEntropyValues().

Mục tiêu thiết kế là trang web phải khai báo nó muốn gì, khiến việc thu thập trở nên hiển hiện và có thể kiểm toán. Trong thực tế, một trang muốn lấy vân tay vẫn có thể yêu cầu mọi thứ; khác biệt là việc yêu cầu đó là một yêu cầu mà trình duyệt thấy được, ghi lại được hoặc từ chối được.

Vấn đề nhất quán

Vì cùng những sự thật này nay có từ hai nguồn, chúng có thể được so sánh. Một trình duyệt đổi chuỗi user agent để tự nhận macOS nhưng để navigator.userAgentData.platform vẫn báo Windows đã tạo ra một mâu thuẫn rất dễ phát hiện. Điều tương tự áp dụng cho thuộc tính navigator.platform, các phông chữ đặc thù hệ điều hành mà trang thấy được, và chuỗi bộ render WebGL, vốn nêu tên một trình điều khiển đồ họa chỉ tồn tại trên một hệ điều hành. Chỉ giả mạo mỗi chuỗi này đã là chiến lược thua cuộc từ nhiều năm.

Đọc chuỗi của chính bạn

Một công cụ chẩn đoán hiển thị chuỗi thô, trình duyệt và phiên bản mà nó phân tích ra, và engine (Blink, Gecko hoặc WebKit). Lưu ý rằng mọi trình duyệt trên iOS đều báo WebKit, bất kể thương hiệu nói gì, vì Apple yêu cầu như vậy. Nếu tên trình duyệt được phân tích làm bạn ngạc nhiên, chuỗi đang bị một tiện ích mở rộng hoặc một cài đặt hồ sơ thay đổi; điều đó có phải vấn đề hay không tùy vào việc phần còn lại của trình duyệt có đồng tình với sự thay đổi hay không.

Tất cả bài viết · Chạy quét