Pull to refresh

Алгоритм определения ботов и офферов во Вконтакте

Reading time 7 min
Views 38K
Под катом не будет нейросетей и сложных формул, будут лишь описаны признаки, по которым я на коленке ловил ботов, сравнение результата фильтрации по этим признакам с фильтрацией одним рекламируемым сервисом и ссылка на страницу с реализацией на js, по которой любой может испытать фильтр на своем собственном списке либо протестировать последних вступивших в свое сообщество.

Картинка для привлечения внимания:



Предыстория


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

Для получения реальных цифр требовалось узнать приблизительную долю ботов в собранных подписчиках. Попробовал почистить аудиторию от ботов таргетхантером (первый попавшийся на глаза сервис, позволяющий отфильтровать ботов бесплатно), однако качество чистки оказалось так себе (среди оставшихся по прежнему присутствовали липовые аккаунты, причем довольно много). Сервисы типа «заплати, а мы потом тебе покажем, что умеем» решил не использовать — денег жалко, а в результате тот же черный ящик и сомнительный результат. Решил изучить страницы ботов и написать собственный фильтр.

Кого фильтруем


Для начала уточню, моей целью было отфильтровать аккаунты, которые виделись мне мусорными с точки зрения приглашения их в коммерческие свадебные сообщества. Под это определение попадают как боты, вступающие на автомате так и офферы, которые кто-то делает по 100500 штук и затем продает их, как якобы «живых подписчиков». Очевидно, что офферы, которых вручную нагоняет школьник ничего не купят ровно также, как и боты, которые нагоняются скриптом. Что они могут сделать хорошо — это просадить статистику рекламных объявлений с оплатой за 1000 показов. Также это может зацепить и вполне реальных людей, но какой от них толк в сообществе, если они не увидят его записи (равно как и не будет смысла показывать им рекламу сообществ)?

Как фильтруем


Наиболее простой мне показалась идея оценивать каждый аккаунт по шкале от 0 до 100, по которой явные боты набирают 100 очков, а обычные люди остаются в районе 0 (в идеале. На практике некоторые реальные люди могут набирать и по 50 баллов). Методика не идеальна (как и все в войне щита против меча), однако как показала практика, создатели ботов не особо заморачиваются при создании своих фейков (совершенный бот обойдется дороже привлеченного рекламой клиента), поэтому в данный момент она работает. Для заполнения шкалы были подобраны несколько признаков, каждый из которых может прибавлять или убавлять определенное количество очков, а аккаунты, набравшие некое число очков (70-100 в моем случае), считаются некачественными и фильтруются. Я не буду писать, сколько очков присваивается при нахождении того или иного признака, вы можете посмотреть их в примере, который будет в конце статьи, там же их можно будет изменить, как и порог, при превышении которого аккаунт зачисляется в стан ботов. А теперь давайте пробежимся по проверяемым признакам:

Аккаунт забанен


Первое, по чему я фильтрую пользователей. Я не знаю, зачем сервисы оставляют подобные аккаунты (а вышеупомянутый мной сервис «тх» их оставлял). Живой человек, пользующийся соцсетью восстановит доступ. Спамеру или ботоводу с тысячей аккаунтов легче завести новый аккаунт после бана. Да и крутить рекламу по забаненным живым пользователям все равно невозможно.

Ссылка на страницу не изменена


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

Нет аватара


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

Есть ссылки на другие соцсети


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

Не выходил в сеть более 1-3 месяцев


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

Подписан на 500-1500 и более сообществ


Великолепный и значимый признак мусорных аккаунтов. Основная статья заработка на ботах — это вступление в различные группы (ну да, еще лайки и репосты). И вряд ли владельцы ботоферм смогут скрыть это. По этой же причине, кстати, можно попробовать фильтровать тех, кто скрывает свои группы от постороннего взгляда (параноики тоже будут отфильтрованы в этом случае, но таких среди аудитории вконтакте единицы). Даже если вы отфильтруете живого человека по этому признаку, ничего страшного не произойдет, он вряд ли увидит новости вашего сообщества в своей ленте, будучи подписанным на 1000 других.

Состоит в сообществе о взаимораскрутке


Таких стоит оставлять, только если ваша ЦА — школьники с дефицитом внимания, отсутствием интересов и кучей свободного времени. Лично я считаю такую аудиторию не просто мусорной, а ярко сигнализирующей о том, что они ненастоящие.

Состоит во множестве сообществ о разных городах


Признаться, не нашел ни единой причины, по которой обычному человеку может быть интересно одновременно следить за новостями групп «ремонт стиральных машин казань», «наружная реклама омск», «дизайн интерьера калуга» и еще десятке коммерческих сообществ разных городов. Особенно учитывая качество контента в 95% таких сообществ. Зато боту, зарабатывающему на вступлении в сообщества это очень выгодно.

Состоит в группе без аватара


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

Посты пользователя никто не смотрит


Этот признак куда более прост. Обычно если пользователь имеет кучу друзей, но при этом у него почти нет просмотров записей на стене, значит его друзья — имитация. А для чего нужна имитация друзей, как ни для того, чтобы придать реальности фейковому аккаунту?

Отмечен на фото других пользователей


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

Проверка фильтрации


Для проверки эффективности поиска ботов по данным параметрам был написан небольшой сервис, позволяющий проверить загруженный список контактов. Также, чтобы исследование имело и практическую ценность для людей, в сервис была добавлена возможность проверить свое сообщество — если вы модерируете какое-либо сообщество, вы можете автоматически загрузить последних вступивших и проверить их. Это пригодится, если вы наняли человека заниматься рекламой и он дает вам статистику по приросту подписчиков, однако при этом вы не видите реального роста заказов/комментариев/лайков.

В алгоритме используется метод wall.get для проверки записей со стены, он имеет ограничение на 1000 вызовов в сутки, поэтому при использовании данного скрипта нельзя проверить больше 1000 человек. Впрочем, этого достаточно для оценки качества аудитории. Кроме того, скрипт позволяет задать свои значения веса каждого атрибута и порога определения бота, поэтому если вы не согласны с тем, что тот или иной параметр определяет ботов, можете приравнять его к 0, либо наоборот, увеличить его значение.

Тестирование и сравнение результатов


По результатам проверки из тестовой аудитории в 2935 человек таргетхантер отфильтровал 877 ботов. Фильтрация по описанному алгоритму отсеяла 1984 человека. Если подкрутить фильтр и выявлять лишь самых злостных ботов (подписанных на 500-1000 сообществ, из которых значительная часть — это сообщества о разных городах, либо забаненных, либо состоящих в группах раскрутки), количество обнаруженных уменьшится до 1215 человек, что однако тоже превышает результат упомянутого выше сервиса. Однако я просмотрел примерно два десятка страниц пользователей, которых таргетхантер посчитал нормальными пользователями, а мой алгоритм ботами и все эти пользователи показались мне сомнительными, на страницах многих были репосты сомнительных сервисов (казино, знакомства для взрослых, участия в конкурсах, спортивные прогнозы), либо малое количество просмотров записей. Также попадались аккаунты, похожие на коммерческие, продвигавшие какие-то услуги, но лично я готов пренебречь ими, особенно если учесть, что они кроме нужных мне сообществ подписываются еще на десятки других в короткие сроки и ряд ли интересуются необходимой мне темой. Хотя более мягкий фильтр может оставить такие аккаунты. И разумеется, я понимаю, что 20 страниц недостаточно, чтобы судить о качестве всех 1984 аккаунтов.

В любом случае я получил удовлетворяющие меня результаты, хотя если бы было свободное время, можно было бы существенно расширить признаки для поиска ботов. Но и описанных выше вполне достаточно (на настоящий момент) для получения качественного результата. И еще раз ссылка на реализацию алгоритма, чтобы не проматывать статью.
Tags:
Hubs:
+11
Comments 32
Comments Comments 32

Articles