Skip to content

maximzubkov/Python_Project

Repository files navigation

Zumamotu

Участники проекта:

  • Зубков Максим github
  • Турков Матвей github
  • Виноградов Илья github

Описание проекта

Мы хотим реализовать плагин для браузера, занимающийся анализом поведения пользователя, находящегося за компьютером. Мы будем собирать данные из браузера для каждой web-страницы, так и для переходов по сайтам в целом, и с некоторым периодом обновлять модель, описывающее поведение пользователя.

Составные части проекта:

0. Проверить предусмотрена ли на сайте аутентификация [x]

1. Создание плагина на google chrome, собирающего данные в формате json о поведении пользователя в сети [x]

2. Связь сервера с клиентом, посредством python скрипта. Данные полученные в двух предыдущих пунктах будут в формате json отправлены на сервер и сам сервер будет заниматься распределением данных по БД и прочим

3. Хранение полученных данных в БД на сервере

4. Анализ полученных данных при помощи марковской цепь со скрытыми состояними

Технологии и языки, используемые в работе

  • Python
  • JS, HTML, CSS
  • PostgreSQL

Детальное описание проекта

0. Проверить предусмотрена ли на сайте аутентификация.

1. Google chrome плагинами будет в основном будет заниматься Матвей. Вытаскивание данных из браузера будем при помощи JS. Рассмотрев информацию с данной страницы, мы выделили несколько ключевых паттернов поведения пользователя(в скобках указано расположение данной информации в терминологии общей для всех расширений в браузерах):

  • Координаты, скорость и ускорение мыши (есть RAW данные, нужна обработка)(content_script)
  • Скорость печати, горячих клавиши (есть RAW данные, нужна обработка)(content_script)
  • [-] Исправления в печати(content_script)
  • [-] Навигация по сайту (через кнопки или с помощью колеса мыши)(content_script)
  • [-] Размер окна, скорость листания страниц (background)
  • [-] Количество открытых ссылок, количество закладок (background,alarm)
  • Время проводимое на конкретных страницах сайта(content_script)
  • [-] Даблклик на объект(content_script)
  • [-] Количество запросов (background) (Можно получить из RAW данных)
  • [-] Выделение текста, например, при чтении некоторым людям бывает удобно выделить мышкой тот текст, который им наиболее интересен и время, которое он был выделен(content_script)

2. Клиент серверная часть. На сервере будет работать python скрипт, который будет распараллеливать поступления информации.

3. База данных.

База данных будет хранить в себе transition matrix и emission matrix необходимые для марковских цепей. Кроме того там будут таблицы users и webpages связанные primary key, подробнее о структуре базы данных можно почитать в sql

4. Проанализировав данные разных пользователей, мы пришли к двум выводам: во-первых, самое важное - это переходы между страницами, а, во-вторых, обычные аглоритмы машинного обучения, в которых есть обучающая выборка (то есть данные как нашего пользователя, так и некоторых других людей), нам не подходят. Выбор был сделан в пользу марковских цепей со скрытыми состояниями, подробнее о которых можно почитать в разделе analysis/markov_chain/Theory


Как запустить локально

Пока расширение не появилось в сети для общего пользования и сервер работает только локально.

Чтобы все заработало необходимо :

  • Склонировать репозиторий себе на компьютер.
  • Установить браузер Google Chrome.
  • Зайти на chrome:\\extensions и активировать режим разработчика.
  • Нажать на "Загрузить распакованное расширение" и выбрать папку chrome_extension из скачанного репозитрия.

Если все сделано правильно , на данном этапе в верхнем меню должна появиться желтая кошка (временный логотип расширения).

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

  • Перейти в Python_Project/server_data_tmp.
  • Установить виртуальное окружение (необязательно).
  • Поставить необходимые библиотеки из файла requirments.txt либо через команду pip3 install -r requirments.txt, либо руками через pip3 install <name_of_module>. Возможны проблемы с установкой некоторых библиотек, но для успешной работы необходимо поставить flask и flask_jsonrpc.
  • Выполнить команду python3 app/local_server.py.

Если все сделано правильно, должен запуститься сервер и появиться сообщение содержащее строку Running on http://127.0.0.1:5000/. Теперь сервер запущен по указанному адресу, и расширение должно начать отправлять данные в файл Python_Project/server_data_tmp/app/data_tmp.json. Теперь достаточно зайти в браузер Google Chrome и продолжить пользоваться им как обычно. Чтобы остановить поступление данных достаточно прервать процесс сервера в терминале. Пока запросы не оптимизированы и едят достаточно много памяти (~0.5 Мб в минуту), поэтому советую пользоваться расширением не более 5-7 минут.

О запуске удаленно

Чтобы получить доступ к сервеу необходимо обладать закрытым ключем, получить его можно, написав мне или Матвею