Настройка мониторинга и отслеживания изменений на сайтах

в 12:29, , рубрики: автоматизация, автоматизация действий с сайтами, мониторинг изменений, парсинг контента, парсинг сайтов

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

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

  • мониторинг новостей по ключевым словам

  • проверка организаций в открытых реестрах

  • мониторинг цен и скидок

  • отслеживание авиабилетов

  • мониторинг появления новых объявлений и вакансий, и т.п.

После тщательного поиска, мне удалось найти два бесплатных варианта: браузерное расширение с открытым исходным кодом и облачный сервис, где для небольшого числа проверок обещают вечный бесплатный план. Оба инструмента оказались весьма популярными, интуитивно понятными и удобными. Давайте посмотрим на них в деле.

Браузерное расширение

Чтобы мониторинг работал круглосуточно, не мешая мне пользоваться основным ПК, было решено установить расширение в браузере на отдельном виртуальном сервере (VPS).

Для комфортной работы был арендован VPS с 2 ядрами, 4GB RAM и операционной системой Ubuntu 24.04. По умолчанию сервер выдается с root доступом и без графического интерфейса, поэтому первым делом создадим нового пользователя (например myrobot) с надежным паролем и установим рабочий стол:

root@vps:~# adduser myrobot
root@vps:~# apt update && apt install ubuntu-desktop-minimal -y

Чтобы к рабочему столу виртуального сервера можно было подключиться удаленно, установим пакет XRDP:

root@vps:~# apt install xrdp -y

Теперь на наш сервер можно заходить используя штатное "Подключение к удаленному рабочему столу" в Windows, или же с помощью любого XRDP-клиента для Linux, например Remmina (в десктопном Ubuntu установлен по умолчанию).

Подключаемся, вводим имя пользователя и пароль:

Настройка мониторинга и отслеживания изменений на сайтах - 1

Запускаем браузер FireFox и устанавливаем расширение Automa напрямую из каталога аддонов, или загрузив его с GitHub. То же самое можно сделать и для браузера Google Chrome, если вы предпочитаете его.

Работа с Automa предельно проста – все действия моделируются с помощью блоков действий, соединяемых стрелками. В качестве примера попробуем создать простого робота, который будет ежедневно мониторить мою карму на Habr и отправит сообщение в Telegram, когда она вырастет. Смотрим:

Весь процесс занял несколько минут, в спойлере ниже есть подробное описание действий в видео:

Настройка мониторинга кармы в Automa

Шаг 1. Настройка расписания запуска
Запускаем в браузере плагин Automa, создаем новое задание, и в блоке "Trigger" настраиваем его ежедневный старт.

Шаг 2. Создаем новую вкладку и открываем страницу пользователя
Для открытия страницы в новой вкладке находим слева блок "New Tab" и перетаскиваем его в созданный нами проект. В настройках блока указываем URL страницы пользователя, где будем смотреть карму.

Шаг 3. Добавляем условие для проверки уровня кармы
Используя блок "Conditions" и встроенный селектор элементов, получаем значение кармы со страницы пользователя, а также задаем условие для дальнейшей отправки уведомления (если карма >30).

Шаг 4. Настраиваем отправку сообщения в Телеграм
Этот шаг наиболее трудоемкий, поскольку предполагает создание собственного телеграм бота для отправки сообщений через API с помощью блока "HTTP request".

Если вы делали это ранее, то из списка действий ниже достаточно будет выполнить только последний пункт. В целом, сделать нужно следующее:

  1. Запустите BotFather в своем Telegram и, чтобы создать бота, введите команду /newbot

  2. Дайте название своему боту и подберите для него имя пользователя. Имя должно заканчиваться на "bot", оно будет использоваться в Телеграм как юзернейм бота (@ИМЯ), а также в ссылке для быстрого доступа к нему: https://t.me/ИМЯbot
    Если вы получите сообщение об ошибке, выберите другое имя, так как большинство имен уже занято.

  3. BotFather пришлет сообщение о создании бота со ссылкой на него и секретным токеном.

  4. Откройте в браузере ссылку https://api.telegram.org/botXXX:YYYY/getUpdates, где вместо XXX:YYYY укажите секретный токен созданного бота. В ответ вы увидите что-то вроде: {"ok":true, "result":[]}

  5. Добавьте созданного бота в свой Телеграм, перейдя по ссылке https://t.me/ИМЯbot, и напишите ему любое сообщение, например "Hello!"

  6. Еще раз откройте (или обновите) ссылку из пункта 4, и в новом полученном ответе найдите идентификатор чата. Он должен быть здесь: "chat":{"id":xxxxxxxxxx,

  7. Теперь, чтобы отправить сообщение в Телеграм, нам достаточно подставить свой секретный токен и идентификатор чата в ссылку: https://api.telegram.org/botXXX:YYYY/sendMessage?chat_id=xxxxxxxxxx&text=Karma is more than 30. Congratulations!

    В нашем проекте эту ссылку следует вставить в блок "HTTP request", указав метод запроса как "GET".

Шаг 5. После каждого запуска вкладку браузера будем закрывать
Добавим в проект блок "Close tab" и свяжем с ним двумя стрелками блок "Conditions", проверяющий уровень кармы. Теперь после каждой проверки, независимо от значения кармы, вкладка браузера будет закрываться.

Шаг 6. Добавим переменную, чтобы остановить проверки после отправленного уведомления
Как только карма достигнет 30, мы получим сообщение об этом. Но если не остановить задание, сообщения продолжат отправляться ежедневно.
Чтобы этого избежать, введем дополнительную переменную $$karma_checker_stopped, и будем проверять ее при каждом запуске задания.
По умолчанию, значение переменной установим как 0, а когда сообщение будет отправлено, оно измениться на 1.

Шаг 7. Тестируем: для нашего пользователя, и другого, у которого карма >30
Сначала вручную запустим задание для нашего пользователя (kaspra), но ввиду низкого уровня кармы уведомление не отправляется. В тестовых целях заменим пользователя на случайного, с кармой выше 30 (writer), и снова запустим задачу. Как видим, сообщение успешно доставлено.

Преимущества Automa:

  • бесплатное и удобное ПО с открытым исходным кодом

  • используется свой чистый IP, что позволит избежать появления капч и срабатывания антиботов

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

  • встроенный планировщик заданий, интеграция с сервисами Google, блок Javascript для вставки произвольного кода, и многое другое
     

Недостатки:

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

  • нужно немного времени, чтобы посмотреть как организована работа с хранением данных (переменные и таблицы) и "набить руку" с синтаксисом их написания. Для этого есть большая база знаний

  • в данный момент замечена нестабильная работа режима записи действий (значок ⦿ в меню расширения). О баге уже сообщили разработчикам

Облачный сервис

Сервис, о котором пойдет речь, называется Browse AI. В рамках бесплатного тарифа попробуем настроить мониторинг кармы с его помощью:

В результате, при каком-либо (любом) изменении значения кармы, мы получим уведомление по электронной почте.

Преимущества:

  • простой и понятный

  • бесплатный для небольшого числа проверок

  • интеграции с Google Sheets, Zapier, Webhooks и др.

  • доступ через API
     

Недостатки:

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

  • созданные задачи запускаются на серверах Browse AI, сетевые адреса которых могут быть хорошо знакомы антироботам. У меня, например, возникла сложность с загрузкой сайта Skyscanner

Вывод

Хотя оба рассмотренных решения хороши, я отдаю предпочтение браузерному расширению, которое успешно решает все поставленные задачи. Что касается Browse AI, то даже в рассмотренном примере мониторинга кармы, у меня не вышло реализовать такую же логику ее проверки и отправки уведомлений в Telegram, как в Automa.

Автор: kaspra

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js