JavaRush/Java блог/Random/Отслеживания посетителей сайтов с помощью CSS

Отслеживания посетителей сайтов с помощью CSS

Статья из группы Random
участников
Ян Брёмер, студент-физик из Германии, интересующейся программированием, опубликовал на GitHub пример отслеживания перемещения посетителей по сайтам с применением только CSS, без использования возможностей JavaScript.
Отслеживания посетителей сайтов с помощью CSS - 1
Код, предоставленный Яном, позволяет с помощью формального языка описания внешнего вида документа собрать определённую информацию о пользователе – разрешение экрана его устройства, тип браузера (или движок), наличие заданных шрифтов и другое. Также есть возможность отследить ссылки, по которым переходил пользователь или к которым подводил курсор. Используя невидимую таблицу полей на фоне страницы можно выявить особенности перемещения мышки по экрану. Однако, использовать приведенный выше метод для отслеживания можно только в том случае, если пользователь впервые посещает страничку или наводит мышь на определенную ячейку скрытой таблицы, так как повторные действия не учитываются. Проверить работу метода можно тут. Для использования метода можно добавить изображение из внешнего источника в CSS с помощью url («foo.bar»). Так как ресурсы загружаются только при необходимости, вместо изображения можно указать ссылку на скрипт-сборщик и привязать ее к таким событиям, как переход на ссылку или подведение мыши к ссылке. Таким образом, мы можем создать селектор в CSS, который вызывает определенный URL-адрес, когда пользователь нажимает на ссылку:
# link2 : active :: after {
     content : url ( " track.php? action = link2_clicked " );
}
Обнаружение типа браузера основано на правилах @supports. Здесь необходимо проверить некоторые свойства CSS для браузера, такие как -webkit-appearance:
@supports ( -webkit-appearance : none ) {
     #chrome_detect :: after {
         content : url ( " track.php? action = browser_chrome " );
    }
}
С помощью шрифтов можно определить ОС пользователя, поскольку разные ОС отправляют разные шрифты (например «Calibri» в Windows). Для определения шрифта необходимо создать новое семейство шрифтов, источником для загрузки которого и будет скрипт-сборщик данных. Далее в блоке текста первым указывается проверяемый шрифт, а вторым — шрифт из нового семейства. Далее текст попытается стилизовать шрифт, если первый шрифт присутствует, то второй — будет игнорирован. Но если проверяемого шрифта нет, то браузер попытается использовать фиктивный шрифт как запасной вариант и отправит запрос к внешнему скрипту:
@ font-face {
     font-family : Font1;
    src : url ( " track.php? action = font1 " );
}

# font_detection1 {
     font-family : Calibri, Font1;
}
Если после использования метода результатов не поступило, или же появилось предупреждение PHP, то это значит, что значение свойства ложно или пользователь еще не посетил страницу/ссылку.
Комментарии (2)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
31 января 2018, 12:55
Если при каждом обновлении страницы генерировать на лету новый css, то можно отслеживать и повторные посещения страницы. Причем если основная таблица стилей будет в отдельном (кешируемом) файле, а следящий css подключать отдельным файлом (каждый раз меняя его название), то пользователь ничего и не заметит.
Yar Alex
Уровень 28
15 января 2018, 18:38
Больше всего мне понравился заголовок на его сайте - Crooked Style Sheets (кривые таблицы стилей)