Обычная логика такая: не хочу, чтобы меня узнавали — открываю приватное окно, и всё, я новый посетитель. Логика была верной примерно до середины десятых годов.

Сейчас узнавание держится не на cookie, а на наборе свойств самого браузера. Их не надо никуда сохранять — они просто есть, и по их сочетанию посетитель определяется с высокой надёжностью. Очистка хранилища на это не влияет никак: удалять там нечего.

Что именно считывается

Начну с простого. Вот два десятка строк, которые собирают базовые параметры:

const d = {
  ua: navigator.userAgent,
  lang: navigator.language,
  platform: navigator.platform,
  cores: navigator.hardwareConcurrency,
  mem: navigator.deviceMemory,
  screen: [screen.width, screen.height, screen.colorDepth].join('x'),
  tz: Intl.DateTimeFormat().resolvedOptions().timeZone,
  tzoff: new Date().getTimezoneOffset(),
};

Запускаю это в браузере на своей машине:

{"ua":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, l...",
 "lang":"ru-RU","platform":"Linux x86_64","cores":4,"mem":16,
 "screen":"1536x960x24","tz":"Europe/Moscow","tzoff":240}

Ни одно из этих значений само по себе не уникально: четырёхъядерных машин миллионы. Работает сочетание. Число ядер отсекает часть посетителей, разрешение экрана — ещё часть, часовой пояс — ещё, язык — ещё. Пересечение нескольких таких множеств оказывается на удивление маленьким.

Дальше начинается интересное

Перечисленное выше — только вершина. Настоящую точность дают вещи, которые вообще не выглядят как идентификатор.

Отрисовка на canvas. Странице предлагается нарисовать невидимую картинку с текстом и забрать её пиксели. Результат зависит от видеокарты, драйвера, версии системы, набора шрифтов, настроек сглаживания. Картинка задана одна и та же, а пиксели на разных машинах получаются разные.

const c = document.createElement('canvas');
const x = c.getContext('2d');
x.textBaseline = 'top';
x.font = '16px Arial';
x.fillStyle = '#f60';  x.fillRect(0, 0, 120, 30);
x.fillStyle = '#069';  x.fillText('Проверка отпечатка 123', 4, 20);
const hash = fnv1a(c.toDataURL());   // короткая свёртка от картинки

Ключевое свойство — стабильность. Запускаю дважды подряд:

"canvas":"e0a1ec2d"
"canvas":"e0a1ec2d"

Один и тот же результат. Между приватным окном и обычным результат тоже совпадает: рисует одно и то же железо теми же шрифтами. Cookie здесь ни при чём, стирать нечего.

Набор шрифтов. Проверяется без всяких разрешений: браузеру подсовывают текст в конкретном шрифте и смотрят ширину получившейся строки. Если шрифта нет, ширина совпадёт с запасным вариантом, если есть — отличается.

"fonts":["Arial","Times New Roman","DejaVu Sans"]

Набор шрифтов рассказывает о системе и об установленных программах: офисный пакет, инструменты разработки, графические редакторы приносят свои шрифты.

Видеокарта. Через WebGL страница спрашивает название модели. У меня в тестовой среде отрисовки нет, поэтому там пусто, а на обычной машине вернётся конкретная модель, и это сразу сильно сужает круг.

Плюс: поддерживаемые аудиокодеки, поведение звукового движка, набор доступных устройств ввода, точность таймеров, список расширений браузера — часть из них определяется по побочным признакам.

Почему защиты иногда делают хуже

Вот здесь начинается то, о чём почти не говорят.

Отпечаток тем полезнее для трекинга, чем реже встречается сочетание значений. А значит, попытка выделиться работает против вас.

Редкое разрешение экрана, экзотический язык интерфейса, нестандартный часовой пояс, десяток расширений, ручная подмена строки браузера на что-нибудь необычное — каждый такой шаг делает вас более заметным, а не менее. Человек с пятью установленными расширениями приватности и подменённым идентификатором опознаётся точнее, чем человек со стандартным браузером из коробки.

Отсюда два рабочих подхода, и они противоположны друг другу.

Первый — слиться с толпой. Стандартный браузер, стандартные настройки, ничего не трогать. Именно так устроен подход браузера Tor: у всех пользователей одинаковые размеры окна, одинаковый набор шрифтов, одинаковые ответы на все опросы. Смысл не в том, чтобы скрыть параметры, а в том, чтобы они у всех совпадали.

Второй — намеренно врать, но каждый раз по-разному. Некоторые браузеры добавляют в отрисовку canvas и в звуковой отпечаток небольшой случайный шум, свой для каждого сайта и каждой сессии. Тогда отпечаток есть, но он не повторяется, и связать два визита не выходит.

Смешивать эти подходы бессмысленно: полумеры дают худший результат из обоих.

Что делать обычному человеку

Без фанатизма и по убыванию пользы.

Блокировщик содержимого с фильтрацией трекеров закрывает большую часть скриптов сбора ещё до того, как они отработают. Это единственная мера, которая одновременно ускоряет загрузку страниц.

Отдельные браузеры или профили под задачи: один для работы, другой для личного, третий для покупок. Отпечаток внутри профиля не меняется, но связать активность между профилями сложнее, особенно если они ещё и в разных сетях.

Встроенная защита от фингерпринтинга. У Firefox это Настройки → Приватность и защита → Строгая защита; у Brave и Safari похожие механизмы включены по умолчанию. Работают они по второму сценарию, с шумом.

И трезвый взгляд на результат. Полностью анонимным в обычном браузере не стать: слишком много каналов. Реалистичная цель — не «стать невидимым», а «перестать быть удобной мишенью для массового трекинга». Это достижимо и стоит одного вечера настройки.

Проверить себя

Есть публичные страницы, которые собирают отпечаток и показывают, насколько он редкий. Полезнее всего смотреть не на итоговый вердикт, а на разбор по параметрам: там видно, какие именно ваши свойства встречаются реже всего.

Заодно любопытный эксперимент: откройте такую проверку в обычном окне и в приватном. Значения совпадут почти полностью — и это лучшая иллюстрация к тому, что режим инкогнито защищает историю на вашем компьютере, а не вас на чужом сайте.

Комментарии (3)


  1. levge
    27.08.2026 14:49

    Я запускаю через скрипт -

    #!/bin/bash

    Launch Opera in private mode with a new user data directory each time

    This ensures no cookies, logins, or history are saved between sessions

    Generate a unique temporary directory for this instance

    TEMP_DIR=“/tmp/opera-private-(date +%s)-$”

    Create the temporary directory and Default subdirectory

    mkdir -p “$TEMP_DIR/Default”

    Launch Opera with all parameters

    –private: Opens in private/incognito mode

    –user-data-dir: Uses a temporary directory for this session

    –no-first-run: Skips first-run dialogs

    –no-default-browser-check: Skips default browser prompt

    opera --private
    –user-data-dir=“$TEMP_DIR”
    –no-first-run
    –no-default-browser-check
    –disable-session-crashed-bubble
    –disable-infobars
    –show-bookmarks-bar &

    OPERA_PID=$!
    wait $OPERA_PID
    rm -rf "$TEMP_DIR"


    1. zelenin
      27.08.2026 14:49

      вам бы статью почитать


  1. Emelian
    27.08.2026 14:49

    Обычная логика такая: не хочу, чтобы меня узнавали – открываю приватное окно, и всё, я новый посетитель. Логика была верной примерно до середины десятых годов.

    Сейчас узнавание держится не на cookie, а на наборе свойств самого браузера.

    Ну, почему логика больше не работает? Вполне себе работает, в некоторых важных случаях. Да, не всегда, но тогда используем более сильное слово, тоже на три буквы, как на заборе.

    Например, есть неплохой ИИ-сайтик, который бесплатно распознаёт 15 минут звука (STT), даже слова в песнях, на фоне музыки. А у нас, как назло, аудио из часового французского мультика (например, «Santiago des mers - 1 heure des aventures les plus intrepides de Santiago et Lorelai»). Постоянно «ходить на три буквы» – утомляет.

    Выход, не вообще, а для конкретного сервиса, вполне прост. Берем, например, «Хром» (использую старую версию, ради 2-го манифеста), настраиваем очистку всех «куки» на выходе и скармливаем нашему сервису 15-минутный фрагмент из полного аудио. Получаем текст речи и выходим из браузера. Заходим заново и повторяем процесс.

    Удивительно, но этот «финт ушами» работает на многих нужных сайтах, что сильно упрощает жизнь.