Как сделать проверку на бота

Обновлено: 04.07.2024

В предыдущей статье мы рассказали, как создать простого бота на Node.js, однако он работал только на локальном компьютере. Эта статья о том, как загрузить бота на сервер, запустить его и проверить, что всё работает.

Шаг 1. Выбрать хостинг

Как правило, на shared-хостинге отсутствует поддержка Node.js, поэтому нам понадобится как минимум виртуальный сервер. Существуют сервисы, предлагающие VPS бесплатно, но с заметными ограничениями: например на количество трафика или нагрузку на сервер. Можно выделить несколько известных зарубежных провайдеров (но стоит отметить, что для новичков они могут оказаться сложными):

  • Google Cloud
  • Oracle Cloud
  • Amazon Web Services

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

  1. Прогнозируемая нагрузка — зависит от сложности вашего бота и количества запросов к нему.
  2. Количество оперативной памяти — это зависит от многих факторов, как, например, уровень оптимизации кода и общий масштаб вашего проекта.

Так как наш бот использует только одну основную библиотеку и состоит из нескольких строк кода, мы выбираем самый младший тариф — Cloud-0. В будущем, если возникнет необходимость, можно перейти на более дорогой тариф.

Шаг 2. Заказать хостинг

Заказ VPS сервера

После заказа и оплаты дождёмся настройки сервера:

Настройка сервера

Реквизиты доступа к серверу

Шаг 3. Загрузить бота

Приступим к загрузке бота на сервер. Это можно сделать разными способами — с помощью FTP, SFTP, панели управления или, к примеру, rsync. Мы выберем самый быстрый вариант — SFTP, так как для него нужна только возможность подключения к серверу по SSH, которая обычно присутствует на всех VPS сразу после заказа.

Мы подключимся к серверу с помощью FileZilla. Укажем IP-адрес сервера, а также логин root и пароль в настройках клиента:

Настройки клиента

При первом подключении появится окно с предупреждением:

Окно с предупреждением

Переходим на директорию выше ( . ), затем в каталог /opt и создаём папку с произвольным названием (мы выбрали keksbot ):

Директория проекта

Переходим в созданную папку и загружаем файлы index.js и package.json :

Папки с проектом на компьютере и на хостинге

Шаг 4. Зайти на сервер по SSH

Теперь нужно подключиться к серверу по SSH, чтобы установить Node.js и запустить бота. Для этого необходим SSH-клиент, например Putty, XShell, Bitvise SSH или любой другой. Функциональность программ может немного отличаться, но большой разницы в использовании между ними нет. Мы выбрали PuTTY как самый популярный и бесплатный SSH-клиент для Windows.

Открываем PuTTY, указываем IP-адрес сервера, порт 22 уже указан по умолчанию:

Базовые настройки PuTTY

Окно с запросом логина

Вводим root , после чего появится запрос пароля, при вводе которого символы не отображаются. Не стоит переживать, это особенность работы Linux — пароль нужно вводить вслепую. Чтобы не делать этого вручную, можно скопировать пароль и нажать правой кнопкой мыши в окне PuTTY. Убедитесь, что вы скопировали пароль без пробелов!

Шаг 5. Установить Node.js

Теперь займёмся установкой. Обратите внимание, что команды для установки Node.js отличаются в зависимости от операционной системы. В наших примерах указаны команды для Ubuntu, Debian и CentOS — мы будем вводить их в консоли SSH-клиента.

Если вы не знаете, какая ОС установлена на сервере, можете проверить это командой:

Вывод будет примерно таким:

Нас интересует поле NAME , в котором указано название дистрибутива.

Помимо Node.js нам понадобится утилита Screen, чтобы бот продолжал работать, когда мы отключимся от сервера. Также нужен менеджер пакетов npm для установки зависимостей.

для Ubuntu/Debian

Подождём завершения установки и проверим, что Node.js работает:

Если в ответе отобразилась версия установленного пакета, то всё прошло успешно.

Теперь перейдём в папку с файлом бота и установим зависимости:

Возможные ошибки при установке, и как их решить

При установке могут появиться ошибки вида:

Обычно это связано с тем, что у пользователя недостаточно прав для установки пакетов на сервере, либо предыдущий процесс установки завершён некорректно.

В первом случае необходимо убедиться, что вы подключились к серверу под именем суперпользователя root — при необходимости зайдите на сервер заново.

Во втором случае для решения проблемы нужно завершить процесс менеджера пакетов и удалить lock -файлы. Чтобы это сделать, запустите команды:

для Ubuntu/Debian

После этого попробуйте заново запустить установку.

Шаг 6. Запустить и проверить бота

Пришло время запустить бота. Для начала запустим утилиту Screen простой командой:

Перейдём в каталог с файлом бота:

После этого можем запустить бота:

Заходим в Telegram, проверяем бота:

Проверка работы бота

Отлично! Всё работает.

Теперь можно отключиться от сервера и закрыть окно PuTTY, бот продолжит работу.

Шаг 7. Обеспечить автоматический перезапуск бота

Большинство современных Linux-систем используют systemd для управления службами, поэтому следующая инструкция подойдёт для последних версий Ubuntu, Debian и CentOS.

Для начала отключим бота командой:

Нам понадобится создать собственную службу, для этого в каталоге /lib/systemd/system создадим файл:

В нашем случае это будет файл /lib/systemd/system/keksbot.service . В файл поместим следующий код:

Текст в некоторых строках необходимо отредактировать относительно вашего проекта. Разберём строки, на которые нужно обратить внимание.

В поле Description указывается описание службы. Вы можете указать в ней краткую информацию о боте.

Команда для запуска бота.

Её следует поменять, если имя скрипта вашего бота отличается от index.js . В таком случае нужно будет указать следующие значения:

Папка со скриптом, который мы запускаем. В нашем случае это /opt/keksbot/ .

Сохраняем файл. В примерах далее мы будем использовать имя службы keksbot — если вы указали другое имя, не забудьте поменять его. Для установки службы воспользуемся командами:

Теперь запустим бота командой:

Готово. Теперь бот будет автоматически запускаться при старте сервера или при возникновении ошибок. Можно проверить это, завершив процесс node:

social-media-smartphones-twitter

Основные принципы

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

1. Активность

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


Скриншот профиля @Sunneversets100, сделанный 28 августа, на котором видна точная дата создания аккаунта. Архивные копии профиля сделаны 13 января и 28 августа 2017 года. Видно изменение количества твитов за этот период.

@DFRLab считает подозрительными 72 твита в день (один твит каждые десять минут на протяжении 12 часов), а 144 твита в день — крайне подозрительными.

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

2. Анонимность

Второй важный признак — степень анонимности аккаунта. В целом, чем меньше в аккаунте личной информации, тем вероятнее, что это бот. Так, на аватарке @sunneversets100 — фотография собора во Флоренции, на фоне профиля — фрагмент графика роста населения, а его адрес и никнейм анонимны. Единственная уникальная черта — ссылка на американский политический агитационный комитет.

Другой пример — аккаунт @BlackManTrump, также отличающийся гиперактивностью: с 28 августа по 19 декабря 2016 года он опубликовал 89 944 твита (см. архив здесь), то есть в среднем 789 твитов в день.


Скриншот архива профиля @BlackManTrump. Обратите внимание на дату создания слева внизу и дату архивации справа вверху.

3. Усиление

Например, по состоянию на 28 августа, 200 последних твитов @Sunneversets100 являлись ретвитами, многие — ретвитами кремлевских СМИ RT и Sputnik:



Следует отметить, что аккаунт @BlackManTrump не проявлял активности с 14 ноября по 13 декабря 2016 года. Когда же он возобновил активность, она была гораздо меньшей, а гораздо больше твитов выглядели авторскими. Поэтому, если выражаться точнее, он вел себя как бот до середины ноября, а не является ботом сейчас.


Скриншот ленты @ProletStrivings от 28 августа; обратите внимание, что твиты просто воспроизводят заголовки по ссылкам без добавления комментариев. Архивная копия аккаунта создана 28 августа.

4. Низкая активность / высокие результаты


Профиль @KirstenKellog_, в котором приведено количество твитов и фолловеров и виден один пост. Архивная копия от 24 августа 2017 г.

Как видно на скриншоте выше, этот аккаунт отличался очень низкой активностью. Он запостил только 12 твитов; 11 из них уже удалены. У него было 76 фолловеров, а сам он не фолловил ни одного аккаунта.

Тем не менее, этот твит получил более 23 000 лайков и ретвитов:


Скриншот твита с количеством лайков и ретвитов. Архивная копия от 24 августа 2017 г.

На следующий день еще один, по-видимому, российский аккаунт опубликовал аналогичный атакующий твит, набравший более 12 000 ретвитов и лайков:


Следующая атака. Архивная копия от 25 августа 2017 г. К 28 августа количество ретвитов и лайков перевалило за 20 000.

Этот аккаунт такой же малоактивный: он опубликовал всего 6 твитов, начиная с 25 августа, и зафолловил 5 других аккаунтов:


Профиль второго атакующего аккаунта.

5. Одинаковый контент

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


Слева направо: Одинаковые ретвиты аккаунтами “Gail Harrison”, “voub19” и “Jabari Washington”, которые также вместе усиливали @KirstenKellog_.

Случается, что боты публикуют целые серии одинаковых твитов в одном и том же порядке. Три приведенных ниже аккаунта входят в одну и ту же антитрамповскую сеть, выявленную в июле:


Слева направо: одинаковые твиты в одном и том же порядке, опубликованные аккаунтамиy @CouldBeDelusion, @ProletStrivings и @FillingDCSwamp. Заметьте также, как в этих твитах слово в слово повторяются названия статей, которыми они делятся.

28 августа те же три аккаунта вновь опубликовали одинаковые твиты в одном и том же порядке; @ProletStrivings добавил к этому еще и ретвит:


Такие серии одинаковых постов — классические признаки автоматизации.

6. Клуб любителей силуэтов

Некоторые пользователи имеют силуэты на аватарках по совершенно невинным причинам; таким образом, присутствие силуэта само по себе не является признаком бота. Однако если список аккаунтов, ретвитнувших твит, выглядит так…


Скриншот списка ретвитов твита @AtlanticCouncil, пережившего 28 августа особо очевидное и топорное нашествие ботов.

…или же если страница фолловеров аккаунта напоминает посиделки Клуба любителей силуэтов…


Скриншот страницы фолловеров финской журналистки @JessikkaAro после внезапного наплыва ботов 28 августа.

…ясно, что имеет место активность ботов.

7. Украденные или одинаковые фото профиля



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



8. Что в имени тебе.


Названия аккаунтов некоторых ботов, ретвитнувших твит @KirstenKellog_. Заметьте, что среди них есть одно настоящее имя — @ToddLeal3. О нем речь пойдет ниже.

Названия некоторых других аккаунтов выглядят как имена, но не соответствуют отображаемым именам:


Слева направо: “Sherilyn Matthews”, “Abigayle Simmons”и “Dorothy Potter” с названиями аккаунтов “NicoleMcdonal”, “Monique Grieze” и “Marina”соответственно.

Другие боты имеют типично мужские имена, но при этом женские аватарки (такие встречаются гораздо чаще, чем женские имена с мужскими аватарками; возможно, для мужской целевой аудитории)…


Еще три аккаунта в том же ботнете: “Todd Leal”, “James Reese” и “Tom Mondy”, архивные копии от 24 и 28 августа 2017.

или же мужские названия, но женские имена и аватарки…


Слева направо — “Irma Nicholson”, “Poppy Townsend” и “Mary Shaw”, согласно названиям аккаунтов — David Nguyen, Adrian Ramirez и Adam Garner.

… или что-то совершенно иное.


“Erik Young,” женщина, которая любит Иисуса, из того же ботнета.

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

9. Вавилонский Твиттер

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





суахили (если верить Google Translate)…






В реальности любой человек, владеющий всеми этими языками, наверняка может заниматься чем-то интереснее, чем продвижение видео с YouTube.

10. Коммерческий контент

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

Хороший пример — любопытный ботнет, ретвитивший политический твит от аккаунта @every1bets, обычно посвященного азартным играм.


Однако значительная часть их твитов носили рекламный характер.


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

11. Программы автоматизации

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


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

12. Ретвиты и лайки

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


В этом примере разница между количеством ретвитов и лайков составляет всего 11, то есть меньше 0,1%. Твит ретвитили и лайкали одни и те же аккаунты в одном и том же порядке в одно и то же время. Учитывая, что всего ретвитили и лайкали около 13 000 пользователей, такое совпадение практически невозможно. Это говорит о работе скоординированной сети, все аккаунты которой запрограммированы лайкать и ретвитить одну и ту же атаку.

Вывод

Боты стали неотъемлемой частью Твиттера. Многие из них достаточно безвредны, а вредных можно распознать по основным характеристикам.

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

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

Бен Ниммо — старший научный сотрудник по информационной безопасности в Лаборатории цифровой криминалистики Атлантического совета (@DFRLab). Его аккаунт — точно не бот.

Как распознать бота среди своих фолловеров? Обратите внимание на:

Так выглядит типичный бот в Instagram (обратите внимание на количество подписок)

Конечно, аккаунт, в котором 20 000 подписчиков (пусть половина из них и накручена) на первый взгляд выглядит привлекательнее, чем тот, на котором фолловеров всего 5 000. Но при этом именно у второго из-за живой аудитории шансов реально зарабатывать – больше.

Удалять ботов можно вручную (подходит для микроаккаунтов до 1000-2000 подписчиков) и автоматически (с помощью специальных сервисов). О последних и поговорим ниже.

Как удалить ботов в Instagram

Существует огромное количество сервисов для борьбы с ботами в Instagram. Я выбрала самые простые, но при этом действенные и проверила на себе (точнее, своих аккаунтах). Работает!

    – это специализированный сервис для анализа подписной массы в Instagram. С его помощью можно проанализировать качество подписчиков, их пол, возраст, географию и подлинность. Также площадка позволяет удалять фейковые аккаунты.

Сервис InstaHero анализирует аудиторию по разным параметрам и выбирает фейковые аккаунты

Сервис платный. Анализ страницы обойдется в 99 рублей, а удаление ботов и мусора из подписчиков – от 299 рублей за 1 неделю.

    – это сервис для комплексной работы с аккаунтом в Instagram. Одна из возможностей – удаление ботов по заданным параметрам.

Сам Instaplus ботов не ищет. Для этого можно использовать, например, Spam Guard. Пройти полную проверку и получить список ботов тут можно всего за 1 рубль.

А дальше этот список добавляется в Instaplus и настраивается удаление фейковых аккаунтов.

Затем выбрать блокировку по списку.

И загрузить список ботов в личный Block-list.

  1. Автоматический вариант – программа AntiDogs. Она производит проверку аккаунта и предлагает автоматическую чистку за 299 рублей за неограниченный доступ к ресурсу.

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

У парсера широкий спектр возможностей, вплоть до массовой отписки от всех сообществ

Яркий пример – аккаунт моего знакомого. С виду чистый фейк, правда (нет фото и записей на странице)? Но я точно знаю, что за ним – реальный человек. Просто не любит быть на виду и не хочет показывать себя в соцсетях.

  • парсер TargetHunter;
  • программа AutoVK;
  • расширение для Chrome Tool 42.

Как удалить ботов в Facebook

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

Но если вы хотите быть уверенным в корректной работе встроенных алгоритмов, можно установить специальное расширение для браузера Google Chrome. Для этого нужно найти магазин Chrome Enterprise и установить расширение Mass Friends Deleter.

Искать фейковые аккаунты придется вручную. Обычно они расположены в самом конце списка с левой стороны экрана в приложении. При клике на фейковый аккаунт он автоматически добавляется в правую часть экрана. Я выбрала аккаунты со странными никнеймами и те, что написаны на арабском языке – вряд ли это реальные люди или мои потенциальные друзья/клиенты.

В заключение

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

SMM – сложный и объемный механизм, которым нужно заниматься комплексно. Если времени и знаний у вас не хватает, обратитесь к профессионалам. Это, как минимум, сэкономит вам время и нервы (хотя не такой уж это и минимум, как показывает практика).

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

Благодарю заранее за помощь, если кто поможет.

2 ответа 2



Дополню ответ sigalgleb, в качестве параметра можно передавать анонимную функцию. В Python это lambda. Поищи да поймёшь о чем я.

И получится и тебя что-то такое: @bot.on.message(text=lambda x: hello_messages)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками python вконтакте bot или задайте свой вопрос.

Похожие

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

дизайн сайта / логотип © 2022 Stack Exchange Inc; материалы пользователей предоставляются на условиях лицензии cc by-sa. rev 2022.1.28.41306


Подготовка к работе с ботом:

1) Готовый скрипт к написанию команд бота. Можно использовать уже использованный, главное не запутаться куда нужно прописывать новые команды.
2) VK_API - варианта два: можно использовать уже имеющийся с прошлых статей. Либо качаем новую версию, важно если вы собираетесь делать персональные настройки беседы, а также для команд из след. статьи (для команды Погода (не обязательно), перевод, кубик 1-6 ставка) kotoff_net.zip
В этом архиве есть все нужные файлы. Берите всё что вам нужно на здоровье )
3) Желание сотворить хоть что-то и следовать инструкциям

P.S. Давненько я ничего не писал. Постараюсь не испортить эту статью и сделать всё по красоте, а также побыстрее выпустить 3 часть

Отлично, теперь давайте вернемся к проверки на обращение к боту.. Ой А ведь можно было немного по другому написать команду, чем мы и займемся. А переменные наши еще пригодятся в таком виде
Давайте заменим if(in_array($cmd, ['бот', 'bot'])) < на
if(in_array(mb_strtolower($messages[0]), ['бот', 'bot'])) < Теперь в теле этой проверки просто нужно отредактировать $args, $cmdА теперь добавим интересную вещь. Если вам нужно чтобы бот отвечал только тогда, когда обратились к нему, то после закрывающей скобки добавляемВ итоге у меня получился такой код:


$chatInfo = $this->request('messages.getConversationsById', ['peer_ids' => $peer_id, 'extended' => 0]);
Запрос к вк о получении данных о беседе

if($id == $chatInfo['items'][0]['chat_settings']['owner_id'] || in_array($id, $chatInfo['items'][0]['chat_settings']['admin_ids'])
Произвели проверку на совпадение id пользователя с id администраторов и создателя
Если проверка прошла, то вернули значение true, а иначе false

Объясняю как теперь это использовать в скрипте бота. Вернемся к bot.php (или как у вас называется файл бота)
После проверки на команду 'Созвать всех' добавляем проверку if где обратимся к созданной нами функции

Таким образом у нас получиться:

Также нужно отметить, что для следующей команды нужен vk_api.php который находится в архиве!!

Добавим
Теперь в ином случаем проверим на регистрацию настроек беседы. После закрывающей скобки
Полный код

Чтобы сделать беседам какие-то свои настройки, то заходим в vk_api.php, ищем функцию registrationChat и в редактируем регистрацию в записи для бд.
Теперь нужно сделать смену названия беседы в настройках, если его изменили в беседе
Теперь в скрипте бота после регистрации (и проверки на админку) мы добавим проверку на измену названия
Таким образом мы узнали о действии в беседе, ВАЖНО! в переменных у вас должен быть $chat_act = $data->object->action; А теперь давайте получим настройки для беседы и заменим название беседы на новое. Я использую RedBeanPHP, а вы можете использовать что-то другое, однако в статье всё работает через (связанное с бд) rb.php
В теле создадим новую переменную с настройками беседы
В базе название записано в столбце 'title', давайте же получим пришедшее название и заменим его
Далее просто можно уведомить, что новое название было записано в бд
Итоговый код:

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

Читайте также: