Идентичность

Почему режим инкогнито не защищает от снятия отпечатков

Режим инкогнито очищает cookies, но оставляет отпечаток браузера без изменений. Узнайте, почему приватный просмотр недостаточен для реальной конфиденциальности.

Документация

Нужна поддерживаемая продуктовая документация?

У этой статьи есть соответствующая страница в центре документации. Используйте docs для каноничного сценария настройки, актуальных флагов и долгосрочной справки.

Введение

Большинство пользователей полагают, что режим инкогнито (или "приватный просмотр") делает их невидимыми в сети. В действительности режим инкогнито лишь предотвращает сохранение локальных данных: история, cookies и данные форм не сохраняются. Отпечаток вашего браузера, включающий рендеринг Canvas, характеристики WebGL, обработку аудио, доступность шрифтов, размеры экрана и десятки других сигналов, остается полностью неизменным. Более того, режим инкогнито изменяет определенное поведение браузера таким образом, что саму сессию инкогнито можно идентифицировать.

BotBrowser использует принципиально иной подход. Вместо работы в режиме приватного просмотра с обнаруживаемыми ограничениями, профили BotBrowser представляют полноценную, обычную среду браузера с контролируемыми сигналами отпечатков. В этой статье объясняется, что на самом деле делает (и не делает) режим инкогнито, почему он может сделать вас более заметным и как BotBrowser обеспечивает реальный контроль идентичности.

Влияние на конфиденциальность

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

Что делает режим инкогнито:

  • Не сохраняет историю просмотров
  • Не сохраняет cookies после закрытия сессии
  • Не сохраняет данные форм
  • Изолирует сессию от обычных данных просмотра

Чего НЕ делает режим инкогнито:

  • Не изменяет отпечаток вашего браузера
  • Не изменяет ваш IP-адрес
  • Не защищает от отслеживания на основе отпечатков
  • Не предотвращает идентификацию вас веб-сайтами во время сессии
  • Не изменяет ваш User-Agent, размер экрана или характеристики оборудования

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

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

Техническая основа

Как режим инкогнито изменяет поведение браузера

Когда браузер переходит в режим инкогнито, несколько внутренних параметров поведения изменяются:

Квота хранилища: В режиме инкогнито браузеры обычно сообщают сниженную квоту хранилища. navigator.storage.estimate() возвращает другие значения по сравнению с обычной сессией. Конкретные значения квоты варьируются в зависимости от версии браузера, но снижение является устойчивым сигналом.

FileSystem API: Исторически API window.requestFileSystem (или window.webkitRequestFileSystem) вел себя по-разному в режиме инкогнито. Хотя современный Chrome устранил некоторые из этих различий, тонкие поведенческие вариации остаются.

Service workers: Режим инкогнито имеет другой жизненный цикл service workers. Service workers, зарегистрированные в инкогнито, не сохраняются. Поведение регистрации и сохранение хранилища отличаются от обычного режима.

IndexedDB и localStorage: Хотя эти API доступны в инкогнито, их лимиты хранения и поведение при ошибках могут отличаться. Некоторые браузеры ограничивают операции IndexedDB в приватном режиме.

Характеристики производительности: Управление памятью и поведение кэша различаются в режиме инкогнито. Эти различия могут влиять на измерения времени и метрики производительности.

Отпечаток остается идентичным

Несмотря на все поведенческие изменения, описанные выше, основные сигналы отпечатка остаются одинаковыми в режиме инкогнито:

  • Рендеринг Canvas: То же оборудование производит тот же хеш Canvas
  • WebGL: Тот же GPU сообщает того же вендора, рендерер и выходные данные рендеринга
  • Обработка аудио: То же аудиооборудование производит тот же отпечаток AudioContext
  • Размеры экрана: Тот же монитор сообщает то же разрешение
  • Свойства Navigator: Количество ядер CPU, объем памяти, платформа и язык не изменяются
  • Шрифты: Установлены те же шрифты
  • Client Hints: Отправляются те же User-Agent и Client Hints

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

"Сигнал инкогнито"

Поведенческие различия, перечисленные выше, создают так называемый "сигнал инкогнито". Система отслеживания, которая обнаруживает сниженную квоту хранилища, другое поведение FileSystem API или другие артефакты инкогнито, знает, что пользователь находится в режиме приватного просмотра.

Этот сигнал имеет два последствия:

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

  2. Сигнализация намерения: Пользователи, включающие режим инкогнито, активно пытаются защитить свою конфиденциальность. Само это намерение является поведенческим сигналом, который системы отслеживания могут учитывать в своих моделях.

Распространенные подходы и их ограничения

Только режим инкогнито

Как описано выше, режим инкогнито не изменяет отпечаток и создает обнаруживаемые артефакты. Он защищает от сохранения локальных данных (полезно для общих компьютеров), но не обеспечивает защиту от отслеживания на основе отпечатков.

Режим инкогнито с расширениями

Добавление расширений конфиденциальности в режим инкогнито (таких как блокировщики Canvas или рандомизаторы отпечатков) вводит дополнительные обнаруживаемые артефакты. Модификация отпечатка на основе расширений видна через проверку цепочки прототипов, аномалии тайминга и отсутствующие или измененные свойства API.

Режим инкогнито с VPN

VPN изменяет ваш IP-адрес, что решает один аспект отслеживания. Но отпечаток, включая артефакты инкогнито, остается неизменным. Комбинация защищает от отслеживания по IP, но не от отслеживания по отпечаткам.

Tor Browser

Tor Browser применяет более агрессивный подход, нормализуя многие сигналы отпечатков для соответствия общей базовой линии. Однако отпечаток Tor Browser сам по себе является отличительным. Конкретная комбинация настроек (letterboxing, отключенный WebGL, NoScript и т.д.) идентифицирует пользователя как пользователя Tor Browser, что представляет малую популяцию.

Подход на основе профилей (BotBrowser)

BotBrowser не использует режим инкогнито. Каждая сессия работает как стандартный экземпляр браузера с полным доступом к API, обычными квотами хранилища и полной поддержкой service workers. Отпечаток контролируется через профиль, а не через ограничения режима.

Подход BotBrowser

Обычный режим браузера с контролируемой идентичностью

Сессии BotBrowser являются обычными (не инкогнито) сессиями браузера. Это намеренное проектное решение:

chrome --bot-profile="/path/to/profile.enc" \
       --user-data-dir="$(mktemp -d)"

Сессия имеет:

  • Обычную квоту хранилища: navigator.storage.estimate() возвращает значения, соответствующие обычной сессии просмотра
  • Полную доступность API: Все API браузера работают как ожидается, включая FileSystem, Service Workers и IndexedDB
  • Стандартное поведение: Артефакты инкогнито отсутствуют
  • Контролируемый отпечаток: Сигналы Canvas, WebGL, аудио, navigator, экрана и шрифтов определяются профилем

Идентичность, определяемая профилем

Профили BotBrowser представляют полноценные, реальные среды браузера, захваченные с реальных устройств. Когда вы загружаете профиль, браузер представляет сигналы, соответствующие этому устройству:

  • Рендеринг Canvas производит ожидаемый хеш профиля
  • WebGL сообщает вендора и рендерер GPU профиля
  • Обработка аудио соответствует аудиохарактеристикам профиля
  • Размеры экрана, глубина цвета и соотношение пикселей соответствуют профилю
  • Свойства Navigator (ядра CPU, память, платформа) соответствуют устройству профиля

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

Изоляция сессий без инкогнито

BotBrowser достигает изоляции сессий через --user-data-dir, а не через режим инкогнито:

# Сессия 1 - изолированная директория данных
chrome --bot-profile="/profiles/profile-a.enc" \
       --user-data-dir="/data/session-1"

# Сессия 2 - отдельная директория данных
chrome --bot-profile="/profiles/profile-b.enc" \
       --user-data-dir="/data/session-2"

Каждая сессия имеет собственные cookies, localStorage, IndexedDB и кэш без поведенческих артефактов режима инкогнито.

Для временных сессий используйте временную директорию:

chrome --bot-profile="/path/to/profile.enc" \
       --user-data-dir="$(mktemp -d)"

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

Настройка и использование

Базовая настройка без инкогнито

chrome --bot-profile="/path/to/profile.enc" \
       --user-data-dir="$(mktemp -d)" \
       --proxy-server=socks5://user:pass@proxy:1080

Интеграция с Playwright

const { chromium } = require('playwright-core');

(async () => {
  const browser = await chromium.launch({
    executablePath: '/path/to/botbrowser/chrome',
    args: [
      '--bot-profile=/path/to/profile.enc',
      '--proxy-server=socks5://user:pass@proxy:1080',
    ],
    headless: true,
  });

  const context = await browser.newContext();
  const page = await context.newPage();
  await page.goto('https://example.com');

  // Проверка обычного (не инкогнито) поведения
  const quota = await page.evaluate(async () => {
    const est = await navigator.storage.estimate();
    return est.quota;
  });
  console.log('Storage quota:', quota);
  // Возвращает обычное значение квоты, а не сниженное значение инкогнито

  await browser.close();
})();

Интеграция с Puppeteer

const puppeteer = require('puppeteer-core');

(async () => {
  const browser = await puppeteer.launch({
    executablePath: '/path/to/botbrowser/chrome',
    args: [
      '--bot-profile=/path/to/profile.enc',
    ],
    headless: true,
    defaultViewport: null,
  });

  const page = await browser.newPage();
  await page.goto('https://example.com');

  // Все API работают нормально
  const swSupport = await page.evaluate(() => 'serviceWorker' in navigator);
  console.log('Service Worker support:', swSupport); // true

  const storageEstimate = await page.evaluate(async () => {
    const est = await navigator.storage.estimate();
    return { quota: est.quota, usage: est.usage };
  });
  console.log('Storage:', storageEstimate);

  await browser.close();
})();

Постоянные сессии

Для сессий, которым необходимо сохранять данные между перезапусками:

# Первый запуск - создает данные сессии
chrome --bot-profile="/path/to/profile.enc" \
       --user-data-dir="/data/persistent-session"

# Второй запуск - сохраняет cookies, localStorage и т.д.
chrome --bot-profile="/path/to/profile.enc" \
       --user-data-dir="/data/persistent-session"

Сочетание с управлением cookies

Флаг --bot-cookies BotBrowser обеспечивает управление cookies без режима инкогнито:

chrome --bot-profile="/path/to/profile.enc" \
       --bot-cookies='[{"name":"session","value":"abc123","domain":".example.com"}]' \
       --user-data-dir="$(mktemp -d)"

Это восстанавливает состояние сессии в чистом экземпляре браузера без артефактов режима инкогнито.

Проверка

После запуска BotBrowser убедитесь, что сессия ведет себя как обычная (не инкогнито) сессия:

const page = await context.newPage();

// 1. Проверка квоты хранилища (должна быть обычной, не сниженной)
const quota = await page.evaluate(async () => {
  const est = await navigator.storage.estimate();
  return est.quota;
});
console.log('Storage quota:', quota);

// 2. Проверка доступности Service Worker
const swAvailable = await page.evaluate(() => 'serviceWorker' in navigator);
console.log('Service Worker available:', swAvailable);

// 3. Проверка IndexedDB
const idbAvailable = await page.evaluate(() => {
  return new Promise((resolve) => {
    const req = indexedDB.open('test', 1);
    req.onsuccess = () => { req.result.close(); resolve(true); };
    req.onerror = () => resolve(false);
  });
});
console.log('IndexedDB available:', idbAvailable);

// 4. Проверка контроля отпечатка (не ваше реальное оборудование)
const canvas = await page.evaluate(() => {
  const c = document.createElement('canvas');
  const ctx = c.getContext('2d');
  ctx.fillText('test', 10, 10);
  return c.toDataURL().slice(-20);
});
console.log('Canvas hash suffix:', canvas);

Убедитесь, что:

  1. Квота хранилища является обычным значением (не сниженным значением инкогнито)
  2. Все API доступны и функциональны
  3. Сигналы Canvas и других отпечатков поступают из профиля, а не от вашего реального оборудования
  4. Артефакты инкогнито отсутствуют

Лучшие практики

  1. Никогда не используйте режим инкогнито с BotBrowser. Профили BotBrowser предназначены для обычных сессий браузера. Режим инкогнито добавляет ненужные артефакты.

  2. Используйте --user-data-dir для изоляции сессий. Отдельные директории пользовательских данных обеспечивают чистую изоляцию без поведенческих артефактов.

  3. Используйте временные директории для непостоянных сессий. mktemp -d создает уникальную временную директорию, которая очищается ОС.

  4. Всегда загружайте профиль. Запуск BotBrowser без --bot-profile означает отсутствие защиты отпечатков. Профиль является основой.

  5. Сочетайте с прокси для полной идентичности. Профиль контролирует отпечаток. Прокси контролирует сетевую идентичность. Оба необходимы для согласованной идентичности.

  6. Используйте --bot-cookies для восстановления сессий. Вместо того чтобы полагаться на постоянные cookies в директории данных, управляйте cookies явно с помощью флага --bot-cookies для воспроизводимых сессий.

Часто задаваемые вопросы

Можно ли использовать BotBrowser в режиме инкогнито? Можно, но не следует. Режим инкогнито добавляет обнаруживаемые артефакты без дополнительной защиты отпечатков. Подход BotBrowser на основе профилей обеспечивает лучшую конфиденциальность в обычном режиме.

Предотвращает ли BotBrowser сохранение локальных данных? При использовании временного --user-data-dir данные сессии не сохраняются. Это достигает той же цели, что и режим инкогнито, без сопутствующих артефактов.

А как насчет приватного просмотра в Firefox или Safari? Те же принципы применимы. Режимы приватного просмотра во всех браузерах создают обнаруживаемые артефакты, оставляя основной отпечаток без изменений. Контроль отпечатков на основе профилей является более эффективным подходом.

Могут ли веб-сайты определить, что я НЕ в режиме инкогнито? В обычной сессии BotBrowser браузер ведет себя точно как стандартная сессия Chrome. Обнаруживать нечего. В этом преимущество отказа от использования режима инкогнито.

Защищает ли режим инкогнито от отслеживания по IP? Нет. Режим инкогнито не изменяет ваш IP-адрес. Для защиты IP используйте прокси с BotBrowser.

А как насчет "усиленной защиты от отслеживания" в Firefox? Усиленная защита от отслеживания Firefox блокирует известные трекеры и ограничивает некоторое снятие отпечатков. Однако она не контролирует базовые сигналы отпечатков так, как это делают профили BotBrowser. Защита также обнаруживается через отсутствие заблокированных запросов.

Могу ли я запускать несколько сессий без инкогнито? Да. Используйте отдельные пути --user-data-dir для каждой сессии. Каждая директория обеспечивает полную изоляцию: отдельные cookies, кэш, localStorage и IndexedDB, без артефактов инкогнито.

Работает ли подход BotBrowser для всех веб-сайтов? Да. Поскольку сессии BotBrowser являются стандартными сессиями браузера, они совместимы со всеми веб-сайтами. Нет ограничений API или поведенческих различий, которые могли бы вызвать проблемы совместимости.

Итоги

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

Для полной настройки идентичности см. Переключение бренда браузера, Управление User Agent и Client Hints и Настройка часового пояса, локали и языка. Для сетевой идентичности см. Настройка прокси и Изоляция мультиаккаунтного браузера.

#Incognito#Private-Browsing#Detection#Identity#Privacy

Переведите BotBrowser из исследований в продакшн

Используйте эти руководства, чтобы понять модель, а затем перейти к кроссплатформенной валидации, изолированным контекстам и масштабируемому браузерному развертыванию.