Телевизоры. Приставки. Проекторы и аксессуары. Технологии. Цифровое ТВ

Фингерпринтинг браузера. Как отслеживают пользователей в Сети. Проблема идентификации пользователей HTML5 и хранение данных

Сегодня существует много способов идентифицировать и устроить слежку за пользователем в сети. Изначально слежка за пользователем была придумана с целью отличить реального пользователя от бота. Затем этим способом воспользовались рекламные компании. Рассмотрим наиболее распространенные способы.

Куки – это самый старый и популярный метод идентификации пользователя. Хранит короткие отрезки текстовых данных. На стороне пользователя устанавливается идентификатор (cookie), который запрашивается при последующих обращениях к сайту. Для блокировки куки можно установить соответствующие плагины в браузер, либо использовать его в режиме “инкогнито”.

Многие не чистят куки или боятся их удалять (некоторые используются для авторизации на сайте).

Local Shared Objects

Этот механизм используется для хранения информации на стороне пользователя в adobe flash. В отличие от cookie может хранить большие объемы информации.

При настройке браузер ищите, как отключить именно флэш-куки .

Хотите анонимности в сети – не устанавливайте Adobe flash плеер.

Хранилище Silverlight

Платформа Silverlight похожа на Adobe flash. Здесь используется Isolated Storage для хранения всей информации о пользователе.

Минус : через настройки браузера невозможно удалить уникальные идентификаторы. Даже если вы используете режим “Инкогнито”, почистите историю и удалите все куки, информация о вас все равно останется в хранилище Silverlight.

HTML5 и хранение данных

Для хранения данных HTML5 использует:

  • localStorage.
  • File Api.
  • Indexed DB.

Объем хранилища может быть огромным.

Однако вручную удалить все данные пользователя из этих хранилищ не совсем понятно как.

Кешированные объекты

Для быстрой загрузки страниц повсеместно используется кеширование. В локальный кеш записываются все объекты с посещаемого сайта. Здесь же прописывается время жизни кеша (заголовок Expires). При повторном обращении к сайту загружается локальная копия.

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

ETag и Last-Modified

Для правильной работы с закешированным содержимым страниц сервер должен информировать браузер, что документ обновился. Для этой цели используют ETag и Last-Modified.

ETag

Сначала с кешированной страницей сервер передает version tag. В будущем будет проверяться эта версия на правильность. Если версия тега совпадает с загружаемой страницей – грузится локальная копия, если версия изменилась – грузится новая страница с сервера.

Чем-то это напоминает работу куки, когда сервер сохраняет произвольное значение на стороне клиента, чтобы потом его снова считать.

Last-Modified

Last-Modified сообщает дату последнего изменения документа.

Чтобы избавиться от ETag и Last-Modified, нужно чистить кеш. Чистка куки и истории не поможет.

HTML5 AppCache

Application Cache позволяет сохранять какую-то часть сайта, чтобы она была доступна оффлайн.

Чтобы удалить данные из этого хранилища на одних браузерах нужно удалить весь кеш, на других – очистить куки и историю.

SDCH-словари

Такие словари используют сжатые данные посещенных страниц. Большинство сайтов сегодня работают на CMS, у них несколько повторяющихся блоков для всех страниц (футер, сайдбар, шапка). Чтобы каждый раз не запрашивать эти одинаковые блоки, сервер подготавливает для клиента SDCH-словарь (сжатый архив). Далее при последующих обращениях к страницам сайта сервер ссылается на данные из этого словаря.

Такие словари можно использовать и для хранения уникальных идентификаторов пользователя.

“Отпечатки” браузера

Никаких уникальных идентификаторов на стороне клиента не устанавливается. Сервер берет набор данных из среды браузера и объединяет их:

  • User-Agent – версия браузера, операционная система, установленные расширения.
  • Время на компьютере клиента.
  • Информация об установленном железе на компьютере. Это можно узнать через бенчмарки и тесты, реализованные на javaScript.
  • Разрешение монитора, размер окна браузера.
  • Установленные шрифты в системе + установленное ПО на компьютере (некоторые программы корректируют отображение веб-страниц, поэтому можно легко их определить).
“Сетевые” отпечатки

Идентифицировать пользователя можно и по структуре локальной сети, настройкам сетевых протоколов. Сюда включены: ip-адрес, MAC-адрес, номера портов для исходящих и входящих TCP/IP-соединений, локальный IP (если пользователь скрыт за прокси).

Поведенческий анализ и привычки

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

Как идентифицировать посетителя?

Когда-то давно для этой задачи были придуманы Cookie.

Однако есть гораздо больше способов идентификации. Многие технологии так или иначе передают информацию о пользователе и компьютере.

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

Примеры

Некоторые примеры подобных сервисов есть в интернете.

Panopticlick

Пример - ниже. Там iframe с адреса , по нажатию на Save сохраняет данные из текстового поля во все доступные хранилища, по Load - восстанавливает.

Кнопка Refresh перегружает страницу. А впрочем, можно и браузер переоткрыть, разницы не будет.

navigator

С помощью Javascript доступен замечательный объект nagivator , содержащий полную информацию о браузере посетителя и название его OS.

for(var prop in navigator) { if (navigator instanceof Object || navigator==="") continue document.writeln(prop+": "+navigator) }

Многие из этих свойств не изменяются даже при обновлении мажорной версии браузера, не говоря уже минорной.

screen

Для полноты картины все об экране посетителя расскажет объект screen .

for(var prop in screen) { if (navigator instanceof Object || screen==="") continue document.writeln(prop+": "+screen) }

Плюс этой информации - в том, что этот компонент подписи очень стабилен и не меняется почти никогда.

navigator.plugins

Для всех браузеров, кроме IE, этот объект содержит информацию о плагинах и их версии. Посмотрите сами:

var prev for(var i=0;i

Похожие публикации