Блоги частных детективов

Иван Глинкин
Автор:
Иван Глинкин
Поделиться LI Поделиться FB

Контроль активности пользователей в сети

09 сентября 2017 | 3233 просмотра

Актуальность

Сегодня трудно представить современную жизнь без инновационных технологий, используемых для автоматизации бизнес-процессов, их удаленного управления, обмена информацией. Это стало возможным благодаря активному интегрированию интернета в повседневную жизнедеятельность человека. Возможности новых технологий сокращают экономические затраты предприятия, минимизируют время исполнения задач, а также предоставляют другие дополнительные преимущества. 
Вместе с тем, удобство использования новых технологий зачастую пренебрегается безопасностью, что открывает путь к уязвимостям пользователей. Анализируя использование Интернета, как главного элемента инфраструктуры новых технологий, дает возможность получить достаточно много информации о пользователе. Это становится возможным с помощью создания специального программного обеспечения, использование которого дает возможность, например, в корпоративной сфере проследить рабочую активность персонала. 
В связи с этим, предлагаем в рамках настоящей статьи рассмотреть на реальных примерах методы и средства контроля активности пользователей в сети.

Методы и средства

В качестве примера, для контроля активности пользователя в сети рассмотрим социальную сеть «ВКонтакте». Данный ресурс предлагает нам не только данные пользователей, но также ряд возможностей по их обработке. Воспользуемся этими возможностями.

На странице https://vk.com/dev (меню сайта «Разработчикам») «ВКонтакте» предлагает пользователям широкие возможности по интеграции их сервисов на домашнюю страничку, приложение на телефон, дает возможность построить бизнес и даже разработать интернет-магазин.

Для решения поставленной задачи в рамках данной статьи будет достаточно одной функции – users.get [1], которая возвращает расширенную информацию о пользователях. При этом, возвращаются только те данные, которые являются общедоступными: фамилия, имя, идентификатор пользователя (id), дата рождения, ссылка на фотографии и др [2].

Для контроля активности пользователя в рамках функции users.get будем использовать поля id (идентификатор пользователя), first_name (имя), last_name (фамилия), photo_100 (url квадратной фотографии пользователя шириной 100 пикселей) и online (находится ли пользователь сейчас на сайте). Объектом исследования выберем основателя социальной сети «ВКонтакте» Павла Дурова - https://vk.com/id1. Для вызова функции с нужными полями по данному пользователю используем запрос вида:

https://api.vk.com/method/users.get?user_ids=1&fields=id,first_name,last_name,photo_100,online

1.jpg





Разработка программы

В качестве языка программирования выберем PHP – скриптовой язык для разработки веб-приложений. Программа будет запрашивать активность (нахождение на сайте) Павла каждую минуту, и записывать полученные сведения в базу данных для дальнейшего анализа. При этом, следует обратить внимание на одну важную особенность: пользователь остается активным в течение 15 минут после выхода с сайта. Поэтому при обработке результатов и написания кода обязательно должно учитываться указанное обстоятельство. 

Алгоритм построения будущей программы следующий: 

1. Запрашиваем ВКонтакте интересующие сведения по вышеописанному алгоритму;

$vk_query = "https://api.vk.com/method/users.get?user_ids=1&fields=id, first_name,last_name,photo_100,online";

2. Получаем от ВКонтакте данные и обрабатываем их;

$vk_info = file_get_contents($vk_query);

$info_array = json_decode($vk_info, true); 

3. Формируем выходные данные;

$uid = $info_array["response"][0]["uid"]; $first_name = $info_array["response"][0]["first_name"]; $last_name = $info_array["response"][0]["last_name"]; $photo = $info_array["response"][0]["photo_100"]; $online_value = $info_array["response"][0]["online"]; if ($online_value == 0) {$online = "Не в сети";} else {$online = "В сети";}; if (isset($info_array["response"][0]["online_mobile"])){$online_mobile = $info_array["response"][0]["online_mobile"]; if ($online_mobile = 1) {$online_type = " (Телефон)";} } else {$online_type = " (Компьютер)";} if ($online == "Не в сети") {$online_type = "";} 

4. Записываем данные в базу данных
$query = "INSERT INTO vk_stat (uid, first_name, last_name, photo, online, type, date, time) VALUES ($uid, $first_name, $last_name, $photo, $online, $online_type, date(d.m.Y), date(H:i))";

5. Выводим результат.
<div style="display:inline-block;">
<div style="display:inline-block"><img src="<?=$photo?>" style="border-radius:50px;"></div><div style="display:inline-block"><?php echo $first_name . " " . $last_name; ?><br>
Статус: <?php echo $online . $online_type; ?></div></div>

6. Автоматизируем ежеминутные запросы

header('refresh: 60');

После исполнения указанного кода программа нам выдаст один из следующих результатов:

2.jpg

3.jpg

4.jpg

Обработка полученных результатов

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

5.jpg

Количество строк напрямую зависит от времени работы программы и при наших настройках составит 1440 записей в сутки (1 строка в минуту).

Располагая указанной информацией, можно приступать к анализу. Вид представления сведений можно выбрать в разных вариантах, в зависимости от предпочтений оператора базы данных. В рамках настоящей статьи предлагаем рассмотреть 2 варианта представления: график и диаграмма Ганта.

При анализе сведений в рамках «Графика» возьмем Декартову систему координат. По оси «Y» разграничим 2 наименования: 0 - «Не в сети» и 1 - «В сети»; по оси «X» - дату и время.

6.jpg

Более интересный, с нашей точки зрения, и наглядный анализ активности пользователя в сети реализуется при помощи диаграммы Ганта.

7.jpg

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

Расширение функционала

Контроль одного пользователя вряд ли может быть удобным. В условиях реального времени необходимо контролировать от 10 (субъекты малого предпринимательства) до 3000-5000 человек (корпорации, общественные объединения и т.д.)

Выполнение указанных требований реализуемо. Так, в соответствии с документацией ВКонтакте, функция users.get поддерживает возможность одномоментно получать информацию до 1000 пользователей.

Для того, чтобы получить информацию о нескольких лицах, необходимо идентификаторы пользователей (uid) перечислить через запятую. Таким образом, запрос будет выглядеть следующим образом (на примере 4 пользователей):

https://api.vk.com/method/users.get?user_ids=1,5,6,7&fields=id,first_name,last_name,photo_100,online.

8.jpg

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

Так, узнаем общее количество пользователей:

$users_under_control = count($info_array["response"]);

И добавляем цикл перебора вместе с номером элемента массива в конец используемых переменных:

for ($i = 0; $i < $users_under_control; $i++)

{

         $uid[$i] = $info_array["response"][$i]["uid"];

         $first_name[$i] = $info_array["response"][$i]["first_name"];

         …

}

В результате работы программы получим следующее:

9.jpg

Практическая значимость

Рассмотрим практическое применение созданной программы.

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

10.jpg

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

Обратите внимание, Павел Дуров и Николай Дуров находятся в сети в одно и то же время. При этом, Николай находится в сети исключительно во время активности Павла. Если указанная тенденция продолжается в течение длительного времени, то можно с уверенностью утверждать, что Павел и Николай не только знают друг друга, но и находятся в дружеских отношениях, даже если они усиленно стараются это скрыть.

Также, руководство корпоративного сектора может обратить внимание на пониженную трудовую активность работников и не вовлеченность в рабочий процесс. Проанализируем активность Ильи Перекопского. Из графика видно, что Илья в течение всего трудового дня находится в сети, что не является его основной работой. Чем Илья занимается в сети ВКонтакте, можем только предполагать. Однако, мы точно уверены, что Илья не занимается работой.

Другой тип работников: Алексей Кобылянский. В течение дня Алексей занимается повседневной рутинной работой, на интернет не отвлекается и ресурсами компании в личных целях не пользуется. Однако, Алексея тяжело разговорить, он безынициативный и активности не проявляет. Проанализируем диаграмму. Алексей находится в сети в течение 8 часов и ложится спать в 3 часа ночи. С учетом того, что в 6 утра он просыпается и собирается на работу, на сон у него уходит всего 3 часа.

Кроме корпоративного сектора, есть и другие сферы жизнедеятельности, где контроль активность пользователей в сети может быть полезным:

  • Социальная сфера: является ли ребенок участником смертельной игры «Синий кит, Тихий Дом», где детей заставляют просыпаться в 4:20 утра и выполнять задания.

  • Образование: отвлеченность на Интернет во время уроков или лекций.

  • Армейская среда и другие отрасли с государственной тайной: сам факт нахождения пользователя в сети через средства мобильной связи в категорируемых помещениях.

Выводы

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

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

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

Все зависит от поставленных целей и решаемых задач. Главное – не бояться экспериментировать и нестандартно мыслить.


[1] Описание метода подробно раскрыто по адресу https://vk.com/dev/users.get

[2] Все возвращаемые данные и их описание раскрыто по адресу https://vk.com/dev/objects/user