NeoWatcher – сервіс відстеження змін на сайтах

Час читання: 15 минут

Надішлимо матеріал вам на пошту

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

Основні недоліки:

1. Перевіряють всі сторінки (потрібно виключити сторінки фільтрації, на одному з сайтів їх близько 100 000)
2. Перевіряють всю сторінку (потрібно тільки заданий блок, наприклад проста зміна назви меню “Контакти” на “Про компанію” торкнулося всі сторінки, що збиває з пантелику).

Склали список вимог до ПО:
1. Відсилання звітів на пошту (установка періодичності)
2. Перегляд звітів через веб інтерфейс (або прога під вінду)
3. Автоматична побудова списку сторінок сайту
4. Можливість фільтрації, які сторінки перевіряти, а які – ні
5. Поділ сторінок по групам
6. Можливість вказати який блок в якої групи сторінок перевіряти (на головній – перевіряти всі, на внутрішніх тільки контент (без меню))
7. Бажано російський інтерфейс

Вирішили зробити свій веб сервіс. Зробили. Нижче про принцип роботи і короткий огляд функціоналу.

Принцип роботи

На пальцях все просто: качаємо сторінку перший раз, зберігаємо, качаємо вдруге, звіряємо. Немає змін – добре, є зміни – повідомляємо про них. Здавалося б cron + wget + diff і все готово. Але на практиці вилазить багато нюансів.

Сканування сайту і збереження сторінок

Список сторінок сайту

Сканування сайту і збереження сторінок

Сервісів, які вміють Діфа одну вказану статтю – хоч греблю гати. Для початку потрібно зробити, щоб NeoWathcher самостійно шукав сторінки сайту щоб знати, що ж порівнювати. Алгоритм такий: закачуємо першу сторінку, зберігаємо її, шукаємо посилання на інші внутрішні сторінки, додаємо ці сторінки в чергу, якщо таких ще немає. Беремо наступну сторінку з черги. Тут починаються перші проблеми, адже досить багато сайтів використовують фасетну навігацію (фільтри), наприклад http://biopromin.info/index.php?gc.fk_id_country=2&type=static&child=certificate&count=10. Один цей факт дає нам сотні тисяч окремих url на одному сайті. Логічний вихід – поділяємо сторінки на 2 групи: Сканувати, Ігнорувати. Критерій відправки сторінки в групу – потрапляння її url під регулярний вираз. Регулярні вирази для сторінок Сканувати і Ігнорувати додає користувач, або техпідтримка для кожного сайту окремо. Таким чином після сканування у нас залишається осудна кількість сторінок, зміни на яких дійсно потрібно відстежувати. При цьому сторінки не потрібно додавати вручну. Додавання нових сторінок на сайті (якщо їх потрібно сканувати) спричинить автоматичне додавання їх в систему моніторингу при наступному обході. Також можна додавати довільні групи сторінок. Навіщо – нижче. Може бути таке, що на сайті є сторінки без посилань на них? Звичайно може! Зробимо ще одну групу для сторінок, які можна додати вручну.

Порівняння різних версій сторінок

Зміна, html

зміни html

 

Зміна, текст

зміни тексту

При другому обході сайту ми вже можемо порівняти те, що було з тим, що є. І тут нас чекає засідка. Порівнюючи одну сторінку – все просто, або змінилася, або ні. А якщо у нас сотні сторінок і змінився пункт меню, телефон в підвалі, або картинка капчі в формі реєстрації? Рішення і тут просте – порівнюємо тільки ті елементи DOM, які дійсно потрібно порівнювати. Так, як різні сторінки можуть мати різні шаблони – передбачено розбиття сторінок на групи, про який написано вище і свої фільтри для кожної групи. Наприклад на головній потрібно відстежувати весь контент, в блозі тільки список постів і текст кожного поста, включаючи title, description, keywords, H1, H2. Включати чи виключати частину сторінки можна також за допомогою регулярних виразів. Таке рішення дозволяє ігнорувати незначні елементи сторінок, зміна яких – норма (годинник, капча …) а також реагувати один раз на повторювані зміни (меню, інші загальні елементи).

Посилання робочі, індексовані і всякі

Майже на кожному сайті є безліч посилань як зовнішніх так і внутрішніх. Не завжди належним чином сервер відповідь 200. Іноді 301, частіше 404, та багато різних їх буває. Якщо відповідь на внутрішню посилання 301, то швидше за все сторінку, на яку йде редирект потрібно теж проіндексувати. А також повідомляємо, що на сайті є перенаправлення:

перенаправлення

Також биті посилання показуємо в окремій групі:

Посилання в окремій групі

Аналогічно аналізуємо і зовнішні посилання, але для них витягуємо тільки код відповіді.
Іноді SEO шники просять закрити всі зовнішні посилання тегами rel = “nofollow” і, відразу ж виріс інструмент, який дозволяє знайти закриті і незакриті посилання.

експорт

Сканування і ревізії

Для зручності користувача робимо список сканувань сайту:

сканування сайту

А при виявленні змін, список змінених сторінок і коротко про зміни.

Короткий опис про зміни

Цей же список висилаємо на пошту в складі звіту, розклад якого можна налаштувати.

Розсилка

Скріншоти сайту

При зміні не тільки тексту сайтів, але і картинок, або CSS може зміняться зовнішній вигляд. Для цього є можливість створювати і зберігати скріншот кожної зміненої сторінки. За замовчуванням ця функція відключена, так як пошукові системи розцінюють візити скріншотер, як користувача, який прийшов і одразу втік. Не всім таке потрібно, хоча функція цікава.

Опис основного функціоналу закінчили, але варто згадати про сервісне, який теж корисний.
Найважливіші таблиці можна експортувати для подальшої обробки в звичних інструментах або пересилання тим же SEOшнікам.

Є білінг, можливість редагувати тарифи, підключені платіжні системи paypal і liqpay.

тарифи

Про те, як ми переросли ресурси одного сервера і організації розподіленого сканування постараюся описати в наступній статті.

Поділитися:

У вас є завдання для нас?
Надішліть заявку, обговоримо і вирішимо!