Skip to content

ilvivl/Python_Project

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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


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

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

1. Установка репозитория и расширения

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

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

2. Установка библиотек

  • Перейти в Python_Project/server_data_tmp.
  • Установить виртуальное окружение (необязательно).
  • Поставить необходимые библиотеки руками через pip3 install <name_of_module>. Возможны проблемы с установкой некоторых библиотек, но для успешной работы необходимо поставить flask, flask_jsonrpc, config, pandas, numpy, asyncio, networks, matplotlib, pprint. Также чтобы работал модуль psycopg2 необходимо установить следущие билиотеки: PyPI и psycopg2-binary.

3. Адаптация кода под ПК

  • файл personal_constants.py: добавить свой фрагмент кода с данными пользователя и базы данных.
  • файл config.py: в классе Path добавить свою переменную и путь до Python_Project, изменить значение переменной paths (примерно 27 строка), в конце файла создать свой класс с данными пользователя, базы данных и пути до Python_Project.
  • файл __init__.py: изменить название класса (примерно 11 строчка).
  • файл local_server.py: изменить название класса (примерно 10 строчка).
  • файл HMM_server.py: изменить аргумент функции для переменной paths (примерно 13 строчка).

4. Запуск серверов

  • Выполнить команду python3 app/HMM_server.py. Если ничего не выводится в консоль, то сервер работает.
  • Открыть ещё один терминал и, перейдя в папку Python_Project/server_data_tmp, выполнить в нём команду python3 app/local_server.py.

Если все сделано правильно, должны запуститься сервера и появиться сообщение содержащее строку Running on http://127.0.0.1:5000/

5. Активация расширения

  • Кликнуть на значок расширения в верхней строке браузера и запустить его (Enable) (При повторном наведении должна появится кнопка Disable).
  • Обновить страницу.

Теперь расширение и сервера запущены. Для поступления данных на сервер достаточно зайти в браузер Google Chrome и продолжить пользоваться им как обычно. Чтобы остановить поступление данных нужно прервать процесс серверов в двух терминалах. Пока запросы не оптимизированы и едят достаточно много памяти (~0.5 Мб в минуту), поэтому советую пользоваться расширением не более 5-7 минут.

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

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

About

Python Project

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 68.3%
  • TeX 11.5%
  • PLpgSQL 11.3%
  • JavaScript 8.4%
  • HTML 0.5%