Blacklight — это инспектор конфиденциальности веб-сайтов, выполняющий проверку в реальном времени.
Этот инструмент эмулирует способы наблюдения за пользователем, просматривающим веб-страницы. Пользователи вводят в Blacklight нужный URL, инспектор переходит на веб-сайт, сканирует известные типы нарушений конфиденциальности и сразу же возвращает анализ конфиденциальности исследованного сайта.
Принцип работы Blacklight заключается в посещении каждого веб-сайта headless-браузером (браузером без графического интерфейса), в котором запущено специализированное ПО, созданное The Markup. Это ПО отслеживает, какие скрипты на сайте потенциально могут наблюдать за пользователем, выполняя семь тестов, каждый из которых исследует отдельный известный способ наблюдения.
Blacklight отслеживает следующие типы наблюдения:
- Куки сторонних доменов
- Рекламные трекеры
- Кейлоггеры
- Запись сессий
- Фингерпринтинг по Canvas
- Отслеживание Facebook
- «Remarketing Audiences» Google Analytics
Подробнее о них и их ограничениях рассказывается ниже.
Blacklight создан на основе Javascript-окружения NodeJS, Node-библиотеки Puppeteer, обеспечивающей высокий уровень контроля поверх браузера Chromium (open-source Chrome). Когда пользователь вводит URL в Blacklight, инструмент запускает headless-браузер с новым профилем и посещает главную страницу сайта, а также случайно выбранную страницу, находящуюся глубже внутри того же веб-сайта.
Кто подглядывает за вами, пока вы работаете, учитесь или бродите по Интернету?
Пока браузер посещает веб-сайт, он выполняет в фоновом режиме специализированное ПО, отслеживающее скрипты и сетевые запросы, чтобы понять, когда и как собираются пользовательские данные. Для мониторинга скриптов Blacklight модифицирует различные свойства Window API браузера, которые можно использовать для фингерпринтинга. Это позволяет Blacklight фиксировать, какой скрипт выполнил вызов определённой функции с помощью пакета Stacktrace-js. Сетевые запросы собираются при помощи инструмента мониторинга, содержащегося в API Puppeteer.
Blacklight использует данные скриптов и сетевые запросы для выполнения перечисленных выше семи тестов. После этого он закрывает браузер и генерирует отчёт для пользователя.
Он записывает список всех URL, которые запрашивал исследуемый веб-сайт. Кроме того, он создаёт список всех запрошенных доменов и поддоменов. Публично доступный инструмент не сохраняет эти списки, только если пользователь не решил поделиться результатами с нами при помощи соответствующей опции.
Мы определяем имена доменов с помощью способа Public Suffix + 1. Под понятием собственного домена (first-party domain) мы подразумеваем любой домен, соответствующий посещаемому веб-сайту, в том числе и поддомены. Под понятием стороннего (third-party) мы подразумеваем любой домен, не соответствующий посещаемому веб-сайту. Инструмент сравнивает список сторонних доменов из запросов веб-сайта с набором данных Tracker Radar сайта DuckDuckGo.
Это слияние данных позволяет Blacklight добавлять следующую информацию о сторонних доменах, найденных на исследуемом сайте:
- Имя владельца домена.
- Категории, присвоенные DuckDuckGo каждому домену с описанием его наблюдаемых задач и намерений.
Эта дополнительная информация о сторонних доменах предоставляется пользователям в качестве контекста результатов тестов Blacklight. Среди прочего, эта информация используется для подсчёта количества относящихся к рекламе трекеров, присутствующих на веб-сайте.
Blacklight выполняет тесты на основании корневого URL страницы, введённого в интерфейс инструмента. Например, если пользователь вводит example.com/sports, то Blacklight начинает исследование с example.com, отбрасывая путь /sports. Если пользователь вводит sports.example.com, то Blacklight начинает исследование с sports.example.com.
Результаты проверок Blacklight каждого запрошенного домена кэшируются на 24 часа; такие кэшированные отчёты возвращаются в ответ на последующие запросы пользователей того же веб-сайта, выполненные в течение этих 24 часов. Это сделано для того, чтобы предотвратить злонамеренное использование инструмента попытками перегрузить веб-сайт тысячами автоматизированных посещений.
Blacklight также сообщает пользователям, оказались ли их результаты выше, ниже или примерно равными по сравнению с результатами 100 000 наиболее популярных веб-сайтов из рейтинга Tranco List. Подробнее об этом написано ниже.
Кодовая база Blacklight выложена в open source и доступна на Github; также её можно скачать как NPM-модуль.
Наш анализ обладает ограничениями. Blacklight эмулирует посещающего веб-сайт пользователя, но его автоматизированное поведение отличается от человеческого, и такое поведение может инициировать различные виды надсмотра. Например, автоматизированный запрос может инициировать больше проверок мошенничества, но меньше рекламы.
Учитывая динамичную природу веб-технологий, существует также возможность того, что некоторые из этих тестов со временем устареют. Кроме того, могут появиться новые допустимые способы использования технологий, которые Blacklight посчитает нарушениями.
По этой причине результаты Blacklight нельзя рассматривать как окончательное решение о потенциальных нарушениях конфиденциальности веб-сайта. Скорее, их следует расценивать как первоначальное автоматизированное исследование, требующее для принятия окончательного решения дополнительного изучения.
Предыдущие работы
Blacklight создан на основе различных инструментов контроля конфиденциальности, написанных в последнее десятилетие.
Он выполняет средства Javascript, что позволяет ему отслеживать вызовы Javascript API браузеров. Этот аспект работы основан на OpenWPM — инструменте с открытым исходным кодом для измерения веб-конфиденциальности, созданном Стивеном Энглехардом, Гунесом Акаром, Диллоном Рейсманом и Арвиндом Нараянаном из Принстонского университета. Сейчас этот инструмент поддерживается Mozilla.
OpenWPM использовался в принстонском Web Transparency and Accountability Project, который выполнял мониторинг веб-сайтов и сервисов для изучения того, как компании собирают и используют данные, а также вводят пользователей в заблуждение.
Благодаря множеству исследований, проведённых в период с 2015 по 2019 годы, исследователи Принстона выявили наличие множества технологий нарушения конфиденциальности. В их число вошли фингерпринтинг браузеров и синхронизация куки, а также скрипты воссоздания сессий, собирающие пароли и важные пользовательские данные. Одним из примечательных примеров является просачивание данных о выписанных рецептах и состоянии здоровья с walgreens.com.
Пять из семи выполняемых Blacklight тестов основаны на техниках, описанных в вышеупомянутом принстонском исследовании. Это фингерпринтинг по canvas, кейлоггинг, запись сессий и куки сторонних доменов.
OpenWPM содержит в себе код и техники из других инструментом изучения конфиденциальности, в том числе из FourthParty, Privacy Badger и FP Detective:
- FourthParty была open-source-платформой для измерения динамичекого веб-контента, запущенной в августе 2011 года, которая поддерживалась до 2014 года. Её применяли в различных исследованиях, в частности, в исследовании, описывающем способ, которым веб-сайты наподобие Home Depot обеспечивали утечку имён своих пользователей третьей стороне. Blacklight использует методику FourthParty по мониторингу передачи пользовательской информации, передаваемой по сети третьей стороне.
- Privacy Badger — это расширение браузера, созданное Electronic Frontier Foundation и выпущенное в мае 2014 года. Оно не позволяет рекламным сетям и сторонним трекерам следить за людьми в Интернете.
- FP Detective было первым подробным исследованием для измерения объёма фингерпринтинга устройств в Интернете. Этот инструмент был выпущен в 2013 году и использовался для проведения широкомасштабных исследований конфиденциальности в вебе.
Разработчики анализа данных Blacklight частично вдохновлялись Website Evidence Collector, разработанным Electronic Data Protection Supervisor (EDPS) из Евросоюза. Website Evidence Collector — это пакет NodeJS, использующий библиотеку Puppeteer для изучения того, как веб-сайт собирает пользовательские персональные данные. Часть категорий собираемых данных была выбрана EDPS.
Среди других проектов, повлиявших на разработку Blacklight, были Web Privacy Census, проведённый Калифорнийским университетом в Беркли в 2012 году, и серия «What They Know» Wall Street Journal.
Как мы анализировали каждый тип трекинга
Куки сторонних доменов
Куки сторонних доменов — это небольшие фрагменты данных, которые отслеживающие компании сохраняют в веб-браузере пользователя при посещении им веб-сайта. Это фрагмент текста, обычно уникальный номер или строка символов, который идентифицирует посетителя при посещении других веб-сайтов, содержащих код трекинга, принадлежащий той же компании. Куки сторонних доменов используются сотнями компаний для сбора досье о пользователях и показа индивидуальной рекламы на основании их поведения.
Популярные браузеры — Edge, Brave, Firefox и Safari — по умолчанию блокируют куки слежения сторонних доменов, а разработчики Chrome объявили, что откажутся от них.
Что тестирует Blacklight
Blacklight выполняет мониторинг сетевых запросов заголовка «Set-Cookie» и следит за всеми доменами, устанавливающими куки при помощи javascript-свойства document.cookie. Blacklight определяет куки сторонних доменов как куки, чей домен не соответствует посещаемому веб-сайту. Мы ищем эти сторонние домены в данных DuckDuckGo Tracker Radar, чтобы узнать, кто ими владеет, насколько часто они используются, и какие виды услуг они предоставляют.
Кейлоггинг
Кейлоггинг — это процесс отслеживания сторонними лицами текста, который пользователь вводит на веб-странице перед нажатием на кнопку отправки. Эта методика используется с различными целями, в том числе для идентификации анонимных пользователей, сопоставления их с почтовыми адресами и реальными именами.
Существуют и другие причины для кейлоггинга, например, обеспечение функции автозаполнения. Blacklight не может распознавать намерений, с которыми изучаемый веб-сайт использует эту методику.
Что тестирует Blacklight
Чтобы протестировать, происходит ли кейлоггинг на сайте, Blacklight вводит заранее заданный текст (см. «Приложение») во все поля ввода, но никогда не нажимает на кнопку отправки. Он отслеживает сетевые запросы, чтобы проверить, передаются ли введённые данные каким-нибудь серверам.
Запись сессий
Запись сессий (Session recording) — это технология, позволяющая третьим сторонам отслеживать и записывать всё поведение пользователя на веб-странице, в том числе движения мыши, нажатия, скроллинг страницы и весь ввод в формы даже без нажатия кнопки отправки.
В исследовании 2017 года исследователи Принстонского университета выяснили, что программы записи сессий собирают важную информацию, например, пароли и номера кредитных карт. Когда исследователи связались с соответствующими компаниями, большинство из них отреагировало быстро и устранило причину утечек данных. Однако в исследовании подчёркивается, что это не просто баги, а, скорее, небезопасные практики, которые, по словам исследователей, должны быть полностью прекращены. Большинство компаний, предоставляющих функцию записи сессий, сообщают, что используют данные для того, чтобы дать своим заказчикам (веб-сайтам, устанавливающим технологию) полезные сведения о том, как повысить удобство пользования веб-сайтом. Одна из компаний, Inspectlet, описывает свой сервис как отслеживание «поведения отдельных пользователей на сайте так, как будто мы стоим у них за спиной». (Inspectlet не ответила на письмо с просьбой о комментариях.)
Скриншот сайта Inspectlet, известного поставщика услуг записи сессий.
Что тестирует Blacklight
Под записью сессий мы понимаем загрузку особого типа скрипта компанией, которая известна предоставлением услуг записи сессий.
Blacklight выполняет мониторинг сетевых запросов специфических подстрок URL, которые согласно списку, созданному исследователями Принстонского университета в 2017 году, встречаются только при записи сессий.
Иногда в рамках записи сессий выполняется кейлоггинг. В таких случаях Blacklight корректно сообщает о записи сессий и как о кейлоггинге, и как о записи сессий, поскольку наблюдаются оба поведения, даже несмотря на то, что оба теста распознали одинаковый скрипт.
Blacklight точно распознаёт ситуации, в которых веб-сайт загружает эти скрипты, однако компании обычно записывают только выборку из посещений сайта, поэтому записывается не каждый пользователь и не при каждом посещении.
Фингерпринтинг по Canvas
Под фингерпринтингом подразумевается группа методик, пытающихся идентифицировать браузер без создания куки. Они могут идентифицировать пользователя, даже если он заблокировал все куки.
Фингерпринтинг по Canvas — это тип фингерпринтинга, идентифицирующий пользователя отрисовкой фигур и текста на веб-странице пользователя, замечая малейшие различия в способе их рендеринга.
Четыре примера фингерпринтинга по canvas, обнаруженных Blacklight.
Эти различия в рендеринге шрифтов, сглаживании, антиалиасинге, а также в других аспектах используются маркетологами и другими специалистами для идентификации отдельных устройств. Все основные Интернет-браузеры, за исключением Chrome, пытаются противодействовать фингерпринтингу по canvas, или не выполняя запросы данных для скриптов, замеченных в подобных практиках, или стремясь стандартизировать фингерпринты пользователей.
На изображении выше показаны примеры типов canvas-изображений, используемых скриптами фингерпринтинга. Такие canvas обычно невидимы для пользователя.
Что тестирует Blacklight
Мы следуем методологии, описанной в этой статье исследователями Принстонского университета, чтобы распознавать, когда HTML-элемент canvas используется для слежения. Для идентификации canvas, отрисовываемых при фингерпринтинге, мы используем следующие параметры:
- Свойства height и width элемента canvas не должны быть меньше 16px.
- Тест должен записываться на canvas не менее чем десятью символами.
- Скрипт не должен вызывать методы save, restore или addEventListener контекста рендеринга.
- Скрипт извлекает изображение при помощи toDataURL или единственным вызовом getImageData, указывающим область размером не менее 16px × 16px.
Мы не наблюдали этого на практике, однако возможно, что Blacklight может ошибочно маркировать обоснованное использование canvas, соответствующее этим эвристикам. Чтобы учесть это, инструмент захватывает отрисовываемое скриптом изображение и рендерит его. Пользователи могут определить способ использования canvas, просто посмотрев на изображение. Результаты работы типичного скрипта фингерпринтинга показаны выше.
Рекламные трекеры
Рекламные трекеры (Ad trackers) — это технологии, идентифицирующие и собирающие информацию о пользователях. Такие технологии обычно (но не всегда) используются в какой-то мере с согласия владельцев веб-сайта. Они применяются для сбора аналитики о пользователях веб-сайта, для таргетинга рекламы, а также брокерами данных и другими сборщиками информации для создания своих профилей пользователей. Обычно они принимают форму скриптов на Javascript и web beacon.
Web beacon — это небольшие изображения размером 1px x 1px, размещаемые на веб-сайтах сторонними лицами с целью слежения. С помощью этой техники сторонние лица могут определять поведения пользователей: когда конкретный пользователей вошёл на сайт, тип его браузера и используемый IP-адрес.
Что тестирует Blacklight
Blacklight проверяет все сетевые запросы по списку EasyPrivacy, содержащему URL и подстроки URL, известные выполнением трекинга. Blacklight отслеживает сетевую активность запросов, выполняемых к этим URL и подстрокам.
Blacklight записывает запросы, выполняемые только к сторонним доменам. Он игнорирует любые паттерны URL в списке EasyPrivacy, соответствующие собственному домену URL. Например, EFF хранит собственную аналитику, из-за чего выполняет запросы к своему поддомену аналитики https://anon-stats.eff.org. Если пользователь вводит eff.org, то Blacklight не считает вызовы anon-stats.eff.org запросами к сторонним доменам.
Мы находим эти сторонние домены в наборе данных DuckDuckGo Tracker Radar, чтобы узнать, кому они принадлежат, насколько они распространены и какие типы услуг предоставляют. Мы включаем в список только те сторонние домены, которые относятся к категориям «Трекинг с целью рекламы» (Ad Motivated Tracking) набора данных Tracker Radar.
Пиксель Facebook
Пиксель Facebook — это созданный Facebook программный код, позволяющий другим веб-сайтам таргетировать своих посетителей при помощи рекламы на Facebook. Среди наиболее распространённых действий, отслеживаемых пикселем, являются просмотр страницы или определённого контента, добавление платёжной информации или совершение покупки.
Что тестирует Blacklight
Blacklight ищет сетевые запросы с сайта, ведущие на Facebook, и изучает параметры запроса данных URL, соответствующие схеме, описанной в документации пикселя Facebook. Мы ищем три разных типа данных: "standard events", «custom events» и "advanced matching".
«Remarketing Audiences» Google Analytics
Google Analytics — это самая популярная сегодня платформа аналитики веб-сайтов. Согласно данным whotracks.me, 41,7% веб-трафика анализируется Google Analytics. Хотя бОльшая часть функциональности этого сервиса заключается в предоставлении разработчикам и владельцам веб-сайтов информации о том, как аудитория сайта взаимодействует с ним, этот инструмент также позволяет веб-сайту создавать собственные списки аудитории на основании поведения пользователей, а затем таргетировать рекламу для этих посетителей в Интернете при помощи Google Ads и Display & Video 360. Blacklight изучает исследуемые сайты на наличие этого инструмента, но не способа его использования.
Что тестирует Blacklight
Blacklight ищет сетевые запросы от исследуемого сайта, идущие к URL, начинающегося с «stats.g.doubleclick», который также содержит префикс идентификатора аккаунта Google «UA-». Подробнее это описано в документации разработчика Google Analytics.
Обследование
Для определения распространённости в Интернете технологий слежения мы протестировали с помощью Blacklight 100 000 наиболее популярных по данным Tranco List веб-сайтов. Данные и код анализа можно найти на Github. Blacklight успешно зафиксировал данные для 81 593 из этих URL. Для остальных или не удалось выполнить резолвинг, или произошёл таймаут после нескольких попыток, или не получилось загрузить веб-страницу. Показанные ниже процентные показатели рассчитаны на основании 81 617 успешных результатов.
Основные открытия, сделанные в нашем обзоре:
- 6% веб-сайтов использовало фингерпринтинг по canvas.
- 15% веб-сайтов загружало скрипты из известных сервисов записи сессий.
- 4% веб-сайтов выполняло логгинг нажатий клавиш.
- 13% сайтов не загружало никаких куки сторонних доменов или запросов сетей слежения.
- Медианное количество куки сторонних доменов равно трём.
- Медианное количество загруженных рекламных трекеров равно семи.
- 74% сайтов загружало технологию слежения Google.
- 33% веб-сайтов загружало технологию слежения Facebook.
- 50% сайтов использовало функцию ремаркетинга Google Analytics.
- 30% сайтов использовало пиксель Facebook.
Мы классифицировали как технологию слежения Google любые сетевые запросы, выполняемые к любому из следующих доменов:
- google-analytics.com
- Doubleclick.net
- Googletagmanager.com
- Googletagservices
- Googlesyndication.com
- Googleadservices
- 2mdn.net
Мы классифицировали как технологию слежения Facebook любые сетевые запросы, выполняемые к любому из следующих доменов Facebook:
- facebook.com
- Facebook.net
- atdmt.com
Ограничения
Анализ Blacklight ограничен четырьмя основными факторами:
- Это симуляция поведения пользователей, а не истинное их поведение, что может способствовать срабатыванию других реакций систем слежения.
- Исследуемый веб-сайт может отслеживать действия пользователя с благими целями.
- Ложноположительные срабатывания (возможны в отношении фингерпринтинга по canvas): очень изредка обоснованное использование HTML-элемента canvas совпадает с эвристиками, которые Blacklight использует для идентификации фингерпринтинга по canvas.
- Ложноотрицательные срабатывания: используемая Javascript-средствами Blacklight техника отслеживания стеков может некорректно связать вызов отслеживаемого метода window API с добавленной скриптом библиотекой. Например, если скрипт фингерпринтинга использует для выполнения вызовов jQuery, то в результате jQuery может оказаться на вершине стека, и Blacklight свяжет вызов с ним, а не со скриптом. На эту возможность нам указали исследователи, проводившие рецензирование нашей методологии; такого не происходило ни в наших тестах, ни при проверке 100 000 самых популярных сайтов.
Что касается ложноположительных срабатываний, когда Blacklight посещает сайт, то этот сайт может увидеть, что запрос поступает с компьютеров, расположенных в облачной инфраструктуре Amazon AWS. Так как в облачной инфраструктуре часто работают ботнеты, наш инструмент может привести к срабатыванию на сайте ПО распознавания ботов, в том числе и фингерпринтинга по canvas. Это может привести к ложноположительным результатам теста фингерпринтинга по canvas, несмотря на то, что тест используется не для слежения за пользователями, а для распознавания ботнетов.
Чтобы протестировать это, мы взяли случайную выборку в 1 000 сайтов из вершины списка Tranco List, которые мы уже пропускали через Blacklight на AWS. Мы пропустили эту выборку через ПО Blacklight на нашем локальном компьютере, имеющем IP-адрес в Нью-Йорке, и пришли к выводу, что результаты выполняемой локально проверки Blacklight очень похожи, но не точно совпадают с результатами запуска в облачной инфраструктуре.
Результаты для выборки: локальный компьютер и AWS
Локальный | AWS | |
---|---|---|
Фингерпринтинг по Canvas | 8% | 10% |
Запись сессий | 18% | 19% |
Кейлоггинг | 4% | 6% |
Медианное количество куки сторонних доменов | 4 | 5 |
Медианное количество сторонних трекеров | 7 | 8 |
Не все действия по отслеживанию, которые незаметны для пользователя, обязательно являются злонамеренными. Например, фингерпринтинг по canvas используется для предотвращения мошенничества, потому что он позволяет идентифицировать устройство. А кейлоггинг может использоваться для реализации функции автозаполнения.
Blacklight не пытается делать выводов о причинах использования обнаруживаемых им конкретных технологий слежения.
Не может Blacklight и точно определить, как веб-сайт использует собираемые им данные о пользователе, загружая скрипты записи сессий и мониторинга поведения пользователей, например, перемещения мыши и нажатия клавиш.
Blacklight не проверят условия использования и политики конфиденциальности веб-сайтов на то, раскрываются ли в них их действия по слежению за пользователями.
Приложение
Значения полей ввода
В показанной ниже таблице перечислены значения, которые мы прописали в Blacklight для ввода в поля ввода на веб-сайтах. В качестве справки мы использовали статью Mozilla об атрибуте autocomplete. Blacklight также выполняет проверку на наличие версий этих значений в base64, md5, sha256 и sha512.
Атрибут автозаполнения | Значение Blacklight |
---|---|
Date | 01/01/2026 |
blacklight-headless@themarkup.org | |
Password | SUPERS3CR3T_PASSWORD |
Search | TheMarkup |
Text | IdaaaaTarbell |
URL | themarkup.org |
Organization | The Markup |
Organization Title | Non-profit newsroom |
Current Password | S3CR3T_CURRENT_PASSWORD |
New Password | S3CR3T_NEW_PASSWORD |
Username | idaaaa_tarbell |
Family Name | Tarbell |
Given Name | Idaaaa |
Name | IdaaaaTarbell |
Street Address | PO Box #1103 |
Address Line 1 | PO Box #1103 |
Postal Code | 10159 |
CC-Name | IDAAAATARBELL |
CC-Given-Name | IDAAAA |
CC-Family-Name | TARBELL |
CC-Number | 4479846060020724 |
CC-Exp | 01/2026 |
CC-Type | Visa |
Transaction Amount | 13371337 |
Благодарности
Мы благодарим Гунеса Акара (Левенский университет), Стивена Энглехарда (Mozilla), Арвинда Нараянана и Джонатана Майера (Принстон Princeton, CITP) за комментарии и предложения к черновику статьи.
На правах рекламы
Серверы для размещения сайтов — это эпичные от Вдсины.
Используем исключительно быстрые NVMe накопители от Intel и не экономим на железе — только брендовое оборудование и самые современные решения на рынке!