Бот сделан для обхода аунтентификации сайта роблокса, и для последующей покупки Робуксов, ничего больше. Не перечисление родуксов на аккаунт в тг боте, только для покупки геймпассов, и ничего больше.
Но должна выдерживать нагрузку в 20 RPS в секунду. Что сделать крайне трудно, с учетом отсутвия асинхронных вебдрайверов для браузеров. Обычный запрос занимает 6 секунд со средним интернетом. и 2 секунды на сервере.
Для коммуникации с этим скриптом нужен реббитмкью. Значение канала для доступа:
queue_name="url_queue"
exchange_key="url"
routing_key="url_queue"
exchange_type="direct"
Схему которую вы должны отправить в очередь "url_queue":
{
"url": "<your_url_here>",
"price": 99999
}
Таблица в БД с именем указанным в переменной окружении - db_tokens_table
должна иметь следующую
структуру, если её нету то скрипт создаст её сам:
CREATE TABLE IF NOT EXISTS {model_name_here} (
id SERIAL PRIMARY KEY,
token TEXT,
is_active BOOLEAN DEFAULT true
);
Также имеется второя очередь которая отправляет отправителю Ошибку транзакции, если робуксы не возможно купить, таким образом предовращая ошибочное списание средств. Спецификация очереди, отправляется один тип данных - ReturnSignal:
{
"errors": [], // тип ошибок - list<SendError>
"status": 200, // возвращается несколько состояния, см. app/schemas.py StatusCodes
"info": "" // дополнительная информация
}
SendError
:
{
"name": "str", // имя исключения
"info": "" // Информация от исключения
}
Также имя очереди, и роутинг кей теже как и в переменной окружения queue_name
,
но добовляется "_return" если не указано send_queue_name
.
Статус Коды:
- 200 - Успех
- 500 - Внутренная проблема
- 401 - Геймпасс уже куплен
- 400 - не правильные данные
- 402 - Не имеется доступных токенов которые могут купить этот геймпасс.
- 403 - Неправильная цена
-
Если у вас выходит такая ошибка как
RETURN CHANNEL UNEXPECTEDLY CLOSED BY PEER, TRY TO INCREASE HEARTBEAT
То попробуйте добавить в queue_dsn параметр соединения какheartbeat
и установите её значение больше 30 секунд, так как обработка сообщения может занять даже 20 секунд при медленном интернет подключении(ну или при баге). -
При мультитрединг режиме могут возникнуть ошибки при закрытии, игнорируйте.
-
Также игнорируйте warning-и при однопоточном режиме.
Сперва на перво надо запускать это все в wsl. или на сервере со linux. Потом установить postgres, и rabbitmq. Потом надо установить headless браузер. По инструкции ниже.
$ sudo apt-get update
$ sudo apt-get install -y unzip openjdk-8-jre-headless xvfb libxi6 libgconf-2-4 python3.10 python3.10-venv
После установки. Переходим в режим sudo
с помощью sudo -i
# Установка Headless хрома
$ sudo curl -sS -o - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add
$ sudo echo "deb http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list
$ sudo apt-get -y update
$ sudo apt-get -y install google-chrome-stable
$ wget -N https://chromedriver.storage.googleapis.com/79.0.3945.36/chromedriver_linux64.zip -P ~/
$ unzip ~/chromedriver_linux64.zip -d ~/
$ rm ~/chromedriver_linux64.zip
$ sudo mv -f ~/chromedriver /usr/local/bin/chromedriver
$ sudo chown root:root /usr/local/bin/chromedriver
$ sudo chmod 0755 /usr/local/bin/chromedrive
После этого создаем виртуальное окуржение:
$ python3 -m venv venv
$ . ./venv/bin/activate
$ python3 -m pip install poetry
$ python3 -m poetry install
После этого переименовываем .env.dist в .env, вводим в неё все данные db_dsn, queue_dsn, там указываете по шаблону юзернеймы пароли, и т.д. После этого можно запускать:
python3 -m app
Предаварительно надо настроить докер на машине(НЕ СДЕЛАНО)
$ docker-compose up app
- Избавиться от сложной установки, и впихнуть это все на докер. Что бы можно было
запустить одной коммандой -
docker-compose up app
(сделано) - Полноценная оброботка ошибок(не сделано)
- Мултитрединг(альфа)