DNT позволял браузерам просить сайты не отслеживать вас, но провалился. Как работал заголовок, почему он умер и чем его заменил GPC.
Несколько лет большинство браузеров предлагали простой на вид флажок: попросить сайты не отслеживать вас — и они послушаются. Это был Do Not Track (DNT) — единственный HTTP-заголовок и соответствующее свойство JavaScript, navigator.doNotTrack. За ним никогда не стояло технического механизма принуждения: он работал, только если принимающий сайт сам решал его уважать. Почти никто этого не делал, и к середине 2020-х все крупные браузеры убрали эту настройку. Его преемник, Global Privacy Control (GPC), построен на том же однобитном сигнале, но опирается на реальное законодательство во всё большем числе юрисдикций.
Ключевые выводы
- DNT был добровольным HTTP-заголовком (
DNT: 1) плюс свойством JavaScriptnavigator.doNotTrack— запросом, а не механизмом принуждения. - Спецификация W3C Tracking Preference Expression, формализовавшая DNT, была заброшена в 2019 году, так и не дойдя до полной стандартизации.
- У сайтов не было юридической обязанности уважать DNT, его принятие в рекламных технологиях и издательствах оставалось ничтожным, а Apple, Google и Mozilla с тех пор убрали или отказались от этой настройки в браузерах.
- Включение DNT делало вас более узнаваемым, а не менее: оно добавляло ещё один бит энтропии к вашему отпечатку именно потому, что так мало пользователей его включали.
- Global Privacy Control (GPC) переиспользует ту же идею заголовка/сигнала, но признаётся действительным запросом на отказ по таким законам, как CCPA/CPRA в Калифорнии, что даёт ему реальную силу, которой у DNT никогда не было.
Что представляет собой заголовок DNT
Do Not Track работает на двух уровнях, которые зеркально отражают друг друга. На уровне передачи браузер с включённой настройкой отправляет заголовок при каждом HTTP-запросе:
DNT: 1
Значение 0 явно означает «вы можете меня отслеживать», а полное отсутствие заголовка — «предпочтение не выражено». На стороне клиента то же самое состояние доступно JavaScript, так что страница может прочитать его, не проверяя заголовки:
console.log(navigator.doNotTrack); // "1", "0" или null в зависимости от браузера/настройки
Это весь механизм целиком. Никакого криптографического доказательства, никакой серверной проверки и никаких последствий для сайта, который читает DNT: 1 и игнорирует его. DNT по замыслу был вежливой просьбой, наложенной поверх обычного HTTP-заголовка — его успех полностью зависел от добровольного соблюдения принимающими сайтами.
navigator.doNotTrack против заголовка, и краткая история
Заголовок и свойство JavaScript должны были оставаться синхронизированными, но браузеры так и не сошлись на одинаковых возвращаемых значениях и состояниях по умолчанию, что делало feature-detection для DNT неизменно раздражающим занятием для разработчиков. Firefox какое-то время возвращал "yes"/"no"/"unspecified", прежде чем приблизиться к соглашению "1"/"0"/null, которое использовали другие браузеры.
Хронология, в общих чертах:
- 2009 год — исследователи и защитники приватности предложили HTTP-заголовок «Do Not Track», отдалённо смоделированный по образцу реестра «Do Not Call» Федеральной торговой комиссии США.
- 2011 год — Firefox первым внедрил встроенный переключатель DNT; Internet Explorer, Safari и Chrome последовали в течение нескольких лет.
- 2011–2019 годы — рабочая группа W3C Tracking Protection пыталась стандартизировать семантику и спецификацию соответствия, но участники из рекламной индустрии и защитники приватности так и не сошлись на том, что означает «соответствие».
- 2019 год — W3C официально закрыл рабочую группу; спецификация Tracking Preference Expression так и не продвинулась дальше статуса Candidate Recommendation.
- 2020-е годы — Apple убрала настройку DNT в Safari в 2019 году (назвав её риском для отпечатка), а другие браузеры последовали её примеру или тихо перестали показывать её в интерфейсе настроек, хотя
navigator.doNotTrackв основном всё ещё существует ради совместимости.
Почему сайты его игнорировали
DNT просил сайты изменить критически важное для бизнеса поведение — прекратить отслеживание, прекратить строить рекламные профили — без ничего, что подкрепляло бы этот запрос, кроме доброй воли. Горстка издателей и аналитических сервисов действительно его уважала, но рекламно-технологическая индустрия в целом — нет, и никакой закон этого не требовал. Стандартизация застопорилась по той же причине: рабочей группе нужно было согласовать, что вообще означает «отслеживание» и как выглядит соответствующий ответ, а у рекламодателей были все коммерческие стимулы сопротивляться строгому определению. Добровольный отказ без штрафа за игнорирование, нацеленный на индустрию, чья модель дохода зависит от отслеживания, никогда не мог достичь значимого распространения. Именно это несоответствие между технической концепцией, реальной поддержкой в браузерах и юридическим принуждением стало настоящей причиной смерти DNT — а не отсутствующая функция в самом заголовке.
Ирония с отпечатком браузера
Вот поворот, который вообще делает DNT актуальным для темы снятия отпечатка: его включение могло, наоборот, облегчить ваше выделение из общей массы. Любой сигнал, который большинство пользователей оставляют в значении по умолчанию, добавляет энтропию, когда меньшая группа от этого значения отклоняется. Поскольку так мало пользователей когда-либо включали DNT, DNT: 1 (или navigator.doNotTrack === "1") стал редким, отличительным значением, а не анонимизирующим — это просто ещё один атрибут, который скрипт снятия отпечатка может включить в комбинированный идентификатор, наряду с вашими User-Agent Client Hints, выводом canvas и установленными шрифтами. Настройка приватности, которую включает лишь небольшая группа сознательно выбравших её пользователей, работает против собственной цели: чем реже сигнал, тем сильнее он сужает круг того, кто вы есть. Это тот же принцип энтропии, который описан в нашем полном руководстве по отпечатку браузера — именно уникальность, а не содержание какого-то отдельного бита, делает отпечаток эффективным.
Global Privacy Control (GPC): юридически подкреплённый преемник DNT
GPC сохраняет ту же форму, что и DNT — браузер отправляет лёгкий сигнал (HTTP-заголовок Sec-GPC: 1 плюс соответствующее свойство JavaScript navigator.globalPrivacyControl), — но меняет то, что стоит за ним. Спецификация GPC, разработанная под эгидой W3C Privacy Community Group, изначально проектировалась так, чтобы соответствовать уже существующим правам на отказ «Не продавать/не передавать мою личную информацию», созданным такими законами, как CCPA/CPRA в Калифорнии. В юрисдикциях, где эти законы действуют, сайт, получивший Sec-GPC: 1, юридически обязан считать это действительным запросом на отказ — тот же однобитный сигнал, что посылал DNT, но теперь с регуляторными последствиями за его игнорирование.
Эта юридическая опора и есть вся разница. GPC не потребовал новой технологии обнаружения отслеживания или более умного протокола; ему потребовалась лишь юрисдикция, готовая заявить, что сигнал браузера засчитывается как исполнимый запрос потребителя. Несколько браузеров и расширений для защиты приватности — включая Brave, DuckDuckGo и Privacy Badger от EFF — включают GPC по умолчанию или предлагают переключатель в один клик, и это само по себе урок из провала DNT: сигнал, выключенный по умолчанию, который почти никто не включает, несёт мало практического веса — с юридической опорой или без неё.
Как проверить, включён ли GPC в вашем браузере
console.log(navigator.globalPrivacyControl); // true, если GPC включён и отправляется
Если возвращается true, ваш браузер отправляет Sec-GPC: 1 в исходящих запросах. Не все браузеры пока поддерживают это свойство или заголовок, поэтому undefined не обязательно означает, что отслеживание происходит — это может просто означать, что браузер ещё не реализовал GPC.
Часто задаваемые вопросы
Браузеры всё ещё поддерживают Do Not Track?
Свойство navigator.doNotTrack всё ещё существует в большинстве браузеров ради обратной совместимости, но пользовательская настройка была убрана или скрыта в Safari, а Chrome и Firefox больше не продвигают её как значимый инструмент приватности. Даже там, где она технически присутствует, ожидайте, что подавляющее большинство сайтов её проигнорирует.
GPC действительно работает лучше, чем DNT?
С юридической точки зрения — да, в юрисдикциях, которые его признают: GPC засчитывается как действительный запрос на отказ по таким законам, как CCPA/CPRA в Калифорнии, а значит, у охватываемых бизнесов возникают реальные обязательства по соответствию, если они его игнорируют. С технической точки зрения это тот же вид лёгкого сигнала, каким был DNT; разница целиком в том, что стоит за принуждением, а не в самом протоколе.
Стоит ли мне включать DNT или GPC, чтобы уменьшить отпечаток браузера?
Включение GPC там, где браузер это поддерживает, стоит того ради его юридического эффекта отказа в охватываемых юрисдикциях, но ни DNT, ни GPC не уменьшают ваш отпечаток — оба лишь добавляют ещё один отличительный бит, который читает любой скрипт, проверяющий их наличие. Если ваша цель — именно минимизировать площадь отпечатка, гораздо важнее заняться сигналами canvas, WebGL, шрифтов и аудио; полную картину смотрите в нашем руководстве по отпечатку браузера.
Почему Apple убрала переключатель DNT из Safari?
Apple заявила в 2019 году, что поскольку так мало пользователей меняли эту настройку по сравнению со значением по умолчанию, DNT превратился в способ идентифицировать и отслеживать пользователей — прямо противоположное его замыслу, — и в результате убрала переключатель интерфейса из Safari.
Проверьте, что отправляет ваш браузер
Вы можете проверить собственные сигналы DNT и GPC прямо в консоли браузера с помощью navigator.doNotTrack и navigator.globalPrivacyControl. Проверка отпечатка браузера от BrowserInsight показывает эти значения наряду с остальным отпечатком, а наше сравнение инструментов приватности описывает VPN, прокси и Tor — варианты, решающие проблему отслеживания на уровне IP, которой сигнал на основе заголовка вроде DNT или GPC никогда не касался.

