Разговорный бот для Вконтакте на PHP

    Интро. Лирика


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

    База ответов


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

    Немного раньше я познакомился с одним интересным проектом от компании «Наносемантика», которая занимается подобными задачами и создает, вроде, комерческих ботов-саппортов и прочее. Этот проект — iii.ru. На сайте проекта можно создать бота и получить его flash-версию для вставки на сайте. API у них не было, пришлось декомпилировать swf.

    Закриптовано?!


    Первое, что пришло ко мне в голову, когда я открыл декомпилированный код SWF файла — где теперь найти точку вывода ответов и каким образом это все перевернуть в сторону своей задумки. Удивлению не было предела, когда я увидел, что все запросы и ответы шифруются с помощью XOR + Base64, а ключ для расшифровки был в начале кода. Зачем тогда криптовать?

    Техническая часть вопроса


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

    Было создано следующие файлы:
    — index.php (работает как клиент, обновляющий с помощью jquery файл с подгрузкой пришедших сообщений и последующим ответом)
    — autoload.php (собственно, тот файл, который принимает и отвечает)
    — showmeid.php (файл, который создает новый ID чата, если собеседник впервые общается с ботом)
    — config.php (коннект к базе данных с клиентами бота)
    — classes.php (классы для работы с ботом)

    Установка


    1. Импортируйте dump.sql в свою базу данных
    2. Получите «долгоиграющий» access token для работы с VK API с помощью ссылки — получить token
    3. Переименуйте config.sample.php в config.php предварительно изменив данные для коннекта к базе данных
    4. Пользуйтесь запустив index.php

    Итак, прошу знакомиться — Лариса Чернышова

    А также исходники на GitHub.

    UPD: Если бот не отвечает — значит блокируется отправка сообщения просьбой ввести капчу.

    За подробностями и вопросами — добро пожаловать ко мне в блог
    Поделиться публикацией
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама
    Комментарии 40
    • –2
      Социальные сети созданы для людей, а не для ботов. Но кого это волнует, правильно?

      Да, и еще, постинг через API, скорее, наоборот будет указывать на «нечеловеческую» природу аккаунта, но утверждать что у ВК за алгоритмы не возмусь.
      • +1
        Шаблоны, шаблоны повсюду.
        Социальные сети созданы для общения. А кто там будет общаться человек, кот, киборг или еще кто-то — это не важно, имхо.
        • +2
          Ага, а е-почта — для передачи сообщений. А спам там или важные новости- пофигу.
        • 0
          В любом случае бот эмулирует поведение человека для того, чтобы собеседник чувствовал, что общается с человеком.
          Администрация Вконтакте — это последнее о чем я думал. :)
          Если API позволяет что-то делать, то почему бы это не сделать? :)
          • +3
            Социальные сети созданы для общения.

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

            Да, значение слова «социальный» ни на какие мысли не наталкивает?

            В любом случае бот эмулирует поведение человека для того, чтобы собеседник чувствовал, что общается с человеком.


            Лол, вы нарушили правило 1.1 платформы разработчиков. Не говоря уже о нескольких подпунктах 6.3 пользовательского соглашения.

            Я понимаю, что их никто не читает, но от участия в человеческой многоножке это не освобождает.

            И да, пусть я зануда, но не отрицаю того факта, что функционал вашего бота никому не вредит, по большому счету. Вот только все мы прекрасно понимаем для чего они используются на самом деле. Отсюда и подобная реакция.
          • +1
            Но ведь клиенты под те же iOS/Android используют VK API, не?
            • 0
              Используют, вот только по токену можно понять официальное приложение или нет.
          • +2
            Если допилить общение в группах, то был бы полезный бот-автоFAQер, а то одни и те же вопросы задалбывают.
            • +1
              Это делается еще проще.
              API VK позволяет многие вещи делать.
              • +4
                Так допилите и переходите на светлую сторону силы )
            • 0
              image
              • +1
                Да, есть такая проблема.
                Почему-то внезапно начала по три раза отвечать на сообщения.
                • +1
                  Должно было быть как то так — Я не могут ответить на этот вопрос, мне нужно уточнить в офис (с)
                • –1
                  В свое время я посадил фёрби (такой электронный чебурашка), напротив «кота повторюшки», и мои дочери завороженно наблюдали за их общением. (идея не моя, я лишь повторил эксперимент).
                  А вам, в код бота нужно еще добавить таймауты, иначе тысячи ботов, общающихся между собой со скоростью света, повалят вконтакт.
                  • 0
                    Насколько я понимаю на гитхабе просто тонкий клиент, и вся логика находится на iii.ru?
                    Если так, то я бы не стал делится «догоиграющим» токеном с пермишинами на диалоги.
                    • 0
                      Совершенно верно.
                      Но долгоиграющие токены нужны при большом количестве анкет, чтобы не менять их каждый раз, когда время жизни токена заканчивается.
                      • 0
                        Выкладывайте всего бота. Зачем скрывать всю логику?
                        • 0
                          Так это не его бот. Он просто написал гейт к существующему (чужому) проекту.
                          • 0
                            Логика элементарна. Следующая статья будет о логике.
                            А пока все есть в документации на iii.ru и форумах
                      • +2
                        Сдулся бот. Недолго музыка играла. Недолго фраер танцевал.
                      • +1
                        github.com/iillexial/vk-chat-bot тоже такой фигней страдал, правда у меня намного проще, стоял на кроне
                        • –2
                          Очень понравилась ваша реализация. Форкнул.
                        • 0
                          А в чём смысл этого?
                          • –3
                            Эмулировать активность аккаунтов. Добавить паттерны ответов для ботов-саппортов. Собственно это и все.
                          • +1
                            У школьников каникулы?
                            • –3
                              Классная тема, коллеги! Молодцы! Ну и раз уже пошла такая пьянка про боты и ВКонтакте, вот мои пять копеек: эту группу ведёт мой бот. Автоматически. Скоро напишу об этом статью, а пока что можно почитать тут. Спасибо!
                              • 0
                                Ведение группы по существующей базе — это же простая задача, зачем выносить в отдельную статью?

                                Просто сам писал такое, посты случайно выбирались из БД, сам скрипт запускался по крону.

                                Или у вас что-то новое?)
                                • 0
                                  Ха, так ведь сайт, с которого робот помещает новости в группу, составляет не человек. А робот. Робот парсит интернет, собирает новости и публикует их и на сайт, и в паблик. А вы думали, что сайт составляет редактор, а робот только зеркалирует.
                                  • 0
                                    А что, парсер сложно написать?
                                  • 0
                                    Так и парсер ведь не такая уж и проблема написать. К тому же, если у некоторых источников есть RSS-лента, так вообще сказка получается.

                                    Я видел только паблик. Теперь увидел и сайт. И не сказал бы, что его человек ведет. Видно, что парсится
                              • 0
                                Все прелестно, просьба только немного поправить или добавить в конфиг адрес сайта, на котором будет висеть бот, а то у меня Евгений отвечал что он Лариса. Продублировал в гитхабе на всякий случай
                                • А что не так? Вдруг Евгений определился наконец.
                                  Как сестра Вачовски
                                  • 0
                                    Евгений уже разобрался с гендерной самоидентификацией, но теперь проблема куда серьезнее — он считает себя роботом, хоть и Евгением
                                • 0
                                  А что за отправка данных на bot.mew.su?
                                  • 0
                                    Отправляет написанный текст и получает ответ.
                                    Желательно добавить туда домен на котором хостится ваш бот.
                                    • 0
                                      Дык там по всему коду, хардкодом отсылка на этот сайт.
                                  • 0
                                    Ларису заблокировали
                                    • +1
                                      Обернул все в класс gist.github.com/misterx/48fb01a574936aa19b63, запускается с консоли.

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