Cách theo dõi dấu chân số hoạt động ở tầng sâu
Từ bắt tay TLS đến kết xuất canvas — cách chúng tôi tái dựng dấu chân số của một thiết bị bằng hơn 130 tín hiệu thụ động mà không cần cookie hay bộ nhớ.
Mỗi thiết bị kết nối internet đều để lại một chuỗi dấu vết kỹ thuật — một dấu chân số. Tại tracio.ai, chúng tôi tái dựng dấu chân này từ hơn 130 tín hiệu thụ động được thu thập trong một lần tải trang, mà không dựa vào cookie, localStorage hay bất kỳ hình thức lưu trữ nào tồn tại lâu dài ở phía client. Bài viết này giải thích chính xác cách quy trình đó hoạt động.
Tầng thu thập tín hiệu
Khi tác nhân JavaScript của chúng tôi được tải trong trình duyệt của khách truy cập, nó bắt đầu thu thập tín hiệu trên nhiều nhóm cùng một lúc. Kết xuất canvas, truy vấn tham số WebGL, xử lý AudioContext, liệt kê phông chữ và đọc thuộc tính navigator đều chạy song song. Toàn bộ quá trình thu thập hoàn tất trong chưa đầy 50 mili giây trên phần cứng hiện đại.
Điểm cốt lõi là mỗi tín hiệu ghi nhận một khía cạnh khác nhau của ngăn xếp phần cứng và phần mềm của thiết bị. Kết xuất canvas phản ánh GPU, driver và bộ máy kết xuất phông chữ. Các tham số WebGL để lộ mẫu card đồ họa và khả năng của nó. AudioContext bộc lộ khác biệt trong cách DSP âm thanh xử lý các phép toán dấu phẩy động. Thuộc tính navigator báo cáo số nhân CPU, bộ nhớ, nền tảng và thiết lập ngôn ngữ.
Đội ngũ của chúng tôi đã đo điều này trên 2 tỷ sự kiện trong tháng qua: thời gian thu thập trung vị là 38ms, và phân vị thứ 99 là 52ms. Chúng tôi thực ra đã thử cách ngây thơ trước tiên — thu thập tín hiệu tuần tự. Nó chậm hơn 40 lần. Thu thập song song với hàng rào timeout là một trong những quyết định kiến trúc đầu tiên mà chúng tôi làm đúng.
Vân tay TLS: Lớp đầu tiên
Trước cả khi JavaScript của chúng tôi được thực thi, trình duyệt đã để lộ nhiều thông tin quan trọng qua quá trình bắt tay TLS. Thông điệp Client Hello chứa các bộ mã hóa mà trình duyệt hỗ trợ, các phần mở rộng TLS mà nó dùng, các đường cong elliptic mà nó ưa thích và các thuật toán chữ ký mà nó chấp nhận. Thông tin này được quyết định bởi thư viện TLS của trình duyệt và thay đổi đáng kể giữa các họ trình duyệt, phiên bản và hệ điều hành.
Chúng tôi ghi nhận vân tay TLS này bằng băm JA4 — một giải pháp thay thế hiện đại cho JA3, mang lại độ chi tiết tốt hơn và độ ổn định xuyên phiên bản. Chỉ riêng băm JA4 đã có thể phân biệt Chrome với Firefox với Safari, và thường thu hẹp việc định danh đến một dải phiên bản trình duyệt cụ thể. Kết hợp với các tín hiệu phía client, nó cung cấp một lớp kiểm chứng chéo cực kỳ khó giả mạo.
Vân tay Canvas và GPU
Vân tay canvas khai thác sự thật rằng các GPU khác nhau kết xuất cùng một bộ chỉ thị vẽ với những khác biệt tinh vi ở cấp pixel. Canvas API cho phép chúng tôi vẽ một cảnh được thiết kế cẩn thận — các chuỗi văn bản cụ thể với nhiều phông chữ, các hình dạng hình học với tọa độ nhất định, và các gradient với các điểm dừng màu chính xác — rồi tính băm của dữ liệu pixel thu được.
Những khác biệt trong kết xuất đến từ biến thể trong các thuật toán khử răng cưa, kết xuất dưới điểm ảnh, pha trộn màu và tinh chỉnh phông chữ giữa các mẫu GPU và phiên bản driver. Ngay cả hai thiết bị cùng mẫu GPU cũng có thể cho ra đầu ra canvas khác nhau nếu chúng chạy phiên bản driver hoặc hệ điều hành khác nhau. Điều này khiến băm canvas trở thành một trong những tín hiệu đặc trưng nhất của chúng tôi.
Lập hồ sơ phần cứng WebGL
WebGL API
để lộ thông tin chi tiết về hệ con đồ họa vượt xa các chuỗi renderer và vendor. Chúng tôi truy vấn kích thước texture tối đa, các định dạng độ chính xác của shader, các phần mở rộng được hỗ trợ, kích thước viewport và hàng chục tham số khác vốn thay đổi giữa các mẫu GPU và cấu hình driver.
Sự kết hợp của các tham số này tạo nên một hồ sơ phần cứng chi tiết. Chẳng hạn, một thiết bị với NVIDIA RTX 4070 sẽ báo cáo kích thước texture tối đa khác, độ chính xác shader khác và hỗ trợ phần mở rộng khác so với một thiết bị với AMD RX 7800 XT. Hồ sơ phần cứng này vốn dĩ ổn định — nó không thay đổi khi trình duyệt cập nhật, mà chỉ khi phần cứng hoặc driver thay đổi.
Vân tay xử lý âm thanh
Web Audio API cung cấp một nguồn tín hiệu phụ thuộc phần cứng khác. Chúng tôi tạo một nút oscillator, kết nối nó với một dynamics compressor, và đo bộ đệm đầu ra. Những khác biệt về độ chính xác dấu phẩy động, cách hiện thực DSP và các thuật toán lấy mẫu lại giữa các phần cứng âm thanh và hệ điều hành tạo ra những biến thể đo được ở đầu ra.
Vân tay âm thanh có tính độc nhất ở mức vừa phải nhưng độ ổn định vượt trội. Đường ống xử lý âm thanh hiếm khi thay đổi trừ khi người dùng đổi phần cứng âm thanh hoặc cài lại hệ điều hành. Điều này khiến các tín hiệu âm thanh trở thành những mỏ neo giá trị trong hệ thống định danh đa tầng của chúng tôi.
Hợp nhất tín hiệu và phân giải danh tính
Các tín hiệu thô được mã hóa và truyền đến máy chủ của chúng tôi, nơi bộ máy định danh thiết bị xử lý chúng qua một hệ thống băm ba tầng. Các tín hiệu cấp phần cứng (canvas, WebGL, audio) tạo thành Tầng 1 — danh tính lõi ổn định. Các tín hiệu cấp trình duyệt (phát hiện tính năng, thuộc tính CSS, khả năng media) tạo thành Tầng 2, được xử lý qua đối sánh xuyên phiên để xử lý độ trôi dự kiến từ việc cập nhật trình duyệt. Các tín hiệu dễ biến động (user agent, múi giờ, ngôn ngữ) tạo thành Tầng 3, đóng góp vào việc chấm điểm độ tin cậy mà không chi phối các quyết định định danh.
Thuật toán hợp nhất cân nhắc mỗi tín hiệu theo tính độc nhất và độ ổn định của nó. Một trùng khớp trên một băm canvas hiếm mang trọng số lớn hơn nhiều so với trùng khớp trên một độ phân giải màn hình phổ biến. Cách tiếp cận có trọng số này đảm bảo việc định danh vẫn chính xác ngay cả khi một tập con các tín hiệu thay đổi.
Không lưu trữ, không cookie
Một nguyên tắc thiết kế then chốt của hệ thống chúng tôi là việc định danh không phụ thuộc vào bất kỳ hình thức lưu trữ nào ở phía client. Chúng tôi không đặt cookie, không ghi vào localStorage, cũng không dùng IndexedDB cho mục đích theo dõi. ID khách truy cập được suy ra hoàn toàn từ các đặc điểm vốn có của thiết bị — phần cứng, ngăn xếp phần mềm, cấu hình mạng. Điều này có nghĩa việc định danh vẫn tồn tại qua việc xóa cookie, chế độ ẩn danh, và thậm chí cả cài lại trình duyệt.
Quyền riêng tư từ kiến trúc
Bởi vì chúng tôi chỉ thu thập các thuộc tính kỹ thuật của trình duyệt — không lịch sử duyệt web, không dữ liệu biểu mẫu, không nội dung cá nhân — tác động đến quyền riêng tư là tối thiểu. Hướng dẫn về Vân tay của W3C nêu ra các thực hành tốt nhất cho việc sử dụng có trách nhiệm các tín hiệu trình duyệt, và kiến trúc của chúng tôi phù hợp với các nguyên tắc này. Với triển khai lưu trữ trên đám mây, mọi xử lý diễn ra trên hạ tầng của bạn. Không dữ liệu khách truy cập nào từng đến máy chủ của chúng tôi. Kiến trúc này khiến việc tuân thủ GDPR, CCPA và các quy định về quyền riêng tư khác trở nên đơn giản.