Blog. Just Blog

Создание скриншотов сайтов с помощью Headless Chrome

Версия для печати Добавить в Избранное Отправить на E-Mail | Категория: Web-мастеру и не только | Автор: ManHunter
Создание скриншотов сайтов с помощью Headless Chrome
Создание скриншотов сайтов с помощью Headless Chrome

Ранее я рассказывал о сервисах для создания скриншотов сайтов, но время не стоит на месте. Если у вас в распоряжении есть свой сервер, то вы легко сможете организовать собственный сервис для создания скриншотов сайтов. Начиная с версии 59, браузер Chrome может работать в так называемом "безголовом" режиме, то есть он реально не отрисовывает содержимое web-страницы, а все формирует в памяти. При этом он работает из командной строки и может быть установлен на сервер.

Начнем с установки. У нас рабочий сервер крутится на CentOS 7, поэтому команды установки будут следующими:

wget https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm

yum install -y ./google-chrome-stable_current_*.rpm

Для других версий Linux используйте соответствующие команды. Если все сделано правильно, то Chrome будет доступен для запуска из командной строки. На самом деле Chrome поддерживает великое множество параметров, но нас интересуют только те, с помощью которых мы будем делать скриншот сайтов. Например, делаем скриншот главной страницы Яндекса:

/opt/google/chrome/chrome --no-sandbox --headless --disable-gpu --screenshot https://www.yandex.ru

После выполнения команды будет создан скриншот главной страницы Яндекса и сохранен в текущей папке в файл screenshot.png. Усложняем задачу. Если надо сделать скриншот не всей страницы, то можно задать размеры рабочего окна:

/opt/google/chrome/chrome --no-sandbox --headless --disable-gpu --window-size=1200,2000 --screenshot https://www.yandex.ru

UPD: после обновлений Chrome до версии 110, а может быть и раньше, перестал работать параметр --window-size, все скриншоты делаются размером 600х600 пикселов без вариантов. Баг признан разработчиками, но до сих пор (14.04.2023) не исправлен.

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

/opt/google/chrome/chrome --no-sandbox --headless --disable-gpu --proxy-server=socks5://ip:port@login:password --proxy-bypass-list=* --window-size=1200,2000 --screenshot https://www.yandex.ru

Чтобы не было конфликтов с именами файлов, особенно при многопоточном создании скриншотов, а также чтобы на диске был порядок, можно и нужно указывать, куда и под каким именем сохранять скриншот. Делается это в настройке параметра --screenshot:

/opt/google/chrome/chrome --no-sandbox --headless --disable-gpu --proxy-server=socks5://ip:port@login:password --proxy-bypass-list=* --window-size=1200,2000 --screenshot=/images/my_screenshot_100500.png https://www.yandex.ru

В этом случае скриншот будет сохранен в папку /images под именем my_screenshot_100500.png. Под Linux может понадобиться коррекция прав доступа к свежесозданному скриншоту, по крайней мере у нас приходится дополнительно запускать команду chmod 0644, чтобы PHP-скрипты могли с ним дальше работать.

Пользователи Windows-версии Chrome, в том числе и его форков, также могут запускать свой браузер в "безголовом" режиме, все перечисленные параметры работают и для него.

Поделиться ссылкой ВКонтакте
Просмотров: 2413 | Комментариев: 7

Внимание! Статья опубликована больше года назад, информация могла устареть!

Комментарии

Отзывы посетителей сайта о статье
Viking (17.04.2020 в 06:34):
А по мне годное решение для создания скринов по урлу из командной строки. Спс за статью)
если из json из камента выше брать, то это отдельно парсер этого джсона надо и еще проверять, что гугль на 5-7-9 ответе не включит каптчу
ManHunter (01.04.2020 в 10:13):
ТАК не делается. Так делается лишь превью страницы без возможности хотя бы минимально ее настроить. Поэтому низачот.
Neo (01.04.2020 в 06:30):
ManHunter (23.01.2020 в 12:01):
Ну вот когда лиса или канонiчныйЪ lynx будут также успешно фигачить скриншоты сайтов из командной строки, то я с радостью перейду на них. А пока или поднимать виндовый сервер с IECore и ActiveX или использовать безголовый Chrome.
A1eksandr1 (05.12.2019 в 22:13):
Видимо сарказм был в хромоножках.
Типа юзать нужно лису или ещё чего
ManHunter (04.12.2019 в 07:15):
Не понял сарказма или шутку юмора или чо это было.
дегенерат (04.12.2019 в 03:03):
ЦитатаChrome

А я думал такой олдскульный кулхакир браузером пользуется

Добавить комментарий

Заполните форму для добавления комментария
Имя*:
Текст комментария (не более 2000 символов)*:

*Все поля обязательны для заполнения.
Комментарии, содержащие рекламу, ненормативную лексику, оскорбления и т.п., а также флуд и сообщения не по теме, будут удаляться. Нарушителям может быть заблокирован доступ к сайту.
Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2024
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.08 сек. / MySQL: 2 (0.0057 сек.) / Память: 4.5 Mb
Наверх