Desktop приложение с Tkinter GUI для автоматизированного AI чат-бота на платформе Fansly.
- Tkinter GUI: Простой и удобный интерфейс
- Tray Icon: Работа в фоне 24/7 с системным треем
- Безопасность: Зашифрованное хранение токенов и чатов с Fernet (cryptography)
- AI Ответы: Автоматическая генерация ответов с помощью Mistral-7B-Instruct
- Авторизация: Поддержка Bearer token и email/password через GraphQL
- Standalone EXE: Сборка в один исполняемый файл с PyInstaller (--onefile --windowed)
- Reverse-engineered API: Использует Fansly GraphQL API и Selenium fallback
- Rate Limiting: Автоматическое ограничение скорости (10 сообщений/минуту)
- Style Analysis: Анализ стиля общения из исторических чатов
- Python 3.10+
- Windows 10/11 (64-bit)
- Chrome браузер (для Selenium fallback)
- 4+ GB RAM (8+ GB рекомендуется для AI моделей)
- Подключение к интернету
- NVIDIA GPU (опционально, для ускорения AI)
- Клонируйте репозиторий:
git clone <repository-url>
cd fanlsy_autochat_bot- Установите зависимости:
pip install -r requirements.txt- Запустите приложение:
python main.py- Сборка:
python build.py-
Исполняемый файл будет в
dist/Fansly_AI_ChatBot.exe -
Запуск:
dist\Fansly_AI_ChatBot.exeДля тестирования используйте демо ключи:
DEMO1234567890ABCDEF1234567890ABTEST1234567890ABCDEF1234567890AB
Важно: Вы должны быть на сайте fansly.com, а не на других сайтах!
- Откройте fansly.com в браузере Chrome/Edge/Yandex
- Войдите в свой аккаунт Fansly (это обязательно!)
- Откройте DevTools (F12 или Ctrl+Shift+I)
- Перейдите на вкладку Network
- Важно: Убедитесь, что вы находитесь на странице Fansly (в адресной строке должно быть
fansly.com) - Обновите страницу Fansly (F5) или перейдите в раздел Messages / Subscribers
- В списке запросов найдите запросы к
api.fansly.comилиapiv3.fansly.com- Ищите запросы с именами:
graphql,messages,conversations,account,me - Обычно это запросы типа
xhrилиfetch - Статус должен быть
200(зеленый)
- Ищите запросы с именами:
- Кликните на один из этих запросов
- В правой панели откройте вкладку Headers
- Прокрутите вниз до раздела Request Headers
- Найдите заголовок
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9... - Скопируйте только токен (длинную строку после слова "Bearer", без самого слова "Bearer")
Если не видите запросы к API:
- Убедитесь, что вы на странице
fansly.comи вошли в аккаунт - Попробуйте очистить фильтры в Network tab
- Обновите страницу (F5) или перейдите в другой раздел сайта
Приложение поддерживает автоматическую авторизацию через email/password с использованием reverse-engineered GraphQL API.
- Запустите приложение
python main.py-
Введите Activation Key
- Используйте один из демо ключей
- Нажмите "Validate Key"
-
Настройте авторизацию Fansly
- Bearer Token: Вставьте токен из DevTools (вкладка "Bearer Token")
- Email/Password: Введите учетные данные (вкладка "Email/Password")
-
Войдите в аккаунт
- Нажмите "Login"
- Дождитесь успешной авторизации
- Приложение автоматически загрузит исторические чаты для анализа стиля
-
Запустите бота
- Нажмите "Start Bot"
- Бот начнет polling чатов каждые 30 секунд
- Автоматически генерирует и отправляет ответы
-
Работа в фоне (24/7)
- Закройте окно приложения (оно скроется в tray)
- Tray icon появится в системном трее
- Правый клик на иконке для управления
Если GraphQL API недоступен, приложение использует Selenium fallback. Для обновления селекторов:
- Откройте Fansly в Chrome
- Откройте DevTools (F12)
- Перейдите на вкладку Elements
- Используйте инструмент выбора (Ctrl+Shift+C)
- Наведите на элемент (например, поле ввода сообщения)
- Скопируйте CSS селектор из DevTools
- Обновите селекторы в
scraper.py→SELECTORS
Примеры селекторов:
- Поле email:
input[type="email"] - Поле пароля:
input[type="password"] - Кнопка логина:
button[type="submit"] - Сообщения:
.message-textили[class*="message"]
fanlsy_autochat_bot/
├── main.py # Главное приложение с GUI и tray icon
├── config.py # Зашифрованное хранение настроек (Fernet)
├── auth.py # Fansly авторизация (GraphQL + Selenium)
├── bot.py # Логика чат-бота
├── scraper.py # Скрапинг чатов (GraphQL + Selenium fallback)
├── ai.py # AI генерация ответов (Mistral-7B-Instruct)
├── build.py # Скрипт сборки PyInstaller
├── main.spec # PyInstaller spec файл
├── test_bot.py # Unit тесты
├── requirements.txt # Зависимости Python
├── README.md # Документация
└── config.json # Зашифрованные настройки (создается автоматически)
- Tkinter GUI интерфейс
- Tray icon для работы в фоне
- Управление потоками
- Обработка событий
- Логирование активности
- Шифрование токенов и чатов с Fernet (cryptography)
- PBKDF2 для выведения ключей
- Локальная валидация activation key
- Безопасное хранение credentials
- Bearer token авторизация
- Email/password авторизация через GraphQL
- Selenium fallback для логина
- Автоматическое управление Chrome WebDriver
- Token refresh каждые 24 часа
- Скрапинг новых сообщений
- AI генерация ответов
- Управление контекстом разговоров
- Человекоподобные задержки ответов
- GraphQL polling чатов
- Selenium fallback если GraphQL недоступен
- Rate limiting (10 сообщений/минуту)
- Queue для множественных чатов
- Simulate mode для тестирования
- Mistral-7B-Instruct для генерации ответов
- Sentence Transformers для анализа стиля
- GPU/CPU автоматическое определение
- Fallback на DialoGPT если Mistral недоступен
- Fernet (cryptography): AES-128 в режиме CBC
- PBKDF2: 100,000 итераций для выведения ключей
- Локальное хранение: Все данные хранятся локально, никаких внешних серверов
- Activation Key: Используется как пароль для шифрования
- Bearer tokens
- Email/password (если используются)
- Chat data (исторические сообщения)
- User credentials
- Используйте сильный activation key
- Не делитесь config.json файлом
- Регулярно обновляйте Bearer token
- Используйте VPN при необходимости
Риски:
- Блокировка аккаунта
- Потеря доступа к контенту
- Юридические последствия
- Нарушение правил платформы
Рекомендации:
- Используйте только для личных целей
- Не злоупотребляйте rate limiting
- Соблюдайте правила платформы
- Используйте на свой страх и риск
- Reverse-engineered API: Может перестать работать после обновлений Fansly
- Selenium Detection: Fansly может обнаружить автоматизацию
- Token Expiration: Токены истекают каждые 24 часа
- Rate Limiting: Превышение лимитов может привести к блокировке
- Регулярно проверяйте работоспособность
- Используйте VPN для дополнительной защиты
- Не используйте на основных аккаунтах
- Делайте резервные копии данных
python test_bot.pyТесты включают:
- Генерация флиртующих ответов
- Извлечение стиля из ответов
- Шифрование конфигурации
- Mock scraper тесты
python test_bot_loop.pyИли напрямую:
from scraper import bot_loop
import threading
stop_event = threading.Event()
bot_loop(None, "flirty with 😘", None, None, True, None, stop_event)В коде можно настроить:
# Bot delays
response_delay_min = 10 # секунд
response_delay_max = 60 # секунд
check_interval = 30 # секунд
# Rate limiting
rate_limit_max = 10 # сообщений
rate_limit_window = 60 # секунд
# AI models
model_name = "mistralai/Mistral-7B-Instruct-v0.1"
fallback_model = "microsoft/DialoGPT-medium"
sentence_model = "all-MiniLM-L6-v2"
# Selenium
headless = True
user_agent = "Mozilla/5.0..."При возникновении проблем:
- Проверьте логи в приложении
- Убедитесь что все зависимости установлены
- Проверьте что Bearer token актуальный
- Попробуйте перезапустить приложение
- Проверьте что Chrome установлен (для Selenium)
- Убедитесь что Python 3.10+ установлен
Поток работы приложения:
GUI (main.py)
↓
Auth (auth.py) → GraphQL API / Selenium
↓
Scraper (scraper.py) → Poll чатов каждые 30s
↓
AI (ai.py) → Генерация ответов
↓
Bot Loop (scraper.py) → Отправка через GraphQL/Selenium
↓
Rate Limiting → Максимум 10/min
Этот проект предоставляется "как есть" для образовательных целей.
Основано на исследованиях проекта yllvar/fansly-api
- PyInstaller documentation
- Selenium 2025 best practices
- HuggingFace Transformers documentation
- Cryptography (Fernet) documentation
- pystray documentation