Source: https://bscan.info/ru/blog/detect-devtools
Language: ru

Нет, сайт не видит, что вы пользуетесь Inspect Element, но может понять, что DevTools открыт. Проверьте вживую и узнайте, как убрать зависания и редиректы.

# Может ли сайт узнать об Inspect Element и DevTools?

Опубликовано 18 октября 2026 г.

![Сомнительно](https://bscan.info/QuestionIcon.svg)

Откройте DevTools (F12) и посмотрите, как страница это заметит

Всё выполняется в вашем браузере, ничего не отправляется. Откройте DevTools, измените цену, нажмите кнопку.

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

-   пока ничего

Что страница может заметить

-   Закреплённая панель (разница размеров окна) ожидание
    
    закрепите DevTools сбоку или снизу
    
-   Цена консоли (время) ожидание
    
    откройте DevTools (F12): подойдёт любая панель и любое расположение
    
-   Замер паузы debugger ожидание
    
    откройте DevTools, затем нажмите кнопку ниже
    
-   Правки страницы ожидание
    
    просмотрите код цены ниже и измените её текст
    
-   Сочетания клавиш и правая кнопка ожидание
    
    нажмите F12 или кликните правой кнопкой на этой странице
    

Цена: $49.00

Кликните по цене правой кнопкой, выберите «Просмотреть код» и измените текст. Кнопка запускает оператор debugger: при открытом DevTools страница зависает, пока вы не нажмёте Resume (F8).

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

-   Какой элемент вы выбрали через Inspect не видно
-   Какую панель вы читаете (Network, Sources, …) не видно
-   Что вы открыли вкладку view-source не видно

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

Вы нажали F12, и страница побелела. Или вас выкинуло на главную, или она зависла с баннером «Paused in debugger», или написала «developer tools detected» и перестала грузиться. В любом случае сайт заметил, хотя никакого события об этом не было.

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

**Если коротко:** ни один скрипт страницы не узнаёт, что вы что-то инспектировали. Скрипты выводят, что DevTools открыт, по побочным эффектам: закреплённая панель уменьшает страницу, логирование замедляется, а оператор `debugger` останавливает страницу, пока часы продолжают идти. Из этих трёх у двух есть дешёвый обход (открепить панель, отключить точки останова). У замера времени консоли обхода нет, и срабатывает в том числе на Puppeteer. Ничто из этого не идентифицирует человека, а проверки в виджете выполняются целиком в вашем браузере.

## Видит ли сайт, что вы пользуетесь Inspect Element?

Через свои скрипты нет. Браузеры не генерируют события «DevTools открыт», а выбор элемента или чтение панели странице ничего не сообщают. Сервер при этом по-прежнему видит обычные запросы. Просмотр исходного кода — это обычный запрос страницы или чтение из вашего кэша, а Chrome при открытии DevTools подгружает source maps сайта, так что сервер, который их отдаёт, может это записать. Какой элемент вы выбрали и какую панель читали, он не узнает никогда.

Правка страницы в Inspect Element никак не влияет на остальных. Вы меняете копию, которая лежит в вашей вкладке, копия на сервере остаётся нетронутой, а после перезагрузки возвращается оригинал. Страница при этом может заметить, что один из её элементов изменился, потому что [`MutationObserver`](https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver) сообщает о таких правках как об обычных изменениях DOM. Я проверил это для правок текста и атрибутов в Chrome, и запись ничего не говорит о том, кто внёс изменение. Попробуйте на цене в виджете: кликните по ней правой кнопкой, выберите «Просмотреть код» и отредактируйте текст. На схеме видно, куда попадает изменение.

Чью копию вы изменили?

Сервер сайта

$49.00

сколько магазин на самом деле спишет

Ваш браузер, эта вкладка

$49.00

копия страницы, хранящаяся в памяти

Собственный MutationObserver страницы пока ничего не изменилось

Имитация того, что делает правка на панели Elements. Она меняет копию в вашей вкладке. Страница может заметить, что её собственные элементы изменились, но не может узнать, что это сделал DevTools, а сервер по-прежнему спишет $49.00. После перезагрузки правка пропадает.

## Как страница узнаёт, что DevTools открыт

Три приёма работают по одному принципу. Страница не может спросить «DevTools открыт?», поэтому она ставит замер и следит за побочным эффектом. Идея та же, что в [детекте блокировщиков рекламы](https://bscan.info/ru/blog/adblock-detection): страница не видит сам инструмент, поэтому измеряет, что он меняет.

**Разница размеров окна.** Закреплённый сбоку или снизу DevTools забирает место у страницы, и `window.outerWidth - window.innerWidth` (или то же для высоты) скачет. Скрипты считают признаком разницу от 160–170 пикселей и больше. На моём компьютере с Windows 11 закрепление DevTools справа сдвинуло разницу по ширине с 14 до 569 пикселей, а когда я открепил панель, разница вернулась к 14. Срабатывает она и ошибочно: при масштабировании страницы или открытой боковой панели браузера. Самая известная библиотека для этого, [devtools-detect](https://github.com/sindresorhus/devtools-detect), была заархивирована в мае 2026 года, а в её README прямо признаётся, что метод даёт много ложных срабатываний.

**Цена консоли.** Классический трюк логирует объект с геттером и ждёт, прочитает ли его консоль. Многие старые ответы всё ещё описывают его, но в актуальном Chrome он больше не срабатывает: в моём тесте на Chrome 155 для Windows геттер на `Error.stack` и геттер на `id` элемента молчали при открытом DevTools. Другие варианты, например собственный `toString`, срабатывают независимо от того, открыт DevTools или нет, так что ничего не доказывают.

Зато видно время. Логирование почти бесплатно, пока не подключён клиент консоли, а потом Chrome должен строить превью каждого объекта. Сорок вызовов `console.debug` с объектом на 40 ключей занимали меньше миллисекунды при закрытом DevTools и несколько миллисекунд при открытом, то есть примерно десятикратный скачок на моей машине. Не имело значения, закреплена панель или вынесена в отдельное окно. Тот же скачок появился и при голой сессии Chrome DevTools Protocol, которую Puppeteer и Playwright открывают по умолчанию. Страница, которая сравнивает время собственного логирования с базовым уровнем, это заметит. Отличить разработчика от скрипта она при этом не может, и именно поэтому [детект ботов](https://bscan.info/ru/blog/bot-detection) этим пользуется. Firefox и Safari я не проверял.

**Оператор `debugger`.** Без DevTools он ничего не делает. С открытым DevTools и включёнными точками останова он останавливает страницу, пока вы не нажмёте Resume. Скрипт читает часы до и после, и разрыв больше примерно 100 мс считается паузой. Скрипты трактуют это как «кто-то смотрит», хотя вкладка в режиме энергосбережения или медленная машина могут подделать такой разрыв. Это же и баннер «Paused in debugger». Кнопка в виджете запускает его один раз, чтобы вы почувствовали.

**Наблюдатель за правками.** Четвёртый сигнал вообще не проверка DevTools. Это тот самый `MutationObserver` из раздела выше, направленный на то, что скрипт хочет защитить, например на цену или элемент с платным доступом. Он сообщает об изменении, а не о DevTools.

Три проверки, два дешёвых обхода

Точки останова отключены

-   Разница размеров окна
    
    Внешнее окно минус область страницы
    
    замечено
-   Цена консоли
    
    Замер 40 вызовов консоли против базового уровня
    
    замечено
-   Замер паузы debugger
    
    Оператор debugger и секундомер
    
    замечено

Проверок, замечающих DevTools: **3 / 3**

Ни одна проверка не покрывает все способы открыть DevTools. У двух есть дешёвый обход (открепить панель, отключить точки останова), поэтому скрипты детекта комбинируют несколько проверок, а сложнее всего обойти цену консоли.

## Почему сайт зависает, редиректит или пишет «developer tools detected»

Сайты, которые реагируют, пользуются не одним приёмом. Кристиан Хайльманн разобрал один такой в статье [Cracking a “Developer Tools Killer” script](https://dev.to/codepo8/cracking-a-developer-tools-killer-script-2lpl). Скрипт блокирует правую кнопку мыши и сочетания F12, Ctrl+Shift+I и Ctrl+U, затем каждые 100 мс гоняет цикл с `debugger` и перенаправляет страницу, если пауза длится дольше 200 мс. Его функция проверки не обёрнута в замыкание, так что Хайльманн просто переписал её.

Мотив обычно один: усложнить копирование и скрапинг. Ничего это не защищает, потому что всё, что отправляет сервер, уже находится в вашем браузере. Копирование, вставка, переключение вкладок и скриншоты относятся к отдельному набору сигналов, о которых написано в статье [видит ли сайт переключение вкладок, копирование и скриншоты](https://bscan.info/ru/blog/can-websites-see-tab-switching).

## Может ли сайт заблокировать Inspect Element или F12?

Страница может отменять события клавиш F12 и Ctrl+Shift+I и контекстное меню, и большинство «блокирующих» скриптов делают именно это. Это косметика. Меню браузера (Дополнительные инструменты, Инструменты разработчика) работает вне страницы, и остановить его нельзя. Последняя строка виджета записывает, какие из этих событий доходят до страницы в вашем браузере. Он только наблюдает и ничего не отменяет.

## Как обойти детект DevTools и убрать зависание

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

1.  **Отключите точки останова** на панели «Источники» (Sources) (Ctrl+F8, на Mac Cmd+F8). Каждый оператор `debugger` превращается в пустую операцию, и проверка паузы не видит разрыва.
2.  **Открепите панель** в отдельное окно, и разница размеров окна перестанет работать.
3.  **Разберитесь со скриптом**, если срабатывает замер консоли. Настройки, которая скрывала бы консоль от страницы, не существует. Можно переопределить или заблокировать скрипт детекта, как это делает разбор Хайльманна, переписывая его функцию проверки, либо изучить сохранённую копию страницы, в которой не выполняется никаких скриптов.

Не ставьте расширение, которое подделывает `window.outerWidth` или патчит `console`. Подменённая встроенная функция перестаёт сообщать `[native code]`, и это само по себе выдаёт её, как и [пропатченные нативные функции](https://bscan.info/ru/blog/bot-detection) в детекте ботов.

## Законно ли пользоваться Inspect Element?

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

## Если вы запускаете много браузеров

Для разработчика срабатывание означает сломанную страницу, пока он не отключит точки останова. Для того, кто запускает браузеры массово, оно означает флаг на каждом сайте, который замеряет время консоли, потому что время вызовов консоли меняется, когда подключается канал автоматизации, а не только когда человек открывает DevTools. Если вы управляете профилями через Puppeteer или Playwright, прогоняйте каждую связку через виджет выше, без открытого окна DevTools, прежде чем на неё полагаться.

Профили [Incogniton](https://www.incogniton.com/?utm_source=bscanInfo&utm_medium=Website&utm_campaign=DetectDevtoolsBlog) — это настоящие сборки Chromium, так что описанные проверки применимы к ним так же, как к Chrome. Будет ли замер консоли молчать, зависит от того, как вы управляете профилем, так что проверьте эту часть сами. Разрешена ли конкретному сайту автоматизация, определяют его собственные правила, поэтому сначала прочитайте их.

Попробуйте прямо сейчас: откройте DevTools при работающем виджете, затем открепите панель и отключите точки останова. Две строки затихнут. А вот строка консоли не затихнет. [Полное сканирование браузера](https://bscan.info/ru) охватывает всё остальное, что может прочитать страница, от сети до отпечатка.

[Запустить полное сканирование браузера](https://bscan.info/ru)

## Читать дальше

[

![Могут ли сайты узнать имя вашего компьютера?](https://bscan.info/computerNameCover.svg)

Могут ли сайты узнать имя вашего компьютера?

](https://bscan.info/ru/blog/computer-name)[

![Могут ли сайты читать буфер обмена? Проверьте два способа](https://bscan.info/clipboardAccessCover.svg)

Могут ли сайты читать буфер обмена? Проверьте два способа

](https://bscan.info/ru/blog/can-websites-read-clipboard)[

![Видит ли сайт переключение вкладок, копирование и скриншоты?](https://bscan.info/tabSwitchCover.svg)

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

](https://bscan.info/ru/blog/can-websites-see-tab-switching)

---
This is the page's server-rendered documentation. Interactive browser tests, file processing and permission prompts require the HTML page; Markdown does not contain live measurements or process files.
