Tìm hiểu dấu vân tay trình duyệt hoạt động ra sao qua Canvas, WebGL, âm thanh và cách phát hiện, giảm theo dõi với BrowserInsight.
Dấu vân tay trình duyệt là gì?
Dấu vân tay trình duyệt (browser fingerprinting) là kỹ thuật nhận diện và theo dõi người dùng bằng cách thu thập nhiều đặc điểm của trình duyệt và thiết bị. Khác với cookie truyền thống, dấu vân tay trình duyệt không cần lưu bất kỳ dữ liệu nào trên thiết bị người dùng, nên các website vẫn có thể nhận ra cùng một người dùng ngay cả sau khi họ đã xóa dữ liệu trình duyệt — xem Visitor ID bền vững: Sống sót qua ẩn danh, VPN, xóa cache để biết vì sao xóa cookie, chuyển sang chế độ ẩn danh, hay đổi VPN đều không đặt lại được một ID được xây dựng theo cách này.
Dấu vân tay trình duyệt hoạt động như thế nào
Khi bạn truy cập một website, trình duyệt của bạn tự động gửi đến máy chủ rất nhiều thông tin, bao gồm:
- User-Agent: Loại trình duyệt, phiên bản và thông tin hệ điều hành
- Độ phân giải màn hình: Kích thước hiển thị và độ sâu màu
- Múi giờ: Cài đặt giờ địa phương của thiết bị
- Phông chữ đã cài: Danh sách phông chữ có sẵn trên hệ thống
- Dấu vân tay Canvas: Những khác biệt tinh tế trong đồ họa được kết xuất qua HTML5 Canvas trên các thiết bị khác nhau
- Dấu vân tay WebGL: Thông tin về card đồ họa và trình điều khiển
- Dấu vân tay âm thanh: Đặc điểm của bộ xử lý âm thanh
- Hình học bố cục: Đo lường vị trí phần tử và văn bản trên trang ở mức dưới-pixel, đọc qua các API bố cục DOM thông thường thay vì canvas — xem Lấy dấu vân tay ClientRects
- Thiết bị đa phương tiện: Số lượng và ID camera, micro đã kết nối đọc qua
enumerateDevices(), và một khi được cấp quyền là cả nhãn model — xem Vân tay thiết bị đa phương tiện để biết điều gì bị lộ trước và sau khi cấp quyền - Giọng đã cài đặt: Danh sách giọng chuyển văn bản thành giọng nói của hệ điều hành và trình duyệt, tiết lộ qua
speechSynthesis.getVoices()mà không cần lời nhắc quyền nào — xem Vân tay tổng hợp giọng nói để biết danh sách này khác nhau ra sao giữa các nền tảng - CSS không cần JavaScript: Các quy tắc
@mediavà@font-facecó thể để lộ tùy chọn của bạn (prefers-color-scheme,pointer) và cả phông chữ đã cài, chỉ qua việc liệu một tài nguyên được stylesheet tham chiếu có được tải về hay không — xem Vân tay CSS: Theo dõi không cần JavaScript để biết vì sao kỹ thuật này lách qua được cả NoScript - Trạng thái quyền:
navigator.permissions.query()cho biết trình duyệt nhận diện tên nào trong khoảng 15 quyền, và mỗi tên phân giải thànhgranted,deniedhayprompt— kiểm tra được mà không cần bất kỳ hộp thoại nào; xem Lấy dấu vân tay Permissions API để biết mô hình hỗ trợ và vector trạng thái kết hợp ra sao - Thông tin mạng: các chỉ số kết nối thô —
effectiveType,downlink,rtt,saveData— đọc quanavigator.connectionmà không cần lời nhắc quyền nào, và chỉ có trên Chromium; xem Lấy dấu vân tay Network Information API để biết các giá trị được gom nhóm này bổ sung entropy ra sao, và còn dùng để kiểm tra động cơ trình duyệt
Các nghiên cứu về dấu vân tay trình duyệt cho thấy khi kết hợp đủ nhiều tín hiệu này, phần lớn các trình duyệt trở nên có thể nhận diện duy nhất. Trên thực tế, dấu vân tay trình duyệt của bạn có thể đặc trưng gần như một dấu vân tay thật ngoài đời.
Mỗi tín hiệu riêng lẻ đều yếu — rất nhiều người có cùng độ phân giải màn hình hay múi giờ với bạn. Việc lấy dấu vân tay hiệu quả là vì các giá trị này phần lớn độc lập với nhau, nên khi kết hợp lại chúng nhân lên tính khác biệt. Theo ngôn ngữ lý thuyết thông tin, mỗi thuộc tính bổ sung thêm vài bit entropy, và một khi entropy kết hợp vượt khoảng 33 bit thì một trình duyệt trở nên độc nhất một cách hiệu quả giữa tất cả mọi người trên Trái Đất — một ngưỡng lần đầu được chứng minh ở quy mô lớn bởi nghiên cứu Panopticlick của EFF (Eckersley, 2010) và được xác nhận bởi các nghiên cứu sau này như Laperdrix et al. Một tổ hợp phổ biến gồm user-agent, danh sách phông chữ, canvas và WebGL thường đã tự nó vượt qua ngưỡng đó.
WebRTC là một rủi ro liên quan nhưng tách biệt — và tồn tại dưới hai hình thức khác nhau. Vấn đề nổi tiếng nhất của nó là một rò rỉ mạng có thể để lộ địa chỉ IP thật của bạn ngay cả khi đang đứng sau VPN. Xem Bảo vệ chống rò rỉ WebRTC để biết cách kiểm tra và khắc phục nó. Ngoài ra, WebRTC còn để lộ một bề mặt lấy dấu vân tay nhỏ riêng biệt thông qua các codec được hỗ trợ và cấu trúc SDP, không liên quan gì đến IP của bạn — xem Lấy dấu vân tay WebRTC để biết tín hiệu này hoạt động ra sao và vì sao khắc phục rò rỉ không loại bỏ được nó.
Các tín hiệu này không có trọng số như nhau trên mọi thiết bị. Phần cứng điện thoại sản xuất hàng loạt làm phẳng entropy của canvas, WebGL và phông chữ so với sự đa dạng khổng lồ của cấu hình PC để bàn — nhưng hình học màn hình, số điểm chạm và cảm biến chuyển động lại bổ sung những tín hiệu mà máy tính để bàn hầu như không có. Xem Lấy dấu vân tay trình duyệt di động để biết thiết bị Android và iOS bị theo dõi cụ thể ra sao.
Múi giờ và ngôn ngữ đáng được nhắc đến riêng vì chúng còn đóng vai trò là tín hiệu khu vực, không chỉ là tín hiệu thiết bị — một dịch vụ muốn biết bạn thực sự kết nối từ quốc gia nào có thể so sánh múi giờ và ngôn ngữ bạn khai báo với vị trí địa lý theo IP, và một VPN chỉ đổi IP sẽ để lộ sự mâu thuẫn đó. Xem Cách các ứng dụng phát hiện khu vực thật của bạn dù dùng VPN để biết cơ chế kiểm tra cụ thể này hoạt động ra sao.
Chi tiết về dấu vân tay Canvas
Dấu vân tay Canvas là một trong những kỹ thuật tạo dấu vân tay trình duyệt mạnh mẽ nhất. Đây là cách nó hoạt động:
- Website vẽ đồ họa và văn bản cụ thể lên một phần tử Canvas ẩn
- Nội dung Canvas được chuyển thành dữ liệu hình ảnh
- Một giá trị băm (hash) được tính từ dữ liệu hình ảnh
- Do những khác biệt tinh tế ở card đồ họa, trình điều khiển và công cụ kết xuất của trình duyệt trên các thiết bị, giá trị băm thu được sẽ khác nhau
Mã ví dụ về dấu vân tay Canvas
// Ví dụ về dấu vân tay Canvas
function getCanvasFingerprint() {
const canvas = document.createElement('canvas');
const ctx = canvas.getContext('2d');
// Vẽ văn bản và đồ họa
ctx.textBaseline = 'top';
ctx.font = '14px Arial';
ctx.fillStyle = '#f60';
ctx.fillRect(0, 0, 100, 20);
ctx.fillStyle = '#069';
ctx.fillText('BrowserInsight', 2, 15);
// Lấy dữ liệu hình ảnh và tính giá trị băm
return canvas.toDataURL();
}
Dấu vân tay WebGL
Dấu vân tay WebGL sử dụng API WebGL (Web Graphics Library) để đọc các chi tiết về phần cứng đồ họa của bạn và cách nó kết xuất nội dung 3D. Vì GPU, trình điều khiển và đường ống kết xuất khác nhau rất lớn giữa các thiết bị, các chi tiết này nằm trong số những tín hiệu có entropy cao nhất mà một trình theo dõi có thể thu thập.
Trên thực tế, một script đọc hai thứ riêng biệt:
1. Các tham số được báo cáo. WebGL phơi bày hàng chục giá trị thông qua getParameter() — và, qua tiện ích mở rộng WEBGL_debug_renderer_info, là chuỗi nhà sản xuất GPU và chuỗi trình kết xuất chưa che giấu:
const gl = document.createElement('canvas').getContext('webgl');
const dbg = gl.getExtension('WEBGL_debug_renderer_info');
gl.getParameter(dbg.UNMASKED_VENDOR_WEBGL); // ví dụ: "Google Inc. (NVIDIA)"
gl.getParameter(dbg.UNMASKED_RENDERER_WEBGL); // ví dụ: "ANGLE (NVIDIA, NVIDIA GeForce RTX 3060 Direct3D11 vs_5_0 ps_5_0, D3D11)"
Chỉ riêng một chuỗi trình kết xuất như vậy đã thu hẹp bạn xuống một dòng GPU cụ thể. Khi kết hợp với kích thước texture tối đa, danh sách các tiện ích mở rộng được hỗ trợ, các khoảng độ chính xác của shader và các giới hạn độ rộng đường nét, tập tham số này thường tự nó đã là duy nhất.
2. Đầu ra được kết xuất. Giống như canvas, một script có thể kết xuất một cảnh 3D ngoài màn hình và băm các điểm ảnh thu được. Những khác biệt nhỏ trong phép toán dấu phẩy động, khử răng cưa và các tối ưu hóa của trình điều khiển khiến giá trị băm đó ổn định cho máy của bạn nhưng lại khác với hầu hết những máy khác — ngay cả khi chuỗi trình kết xuất bị che giấu.
Do đó, dấu vân tay WebGL thường bao gồm:
- Nhà sản xuất và model card đồ họa (chuỗi trình kết xuất chưa che giấu)
- Thông tin trình kết xuất và phiên bản WebGL
- Các tiện ích mở rộng WebGL được hỗ trợ
- Các khoảng độ chính xác và giới hạn số của shader
- Kích thước texture và viewport tối đa
- Một giá trị băm của một cảnh thử nghiệm đã kết xuất
Vì các giá trị này đến từ phần cứng và trình điều khiển chứ không phải các tùy chọn mà bạn có thể bật tắt, WebGL là một trong những tín hiệu khó phòng vệ và dai dẳng nhất. Để tìm hiểu sâu hơn, hãy đọc phân tích chuyên sâu về dấu vân tay WebGL. Chuỗi renderer cũng bị ràng buộc với hệ điều hành của bạn ở cấp độ kiến trúc — chẳng hạn, một token backend Direct3D chỉ có thể đến từ Windows — đó là lý do vì sao một số cặp GPU/hệ điều hành không chỉ hiếm gặp mà còn bất khả thi về mặt vật lý và bị gắn cờ ngay lập tức.
Cách đọc dấu vân tay của chính bạn
Cách tốt nhất để hiểu mức độ phơi bày của bạn là xem chính dấu vân tay của mình. Tính năng kiểm tra dấu vân tay của BrowserInsight chạy hoàn toàn trong trình duyệt của bạn — không có dữ liệu dấu vân tay nào từng được gửi đến máy chủ (việc tra cứu IP được xử lý bởi một công cụ riêng) — và cho bạn thấy:
- Các giá trị băm Canvas và WebGL của bạn, và liệu chúng trông phổ biến hay hiếm gặp
- Chuỗi trình kết xuất WebGL đầy đủ của bạn và GPU mà nó để lộ
- Các đặc điểm dấu vân tay âm thanh được phát hiện
- Toàn bộ tập hợp các header và các thuộc tính được phơi bày qua JavaScript mà một trình theo dõi có thể đọc
- Một điểm ẩn danh ước tính mức độ độc nhất của thiết lập hiện tại của bạn, kèm theo các gợi ý cụ thể
Hãy chạy kiểm tra một lần trên trình duyệt bình thường của bạn, rồi chạy lại với một trình duyệt riêng tư hoặc một tiện ích mở rộng được bật, và so sánh các điểm số. Sự so sánh trước-và-sau đó là cách nhanh nhất để thấy biện pháp phòng vệ nào thực sự tạo ra khác biệt cho thiết bị của bạn — vì câu trả lời khác nhau giữa mỗi máy. Để có một cách so sánh có cấu trúc, từng bước một, hãy xem Tính nhất quán vân tay trình duyệt: Danh sách tự kiểm tra.
Cách bảo vệ dấu vân tay trình duyệt của bạn
Không có một công tắc đơn lẻ nào khiến bạn ẩn danh, và các biện pháp phòng vệ hiện có đi theo hai triết lý đối lập: trông giống hệt mọi người khác (đồng nhất) hoặc trông khác đi mỗi lần (ngẫu nhiên hóa). Hiểu một công cụ dùng cách nào sẽ giúp bạn tránh kết hợp chúng theo những cách phản tác dụng.
1. Dùng trình duyệt chú trọng quyền riêng tư
Tor Browser đi theo hướng đồng nhất: nó chuẩn hóa kích thước màn hình, phông chữ, đầu ra canvas và WebGL sao cho mọi người dùng Tor trông gần như giống hệt nhau, thu nhỏ đám đông mà bạn nổi bật khỏi đó. Brave đi theo hướng ngẫu nhiên hóa — kỹ thuật "farbling" của nó tiêm những nhiễu nhỏ vào các phép đọc canvas, WebGL và âm thanh, với hạt giống (seed) riêng cho từng trang web và từng phiên, nên mỗi trang web thấy một giá trị khác nhau và các giá trị đó thay đổi từ phiên này sang phiên khác. Firefox cung cấp privacy.resistFingerprinting (RFP), vốn vay mượn các kỹ thuật đồng nhất của Tor và luôn được bật mặc định trong chính Tor Browser. Chúng giảm khả năng bị lấy dấu vân tay theo những cách khác nhau, nhưng đều có chung đặc điểm then chốt là thay đổi các tín hiệu kết xuất có entropy cao — vốn chính là nơi quan trọng nhất.
2. Dùng tiện ích mở rộng trình duyệt
Một số tiện ích mở rộng trình duyệt có thể giúp chống lại việc theo dõi bằng dấu vân tay:
- CanvasBlocker: Chặn hoặc làm giả dấu vân tay Canvas
- Privacy Badger: Tự động chặn các trình theo dõi
- uBlock Origin: Chặn quảng cáo và các script theo dõi
Tuy nhiên hãy chọn lọc: các tiện ích mở rộng chạy với quyền truy cập rộng vào mọi trang bạn ghé thăm, và một tiện ích cẩu thả hoặc độc hại tự nó có thể trở thành một kênh theo dõi. Xem Rủi ro quyền riêng tư của tiện ích mở rộng trình duyệt trước khi cài đặt bất cứ thứ gì mới.
3. Tắt JavaScript
Mặc dù điều này ảnh hưởng đáng kể đến chức năng của web, việc tắt JavaScript có thể chặn hiệu quả hầu hết các kỹ thuật tạo dấu vân tay. Bạn có thể dùng các tiện ích như NoScript để bật JavaScript một cách có chọn lọc cho những website đáng tin cậy.
4. Dùng máy ảo hoặc container
Sử dụng các máy ảo hoặc container trình duyệt khác nhau cho từng hoạt động trực tuyến khác nhau có thể tách biệt các dấu vân tay trình duyệt, ngăn các trình theo dõi liên kết các danh tính trực tuyến khác nhau của bạn.
Nghịch lý chống lấy dấu vân tay
Có một điểm đáng hiểu: một biện pháp phòng vệ hiếm gặp hoặc được tùy chỉnh quá mức có thể khiến bạn dễ bị nhận diện hơn, chứ không phải khó hơn. Nếu bạn là khách truy cập duy nhất chạy một tiện ích giả mạo cụ thể với một user-agent bất thường, thì chính tổ hợp đó trở thành một dấu vân tay đặc trưng của riêng nó. Đây là lý do các công cụ đồng nhất như Tor và Firefox RFP cố gắng đặt bạn vào một đám đông lớn, giống hệt nhau thay vì khiến bạn trở nên kỳ lạ — và là lý do việc chồng chất nhiều tinh chỉnh tùy biến thường gây hại nhiều hơn lợi. Theo nguyên tắc chung, hãy ưu tiên cấu hình mặc định đã được dùng phổ biến của một trình duyệt riêng tư hơn là một chồng tiện ích mở rộng tự lắp ráp. Trình duyệt anti-detect — các công cụ thay thế toàn bộ hồ sơ dấu vân tay — đẩy nghịch lý này đến giới hạn: chính mô hình giả mạo trở thành dấu hiệu nhận dạng, như được giải thích trong bài Phát Hiện Trình Duyệt Anti-Detect và Giả Mạo Dấu Vân Tay. Để biết cụ thể những tín hiệu nào — TLS, nhiễu canvas, phông chữ, UA-CH và nhiều hơn nữa — giúp hệ thống phát hiện phân biệt một hồ sơ giả mạo với một thiết bị thật, xem Trình Duyệt Anti-Detect vs Thật: 12 Tín Hiệu Bộ Dò Thấy.
Những ứng dụng hợp pháp của dấu vân tay trình duyệt
Dù dấu vân tay trình duyệt thường được dùng để theo dõi quảng cáo, nó cũng có những ứng dụng hợp pháp:
| Trường hợp sử dụng | Mô tả |
|---|---|
| Bảo mật | Phát hiện đăng nhập tài khoản bất thường và ngăn chặn gian lận |
| Chống bot | Nhận diện và chặn các chương trình tự động |
| Tối ưu UX | Tối ưu hiển thị web dựa trên đặc điểm thiết bị |
| Bảo vệ bản quyền | Truy vết nguồn rò rỉ nội dung |
Trường hợp chống bot là trường hợp phức tạp nhất về mặt kỹ thuật trong số này — xem Các kỹ thuật phát hiện bot để biết cách các trang web tách lưu lượng tự động khỏi khách truy cập thật, thường dùng chính những tín hiệu lấy dấu vân tay đó.
Câu hỏi thường gặp
Dấu vân tay trình duyệt có giống với cookie không?
Không. Cookie là các tệp nhỏ được lưu trên thiết bị của bạn mà bạn có thể xem, chặn hoặc xóa. Dấu vân tay được suy ra từ các đặc điểm của trình duyệt và thiết bị — không có gì được lưu ở phía bạn, nên việc xóa cookie hay chuyển sang một hồ sơ trình duyệt mới cũng không đặt lại nó. Đó chính xác là điều khiến việc lấy dấu vân tay khó thoát khỏi hơn so với theo dõi dựa trên cookie. Một kỹ thuật khác, bounce tracking, né việc chặn cookie theo một cách hoàn toàn khác — bằng cách khiến domain của bên theo dõi tạm thời trở thành first-party trong một lần redirect — mà không hề đụng đến bất kỳ đặc điểm nào của thiết bị bạn. Một cách khác không cần cookie lại ẩn trong chính HTTP cache: xem ETag và siêu cookie cache để biết máy chủ biến việc xác thực lại cache thông thường thành một định danh theo dõi như thế nào.
Chế độ ẩn danh hay riêng tư có ngăn được việc lấy dấu vân tay không?
Hầu như là không. Chế độ riêng tư ngăn trình duyệt lưu lịch sử, cookie và dữ liệu trang cục bộ, nhưng nó không thay đổi các đặc điểm tạo nên một dấu vân tay — kích thước màn hình, phông chữ, kết quả canvas và GPU của bạn trông giống hệt trong một cửa sổ riêng tư. Các trang web thường vẫn có thể nhận ra bạn qua cả phiên bình thường lẫn phiên riêng tư. Thậm chí một số trang web còn có thể biết được bạn đang ở trong một cửa sổ riêng tư hay không — xem Cách website phát hiện chế độ ẩn danh và duyệt web riêng tư để biết các thủ thuật dựa trên API lưu trữ đứng sau điều đó.
Phần nào của dấu vân tay trình duyệt mang tính nhận diện nhất?
Điều này thay đổi tùy trường hợp, nhưng các tín hiệu kết xuất — canvas và WebGL — thường là khó thay đổi nhất, vì chúng đến từ GPU và driver của bạn chứ không phải một cài đặt mà bạn có thể bật tắt. Điều đó khiến chúng trở thành mục tiêu giá trị nhất cho các biện pháp phòng vệ: chặn hoặc ngẫu nhiên hóa đầu ra canvas và WebGL loại bỏ nhiều tính độc nhất hơn so với việc chỉnh sửa user-agent hay múi giờ. BrowserInsight cho thấy những tín hiệu nào đóng góp nhiều nhất cho chính trình duyệt của bạn, nhờ đó bạn biết nên dồn công sức vào đâu cho hiệu quả nhất.
VPN có ngăn được việc lấy dấu vân tay trình duyệt không?
Không. VPN thay đổi địa chỉ IP và vị trí biểu kiến của bạn, nhưng dấu vân tay được tính từ trình duyệt và thiết bị của bạn, chứ không phải mạng — bạn vẫn trông giống hệt từ bất kỳ IP nào. VPN có giúp ích cho các vấn đề tách biệt là theo dõi dựa trên IP và rò rỉ WebRTC, nhưng nó không làm được gì với bản thân dấu vân tay. Một kỹ thuật liên quan nhưng khác biệt đáng biết là TLS fingerprinting — nó nhận diện phần mềm client của bạn từ TLS handshake thay vì từ các API trình duyệt, và cũng vượt qua được VPN tunnel.
Kết luận
Dấu vân tay trình duyệt là một kỹ thuật theo dõi mạnh mẽ và âm thầm, khai thác các đặc điểm vốn có của trình duyệt và thiết bị để nhận diện người dùng. Hiểu cách dấu vân tay trình duyệt hoạt động là bước đầu tiên để bảo vệ quyền riêng tư trực tuyến. Bằng cách dùng các công cụ như BrowserInsight để phát hiện dấu vân tay trình duyệt của mình và áp dụng các biện pháp bảo vệ phù hợp, bạn có thể kiểm soát tốt hơn danh tính số của mình.
Hãy nhớ rằng việc đạt được ẩn danh hoàn toàn trên internet là rất khó, nhưng chúng ta có thể tối đa hóa việc bảo vệ quyền riêng tư bằng cách hiểu công nghệ và áp dụng các biện pháp phù hợp.
Đọc thêm:
- resistFingerprinting: Firefox và Tor Chống Lấy Dấu Vân Tay
- Tính nhất quán của vân tay: Tại sao tín hiệu mâu thuẫn bị gắn cờ
- Lấy dấu vân tay trình duyệt di động: Android và iOS bị theo dõi ra sao
- Bảo vệ chống rò rỉ WebRTC: Bài đọc bắt buộc cho người dùng VPN
- Lấy dấu vân tay WebRTC: Codec và SDP tiết lộ trình duyệt của bạn
- Phát hiện dấu vân tay Canvas: Cách website nhận diện thiết bị của bạn
- Lấy dấu vân tay âm thanh: AudioContext nhận diện thiết bị bạn
- Bounce Tracking: Redirect Âm Thầm Theo Dõi Không Cần Cookie
- Lấy dấu vân tay phông chữ: Phông đã cài để lộ bạn ra sao
- Lấy dấu vân tay ClientRects: Bố cục dưới-pixel làm định danh
- Vân tay thiết bị đa phương tiện: enumerateDevices tiết lộ gì
- Vân tay tổng hợp giọng nói: giọng đã cài đặt như một tín hiệu
- Vân tay CSS: Theo dõi không cần JavaScript
- Lấy dấu vân tay Permissions API: Trạng thái quyền định danh bạn
- Lấy dấu vân tay Network Information API: downlink và RTT tiết lộ gì

