Quay lại blog

Kiểm tra mức lộ browser fingerprint: 6 bước đối chiếu tính nhất quán

Trang kiểm tra fingerprint hiển thị nhiều dữ liệu mà website vốn đã có thể đọc. Sáu bước dưới đây giúp phát hiện mâu thuẫn giữa trình duyệt, hệ thống, khu vực, mạng và dữ liệu kết xuất, vì nhiều tín hiệu không khớp nhau thường dễ bị nhận ra hơn một giá trị bất thường đơn lẻ.

Mở bất kỳ trang kiểm tra browser fingerprint nào, bạn thường sẽ thấy một danh sách dài các trường: UA, màn hình, múi giờ, phông chữ, kết quả kết xuất Canvas và thông số phần cứng. Nhiều người nhìn vào mục “độ duy nhất” trước tiên, nhưng thực ra đó là phần ít quan trọng nhất. Quan trọng hơn là các trường này có hợp lý khi đặt cạnh nhau hay không.

浏览器指纹暴露自查:六项核对与自洽判断的关键步骤与判断维度示意图

Website vốn có thể đọc được những gì

Fingerprint không được lưu như cookie. Bạn có thể xóa hoặc chặn cookie, hoặc tránh chúng bằng chế độ duyệt riêng tư; fingerprint được hình thành từ cấu hình của chính trình duyệt và thiết bị. UA chứa loại và phiên bản trình duyệt, cùng hệ điều hành và phiên bản của nó. Ngoài ra còn có plugin đã cài, độ phân giải và độ sâu màu của màn hình, danh sách phông chữ, múi giờ và ngôn ngữ ưu tiên, loại CPU, mẫu GPU và dung lượng bộ nhớ, địa chỉ IP, nhà mạng và loại kết nối, cùng kết quả kết xuất do các giao diện HTML5 như Canvas và WebGL trả về. Khi kết hợp, các trường này tạo thành một định danh thường gần như không đổi khi bạn thay IP, xóa cookie hoặc dùng chế độ riêng tư. Các nền tảng dùng cùng nguyên lý cơ bản để đánh giá liệu các tài khoản có thể liên quan với nhau hay không.

Trước tiên, đối chiếu 3 mục với hệ thống

User Agent là nơi nên bắt đầu vì đó là cách trình duyệt tự mô tả chính nó. Sao chép UA từ trang kiểm tra, sau đó kiểm tra phiên bản trình duyệt trong cài đặt trình duyệt và phiên bản hệ điều hành trong cài đặt hệ thống. Nếu hệ điều hành hoặc phiên bản kernel mà UA khai báo không khớp với máy thực tế, hoặc rõ ràng cũ hơn các phiên bản hiện hành phổ biến, đây là một trong những điểm không nhất quán dễ nhận thấy nhất.

Múi giờ phải khớp với khu vực của network exit. Trang kiểm tra thường hiển thị múi giờ hiện tại trực tiếp, và một script đơn giản để đọc múi giờ cũng trả về cùng giá trị. Hãy dùng thêm một trang tra cứu IP bất kỳ để xem exit IP được gán cho khu vực nào. Nếu hai kết quả chỉ tới những khu vực khác nhau, cần xử lý chênh lệch đó.

Ngôn ngữ và khu vực là các tín hiệu yếu khi xét riêng, nhưng hữu ích khi kết hợp. Kiểm tra danh sách do navigator.language và navigator.languages trả về rồi so với ngôn ngữ thường dùng ở exit region. Múi giờ ở Mỹ, ngôn ngữ là tiếng Trung và exit ở châu Âu sẽ nổi bật hơn nhiều so với từng mục riêng lẻ.

Màn hình, network exit và đặc điểm kết xuất

Với thông số màn hình và phần cứng, hãy xem hai điều: các giá trị có phổ biến không và chúng có khớp với loại thiết bị mà UA khai báo không. Có thể xem cùng lúc độ phân giải, pixel ratio, vùng màn hình khả dụng, số lõi CPU và bộ nhớ. Độ phân giải cỡ điện thoại đi với desktop UA là một mâu thuẫn điển hình.

WebRTC cần được kiểm tra riêng vì nó có thể làm lộ thông tin mạng thực. Trang kiểm tra thường dành cho nó một mục riêng. Hãy xem có trả về địa chỉ mạng nội bộ của máy, chẳng hạn địa chỉ bắt đầu bằng 192.168 hoặc 10, hay thậm chí là public exit address thực hay không. Nếu đã bật proxy mà địa chỉ thật vẫn xuất hiện, lưu lượng đó không đi qua proxy. Đây là mục có ưu tiên cao nhất.

Với Canvas và WebGL, hãy xem kết quả có ổn định không và có phù hợp với GPU model được khai báo không. Có một chi tiết quan trọng: nếu nhiều environment chạy song song trên cùng một máy trả về chính xác cùng một giá trị kết xuất, chúng dễ bị liên hệ với nhau hơn so với khi các giá trị có một chút biến thiên hoặc noise.

Mâu thuẫn dễ nổi bật hơn việc thiếu tính chân thực

Nền tảng không yêu cầu mọi thiết bị phải hoàn toàn duy nhất. Điều họ đánh giá là toàn bộ thông tin có trông giống được gửi từ một máy bình thường hay không. Một giá trị đơn lẻ chưa đủ “thực”, chẳng hạn độ phân giải hiếm gặp, thường chỉ là tín hiệu yếu. Nhưng khi nhiều trường mâu thuẫn nhau, điểm bất thường sẽ dễ bị phát hiện hơn nhiều. UA nói Windows nhưng danh sách phông chữ lại giống macOS; múi giờ ở Mỹ, ngôn ngữ là tiếng Trung và exit ở châu Âu; độ phân giải giống điện thoại nhưng UA lại là trình duyệt desktop. Chỉ một trong các tổ hợp như vậy cũng có thể làm giảm ý nghĩa của việc tinh chỉnh kỹ các tham số khác. Vì thế, khi tự kiểm tra, hãy tìm mâu thuẫn rõ ràng trước rồi mới quan tâm đến độ tinh chỉnh của từng tham số.

Nếu chỉ muốn sửa 3 điểm

Ưu tiên đầu tiên là rò rỉ WebRTC vì nó làm lộ thông tin mạng thực. Thứ hai là giữ múi giờ và ngôn ngữ nhất quán với exit region, vì những chênh lệch kiểu này có thể dễ dàng tích lũy thành một hồ sơ bất thường. Thứ ba là xử lý Canvas và WebGL để cùng một máy không trực tiếp làm lộ một giá trị kết xuất ổn định và duy nhất.

Cũng có một giới hạn thực tế: tắt hoặc hạn chế JavaScript có thể ngăn một phần việc thu thập dữ liệu, nhưng sẽ làm giảm đáng kể khả năng sử dụng của nhiều website. Trình duyệt chú trọng quyền riêng tư có sẵn một số biện pháp bảo vệ và thường đủ cho việc duyệt web hằng ngày, nhưng kém linh hoạt hơn khi cần duy trì nhiều danh tính không liên quan trong thời gian dài.

Cách duy trì nhiều environment

Mấu chốt không phải là tạo một fingerprint hoàn toàn ngẫu nhiên mỗi lần. Mỗi environment nên ổn định bên trong và đồng thời khác với các environment khác. Với PurpleMark, hãy tạo một browser environment riêng cho từng tài khoản, xử lý riêng các tham số như Canvas, sau đó dùng trang kiểm tra để rà soát tính nhất quán của từng environment. Environment vượt qua vòng tự kiểm tra này mới đáng để duy trì lâu dài.

Cuối cùng, việc kiểm tra fingerprint chỉ có hai mục đích: biết mình đang làm lộ những gì và xác nhận toàn bộ thông tin có nhất quán nội bộ hay không. Độ duy nhất là điều ít cần lo nhất.