CoderASIC

CoderASIC

На Пикабу
Дата рождения: 1 января
в топе авторов на 448 месте
100 рейтинг 0 подписчиков 0 подписок 1 пост 0 в горячем
3

Внутренняя жаба и свой Ozon Price Tracker с блэкджеком и сиреной (и моя боль)

Всем привет, диванные архитекторы.

короче все в курсе про рандомно скидки Озона, сегодня купил, завтра товар на 500% дешевле(образно говоря)) Да, базара нет, можно отменить и купить дешевле. Но не суть. Меня короч в какой-то момент переклинило. Заходить по двадцать раз в день проверять, не подешевели ли носки. Чекнул чё есть на рынке... сторонние боты в телеге либо не работают,

либо просят подписку, либо показывают гостевые цены без учета Ozon Карты и регионального склада (ID).

В общем решил, а ху...и нам кабанам, пишем свой нативный трекер под Android на Kotlin, Jetpack Compose и локальном движке. Без серверов, без передачи данных третьим дядям(реже тетям), с жестким контролем всего происходящего.

...че каво и что имеем на данный момент

Стек без мамонтов: Kotlin + Jetpack Compose + Room +WorkManager + Coil.

К сожалению парсинг Озона через Jsoup/OkHttp в 2026 году ожидаемо шлет тебя на три буквы с кодом 403 Forbidden и бесконечным редиректом на капчу, пришлось поднять локальный headless-браузерный движок внутри прилож.

Что уже работает и радует душу:

1. Честные цены с Ozon Картой и скидкой ID: Приложение умеет подхватывать авторизацию Ozon ID. Никаких «средних цен по больнице» видит ровно ту цену, которую видите вы в своем профиле со своего домашнего ПВЗ.

2. Добавление в 1 клик через системный Share: Увидел товар в приложении Озона ➔ нажал «Поделиться» ➔ выбрал свой трекер ➔ выставил целевой прайс. Всё.

3. Разделение на три лагеря:

СЛЕДИМ то, что реально в наличии и пасется ботом;

ЗАКОНЧИЛСЯ товары, которые раскупили (бот продолжает тихо мониторить склад, и если продавец пополнил остатки ..прилетает Restock Alert);

АРХИВ ...купленное или отложенное барахло, чтобы не жрать ресурсы.

4. Умная сортировка и детекция падений: Если цена пошла вниз (даже на 50₽), товар моментально летит в топ списка с плашкой «🔥 Цена снизилась на X ₽».

5. Режим «ОРАТЬ» и Сирена: Обычные скидки шлют тихий пуш. Но если цена пробила выставленный таргет и телефон врубает полноэкранный Heads-up баннер и зацикленную сирену через аларм-менеджер, которая орет, пока ты не нажмешь «Купить». Проспать скидку физически невозможно.

6. Графики на Canvas: Написал нативный график истории цен прямо на Compose Canvas, с адаптацией под день/ночь и фирменный сине-розовый стиль Озона.

7. Живой логер в фоне: Фоновый воркер пишет логи с точностью до секунды, их можно экспортировать в .txt прямо в /Download.

Ну и там всякие другие плюшки...

И главное приложение уверенно живет в фоне на Xiaomi (HyperOS) и не умирает ночью в Doze Mode.

А теперь собственно боль (и почему я здесь)

Приложение сейчас на стадии активного бета-теста на реальном железе, и есть два момента, на которых мой инженерный дзен всё...

Проблемка1: Корзина Озона

Поштучно товары через «Поделиться» добавляются идеально за полторы секунды. Но добавлять 20 позиций по одной такое себе. У Озона есть функция «Поделиться корзиной» (cart?share=...), которая генерирует публичную ссылку. Казалось бы, епта. Но при попытке разобрать страницу корзины, этот франкенштейн на Nuxt 3 подмешивает в DOM-дерево подвал с лентами «Вы смотрели», «Возможно вам понравится» и еще 40 рекламных карточек с аналогичной версткой. В итоге вместо 2 товаров из корзины скрипт радостно пытается затрекать половину витрины озона.

Проблемка2: Периодический склероз сессии, раз в пару недель WebView решает, что он устал, и роняет сессионные куки авторизации. Цены при этом не ломаются, но превращаются обратно неавторизованные (без учета Ozon Банка), пока заново не откроешь профиль. В приложении просто тыкаешь в настройках на авторизацию и логинишься. Да, когда эту хрень заметил, я конечно сделал временную затычку в виде уведомления что "ау, залогиньтесь плиз снова", но все таки хочется как то убрать данное неудобство.

Внимание, вопрос к коллективному разуму местных гуру:

Господа фронтендеры, реверс-инженеры и просто бывалые воины парсинга:

1. Кто ковырял публичные корзины Озона (cart?share=...) на Nuxt...по какому самому надежному селектору или объекту в window можно уверенно изолировать реальные товары корзины от мусорных каруселей рекомендаций? Я пробовал по очевидным самым типа - 1 -(количество товаров), форма галочки, ну и другие элементы которые казалось бы только в корзине присутствуют, но при 2х товарах в корзине, удалось сократить парс до 6 товаров (из +-50)

2. Как держать живой вебвьюшную сессию без регулярных пинков?

Советы, идеи, конструктивная критика архитектуры и вобще в

комментах категорически приветствуются. Всем низких цен и стабильного рантайма!

# FIXME: Я не знаю, почему это работает. Не трогайте, иначе всё взорвется.

# И да, я молился, когда это писал.

Показать полностью 8
Отличная работа, все прочитано!

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества