November 30, 2023

Автоматическое управление Twitter фермой софтом

Автор статьи - https://t.me/easypeoff
Софт - https://github.com/3asyPe/twitter-automation

В этой статье мы разбирали как создавать ферму и управлять ей руками, тут разберем как автоматизировать ее управление.

Для этого я буду использовать мой бесплатный софт

Для человека не знакомого с кодом, настройка будет довольно тяжелой, но значительно упростит вам жизнь :)

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

❗️Пользуйтесь софтом очень аккуратно, при слишком частых и повторяющихся действиях возможны массовые баны аккаунтов

Навигация по гайду

1 - Возможности софта

2 - Установка

3 - Общие настройки

4 - Модуль подписок

5 - Модуль отписок

6 - Модуль твитов

7 - Модуль лайков

8 - Модуль ретвитов

9 - Подписка на меня (Опционально)


Возможности софта

Следить за обновлениями можно здесь

На данный момент софт может:

1 - Подписки

  • Подписать аккаунты на конкретного пользователя по @username
  • Подписать аккаунты на пользователей из файла, состоящего из списка @username
  • Подписать аккаунты между собой

2 - Отписки

  • Отписать аккаунты от конкретного пользователя по @username
  • Отписать аккаунты от пользователей из файла, состоящего из списка @username

3 - Твиты

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

4 - Лайки

  • Поставить лайк рандомным постам из файла

5 - Ретвиты

  • Ретвитнуть рандомные посты из файла

Также он поддерживает:

  • Асинхронный запуск (очень много аккаунтов сразу)
  • Прокси под каждый аккаунт
  • UserAgent (индетификатор браузера) под каждый аккаунт
  • Если аккаунт банится, то софт об этом напишет и запишет в файл
  • Все нужные задержки между запросами и попытками повторов


Установка

1 - Установите Python 3.11 или выше

2 - Скачайте проект:

С помощью git:

git clone git@github.com:3asyPe/twitter-automation.git

Или путем обычного скачивания zip:

Перейдите в репозиторий софта -> зеленая кнопка code -> Download ZIP

3 - Перейти в директорию проекта в консоли (PowerShell для пользователей windows)

cd <путь куда вы скачали проект>

Пример для Windows:

cd D:/twitter-automation

Пример для Mac/Linux:

cd ~/twitter-automation

4 - Установите зависимости

Способ 1

- Создать виртуальное окружение

python -m venv venv

- Активировать виртуальное окружение (нужно будет делать каждый раз перед запуском софта)

Для пользователей Windows:

venv/Scripts/activate

Для пользователей Mac и linux:

source venv/Scripts/activate

- Установить зависимости

pip install -r requirements.txt

Способ 2

- Установить poetry

- Активировать виртуальное окружение (нужно будет делать каждый раз перед запуском софта)

poetry shell

- Установить зависимости

poetry install


Общие настройки

config.py

Файл с общими настройками скрипта.

PATH_TO_WRITE_SUSPENDED_ACCOUNTS - путь к файлу, куда записывать suspended аккаунты

PATH_TO_WRITE_LOCKED_ACCOUNTS - путь к файлу, куда записывать locked аккаунты

PATH_TO_WRITE_INVALID_TOKENS - путь к файлу, куда записывать аккаунты с не валидным токеном авторизации

THREADS - количество потоков (сколько аккаунтов делать одновременно)

MIN_RETRIES - минимальное количество попыток повторить запрос при ошибке

MAX_RETRIES - максимальное количество попыток повторить запрос при ошибке

RANDOMIZE_ACCOUNTS - Если True, то перемешать аккаунты, если False, оставить в той последовательности, как они записаны

MIN_RETRY_DELAY - минимальная задержка между попытками повторных запросов

MAX_RETRY_DELAY - максимальная задержка между попытками повторных запросов

MIN_SLEEP_BEFORE_NEXT_ACCOUNT - сколько минимально ждать перед запуском следующего аккаунта в текущем потоке (рекомендуется ставить как можно больше)

MAX_SLEEP_BEFORE_NEXT_ACCOUNT - сколько максимально ждать перед запуском следующего аккаунта в текущем потоке (рекомендуется ставить как можно больше)

MIN_SLEEP_BEFORE_NEXT_REQUEST - сколько минимально ждать перед следующим запросом на текущем аккаунте (рекомендуется ставить как можно больше)

MAX_SLEEP_BEFORE_NEXT_REQUEST - сколько максимально ждать перед следующим запросом на текущем аккаунте (рекомендуется ставить как можно больше)

data/accounts.txt

Файл с auth_token'ами от аккаунтов. Каждый токен с новой строки

Как получить токен от аккаунта

1) Ставим расширение EditThisCookie

2) Заходим в твиттер

3) Нажимаем на расширение и копируем значение auth_token

data/proxies.txt

Файл с прокси. Каждая прокси с новой строки по примеру из data/proxies.example.txt

data/user_agent.txt

Файл с идентификаторами браузера (user agent)

Как получить user_agent

Гуглите свой user_agent запросом, например my user agent

Или

Гуглите разные существующие user_agent'ы, и каждый раз исплользуете их для конкретных аккаунтов (как с прокси, 1 user_agent - 1 аккаунт)

module_settings.py

Файл для настройки конкретных модулей

Модуль подписок

Модуль отписок

Модуль твитов


Модуль подписок

Модуль для массовых подписок. Существует 3 режима работы:

1 - Подписка на конкретного пользователя

Пример работы:

Вы запускаете пачку аккаунтов -> все аккаунты подписываются на введенного вами в настройках пользователя

2 - Подписка на пользователей из файла

Пример работы:

Вы вводите @username'ы пользователей в файл -> запускаете пачку аккаунтов -> аккаунты подписываются на 1 или нескольких пользователей (в зависимости от настроек) из файла

3 - Подписка аккаунтов между собой

Пример работы:

Вы запускаете пачку аккаунтов -> аккаунт подписываются на 1 или несколько аккаунтов из запущенных вами (в зависимости от настроек)


Настраивается в module_settings.py в переменной MODULES_SETTINGS под ключом TwitterModulesNames.FOLLOW

mode - На выбор 3 варианта:

  • TwitterFollowModes.FOLLOW_ONE_USER - подписаться на одного пользователя по @username
  • TwitterFollowModes.FOLLOW_USERS_FROM_FILE - подписаться на пользователей из файла, состоящего из списка @username'ов
  • TwitterFollowModes.FOLLOW_ACCOUNTS_BETWEEN_EACH_OTHER - подписать запущенные аккаунты между собой

username - если у вас выбран mode = TwitterFollowModes.FOLLOW_ONE_USER, то здесь указывается @username пользователя, на который нужно подписать аккаунты

users_file - если у вас выбран mode = TwitterFollowModes.FOLLOW_USERS_FROM_FILE, то здесь указывается путь к файлу, состоящего из @username'ов пользователей, на которые нужно подписать аккаунты. Каждый @username с новой строки

min_number_of_accounts - если у вас выбран mode = TwitterFollowModes.FOLLOW_USERS_FROM_FILE или mode = TwitterFollowModes.FOLLOW_ACCOUNTS_BETWEEN_EACH_OTHER, то здесь указывается минимальное количество пользователей, на которое нужно подписать ваши аккаунты

max_number_of_accounts - если у вас выбран mode = TwitterFollowModes.FOLLOW_USERS_FROM_FILE или mode = TwitterFollowModes.FOLLOW_ACCOUNTS_BETWEEN_EACH_OTHER, то здесь указывается максимальное количество пользователей, на которое нужно подписать ваши аккаунты

all_accounts - если у вас выбран mode = TwitterFollowModes.FOLLOW_USERS_FROM_FILE или mode = TwitterFollowModes.FOLLOW_ACCOUNTS_BETWEEN_EACH_OTHER, то если стоит значение True, софт подпишет аккаунты на всех пользователей, иначе только на рандомное значение от min_number_of_accounts до max_number_of_accounts


Модуль отписок

Модуль для массовых отписок. Существует 2 режима работы:

1 - Отписка от конкретного пользователя

Пример работы:

Вы запускаете пачку аккаунтов -> все аккаунты отписываются от введенного вами в настройках пользователя

2 - Отписка от пользователей из файла

Пример работы:

Вы вводите @username'ы пользователей в файл -> запускаете пачку аккаунтов -> аккаунты отписываются от 1 или нескольких пользователей (в зависимости от настроек) из файла


Настраивается в module_settings.py в переменной MODULES_SETTINGS под ключом TwitterModulesNames.UNFOLLOW

mode - На выбор 2 варианта:

  • TwitterUnfollowModes.UNFOLLOW_ONE_USER - отписаться от одного пользователя по @username
  • TwitterUnfollowModes.UNFOLLOW_USERS_FROM_FILE - отписаться от пользователей из файла, состоящего из списка @username'ов

username - если у вас выбран mode = TwitterUnfollowModes.UNFOLLOW_ONE_USER, то здесь указывается @username пользователя, от которых нужно отписать ваши аккаунты

users_file - если у вас выбран mode = TwitterUnfollowModes.UNFOLLOW_USERS_FROM_FILE, то здесь указывается путь к файлу, состоящего из @username'ов пользователей, от которых нужно отписать ваши аккаунты. Каждый @username с новой строки

min_number_of_accounts - если у вас выбран mode = TwitterUnfollowModes.UNFOLLOW_USERS_FROM_FILE, то здесь указывается минимальное количество пользователей, от которых нужно отписать ваши аккаунты

max_number_of_accounts - если у вас выбран mode = TwitterUnfollowModes.UNFOLLOW_USERS_FROM_FILE, то здесь указывается максимальное количество пользователей, от которых нужно отписать ваши аккаунты

all_accounts - если у вас выбран mode = TwitterUnfollowModes.UNFOLLOW_USERS_FROM_FILE, то если стоит значение True, софт отпишет аккаунты от всех пользователей, иначе только на рандомное значение от min_number_of_accounts до max_number_of_accounts


Модуль твитов

Модуль для выставления публикаций. Существует 2 режима работы:

1 - Твитнуть конкретный твит на конкретном аккаунте

Пример работы:

Вы запускаете пачку акаунтов -> как только очередь доходит до какого-то из них, выведется лог с просьбой ввести твит

2 - Твитнуть рандомный твит из заранее написанных в файле. Рекомендуется выставить как можно больше задержку между запросами (минимум несколько часов) и не выставлять слишком много твитов, чтобы не твитить слишком часто с одного аккаунта, иначе шанс бана крайне велик.

Пример работы:

Вы просите ChatGPT сгеренировать вам много различных твитов (например связанных с темой крипты) -> вводите их в файл по примеру data/tweets.example.json -> запускаете пачку акаунтов -> софт постит рандомный твит или несколько (в зависимости от настроек) -> (опционально, в зависимости от настроек) удаляет выложенный текст твита из файла


Настраивается в module_settings.py в переменной MODULES_SETTINGS под ключом TwitterModulesNames.TWEET

mode - На выбор 2 варианта:

  • TweetModes.TWEET_FROM_INPUT - написать твит с каждого аккаунта вписывая по очереди в консоль (более подробное описание выше)
  • TwitterTweetModes.TWEET_TWEETS_FROM_FILE - написать рандомные твиты из файла на каждом из аккаунтов

Все настройки дальше относятся к mode = TwitterTweetModes.TWEET_TWEETS_FROM_FILE:

min_number_of_tweets - наименьшее количество твитов на один аккаунт

max_number_of_tweets - наибольшее количество твитов на один аккаунт

all_tweets - если True, твитнуть все твиты из файла, иначе рандомное количество от min_number_of_tweets до max_number_of_tweets

tweets_file - путь до файла с твитами. Файл должен быть в json формате по примеру data/tweets.example.json

post_only_unique_tweets_on_all_accounts - если True, то софт не будет твитить уже выложенный твит на текущем или другом аккаунте

delete_written_tweets_from_file - если True и post_only_unique_tweets_on_all_accounts = True, то после завершения работы скрипта удалит из файла с твитами уже выложенные тексты


Модуль лайков

Модуль для лайка публикаций. Режим работы:

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

В файле должны быть TweetID по примеру data/likes.example.txt

Где взять TweetID

1) Перейти на нужный твит

2) Взять id из ссылки.

Пример твита:
https://twitter.com/dopex_io/status/1727334269973143901

Где id = 1727334269973143901


Настраивается в module_settings.py в переменной MODULES_SETTINGS под ключом TwitterModulesNames.LIKE

mode - На данный момент единственно возможное значение:

  • TwitterLikeModes.LIKE_TWEETS_FROM_FILE - лайкнуть рандомные твиты из файла на каждом из аккаунтов

min_number_of_likes - наименьшее количество лайков на твиты на один аккаунт

max_number_of_likes - наибольшее количество лайков на твиты на один аккаунт

all_tweets - если True, лайкнуть все твиты из файла, иначе рандомное количество от min_number_of_likes до max_number_of_tweets

tweets_file - путь до файла с твитами, которые нужно лайкнуть. Файл должен быть в txt формате и состоять из TweetID по примеру data/likes.example.json.


Модуль ретвитов

Модуль для ретвита публикаций. Режим работы:

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

В файле должны быть TweetID по примеру data/retweets.example.txt

Где взять TweetID

1) Перейти на нужный твит

2) Взять id из ссылки.

Пример твита:
https://twitter.com/dopex_io/status/1727334269973143901

Где id = 1727334269973143901


Настраивается в module_settings.py в переменной MODULES_SETTINGS под ключом TwitterModulesNames.RETWEET

mode - На данный момент единственно возможное значение:

  • TwitterRetweetModes.RETWEET_TWEETS_FROM_FILE - ретвитнуть рандомную публикацию из файла на каждом из аккаунтов

min_number_of_retweets - наименьшее количество ретвитов на один аккаунт

max_number_of_retweets - наибольшее количество ретвитов на один аккаунт

all_tweets - если True, ретвитнуть все публикации из файла, иначе рандомное количество от min_number_of_retweets до max_number_of_retweets

tweets_file - путь до файла с твитами, которые нужно ретвитнуть. Файл должен быть в txt формате и состоять из TweetID по примеру data/retweets.example.json.


Мои контакты

Telegram канал - тут я пишу про новые статьи, новости и про выход нового софта

GitHub - тут я пишу код