Защита от скликивания рекламы с помощью анализа fingerprint браузеров. Как это работает?

Меня зовут Максим Кульгин, и моя компания занимается защитой от скликивания контекстной рекламы в Яндекс.Директ и Google.Ads. Для защиты мы используем цифровой отпечаток браузера (fingerprint) и я хочу поделится некоторыми интересными фактами относительно этого механизма и как он помогает нам находить кликеров.

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

И да, таким образом вас могут отслеживать, даже если вы используете браузер в приватном режиме — в так называемом режиме инкогнито. Пример признаков цифрового отпечатка браузера и их значений — проверьте свой на http://fp.virpo.sk

На Slido было проведено одно из самых масштабных исследований точности определения отпечатков браузера и первый в мире подробный обзор эффективности этой технологии на смартфонах.

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

Что такое цифровой отпечаток браузера?

Воспользуемся аналогией о фотоаппаратах и пишущих машинках. Фотоаппараты и пишущие машинки можно легко идентифицировать и отличить друг от друга по сделанным фотографиям и напечатанному тексту соответственно.

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

Тот же принцип применяется к браузерам. JavaScript, который используется и включен в большинстве браузеров, раскрывает миру многое о вас. Будь это ваше разрешение экрана, смайлики, установленные шрифты, языки, часовые пояса или модель видеокарты. Всё это может быть извлечено из вашего браузера незаметно для вас.

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

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

Как используются цифровые отпечатки браузера?

Кто-то может подумать, что они заведомо используются в негативном ключе, но это далеко не так.

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

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

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

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

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

Как fingerprint помогает найти бота, скликивающего рекламу?

Это будет, пожалуй, самый короткий абзац в статье, т.к. технически задача совсем не сложная. Разумеется, боты, которые занимаются кликфродом, регулярно меняют свой IP- адрес и очищают cookies, но менять цифровое "окружение" сервера (а чаще виртуальной машины), с которого происходит скликивание рекламы, при каждом заходе уже проблематично. Поэтому самое простое, что можно сделать, это считать цифровой отпечаток при первом заходе и идентификации бота, а далее сравнивать сохраненные отпечатки для всех последующих пользователей и если мы находим совпадение, то с высокой вероятностью — это тот же бот и показ рекламы ему стоит заблокировать. Но, к сожалению, есть проблемы с точностью определения отпечатков, которые и рассмотрим далее.

Получается, что меня могут идентифицировать везде и всегда?

Ну, нет. Есть несколько сайтов, таких как AmIUnique и Panopticlick, которые могут вам сообщить, отличается ли цифровой отпечаток вашего браузера от примерно миллиона цифровых отпечатков, собранных в их базе данных. У меня, например, отличаются: )…

Защита от скликивания рекламы с помощью анализа fingerprint браузеров. Как это работает?

Скорее всего, ваш отпечаток будет отмечен как уникальный. И это звучит пугающе, но запаситесь терпением — возможно, что вам будет уже не так страшно, когда мы увидим полную картину.

Эти сайты сравнивают ваш цифровой отпечаток с отпечатками во всей их базе данных, которая пополнялась в течение 2-3 лет (или 45 дней в случае работы сайта Panopticlick).

Однако 2 года или даже 45 дней — это достаточно долгий период времени, чтобы цифровой отпечаток вашего браузера успел измениться без каких-либо действий с вашей стороны. Например, за 60 дней цифровой отпечаток моего браузера изменился 6 раз.

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

Проанализированные нами данные

Panopticlick и AmIUnique опубликовали очень хорошие научные статьи, в которых они провели анализ нескольких сотен цифровых отпечатков браузеров. Вы, кроме того, можете обратить внимание на эту большую работу, где автор делится своими результатами анализа цифровых отпечатков. Итак, что у этих, несомненно умных ребят, получилось? (ниже я привожу итоговые графики без изменений, as is):

  • суммарно было проанализировано 566 704 цифровых отпечатков, что примерно в два раза больше, чем в предыдущем, самом масштабном, исследовании;
  • смартфоны составляли 65% устройств в исследуемом наборе данных (это, кстати, довольно важно для анализа защиты от скликивания с android устройств);
  • данные включали в себя 31 отличительный признак цифрового отпечатка, полученный из каждого устройства с использованием готового скрипта для создания отпечатка.
Распределение анализируемых устройств по типу
Распределение анализируемых устройств по типу

Результаты анализа и как это нам поможет находить кликфрод?

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

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

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

Размеры анонимных группа для наиболее распространенных устройств в нашем наборе данных. Например, всего 33% айфонов могли бы быть однозначно идентифицированы
Размеры анонимных группа для наиболее распространенных устройств в нашем наборе данных. Например, всего 33% айфонов могли бы быть однозначно идентифицированы

Глядя на эту диаграмму, можно заметить следующее:

  • 74% настольных устройств могут быть идентифицированы точно, в то время как то же самое можно сказать о всего лишь 45% пользователей мобильных устройств. Хорошая новость в том, что чаще всего скликивают рекламу с обычных ПК, т.к. это просто проще :)
  • всего 33% цифровых отпечатков браузера, собранных на iPhone, были уникальными;
  • другие 33% Apple iPhone едва ли можно отследить вообще, потому что 20 или более айфонов обладают одним и тем же отпечатком браузера.

Быстрота изменения

Исследователи заметили еще одно интересное явление, когда посмотрели на то, насколько часто меняется цифровой отпечаток браузера на одном устройстве. График ниже показывает количество дней между первым посещением сайта-сборщика на каком-либо устройстве и первым изменением цифрового отпечатка:

Быстрота изменения цифрового отпечатка (дни ось X)
Быстрота изменения цифрового отпечатка (дни ось X)

Можно отметить, что за 24 часа почти 10% неоднократно наблюдаемых устройств сумели изменить свои цифровые отпечатки. Давайте посмотрим, как обстоят дела с каждым типом устройств в отдельности:

Быстрота изменения отпечатка на разных типах устройств в днях (ось X)
Быстрота изменения отпечатка на разных типах устройств в днях (ось X)

Этот график показывает, что за неделю цифровой отпечаток поменялся у 19% iPhone и всего лишь у ~3% устройств на Android. Следовательно, полученные данные показывают, что отслеживать iPhone в течение более длительного периода гораздо сложнее, чем Android-устройства. К счастью, скликивать рекламу с настоящих смартфонов Apple довольно сложно :)

Минимально-эффективный цифровой отпечаток

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

Например, энтропия 14,2 означает, что один из каждых ~19 000 цифровых отпечатков будет тем же, что и у меня. Увеличение энтропии до 16,5 означает, что одно из каждых ~92,500 устройств обладает тем же цифровым отпечатком.

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

Собирая 9 признаков браузера вместо 33, энтропия уменьшается всего на 0,035
Собирая 9 признаков браузера вместо 33, энтропия уменьшается всего на 0,035

Этот эксперимент показал, что извлекая всего три первичных признака браузера, а именно формат даты, строку user-agent и доступный размер экрана (не включая размер док-панелей, заголовков окон и так далее), можно добиться энтропии в 14,2, что уже достаточно для идентификации браузеров (а значит и пользователей) в некоторых случаях. Как это нам помогает для идентификации ботов? Вовсе не обязательно собирать много параметров компьютера, с которого происходит скликивание, чтобы «вылавливать» его в потоке посетителей.

Если же расширить подмножество признаками, которые сложнее получить, такими как отпечаток холста (canvas), список установленных шрифтов и некоторые другие, то сможем достичь целевого значения энтропии в 16,5.

Некоторые итоги...

Итак, какие промежуточные выводы можно сделать?

  • технологические гиганты могут отслеживать ваше перемещение в Интернете, но не совсем точно (пока не совсем);
  • сложнее отслеживать смартфоны (особенно Айфоны), чем персональные компьютеры. Но и скликивать с мобильных устройств сложнее...
  • отпечаток браузера устройства меняется довольно часто;
  • отпечатки браузера легко получить и они позволяют довольно точно идентифицировать последующие визиты ботов, даже если последние занимаются «маскарадинг» (меняют адреса и т.п.).

Однако если вас беспокоит конфиденциальность ваших данных, то есть и хорошие новости. Во-первых, Apple анонсировали войну против сбора отпечатков браузеров в своей операционной системе macOS Mojave. Во-вторых, GDPR считает цифровые отпечатки браузера персональными данными, а значит, с ними следует обращаться соответствующим образом. И, наконец, есть множество плагинов и расширений для браузера, которые могут сбивать с толку скрипты, используемые для сбора цифровых отпечатков браузера.

77
22 комментария

С фингерпринтами все понятно. А как от склика-то защищаете?

4

Тоже ответа в статье так и не нашел! Кликбейт, он такой!
Мы молодцы, подскажем вам как... добро пожаловать под кат. А там что нибудь типа - надо ставить наш скрипт, стоимость в мес хххх руб

статья же о другом. 

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


В наше время, конечно, всё было значительно сложнее: мы/нам кричали «я тебя по айпи вычислю», и потом все искали 127.0.0.1

2

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

80% ботов простые, 20% сложные. сложного бота сделать надо уметь и тратить на это время деньги. чтобы на лету js менять с finger. а не все этим заморачиваются.