вернуться к обзору Больше статей

Видит ли сайт переключение вкладок, копирование и скриншоты?

Сомнительно
Попробуйте: переключите вкладку, затем скопируйте предложение

Всё ниже происходит в вашем браузере, прямо сейчас. Переключите вкладку, выделите и скопируйте предложение или откройте эту страницу дважды. Ничего не покидает ваше устройство.

Последние события, записанные страницей

  • пока ничего

О чём браузер сообщает странице

  • Переключение вкладки или сворачивание окна ожидание
    переключитесь на другую вкладку и вернитесь
  • Окно потеряло фокус ожидание
    кликните в другое приложение или окно
  • Курсор покинул страницу ожидание
    выведите указатель за пределы окна
  • Текст выделен ожидание
    выделите любой текст на этой странице
  • Копирование или вырезание ожидание
    нажмите Ctrl+C или Cmd+C на выделенном тексте
  • Вставка ожидание
    вставьте что-нибудь в поле ниже
  • Диалог печати ожидание
    нажмите Ctrl+P, затем отмените
  • Клавиша PrintScreen ожидание
    нажмите PrintScreen (на клавиатурах для Windows)
  • Другие вкладки этого сайта ожидание
    откройте эту страницу во второй вкладке

набрано: 0 · вставлено: 0

То, о чём не сообщает ни одно событие

  • Скриншот средствами ОС не видно
  • Запись экрана не видно
  • Адреса и заголовки ваших других вкладок не видно
  • В какое приложение вы переключились не видно

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

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

Виджет на этой странице — рабочий детектор переключения вкладок, и это самый быстрый способ разобраться в споре на примере вашего собственного браузера. Переключитесь на другую вкладку, выделите и скопируйте предложение, нажмите Ctrl+P и отмените печать, а потом посмотрите, что он записал.

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

Видит ли сайт, что вы переключили вкладку?

Да. Когда страница скрывается или снова появляется, браузер генерирует событие visibilitychange и переключает document.visibilityState между visible и hidden. Отдельное событие blur срабатывает на окне, когда оно теряет фокус. У обоих есть временная метка, так что страница знает, что вы ушли и на какое время. На этом держатся скрипты аналитики: скрытая вкладка может уже не вернуться, поэтому именно в этот момент они отправляют собранное через navigator.sendBeacon. Те же сигналы используют платформы для тестов. В Classic Quizzes с включённым журналом аудита Canvas записывает, когда страница теста у студента теряет и возвращает фокус.

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

Четыре способа отвлечься от страницы
  • Переключиться на другую вкладку
    Вкладка скрыта: сообщается Фокус потерян: сообщается
  • Свернуть окно
    Вкладка скрыта: сообщается Фокус потерян: сообщается
  • Кликнуть в другое приложение, пока браузер остаётся на экране
    Вкладка скрыта: без сигнала Фокус потерян: сообщается
  • Взять в руки телефон
    Вкладка скрыта: без сигнала Фокус потерян: без сигнала
Сигналы «вкладка скрыта» и «фокус потерян» различаются, поэтому страница отличает скрытую вкладку от окна, которое просто потеряло фокус (на Mac браузер, полностью закрытый другим окном, тоже может считаться скрытым). Куда вы ушли, она не узнаёт, а ваш телефон не видит вообще.

Кликните в окно чата, пока браузер остаётся на экране, и сработает только blur, потому что вкладка по-прежнему видна. Переключите вкладку, и сработают оба. Так сайт отличает скрытую вкладку от окна, которое просто потеряло фокус. Движение курсора — отдельное событие: mouseleave срабатывает, когда указатель выходит за пределы окна, и именно на нём работают всплывающие окна при уходе со страницы, ловящие момент, когда вы тянетесь к панели вкладок.

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

Видит ли сайт ваши другие вкладки?

Только свои. Страница не может получить список ваших вкладок, прочитать их заголовки или адреса или заглянуть внутрь. Политика одного источника (same-origin) отгораживает сайты друг от друга, а API, который перечислял бы вкладки, не существует. Зато страница может общаться с другими вкладками того же источника в том же профиле браузера через BroadcastChannel или события хранилища. Так приложение замечает, что вы открыли его дважды, и спрашивает, какую вкладку оставить. Откройте эту страницу во второй вкладке, и строка «Другие вкладки этого сайта» её сосчитает.

Единственное, что страница узнаёт о вашем прошлом сёрфинге, — откуда вы пришли. Если вы перешли по ссылке, document.referrer называет сайт, на котором эта ссылка стояла, и обычно только название сайта, а не полный адрес.

Видит ли сайт, что вы копируете и вставляете?

Да, но с ограничениями. События copy и cut срабатывают на документе, когда вы нажимаете Ctrl+C или пользуетесь меню, и обработчик может прочитать в точности то, что вы выделили. Он может и подменить текст на другой: так некоторые сайты дописывают «Подробнее на…» ко всему, что вы копируете, — любезность, о которой никто не просил. selectionchange срабатывает, пока вы ведёте мышью по тексту, поэтому страница знает, что вы выделили, ещё до копирования.

Со вставкой всё наоборот. Вставка на страницу вызывает paste и передаёт текст из буфера обмена, а beforeinput сообщает, набран текст или вставлен, так что форма видит: ваш ответ на 400 слов пришёл одним куском. Чего страница не может, так это просматривать ваш буфер обмена. navigator.clipboard.readText() требует вашего разрешения и страницы, с которой вы сейчас работаете, поэтому текст, скопированный в другом приложении, остаётся приватным, пока вы не вставите его куда-нибудь.

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

Видит ли сайт, что вы делаете скриншот или записываете экран?

Нет. Ни один API браузера не сообщает о скриншоте или записи экрана. Их делает операционная система, за пределами браузера, и странице ничего не отправляется — будь то OBS, «Ножницы» или боковые кнопки телефона. То, что выглядит как обнаружение скриншотов, на деле оказывается одним из трёх других механизмов, причём последний вообще не обнаружение:

  • Слушатель клавиатуры, ждущий PrintScreen. Виджет показывает подвох: в Windows страница обычно получает только отпускание клавиши. На Mac система перехватывает сочетание Cmd+Shift+4, так что страница не видит его целиком.
  • Слушатель beforeprint. Он срабатывает на Ctrl+P и «сохранить как PDF», так что такую копию страница действительно замечает.
  • Заблокированный захват. Стриминговые сервисы часто показывают на скриншотах чёрный прямоугольник, потому что видео идёт по защищённому каналу. Захват при этом блокируется, но не обнаруживается. В нашей статье про Widevine DRM разобрано, как устроены эти уровни защиты.

На телефонах события в браузере те же: страница скрывается, когда вы переключаетесь между приложениями или блокируете экран. Убеждение, что сайты знают о скриншотах, скорее всего, идёт от нативных приложений. iOS сообщает приложению, когда вы делаете скриншот, а в Android официальный колбэк для скриншотов появился в версии 14, благодаря чему мессенджер может уведомить собеседника. Веб-странице в мобильном браузере не сообщают ничего.

Видит ли Canvas или онлайн-экзамен, что вы переключили вкладку?

Он видит потерю фокуса с временными метками и показывает преподавателю, что вы ушли. Куда вы ушли, он не видит. Это и есть весь механизм для теста, работающего как веб-страница, и поэтому в отчётах обычно написано «покинул страницу» и ничего более конкретного.

Экзамены с прокторингом — это софт другого класса, и именно там заявления самые смелые:

Кто что может увидеть
  • Что вы переключили вкладку или окно
    Веб-страница: ДаРасширение: ДаНативное приложение: Частично
  • Какие ещё сайты у вас открыты
    Веб-страница: НетРасширение: ДаНативное приложение: Частично
  • Что лежит в вашем буфере обмена
    Веб-страница: ЧастичноРасширение: ДаНативное приложение: Да
  • Что вы сделали скриншот
    Веб-страница: НетРасширение: НетНативное приложение: Частично
  • Что вы записываете экран
    Веб-страница: НетРасширение: НетНативное приложение: Частично
Софт для экзаменов и некоторые приложения видят больше, потому что это не веб-страницы: они работают с правами, которых браузер сайту никогда не даёт. «Частично» означает подвох. Чтобы прочитать буфер обмена, странице нужно разрешение, нативное приложение видит смену окон, но не вкладки браузера, а телефоны сообщают приложениям о скриншотах, тогда как компьютеры в основном нет.

Respondus LockDown Browser — установленная программа, а Proctorio — расширение браузера с правом читать ваши вкладки. Ни на одно из них не распространяются ограничения веб-страницы. Если кажется, что экзамен знает больше, чем может знать страница, посмотрите, что он попросил вас установить.

Можно ли помешать сайту это видеть?

Только ценой поломки страницы, а привычный обходной путь оставляет собственный след. Инструменты, подделывающие эти события, работают через подмену встроенных функций, например геттера document.hidden, а подменённая встроенная функция выдаёт себя точно так же, как stealth-патчи в детекте ботов. Поэтому реалистичный совет короткий:

  1. Исходите из того, что страница видит события фокуса, видимости и буфера обмена. Не подавляйте их. Настоящие пользователи создают те же события, и их подделка сама по себе выдаёт вас.
  2. Очищайте буфер обмена перед тем, как что-то вставлять на сайт. Вставка передаёт странице весь текст из буфера, так что если минуту назад вы копировали пароль или сид-фразу, сначала скопируйте поверх что-нибудь безобидное.
  3. Считайте переключение вкладки слабым доказательством. Оно говорит лишь о том, что вы отвлеклись, а люди так делают целый день. Сайт с тестом или экзаменом, который за это штрафует, просто гадает о ваших намерениях.

Если вы ведёте несколько аккаунтов, вы переключаете окна весь день, и страница каждого профиля записывает каждое переключение. Это нормально. Аккаунты попадают под подозрение из-за противоречий в другом месте, например когда у профиля язык, часы и GPU не сходятся между собой. Incogniton даёт каждому профилю свой согласованный браузер, поэтому ваши переключения окон выглядят тем, чем и являются, — обычным фоновым шумом. Допускает ли платформа несколько аккаунтов, определяют её правила, так что узнайте их прежде, чем действовать.

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

Логотип Incogniton

Повысьте уровень своей приватности

Стрелка