Screenshot сайта с консоли Linux

Автор | 22.04.2014

Появилась задачка отслеживать как меняется дизайн сайта на протяжении недели с шагом в 3часа.
Можно конечно запускать wget по расписанию, но не сильно удобно смотреть потом 100500 файлов.
После поиска по просторам инета был найден простенький способ.
Для этого нам понадобится какой-то сервер (рабочая машина) на Linux.

Для захвата изображения будем использовать програмку CutyCapt

CutyCapt is a small cross-platform command-line utility to capture WebKit’s rendering of a web page into a variety of vector and bitmap formats, including SVG, PDF, PS, PNG, JPEG, TIFF, GIF, and BMP

В итоге мы получим картинку с сайтом отрендереном движком WebKit. Однако требуется Xserver для рендера.

Для этого можно установить легковесный сервер Xvfb который имитирует работу Xserver, но без вывода результата на экран, а оставляя результат в памяти.
Итого….
Есть у нас Debian 7
Ставим cutycapt:

apt-get install cutycapt

Ставим xvfb:

apt-get install xvfb

Пускаем тестовый запрос:

sudo /usr/bin/xvfb-run --server-args="-screen 0, 1920x1080x24"  /usr/bin/cutycapt --min-width=1280 --max-wait=5000 --url=http://unian.ua/ --out=screen/unian.png

На выходе получаем такую картинку

Скриншот главной Unian

Скриншот главной Unian


Полный размер

Осталось только прописать это действие в крон )
Небольшое пояснение к опциям строки:

-screen 0, 1920x1080x24" - размер имитируемого экрана
--min-width=1280 - минимальная ширина скриншота
--max-wait=5000 - ждем результата 5сек (зависит от интернета и мощи сервера, по умолчанию 90сек)

Про все опции можно почитать тут: http://cutycapt.sourceforge.net/

Залишити відповідь