Как сделать проверку на бота
В предыдущей статье мы рассказали, как создать простого бота на Node.js, однако он работал только на локальном компьютере. Эта статья о том, как загрузить бота на сервер, запустить его и проверить, что всё работает.
Шаг 1. Выбрать хостинг
Как правило, на shared-хостинге отсутствует поддержка Node.js, поэтому нам понадобится как минимум виртуальный сервер. Существуют сервисы, предлагающие VPS бесплатно, но с заметными ограничениями: например на количество трафика или нагрузку на сервер. Можно выделить несколько известных зарубежных провайдеров (но стоит отметить, что для новичков они могут оказаться сложными):
- Google Cloud
- Oracle Cloud
- Amazon Web Services
Преимущество платных VPS в более высоких лимитах или их отсутствии, а также в гарантии стабильной работы сервера. Вместе с этим вы получаете активную поддержку и всегда можете рассчитывать на помощь хостинг-провайдера, если возникнут проблемы.
- Прогнозируемая нагрузка — зависит от сложности вашего бота и количества запросов к нему.
- Количество оперативной памяти — это зависит от многих факторов, как, например, уровень оптимизации кода и общий масштаб вашего проекта.
Так как наш бот использует только одну основную библиотеку и состоит из нескольких строк кода, мы выбираем самый младший тариф — Cloud-0. В будущем, если возникнет необходимость, можно перейти на более дорогой тариф.
Шаг 2. Заказать хостинг
После заказа и оплаты дождёмся настройки сервера:
Шаг 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 уже указан по умолчанию:
Вводим 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:
Основные принципы
Мы же изучаем ботов, прикидывающихся людьми и продвигающих политическую повестку.
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). Его аккаунт — точно не бот.
Как распознать бота среди своих фолловеров? Обратите внимание на:
Конечно, аккаунт, в котором 20 000 подписчиков (пусть половина из них и накручена) на первый взгляд выглядит привлекательнее, чем тот, на котором фолловеров всего 5 000. Но при этом именно у второго из-за живой аудитории шансов реально зарабатывать – больше.
Удалять ботов можно вручную (подходит для микроаккаунтов до 1000-2000 подписчиков) и автоматически (с помощью специальных сервисов). О последних и поговорим ниже.
Как удалить ботов в Instagram
Существует огромное количество сервисов для борьбы с ботами в Instagram. Я выбрала самые простые, но при этом действенные и проверила на себе (точнее, своих аккаунтах). Работает!
-
– это специализированный сервис для анализа подписной массы в Instagram. С его помощью можно проанализировать качество подписчиков, их пол, возраст, географию и подлинность. Также площадка позволяет удалять фейковые аккаунты.
Сервис платный. Анализ страницы обойдется в 99 рублей, а удаление ботов и мусора из подписчиков – от 299 рублей за 1 неделю.
-
– это сервис для комплексной работы с аккаунтом в Instagram. Одна из возможностей – удаление ботов по заданным параметрам.
Сам Instaplus ботов не ищет. Для этого можно использовать, например, Spam Guard. Пройти полную проверку и получить список ботов тут можно всего за 1 рубль.
А дальше этот список добавляется в Instaplus и настраивается удаление фейковых аккаунтов.
Затем выбрать блокировку по списку.
И загрузить список ботов в личный Block-list.
- Автоматический вариант – программа 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', давайте же получим пришедшее название и заменим его
Далее просто можно уведомить, что новое название было записано в бд
Итоговый код:
В след. части полезных функций:
- Аккаунты пользователей с балансом для игр и перевод денег другим пользователям
- Парочка игр на коины (валюта)
- Перевод коинов
- Команды: онлайн, погода
Читайте также: