惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

S
SegmentFault 最新的问题
云风的 BLOG
云风的 BLOG
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
博客园_首页
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
The GitHub Blog
The GitHub Blog
Google DeepMind News
Google DeepMind News
M
MIT News - Artificial intelligence
博客园 - 叶小钗
MongoDB | Blog
MongoDB | Blog
N
News and Events Feed by Topic
Microsoft Security Blog
Microsoft Security Blog
Apple Machine Learning Research
Apple Machine Learning Research
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
T
Tailwind CSS Blog
Google DeepMind News
Google DeepMind News
IT之家
IT之家
W
WeLiveSecurity
P
Proofpoint News Feed
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
月光博客
月光博客
Schneier on Security
Schneier on Security
博客园 - 三生石上(FineUI控件)
Application and Cybersecurity Blog
Application and Cybersecurity Blog
腾讯CDC
H
Heimdal Security Blog
Y
Y Combinator Blog
Engineering at Meta
Engineering at Meta
量子位
宝玉的分享
宝玉的分享
博客园 - 【当耐特】
V
Visual Studio Blog
L
LangChain Blog
Last Week in AI
Last Week in AI
The Cloudflare Blog
Hacker News: Ask HN
Hacker News: Ask HN
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Security Archives - TechRepublic
Security Archives - TechRepublic
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
SecWiki News
SecWiki News
Simon Willison's Weblog
Simon Willison's Weblog
Security Latest
Security Latest
A
Arctic Wolf
T
Tenable Blog
I
Intezer
P
Privacy International News Feed
Attack and Defense Labs
Attack and Defense Labs
N
News | PayPal Newsroom
Martin Fowler
Martin Fowler

Все публикации подряд на Хабре

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет Midjourney в 2026? Мой немного грустный разбор этого шикарного инструмента Никто не любит писать тесты, но ИИ может исправить это IPv8 выглядит как мечта. Поэтому почти наверняка не взлетит Производители вернули в продажу материнки с DDR3. Что происходит? Управление агентом с телефона через Telegram теперь в KodaCode От координации к лидерству: как меняется роль руководителя разработки Я сделала родителям бизнес вместо пенсии: зарабатываем 70 тысяч, мама не даёт продать В три раза быстрее приемка товара и оптимизация трудозатрат на 73%: как «РСТ-Инвент» помог Gulliver Group ИИ-шечный мир победил? О влиянии искусственного интеллекта на игропром Кремль снижает давление на Телеграмм пока Европа строит интернет по паспорту Как CEO, CTO и CIO за 8 часов собрали ИИ-директора, который умеет держать позицию под давлением Как (не) потерять домен за выходные Вместо 8 разных VPS: как я организовал практику студентам на одном сервере Почему твой Open Source проект не замечают? R&D: искусство управления неопределенностью в разработке AI-дефляция: вакансий для разработчиков больше, а рост зарплат — худший за 15 лет Мы отдали управление роботами OpenClaw. Что из этого вышло Галактический ID: система идентификации для всех форм разумной жизни Шесть основ бизнес-анализа: начинаем с вопроса «Кто в игре?» Код-ревью, в котором дело не в коде Данные переехали. Команда — нет Системной подход к сдаче OSWE в 2025 Почему комната управления реактором покрашена в цвет морской пены 4 YAML-файла вместо PySpark: как аналитикам строить пайплайны без разработчиков LLM-агент для поиска свободных доменов: автоматизируем подбор Когда, зачем и как правильно начинать новую сессию в Claude Code? Как я заставил нейросеть писать макросы для FreeCAD Анатомия ИИ‑агента для подбора персонала. От тысячи резюме к топ‑10 за минуты Опыт разработчика как экономика внимания Автономность как точка невозврата: кто будет субъектом в цифровом будущем Обучение ИИ в «диких» условиях: как рутинные действия превращаются в датасеты Как измерить LLM для задач кибербеза: обзор открытых бенчмарков Где хранить код? Сравнение GitHub, GitLab и Bitbucket Математика объясняет, почему нормальное распределение встречается повсюду Почему ваш FinOps не работает: 12 тезисов от практиков Как подписать проектную документацию УКЭП с использованием бесплатных лицензий Pilot Адаптивное администрирование Sigla Vision Я грузил уран в бочки, а потом 20 лет строил ИТ в атомной отрасли Чем позвонить с Эвереста? История и обзор спутниковой связи. Часть 2 Как языковая модель помогает контролировать качество инструктажей по охране труда в металлургии Как не передать на desktop свой IP в РКН Анатомия SAP Privileges: как устроено управление правами в macOS MoneyDev: Сказка про три главных слова Обновлённый токенизатор видео K-VAE 2.0 от Сбера Как сделать диспетчеризацию дома на 1284 квартиры почти бесплатно Как мы разогнали железную дорогу Мы дали агентам рутину. Теперь надо решить — что делать с освободившимся временем Токсичный контент, промпт-хакинг и защита ИИ — всё о Guardrails для LLM Умный город начинается с точного взгляда: как «Фалькон Тех» меняет пространство к лучшему Навайбкодил приложение для анализа графов Почему Дюну так интересно читать? Упрощаем работу с рутиной или как стать Гендальфом Белым Деконструкция Go: CPU, RAM и что там происходит. Go Assembler база. Часть 1.1 Какие профессии исчезнут из-за ИИ, а какие появятся? И что с этим делать Как мы построили IT-отдел, где хочется расти: архитектурные встречи, прозрачные метрики и книжные подарки Rufler: Делаем из Claude Code автономный рой через один YAML-конфиг Sing-box и белый список приложений Как построить надёжный обмен сообщениями в микросервисах: лучшие практики для enterprise OpenAI строит MLM-пирамиду, а McKinsey и Accenture помогают ей в этом Дом, который не построил Фишер (Часть 2) «Сверхзвуковой математик» против «Вдумчивого логиста»: битва алгоритмов 3D-упаковки Мультимодальные модели – грубый и дорогой инструмент Разговоры ничего не стоят. Код тоже Проверки физических лиц: с кого начнет ФНС Топ-10 бесплатных нейросетей для создания видео в 2026 году Первые слои кода: как наши решения сегодня определяют архитектуру ИИ на десятилетия Разработка нового статического анализатора: PVS-Studio JavaScript Поиск уязвимостей ПО: базовый минимум или роскошный максимум Почему оценка персонала не работает как инструмент управления Как мы разработали ИИ-ассистента и сократили рутину продуктовой команды на 50% Как я ушел из найма, нажарил косточек и продал на маркетплейсах на 168 млн в год Когда 1С:ERP уже внедрена, а нормального производственного плана всё ещё нет Как я сделал Claude мультимодальным, подключив к нему Qwen Omni Как приглашение на вакансию мечты превращается в атаку Infrastructure as Code: философия и лучшие практики IaC Тестируем Yandex Code Assistant на задаче, в которой нужно хранить секреты nxs-universal-chart v3.0: новое поколение универсального Helm-чарта Callback Injection: Техника, которая отправила Microsoft Defender в глухой нокаут «Все идеи на стол»: митап как способ вывести проект из тупика Сегодня я узнал нечто новое о GPU благодаря багу в своей игре Как заставить LLM ̶ ̶г̶а̶л̶л̶ю̶ ̶ эволюционировать Карта событий как фундамент аналитики: практический кейс для E-commerce Что выбрать для AI: x86, ARM или RISC-V? Дайджест железа за март Роль соматических мутаций в развитии аутоиммунных заболеваний: путь к избирательной терапии Mythos от Anthropic — тревожный сигнал для всех, а не только для банков Guardrails для LLM на Java: как приручить промпт‑инъекции и токсичные ответы Green-VLA: как мы собрали VLA-модель для реального антропоморфного робота и не потеряли обобщение Финансовая гонка вооружений: почему умные люди добровольно в ней участвуют Эра ИИ-агентов наступила: выбираем лучшего цифрового сотрудника # Практический опыт внедрения WinCC Redundancy на производственном предприятии Сделал MVP за 3 дня, а потом неделю прикручивал оплату. Оно того стоило? Физика против Маска: почему Starship V3 может оказаться ещё одной катастрофой Нефть Венесуэлы: крупнейшие запасы в мире, но не крупнейшая нефтяная держава JPA 4. Переосмысление Hibernate Почему зеркальная фотокамера Nikon D5 десятилетней давности идеально подошла для миссии «Артемида-2» Проект «Уровень-Спутник» или как мы сделали платформу для гидрологов «Замедлиться, чтобы ускориться»: почему ИИ повышает цену ошибок в требованиях и архитектуре Как с нуля поднять трафик IT-компании на 1657% при бюджете 55 тыс. и выжить Pixel-perfect Downsampling — идеальная отрисовка 50 миллионов точек без потерь
Антидетект-браузеры: почему мультиаккаунтинг вообще работает
PetrVasilche · 2026-05-18 · via Все публикации подряд на Хабре

Антидетект-браузеры: почему мультиаккаунтинг вообще работает

Уровень сложностиПростой

Время на прочтение9 мин

Охват и читатели3

FAQ

Антидетект-браузер звучит как что-то из серой зоны интернета. Часто так и есть. Его используют для арбитража, SMM, тестирования, парсинга, работы с несколькими кабинетами, иногда для откровенно грязных схем. Но сама идея интереснее, чем рекламные лендинги таких сервисов.

Браузер давно перестал быть просто окном в сайт. Для сайта это датчик. Он отдаёт версию движка, список возможностей, особенности рендера, язык, часовой пояс, размеры экрана, поведение WebGL, Canvas, AudioContext, WebRTC, заголовки HTTP, TLS-отпечаток, storage, cookies, историю сессии, косвенные признаки железа и другие данные, которые я уже разбирал в статье о Fingerprinting. Часть данных нужна для нормальной работы веба. Часть для трекинга.

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

Сайт узнаёт нас не только по cookies

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

FingerprintJS описывает браузерный fingerprint как идентификатор, который собирается из атрибутов браузера и устройства. В отличие от cookies и localStorage, такой отпечаток может переживать приватный режим и очистку данных браузера, потому что сайт снова собирает те же признаки при следующем заходе.

Самый простой пример — navigator.userAgent. Браузер говорит: я Chrome на Windows. Раньше этого было много. Сейчас мало.

Сайт обычно спрашивает:

navigator.userAgent
navigator.language
navigator.hardwareConcurrency
navigator.deviceMemory
screen.width
screen.height
Intl.DateTimeFormat().resolvedOptions().timeZone

Это самый простой слой. Дальше идут признаки, которые сложнее подделать аккуратно.

Canvas fingerprinting заставляет браузер нарисовать скрытый текст или фигуру, потом сайт читает пиксели назад. Микроразличия зависят от шрифтов, сглаживания, ОС, видеокарты, драйвера и реализации графики в браузере. Обзор Fingerprint.com относит Canvas, WebGL, media devices, TLS, fonts и audio к основным техникам browser fingerprinting.

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

Один параметр ничего не доказывает. Двадцать параметров уже дают форму. Пятьдесят параметров дают почти паспорт.

Почему мультиаккаунтинг палится

Берём обычного пользователя. Он создаёт пять аккаунтов на одной платформе. Cookies разные. Почта разная. Прокси разные.

Но браузер тот же.

У всех аккаунтов как минимум совпадают следующие данные: Canvas, WebGL, AudioContext, набор шрифтов, timezone, странный размер окна, поведение Intl, Math, Error.stack, permissions API. На сетевом уровне виден один и тот же TLS fingerprint. HTTP-заголовки идут в одном порядке. Поведение вкладок и мыши похоже.

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

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

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

Почему мультиаккаунтинг палится

Почему мультиаккаунтинг палится

Почему простая подмена ломается

Допустим, мы меняем User-Agent на macOS Safari.

Проблема: остальной браузер всё ещё Chrome на Windows.

Сайт видит Safari в строке UA, но WebGL отдаёт Direct3D через ANGLE. Шрифты похожи на Windows. Поведение scrollbars похоже на Windows. navigator.platform говорит одно, media capabilities намекают на другое, TLS похож на Chromium, заголовки похожи на Chromium. Получается не MacBook. Получается мутант.

CreepJS как раз хорош тем, что ловит такие несостыковки. Автор проекта пишет, что цель CreepJS — показать слабые места и privacy leaks в современных anti-fingerprinting расширениях и браузерах.

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

Если профиль говорит «Windows 10 + Chrome», то рядом должны лечь:

  • Windows-шрифты и Windows-логика рендера;

  • правдоподобный WebGL renderer;

  • нормальный набор MIME/types и codecs;

  • язык, регион, timezone, IP-география;

  • размеры экрана и device scale factor;

  • поведение permissions, media devices, battery, touch;

  • HTTP-заголовки и TLS fingerprint, похожие на выбранный браузер.

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

Где тут «реально работает»

Работает там, где антифрод слабее модели профиля.

Многие системы не могут проводить тяжёлый анализ на каждом пользователе. Им нужно быстро принять решение: дать зайти, показать капчу, попросить 2FA, заблокировать, отправить на ручную проверку. У них есть бюджет по CPU, latency, false positive. Нельзя банить всех пользователей с нестандартной системой, потому что нормальные люди тоже бывают странными.

У кого-то старый ноутбук на Linux. У кого-то Firefox с настройками приватности и корпоративный прокси. У кого-то браузер в виртуалке со сломанными шрифтами.

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

W3C в своём документе по fingerprinting прямо делит меры защиты на уменьшение поверхности отпечатка, увеличение anonymity set и обнаруживаемость fingerprinting. Идея anonymity set тут особенно важна: чем больше пользователей выглядят одинаково или достаточно похоже, тем сложнее выделить одного конкретного человека.

Tor Browser идёт именно по этому пути. Он пытается сделать пользователей похожими друг на друга. Но об этом я тоже уже писал в статье про браузер Tor.

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

Изоляция профиля — половина дела

Если говорить грубо, антидетект-браузер состоит из двух частей: подмена отпечатка и изоляция состояния.

Изоляция проще для понимания. У каждого профиля свои cookies, localStorage, IndexedDB, cache, service workers, history, permissions, saved logins. Один аккаунт не должен случайно потянуть данные другого.

Обычный Chrome тоже умеет в профили. Firefox умеет в контейнеры. Но антидетект-браузеры делают это центральной функцией: профиль — это отдельная рабочая среда, которую можно запускать, закрывать, переносить, синхронизировать, привязывать к прокси, комментировать, шарить внутри команды.

Для мультиаккаунтинга это критично. Без изоляции можно идеально подделать WebGL и всё равно засветить связь через storage или service worker. Один лишний общий cookie и вся аккуратная маскировка превращается в декорацию.

Тут есть неприятный момент. Чем больше в профиле «жизни», тем он естественнее. Пустой профиль с нулевой историей, свежими cookies и первым входом через подозрительный IP выглядит хуже, чем профиль, у которого есть стабильная сессия и предсказуемое поведение. Антифрод любит историю. Поэтому мультиаккаунтинг редко держится только на технике браузера. Там почти всегда есть прогрев, поведенческие шаблоны, лимиты действий, репутация IP, платёжные следы.

Про это обычно не любят говорить в рекламных описаниях антидетектов. Там продают кнопку «создать профиль». В реальности кнопка создаёт только поверхностный слой.

Подмена API: где браузер начинает врать

Самый очевидный путь — научить браузер врать через JavaScript API.

Сайт спрашивает navigator.hardwareConcurrency, а получает не реальное число потоков CPU, а число из профиля. Сайт читает Intl.DateTimeFormat().resolvedOptions().timeZone, а видит часовой пояс, который соответствует прокси. Сайт рисует скрытую картинку через Canvas, а на выходе получает отпечаток не реального устройства, а заранее подготовленный результат.

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

Вот в чём подвох.

У настоящего браузерного API есть «почерк». Свойства лежат в ожидаемых местах. У них нормальные дескрипторы. Ошибки дают привычный stack trace. Значения совпадают между основной страницей, iframe и worker’ом там, где они должны совпадать. Canvas ведёт себя стабильно. WebGL не спорит с платформой. Timezone не конфликтует с языком, IP и локалью.

Плохой антидетект часто ломается не на одном большом проколе, а на мелких швах.

В основной странице он показывает одно число потоков CPU, а в worker’е — другое. В navigator значение подменили, а в соседнем API забыли. Функция вроде бы возвращает правильный результат, но её toString() выглядит не как у нативной функции. Свойство есть, но его дескриптор отличается от обычного Chrome. Canvas каждый раз даёт новый шум, хотя реальный браузер при одинаковом рисунке обычно возвращает один и тот же результат.

Сайт не обязан знать настоящее устройство. Ему достаточно увидеть, что перед ним среда, собранная руками.

CreepJS полезен именно этим. Он показывает не только сами значения, но и противоречия между ними. Не просто «какой у тебя Canvas», а «похож ли этот Canvas на остальную систему». Не просто «какой у тебя браузер», а «ведёт ли он себя как этот браузер в разных контекстах».

Поэтому нормальная подмена должна быть глубокой и согласованной.

Если антидетект меняет часовой пояс, он должен думать о языке, регионе, IP, формате дат и поведении Intl. Если меняет Canvas, результат должен быть стабильным внутри профиля. Если меняет WebGL, он не должен конфликтовать с ОС и браузером. Если меняет свойства navigator, те же значения должны аккуратно проявляться в iframe, worker’ах и других местах, куда сайт может заглянуть.

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

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

Почему сетевой слой мешает

Многие думают: поставил прокси — получил другую личность. Нет.

IP — это только один слой. Он должен совпадать с остальными признаками. Если профиль говорит «Париж», timezone стоит Москва, язык браузера русский, DNS уходит странным маршрутом, WebRTC показывает локальные адреса, а TLS fingerprint похож на автоматизированный клиент, картина плохая.

TLS fingerprint особенно неприятен. До JavaScript дело может вообще не дойти. Сервер уже видит ClientHello: набор cipher suites, extensions, порядок расширений, ALPN, supported groups. У разных браузеров и версий эти наборы отличаются. Если сверху написано Chrome, а TLS похож на библиотеку или модифицированный клиент, это шумный сигнал.

Fingerprint.com прямо включает TLS fingerprinting в список распространённых техник наряду с Canvas, WebGL, fonts и audio.

Вот почему антидетект на уровне расширения слабее браузера с изменениями ниже по стеку. Расширение может поменять JavaScript-слой. Оно почти не контролирует сетевой стек, TLS, порядок низкоуровневых признаков, поведение движка. Браузерная сборка имеет больше возможностей, но и больше способов сломаться.

Обнаружение антидетекта: ищут не ложь, а швы

Хорошая антифрод-система не обязана знать реальный GPU пользователя. Она ищет швы.

Шов — это место, где два признака плохо стыкуются.

Например:

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

  • timezone конфликтует с IP-географией;

  • language и locale не совпадают с клавиатурой, fonts и поведением Intl;

  • Canvas стабилен, но WebGL выглядит искусственно;

  • профиль каждый день новый, но действия слишком уверенные;

  • JS-слой похож на Chrome, TLS-слой нет;

  • в main thread одно значение, в worker другое;

  • iframe видит меньше подмены, чем основная страница.

В исследовании Detecting Anti-fingerprinting Browsers авторы оценивали коммерческие, подпольные и исследовательские anti-fingerprinting браузеры. В аннотации прямо сказано: такие инструменты могут успешно обходить browser fingerprinting, но исследователи показывают способы их обнаружения и анализируют, где они дают сбой.

Работает - потому что веб слишком разнообразный, а антифрод ограничен ресурсами и риском false positive.
Палится - потому что идеальная согласованность между JS, графикой, ОС, сетью и поведением очень сложна.

 Когда три “разных” аккаунта внезапно оказываются одним браузером в разных шапках

Когда три “разных” аккаунта внезапно оказываются одним браузером в разных шапках

Почему антидетект нельзя заменить обычным приватным браузером

Приватный режим чистит локальное состояние после сессии. Он не делает устройство другим.

Firefox Resist Fingerprinting снижает уникальность и ограничивает сбор данных. Mozilla предупреждает, что это может ломать сайты, потому что сайты реально используют часть этих API для функциональности.

Tor Browser снижает fingerprinting через стандартизацию поведения. Он хорош для приватности, но плохо подходит под модель «много разных аккаунтов с разными устройствами». Если двадцать аккаунтов заходят из одинакового Tor Browser через сеть Tor, это отдельный сильный паттерн.

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

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

Финальная мысль

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

Поэтому мультиаккаунтинг может жить долго: профиль выглядит правдоподобно и плохо связывается с другими профилями.

Но невидимости тут нет. Сильный антифрод ищет не одно подозрительное поле, а несостыковки между слоями: браузер говорит одно, WebGL намекает на другое, timezone спорит с IP, Canvas ведёт себя слишком искусственно.


Спасибо всем большое, что дочитали статью до конца! Буду рад видеть вас в своём Telegram-канале, там я продолжаю разбирать темы, связанные с кибербезопасностью: цифровая гигиена, приватность, деанон, антифрод, OSINT, реальные схемы атак и всё, что помогает лучше понимать угрозы вокруг себя.