Началось всё с того, что я запланировал несколько покупок, которые были совершенно не срочные, и поэтому хотелось сделать их в период минимальной цены, которая у современных продавцов возникает по странным и не понятным мне алгоритмам.
Периодически тыкать F5 мне надоело, а функции информирования о снижении цены есть не во всех магазинах, а в некоторых, в которых есть, работают неудобно, криво или не стабильно.
Поэтому я решил скачать какое-нибудь приложение на компьютер, которое само время от времени смотрит цену на мой список товаров в разных магазинах и сообщает мне о её снижении…
Но ничего подходящего я не нашёл. Может плохо искал.
Да, есть куча онлайн сервисов, которые чем-то подобным занимаются. Но они все платные (по крайней мере те, которые я нашёл), да и мне хотелось именно локальное приложение, чтобы оно просто замигало в районе часиков операционной системы, когда цена снизилась до приемлемого мне уровня.
Но раз такого нет, сделаем сами.
Чё там сложного. Скачать html-ку, поискать ключевые теги, выдрать из них цену, название товара, ссылку на картинку, скачать по этой ссылке саму картинку, засунуть это в базу данных, и периодически дёргать ссылки из этой базы, сравнивая текущую цену и сохранённую.
Поскольку подобными приложениями отслеживания цен в магазинах я раньше не занимался, то открытия посыпались как из рога изобилия.
Какие-то магазины без проблем отдавали всю информацию, а какие-то упёрлись рогами, типа вы робот.
Но я ведь не робот, я человек, именно поэтому хочу отдать работу, которую может сделать за меня робот, ему. В чём проблема-то? Ну я на клавиатуре F5 тыкаю, теперь будет приложение тыкать, какая разница?
Нет, я понимаю, когда запросы идут слишком часто, это перегружает сервер. Но тут просто один единственный запрос за всё время существования Вселенной, и он был отклонён. Это ж маразм.
Бороться с маразмом на этой территории бесполезно, это я уже давно понял, поэтому попытаемся его обойти.
Опять же ничего не законного мы не делаем, я всего лишь хочу получить совершенно открытую и публичную информацию — цену товара, который так же публично представлен на открытой странице публичного же магазина.
В общем обойти это оказалось не просто, но у меня, вроде как, получилось.
В результате родилось такое приложение.
В него закидываешь ссылку на товар, оно подтягивает со страницы его название, цену, делает скрин страницы. Название и желаемую цену можно подкорректировать и сохранить это всё, включая скрин.
Слева скрин, справа мини-браузер, в котором открывается страница товара, и в котором, при необходимости, можно залогиниться, чтобы цена была для авторизованного пользователя. Впрочем, это и не обязательно, если важен процесс изменения этой цены, а не её точное абсолютное значение.
В список можно добавить произвольное количество товаров. Чтобы в них не заблудиться, есть поиск.
При добавлении новой ссылки, она на лету проверяется на наличие в списке.
Когда мини-браузер не используется, вместо него отображается график истории цены товара:
Когда интерфейс приложения не используется, оно сворачивается в трей Windows (возле часов) и живёт там тихо и спокойно, периодически опрашивая страницы сохранённых товаров и начиная радостно мигать, когда цена снизилась, или отсутствующий товар появился в продаже.
Кроме того, приложение предупредит, если по товару долго не происходит никаких событий или возникают ошибки получения информации со страницы.
Если произошло какое-то событие с товаром, строка с ним в списке подсвечивается цветом, для каждого события своим, и поднимается вверх.
Двойным кликом по ней можно перейти в браузер и купить товар. Либо сбросить событие и ожидать нового.
На данный момент реализована поддержка следующих площадок: AliExpress, Avito, DNS, Eldorado, Onlinetrade, Ozon, Vseinstrumenti.
Почти всех тех, которыми я пользуюсь.
Большинство сайтов добавлялось легко. У Озона только есть особенность в ссылках на отсутствующие и присутствующие в продаже товары, пришлось немного подшаманить.
Mvideo мне не дался вообще, даже в браузере код страницы не даёт просмотреть. Ну и ладно, ему же хуже, меньше вероятность, что я там что-то куплю. С другой стороны, они с Эльдорадо уже практически срослись, даже программы лояльности объединили, а с Эльдорадовским сайтом проблем у меня не возникло, буду им пользоваться.
Другие сайты буду добавлять по мере необходимости.
Вообще я это приложение хотел разместить в открытом доступе — раз уже разработал, почему-бы не поделиться со всеми? Но у меня возникли некоторые сомнения в правовой стороне этого вопроса. Есть неплохая статья на эту тему:
Парсинг — это законно?
Если коротко, то это как бы не незаконно, но есть некоторые нюансы при конкретном использовании подобных приложений, поэтому, пока решил отложить размещение, а вместо этого поинтересоваться у читателей-покупателей, а вы пользуетесь подобными приложениями, сервисами? Может быть, подобное уже есть, а я изобрёл очередное колесо?
Нет, я знаю, что помимо платных Интернет-сервисов отслеживания цен, ещё существуют бесплатные плагины к браузерам, у самого такой стоит. Но это тоже не совсем то. Во-первых, количество магазинов, которые он поддерживает, сильно ограничено. Во-вторых, удобство ведения этого отслеживания тоже сильно так себе. В-третьих, подобные плагины отслеживают товар, локально анализируя открытую пользователем страницу в браузере. Необязательно она должна быть открыта пользователем, который отслеживает этот товар, достаточно открытия её любым пользователем, у которого установлен этот плагин.
Это влечёт два момента. Положительный — снижается вероятность срабатывания анти-бот защиты сайта и соответственно нет необходимости в принятии мер против этой анти-бот защиты. Ведь данные подтягиваются не из централизованного сервера-парсера, который бомбит сайт магазина большим количеством запросов, а это относительно немногочисленные запросы с IP-адреса конкретного пользователя.
Ну и плюс страницу открывает обычный браузер, плагин просто потом забирает эти данные у браузера и на сайт магазина сам не лезет.
И даже если всё же там сработает анти-бот защита, и пользователю будет предложено ответить на несколько идиотских вопросов с картинками, то этим будет заниматься сам пользователь, а не разработчики плагина.
Но есть и отрицательные моменты у такой архитектуры. Первый связан с тем, что если товар редкий и страницу с ним никто, имеющий этот плагин не открывает, то вы и не узнаете об изменении цены на этот товар.
Второй отрицательный момент связан с тем, что в такой схеме нужен сервер (облако) для обмена этой информацией между пользователями плагина. А облака, как уже думаю стало понятно даже самым ярым их сторонникам, могут превращаться в тыкву в любой, самый неподходящий для пользователя момент. Особенно бесплатные облака. Впрочем, и платные тоже.
Поэтому мне хотелось чего-то локального, живущего в системе независимо от работы браузера и облаков.
А вы пользуетесь чем-то подобным? Чем? Как впечатления?
« Это смутно мне напоминает Индо-пакистанский инцидент»Конечно же, я хотел сказать, что ТС полунамёками мониторит интерес публики с целью решить размер монетизации приложения. Заинтересуются — ценник повыше выставит, не заинтересуются — придержит до лучших времён))
Что до приложения — хорошо бы в настройках иметь возможность править xpath (ну или regexp, если совсем просто) для парсинга цены и названия. Тогда самим можно добавлять новые площадки.
Кроме того, если сделать возможность указывать url на REST для обмена с ценами, то можно запускать собственный пиринговый обмен с ценами с любым облачным диском или сервисом.
Ну а по хорошему нужно делать сервис на headless и к нему веб ui, но это куда сложнее.
а так происходит обычно потому что у обычных людей может не быть ресурсов, чтобы полноценно бодаться и доказывать законность чего-то, или на каком-то этапе борьбы были допущены ошибки, привлекшие к такому положению дел.
в твоем случае пока что работает защита по методу «неуловимого джо».
и другой момент, откуда у обычных юристов может взяться практика по столь редким и уникальным делам. это ж не от пьянки за рулем отмазывать или незаконного штрафа (просто в качестве примера отработанного и хорошо изученного механизма на практике).
неужели кто-то согласен запускать какой-то бинарник, издалека похожий на браузер на своей системе?
Тогда продолбался пол часа. сегодня чатжпт это сделает если ей скормить первую часть моего коментария.
Сгенерит абракадабру, но не факт, что рабочую. Если понимать, то можно поправить. Но если чел не понимает, то и не поправит.
Вторая проблема — знать как правильно поставить задачу. Не программисту будет сложно это сделать.
я вот ради интереса нагенерил питон-скрипт отслеживания цены на али с отчетами в телегу, хранением базы товаров в sqlite, добавлением товаров в базу без перезапуска мониторинга и начальным тестированием урла за минут десять из которых пять дожидался вывода.
работает без ручных правок.
у меня вот если висит что-то во вкладках больше недели — это или нафиг не нужная вещь и можно смело удалять, или будет куплено безотносительно скидок.
Запрет парсинга по сути аналогичен запрету фотографировать в оффлайн-магазине… полный бред, чушь и самодурство безграмотных недоработников.
и как оно работать будет? там же по нескольку лотов по одной ссылке обычно. откуда берется магическая sku_id как на картинке?
Сейчас многие сайты так заигрались с этими защитами что даже в инкогнито, или в не самых популярных браузерах не работают.
Искать товар дешевле — это наше любимое занятие :)
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.