Вопрос или проблема
Иногда необходимо получать уведомления, когда на веб-странице вносятся изменения.
В настоящее время у меня есть несколько простых скриптов на OpenBSD, которые загружают веб-страницу с помощью lynx -width 120 -dump
, находят релевантные части с помощью grep
-v
и -B3 -A3
и т.д., сохраняют это в специальной папке с именем файла на основе date
, отслеживают последние две версии с помощью ln -fs
и, наконец, выполняют diff
, все это запускается через cron
.
Скрипты работают, однако выглядят несколько неуклюже, ломается и могут не учитывать некоторые крайние случаи. Есть ли, возможно, какое-либо существующее программное обеспечение, которое может выполнить эту задачу лучше и более оптимально?
Я нашел бесплатное приложение для Android Web Alert очень полезным для этого случая. Это также одно из немногих, которые могут работать с веб-страницами, на которые требуется войти в систему заранее или отправить какую-либо форму.
Я с удовольствием использую https://www.changedetection.com/ уже более 10 лет. Просто дайте ему URL, и он будет отправлять вам по электронной почте уведомления, когда любая часть страницы изменится.
“С 1999 года ChangeDetection.com предоставляет услуги мониторинга изменений страниц и уведомлений для пользователей Интернета по всему миру. Каждый может использовать наш сервис для мониторинга любой веб-страницы на предмет изменений. Кроме того, веб-мастера используют наш сервис для улучшения своих сайтов и увеличения трафика.
Каждый может использовать наш бесплатный сервис для отслеживания изменений на любой странице сети. Вы будете уведомлены, когда страницы, которые вы отслеживаете, изменятся, и сможете увидеть краткий список правок, внесённых в каждую страницу со временем. “
До сих пор я использовал два инструмента для этой цели:
Сначала я использовал urlwatch как задание cron, которое отправляет электронные письма при изменениях на сайте. Но оно выдавало слишком много ложных срабатываний по моему вкусу, и игнорирование частей веб-страниц требовало программирования плагинов.
Сейчас я использую specto, несмотря на то что он больше не поддерживается, но он вполне справляется со своей задачей. Он работает в системном трей рядом с вашим рабочим столом, и иконка меняет свой цвет с синего на оранжевый, если одна из веб-страниц изменилась.
Лучший подход – написать скрипт для получения страницы через cURL, запустить хеш-функцию на ней и сравнить её с предыдущим хешем для этой страницы.
В зависимости от элементов на самой странице, вам может потребоваться провести некоторую обработку между вызовом cURL и хеш-функцией, чтобы удалить динамические элементы (такие как заголовки, блоки с рекламой и т.д.) – вы можете использовать такие инструменты, как API Full-Text RSS от FiveFilter, чтобы извлечь релевантные данные из ваших веб-страниц и хешировать только это.
Если вас интересуют изменения файлов, а не обновления контента – т.е. например, вы хотите отслеживать изменения в вашей файловой системе для защиты от инъекций кода – то вам лучше версионировать свой код в Git или Mercurial и запускать git status | grep "nothing to commit (working directory clean)" | grep -v grep | wc -l
, и если скрипт находит измененные файлы, уведомлять вас по электронной почте.
Только что начал свой собственный проект. Надеюсь, кто-то найдёт его полезным.
sitestalker – инструмент для массового мониторинга изменений доменов/веб-сайтов с захватом экрана, галереей и уведомлениями по электронной почте.
Huginn, похоже, популярен на GitHub и, вероятно, делает то, что вам нужно.
2023 год настал – я бы рекомендовал https://changedetection.io, он также полностью с открытым исходным кодом на https://github.com/dgtlmoon/changedetection.io
С помощью этого приложения вы получаете уведомления, включая правильный стиль ‘патч’ (перейдите в редактирование > уведомления и выберите формат/токен diff/patch) легко 🙂
Ответ или решение
Получение уведомлений об изменениях на веб-страницах с использованием диффов
В современном мире мониторинг изменений веб-страниц является важной задачей как для частных пользователей, так и для организаций. Процесс получения уведомлений о изменениях требует эффективного подхода, который может устранить недочеты в существующих решениях. Рассмотрим детально, как можно улучшить этот процесс, основываясь на вашем текущем подходе и современных инструментах.
Проблема текущего подхода
Вы используете скрипты на OpenBSD, которые загружают веб-страницы, обрабатывают их и сохраняют изменения. Несмотря на то что данный подход работает, он может быть ненадежным и неэффективным. Основные недостатки:
- Хрупкость скриптов: Учитывая, что в веб-разработке постоянно появляются новые технологии, скрипты могут легко сломаться при изменении структуры страницы.
- Сложная обработка: Использование
grep
и других утилит требует глубоких знаний и хорошего понимания контекста. - Отсутствие гибкости: Ваши скрипты могут не обрабатывать подобные случайности, как динамическое содержимое и точки входа с авторизацией.
Современные решения
Существует множество инструментов, которые могут значительно упростить процесс мониторинга веб-страниц. Вот несколько из них:
-
Changedetection.io – данный ресурс является открытым и бесплатным. Он позволяет отслеживать изменения на страницах и будет уведомлять вас о них, сохраняя при этом возможность просмотра измененных участков в формате диффа. Этот интерфейс особенно полезен, так как предоставляет визуализацию изменений.
-
Huginn – мощное приложение для автоматизации, которое может мониторить изменения не только на веб-страницах, но и в различных источниках данных. Huginn предоставляет пользователям возможность создавать "агентов", которые автоматически реагируют на изменения.
-
Specto – хотя проект больше не поддерживается, он предлагает удобный графический интерфейс и уведомления о изменениях в системном трее. Это отличный выбор для пользователей, которые предпочитают настольные приложения.
-
SiteStalker – новый проект, который может отслеживать изменения на множестве доменов и отправлять уведомления по электронной почте.
-
urlwatch – еще одно решение, которое отправляет электронные письма при изменении веб-страниц. Однако учитывайте, что вам может потребоваться персонализированный скрипт для игнорирования определенных элементов страницы.
Рекомендованный подход
Если вы хотите создать собственный скрипт для мониторинга изменений на веб-страницах, рекомендуется:
- Использовать cURL для загрузки содержимого страницы.
- Обработать полученные данные, используя фильтрацию для удаления статических или динамических элементов, которые могут вызвать ложные срабатывания.
- Применить хеширование для сравнения загруженной версии с предыдущей.
- Реализовать оповещение через электронную почту или систему уведомлений, если изменения были обнаружены.
Этот метод позволяет гибко подходить к мониторингу, учитывая специфические требования вашего проекта и устраняя ненужные уведомления.
Заключение
Мониторинг изменений на веб-страницах — это задача, требующая внимательного подхода и гибкости. С учетом существующих инструментов, как открытых, так и готовых к использованию, вы сможете значительно упростить себе жизнь и повысить эффективность мониторинга. Рекомендуется протестировать несколько подходов и выбрать наиболее подходящий для ваших нужд.
В случае возникновения вопросов или необходимости в помощи, не стесняйтесь обратиться к сообществу, которое всегда готово поддержать вас в этом начинании.