DNT từng cho phép trình duyệt yêu cầu web đừng theo dõi, nhưng gần như thất bại. Xem cách hoạt động, vì sao thất bại và GPC đã thay thế thế nào.
Trong vài năm, hầu hết trình duyệt đều có một tùy chọn trông có vẻ đơn giản: yêu cầu các trang web đừng theo dõi bạn, và họ sẽ tuân theo. Đó là Do Not Track (DNT) — một header HTTP duy nhất cùng thuộc tính JavaScript tương ứng, navigator.doNotTrack. Nó chưa bao giờ có cơ chế kỹ thuật nào đứng sau để bắt buộc thực thi; nó chỉ hoạt động nếu trang web nhận tín hiệu tự nguyện tôn trọng. Gần như không trang nào làm vậy, và đến giữa những năm 2020, mọi trình duyệt lớn đều đã gỡ bỏ tùy chọn này. Người kế nhiệm của nó, Global Privacy Control (GPC), được xây dựng trên cùng tín hiệu một bit đó nhưng được luật pháp thực sự hậu thuẫn tại ngày càng nhiều khu vực pháp lý.
Tóm tắt nhanh
- DNT là một header HTTP tự nguyện (
DNT: 1) cộng với thuộc tính JavaScriptnavigator.doNotTrack— một yêu cầu, không phải cơ chế bắt buộc thực thi. - Đặc tả W3C Tracking Preference Expression hình thức hóa DNT đã bị bỏ dở vào năm 2019 mà chưa từng đạt chuẩn hóa hoàn chỉnh.
- Các trang web không có nghĩa vụ pháp lý phải tôn trọng DNT, mức độ áp dụng trong ngành ad-tech và các nhà xuất bản luôn ở mức không đáng kể, và Apple, Google, Mozilla đều đã gỡ bỏ hoặc ngừng hỗ trợ tùy chọn này trên trình duyệt.
- Bật DNT khiến bạn dễ bị nhận diện hơn, chứ không phải khó hơn: nó thêm một bit entropy vào dấu vân tay của bạn chính vì rất ít người dùng bật nó.
- Global Privacy Control (GPC) tái sử dụng cùng ý tưởng header/tín hiệu nhưng được công nhận là yêu cầu từ chối hợp lệ theo các luật như CCPA/CPRA ở California, mang lại cho nó hiệu lực mà DNT chưa bao giờ có.
Header DNT thực chất là gì
Do Not Track hoạt động ở hai tầng phản chiếu nhau. Ở tầng truyền tải, một trình duyệt đã bật tùy chọn này sẽ gửi một header trên mỗi yêu cầu HTTP:
DNT: 1
Giá trị 0 báo hiệu rõ ràng "bạn có thể theo dõi tôi", còn việc bỏ hoàn toàn header này nghĩa là "không thể hiện ý muốn". Ở phía client, cùng trạng thái đó cũng được lộ ra cho JavaScript để trang có thể đọc mà không cần kiểm tra header:
console.log(navigator.doNotTrack); // "1", "0", hoặc null tùy trình duyệt/thiết lập
Đó là toàn bộ cơ chế. Không có bằng chứng mã hóa, không có kiểm tra phía máy chủ, và không có hậu quả nào cho một trang web đọc được DNT: 1 rồi phớt lờ nó. Theo thiết kế, DNT chỉ là một yêu cầu lịch sự được đặt chồng lên một header HTTP bình thường — thành công của nó phụ thuộc hoàn toàn vào sự tuân thủ tự nguyện từ các trang web nhận được nó.
navigator.doNotTrack so với header, và lịch sử ngắn gọn
Header và thuộc tính JavaScript vốn được thiết kế để đồng bộ, nhưng các trình duyệt chưa bao giờ thống nhất về giá trị trả về và trạng thái mặc định, khiến việc feature-detect DNT trở thành nỗi phiền toái quen thuộc với lập trình viên. Firefox từng trả về "yes"/"no"/"unspecified" trong một thời gian trước khi tiến gần hơn tới quy ước "1"/"0"/null mà các trình duyệt khác sử dụng.
Dòng thời gian, khái quát:
- 2009 — Các nhà nghiên cứu và người ủng hộ quyền riêng tư đề xuất một header HTTP "Do Not Track", mô phỏng lỏng lẻo theo danh sách "Do Not Call" của FTC.
- 2011 — Firefox là trình duyệt đầu tiên tích hợp công tắc DNT; Internet Explorer, Safari và Chrome theo sau trong vài năm tiếp theo.
- 2011–2019 — Nhóm làm việc Tracking Protection của W3C cố gắng chuẩn hóa ngữ nghĩa và đặc tả tuân thủ, nhưng các thành viên từ ngành quảng cáo và những người ủng hộ quyền riêng tư chưa bao giờ thống nhất được "tuân thủ" nghĩa là gì.
- 2019 — W3C chính thức đóng nhóm làm việc; đặc tả Tracking Preference Expression chưa bao giờ tiến xa hơn giai đoạn Candidate Recommendation.
- Những năm 2020 — Apple gỡ bỏ tùy chọn DNT trên Safari năm 2019 (gọi đó là rủi ro về fingerprinting), và các trình duyệt khác cũng làm theo hoặc âm thầm ngừng hiển thị nó trong giao diện thiết lập, dù
navigator.doNotTrackphần lớn vẫn tồn tại vì lý do tương thích.
Vì sao các trang web phớt lờ nó
DNT yêu cầu các trang web thay đổi hành vi cốt lõi cho hoạt động kinh doanh — ngừng theo dõi, ngừng xây dựng hồ sơ quảng cáo — mà không có gì thực thi yêu cầu đó ngoài thiện chí. Một số ít nhà xuất bản và nhà cung cấp phân tích thực sự tôn trọng nó, nhưng ngành ad-tech nói chung thì không, và không luật nào yêu cầu họ phải làm vậy. Việc chuẩn hóa cũng đình trệ vì cùng lý do: nhóm làm việc cần thống nhất "theo dõi" thực sự có nghĩa là gì và một phản hồi tuân thủ trông như thế nào, trong khi các nhà quảng cáo có đầy đủ động cơ thương mại để chống lại một định nghĩa chặt chẽ. Một cơ chế từ chối tự nguyện không có hình phạt nào cho việc phớt lờ, nhắm vào một ngành có mô hình doanh thu phụ thuộc vào việc theo dõi, không bao giờ có thể đạt được mức độ áp dụng có ý nghĩa. Sự lệch pha đó giữa khái niệm kỹ thuật, mức hỗ trợ thực tế của trình duyệt và tính cưỡng chế pháp lý mới là lý do thực sự khiến DNT chết đi — không phải vì thiếu tính năng nào trong bản thân header.
Nghịch lý về fingerprinting
Đây là điểm xoay khiến DNT liên quan đến chủ đề fingerprinting: bật nó lên có thể khiến bạn dễ bị nhận diện riêng biệt hơn. Bất kỳ tín hiệu nào mà đa số người dùng để ở giá trị mặc định sẽ tạo thêm entropy khi một nhóm nhỏ hơn lệch khỏi giá trị mặc định đó. Vì quá ít người dùng từng bật DNT, DNT: 1 (hay navigator.doNotTrack === "1") trở thành một giá trị hiếm, mang tính phân biệt thay vì một giá trị ẩn danh hóa — nó chỉ là thêm một thuộc tính mà một script fingerprinting có thể gộp vào một định danh kết hợp, cùng với User-Agent Client Hints, đầu ra canvas, và các font đã cài đặt của bạn. Một thiết lập quyền riêng tư mà chỉ một nhóm thiểu số tự chọn nhỏ bật lên lại đi ngược mục tiêu của chính nó: tín hiệu càng hiếm thì càng thu hẹp phạm vi bạn là ai. Đây chính là nguyên lý entropy được đề cập trong hướng dẫn đầy đủ về browser fingerprinting của chúng tôi — tính duy nhất, chứ không phải nội dung của bất kỳ bit đơn lẻ nào, mới là điều làm cho một dấu vân tay có hiệu quả.
Global Privacy Control (GPC): người kế nhiệm được luật pháp hậu thuẫn của DNT
GPC giữ nguyên hình dạng của DNT — trình duyệt gửi một tín hiệu nhẹ (một header HTTP, Sec-GPC: 1, cộng thuộc tính JavaScript tương ứng navigator.globalPrivacyControl) — nhưng thay đổi thứ đứng sau nó. Đặc tả GPC, được phát triển dưới Privacy Community Group của W3C, được thiết kế ngay từ đầu để ánh xạ vào các quyền từ chối "Không Bán hoặc Chia sẻ Thông tin Cá nhân của Tôi" đã tồn tại theo các luật như CCPA/CPRA của California. Tại các khu vực pháp lý nơi những luật đó áp dụng, một trang web nhận được Sec-GPC: 1 có nghĩa vụ pháp lý phải coi đó là yêu cầu từ chối hợp lệ — cùng tín hiệu một bit mà DNT từng gửi, nhưng giờ có hậu quả pháp lý đi kèm nếu phớt lờ.
Sự hậu thuẫn pháp lý đó là toàn bộ sự khác biệt. GPC không cần công nghệ phát hiện theo dõi mới hay một giao thức thông minh hơn; nó chỉ cần một khu vực pháp lý sẵn sàng tuyên bố rằng tín hiệu trình duyệt được tính là một yêu cầu của người tiêu dùng có thể cưỡng chế thực thi. Một số trình duyệt và tiện ích mở rộng về quyền riêng tư — bao gồm Brave, DuckDuckGo, và Privacy Badger của EFF — bật GPC theo mặc định hoặc cung cấp công tắc bật chỉ với một cú nhấp, và đây tự nó là một bài học từ thất bại của DNT: một tín hiệu mặc định tắt mà gần như không ai bật lên mang lại rất ít trọng lượng thực tế, dù có được luật pháp hậu thuẫn hay không.
Cách kiểm tra xem trình duyệt của bạn có bật GPC không
console.log(navigator.globalPrivacyControl); // true nếu GPC được bật và đang gửi đi
Nếu trả về true, trình duyệt của bạn đang gửi Sec-GPC: 1 trên các yêu cầu gửi đi. Không phải trình duyệt nào cũng đã hỗ trợ thuộc tính hay header này, vì vậy undefined không nhất thiết có nghĩa là bạn đang bị theo dõi — nó cũng có thể chỉ có nghĩa trình duyệt chưa triển khai GPC.
Câu hỏi thường gặp
Trình duyệt còn hỗ trợ Do Not Track không?
Thuộc tính navigator.doNotTrack vẫn tồn tại trong hầu hết trình duyệt để tương thích ngược, nhưng thiết lập hướng tới người dùng đã bị gỡ bỏ hoặc ẩn đi trong Safari, còn Chrome và Firefox không còn quảng bá nó như một công cụ kiểm soát quyền riêng tư có ý nghĩa. Ngay cả khi nó vẫn tồn tại về mặt kỹ thuật, hãy cứ dự đoán rằng đại đa số trang web sẽ phớt lờ nó.
GPC có thực sự hiệu quả hơn DNT không?
Về mặt pháp lý thì có, tại các khu vực pháp lý công nhận nó — GPC được tính là yêu cầu từ chối hợp lệ theo các luật như CCPA/CPRA của California, nghĩa là các doanh nghiệp thuộc phạm vi điều chỉnh phải đối mặt với nghĩa vụ tuân thủ thực sự nếu phớt lờ nó. Về mặt kỹ thuật, nó là cùng loại tín hiệu nhẹ như DNT từng là; khác biệt hoàn toàn nằm ở thứ hậu thuẫn việc thực thi, không phải ở bản thân giao thức.
Tôi có nên bật DNT hay GPC để giảm dấu vân tay trình duyệt không?
Bật GPC ở nơi trình duyệt hỗ trợ là điều đáng làm vì hiệu ứng từ chối mang tính pháp lý của nó tại các khu vực pháp lý được điều chỉnh, nhưng cả DNT lẫn GPC đều không làm giảm dấu vân tay của bạn — cả hai chỉ thêm một bit phân biệt nữa mà bất kỳ script nào kiểm tra chúng đều đọc được. Nếu mục tiêu của bạn là giảm thiểu bề mặt dấu vân tay một cách cụ thể, việc xử lý các tín hiệu canvas, WebGL, font, và âm thanh quan trọng hơn nhiều; xem hướng dẫn về browser fingerprinting của chúng tôi để có bức tranh đầy đủ.
Vì sao Apple gỡ bỏ công tắc DNT khỏi Safari?
Apple tuyên bố vào năm 2019 rằng vì quá ít người dùng thay đổi thiết lập này so với giá trị mặc định, DNT đã trở thành một cách để nhận diện và theo dõi người dùng — trái ngược hoàn toàn với mục đích ban đầu của nó — và do đó đã gỡ bỏ giao diện công tắc khỏi Safari.
Kiểm tra xem trình duyệt của bạn gửi gì
Bạn có thể kiểm tra tín hiệu DNT và GPC của chính mình ngay trong console trình duyệt bằng navigator.doNotTrack và navigator.globalPrivacyControl. Công cụ kiểm tra dấu vân tay của BrowserInsight hiển thị các giá trị này cùng với phần còn lại của dấu vân tay, còn bài so sánh công cụ quyền riêng tư của chúng tôi đề cập đến VPN, proxy và Tor — những giải pháp xử lý việc theo dõi ở tầng IP mà một tín hiệu dựa trên header như DNT hay GPC chưa bao giờ chạm tới ngay từ đầu.

