04PRISSET #25
Арбитражный бот mrkt.land → buff163 (CS2)
Полностью автоматическая система, которая ловит недооценённые скины на mrkt.land и сравнивает их с ценами buff163 в реальном времени.
Архитектура — 4 аккаунта, каждый со своей ролью
3 аккаунта на mrkt.land + 1 на buff163, работают параллельно в одном процессе:
• Аккаунт-лента — читает поток «Сначала новые», ловит только что выставленные лоты
• Аккаунт-каталог — обходит весь каталог по цене, ловит переоценённые лоты (их нет в «новых», но по ним часто и прячется выгода)
• Аккаунт-покупатель — держит баланс и совершает выкуп
• buff163 — фоновый синк цен: ask (витрина) и bid (buy-order)
Разделение по аккаунтам даёт каждому свой IP и свою сессию — лента и каталог опрашиваются одновременно, не упираясь в общий rate-limit.
Dolphin Anty (антидетект)
Каждый аккаунт живёт в отдельном профиле Dolphin со своим резидентным прокси. Ключевой момент — консистентность IP: с какого адреса аккаунт логинился, с того же идут и все запросы. Для площадки это выглядит как обычный живой браузер, а не как бот с одного сервера. Прокси зашиты по профилям, так что при переносе на хостинг ничего не ломается — трафик по-прежнему идёт через «родные» IP аккаунтов.
Как парсим (не DOM, а API)
mrkt.land — это Next.js поверх приватного JSON-API. Мы работаем напрямую с API (эндпоинты вытащены из JS-бандла), а не парсим HTML. Это на порядок быстрее — выгодные лоты разбирают за доли секунды.
Важный нюанс: лента — это поток событий, а не список товаров. Есть 4 типа: listing (выставлен), change_price (переоценён — всё ещё в продаже), unlisting (снят), sale (уже продан). Покупаем только по первым двум + статус Validated. Остальное отсекаем, чтобы не гоняться за лотами, которых уже нет.
Логика цены и выгода
По каждому скину считаем сразу два ориентира с buff163:
• ask (цена витрины) — основной порог: берём, если mrkt дешевле минимум на 15–25%
• bid (buy-order, мгновенная продажа) — контрольный: обычно +3–8%, показывает реальный выход «здесь и сейчас»
• bid (buy-order, мгновенная продажа) — контрольный: обычно +3–8%, показывает реальный выход «здесь и сейчас»
Обе цифры пишутся по каждому найденному скину, так что видно и «бумажную» выгоду, и реальную.
Фильтры и предохранители
• Исключаем StatTrak, Souvenir, Well-Worn; скины от $20
• Точное совпадение имён (никакого fuzzy — ошибка стоит денег)
• Стоп при протухших ценах buff, устаревшем курсе, тонком рынке (<3 лотов), абсурдном профите (ошибка матчинга), превышении лимитов на сделку/сутки
• Защита от двойной покупки и от «проскальзывания» (покупка ровно по той цене, по которой считали профит)
Управление
• Веб-панель: живой лог, счётчики, старт/стоп циклов на лету, переключение DRY_RUN живой выкуп, настройка порогов профита и лимитов прямо из браузера
• Уведомления в Telegram на каждую покупку — с картинкой, float, ценой, профитом и ссылкой на лот
• Хостинг под systemd, доступ по IP
Про скорость
Всё завязано на то, чтобы получить и оценить данные первыми. Тёплые keep-alive соединения, опрос ленты раз в секунду, мгновенное чтение цен из локального кэша. Реальный потолок — физика: часть по-настоящему выгодных лотов забирают со-локейт-боты за ~100 мс, но система честно берёт всё, до чего успевает дотянуться.