Как стать автором
Обновить

Комментарии 37

От себя могу добавить, что не обязательно дергать весь сайт для проверки наличия автомобилей - достаточно, как вы написали, дёрнуть https://showroom.hyundai.ru/rest/car - тут даже расшифровывать ответ не надо, если машин нет, длина ответа 26 символов, если есть, то больше.

Я лично мониторил этот сайт в течение двух недель и каждый раз при появлении автомобиля на последнем шаге бронирования получал 500ю ошибку от сервера (хотя автомобилей была целая пачка в наличии на сайте). У вас получилось забронировать автомобиль для себя или для кого-либо?

тут даже расшифровывать ответ не надо, если машин нет, длина ответа 26 символов

Согласен, но в качестве полезной информации хотелось передавать в телеграм-канал подробную информацию об автомобилях в наличии, а с текущем уровнем шифрования, в лоб, это сделать не получилось.

Данным же способом можно немного распарсить DOM и передать в канал информацию о о модели, комплектации, стоимости и т.д.

У вас получилось забронировать автомобиль для себя или для кого-либо?

Нет, но планирую плотно заняться мониторингом и бронированием для себя в ближайшие пару месяцев.

да, но кто мешает дергать всю страницу только тогда, когда когда api выдаёт больше 26 символов.

тоже сложилось впечатление, что забронировать физически не возможно. стабильная 500 ошибка у разных пользователей, совпадение? не думаю

Отвечу за автора, у меня получилось сделать 3 брони. По поводу ошибки на последнем шаге - тут как я понял все зависит в основном от удачи. Я делал так - если за 2-3 раза последний шаг не срабатывал, то начинал бронировать новую машину. Еще важный момент, что подтверждение брони не всегда срабатывает, поэтому нужно после попыток проверять личный кабинет, 2 из 3 раз я узнал о брони только через несколько часов

Интересно, но главная проблема это бронирование, а оно доступно только после авторизации. Возможно вы видели форму ввода смс-кода сгенерированную с использованием canvas. Если не секрет - пробовали решать этот вопрос?

Не пробовал, но задача интересная =)

А там звонок приходит и поле постоянно меняется. СМС не используется

Верно, но при этом я видел как минимум одного популярного неофициального бота, который справляется с задачей авторизации

как вариант - можно сделать скриншот экрана, распознать символы и вычислить координаты кнопки и дальше сэмулировать нажатие. canvas я так понял это векторный элемент и у него нет отдельных элементов вида <div>

каждое нажатие меняет кнопки местами (цифры) бегающая клавиатура.

верно, довольно элегантное решение на мой взгляд, + они могут в любой момент изменить элементы на клавиатуре, допустим вместо цифр использовать прописные названия (один, два...)

не хватает только капчи)

Звучит как план и должно получиться, да)

Я пробовал - обходится отправкой на сервер post-запроса с кодом (последние 4 цифры входящего звонка) и прочей информацией - посмотрите в dev tools запрос который отправляется на сервер после ввода кода в canvas и будет всё понятно.

О, не так все сложно, оказывается. А что приходит в ответ на такой запрос?

кука с id для авторизации

А авторизация раз в час слетает

ну да, раз в час нужно повторять операцию

с другой стороны авторизация нужна только для бронирования, для мониторинга появления новых машин на сайте она не нужна

это уже на автомат и не паблике версию:)

эти запросы я нашел, получение списка машин, отправка кода, там как раз ничего сложного. а вот быстрее других пройти авторизацию это уже проблема. повторюсь, есть подозрение, что машины для обычных людей не доступны физически, даже если вы дойдёте до бронирования, то сайт в какой то момент пришлёт 500 и потом авторизация слетает.

Прикольно, но там есть кнопочка "Подписка на обновление стока" со значком Телеграмма. Это ли не решение "из коробки", тем более, что для бронирования всё равно надо регистрироваться и авторизовываться на сайте.

Вы правы, но эта функция появилась совсем недавно, буквально на днях, а парсер был написан раньше.

Плюс ко всему, вчера, при обновлении стока автомобилей, официальный бот прислал уведомление на 15(!) минут позже, чем автомобиль появился в наличии на сайте.

Говорят из за телеграмма, он шлет не всем юзерам сразу, а первым кто был подписан на канал.

может на бота?

Вопрос а раз в сколько секунд он обходит шоурум?

а крон меньше не умеет(

почему сделано через node-cron, а не просто через setInterval()?

Хороший вопрос! Честно говоря не помню свою мотивацию, но да, — с точки зрения упрощения кода можно использовать и setInterval().

Вообще, я запускал скрипт на сервере при помощи библиотеки pm2, и там есть встроенный cron тоже — https://stackoverflow.com/a/42543433. Тогда кажется, лучше убрать cron из скрипта и устанавливать его на уровне окружения.

Есть более другой вопрос: а не забанят ли бота, опрашивающего страничку слишком часто?

Строго говоря, это не бот опрашивает страницу, а скрипт, размещенный и запущенный на сервере. Думаю, что по ip конечно могут и забанить =) Но, кажется, бот создает примерно такую же нагрузку как и средний пользователь сайта)

Если вы думаете что есть пользователь который круглосуточно каждую минуту долбит одну страницу то вы немного ошибаетесь.

От такого скрипта в логах куча одинаковых запросов, поэтому логичный ход при подобной частоте его забанить (или после нескольких смен IP - выдавать ему неверную информацию).

Таймаут должен быть разумным, а еще лучше заранее согласовать подобный скрапинг с владельцем сайта.

Я пробовал ставить расширение для хрома, которое автоматом обновляет страницу через указанный интервал. Я задавал интервал - 10 секунд. Пару дней так сидел и никто не забанил.

В моём мире, бот - это некая программа, автоматизирующая какой-либо процесс. Соответственно, скрипт - это и есть бот.

Средний пользователь не будет даже раз в минуту 24/7 сидеть и обновлять страницу.

Опытно империческим путем выяснил что есть ограничение на стороне шоурума по кол-ву запроса в N секунд. Бывало днями сидел с авторефрешером в хроме.

С 9 декабря все сильно поменялось. https://showroom.hyundai.ru/rest/car.без браузера и авторизации теперь не работает (HTTP 500 если дергать без кук и HTTP 422 если вызывать с куками но отдельно от страницы)

За частые входы или частые обновления стали блокировать аккаунты на 10 дней. По крайней мере аккаунт с обновлением страницы в раз 10 секунд и ежечасной авторизацией заблокировали. По IP не банят.

Опрашивать сайт раз в минуту - бесполезно, машины уходят за 10-15 секунд

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории