Анализ пользователей DTF по открытым данным

На DTF более 250000 зарегистрированных пользователей. Из них 272 дерьмака, 32 пользователя с галочками, а у 6491 отрицательный рейтинг. А еще у одного из пользователей 36715 статей в закладках — удачи ему разобрать все это. Этот пост — моя версия шитпостинга с кучей бесполезных цифр, рейтингов и графиков.

Откуда данные?

DTF сделан на платформе «Основа» издательского дома Комитет. У всех сайтов этой платформы есть API — Application Programming Interface или программный интерфейс приложения (википедия). API у «основы» открытый, есть документация, кто угодно может им воспользоваться. Например, чтобы написать бота. С помощью этого интерфейса можно получать данные, которые мы обычно видим на сайте через браузер.

Например, это обычная ссылка, которую можно открыть в браузере и увидеть мой профиль в виде обычной HTML-страницы (не забудьте нажать «Подписаться»):

А можно использовать HTTP-запрос к API:

Скорее всего, вы увидите что-то типа этого (я сократил результат для экономии места):

{ "message": "", "result": { "id": 354, "url": "https://dtf.ru/u/354-evgeniy-prihodko", "created": 1469630239, "createdRFC": "Wed, 27 Jul 2016 17:37:19 +0300", "name": "Евгений Приходько", "description": "Работаю в геймдеве. Пишу об индустрии и технологиях, веду рубрики #техпоп и #когнитивочка ", "karma": 2317, "counters": { "entries": 51, "comments": 501, "favorites": 0 }, ... ... ... } }

Здесь уже нет HTML-кода, только данные в текстовом формате JSON. Преимущество API над обычными ссылками в браузере в том, что они дают данные в виде, который удобно обрабатывать скриптами. Этим я и воспользовался.

А еще я воспользовался тем, что «основа» использует последовательные идентификаторы (далее просто ID) для пользователей, статей, подсайтов и комментариев. Я недавно писал об этом в блоге.

Я написал скрипт на Python, который просто перебирает ID, начиная с 1, и запрашивает пользователя с таким ID. Если пользователь найден, то скрипт сохраняет его в базу данных. Один такой скрипт работает с пользователями, еще один — со статьями.

Есть только одна проблема — у API есть ограничения на количество запросов в секунду с одного хоста. Я не хотел плодить сущности и распараллеливать запросы с разных хостов, поэтому просто запустил скрипт на своем компьютере. Из-за этого сбор данных занял некоторое время.

У меня ушло трое полных суток на сбор пользователей и еще пара суток на сбор статей и постов. Из-за этого копия базы данных получилась немного размазанной по времени. Т.е. я записал одного пользователя себе в базу, и пока я записывал остальных, этот пользователь мог уже написать новые статьи и комментарии. Учитывая, что у меня данные за все 4 года существования DTF, можно пренебречь погрешностью в три-четыре дня и сказать, что у меня копия базы данных DTF по состоянию на начало июня 2020 (только открытые данные).

Если кому надо, скрипты можно найти тут:

Пользователи

251488
пользователей в базе данных на начало июня 2020

Приток новых пользователей

Количество пользователей стабильно растет, прирост экспоненциальный.

Анализ пользователей DTF по открытым данным

На этом графике видно резкие скачки. Построим график количества новых пользователей в неделю.

Анализ пользователей DTF по открытым данным

Теперь аномалии в росте пользователей видно еще лучше. В конце 2016 года «Комитет» купил неофициальную группу пользователей Steam «ВКонтакте» и преобразовал её в группу DTF.

Я думал, что пик в конце 2016 года связан именно с этим, но этот пост был 29 ноября, а пик — в середине декабря. Да и если б народ перетекал из группы ВК на DTF, пик был бы более размазанным по времени — на графике видно, что и без пика прирост пользователей в то время был больше.

Пик в сентябре 2018 года — это очевидная атака ботов: примерно 3500 новых пользователей со сгенерированными именами из 8 случайных символов. Скорее всего, просто DDoS-атака.

Увлекательные имена ботов
Увлекательные имена ботов

Самый большой пик был в октябре 2019 года. Ничего очевидно подозрительного я там не вижу, имена адекватные, но там появилось несколько тысяч новых пользователей, у которых 0 статей, 0 комментариев и 0 постов в избранном. Быть на DTF только для чтения и ничего не писать — это нормально, но я считаю, что все эти пики какие-то подозрительные. Вполне вероятно, что все из них — это DDoS-атаки.

UPD1:

> "Самый большой пик был в октябре 2019 года."

Это выход спецпроекта, где для участия в розыгрыше нужна была авторизация — https://dtf.ru/business/80258.

Михаил Тепловодский, Комментарий

UPD2:

В сентябре 2018-го всплеск связан, скорее всего, вот с этой статьей.

https://dtf.ru/cinema/26046

По какой-то причине тогда на этот лонг накрутили огромное количество лайков — счётчик не успевал обновляться, и в итоге цифра постоянно была размытой :) Все накрученные лайки тогда убрали (ну, или почти все), но лютое количество просмотров осталось. Кто это был и зачем, мы до сих пор не знаем.

UPD: Там можно комменты почитать, где все недоумевают)

Artyom Kaleev

, Комментарий

Дерьмак

272
пользователя, в имени которых есть «дерьмак»
Все имена (без повторов), содержащие «дерьмак»
Все имена (без повторов), содержащие «дерьмак»

Верифицированные пользователи (с галочкой)

32
пользователя с галочкой
Анализ пользователей DTF по открытым данным

По какой логике ставится галочка, я не знаю. У редакции нет галочек. У Сергея Бабаева (один из основателей нового DTF) нет галочки, а у Леонида Сиротина (второй основатель нового DTF) — есть. Часть верифицированных пользователей довольно известны и иногда пишут на DTF (Альфина, Сергей Галёнкин, Алекс Ничипорчик), а часть — просто оставили пару комментариев или вообще ни одного.

У Рейнджера здесь 0 постов и 0 комментариев, потому что он начал работать только 18 июня.

Рейтинг

Большинство людей в топ 10 по рейтингу — это редакция. Елистратов значительно всех опережает. Если брать топ 30, то там уже много пользователей.

Анализ пользователей DTF по открытым данным

Эффективность рейтинга

Если взять рейтинг и поделить его на количество статей и комментариев, то получим средний рейтинг на пост/комментарий или эффективность пользователя по рейтингу. Почти все пользователи в топ 30 по эффективности — это те, кто один раз удачно пошутил или скинул мемас, а потом продолжил молчать.

Анализ пользователей DTF по открытым данным

Есть несколько исключений — люди, которые стабильно постили популярные мемы, гифки и видео, например Øh God и Никита Князев.

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

Отрицательный рейтинг

6491
пользователей с отрицательным рейтингом

Владислав Спивак навсегда запечатлен на аллее славы консольных войн.

Анализ пользователей DTF по открытым данным

Подписчики

Топ 30 по количеству подписчиков. По какой-то причине, я в него не попал. Я считаю, что вы все должны подписаться и сделать репост. Мне нужны подписчики!

Анализ пользователей DTF по открытым данным

Статьи/посты

Топ по количеству статей — это редакция, Андрей Апанасик и Mankustrap.

Анализ пользователей DTF по открытым данным

Комментарии

На первом месте по комментариям — бот.

Анализ пользователей DTF по открытым данным

Закладки

Сейчас нельзя посмотреть количество закладок в профиле на сайте, но зато эту информацию можно получить через API. Я надеюсь, эти люди знают, что делают. Удачи им все это разгрести.

Анализ пользователей DTF по открытым данным

Ошибки API

Иногда при запросе пользователя по определенному ID я получал ошибку. Из ошибок тоже можно получить информацию — там есть интересные аномалии.

Обычно, если пользователь не найден (либо удален, либо по еще какой-то причине), то API возвращает код 404 — ресурс не найден. Но есть один подозрительный пользователь с ID 61870. Если открыть его профиль, то имя пользователя будет отмечено как deleted, а код ошибки будет 500 — внутренняя ошибка на сервере.

Анализ пользователей DTF по открытым данным

На странице написано «На сайте ведутся технические работы. Пожалуйста, обновите страницу через несколько минут», но не верьте им. 500 — это серверная ошибка, и в этом случае дело явно не в технических работах. Но и ничего серьезного, скорее всего. Может, просто забыли проверить на null.

Все остальные ошибки — это код 404. Построим график количества ошибок на 1000 пользователей.

Анализ пользователей DTF по открытым данным

Забавно, что до ID 61870, который мы уже рассмотрели выше, ошибок нет совсем. Потом Ширяев что-то сломал, 61870 дает ошибку 500, а через некоторое время после него идет большой пик на кучу ошибок для ID от 64953 до 64970.

Анализ пользователей DTF по открытым данным

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

Ссылка, которая выглядит как пользователь, перенаправляет сюда:

Получается, 27 мая 2018 на DTF была миграция базы данных и/или рефакторинг, чтобы и пользователи, и подсайты были в одном и том же пространстве идентификаторов. Это логично, так как можно писать от имени подсайта, будто это обычный пользователь, а с учетом блогов, с технической точки зрения пользователь мало чем отличается от подсайта.

Можно запросить список всех подсайтов через API и убедиться, что да, эти ID принадлежат этим подсайтам. Ну и многие другие подсайты, которые были добавлены позже, тоже находятся в этом же пространстве идентификаторов, и для них я тоже получил ошибку 404.

На графике есть еще один большой пик в районе ID 153000.

Анализ пользователей DTF по открытым данным

Эти ошибки тоже идут одна за другой. Я бы предположил, что это была какая-то атака, но мы уже видели из графиков ранее, что DTF не удаляет очевидные аккаунты ботов. Так что непонятно, что случилось здесь. Возможно, Ширяев тестировал что-то на продакшене, а потом пришлось удалять сразу 25 аккаунтов. Как знать. Пусть это останется на совести DTF и Ширяева.

To be continued…

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

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

Если у вас есть идеи, пишите их в комментариях — база пока никуда не делась, можно продолжать копать.

1.3K
243 комментария

ребята, не стоит вскрывать эту тему

370
Ответить

вскрывать темы мы не бросим...

120
Ответить

Да что такое это ваше 88

2
Ответить

Комментарий недоступен

4
Ответить

Мы молодые, шутливые, нам все легко.

2
Ответить

Предостерегать пытливый ум не бросим.

Ответить

Ботнет проверим (многих уже банили еще тогда), спасибо что скинул :) в остальном респект, держи плюс на год

137
Ответить