LINUX.ORG.RU

сравнение скриншотов сайтов в консоли

 


0

1

Делаю сервис который наглядно показывает изменения на сайте с момента последней проверки. Делаю скриншоты сайта из консоли, а затем сравниваю изменения так:

compare screenshot.png screenshot-old.png result.png

Однако получаю много ложных срабатываний даже если скриншоты хорошего качества. Например, вот так он подсвечивает не изменившиеся сайты: http://dl3.joxi.net/drive/2021/11/30/0005/1971/346035/35/d2c2bd7903.png

Может быть есть лучшие способы наглядно сравнивать изменения на сайте?(кроме готовых сервисов)


Так разберись в чём причина ложных срабатываний.

Делаю сервис

Хорошо.

кроме готовых сервисов

Хорошо.

Но ты спрашиваешь «дайте мне готовый способ». Это уже плохо. Посмотри, почему оно подсвечено. Наверно, там отличаются пиксели. Посмотри, почему они отличаются. Может ты неправильно делаешь скрины («из консоли» - походу тоже чем-то готовым, про которое ты даже не пытался разобраться как оно работает). Проверь, какая именно логика приводит к отличиям. Софт не генерит рандомные ответы, он строго детерминирован (ну если нет багов) и всю его логику можно проследить. Сделай это. Если избежать отличия пикселей никак - учти их в сравнивалке. Которую ты напишешь сам. libpng api простое, попиксельное сравнение тоже примитивный алгоритм.

firkax ()
Ответ на: комментарий от firkax

Да, конечно там различаются пиксели. Поэтому он их и подсвечивает. Вопрос в том, как уменьшить чувствительность чтобы он не учитывал незначительные горстки пикселей? В compare пробовал параметры -metrics -fuzz 10%, не сильно помогает. Возможно есть другие сравнивалки картинок где чувствительность можно выставить вручную или еще какой-то лучший способ (ну кроме как писать свою сравнивалку)

Я делаю скрины через chromium с параметром headless и puppeteer который запускаю через js. Здесь же, я пробовал играть с параметрами, чтобы увеличить качество скриншотов, помогает немного, но все равно много ложных срабатываний:/

s0le ()
Ответ на: комментарий от s0le

(ну кроме как писать свою сравнивалку)

Это не «кроме», это первое с чего стоило начать. Сделай хоть что-то полезное а не только веб-фронтэнд для готового чужого софта.

firkax ()

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

Может быть есть лучшие способы наглядно сравнивать изменения на сайте?(кроме готовых сервисов)

Морока, лучше довести до ума текущее и показывать красным что пропало, а зелёным что появилось. Типа как diff.

Или/и как дополнение сделать вот такую штуку https://imgsli.com/s/upload загрузил две картинки до и текущую двигаешь ползунок видишь разницу.

LINUX-ORG-RU ★★★★ ()
Ответ на: комментарий от s0le

Да, конечно там различаются пиксели.

С чего бы вдруг им отличатся?

Вопрос в том, как уменьшить чувствительность

Может быть в чб перегнать и сравнивать яркости, а не цвета.

LINUX-ORG-RU ★★★★ ()
Ответ на: комментарий от izzholtik

Пробовал еще curlом скачивать страницу через промежутки времени и сравнивать их diffом. Работает если нужно просто узнать были ли изменения (неважно какие). Ноо, если нужно узнать какие, то иногда такой код бывает на странице, что сложно по нему найти и подсветить нужный кусок страницы.

s0le ()

наркомания же… страницы - это просто разметка, текст в хтмл. там просто diff’ом… да и то сомнительно: на главной текст постоянно меняется (последние записи блога, новости и тп)

tz4678 ★★ ()

У compare есть параметры -metric и -fuzz, ими задается алгоритм сравнения и максимальная погрешность при которой картинки считаются одинаковыми. Еще есть -subimage-search, может помочь если есть образцовый рендеринг какого-то отдельного блока страницы.

annulen ★★★★★ ()