Если после открытия страницы с рекламой ноутбук начинает шуметь, вкладка «съедает» процессор, а без рекламного блока всё работает нормально — есть повод проверить страницу на cryptojacking. В рекламных сетях браузера такие скрипты часто приходят не напрямую с сайта, а через баннер, redirect, видеоплеер, hidden iframe или сторонний ad tag.
Задача не в том, чтобы «найти майнер по названию». На практике вредоносный код маскируют, переименовывают и прогоняют через несколько рекламных партнёров. Надёжнее искать цепочку загрузки: какой домен подгрузил скрипт, кто был инициатором запроса, что происходит с CPU и куда уходят сетевые соединения.
Как cryptojacking попадает в браузерную рекламу
Рекламная цепочка редко бывает простой. Ваш сайт ставит один ad tag, он обращается к SSP или рекламному обменнику, обменник выбирает DSP, DSP отдаёт креатив, креатив может подгрузить ещё несколько wrapper’ов. На каком-то уровне в эту цепочку может попасть вредоносный JavaScript.
Для браузера это часто выглядит как обычная реклама: JS-файл, iframe, WebSocket или WebAssembly-модуль. Пока скрипт не делает ничего очевидно опасного, браузер не обязан блокировать его сам. Поэтому обнаружение строится на связке признаков: высокая нагрузка, подозрительный источник, нестандартные соединения и подтверждение через временную блокировку.
Признаки, которые стоит проверить первыми
- Вкладка браузера держит CPU долго после загрузки страницы, особенно если на странице нет видео, анимаций или тяжёлого контента.
- Ноутбук греется, вентилятор шумит, заряд батареи быстро уходит именно на странице с рекламой.
- В диспетчере задач браузера вкладка или расширение показывает необычно высокую нагрузку.
- В Network видны WebSocket-соединения, .wasm-файлы, Web Workers или запросы к странным доменам после загрузки рекламы.
- Нагрузка резко падает, если отключить рекламный блок, включить контент-блокировщик или временно заблокировать домен партнёра.
Один признак ещё не доказательство. Видеообъявление, WebGL-анимация или тяжёлая аналитика тоже могут грузить браузер. Но если высокая нагрузка идёт из рекламного iframe, а после блокировки конкретного домена всё успокаивается — это уже хороший сигнал для расследования.
Пошагово: как найти источник cryptojacking-скрипта
- Повторите сценарий в чистом окружении. Откройте страницу в отдельном профиле браузера или тестовой среде. Закройте лишние вкладки, чтобы не перепутать нагрузку от других сайтов.
- Сравните страницу с рекламой и без неё. Если есть возможность временно отключить ad tag, сделайте это. Разница в CPU обычно сразу показывает, стоит ли копать рекламную цепочку.
- Запишите Performance. В DevTools откройте Performance и снимите 30–60 секунд работы страницы. Смотрите не только на общий CPU, но и на Scripting: если браузер постоянно исполняет JavaScript, это уже не обычная отрисовка баннера.
- Разберите Network. Отфильтруйте запросы по
js,ws,wasm,worker. Смотрите поле Initiator: оно показывает, какой скрипт или iframe запустил подозрительный запрос. - Проверьте iframe. В Elements найдите рекламные iframe, посмотрите их
src, размеры, вложенность и домены. Cryptojacking часто прячут в iframe 1×1, hidden iframe или в цепочке редиректов. - Временно заблокируйте подозрительный домен. Через DevTools Request Blocking или блокировщик контента запретите загрузку конкретного ресурса. Если CPU падает, вы нашли вероятного виновника.
- Сохраните доказательства. Зафиксируйте URL, домены, creative ID, demand partner, время, скриншоты Network и Performance. Без этого сложно доказать проблему рекламному партнёру и быстро откатить креатив.
Не проверяйте подозрительные страницы в рабочем профиле. Используйте отдельный браузер, гостевой профиль или тестовую виртуальную машину. Иногда проблема не только в рекламе, но и в заражённом расширении или скомпрометированном сайте.
На что смотреть в коде и трафике
Вредоносный рекламный скрипт не обязан содержать слово miner. Но есть паттерны, которые стоит проверять вручную или через автоматический анализ:
- WebAssembly. Загрузка
.wasmсама по себе не означает майнинг, но в связке с высокой CPU-нагрузкой это серьёзный сигнал. - Web Workers. Рабочие потоки удобны для долгой фоновой нагрузки. Проверяйте
new Worker, service worker и скрытые worker-скрипты. - WebSocket-соединения. Многие майнеры общаются с пулами через WebSocket. Смотрите, куда браузер держит постоянное соединение после загрузки рекламы.
- Обфускация. Длинные имена переменных,
eval,atob,fromCharCode, динамическая сборка URL — не доказательство, но повод открыть файл. - Скрытые iframe. Если рекламный iframe имеет нулевой размер,
opacity: 0или странный redirect, его стоит проверить отдельно. - Долгие JavaScript-петли. Если Performance показывает постоянный Scripting без видимой причины, скрипт может специально нагружать процессор.
Правильное доказательство выглядит так: сторонний рекламный источник запустил скрипт, браузер начал долго держать высокую нагрузку, а после блокировки этого источника нагрузка исчезла.
Какие способы обнаружения реально помогают
| Способ | Что показывает | Где полезен | Ограничения |
|---|---|---|---|
