Автоматизация продаж цифровых товаров с помощью XianYuAssistant
Продажа цифровых ключей, доступов и б/у мелочевки на маркетплейсах быстро превращается в монотонную рутину. Покупатель оплатил товар в три часа ночи, ждет моментальной выдачи, а вы спите. В итоге рейтинг магазина падает, а клиент уходит к конкурентам.
Автор открытого репозитория XianYuAssistant решил закрыть эту проблему для китайской платформы Xianyu (вторичный маркетплейс Alibaba). У него получился полноценный селф-хостед комбайн, умеющий на лету подхватывать входящие сообщения, отвечать покупателям через AI и автоматически отдавать промокоды или файлы из склада.

Зачем на это смотреть разработчику
Даже если вы ничего не продаете на Xianyu, проект интересен технической реализацией. Это свежий стек на Java 21 и Spring Boot 3.5.7, где в реальный продакшен затащили встроенный векторный поиск для нейросетей, браузерную автоматизацию и работу с WebSocket в условиях агрессивного антифрода.
Сайт платформы активно защищается от ботов. Чтобы обойти ограничения, автор применил комплексный подход:
- Вход через QR-код с помощью Headless-браузера на Playwright.
- Имитация живых задержек между запросами и обновлениями токенов.
- Интеграция локальной SQLite базы вместе с векторным хранилищем в один файл.
- Умный автоответчик на базе Spring AI и модели Tongyi Qwen с поиском по базе знаний (RAG).

Автоматизация сообщений и выдачи ключей
Основной сценарий работы системы завязан на постоянном监听 (прослушивании) WebSocket-канала связи. Как только покупатель переводит деньги за товар, сервис мгновенно реагирует на статус «Оплачено» и вытаскивает подходящий ключ из внутреннего склада виртуальных товаров.

Если у покупателя возникают стандартные вопросы вроде «Как активировать?» или «Подходит ли для РФ?», сервис не просто шлет шаблоны. Можно настроить правила по регулярным выражениям или подключить языковую модель. Для каждого товара формируется векторная база данных с описанием и инструкциями. Нейросеть достает релевантный фрагмент текста и формирует человечный ответ.

Борьба с блокировками и слайдерами капчи
Самая сложная часть подобных проектов — не дать площадке забанить аккаунт за использование автоматизации. В XianYuAssistant заложена интересная логика ротации сессий:
- Cookie обновляются вызовом фонового эндпоинта раз в 30 минут.
- Маркер
_m_h5_tkсбрасывается с плавающим интервалом от 1.5 до 2.5 часов. - Токен WebSocket меняется каждые 10–14 часов.
- Между действиями нескольких аккаунтов выдерживается пауза в 2–5 секунд.

Если площадка выкидывает капчу-слайдер, система фиксирует это событие и выводит подсказку в панель управления. Пользователь может пройти проверку вручную через браузер и подставить свежий Cookie без полной перезагрузки бота.
Архитектура и стек технологий
Проект разделен на монолитный бэкенд и фронтенд на Vue 3.5 с Element Plus. Всё упаковывается в один Docker-контейнер, поэтому поднимать отдельную БД не требуется: SQLite лежит внутри директивы монтирования.
docker run -d \
--name xianyu-assistant \
-p 12400:12400 \
-v $(pwd)/data/dbdata:/app/dbdata \
-v $(pwd)/data/logs:/app/logs \
--restart unless-stopped \
iamlzy/xianyuassistant:latest
Из интересного в бэкенде:
- Playwright Java: применяется для отрисовки страницы входа и сканирования QR-кода.
- Spring AI 1.1.4: отвечает за интеграцию с LLM и векторным хранилищем без сторонних сервисов вроде Pinecone или Qdrant.
- ZXing и MessagePack: используются для работы с штрихкодами и расшифровки бинарных сообщений протокола.
Интерфейс сделан адаптивным, поэтому отвечать на сообщения или смотреть логи отправки удобно даже с телефона.
Стоит ли ставить
XianYuAssistant — узкоспециализированный инструмент для тех, кто торгует на азиатском рынке. Однако исходный код репозитория служит отличным туториалом по написанию ботов на Java 21 с современным Spring Boot и Vue 3.
Если вам интересно посмотреть, как организовать RAG-поиск на локальном SQLite файле, обрабатывать бинарные WebSocket-сообщения или настроить ротацию сессий для защиты от блокировок, проект точно заслуживает разбора.
