Отпечаток браузера или browser fingerprint


Ребята из https://panopticlick.eff.org давно уже провели исследования и описали методику «отслеживания» браузера пользователя, даже в случае если у него отключены cookie.

Методика проста — собираем всю возможную информацию о браузере, плагинах, os  и т.п — комбинация всей этой информации достаточно уникальна, подробная математика тут:  https://panopticlick.eff.org/browser-uniqueness.pdf

В качестве разминки в стеке LAMP — реализовал описанный выше механизм для получения «отпечатка браузера».
Посмотреть «отпечаток» своего бразуера можно тут:
http://test.look-in.net/finger/
и если у вас не очень новый браузер то тут (ниже описано почему)
http://rest.look-in.net/restapi/static/

Особенно приятно смотреть на то, что отпечаток всегда один, даже если вы включаете в chrome режим анонимности. (то есть анонимности у вас то и нету).

Можете поиграть с отпечатком — поудаляйте куки, подключитесь через другого провайдера (другой IP) — отпечаток будет один и тот же. (большой брат следит за вами)

О реализации:

  • Python + Django + Tastypie — для реализации REST API сервера, который и выполняет работу по вычислению отпечатка.
  • Jquery (plugins: flash, json. timers) — для сбора локальной информации о браузере и отоправки его на сервер.
  • Flash+ActionScript — получение списка шрифтов системы
  • MySQL — в качестве хранилища (для этой задачи не принципиален, но хочется по анализировать результаты работы REST API)
  • Немного CORS — для поддержки API, (именно CORS и не работает, например, в IE9 по ссылке http://test.look-in.net/finger/)

Есть глубокое подозрение, что методика от https://panopticlick.eff.org будет давать сбои на мобильных браузерах (в силу того что мобильные браузеры очень похожи), так что если вы получите отпечаток для iphone / ipad — я буду благодарен.

И да, лучи проклятья хостеру ValueHost, который по умолчанию предлагает Django 1.1.1.

Отпечаток браузера или browser fingerprint: 3 комментария

  1. http://bcs.look-in.net
    Привет! Я не по теме, хочу спросить про твой старый сайт о белорецкой компьютерной ?коле http://bcs.look-in.net
    Там было много фоток. А их нет возможности выложить куда нибудь?
    С уважением,
    Альберт Кагарманов, Hamburg

  2. С линуксовой тачки:

    «Traceback (most recent call last):

    File «/pub/home/look/.local/lib/python2.6/site-packages/django_tastypie-0.9.11-py2.6.egg/tastypie/resources.py», line 192, in wrapper
    response = callback(request, *args, **kwargs)

    File «/pub/home/look/.local/lib/python2.6/site-packages/django_tastypie-0.9.11-py2.6.egg/tastypie/resources.py», line 397, in dispatch_list
    return self.dispatch(‘list’, request, **kwargs)

    File «/pub/home/look/.local/lib/python2.6/site-packages/django_tastypie-0.9.11-py2.6.egg/tastypie/resources.py», line 427, in dispatch
    response = method(request, **kwargs)

    File «/pub/home/look/.local/lib/python2.6/site-packages/django_tastypie-0.9.11-py2.6.egg/tastypie/resources.py», line 1165, in post_list
    updated_bundle = self.obj_create(bundle, request=request, **self.remove_api_resource_names(kwargs))

    File «/pub/home/look/.local/lib/python2.6/site-packages/django_tastypie-0.9.11-py2.6.egg/tastypie/resources.py», line 1780, in obj_create
    bundle.obj.save()

    File «/pub/home/look/rest_api/restapi/restapi/models.py», line 25, in save
    m.update(self.browser_plugin)

    UnicodeEncodeError: ‘ascii’ codec can’t encode character u’\xae’ in position 1569: ordinal not in range(128)

Комментарии запрещены.